@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 @@
|
|
|
1
|
+
{"version":3,"file":"Composer.cjs","names":["uploadSessionAttachment","inlineTextBytes","composerStore","useStore","sessionsStore","useActiveSessionMeta","useActiveSession","useToolPrompt","useComposerState","useState","composerSubmissionStore","useRef","registerPromptInput","useCallback","searchSessionFiles","submitComposerDraft","Button","abortRun","StopIcon","DormantPanel","QueueSheet","clearQueuedMessages","deleteQueuedMessage","promoteQueuedMessage","resumeQueuedMessages","ComposerPrompt","AgentLockPanel","Popover","PopoverAnchor","PopoverContent","OptionRow","OptionLabel","PopoverFooter","Kbd","Textarea","updateComposerState","CloseIcon","PopoverTrigger","PlusIcon","optionRowVariants","PluginSurface","HOST_SLOTS","SendIcon"],"sources":["../../../../src/web/features/session/Composer.tsx"],"sourcesContent":["import type { TransientTab } from '@agimon-ai/po-core/web';\nimport {\n Button,\n CloseIcon,\n Kbd,\n OptionLabel,\n OptionRow,\n optionRowVariants,\n PlusIcon,\n SendIcon,\n Popover,\n PopoverAnchor,\n PopoverContent,\n PopoverFooter,\n PopoverTrigger,\n StopIcon,\n Textarea,\n} from '@agimon-ai/po-web-components';\nimport { useStore } from '@tanstack/react-store';\nimport { useCallback, useEffect, useRef, useState } from 'react';\n\nimport { PluginSurface } from '../../components/PluginSurface';\nimport { searchSessionFiles } from '../../lib/hubApi';\nimport { HOST_SLOTS } from '../../lib/pluginRegistry';\nimport { registerPromptInput } from '../../lib/promptFocus';\nimport { uploadSessionAttachment } from '../../lib/sessionAsset';\nimport type { QueuedEntry } from '../../lib/sessionModel';\nimport {\n composerStore,\n type ComposerAttachment,\n type ComposerSessionState,\n inlineTextBytes,\n MAX_COMPOSER_UPLOAD_BYTES,\n MAX_COMPOSER_ATTACHMENTS,\n MAX_COMPOSER_IMAGE_BYTES,\n MAX_COMPOSER_TEXT_BYTES,\n MAX_COMPOSER_TOTAL_IMAGE_BYTES,\n MAX_COMPOSER_TOTAL_TEXT_BYTES,\n updateComposerState,\n useComposerState,\n} from '../../stores/composerStore';\nimport { composerSubmissionStore, submitComposerDraft } from '../../stores/composerSubmissionStore';\nimport { openPalette } from '../../stores/paletteStore';\nimport { sessionsStore, useActiveSessionMeta } from '../../stores/sessionsStore';\nimport {\n abortRun,\n clearQueuedMessages,\n deleteQueuedMessage,\n promoteQueuedMessage,\n resumeQueuedMessages,\n useActiveSession,\n} from '../../stores/sessionStore';\nimport { useToolPrompt } from '../../stores/useToolPrompt';\nimport { AgentLockPanel } from './AgentLockPanel';\nimport { ComposerPrompt } from './ComposerPrompt';\nimport { DormantPanel } from './DormantPanel';\nimport { QueueSheet } from './QueueSheet';\n\n/** The input grows with the draft up to this many pixels, then scrolls. */\nconst MAX_INPUT_HEIGHT_PX = 192;\n/**\n * Bound the result set so completion searches and their scrollable popup stay\n * quick even in large workspaces.\n */\nconst MAX_COMPLETION_ITEMS = 20;\n/** Pi names skill commands `skill:<name>`; the cockpit browses them under `$`. */\nconst SKILL_PREFIX = 'skill:';\ntype CompletionKind = 'command' | 'skill' | 'file';\nconst TRIGGER_CHARS: Record<CompletionKind, string> = { command: '/', skill: '$', file: '@' };\nconst FILE_SEARCH_DEBOUNCE_MS = 50;\nconst IMAGE_TYPES = new Set(['image/png', 'image/jpeg', 'image/gif', 'image/webp']);\nconst TEXT_EXTENSIONS = new Set([\n 'c',\n 'cpp',\n 'css',\n 'csv',\n 'go',\n 'h',\n 'hpp',\n 'html',\n 'ini',\n 'java',\n 'js',\n 'json',\n 'jsonl',\n 'jsx',\n 'log',\n 'md',\n 'markdown',\n 'py',\n 'rb',\n 'rs',\n 'sh',\n 'sql',\n 'toml',\n 'ts',\n 'tsv',\n 'tsx',\n 'txt',\n 'xml',\n 'yaml',\n 'yml',\n]);\n\nfunction isReadableText(file: File): boolean {\n const extension = file.name.toLowerCase().split('.').pop() ?? '';\n return file.type.startsWith('text/') || TEXT_EXTENSIONS.has(extension);\n}\n\nfunction readDataUrl(file: File): Promise<string> {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = () =>\n typeof reader.result === 'string' ? resolve(reader.result) : reject(new Error('No file data'));\n reader.onerror = () => reject(reader.error ?? new Error('Could not read file'));\n reader.readAsDataURL(file);\n });\n}\n\n/**\n * Stores a copy on the host so a tool can be handed the file by path. Images and\n * text still travel inline, so for them a failed upload only means no path.\n */\nasync function storedPath(sessionId: string, file: File): Promise<string | undefined> {\n try {\n return (await uploadSessionAttachment(sessionId, file)).path;\n } catch {\n return undefined; // Documented fallback: the inline copy is still sent.\n }\n}\n\nconst TOO_MANY_ATTACHMENTS = `Only ${String(MAX_COMPOSER_ATTACHMENTS)} attachments are allowed.`;\n\n/** Why one more image or text file would break a total budget, or '' when it fits. */\nfunction totalBudgetRejection(\n attachments: ComposerAttachment[],\n kind: ComposerAttachment['kind'],\n name: string,\n size: number,\n): string {\n if (kind === 'image') {\n const imageBytes = attachments.reduce((total, item) => total + (item.kind === 'image' ? item.size : 0), 0);\n return imageBytes + size > MAX_COMPOSER_TOTAL_IMAGE_BYTES ? `${name} exceeds the 20 MB total image limit.` : '';\n }\n if (kind === 'text' && inlineTextBytes(attachments) + size > MAX_COMPOSER_TOTAL_TEXT_BYTES) {\n return `${name} exceeds the 200 KB total text limit.`;\n }\n return '';\n}\n\n/**\n * Reads picked, pasted or dropped files into new attachments, numbered from\n * `current.nextAttachmentId` and budgeted after the ones already staged.\n */\nexport async function readComposerFiles(\n sessionId: string,\n files: File[],\n current: Pick<ComposerSessionState, 'attachments' | 'nextAttachmentId'>,\n): Promise<Pick<ComposerSessionState, 'attachments' | 'attachmentError'>> {\n const next = [...current.attachments];\n const rejected: string[] = [];\n let attachmentId = current.nextAttachmentId;\n\n for (const file of files) {\n if (next.length >= MAX_COMPOSER_ATTACHMENTS) {\n rejected.push(TOO_MANY_ATTACHMENTS);\n break;\n }\n const id = `attachment-${String(attachmentId++)}`;\n if (IMAGE_TYPES.has(file.type)) {\n if (file.size > MAX_COMPOSER_IMAGE_BYTES) {\n rejected.push(`${file.name} exceeds the 10 MB image limit.`);\n continue;\n }\n const overBudget = totalBudgetRejection(next, 'image', file.name, file.size);\n if (overBudget) {\n rejected.push(overBudget);\n continue;\n }\n try {\n const dataUrl = await readDataUrl(file);\n const path = file.size > MAX_COMPOSER_UPLOAD_BYTES ? undefined : await storedPath(sessionId, file);\n next.push({\n id,\n kind: 'image',\n name: file.name,\n size: file.size,\n dataUrl,\n data: dataUrl.slice(dataUrl.indexOf(',') + 1),\n mimeType: file.type,\n ...(path === undefined ? {} : { path }),\n });\n } catch {\n rejected.push(`${file.name} could not be read.`);\n }\n continue;\n }\n if (!isReadableText(file)) {\n if (file.size > MAX_COMPOSER_UPLOAD_BYTES) {\n rejected.push(`\"${file.name}\" exceeds the 8 MB file limit.`);\n continue;\n }\n try {\n const stored = await uploadSessionAttachment(sessionId, file);\n next.push({\n id,\n kind: 'file',\n name: file.name,\n size: stored.size,\n mimeType: stored.mimeType,\n path: stored.path,\n });\n } catch {\n rejected.push(`\"${file.name}\" could not be uploaded.`);\n }\n continue;\n }\n if (file.size > MAX_COMPOSER_TEXT_BYTES) {\n rejected.push(`${file.name} exceeds the 100 KB text file limit.`);\n continue;\n }\n const overBudget = totalBudgetRejection(next, 'text', file.name, file.size);\n if (overBudget) {\n rejected.push(overBudget);\n continue;\n }\n try {\n const content = await file.text();\n const path = await storedPath(sessionId, file);\n next.push({\n id,\n kind: 'text',\n name: file.name,\n size: file.size,\n content,\n ...(path === undefined ? {} : { path }),\n });\n } catch {\n rejected.push(`${file.name} could not be read.`);\n }\n }\n return { attachments: next.slice(current.attachments.length), attachmentError: rejected.join(' ') };\n}\n\n/**\n * Stages files on a session's composer. Reading and uploading are async, so\n * the batch reserves its ids and marks itself pending up front, then appends\n * to whatever the composer holds by the time it finishes: chips removed, a\n * message sent, or another batch staged meanwhile all stay as they are, and\n * the count and total budgets are checked again against that latest state.\n */\nexport async function addComposerFiles(sessionId: string, files: File[]): Promise<void> {\n if (files.length === 0) return;\n let current: Pick<ComposerSessionState, 'attachments' | 'nextAttachmentId'> = {\n attachments: [],\n nextAttachmentId: 0,\n };\n updateComposerState(sessionId, (state) => {\n current = state;\n return {\n ...state,\n nextAttachmentId: state.nextAttachmentId + files.length,\n pendingAttachments: state.pendingAttachments + 1,\n };\n });\n const read = await readComposerFiles(sessionId, files, current);\n if (composerStore.state[sessionId] === undefined) return; // The session left while the files were read.\n updateComposerState(sessionId, (state) => {\n const attachments = [...state.attachments];\n const rejected = read.attachmentError ? [read.attachmentError] : [];\n for (const attachment of read.attachments) {\n if (attachments.length >= MAX_COMPOSER_ATTACHMENTS) {\n if (!read.attachmentError.includes(TOO_MANY_ATTACHMENTS)) rejected.push(TOO_MANY_ATTACHMENTS);\n break;\n }\n const overBudget = totalBudgetRejection(attachments, attachment.kind, attachment.name, attachment.size);\n if (overBudget) rejected.push(overBudget);\n else attachments.push(attachment);\n }\n return {\n ...state,\n attachments,\n attachmentError: rejected.join(' '),\n pendingAttachments: Math.max(0, state.pendingAttachments - 1),\n };\n });\n}\n\ninterface CompletionItem {\n /** What replaces the trigger token when accepted. */\n insert: string;\n label: string;\n detail?: string;\n}\n\ninterface CompletionState {\n kind: CompletionKind;\n /** Index of the trigger character in the draft. */\n tokenStart: number;\n query: string;\n items: CompletionItem[];\n selected: number;\n}\n\n/**\n * Whether accepting the highlighted item would leave the draft as it is. The\n * popup still shows what a longer name would complete to, but the keystroke\n * that would change nothing is handed back to the composer to send.\n */\nfunction isCompletionRedundant(state: CompletionState): boolean {\n const item = state.items[state.selected];\n return item !== undefined && item.insert.trimEnd() === `${TRIGGER_CHARS[state.kind]}${state.query}`;\n}\n\n/** The /command, $skill or @file token the caret sits in, or null when there is none. */\nfunction triggerTokenAt(draft: string, caret: number): { kind: CompletionKind; start: number; query: string } | null {\n const before = draft.slice(0, caret);\n const start = Math.max(before.lastIndexOf(' '), before.lastIndexOf('\\n')) + 1;\n const token = before.slice(start);\n if (token.startsWith('/') && start === 0) return { kind: 'command', start, query: token.slice(1) };\n if (token.startsWith('$') && start === 0) return { kind: 'skill', start, query: token.slice(1) };\n if (token.startsWith('@') && token.length <= 64) return { kind: 'file', start, query: token.slice(1) };\n return null;\n}\n\nexport function Composer({ composerContext }: { composerContext?: TransientTab['composerContext'] } = {}) {\n const sessionId = useStore(sessionsStore, (state) => state.activeId);\n const meta = useActiveSessionMeta();\n const streaming = useActiveSession((state) => state.streaming);\n const lifecycle = useActiveSession((state) => state.lifecycle);\n const agentLocked = useActiveSession((state) => state.agentLocked);\n const active = lifecycle === null ? streaming : lifecycle.operation !== null;\n const aborting = lifecycle?.operation?.status === 'aborting';\n const queuedEntries = useActiveSession((state) =>\n state.entries.filter((entry): entry is QueuedEntry => entry.kind === 'queued'),\n );\n const commands = useActiveSession((state) => state.commands);\n const editorTextRequest = useActiveSession((state) => state.editorTextRequest);\n const prompt = useToolPrompt();\n const { draft, caret, dismissedToken, attachments, attachmentError, pendingAttachments } =\n useComposerState(sessionId);\n const [completion, setCompletion] = useState<CompletionState | null>(null);\n const [draggingFiles, setDraggingFiles] = useState(false);\n const [menuOpen, setMenuOpen] = useState(false);\n const pendingSubmission = useStore(\n composerSubmissionStore,\n (pending) => sessionId !== null && pending.has(sessionId),\n );\n const inputRef = useRef<HTMLTextAreaElement>(null);\n const containerRef = useRef<HTMLDivElement>(null);\n const searchTimer = useRef<ReturnType<typeof setTimeout> | undefined>(undefined);\n\n const dormant = meta?.summary.dormant === true;\n const attached = !dormant && meta?.attach === 'attached';\n const queued = lifecycle === null ? queuedEntries.length : lifecycle.queue.length;\n\n // Completion and drag state are transient. The draft and attachments below\n // come from the newly focused session immediately after this reset, so the\n // reset is done during render rather than in an effect: a frame of the\n // previous session's popup would otherwise be painted over the new draft.\n const [shownSession, setShownSession] = useState(sessionId);\n if (shownSession !== sessionId) {\n setShownSession(sessionId);\n setCompletion(null);\n setDraggingFiles(false);\n setMenuOpen(false);\n }\n\n // The completion popup and the '+' menu are two popovers over one composer,\n // and the completion one exempts its own anchor from outside clicks. Keeping\n // them mutually exclusive means that guard never has to reason about the\n // other's portalled content. Adjusted during render, like the session reset\n // above, so the menu is already gone in the frame the popup appears in.\n if (menuOpen && completion !== null) setMenuOpen(false);\n useEffect(() => {\n if (searchTimer.current) clearTimeout(searchTimer.current);\n }, [sessionId]);\n\n // Overlays hand the keyboard back here when they close. Re-registered when\n // a tool prompt stands the input down and again when it gives it back:\n // otherwise the ref stays as it was and every later hand-back goes nowhere.\n useEffect(() => registerPromptInput(inputRef.current), [dormant, prompt]);\n\n useEffect(() => {\n if (editorTextRequest === null) return;\n updateComposerState(sessionId, (state) => {\n const draft = editorTextRequest.append\n ? `${state.draft}${state.draft && !/\\s$/u.test(state.draft) ? ' ' : ''}${editorTextRequest.text}`\n : editorTextRequest.text;\n return { ...state, draft, caret: draft.length, dismissedToken: null };\n });\n requestAnimationFrame(() => {\n inputRef.current?.focus();\n const length = inputRef.current?.value.length ?? 0;\n inputRef.current?.setSelectionRange(length, length);\n });\n }, [editorTextRequest, sessionId]);\n\n // Auto-grow: measure after every draft change so pasted stack traces are\n // actually visible instead of scrolling inside one line.\n const resize = useCallback((): void => {\n const input = inputRef.current;\n if (!input) return;\n input.style.height = 'auto';\n input.style.height = `${String(Math.min(input.scrollHeight, MAX_INPUT_HEIGHT_PX))}px`;\n }, []);\n useEffect(() => resize(), [draft, resize]);\n\n const closeCompletion = useCallback((): void => {\n if (searchTimer.current) clearTimeout(searchTimer.current);\n setCompletion(null);\n }, []);\n\n /** Esc dismisses the popup for the token being typed; edits re-arm it. */\n const dismissCompletion = useCallback((): void => {\n const trigger = triggerTokenAt(draft, caret);\n updateComposerState(sessionId, (state) => ({ ...state, dismissedToken: trigger?.start ?? null }));\n closeCompletion();\n }, [draft, caret, closeCompletion, sessionId]);\n\n // The popup is derived state: any change to the draft, caret, session\n // commands, or attachment recomputes it, so data arriving after a keystroke\n // still opens it.\n useEffect(() => {\n const trigger = triggerTokenAt(draft, caret);\n if (!trigger || !attached || dismissedToken === trigger.start) {\n // eslint-disable-next-line react/set-state-in-effect -- the popup tracks an async, debounced search; closing it is the synchronous arm of that same effect.\n closeCompletion();\n return;\n }\n if (trigger.kind === 'command' || trigger.kind === 'skill') {\n const query = trigger.query.toLowerCase();\n const items = commands\n .flatMap((command) => {\n const skill = command.name.startsWith(SKILL_PREFIX);\n if (skill !== (trigger.kind === 'skill')) return [];\n const shown = skill ? command.name.slice(SKILL_PREFIX.length) : command.name;\n if (!shown.toLowerCase().startsWith(query)) return [];\n // Skills are browsed as `$name` but Pi only answers to the real\n // `/skill:name`, so the label and the insert differ for them.\n return [\n {\n insert: `/${command.name} `,\n label: `${TRIGGER_CHARS[trigger.kind]}${shown}`,\n detail: command.description,\n },\n ];\n })\n // Sort before truncating. The server answers in registration order, so an\n // unsorted slice drops an arbitrary tail once a workspace has more than\n // MAX_COMPLETION_ITEMS matches, which looks exactly like a missing skill.\n .sort((left, right) => left.label.localeCompare(right.label))\n .slice(0, MAX_COMPLETION_ITEMS);\n setCompletion(\n items.length > 0\n ? { kind: trigger.kind, tokenStart: trigger.start, query: trigger.query, items, selected: 0 }\n : null,\n );\n return;\n }\n if (searchTimer.current) clearTimeout(searchTimer.current);\n searchTimer.current = setTimeout(() => {\n if (sessionId === null) return;\n void searchSessionFiles(sessionId, trigger.query).then((files) => {\n // The session or draft may have moved on while the lookup ran.\n const input = inputRef.current;\n if (\n sessionsStore.state.activeId !== sessionId ||\n !input ||\n triggerTokenAt(input.value, input.selectionStart)?.query !== trigger.query\n )\n return;\n const items = files.slice(0, MAX_COMPLETION_ITEMS).map((file) => ({ insert: `@${file} `, label: `@${file}` }));\n setCompletion(\n items.length > 0\n ? { kind: 'file', tokenStart: trigger.start, query: trigger.query, items, selected: 0 }\n : null,\n );\n });\n }, FILE_SEARCH_DEBOUNCE_MS);\n return () => {\n if (searchTimer.current) clearTimeout(searchTimer.current);\n };\n }, [draft, caret, commands, attached, dismissedToken, closeCompletion, sessionId]);\n\n // Clicking anywhere outside the composer closes the popup.\n useEffect(() => {\n if (!completion) return;\n const onPointerDown = (event: MouseEvent): void => {\n if (containerRef.current && event.target instanceof Node && !containerRef.current.contains(event.target)) {\n closeCompletion();\n }\n };\n document.addEventListener('mousedown', onPointerDown);\n return () => document.removeEventListener('mousedown', onPointerDown);\n }, [completion, closeCompletion]);\n\n const accept = (state: CompletionState, index: number): void => {\n const item = state.items[index];\n if (!item) return;\n const next = draft.slice(0, state.tokenStart) + item.insert + draft.slice(caret);\n const position = state.tokenStart + item.insert.length;\n updateComposerState(sessionId, (current) => ({\n ...current,\n draft: next,\n caret: position,\n dismissedToken: state.tokenStart,\n }));\n requestAnimationFrame(() => {\n inputRef.current?.focus();\n inputRef.current?.setSelectionRange(position, position);\n });\n };\n\n const addFiles = useCallback(\n async (files: File[]): Promise<void> => {\n if (sessionId === null) return;\n await addComposerFiles(sessionId, files);\n },\n [sessionId],\n );\n\n const submit = (): void => {\n void submitComposerDraft(sessionId, 'submit', composerContext);\n };\n const queue = (): void => {\n void submitComposerDraft(sessionId, 'queue', composerContext);\n };\n\n const placeholder = !attached\n ? 'Waiting for the session…'\n : active\n ? 'Interrupt the run and respond…'\n : 'Ask anything · / for commands · $ for skills · @ for files…';\n const abortAction = (\n <Button\n variant=\"danger-outline\"\n size=\"lg\"\n data-testid=\"composer-abort\"\n disabled={aborting}\n onClick={() => abortRun(sessionId)}\n >\n <StopIcon className=\"h-2 w-2 fill-current\" />\n {aborting ? 'Aborting…' : 'Abort'}\n </Button>\n );\n\n if (dormant && meta !== null && sessionId !== null) {\n return (\n <div className=\"shrink-0 px-3 pt-3 pb-2.5 sm:px-5\">\n <DormantPanel key={sessionId} meta={meta} />\n </div>\n );\n }\n\n // A tool waiting on an answer takes the input's place rather than opening\n // over the conversation: the transcript is what the reader needs in order\n // to answer, and there is nothing to type here until the agent is unblocked.\n if (prompt !== null) {\n return (\n <div className=\"shrink-0 px-3 pt-3 pb-2.5 sm:px-5\">\n <QueueSheet\n key={sessionId}\n sessionId={sessionId}\n count={queued}\n disabled={!attached || lifecycle === null || aborting}\n entries={queuedEntries}\n onClear={() => clearQueuedMessages(sessionId)}\n onDelete={(id) => deleteQueuedMessage(id, queued, sessionId)}\n onPromote={(id, operationId) => promoteQueuedMessage(id, operationId, sessionId)}\n onResume={() => resumeQueuedMessages(sessionId)}\n operationId={lifecycle?.operation?.id}\n paused={lifecycle?.paused}\n />\n <div className=\"rounded-lg border border-doom-edge-magenta bg-doom-deep\">\n <ComposerPrompt claim={prompt} sessionId={sessionId} />\n </div>\n {active ? <div className=\"mt-2 flex justify-end\">{abortAction}</div> : null}\n </div>\n );\n }\n\n // A remote call can still ask the user something while the local agent is locked.\n if (agentLocked && sessionId !== null) {\n return (\n <div className=\"shrink-0 px-3 pt-3 pb-2.5 sm:px-5\">\n <AgentLockPanel key={sessionId} sessionId={sessionId} />\n </div>\n );\n }\n\n return (\n <div className=\"shrink-0 px-3 pt-3 pb-2.5 sm:px-5\">\n <QueueSheet\n key={sessionId}\n sessionId={sessionId}\n count={queued}\n disabled={!attached || lifecycle === null || aborting}\n entries={queuedEntries}\n onClear={() => clearQueuedMessages(sessionId)}\n onDelete={(id) => deleteQueuedMessage(id, queued, sessionId)}\n onPromote={(id, operationId) => promoteQueuedMessage(id, operationId, sessionId)}\n onResume={() => resumeQueuedMessages(sessionId)}\n operationId={lifecycle?.operation?.id}\n paused={lifecycle?.paused}\n />\n <Popover\n open={completion !== null}\n onOpenChange={(next) => {\n if (!next) dismissCompletion();\n }}\n >\n <PopoverAnchor asChild>\n <div\n ref={containerRef}\n onDragOver={(event) => {\n if (!attached || !event.dataTransfer.types.includes('Files')) return;\n event.preventDefault();\n event.dataTransfer.dropEffect = 'copy';\n setDraggingFiles(true);\n }}\n onDragLeave={(event) => {\n if (!event.currentTarget.contains(event.relatedTarget as Node | null)) setDraggingFiles(false);\n }}\n onDrop={(event) => {\n setDraggingFiles(false);\n if (!attached || event.dataTransfer.files.length === 0) return;\n event.preventDefault();\n void addFiles(Array.from(event.dataTransfer.files));\n }}\n className={`relative rounded-xl border transition-colors focus-within:border-doom-blue/60 focus-within:ring-2 focus-within:ring-doom-blue/10 ${\n draggingFiles\n ? 'border-doom-blue bg-doom-blue/5'\n : active\n ? 'border-doom-edge-yellow'\n : 'border-doom-border'\n }`}\n >\n {completion ? (\n <PopoverContent\n side=\"top\"\n align=\"start\"\n sideOffset={8}\n data-testid=\"composer-completion\"\n // The keys belong to the textarea, so the menu never takes\n // focus; a click in the composer is a caret move, not a\n // dismissal, which is why the anchor is exempt from outside.\n onOpenAutoFocus={(event) => event.preventDefault()}\n onCloseAutoFocus={(event) => event.preventDefault()}\n onInteractOutside={(event) => {\n if (containerRef.current?.contains(event.target as Node) === true) event.preventDefault();\n }}\n className=\"max-h-[min(16rem,40dvh,var(--radix-popover-content-available-height))] w-[420px] max-w-[85vw] rounded-md p-0 shadow-xl sm:max-h-[min(20rem,50dvh,var(--radix-popover-content-available-height))]\"\n >\n <div className=\"min-h-0 overflow-y-auto overscroll-contain\" data-testid=\"composer-completion-options\">\n {completion.items.map((item, index) => (\n <OptionRow\n key={item.label}\n density=\"compact\"\n active={index === completion.selected}\n data-testid={`composer-completion-item-${String(index)}`}\n onMouseEnter={() => setCompletion({ ...completion, selected: index })}\n onMouseDown={(event) => {\n event.preventDefault();\n accept(completion, index);\n }}\n className=\"w-full items-baseline gap-2.5 rounded-none px-3 py-1.5\"\n >\n <span className=\"min-w-0 truncate text-base font-semibold text-doom-hi\">{item.label}</span>\n {item.detail ? (\n <OptionLabel density=\"compact\" className=\"text-sm text-doom-dim\">\n {item.detail}\n </OptionLabel>\n ) : null}\n </OptionRow>\n ))}\n </div>\n <PopoverFooter className=\"py-1\">\n <span className=\"flex items-center gap-1.5\">\n <Kbd>tab</Kbd> or <Kbd>enter</Kbd> completes · <Kbd>esc</Kbd> closes\n </span>\n </PopoverFooter>\n </PopoverContent>\n ) : null}\n <div className=\"flex min-w-0 items-start px-3 pt-3 sm:px-4 sm:pt-3.5\">\n <Textarea\n variant=\"bare\"\n ref={inputRef}\n data-testid=\"composer-input\"\n value={draft}\n disabled={!attached}\n onChange={(event) => {\n updateComposerState(sessionId, (state) => ({\n ...state,\n draft: event.target.value,\n caret: event.target.selectionStart,\n dismissedToken: null,\n }));\n }}\n onClick={(event) =>\n updateComposerState(sessionId, (state) => ({ ...state, caret: event.currentTarget.selectionStart }))\n }\n onPaste={(event) => {\n const files = Array.from(event.clipboardData.files);\n if (files.length === 0) return;\n event.preventDefault();\n void addFiles(files);\n }}\n onKeyUp={(event) =>\n updateComposerState(sessionId, (state) => ({ ...state, caret: event.currentTarget.selectionStart }))\n }\n onKeyDown={(event) => {\n // The TUI's leader key: space with nothing typed opens Leader Space.\n if (event.key === ' ' && draft === '') {\n event.preventDefault();\n openPalette();\n return;\n }\n if (completion) {\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n event.preventDefault();\n const delta = event.key === 'ArrowDown' ? 1 : -1;\n const count = completion.items.length;\n setCompletion({ ...completion, selected: (completion.selected + delta + count) % count });\n return;\n }\n if (event.key === 'Tab') {\n event.preventDefault();\n accept(completion, completion.selected);\n return;\n }\n // Enter completes, unless the token is already the whole\n // thing: completing then would only add a space, so the\n // keystroke would read as doing nothing and the reader would\n // have to press enter twice to send what they had typed.\n if (event.key === 'Enter' && !isCompletionRedundant(completion)) {\n event.preventDefault();\n accept(completion, completion.selected);\n return;\n }\n if (event.key === 'Escape') {\n event.preventDefault();\n dismissCompletion();\n return;\n }\n }\n if (event.key === 'Enter' && !event.shiftKey) {\n event.preventDefault();\n submit();\n }\n if (event.key === 'Escape' && active && !aborting) {\n event.preventDefault();\n abortRun(sessionId);\n }\n }}\n rows={1}\n placeholder={placeholder}\n className=\"min-h-12 min-w-0 flex-1 text-lg leading-relaxed\"\n />\n </div>\n {attachments.length > 0 ? (\n <div className=\"flex flex-wrap gap-1.5 px-3.5 pt-2\" data-testid=\"composer-attachments\">\n {attachments.map((attachment) => (\n <span\n key={attachment.id}\n data-testid={`composer-attachment-${attachment.id}`}\n className=\"flex max-w-full items-center gap-1.5 rounded border border-doom-border bg-doom-panel px-1.5 py-1 text-sm text-doom-dim\"\n >\n {attachment.kind === 'image' ? (\n <img src={attachment.dataUrl} alt=\"\" className=\"h-6 w-6 rounded object-cover\" />\n ) : (\n <span className=\"font-semibold text-doom-hi\">\n {attachment.kind === 'context' ? 'CTX' : attachment.kind === 'file' ? 'FILE' : 'TXT'}\n </span>\n )}\n <span className=\"max-w-40 truncate\">{attachment.name}</span>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n aria-label={`Remove ${attachment.name}`}\n className=\"text-doom-faint hover:text-doom-text\"\n onClick={() => {\n updateComposerState(sessionId, (state) => ({\n ...state,\n attachments: state.attachments.filter((item) => item.id !== attachment.id),\n attachmentError: '',\n }));\n }}\n >\n <CloseIcon className=\"h-2.5 w-2.5\" />\n </Button>\n </span>\n ))}\n </div>\n ) : null}\n {attachmentError ? (\n <p role=\"alert\" data-testid=\"composer-attachment-error\" className=\"px-3.5 pt-1.5 text-sm text-doom-red\">\n {attachmentError}\n </p>\n ) : null}\n <div className=\"flex flex-wrap items-center gap-2 px-2 pt-2 pb-2.5 sm:flex-nowrap sm:px-3 sm:pb-3\">\n <Popover\n open={menuOpen}\n onOpenChange={(next) => {\n setMenuOpen(next);\n if (next) dismissCompletion();\n }}\n >\n <PopoverTrigger asChild>\n <Button\n variant=\"ghost\"\n size=\"icon-md\"\n data-testid=\"composer-attach\"\n title=\"Add to this message\"\n aria-label=\"Add to this message\"\n aria-haspopup=\"menu\"\n aria-expanded={menuOpen}\n className=\"shrink-0 text-doom-dim\"\n >\n <PlusIcon className=\"size-4\" />\n </Button>\n </PopoverTrigger>\n {menuOpen ? (\n <PopoverContent\n side=\"top\"\n align=\"start\"\n sideOffset={8}\n data-testid=\"composer-menu\"\n className=\"w-56 rounded-md p-1.5 shadow-xl\"\n // A menu entry is a way out of the menu: whatever a plugin\n // opens, the menu has done its part. The upload row is the\n // exception, because its click opens the file chooser and\n // unmounting the input under it would strand the pick.\n onClick={(event) => {\n const clicked = event.target as Element | null;\n if (clicked?.closest('[data-testid=\"composer-attach-row\"]')) return;\n setMenuOpen(false);\n }}\n >\n {/* prefer-shared-primitive: ignore -- OptionRow is a button, and a file input may not nest inside one. */}\n <label\n aria-disabled={!attached}\n data-testid=\"composer-attach-row\"\n className={`relative overflow-hidden text-base font-medium text-doom-text hover:bg-doom-tint-blue ${optionRowVariants(\n { density: 'compact' },\n )} ${attached ? '' : 'pointer-events-none opacity-40'}`}\n >\n <PlusIcon className=\"h-3 w-3 shrink-0\" />\n <span className=\"min-w-0 flex-1 truncate\">File upload</span>\n {/* prefer-shared-primitive: ignore -- iOS needs the native file input itself to cover the visible tap target. */}\n <input\n type=\"file\"\n multiple\n disabled={!attached}\n aria-label=\"Attach files\"\n className=\"absolute inset-0 cursor-pointer opacity-0\"\n data-testid=\"composer-file-input\"\n onChange={(event) => {\n void addFiles(Array.from(event.currentTarget.files ?? []));\n event.currentTarget.value = '';\n setMenuOpen(false);\n }}\n />\n </label>\n <span className=\"contents\" data-testid=\"composer-menu-items\">\n <PluginSurface slot={HOST_SLOTS.composerMenu} sessionId={sessionId} />\n </span>\n </PopoverContent>\n ) : null}\n </Popover>\n <span className=\"min-w-0 flex-1\" />\n <span data-testid=\"composer-hint\" className=\"text-sm text-doom-dim max-md:hidden\">\n {active\n ? aborting\n ? 'Abort requested · waiting for the turn to stop'\n : 'Enter steers the run · esc aborts'\n : 'Shift + Enter for a new line'}\n </span>\n {active ? abortAction : null}\n <span className=\"contents\" data-testid=\"composer-actions\">\n <PluginSurface slot={HOST_SLOTS.composerActions} sessionId={sessionId} />\n </span>\n <Button\n variant=\"outline\"\n size=\"lg\"\n data-testid=\"composer-queue\"\n onClick={queue}\n disabled={\n !attached ||\n pendingSubmission ||\n pendingAttachments > 0 ||\n (!draft.trim() && attachments.length === 0)\n }\n title=\"Deliver after the current run settles\"\n >\n Queue\n </Button>\n <Button\n variant=\"primary\"\n size=\"lg\"\n data-testid=\"composer-send\"\n onClick={submit}\n disabled={\n !attached ||\n pendingSubmission ||\n pendingAttachments > 0 ||\n (!draft.trim() && attachments.length === 0)\n }\n className=\"gap-2 px-3 disabled:opacity-60 sm:px-4\"\n >\n <SendIcon aria-hidden className=\"size-4\" />\n {active ? 'Steer' : 'Send'}\n </Button>\n </div>\n </div>\n </PopoverAnchor>\n </Popover>\n </div>\n );\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { ComposerSessionState } from "../../stores/composerStore.mjs";
|
|
2
|
+
import { TransientTab } from "@agimon-ai/po-core/web";
|
|
3
|
+
//#region src/web/features/session/Composer.d.ts
|
|
4
|
+
/**
|
|
5
|
+
* Reads picked, pasted or dropped files into new attachments, numbered from
|
|
6
|
+
* `current.nextAttachmentId` and budgeted after the ones already staged.
|
|
7
|
+
*/
|
|
8
|
+
export declare function readComposerFiles(sessionId: string, files: File[], current: Pick<ComposerSessionState, 'attachments' | 'nextAttachmentId'>): Promise<Pick<ComposerSessionState, 'attachments' | 'attachmentError'>>;
|
|
9
|
+
/**
|
|
10
|
+
* Stages files on a session's composer. Reading and uploading are async, so
|
|
11
|
+
* the batch reserves its ids and marks itself pending up front, then appends
|
|
12
|
+
* to whatever the composer holds by the time it finishes: chips removed, a
|
|
13
|
+
* message sent, or another batch staged meanwhile all stay as they are, and
|
|
14
|
+
* the count and total budgets are checked again against that latest state.
|
|
15
|
+
*/
|
|
16
|
+
export declare function addComposerFiles(sessionId: string, files: File[]): Promise<void>;
|
|
17
|
+
export declare function Composer({ composerContext }?: {
|
|
18
|
+
composerContext?: TransientTab['composerContext'];
|
|
19
|
+
}): import("react").JSX.Element;
|
|
20
|
+
//#endregion
|
|
21
|
+
//# sourceMappingURL=Composer.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Composer.d.mts","names":[],"sources":["../../../../src/web/features/session/Composer.tsx"],"mappings":";;;;;;;wBA0JsB,kBACpB,mBACA,OAAO,QACP,SAAS,KAAK,4DACb,QAAQ,KAAK;;;;;;;;wBA6FM,iBAAiB,mBAAmB,OAAO,SAAS;wBA0E1D,WAAW;EAAqB,kBAAkB;oBAAsC,IAAA"}
|