@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,138 @@
|
|
|
1
|
+
const require_settingsApi = require("../lib/settingsApi.cjs");
|
|
2
|
+
const require_settingsDraft = require("../lib/settingsDraft.cjs");
|
|
3
|
+
const require_sessionsStore = require("./sessionsStore.cjs");
|
|
4
|
+
const require_sessionStore = require("./sessionStore.cjs");
|
|
5
|
+
let _tanstack_store = require("@tanstack/store");
|
|
6
|
+
//#region src/web/stores/settingsDraftStore.ts
|
|
7
|
+
const EMPTY_SETTINGS_DRAFT = {
|
|
8
|
+
drafts: {},
|
|
9
|
+
busy: false,
|
|
10
|
+
error: "",
|
|
11
|
+
note: ""
|
|
12
|
+
};
|
|
13
|
+
const settingsDraftStore = new _tanstack_store.Store({});
|
|
14
|
+
const loading = /* @__PURE__ */ new Map();
|
|
15
|
+
function settingsDraftKey(target) {
|
|
16
|
+
return JSON.stringify([
|
|
17
|
+
target.scope,
|
|
18
|
+
target.repoRoot,
|
|
19
|
+
target.workspaceId ?? "",
|
|
20
|
+
target.section.id
|
|
21
|
+
]);
|
|
22
|
+
}
|
|
23
|
+
function patch(key, update) {
|
|
24
|
+
settingsDraftStore.setState((state) => ({
|
|
25
|
+
...state,
|
|
26
|
+
[key]: {
|
|
27
|
+
...state[key] ?? EMPTY_SETTINGS_DRAFT,
|
|
28
|
+
...update
|
|
29
|
+
}
|
|
30
|
+
}));
|
|
31
|
+
}
|
|
32
|
+
function loadSettingsDraft(target) {
|
|
33
|
+
const key = settingsDraftKey(target);
|
|
34
|
+
const pending = loading.get(key);
|
|
35
|
+
if (pending) return pending;
|
|
36
|
+
if (settingsDraftStore.state[key]?.busy) return Promise.resolve();
|
|
37
|
+
const request = Promise.resolve().then(async () => {
|
|
38
|
+
try {
|
|
39
|
+
const result = await require_settingsApi.readSettingsConfig(target.repoRoot, target.section.fields.map(require_settingsDraft.settingsKeyOf), target.workspaceId);
|
|
40
|
+
if (loading.get(key) !== request || settingsDraftStore.state[key]?.busy) return;
|
|
41
|
+
patch(key, result.ok ? {
|
|
42
|
+
config: result.config,
|
|
43
|
+
error: ""
|
|
44
|
+
} : { error: result.error });
|
|
45
|
+
} catch (error) {
|
|
46
|
+
if (loading.get(key) === request) patch(key, { error: error instanceof Error ? error.message : String(error) });
|
|
47
|
+
} finally {
|
|
48
|
+
if (loading.get(key) === request) loading.delete(key);
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
loading.set(key, request);
|
|
52
|
+
return request;
|
|
53
|
+
}
|
|
54
|
+
function setSettingsDraft(target, field, value) {
|
|
55
|
+
const key = settingsDraftKey(target);
|
|
56
|
+
const drafts = { ...settingsDraftStore.state[key]?.drafts };
|
|
57
|
+
if (value === void 0) delete drafts[require_settingsDraft.settingsKeyOf(field)];
|
|
58
|
+
else drafts[require_settingsDraft.settingsKeyOf(field)] = value;
|
|
59
|
+
patch(key, {
|
|
60
|
+
drafts,
|
|
61
|
+
note: ""
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
function discardSettingsDraft(target) {
|
|
65
|
+
const key = settingsDraftKey(target);
|
|
66
|
+
if (!settingsDraftStore.state[key]?.busy) patch(key, {
|
|
67
|
+
drafts: {},
|
|
68
|
+
error: "",
|
|
69
|
+
note: ""
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
/** Admission and acknowledgement outlive the view that started a save. Never clear a newer edit. */
|
|
73
|
+
async function saveSettingsDraft(target) {
|
|
74
|
+
const key = settingsDraftKey(target);
|
|
75
|
+
const state = settingsDraftStore.state[key];
|
|
76
|
+
const dirty = target.section.fields.filter((field) => require_settingsDraft.settingsKeyOf(field) in (state?.drafts ?? {})).length;
|
|
77
|
+
if (!state?.config || state.busy || !require_settingsDraft.canSaveSettings({
|
|
78
|
+
dirty,
|
|
79
|
+
scope: target.scope,
|
|
80
|
+
repoRoot: target.repoRoot
|
|
81
|
+
})) return false;
|
|
82
|
+
const { config, drafts } = state;
|
|
83
|
+
patch(key, {
|
|
84
|
+
busy: true,
|
|
85
|
+
error: "",
|
|
86
|
+
note: ""
|
|
87
|
+
});
|
|
88
|
+
loading.delete(key);
|
|
89
|
+
try {
|
|
90
|
+
const planned = require_settingsDraft.plannedSettingsWrites({
|
|
91
|
+
fields: target.section.fields,
|
|
92
|
+
drafts,
|
|
93
|
+
scope: target.scope,
|
|
94
|
+
repoRoot: target.repoRoot,
|
|
95
|
+
startingHash: config.hashes[target.scope]
|
|
96
|
+
});
|
|
97
|
+
const result = await require_settingsApi.writeSettingsValue({
|
|
98
|
+
repoRoot: target.repoRoot,
|
|
99
|
+
scope: target.scope,
|
|
100
|
+
expectedHash: config.hashes[target.scope],
|
|
101
|
+
edits: planned.map(({ keyPath, value }) => ({
|
|
102
|
+
keyPath,
|
|
103
|
+
value
|
|
104
|
+
}))
|
|
105
|
+
}, target.workspaceId);
|
|
106
|
+
if (!result.ok) {
|
|
107
|
+
patch(key, { error: result.error });
|
|
108
|
+
return false;
|
|
109
|
+
}
|
|
110
|
+
const remaining = { ...settingsDraftStore.state[key]?.drafts };
|
|
111
|
+
for (const field of target.section.fields) {
|
|
112
|
+
const fieldKey = require_settingsDraft.settingsKeyOf(field);
|
|
113
|
+
if (fieldKey in drafts && remaining[fieldKey] === drafts[fieldKey]) delete remaining[fieldKey];
|
|
114
|
+
}
|
|
115
|
+
patch(key, {
|
|
116
|
+
config: result.config,
|
|
117
|
+
drafts: remaining,
|
|
118
|
+
note: `Saved ${String(planned.length)} ${planned.length === 1 ? "setting" : "settings"}.`
|
|
119
|
+
});
|
|
120
|
+
for (const sessionId of Object.keys(require_sessionsStore.sessionsStore.state.byId)) require_sessionStore.refreshSessionFacts(sessionId);
|
|
121
|
+
return true;
|
|
122
|
+
} catch (error) {
|
|
123
|
+
patch(key, { error: error instanceof Error ? error.message : String(error) });
|
|
124
|
+
return false;
|
|
125
|
+
} finally {
|
|
126
|
+
patch(key, { busy: false });
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
//#endregion
|
|
130
|
+
exports.EMPTY_SETTINGS_DRAFT = EMPTY_SETTINGS_DRAFT;
|
|
131
|
+
exports.discardSettingsDraft = discardSettingsDraft;
|
|
132
|
+
exports.loadSettingsDraft = loadSettingsDraft;
|
|
133
|
+
exports.saveSettingsDraft = saveSettingsDraft;
|
|
134
|
+
exports.setSettingsDraft = setSettingsDraft;
|
|
135
|
+
exports.settingsDraftKey = settingsDraftKey;
|
|
136
|
+
exports.settingsDraftStore = settingsDraftStore;
|
|
137
|
+
|
|
138
|
+
//# sourceMappingURL=settingsDraftStore.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settingsDraftStore.cjs","names":["Store","readSettingsConfig","settingsKeyOf","canSaveSettings","plannedSettingsWrites","writeSettingsValue","sessionsStore"],"sources":["../../../src/web/stores/settingsDraftStore.ts"],"sourcesContent":["import type { SettingsFieldContribution, SettingsSectionContribution } from '@agimon-ai/po-core/web';\nimport { Store } from '@tanstack/store';\n\nimport type { SettingsConfigView, SettingsScope } from '../../types/settings';\nimport { readSettingsConfig, writeSettingsValue } from '../lib/settingsApi';\nimport { canSaveSettings, plannedSettingsWrites, settingsKeyOf } from '../lib/settingsDraft';\nimport { sessionsStore } from './sessionsStore';\nimport { refreshSessionFacts } from './sessionStore';\n\nexport interface SettingsDraftTarget {\n section: SettingsSectionContribution;\n scope: SettingsScope;\n repoRoot: string;\n workspaceId?: string;\n}\nexport interface SettingsDraftState {\n config?: SettingsConfigView;\n drafts: Record<string, string | null>;\n busy: boolean;\n error: string;\n note: string;\n}\nexport const EMPTY_SETTINGS_DRAFT: SettingsDraftState = { drafts: {}, busy: false, error: '', note: '' };\nexport const settingsDraftStore = new Store<Record<string, SettingsDraftState>>({});\nconst loading = new Map<string, Promise<void>>();\n\nexport function settingsDraftKey(target: SettingsDraftTarget): string {\n return JSON.stringify([target.scope, target.repoRoot, target.workspaceId ?? '', target.section.id]);\n}\n\nfunction patch(key: string, update: Partial<SettingsDraftState>): void {\n settingsDraftStore.setState((state) => ({ ...state, [key]: { ...(state[key] ?? EMPTY_SETTINGS_DRAFT), ...update } }));\n}\n\nexport function loadSettingsDraft(target: SettingsDraftTarget): Promise<void> {\n const key = settingsDraftKey(target);\n const pending = loading.get(key);\n if (pending) return pending;\n if (settingsDraftStore.state[key]?.busy) return Promise.resolve();\n const request: Promise<void> = Promise.resolve().then(async () => {\n try {\n const result = await readSettingsConfig(\n target.repoRoot,\n target.section.fields.map(settingsKeyOf),\n target.workspaceId,\n );\n if (loading.get(key) !== request || settingsDraftStore.state[key]?.busy) return;\n patch(key, result.ok ? { config: result.config, error: '' } : { error: result.error });\n } catch (error) {\n if (loading.get(key) === request) patch(key, { error: error instanceof Error ? error.message : String(error) });\n } finally {\n if (loading.get(key) === request) loading.delete(key);\n }\n });\n loading.set(key, request);\n return request;\n}\n\nexport function setSettingsDraft(\n target: SettingsDraftTarget,\n field: SettingsFieldContribution,\n value: string | null | undefined,\n): void {\n const key = settingsDraftKey(target);\n const drafts = { ...settingsDraftStore.state[key]?.drafts };\n if (value === undefined) delete drafts[settingsKeyOf(field)];\n else drafts[settingsKeyOf(field)] = value;\n patch(key, { drafts, note: '' });\n}\n\nexport function discardSettingsDraft(target: SettingsDraftTarget): void {\n const key = settingsDraftKey(target);\n if (!settingsDraftStore.state[key]?.busy) patch(key, { drafts: {}, error: '', note: '' });\n}\n\n/** Admission and acknowledgement outlive the view that started a save. Never clear a newer edit. */\nexport async function saveSettingsDraft(target: SettingsDraftTarget): Promise<boolean> {\n const key = settingsDraftKey(target);\n const state = settingsDraftStore.state[key];\n const dirty = target.section.fields.filter((field) => settingsKeyOf(field) in (state?.drafts ?? {})).length;\n if (!state?.config || state.busy || !canSaveSettings({ dirty, scope: target.scope, repoRoot: target.repoRoot }))\n return false;\n const { config, drafts } = state;\n patch(key, { busy: true, error: '', note: '' });\n loading.delete(key);\n try {\n const planned = plannedSettingsWrites({\n fields: target.section.fields,\n drafts,\n scope: target.scope,\n repoRoot: target.repoRoot,\n startingHash: config.hashes[target.scope],\n });\n const result = await writeSettingsValue(\n {\n repoRoot: target.repoRoot,\n scope: target.scope,\n expectedHash: config.hashes[target.scope],\n edits: planned.map(({ keyPath, value }) => ({ keyPath, value })),\n },\n target.workspaceId,\n );\n if (!result.ok) {\n patch(key, { error: result.error });\n return false;\n }\n const remaining = { ...settingsDraftStore.state[key]?.drafts };\n for (const field of target.section.fields) {\n const fieldKey = settingsKeyOf(field);\n if (fieldKey in drafts && remaining[fieldKey] === drafts[fieldKey]) delete remaining[fieldKey];\n }\n patch(key, {\n config: result.config,\n drafts: remaining,\n note: `Saved ${String(planned.length)} ${planned.length === 1 ? 'setting' : 'settings'}.`,\n });\n for (const sessionId of Object.keys(sessionsStore.state.byId)) refreshSessionFacts(sessionId);\n return true;\n } catch (error) {\n patch(key, { error: error instanceof Error ? error.message : String(error) });\n return false;\n } finally {\n patch(key, { busy: false });\n }\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { SettingsConfigView, SettingsScope } from "../../types/settings.mjs";
|
|
2
|
+
import { SettingsFieldContribution, SettingsSectionContribution } from "@agimon-ai/po-core/web";
|
|
3
|
+
import { Store } from "@tanstack/store";
|
|
4
|
+
//#region src/web/stores/settingsDraftStore.d.ts
|
|
5
|
+
export interface SettingsDraftTarget {
|
|
6
|
+
section: SettingsSectionContribution;
|
|
7
|
+
scope: SettingsScope;
|
|
8
|
+
repoRoot: string;
|
|
9
|
+
workspaceId?: string;
|
|
10
|
+
}
|
|
11
|
+
export interface SettingsDraftState {
|
|
12
|
+
config?: SettingsConfigView;
|
|
13
|
+
drafts: Record<string, string | null>;
|
|
14
|
+
busy: boolean;
|
|
15
|
+
error: string;
|
|
16
|
+
note: string;
|
|
17
|
+
}
|
|
18
|
+
export declare const EMPTY_SETTINGS_DRAFT: SettingsDraftState;
|
|
19
|
+
export declare const settingsDraftStore: Store<Record<string, SettingsDraftState>, never>;
|
|
20
|
+
export declare function settingsDraftKey(target: SettingsDraftTarget): string;
|
|
21
|
+
export declare function loadSettingsDraft(target: SettingsDraftTarget): Promise<void>;
|
|
22
|
+
export declare function setSettingsDraft(target: SettingsDraftTarget, field: SettingsFieldContribution, value: string | null | undefined): void;
|
|
23
|
+
export declare function discardSettingsDraft(target: SettingsDraftTarget): void;
|
|
24
|
+
/** Admission and acknowledgement outlive the view that started a save. Never clear a newer edit. */
|
|
25
|
+
export declare function saveSettingsDraft(target: SettingsDraftTarget): Promise<boolean>;
|
|
26
|
+
//#endregion
|
|
27
|
+
//# sourceMappingURL=settingsDraftStore.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settingsDraftStore.d.mts","names":[],"sources":["../../../src/web/stores/settingsDraftStore.ts"],"mappings":";;;;iBASiB;EACf,SAAS;EACT,OAAO;EACP;EACA;;iBAEe;EACf,SAAS;EACT,QAAQ;EACR;EACA;EACA;;qBAEW,sBAAsB;qBACtB,oBAAkB,MAAA,eAAA;wBAGf,iBAAiB,QAAQ;wBAQzB,kBAAkB,QAAQ,sBAAsB;wBAwBhD,iBACd,QAAQ,qBACR,OAAO,2BACP;wBASc,qBAAqB,QAAQ;;wBAMvB,kBAAkB,QAAQ,sBAAsB"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import { readSettingsConfig, writeSettingsValue } from "../lib/settingsApi.mjs";
|
|
2
|
+
import { canSaveSettings, plannedSettingsWrites, settingsKeyOf } from "../lib/settingsDraft.mjs";
|
|
3
|
+
import { sessionsStore } from "./sessionsStore.mjs";
|
|
4
|
+
import { refreshSessionFacts } from "./sessionStore.mjs";
|
|
5
|
+
import { Store } from "@tanstack/store";
|
|
6
|
+
//#region src/web/stores/settingsDraftStore.ts
|
|
7
|
+
const EMPTY_SETTINGS_DRAFT = {
|
|
8
|
+
drafts: {},
|
|
9
|
+
busy: false,
|
|
10
|
+
error: "",
|
|
11
|
+
note: ""
|
|
12
|
+
};
|
|
13
|
+
const settingsDraftStore = new Store({});
|
|
14
|
+
const loading = /* @__PURE__ */ new Map();
|
|
15
|
+
function settingsDraftKey(target) {
|
|
16
|
+
return JSON.stringify([
|
|
17
|
+
target.scope,
|
|
18
|
+
target.repoRoot,
|
|
19
|
+
target.workspaceId ?? "",
|
|
20
|
+
target.section.id
|
|
21
|
+
]);
|
|
22
|
+
}
|
|
23
|
+
function patch(key, update) {
|
|
24
|
+
settingsDraftStore.setState((state) => ({
|
|
25
|
+
...state,
|
|
26
|
+
[key]: {
|
|
27
|
+
...state[key] ?? EMPTY_SETTINGS_DRAFT,
|
|
28
|
+
...update
|
|
29
|
+
}
|
|
30
|
+
}));
|
|
31
|
+
}
|
|
32
|
+
function loadSettingsDraft(target) {
|
|
33
|
+
const key = settingsDraftKey(target);
|
|
34
|
+
const pending = loading.get(key);
|
|
35
|
+
if (pending) return pending;
|
|
36
|
+
if (settingsDraftStore.state[key]?.busy) return Promise.resolve();
|
|
37
|
+
const request = Promise.resolve().then(async () => {
|
|
38
|
+
try {
|
|
39
|
+
const result = await readSettingsConfig(target.repoRoot, target.section.fields.map(settingsKeyOf), target.workspaceId);
|
|
40
|
+
if (loading.get(key) !== request || settingsDraftStore.state[key]?.busy) return;
|
|
41
|
+
patch(key, result.ok ? {
|
|
42
|
+
config: result.config,
|
|
43
|
+
error: ""
|
|
44
|
+
} : { error: result.error });
|
|
45
|
+
} catch (error) {
|
|
46
|
+
if (loading.get(key) === request) patch(key, { error: error instanceof Error ? error.message : String(error) });
|
|
47
|
+
} finally {
|
|
48
|
+
if (loading.get(key) === request) loading.delete(key);
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
loading.set(key, request);
|
|
52
|
+
return request;
|
|
53
|
+
}
|
|
54
|
+
function setSettingsDraft(target, field, value) {
|
|
55
|
+
const key = settingsDraftKey(target);
|
|
56
|
+
const drafts = { ...settingsDraftStore.state[key]?.drafts };
|
|
57
|
+
if (value === void 0) delete drafts[settingsKeyOf(field)];
|
|
58
|
+
else drafts[settingsKeyOf(field)] = value;
|
|
59
|
+
patch(key, {
|
|
60
|
+
drafts,
|
|
61
|
+
note: ""
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
function discardSettingsDraft(target) {
|
|
65
|
+
const key = settingsDraftKey(target);
|
|
66
|
+
if (!settingsDraftStore.state[key]?.busy) patch(key, {
|
|
67
|
+
drafts: {},
|
|
68
|
+
error: "",
|
|
69
|
+
note: ""
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
/** Admission and acknowledgement outlive the view that started a save. Never clear a newer edit. */
|
|
73
|
+
async function saveSettingsDraft(target) {
|
|
74
|
+
const key = settingsDraftKey(target);
|
|
75
|
+
const state = settingsDraftStore.state[key];
|
|
76
|
+
const dirty = target.section.fields.filter((field) => settingsKeyOf(field) in (state?.drafts ?? {})).length;
|
|
77
|
+
if (!state?.config || state.busy || !canSaveSettings({
|
|
78
|
+
dirty,
|
|
79
|
+
scope: target.scope,
|
|
80
|
+
repoRoot: target.repoRoot
|
|
81
|
+
})) return false;
|
|
82
|
+
const { config, drafts } = state;
|
|
83
|
+
patch(key, {
|
|
84
|
+
busy: true,
|
|
85
|
+
error: "",
|
|
86
|
+
note: ""
|
|
87
|
+
});
|
|
88
|
+
loading.delete(key);
|
|
89
|
+
try {
|
|
90
|
+
const planned = plannedSettingsWrites({
|
|
91
|
+
fields: target.section.fields,
|
|
92
|
+
drafts,
|
|
93
|
+
scope: target.scope,
|
|
94
|
+
repoRoot: target.repoRoot,
|
|
95
|
+
startingHash: config.hashes[target.scope]
|
|
96
|
+
});
|
|
97
|
+
const result = await writeSettingsValue({
|
|
98
|
+
repoRoot: target.repoRoot,
|
|
99
|
+
scope: target.scope,
|
|
100
|
+
expectedHash: config.hashes[target.scope],
|
|
101
|
+
edits: planned.map(({ keyPath, value }) => ({
|
|
102
|
+
keyPath,
|
|
103
|
+
value
|
|
104
|
+
}))
|
|
105
|
+
}, target.workspaceId);
|
|
106
|
+
if (!result.ok) {
|
|
107
|
+
patch(key, { error: result.error });
|
|
108
|
+
return false;
|
|
109
|
+
}
|
|
110
|
+
const remaining = { ...settingsDraftStore.state[key]?.drafts };
|
|
111
|
+
for (const field of target.section.fields) {
|
|
112
|
+
const fieldKey = settingsKeyOf(field);
|
|
113
|
+
if (fieldKey in drafts && remaining[fieldKey] === drafts[fieldKey]) delete remaining[fieldKey];
|
|
114
|
+
}
|
|
115
|
+
patch(key, {
|
|
116
|
+
config: result.config,
|
|
117
|
+
drafts: remaining,
|
|
118
|
+
note: `Saved ${String(planned.length)} ${planned.length === 1 ? "setting" : "settings"}.`
|
|
119
|
+
});
|
|
120
|
+
for (const sessionId of Object.keys(sessionsStore.state.byId)) refreshSessionFacts(sessionId);
|
|
121
|
+
return true;
|
|
122
|
+
} catch (error) {
|
|
123
|
+
patch(key, { error: error instanceof Error ? error.message : String(error) });
|
|
124
|
+
return false;
|
|
125
|
+
} finally {
|
|
126
|
+
patch(key, { busy: false });
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
//#endregion
|
|
130
|
+
export { EMPTY_SETTINGS_DRAFT, discardSettingsDraft, loadSettingsDraft, saveSettingsDraft, setSettingsDraft, settingsDraftKey, settingsDraftStore };
|
|
131
|
+
|
|
132
|
+
//# sourceMappingURL=settingsDraftStore.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settingsDraftStore.mjs","names":[],"sources":["../../../src/web/stores/settingsDraftStore.ts"],"sourcesContent":["import type { SettingsFieldContribution, SettingsSectionContribution } from '@agimon-ai/po-core/web';\nimport { Store } from '@tanstack/store';\n\nimport type { SettingsConfigView, SettingsScope } from '../../types/settings';\nimport { readSettingsConfig, writeSettingsValue } from '../lib/settingsApi';\nimport { canSaveSettings, plannedSettingsWrites, settingsKeyOf } from '../lib/settingsDraft';\nimport { sessionsStore } from './sessionsStore';\nimport { refreshSessionFacts } from './sessionStore';\n\nexport interface SettingsDraftTarget {\n section: SettingsSectionContribution;\n scope: SettingsScope;\n repoRoot: string;\n workspaceId?: string;\n}\nexport interface SettingsDraftState {\n config?: SettingsConfigView;\n drafts: Record<string, string | null>;\n busy: boolean;\n error: string;\n note: string;\n}\nexport const EMPTY_SETTINGS_DRAFT: SettingsDraftState = { drafts: {}, busy: false, error: '', note: '' };\nexport const settingsDraftStore = new Store<Record<string, SettingsDraftState>>({});\nconst loading = new Map<string, Promise<void>>();\n\nexport function settingsDraftKey(target: SettingsDraftTarget): string {\n return JSON.stringify([target.scope, target.repoRoot, target.workspaceId ?? '', target.section.id]);\n}\n\nfunction patch(key: string, update: Partial<SettingsDraftState>): void {\n settingsDraftStore.setState((state) => ({ ...state, [key]: { ...(state[key] ?? EMPTY_SETTINGS_DRAFT), ...update } }));\n}\n\nexport function loadSettingsDraft(target: SettingsDraftTarget): Promise<void> {\n const key = settingsDraftKey(target);\n const pending = loading.get(key);\n if (pending) return pending;\n if (settingsDraftStore.state[key]?.busy) return Promise.resolve();\n const request: Promise<void> = Promise.resolve().then(async () => {\n try {\n const result = await readSettingsConfig(\n target.repoRoot,\n target.section.fields.map(settingsKeyOf),\n target.workspaceId,\n );\n if (loading.get(key) !== request || settingsDraftStore.state[key]?.busy) return;\n patch(key, result.ok ? { config: result.config, error: '' } : { error: result.error });\n } catch (error) {\n if (loading.get(key) === request) patch(key, { error: error instanceof Error ? error.message : String(error) });\n } finally {\n if (loading.get(key) === request) loading.delete(key);\n }\n });\n loading.set(key, request);\n return request;\n}\n\nexport function setSettingsDraft(\n target: SettingsDraftTarget,\n field: SettingsFieldContribution,\n value: string | null | undefined,\n): void {\n const key = settingsDraftKey(target);\n const drafts = { ...settingsDraftStore.state[key]?.drafts };\n if (value === undefined) delete drafts[settingsKeyOf(field)];\n else drafts[settingsKeyOf(field)] = value;\n patch(key, { drafts, note: '' });\n}\n\nexport function discardSettingsDraft(target: SettingsDraftTarget): void {\n const key = settingsDraftKey(target);\n if (!settingsDraftStore.state[key]?.busy) patch(key, { drafts: {}, error: '', note: '' });\n}\n\n/** Admission and acknowledgement outlive the view that started a save. Never clear a newer edit. */\nexport async function saveSettingsDraft(target: SettingsDraftTarget): Promise<boolean> {\n const key = settingsDraftKey(target);\n const state = settingsDraftStore.state[key];\n const dirty = target.section.fields.filter((field) => settingsKeyOf(field) in (state?.drafts ?? {})).length;\n if (!state?.config || state.busy || !canSaveSettings({ dirty, scope: target.scope, repoRoot: target.repoRoot }))\n return false;\n const { config, drafts } = state;\n patch(key, { busy: true, error: '', note: '' });\n loading.delete(key);\n try {\n const planned = plannedSettingsWrites({\n fields: target.section.fields,\n drafts,\n scope: target.scope,\n repoRoot: target.repoRoot,\n startingHash: config.hashes[target.scope],\n });\n const result = await writeSettingsValue(\n {\n repoRoot: target.repoRoot,\n scope: target.scope,\n expectedHash: config.hashes[target.scope],\n edits: planned.map(({ keyPath, value }) => ({ keyPath, value })),\n },\n target.workspaceId,\n );\n if (!result.ok) {\n patch(key, { error: result.error });\n return false;\n }\n const remaining = { ...settingsDraftStore.state[key]?.drafts };\n for (const field of target.section.fields) {\n const fieldKey = settingsKeyOf(field);\n if (fieldKey in drafts && remaining[fieldKey] === drafts[fieldKey]) delete remaining[fieldKey];\n }\n patch(key, {\n config: result.config,\n drafts: remaining,\n note: `Saved ${String(planned.length)} ${planned.length === 1 ? 'setting' : 'settings'}.`,\n });\n for (const sessionId of Object.keys(sessionsStore.state.byId)) refreshSessionFacts(sessionId);\n return true;\n } catch (error) {\n patch(key, { error: error instanceof Error ? error.message : String(error) });\n return false;\n } finally {\n patch(key, { busy: false });\n }\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
const require_pluginRegistry = require("../lib/pluginRegistry.cjs");
|
|
2
|
+
const require_transport = require("../lib/transport.cjs");
|
|
3
|
+
const require_settingsApi = require("../lib/settingsApi.cjs");
|
|
4
|
+
let react = require("react");
|
|
5
|
+
let _tanstack_store = require("@tanstack/store");
|
|
6
|
+
let _tanstack_react_store = require("@tanstack/react-store");
|
|
7
|
+
//#region src/web/stores/templateStore.ts
|
|
8
|
+
const EMPTY = {
|
|
9
|
+
loading: true,
|
|
10
|
+
saving: false
|
|
11
|
+
};
|
|
12
|
+
const GLOBAL = "global";
|
|
13
|
+
const KEY = "web.template";
|
|
14
|
+
const requests = /* @__PURE__ */ new Map();
|
|
15
|
+
const pendingRequests = /* @__PURE__ */ new Map();
|
|
16
|
+
/** Preferences belong to Doom config; this store caches only scoped API responses. */
|
|
17
|
+
const templateStore = new _tanstack_store.Store({});
|
|
18
|
+
function scopeKey(workspaceId) {
|
|
19
|
+
return workspaceId === void 0 ? GLOBAL : `workspace:${workspaceId}`;
|
|
20
|
+
}
|
|
21
|
+
function patch(key, update) {
|
|
22
|
+
templateStore.setState((state) => ({
|
|
23
|
+
...state,
|
|
24
|
+
[key]: {
|
|
25
|
+
...state[key] ?? EMPTY,
|
|
26
|
+
...update
|
|
27
|
+
}
|
|
28
|
+
}));
|
|
29
|
+
}
|
|
30
|
+
function refreshTemplateConfiguration(workspaceId) {
|
|
31
|
+
const key = scopeKey(workspaceId);
|
|
32
|
+
const request = (requests.get(key) ?? 0) + 1;
|
|
33
|
+
requests.set(key, request);
|
|
34
|
+
patch(key, {
|
|
35
|
+
loading: true,
|
|
36
|
+
error: void 0
|
|
37
|
+
});
|
|
38
|
+
const pending = (async () => {
|
|
39
|
+
try {
|
|
40
|
+
const result = await require_settingsApi.readSettingsConfig("", [KEY], workspaceId);
|
|
41
|
+
if (requests.get(key) !== request) return;
|
|
42
|
+
if (result.ok) patch(key, {
|
|
43
|
+
config: result.config,
|
|
44
|
+
loading: false,
|
|
45
|
+
error: void 0
|
|
46
|
+
});
|
|
47
|
+
else patch(key, {
|
|
48
|
+
loading: false,
|
|
49
|
+
error: result.error
|
|
50
|
+
});
|
|
51
|
+
} catch (error) {
|
|
52
|
+
if (requests.get(key) === request) patch(key, {
|
|
53
|
+
loading: false,
|
|
54
|
+
error: error instanceof Error ? error.message : String(error)
|
|
55
|
+
});
|
|
56
|
+
} finally {
|
|
57
|
+
if (requests.get(key) === request) pendingRequests.delete(key);
|
|
58
|
+
}
|
|
59
|
+
})();
|
|
60
|
+
pendingRequests.set(key, pending);
|
|
61
|
+
return pending;
|
|
62
|
+
}
|
|
63
|
+
/** Initial consumers share a read and reuse resolved config; explicit refreshes can supersede it. */
|
|
64
|
+
function ensureTemplateConfiguration(workspaceId) {
|
|
65
|
+
const key = scopeKey(workspaceId);
|
|
66
|
+
return pendingRequests.get(key) ?? (templateStore.state[key]?.config === void 0 ? refreshTemplateConfiguration(workspaceId) : Promise.resolve());
|
|
67
|
+
}
|
|
68
|
+
function useTemplateConfiguration(workspaceId) {
|
|
69
|
+
const key = scopeKey(workspaceId);
|
|
70
|
+
const entry = (0, _tanstack_react_store.useStore)(templateStore, (state) => state[key] ?? EMPTY);
|
|
71
|
+
(0, react.useEffect)(() => {
|
|
72
|
+
ensureTemplateConfiguration(workspaceId);
|
|
73
|
+
return require_transport.onHubConnected(() => {
|
|
74
|
+
pendingRequests.get(key) ?? refreshTemplateConfiguration(workspaceId);
|
|
75
|
+
});
|
|
76
|
+
}, [key, workspaceId]);
|
|
77
|
+
return entry;
|
|
78
|
+
}
|
|
79
|
+
/** Refuse unavailable choices before attempting the existing authorized, hash-checked write. */
|
|
80
|
+
async function saveTemplateDefault(id, workspaceId) {
|
|
81
|
+
const key = scopeKey(workspaceId);
|
|
82
|
+
const entry = templateStore.state[key];
|
|
83
|
+
if (entry?.saving) return false;
|
|
84
|
+
if (entry?.config === void 0) {
|
|
85
|
+
patch(key, { error: "Load the configuration before saving a template default." });
|
|
86
|
+
return false;
|
|
87
|
+
}
|
|
88
|
+
if (id !== null && !require_pluginRegistry.webTemplateCatalog(workspaceId === void 0 ? { scope: "global" } : {
|
|
89
|
+
scope: "workspace",
|
|
90
|
+
workspaceId
|
|
91
|
+
}).templates.some((template) => template.id === id)) {
|
|
92
|
+
patch(key, { error: "That template is no longer available in this composition." });
|
|
93
|
+
return false;
|
|
94
|
+
}
|
|
95
|
+
const scope = workspaceId === void 0 ? "global" : "repository";
|
|
96
|
+
patch(key, {
|
|
97
|
+
saving: true,
|
|
98
|
+
error: void 0
|
|
99
|
+
});
|
|
100
|
+
const result = await require_settingsApi.writeSettingsValue({
|
|
101
|
+
repoRoot: entry.config.repoRoot,
|
|
102
|
+
scope,
|
|
103
|
+
keyPath: ["web", "template"],
|
|
104
|
+
value: id,
|
|
105
|
+
expectedHash: entry.config.hashes[scope]
|
|
106
|
+
}, workspaceId);
|
|
107
|
+
if (!result.ok) {
|
|
108
|
+
patch(key, {
|
|
109
|
+
saving: false,
|
|
110
|
+
error: result.error
|
|
111
|
+
});
|
|
112
|
+
return false;
|
|
113
|
+
}
|
|
114
|
+
requests.set(key, (requests.get(key) ?? 0) + 1);
|
|
115
|
+
pendingRequests.delete(key);
|
|
116
|
+
patch(key, {
|
|
117
|
+
config: result.config,
|
|
118
|
+
saving: false,
|
|
119
|
+
loading: false,
|
|
120
|
+
error: void 0
|
|
121
|
+
});
|
|
122
|
+
if (workspaceId === void 0) await Promise.all(Object.keys(templateStore.state).filter((cached) => cached.startsWith("workspace:")).map((cached) => refreshTemplateConfiguration(cached.slice(10))));
|
|
123
|
+
return true;
|
|
124
|
+
}
|
|
125
|
+
function configuredTemplate(entry) {
|
|
126
|
+
return entry.config?.values[KEY]?.value;
|
|
127
|
+
}
|
|
128
|
+
//#endregion
|
|
129
|
+
exports.configuredTemplate = configuredTemplate;
|
|
130
|
+
exports.ensureTemplateConfiguration = ensureTemplateConfiguration;
|
|
131
|
+
exports.refreshTemplateConfiguration = refreshTemplateConfiguration;
|
|
132
|
+
exports.saveTemplateDefault = saveTemplateDefault;
|
|
133
|
+
exports.templateStore = templateStore;
|
|
134
|
+
exports.useTemplateConfiguration = useTemplateConfiguration;
|
|
135
|
+
|
|
136
|
+
//# sourceMappingURL=templateStore.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"templateStore.cjs","names":["Store","readSettingsConfig","useStore","onHubConnected","webTemplateCatalog","writeSettingsValue"],"sources":["../../../src/web/stores/templateStore.ts"],"sourcesContent":["import { useStore } from '@tanstack/react-store';\nimport { Store } from '@tanstack/store';\nimport { useEffect } from 'react';\n\nimport type { SettingsConfigView } from '../../types/settings';\nimport { webTemplateCatalog } from '../lib/pluginRegistry';\nimport { readSettingsConfig, writeSettingsValue } from '../lib/settingsApi';\nimport { onHubConnected } from '../lib/transport';\n\nexport interface TemplateConfiguration {\n config?: SettingsConfigView;\n error?: string;\n loading: boolean;\n saving: boolean;\n}\n\nconst EMPTY: TemplateConfiguration = { loading: true, saving: false };\nconst GLOBAL = 'global';\nconst KEY = 'web.template';\nconst requests = new Map<string, number>();\nconst pendingRequests = new Map<string, Promise<void>>();\n\n/** Preferences belong to Doom config; this store caches only scoped API responses. */\nexport const templateStore = new Store<Record<string, TemplateConfiguration>>({});\n\nfunction scopeKey(workspaceId?: string): string {\n return workspaceId === undefined ? GLOBAL : `workspace:${workspaceId}`;\n}\n\nfunction patch(key: string, update: Partial<TemplateConfiguration>): void {\n templateStore.setState((state) => ({ ...state, [key]: { ...(state[key] ?? EMPTY), ...update } }));\n}\n\nexport function refreshTemplateConfiguration(workspaceId?: string): Promise<void> {\n const key = scopeKey(workspaceId);\n const request = (requests.get(key) ?? 0) + 1;\n requests.set(key, request);\n patch(key, { loading: true, error: undefined });\n const pending = (async () => {\n try {\n const result = await readSettingsConfig('', [KEY], workspaceId);\n if (requests.get(key) !== request) return;\n if (result.ok) patch(key, { config: result.config, loading: false, error: undefined });\n else patch(key, { loading: false, error: result.error });\n } catch (error) {\n if (requests.get(key) === request)\n patch(key, { loading: false, error: error instanceof Error ? error.message : String(error) });\n } finally {\n if (requests.get(key) === request) pendingRequests.delete(key);\n }\n })();\n pendingRequests.set(key, pending);\n return pending;\n}\n\n/** Initial consumers share a read and reuse resolved config; explicit refreshes can supersede it. */\nexport function ensureTemplateConfiguration(workspaceId?: string): Promise<void> {\n const key = scopeKey(workspaceId);\n return (\n pendingRequests.get(key) ??\n (templateStore.state[key]?.config === undefined ? refreshTemplateConfiguration(workspaceId) : Promise.resolve())\n );\n}\n\nexport function useTemplateConfiguration(workspaceId?: string): TemplateConfiguration {\n const key = scopeKey(workspaceId);\n const entry = useStore(templateStore, (state) => state[key] ?? EMPTY);\n useEffect(() => {\n void ensureTemplateConfiguration(workspaceId);\n return onHubConnected(() => {\n void (pendingRequests.get(key) ?? refreshTemplateConfiguration(workspaceId));\n });\n }, [key, workspaceId]);\n return entry;\n}\n\n/** Refuse unavailable choices before attempting the existing authorized, hash-checked write. */\nexport async function saveTemplateDefault(id: string | null, workspaceId?: string): Promise<boolean> {\n const key = scopeKey(workspaceId);\n const entry = templateStore.state[key];\n if (entry?.saving) return false;\n if (entry?.config === undefined) {\n patch(key, { error: 'Load the configuration before saving a template default.' });\n return false;\n }\n const mount = workspaceId === undefined ? { scope: 'global' as const } : { scope: 'workspace' as const, workspaceId };\n if (id !== null && !webTemplateCatalog(mount).templates.some((template) => template.id === id)) {\n patch(key, { error: 'That template is no longer available in this composition.' });\n return false;\n }\n const scope = workspaceId === undefined ? 'global' : 'repository';\n patch(key, { saving: true, error: undefined });\n const result = await writeSettingsValue(\n {\n repoRoot: entry.config.repoRoot,\n scope,\n keyPath: ['web', 'template'],\n value: id,\n expectedHash: entry.config.hashes[scope],\n },\n workspaceId,\n );\n if (!result.ok) {\n // Keep the conflict visible. A reload is explicit, never an automatic overwrite.\n patch(key, { saving: false, error: result.error });\n return false;\n }\n requests.set(key, (requests.get(key) ?? 0) + 1);\n pendingRequests.delete(key);\n patch(key, { config: result.config, saving: false, loading: false, error: undefined });\n // Workspace views may inherit a newly saved global value.\n if (workspaceId === undefined) {\n await Promise.all(\n Object.keys(templateStore.state)\n .filter((cached) => cached.startsWith('workspace:'))\n .map((cached) => refreshTemplateConfiguration(cached.slice('workspace:'.length))),\n );\n }\n return true;\n}\n\nexport function configuredTemplate(entry: TemplateConfiguration): string | undefined {\n return entry.config?.values[KEY]?.value;\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { SettingsConfigView } from "../../types/settings.mjs";
|
|
2
|
+
import { Store } from "@tanstack/store";
|
|
3
|
+
//#region src/web/stores/templateStore.d.ts
|
|
4
|
+
export interface TemplateConfiguration {
|
|
5
|
+
config?: SettingsConfigView;
|
|
6
|
+
error?: string;
|
|
7
|
+
loading: boolean;
|
|
8
|
+
saving: boolean;
|
|
9
|
+
}
|
|
10
|
+
/** Preferences belong to Doom config; this store caches only scoped API responses. */
|
|
11
|
+
export declare const templateStore: Store<Record<string, TemplateConfiguration>, never>;
|
|
12
|
+
export declare function refreshTemplateConfiguration(workspaceId?: string): Promise<void>;
|
|
13
|
+
/** Initial consumers share a read and reuse resolved config; explicit refreshes can supersede it. */
|
|
14
|
+
export declare function ensureTemplateConfiguration(workspaceId?: string): Promise<void>;
|
|
15
|
+
export declare function useTemplateConfiguration(workspaceId?: string): TemplateConfiguration;
|
|
16
|
+
/** Refuse unavailable choices before attempting the existing authorized, hash-checked write. */
|
|
17
|
+
export declare function saveTemplateDefault(id: string | null, workspaceId?: string): Promise<boolean>;
|
|
18
|
+
export declare function configuredTemplate(entry: TemplateConfiguration): string | undefined;
|
|
19
|
+
//#endregion
|
|
20
|
+
//# sourceMappingURL=templateStore.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"templateStore.d.mts","names":[],"sources":["../../../src/web/stores/templateStore.ts"],"mappings":";;;iBASiB;EACf,SAAS;EACT;EACA;EACA;;;qBAUW,eAAa,MAAA,eAAA;wBAUV,6BAA6B,uBAAuB;;wBAuBpD,4BAA4B,uBAAuB;wBAQnD,yBAAyB,uBAAuB;;wBAa1C,oBAAoB,mBAAmB,uBAAuB;wBA4CpE,mBAAmB,OAAO"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import { webTemplateCatalog } from "../lib/pluginRegistry.mjs";
|
|
2
|
+
import { onHubConnected } from "../lib/transport.mjs";
|
|
3
|
+
import { readSettingsConfig, writeSettingsValue } from "../lib/settingsApi.mjs";
|
|
4
|
+
import { useEffect } from "react";
|
|
5
|
+
import { Store } from "@tanstack/store";
|
|
6
|
+
import { useStore } from "@tanstack/react-store";
|
|
7
|
+
//#region src/web/stores/templateStore.ts
|
|
8
|
+
const EMPTY = {
|
|
9
|
+
loading: true,
|
|
10
|
+
saving: false
|
|
11
|
+
};
|
|
12
|
+
const GLOBAL = "global";
|
|
13
|
+
const KEY = "web.template";
|
|
14
|
+
const requests = /* @__PURE__ */ new Map();
|
|
15
|
+
const pendingRequests = /* @__PURE__ */ new Map();
|
|
16
|
+
/** Preferences belong to Doom config; this store caches only scoped API responses. */
|
|
17
|
+
const templateStore = new Store({});
|
|
18
|
+
function scopeKey(workspaceId) {
|
|
19
|
+
return workspaceId === void 0 ? GLOBAL : `workspace:${workspaceId}`;
|
|
20
|
+
}
|
|
21
|
+
function patch(key, update) {
|
|
22
|
+
templateStore.setState((state) => ({
|
|
23
|
+
...state,
|
|
24
|
+
[key]: {
|
|
25
|
+
...state[key] ?? EMPTY,
|
|
26
|
+
...update
|
|
27
|
+
}
|
|
28
|
+
}));
|
|
29
|
+
}
|
|
30
|
+
function refreshTemplateConfiguration(workspaceId) {
|
|
31
|
+
const key = scopeKey(workspaceId);
|
|
32
|
+
const request = (requests.get(key) ?? 0) + 1;
|
|
33
|
+
requests.set(key, request);
|
|
34
|
+
patch(key, {
|
|
35
|
+
loading: true,
|
|
36
|
+
error: void 0
|
|
37
|
+
});
|
|
38
|
+
const pending = (async () => {
|
|
39
|
+
try {
|
|
40
|
+
const result = await readSettingsConfig("", [KEY], workspaceId);
|
|
41
|
+
if (requests.get(key) !== request) return;
|
|
42
|
+
if (result.ok) patch(key, {
|
|
43
|
+
config: result.config,
|
|
44
|
+
loading: false,
|
|
45
|
+
error: void 0
|
|
46
|
+
});
|
|
47
|
+
else patch(key, {
|
|
48
|
+
loading: false,
|
|
49
|
+
error: result.error
|
|
50
|
+
});
|
|
51
|
+
} catch (error) {
|
|
52
|
+
if (requests.get(key) === request) patch(key, {
|
|
53
|
+
loading: false,
|
|
54
|
+
error: error instanceof Error ? error.message : String(error)
|
|
55
|
+
});
|
|
56
|
+
} finally {
|
|
57
|
+
if (requests.get(key) === request) pendingRequests.delete(key);
|
|
58
|
+
}
|
|
59
|
+
})();
|
|
60
|
+
pendingRequests.set(key, pending);
|
|
61
|
+
return pending;
|
|
62
|
+
}
|
|
63
|
+
/** Initial consumers share a read and reuse resolved config; explicit refreshes can supersede it. */
|
|
64
|
+
function ensureTemplateConfiguration(workspaceId) {
|
|
65
|
+
const key = scopeKey(workspaceId);
|
|
66
|
+
return pendingRequests.get(key) ?? (templateStore.state[key]?.config === void 0 ? refreshTemplateConfiguration(workspaceId) : Promise.resolve());
|
|
67
|
+
}
|
|
68
|
+
function useTemplateConfiguration(workspaceId) {
|
|
69
|
+
const key = scopeKey(workspaceId);
|
|
70
|
+
const entry = useStore(templateStore, (state) => state[key] ?? EMPTY);
|
|
71
|
+
useEffect(() => {
|
|
72
|
+
ensureTemplateConfiguration(workspaceId);
|
|
73
|
+
return onHubConnected(() => {
|
|
74
|
+
pendingRequests.get(key) ?? refreshTemplateConfiguration(workspaceId);
|
|
75
|
+
});
|
|
76
|
+
}, [key, workspaceId]);
|
|
77
|
+
return entry;
|
|
78
|
+
}
|
|
79
|
+
/** Refuse unavailable choices before attempting the existing authorized, hash-checked write. */
|
|
80
|
+
async function saveTemplateDefault(id, workspaceId) {
|
|
81
|
+
const key = scopeKey(workspaceId);
|
|
82
|
+
const entry = templateStore.state[key];
|
|
83
|
+
if (entry?.saving) return false;
|
|
84
|
+
if (entry?.config === void 0) {
|
|
85
|
+
patch(key, { error: "Load the configuration before saving a template default." });
|
|
86
|
+
return false;
|
|
87
|
+
}
|
|
88
|
+
if (id !== null && !webTemplateCatalog(workspaceId === void 0 ? { scope: "global" } : {
|
|
89
|
+
scope: "workspace",
|
|
90
|
+
workspaceId
|
|
91
|
+
}).templates.some((template) => template.id === id)) {
|
|
92
|
+
patch(key, { error: "That template is no longer available in this composition." });
|
|
93
|
+
return false;
|
|
94
|
+
}
|
|
95
|
+
const scope = workspaceId === void 0 ? "global" : "repository";
|
|
96
|
+
patch(key, {
|
|
97
|
+
saving: true,
|
|
98
|
+
error: void 0
|
|
99
|
+
});
|
|
100
|
+
const result = await writeSettingsValue({
|
|
101
|
+
repoRoot: entry.config.repoRoot,
|
|
102
|
+
scope,
|
|
103
|
+
keyPath: ["web", "template"],
|
|
104
|
+
value: id,
|
|
105
|
+
expectedHash: entry.config.hashes[scope]
|
|
106
|
+
}, workspaceId);
|
|
107
|
+
if (!result.ok) {
|
|
108
|
+
patch(key, {
|
|
109
|
+
saving: false,
|
|
110
|
+
error: result.error
|
|
111
|
+
});
|
|
112
|
+
return false;
|
|
113
|
+
}
|
|
114
|
+
requests.set(key, (requests.get(key) ?? 0) + 1);
|
|
115
|
+
pendingRequests.delete(key);
|
|
116
|
+
patch(key, {
|
|
117
|
+
config: result.config,
|
|
118
|
+
saving: false,
|
|
119
|
+
loading: false,
|
|
120
|
+
error: void 0
|
|
121
|
+
});
|
|
122
|
+
if (workspaceId === void 0) await Promise.all(Object.keys(templateStore.state).filter((cached) => cached.startsWith("workspace:")).map((cached) => refreshTemplateConfiguration(cached.slice(10))));
|
|
123
|
+
return true;
|
|
124
|
+
}
|
|
125
|
+
function configuredTemplate(entry) {
|
|
126
|
+
return entry.config?.values[KEY]?.value;
|
|
127
|
+
}
|
|
128
|
+
//#endregion
|
|
129
|
+
export { configuredTemplate, ensureTemplateConfiguration, refreshTemplateConfiguration, saveTemplateDefault, templateStore, useTemplateConfiguration };
|
|
130
|
+
|
|
131
|
+
//# sourceMappingURL=templateStore.mjs.map
|