@agimon-ai/po-web-dashboard 0.0.0-alpha.40 → 0.0.0-alpha.41

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.
Files changed (51) hide show
  1. package/dist/index.cjs +3 -1
  2. package/dist/index.d.mts +3 -3
  3. package/dist/index.mjs +3 -3
  4. package/dist/views.cjs +1 -0
  5. package/dist/views.d.mts +2 -2
  6. package/dist/views.mjs +2 -2
  7. package/dist/web/features/activity/ActivityDock.cjs +43 -29
  8. package/dist/web/features/activity/ActivityDock.cjs.map +1 -1
  9. package/dist/web/features/activity/ActivityDock.d.mts +14 -2
  10. package/dist/web/features/activity/ActivityDock.d.mts.map +1 -1
  11. package/dist/web/features/activity/ActivityDock.mjs +46 -33
  12. package/dist/web/features/activity/ActivityDock.mjs.map +1 -1
  13. package/dist/web/features/activity/DockTabs.cjs +52 -16
  14. package/dist/web/features/activity/DockTabs.cjs.map +1 -1
  15. package/dist/web/features/activity/DockTabs.d.mts +10 -1
  16. package/dist/web/features/activity/DockTabs.d.mts.map +1 -1
  17. package/dist/web/features/activity/DockTabs.mjs +54 -18
  18. package/dist/web/features/activity/DockTabs.mjs.map +1 -1
  19. package/dist/web/features/selection/SelectionBar.cjs +1 -1
  20. package/dist/web/features/selection/SelectionBar.cjs.map +1 -1
  21. package/dist/web/features/selection/SelectionBar.mjs +1 -1
  22. package/dist/web/features/selection/SelectionBar.mjs.map +1 -1
  23. package/dist/web/features/session/Composer.cjs +2 -1
  24. package/dist/web/features/session/Composer.cjs.map +1 -1
  25. package/dist/web/features/session/Composer.d.mts.map +1 -1
  26. package/dist/web/features/session/Composer.mjs +2 -1
  27. package/dist/web/features/session/Composer.mjs.map +1 -1
  28. package/dist/web/features/session/MentionPreviews.cjs +32 -0
  29. package/dist/web/features/session/MentionPreviews.cjs.map +1 -1
  30. package/dist/web/features/session/MentionPreviews.d.mts.map +1 -1
  31. package/dist/web/features/session/MentionPreviews.mjs +33 -1
  32. package/dist/web/features/session/MentionPreviews.mjs.map +1 -1
  33. package/dist/web/lib/composerCompletion.cjs +11 -4
  34. package/dist/web/lib/composerCompletion.cjs.map +1 -1
  35. package/dist/web/lib/composerCompletion.d.mts +8 -2
  36. package/dist/web/lib/composerCompletion.d.mts.map +1 -1
  37. package/dist/web/lib/composerCompletion.mjs +11 -4
  38. package/dist/web/lib/composerCompletion.mjs.map +1 -1
  39. package/dist/web/lib/composition.cjs +20 -17
  40. package/dist/web/lib/composition.cjs.map +1 -1
  41. package/dist/web/lib/composition.d.mts +5 -15
  42. package/dist/web/lib/composition.d.mts.map +1 -1
  43. package/dist/web/lib/composition.mjs +19 -17
  44. package/dist/web/lib/composition.mjs.map +1 -1
  45. package/dist/web/stores/uiStore.cjs +25 -10
  46. package/dist/web/stores/uiStore.cjs.map +1 -1
  47. package/dist/web/stores/uiStore.d.mts +10 -3
  48. package/dist/web/stores/uiStore.d.mts.map +1 -1
  49. package/dist/web/stores/uiStore.mjs +25 -11
  50. package/dist/web/stores/uiStore.mjs.map +1 -1
  51. package/package.json +5 -5
package/dist/index.cjs CHANGED
@@ -148,7 +148,6 @@ exports.assertionFor = require_webauthnClient.assertionFor;
148
148
  exports.attachComposerCapture = require_composerStore.attachComposerCapture;
149
149
  exports.attachComposerContext = require_composerStore.attachComposerContext;
150
150
  exports.attachmentPrompt = require_composerSubmissionStore.attachmentPrompt;
151
- exports.autoSelectedDockFace = require_composition.autoSelectedDockFace;
152
151
  exports.availableThemes = require_themeStore.availableThemes;
153
152
  exports.beginSessionReplay = require_sessionStore.beginSessionReplay;
154
153
  exports.beginSessionTransfer = require_sessionsStore.beginSessionTransfer;
@@ -226,6 +225,7 @@ exports.disconnectCaptures = require_captureStore.disconnectCaptures;
226
225
  exports.dispatchChannelFrame = require_pluginRegistry.dispatchChannelFrame;
227
226
  exports.dispatchHeldSessionChannel = require_sessionChannelHoldsStore.dispatchHeldSessionChannel;
228
227
  exports.disposeModelContextAdapter = require_modelContextAdapter.disposeModelContextAdapter;
228
+ exports.dockTabFor = require_uiStore.dockTabFor;
229
229
  exports.dropComposerState = require_composerStore.dropComposerState;
230
230
  exports.dropPluginSessionData = require_pluginRegistry.dropPluginSessionData;
231
231
  exports.dropSessionStore = require_sessionStore.dropSessionStore;
@@ -243,6 +243,7 @@ exports.fetchRemoteState = require_remoteApi.fetchRemoteState;
243
243
  exports.fetchWithStepUp = require_stepUp.fetchWithStepUp;
244
244
  exports.fileCompletions = require_composerCompletion.fileCompletions;
245
245
  exports.fileLinkFor = require_composition.fileLinkFor;
246
+ exports.fileLinkMentions = require_composition.fileLinkMentions;
246
247
  exports.fileTabForPath = require_composition.fileTabForPath;
247
248
  exports.findTransientTab = require_transientTabsStore.findTransientTab;
248
249
  exports.flushBrowserTelemetry = require_browserTelemetry.flushBrowserTelemetry;
@@ -553,6 +554,7 @@ exports.useComposerState = require_composerStore.useComposerState;
553
554
  exports.useDashboardRoute = require_dashboardRoute.useDashboardRoute;
554
555
  exports.useDashboardState = require_dashboardStateStore.useDashboardState;
555
556
  exports.useDialogDraft = require_dialogDraftStore.useDialogDraft;
557
+ exports.useDockFaceBadges = require_composition.useDockFaceBadges;
556
558
  exports.useDockFaces = require_composition.useDockFaces;
557
559
  exports.useFileLinks = require_composition.useFileLinks;
558
560
  exports.useHasOlderHistory = require_sessionStore.useHasOlderHistory;
package/dist/index.d.mts CHANGED
@@ -20,7 +20,7 @@ import { createPagedTranscript } from "./web/stores/pagedTranscriptStore.mjs";
20
20
  import { dispatchHeldSessionChannel, heldSessionChannels, holdSessionChannels } from "./web/stores/sessionChannelHoldsStore.mjs";
21
21
  import { ThreadTranscriptReader, applyThreadTranscriptFrame, bindThreadReader, dropThreads, heldThreads, resetThreads, resubscribeThreads, subscribeThread, threadStoreKey, unsubscribeThread } from "./web/stores/threadStore.mjs";
22
22
  import { WorkspacesState, applyWorkspaceRemoved, applyWorkspaceUpsert, applyWorkspacesSnapshot, resetWorkspaces, selectWorkspace, workspacesStore } from "./web/stores/workspacesStore.mjs";
23
- import { ActivityGroup, DockAutoSelectKeys, FileLinkResolver, MinorMode, MinorModeAvailability, MinorModeSource, PACKAGED_MINOR_MODES, PACKAGED_SELECTION_AXES, SelectionAxis, activityGroups, autoSelectedDockFace, bindFileLinkModes, fileLinkFor, fileTabForPath, minorModes, selectionAxes, subscribeActivitySources, useActivityGroups, useDockFaces, useFileLinks } from "./web/lib/composition.mjs";
23
+ import { ActivityGroup, FileLinkResolver, MinorMode, MinorModeAvailability, MinorModeSource, PACKAGED_MINOR_MODES, PACKAGED_SELECTION_AXES, SelectionAxis, activityGroups, bindFileLinkModes, fileLinkFor, fileLinkMentions, fileTabForPath, minorModes, selectionAxes, subscribeActivitySources, useActivityGroups, useDockFaceBadges, useDockFaces, useFileLinks } from "./web/lib/composition.mjs";
24
24
  import { Selection, ansiSegments, emptySelection, parseSelection, stripAnsi } from "./web/lib/statusLine.mjs";
25
25
  import { MenuClaim, MenuKind, MenuState, claimDialogMenu, clearPendingMenu, menuStore, pendingMenuFor, releaseDialogMenu, resetMenuStore, setPendingMenu } from "./web/stores/menuStore.mjs";
26
26
  import { ContextGroup, ContextGroupKind, ContextItem, ContextItemSource, ContextOwner, contextGroups, inactiveTotal, ownerLabel, ownersOf, projectedGroups, totalTokens } from "./web/lib/contextComposition.mjs";
@@ -72,7 +72,7 @@ import { PasskeySupportView, RemoteAccessState, RemoteStep, addPasskey, approveD
72
72
  import { TemplateConfiguration, configuredTemplate, ensureTemplateConfiguration, refreshTemplateConfiguration, saveTemplateDefault, templateStore, useTemplateConfiguration } from "./web/stores/templateStore.mjs";
73
73
  import { ThemeState, applyStoredTheme, availableThemes, selectTheme, themeStore } from "./web/stores/themeStore.mjs";
74
74
  import { ToolPromptState, markToolPromptFailed, resetToolPromptStore, toolPromptStore } from "./web/stores/toolPromptStore.mjs";
75
- import { DockTab, UiState, setDockOpen, setDockTab, uiStore } from "./web/stores/uiStore.mjs";
75
+ import { DockTab, UiState, dockTabFor, setDockOpen, setDockTab, uiStore } from "./web/stores/uiStore.mjs";
76
76
  import { useOpenTab } from "./web/stores/useOpenTab.mjs";
77
77
  import { usePluginSlotProps } from "./web/stores/usePluginSlotProps.mjs";
78
78
  import { useToolPrompt } from "./web/stores/useToolPrompt.mjs";
@@ -81,4 +81,4 @@ import { WorkspaceAdmissionDraft, admitDashboardWorkspace, resetWorkspaceAdmissi
81
81
  import { EMPTY_SETTINGS_DRAFT, SettingsDraftState, SettingsDraftTarget, discardSettingsDraft, loadSettingsDraft, saveSettingsDraft, setSettingsDraft, settingsDraftKey, settingsDraftStore } from "./web/stores/settingsDraftStore.mjs";
82
82
  import { dashboardStateFor, useDashboardState } from "./web/stores/dashboardStateStore.mjs";
83
83
  import { DashboardRendererProvider, DashboardRenderers } from "./web/lib/dashboardRenderers.mjs";
84
- export { ActivityGroup, AgentInfo, AssistantEntry, AttachPhase, BUILTIN_COMMANDS, BrowserNotificationDeliveryStatus, BrowserNotificationPermissionStatus, BrowserPerformanceEvent, BrowserPerformanceEventName, CommandInfo, CompletionItem, CompletionKind, CompletionTrigger, ComposerAttachment, ComposerContextAttachment, ComposerFileAttachment, ComposerImageAttachment, ComposerSessionState, ComposerTextAttachment, ContextGroup, ContextGroupKind, ContextItem, ContextItemSource, ContextOwner, CreateSessionResult, DEFAULT_REPOSITORY_SETTINGS_SECTION, DEFAULT_SETTINGS_SECTION, DashboardRendererProvider, type DashboardRenderers, DashboardRoute, DevProxyState, DialogDraft, DialogMethod, DialogRequest, DockAutoSelectKeys, DockTab, EMPTY_NEW_SESSION_DRAFT, EMPTY_SETTINGS_DRAFT, EditorTextRequest, EntryKind, FetchItemDetailResult, FileLinkResolver, FileMention, GroupUnit, HOST_SLOTS, HistoryPage, ImageSettingsResult, InputSender, InstallDiagnostic, InstallDiagnosticKind, InstalledContextAction, InstalledHomeContribution, InstalledNativeTemplate, InstalledRepositorySettingsPanel, InstalledSettingsPanel, InstalledUserMessageAction, InstalledWebTemplate, IntercomEntry, LEGACY_WORKSPACE_ID, LeaderConflict, LeaderGroup, LeaderOption, LivePushStatus, LoginFlowResult, LogoutResult, MAX_COMPLETION_ITEMS, MAX_COMPOSER_ATTACHMENTS, MAX_COMPOSER_IMAGE_BYTES, MAX_COMPOSER_TEXT_BYTES, MAX_COMPOSER_TOTAL_IMAGE_BYTES, MAX_COMPOSER_TOTAL_TEXT_BYTES, MAX_COMPOSER_UPLOAD_BYTES, MenuClaim, MenuKind, MenuState, MinorMode, MinorModeAvailability, MinorModeSource, ModelChoice, NativeTemplateCatalog, NewSessionDraft, NewSessionState, NoticeEntry, PACKAGED_MINOR_MODES, PACKAGED_SELECTION_AXES, PairingResult, PaletteState, PasskeyOutcome, PasskeySupportView, PlannedWritesInput, ProfileIdentity, ProvidersResult, QueuedEntry, RailDialogState, RailRestartState, RailSessionInput, ReadConfigResult, ReadRepositorySettingsResult, ReduceSessionOptions, RemoteAccessState, RemoteStep, RemoveWorkspaceResult, ResolvedFill, RestartSessionResult, ResumeDraft, ResumeSessionResult, ResumeTarget, ReviveSessionResult, RpcImage, STEP_UP_HEADER_NAME, Selection, SelectionAxis, SessionAsset, SessionGroupsResult, SessionHistoryResult, SessionMcpResult, SessionMcpViewState, SessionMeta, SessionRailModelInput, SessionSocket, SessionSocketHandlers, SessionState, SessionStats, SessionsState, SettingsDraftState, SettingsDraftTarget, SettingsSection, SettingsWorkspace, SettledEntry, SingleUnit, StateResult, StatusLineInput, StopSessionResult, StoredSessionAttachment, TRIGGER_CHARS, TargetResult, TargetsResult, TemplateConfiguration, ThemeState, ThreadTranscriptReader, TimelineEntry, TimelineUnit, ToolEntry, ToolPromptClaim, ToolPromptInput, ToolPromptState, TransientTabActions, UPDATE_REQUIRED_REASON, UiState, UserEntry, UserImage, WebPluginCompositionPhase, WebPluginCompositionState, WebPluginMountState, WebPluginRegistry, WebTemplateCatalog, WebTemplateDecision, WebTemplateDiagnostic, WorkspaceAdmissionDraft, WorkspaceResult, WorkspaceSandboxRequest, WorkspacesResult, WorkspacesState, WriteConfigResult, abbreviateCwd, abortCommand, abortRun, acquireModelContext, activateWebPluginHost, activateWebPluginSession, activateWebPluginWorkspace, activeSessionId, activityGroupSlot, activityGroups, addDevProxyTarget, addPasskey, admitDashboardWorkspace, admitWorkspace, ansiSegments, answerDialogConfirm, answerDialogValue, answerLogin, appendComposerDraft, appendComposerQuote, appendQueued, appendUserPrompt, applyCaptureFrame, applyHistoryPage, applyProtocolQueue, applyProtocolTranscript, applySelectionAnswer, applySessionBacklog, applySessionFrame, applySessionLifecycle, applySessionRemoved, applySessionUpsert, applySessionsSnapshot, applyStoredTheme, applyThreadFrame, applyThreadTranscriptFrame, applyWorkspaceRemoved, applyWorkspaceUpsert, applyWorkspacesSnapshot, approveDevice, approvePairing, asWorkspace, assertionFor, attachComposerCapture, attachComposerContext, attachmentPrompt, autoSelectedDockFace, availableThemes, beginSessionReplay, beginSessionTransfer, bindBundledNativeTemplates, bindBundledWebTemplates, bindDashboardTranscriptWatcher, bindFileLinkModes, bindHistoryReader, bindHostTransport, bindSessionActivityRenderer, bindSessionFileLinkModes, bindSessionProtocol, bindSessionTranscriptRenderer, bindSessionWebWorkspace, bindThreadReader, bindThreadRenderer, bindTransport, bindWebPluginCompositions, browserNotificationPermission, browserReadyDuration, buildRailWorkspaces, builtinCommandFrame, canSaveSettings, cancelDialog, cancelLogin, claimDialogMenu, clearComposerState, clearDialog, clearPendingMenu, clearQueueCommand, clearQueuedEntries, clearQueuedMessages, closeNewSession, closePalette, closeRemoteDialog, closeResumeDialog, closeTransientTab, collectNativeTemplates, collectWebTemplates, commandCompletions, compactCommand, completeSessionTransfer, composerStore, composerSubmissionStore, configuredTemplate, contextGroups, createDashboardTransport, createDevProxyTarget, createPagedTranscript, createPlainSession, createProtocolHubSocket, createProtocolLink, createSession, createSessionMcpClient, createToolCompletionTabs, createWebPluginRegistry, createWorkspaceSession, dashboardRouteFrom, dashboardStateFor, deleteDevProxyTarget, deleteQueuedMessage, deleteSessionGroup, deliverBrowserNotification, denyDevice, denyPairing, devProxyStore, dialogCancelled, dialogConfirmed, dialogDraftStore, dialogValue, disableLivePush, disableRemoteAccess, discardSettingsDraft, disconnectCaptures, dispatchChannelFrame, dispatchHeldSessionChannel, disposeModelContextAdapter, dropComposerState, dropPluginSessionData, dropSessionStore, dropThreads, dropTransientTabs, emptySelection, enableLivePush, enableRemoteAccess, endSessionReplay, enqueueAutomaticCommand, ensureTemplateConfiguration, fetchContextItemDetail, fetchDevProxyTargets, fetchRemoteState, fetchWithStepUp, fileCompletions, fileLinkFor, fileTabForPath, findTransientTab, flushBrowserTelemetry, focusPrompt, focusWorkspaceWebPlugins, followUpCommand, formatRunDuration, getAvailableModelsCommand, getAvailableThinkingLevelsCommand, getCommandsCommand, getSessionStatsCommand, getStateCommand, groupSummary, groupTone, hasSessionProtocol, heldSessionChannels, heldThreads, holdSessionChannels, imagesFromContent, inactiveTotal, initialSessionState, inlineTextBytes, installBrowserErrorReporting, installGlobalWebPlugins, installSessionWebPlugins, installWebPlugins, installWorkspaceWebPlugins, installedWebPlugins, invokeServerMethod, isDesktopClient, isSessionMcpActivity, isSupportedImageMimeType, leaderConflicts, leaderGroup, listDirectory, listPoFolders, listProviders, listSessionHistory, listSessionMcpClients, listSessions, listSettingsModels, listSettingsRepositories, listWorkspaceHistory, listWorkspaces, livePushStatus, loadModelChoices, loadSessionAsset, loadSessionAvatar, loadSettingsDraft, localHostId, logoutProvider, markSocketClosed, markToolPromptFailed, markUpdateRequired, mediaKindFor, menuStore, mergeScopedPlugins, minorModes, mintPairingCode, nativeTemplateCatalog, newPairingCode, newSessionDraftStore, newSessionStore, noSessions, notifyHubConnected, onCaptureStatus, onComposerSubmitted, onHubConnected, onSealedSignInRequired, openNewSession, openPalette, openRemoteDialog, openResumeDialog, openTransientTab, ownerLabel, ownersOf, paletteCommands, paletteStore, parseFileMentions, parseHostKey, parseSelection, passkeysAvailable, pendingCaptureSessions, pendingMenuFor, pendingSetupView, personaInitials, plannedSettingsWrites, pluginActivityGroups, pluginContextActions, pluginDockFaces, pluginFileLinks, pluginHomeContributions, pluginLeaderBindings, pluginMinorModes, pluginRepositorySettingsPanels, pluginSelectionAxes, pluginSessionContext, pluginSettingsPanels, pluginSettingsSections, pluginSlotProps, pluginToolRenderer, pluginUserMessageActions, pluginsAtScope, prependHistory, projectedGroups, promoteQueuedCommand, promoteQueuedMessage, promptCommand, protocolSocketUrl, publishComposerSubmission, qrMatrix, qualifyHostId, qualifyHostKey, queueFollowUp, queueFollowUpWithAck, railDialogStore, railRestartStore, readDormantTranscriptPage, readImageSettings, readLogin, readRepositorySettings, readSessionMcpActivity, readSessionMcpConfig, readSettingsConfig, recordBrowserError, recordBrowserPerformance, reduceSession, refreshDevProxyTargets, refreshPasskeys, refreshRemoteState, refreshSessionFacts, refreshSessionSelection, refreshSessionStats, refreshTemplateConfiguration, refreshWebPluginCompositions, registerPasskey, registerPromptInput, releaseDialogMenu, releaseProtocolTranscript, releaseSessionActivityRenderer, releaseSessionTranscriptRenderer, releaseThreadRenderer, releaseTransport, reloadWebTemplateDecision, rememberHostChannelKey, rememberedHostChannelKey, remoteAccessStore, removeDevProxyTarget, removeHostWebPlugins, removeQueuedCommand, removeQueuedEntry, removeSessionMcpSetup, removeSessionWebPlugins, removeWorkspace, removeWorkspaceWebPlugins, renameSession, renameSessionGroup, renderSessionActivity, renderSessionTranscript, renderThread, replaceQueuedEntries, requestBrowserNotificationPermission, requestLatestHistory, requestNewerHistory, requestOlderHistory, requestSessionProtocolFrame, resetComposerStore, resetDevProxyStore, resetMenuStore, resetNewSessionStore, resetRailDialogStore, resetSealedSessions, resetSessionStore, resetSessionStores, resetSessions, resetThreads, resetToolPromptStore, resetTransientTabs, resetWebPlugins, resetWorkspaceAdmission, resetWorkspaces, resolveNativeTemplate, resolveParentId, resolveWebTemplate, restartDashboardSession, restartSession, restoreComposerDrafts, restoreLivePushRegistration, restoreSealedSession, resubscribeThreads, resumeDashboardSession, resumeDraftStore, resumeQueueCommand, resumeQueuedMessages, resumeSession, resumeWorkspaceSession, retryWebPluginCompositions, reviveSession, revokeDevice, revokePairedDevice, revokeSessionMcpClient, revokeTrustedDevice, revokeTrustedNativeDevice, rewindCommand, rewindToMessage, runCommand, runningCount, saveComposerDrafts, saveRemoteSettings, saveSettingsDraft, saveTemplateDefault, sealedHttpSession, sealedProtocolSession, sealedSession, searchDirectories, searchSessionFiles, seedHistoryCursor, selectFastMode, selectModel, selectTheme, selectThinkingLevel, selectWorkspace, selectionAxes, selectionStatuses, sendFrame, sendFrameWithAck, sendHubFrame, sendSessionProtocolFrame, sessionMinorModes, sessionStatusLine, sessionStoreFor, sessionToolRenderer, sessionWebPluginsInstalled, sessionsStore, setActiveSession, setAgentLock, setDockOpen, setDockTab, setHasNewerHistory, setModelCommand, setNewSessionName, setPalettePath, setPendingMenu, setSessionGroups, setSessionNameCommand, setSessionStreamed, setSettingsDraft, setThinkingLevelCommand, setTransientTabSession, setWebPluginLoadDiagnostics, setWorkspaceSandbox, settingsDraftKey, settingsDraftStore, settingsKeyOf, settingsLockedReason, settingsSection, settingsSections, showRemoteOptions, signInWithPasskey, slotFills, splitHostId, startLogin, startPluginDefinitions, startWebPlugins, steerCommand, stopSession, streamedSessions, stripAnsi, submitCapture, submitComposerDraft, submitMessage, submitMessageWithAck, subscribeActivitySources, subscribeThread, subscribeWebPluginRegistry, summariseArgs, tabComposerContext, templateStore, textFromContent, themeStore, threadStoreKey, timelineUnits, toQueuedEntries, toTimelineEntries, togglePalette, toolMessageProps, toolPromptClaim, toolPromptStore, totalTokens, transientTabsOf, transientTabsStore, transportForHost, triggerTokenAt, turnRemoteAccessOff, turnRemoteAccessOn, uiStore, unsubscribeThread, updateComposerState, updateDialogDraft, updateRemoteSettings, updateResumeDraft, updateWorkspaceAdmission, uploadSessionAttachment, useActiveSession, useActiveSessionMeta, useActivityGroups, useComposerState, useDashboardRoute, useDashboardState, useDialogDraft, useDockFaces, useFileLinks, useHasOlderHistory, useNoSessions, useOpenTab, usePluginSlotProps, useSessionMcp, useTemplateConfiguration, useToolPrompt, useTransientTabs, useWebPluginRegistry, validateComposerCapture, waitForSession, watchDashboardTranscript, watchHubThread, webPluginCompositionStore, webPluginDiagnostics, webPluginMountState, webPluginRegistryForHost, webPluginRegistryRevision, webPluginsInstalled, webTabs, webTemplateCatalog, workspaceAdmissionStore, workspaceName, workspaceSlotFills, workspacesStore, writeImageSettings, writeRepositorySelection, writeSettingsValue };
84
+ export { ActivityGroup, AgentInfo, AssistantEntry, AttachPhase, BUILTIN_COMMANDS, BrowserNotificationDeliveryStatus, BrowserNotificationPermissionStatus, BrowserPerformanceEvent, BrowserPerformanceEventName, CommandInfo, CompletionItem, CompletionKind, CompletionTrigger, ComposerAttachment, ComposerContextAttachment, ComposerFileAttachment, ComposerImageAttachment, ComposerSessionState, ComposerTextAttachment, ContextGroup, ContextGroupKind, ContextItem, ContextItemSource, ContextOwner, CreateSessionResult, DEFAULT_REPOSITORY_SETTINGS_SECTION, DEFAULT_SETTINGS_SECTION, DashboardRendererProvider, type DashboardRenderers, DashboardRoute, DevProxyState, DialogDraft, DialogMethod, DialogRequest, DockTab, EMPTY_NEW_SESSION_DRAFT, EMPTY_SETTINGS_DRAFT, EditorTextRequest, EntryKind, FetchItemDetailResult, FileLinkResolver, FileMention, GroupUnit, HOST_SLOTS, HistoryPage, ImageSettingsResult, InputSender, InstallDiagnostic, InstallDiagnosticKind, InstalledContextAction, InstalledHomeContribution, InstalledNativeTemplate, InstalledRepositorySettingsPanel, InstalledSettingsPanel, InstalledUserMessageAction, InstalledWebTemplate, IntercomEntry, LEGACY_WORKSPACE_ID, LeaderConflict, LeaderGroup, LeaderOption, LivePushStatus, LoginFlowResult, LogoutResult, MAX_COMPLETION_ITEMS, MAX_COMPOSER_ATTACHMENTS, MAX_COMPOSER_IMAGE_BYTES, MAX_COMPOSER_TEXT_BYTES, MAX_COMPOSER_TOTAL_IMAGE_BYTES, MAX_COMPOSER_TOTAL_TEXT_BYTES, MAX_COMPOSER_UPLOAD_BYTES, MenuClaim, MenuKind, MenuState, MinorMode, MinorModeAvailability, MinorModeSource, ModelChoice, NativeTemplateCatalog, NewSessionDraft, NewSessionState, NoticeEntry, PACKAGED_MINOR_MODES, PACKAGED_SELECTION_AXES, PairingResult, PaletteState, PasskeyOutcome, PasskeySupportView, PlannedWritesInput, ProfileIdentity, ProvidersResult, QueuedEntry, RailDialogState, RailRestartState, RailSessionInput, ReadConfigResult, ReadRepositorySettingsResult, ReduceSessionOptions, RemoteAccessState, RemoteStep, RemoveWorkspaceResult, ResolvedFill, RestartSessionResult, ResumeDraft, ResumeSessionResult, ResumeTarget, ReviveSessionResult, RpcImage, STEP_UP_HEADER_NAME, Selection, SelectionAxis, SessionAsset, SessionGroupsResult, SessionHistoryResult, SessionMcpResult, SessionMcpViewState, SessionMeta, SessionRailModelInput, SessionSocket, SessionSocketHandlers, SessionState, SessionStats, SessionsState, SettingsDraftState, SettingsDraftTarget, SettingsSection, SettingsWorkspace, SettledEntry, SingleUnit, StateResult, StatusLineInput, StopSessionResult, StoredSessionAttachment, TRIGGER_CHARS, TargetResult, TargetsResult, TemplateConfiguration, ThemeState, ThreadTranscriptReader, TimelineEntry, TimelineUnit, ToolEntry, ToolPromptClaim, ToolPromptInput, ToolPromptState, TransientTabActions, UPDATE_REQUIRED_REASON, UiState, UserEntry, UserImage, WebPluginCompositionPhase, WebPluginCompositionState, WebPluginMountState, WebPluginRegistry, WebTemplateCatalog, WebTemplateDecision, WebTemplateDiagnostic, WorkspaceAdmissionDraft, WorkspaceResult, WorkspaceSandboxRequest, WorkspacesResult, WorkspacesState, WriteConfigResult, abbreviateCwd, abortCommand, abortRun, acquireModelContext, activateWebPluginHost, activateWebPluginSession, activateWebPluginWorkspace, activeSessionId, activityGroupSlot, activityGroups, addDevProxyTarget, addPasskey, admitDashboardWorkspace, admitWorkspace, ansiSegments, answerDialogConfirm, answerDialogValue, answerLogin, appendComposerDraft, appendComposerQuote, appendQueued, appendUserPrompt, applyCaptureFrame, applyHistoryPage, applyProtocolQueue, applyProtocolTranscript, applySelectionAnswer, applySessionBacklog, applySessionFrame, applySessionLifecycle, applySessionRemoved, applySessionUpsert, applySessionsSnapshot, applyStoredTheme, applyThreadFrame, applyThreadTranscriptFrame, applyWorkspaceRemoved, applyWorkspaceUpsert, applyWorkspacesSnapshot, approveDevice, approvePairing, asWorkspace, assertionFor, attachComposerCapture, attachComposerContext, attachmentPrompt, availableThemes, beginSessionReplay, beginSessionTransfer, bindBundledNativeTemplates, bindBundledWebTemplates, bindDashboardTranscriptWatcher, bindFileLinkModes, bindHistoryReader, bindHostTransport, bindSessionActivityRenderer, bindSessionFileLinkModes, bindSessionProtocol, bindSessionTranscriptRenderer, bindSessionWebWorkspace, bindThreadReader, bindThreadRenderer, bindTransport, bindWebPluginCompositions, browserNotificationPermission, browserReadyDuration, buildRailWorkspaces, builtinCommandFrame, canSaveSettings, cancelDialog, cancelLogin, claimDialogMenu, clearComposerState, clearDialog, clearPendingMenu, clearQueueCommand, clearQueuedEntries, clearQueuedMessages, closeNewSession, closePalette, closeRemoteDialog, closeResumeDialog, closeTransientTab, collectNativeTemplates, collectWebTemplates, commandCompletions, compactCommand, completeSessionTransfer, composerStore, composerSubmissionStore, configuredTemplate, contextGroups, createDashboardTransport, createDevProxyTarget, createPagedTranscript, createPlainSession, createProtocolHubSocket, createProtocolLink, createSession, createSessionMcpClient, createToolCompletionTabs, createWebPluginRegistry, createWorkspaceSession, dashboardRouteFrom, dashboardStateFor, deleteDevProxyTarget, deleteQueuedMessage, deleteSessionGroup, deliverBrowserNotification, denyDevice, denyPairing, devProxyStore, dialogCancelled, dialogConfirmed, dialogDraftStore, dialogValue, disableLivePush, disableRemoteAccess, discardSettingsDraft, disconnectCaptures, dispatchChannelFrame, dispatchHeldSessionChannel, disposeModelContextAdapter, dockTabFor, dropComposerState, dropPluginSessionData, dropSessionStore, dropThreads, dropTransientTabs, emptySelection, enableLivePush, enableRemoteAccess, endSessionReplay, enqueueAutomaticCommand, ensureTemplateConfiguration, fetchContextItemDetail, fetchDevProxyTargets, fetchRemoteState, fetchWithStepUp, fileCompletions, fileLinkFor, fileLinkMentions, fileTabForPath, findTransientTab, flushBrowserTelemetry, focusPrompt, focusWorkspaceWebPlugins, followUpCommand, formatRunDuration, getAvailableModelsCommand, getAvailableThinkingLevelsCommand, getCommandsCommand, getSessionStatsCommand, getStateCommand, groupSummary, groupTone, hasSessionProtocol, heldSessionChannels, heldThreads, holdSessionChannels, imagesFromContent, inactiveTotal, initialSessionState, inlineTextBytes, installBrowserErrorReporting, installGlobalWebPlugins, installSessionWebPlugins, installWebPlugins, installWorkspaceWebPlugins, installedWebPlugins, invokeServerMethod, isDesktopClient, isSessionMcpActivity, isSupportedImageMimeType, leaderConflicts, leaderGroup, listDirectory, listPoFolders, listProviders, listSessionHistory, listSessionMcpClients, listSessions, listSettingsModels, listSettingsRepositories, listWorkspaceHistory, listWorkspaces, livePushStatus, loadModelChoices, loadSessionAsset, loadSessionAvatar, loadSettingsDraft, localHostId, logoutProvider, markSocketClosed, markToolPromptFailed, markUpdateRequired, mediaKindFor, menuStore, mergeScopedPlugins, minorModes, mintPairingCode, nativeTemplateCatalog, newPairingCode, newSessionDraftStore, newSessionStore, noSessions, notifyHubConnected, onCaptureStatus, onComposerSubmitted, onHubConnected, onSealedSignInRequired, openNewSession, openPalette, openRemoteDialog, openResumeDialog, openTransientTab, ownerLabel, ownersOf, paletteCommands, paletteStore, parseFileMentions, parseHostKey, parseSelection, passkeysAvailable, pendingCaptureSessions, pendingMenuFor, pendingSetupView, personaInitials, plannedSettingsWrites, pluginActivityGroups, pluginContextActions, pluginDockFaces, pluginFileLinks, pluginHomeContributions, pluginLeaderBindings, pluginMinorModes, pluginRepositorySettingsPanels, pluginSelectionAxes, pluginSessionContext, pluginSettingsPanels, pluginSettingsSections, pluginSlotProps, pluginToolRenderer, pluginUserMessageActions, pluginsAtScope, prependHistory, projectedGroups, promoteQueuedCommand, promoteQueuedMessage, promptCommand, protocolSocketUrl, publishComposerSubmission, qrMatrix, qualifyHostId, qualifyHostKey, queueFollowUp, queueFollowUpWithAck, railDialogStore, railRestartStore, readDormantTranscriptPage, readImageSettings, readLogin, readRepositorySettings, readSessionMcpActivity, readSessionMcpConfig, readSettingsConfig, recordBrowserError, recordBrowserPerformance, reduceSession, refreshDevProxyTargets, refreshPasskeys, refreshRemoteState, refreshSessionFacts, refreshSessionSelection, refreshSessionStats, refreshTemplateConfiguration, refreshWebPluginCompositions, registerPasskey, registerPromptInput, releaseDialogMenu, releaseProtocolTranscript, releaseSessionActivityRenderer, releaseSessionTranscriptRenderer, releaseThreadRenderer, releaseTransport, reloadWebTemplateDecision, rememberHostChannelKey, rememberedHostChannelKey, remoteAccessStore, removeDevProxyTarget, removeHostWebPlugins, removeQueuedCommand, removeQueuedEntry, removeSessionMcpSetup, removeSessionWebPlugins, removeWorkspace, removeWorkspaceWebPlugins, renameSession, renameSessionGroup, renderSessionActivity, renderSessionTranscript, renderThread, replaceQueuedEntries, requestBrowserNotificationPermission, requestLatestHistory, requestNewerHistory, requestOlderHistory, requestSessionProtocolFrame, resetComposerStore, resetDevProxyStore, resetMenuStore, resetNewSessionStore, resetRailDialogStore, resetSealedSessions, resetSessionStore, resetSessionStores, resetSessions, resetThreads, resetToolPromptStore, resetTransientTabs, resetWebPlugins, resetWorkspaceAdmission, resetWorkspaces, resolveNativeTemplate, resolveParentId, resolveWebTemplate, restartDashboardSession, restartSession, restoreComposerDrafts, restoreLivePushRegistration, restoreSealedSession, resubscribeThreads, resumeDashboardSession, resumeDraftStore, resumeQueueCommand, resumeQueuedMessages, resumeSession, resumeWorkspaceSession, retryWebPluginCompositions, reviveSession, revokeDevice, revokePairedDevice, revokeSessionMcpClient, revokeTrustedDevice, revokeTrustedNativeDevice, rewindCommand, rewindToMessage, runCommand, runningCount, saveComposerDrafts, saveRemoteSettings, saveSettingsDraft, saveTemplateDefault, sealedHttpSession, sealedProtocolSession, sealedSession, searchDirectories, searchSessionFiles, seedHistoryCursor, selectFastMode, selectModel, selectTheme, selectThinkingLevel, selectWorkspace, selectionAxes, selectionStatuses, sendFrame, sendFrameWithAck, sendHubFrame, sendSessionProtocolFrame, sessionMinorModes, sessionStatusLine, sessionStoreFor, sessionToolRenderer, sessionWebPluginsInstalled, sessionsStore, setActiveSession, setAgentLock, setDockOpen, setDockTab, setHasNewerHistory, setModelCommand, setNewSessionName, setPalettePath, setPendingMenu, setSessionGroups, setSessionNameCommand, setSessionStreamed, setSettingsDraft, setThinkingLevelCommand, setTransientTabSession, setWebPluginLoadDiagnostics, setWorkspaceSandbox, settingsDraftKey, settingsDraftStore, settingsKeyOf, settingsLockedReason, settingsSection, settingsSections, showRemoteOptions, signInWithPasskey, slotFills, splitHostId, startLogin, startPluginDefinitions, startWebPlugins, steerCommand, stopSession, streamedSessions, stripAnsi, submitCapture, submitComposerDraft, submitMessage, submitMessageWithAck, subscribeActivitySources, subscribeThread, subscribeWebPluginRegistry, summariseArgs, tabComposerContext, templateStore, textFromContent, themeStore, threadStoreKey, timelineUnits, toQueuedEntries, toTimelineEntries, togglePalette, toolMessageProps, toolPromptClaim, toolPromptStore, totalTokens, transientTabsOf, transientTabsStore, transportForHost, triggerTokenAt, turnRemoteAccessOff, turnRemoteAccessOn, uiStore, unsubscribeThread, updateComposerState, updateDialogDraft, updateRemoteSettings, updateResumeDraft, updateWorkspaceAdmission, uploadSessionAttachment, useActiveSession, useActiveSessionMeta, useActivityGroups, useComposerState, useDashboardRoute, useDashboardState, useDialogDraft, useDockFaceBadges, useDockFaces, useFileLinks, useHasOlderHistory, useNoSessions, useOpenTab, usePluginSlotProps, useSessionMcp, useTemplateConfiguration, useToolPrompt, useTransientTabs, useWebPluginRegistry, validateComposerCapture, waitForSession, watchDashboardTranscript, watchHubThread, webPluginCompositionStore, webPluginDiagnostics, webPluginMountState, webPluginRegistryForHost, webPluginRegistryRevision, webPluginsInstalled, webTabs, webTemplateCatalog, workspaceAdmissionStore, workspaceName, workspaceSlotFills, workspacesStore, writeImageSettings, writeRepositorySelection, writeSettingsValue };
package/dist/index.mjs CHANGED
@@ -13,7 +13,7 @@ import { mergeScopedPlugins, pluginsAtScope } from "./web/lib/pluginScopes.mjs";
13
13
  import { bindBundledNativeTemplates, bindBundledWebTemplates, collectNativeTemplates, collectWebTemplates, resolveNativeTemplate, resolveWebTemplate } from "./web/lib/templateCatalog.mjs";
14
14
  import { HOST_SLOTS, activateWebPluginHost, activateWebPluginSession, activateWebPluginWorkspace, activityGroupSlot, bindSessionWebWorkspace, createWebPluginRegistry, dispatchChannelFrame, dropPluginSessionData, installGlobalWebPlugins, installSessionWebPlugins, installWebPlugins, installWorkspaceWebPlugins, installedWebPlugins, isDesktopClient, nativeTemplateCatalog, paletteCommands, pluginActivityGroups, pluginContextActions, pluginDockFaces, pluginFileLinks, pluginHomeContributions, pluginLeaderBindings, pluginMinorModes, pluginRepositorySettingsPanels, pluginSelectionAxes, pluginSettingsPanels, pluginSettingsSections, pluginToolRenderer, pluginUserMessageActions, removeHostWebPlugins, removeSessionWebPlugins, removeWorkspaceWebPlugins, resetWebPlugins, sessionToolRenderer, sessionWebPluginsInstalled, setWebPluginLoadDiagnostics, slotFills, startPluginDefinitions, startWebPlugins, subscribeWebPluginRegistry, webPluginDiagnostics, webPluginRegistryForHost, webPluginRegistryRevision, webPluginsInstalled, webTabs, webTemplateCatalog, workspaceSlotFills } from "./web/lib/pluginRegistry.mjs";
15
15
  import { ansiSegments, emptySelection, parseSelection, stripAnsi } from "./web/lib/statusLine.mjs";
16
- import { PACKAGED_MINOR_MODES, PACKAGED_SELECTION_AXES, activityGroups, autoSelectedDockFace, bindFileLinkModes, fileLinkFor, fileTabForPath, minorModes, selectionAxes, subscribeActivitySources, useActivityGroups, useDockFaces, useFileLinks } from "./web/lib/composition.mjs";
16
+ import { PACKAGED_MINOR_MODES, PACKAGED_SELECTION_AXES, activityGroups, bindFileLinkModes, fileLinkFor, fileLinkMentions, fileTabForPath, minorModes, selectionAxes, subscribeActivitySources, useActivityGroups, useDockFaceBadges, useDockFaces, useFileLinks } from "./web/lib/composition.mjs";
17
17
  import { contextGroups, inactiveTotal, ownerLabel, ownersOf, projectedGroups, totalTokens } from "./web/lib/contextComposition.mjs";
18
18
  import { fetchContextItemDetail } from "./web/lib/contextDetailApi.mjs";
19
19
  import { dashboardRouteFrom, useDashboardRoute } from "./web/lib/dashboardRoute.mjs";
@@ -70,7 +70,7 @@ import { applyStoredTheme, availableThemes, selectTheme, themeStore } from "./we
70
70
  import { applyThreadTranscriptFrame, bindThreadReader, dropThreads, heldThreads, resetThreads, resubscribeThreads, subscribeThread, threadStoreKey, unsubscribeThread } from "./web/stores/threadStore.mjs";
71
71
  import { markToolPromptFailed, resetToolPromptStore, toolPromptStore } from "./web/stores/toolPromptStore.mjs";
72
72
  import { closeTransientTab, dropTransientTabs, findTransientTab, openTransientTab, resetTransientTabs, setTransientTabSession, transientTabsOf, transientTabsStore, useTransientTabs } from "./web/stores/transientTabsStore.mjs";
73
- import { setDockOpen, setDockTab, uiStore } from "./web/stores/uiStore.mjs";
73
+ import { dockTabFor, setDockOpen, setDockTab, uiStore } from "./web/stores/uiStore.mjs";
74
74
  import { useOpenTab } from "./web/stores/useOpenTab.mjs";
75
75
  import { DashboardRendererProvider } from "./web/lib/dashboardRenderers.mjs";
76
76
  import { useWebPluginRegistry } from "./web/stores/useWebPluginRegistry.mjs";
@@ -81,4 +81,4 @@ import { admitDashboardWorkspace, resetWorkspaceAdmission, updateWorkspaceAdmiss
81
81
  import { dialogDraftStore, updateDialogDraft, useDialogDraft } from "./web/stores/dialogDraftStore.mjs";
82
82
  import { EMPTY_SETTINGS_DRAFT, discardSettingsDraft, loadSettingsDraft, saveSettingsDraft, setSettingsDraft, settingsDraftKey, settingsDraftStore } from "./web/stores/settingsDraftStore.mjs";
83
83
  import { dashboardStateFor, useDashboardState } from "./web/stores/dashboardStateStore.mjs";
84
- export { BUILTIN_COMMANDS, DEFAULT_REPOSITORY_SETTINGS_SECTION, DEFAULT_SETTINGS_SECTION, DashboardRendererProvider, EMPTY_NEW_SESSION_DRAFT, EMPTY_SETTINGS_DRAFT, HOST_SLOTS, LEGACY_WORKSPACE_ID, MAX_COMPLETION_ITEMS, MAX_COMPOSER_ATTACHMENTS, MAX_COMPOSER_IMAGE_BYTES, MAX_COMPOSER_TEXT_BYTES, MAX_COMPOSER_TOTAL_IMAGE_BYTES, MAX_COMPOSER_TOTAL_TEXT_BYTES, MAX_COMPOSER_UPLOAD_BYTES, PACKAGED_MINOR_MODES, PACKAGED_SELECTION_AXES, STEP_UP_HEADER_NAME, TRIGGER_CHARS, UPDATE_REQUIRED_REASON, abbreviateCwd, abortCommand, abortRun, acquireModelContext, activateWebPluginHost, activateWebPluginSession, activateWebPluginWorkspace, activeSessionId, activityGroupSlot, activityGroups, addDevProxyTarget, addPasskey, admitDashboardWorkspace, admitWorkspace, ansiSegments, answerDialogConfirm, answerDialogValue, answerLogin, appendComposerDraft, appendComposerQuote, appendQueued, appendUserPrompt, applyCaptureFrame, applyHistoryPage, applyProtocolQueue, applyProtocolTranscript, applySelectionAnswer, applySessionBacklog, applySessionFrame, applySessionLifecycle, applySessionRemoved, applySessionUpsert, applySessionsSnapshot, applyStoredTheme, applyThreadFrame, applyThreadTranscriptFrame, applyWorkspaceRemoved, applyWorkspaceUpsert, applyWorkspacesSnapshot, approveDevice, approvePairing, asWorkspace, assertionFor, attachComposerCapture, attachComposerContext, attachmentPrompt, autoSelectedDockFace, availableThemes, beginSessionReplay, beginSessionTransfer, bindBundledNativeTemplates, bindBundledWebTemplates, bindDashboardTranscriptWatcher, bindFileLinkModes, bindHistoryReader, bindHostTransport, bindSessionActivityRenderer, bindSessionFileLinkModes, bindSessionProtocol, bindSessionTranscriptRenderer, bindSessionWebWorkspace, bindThreadReader, bindThreadRenderer, bindTransport, bindWebPluginCompositions, browserNotificationPermission, browserReadyDuration, buildRailWorkspaces, builtinCommandFrame, canSaveSettings, cancelDialog, cancelLogin, claimDialogMenu, clearComposerState, clearDialog, clearPendingMenu, clearQueueCommand, clearQueuedEntries, clearQueuedMessages, closeNewSession, closePalette, closeRemoteDialog, closeResumeDialog, closeTransientTab, collectNativeTemplates, collectWebTemplates, commandCompletions, compactCommand, completeSessionTransfer, composerStore, composerSubmissionStore, configuredTemplate, contextGroups, createDashboardTransport, createDevProxyTarget, createPagedTranscript, createPlainSession, createProtocolHubSocket, createProtocolLink, createSession, createSessionMcpClient, createToolCompletionTabs, createWebPluginRegistry, createWorkspaceSession, dashboardRouteFrom, dashboardStateFor, deleteDevProxyTarget, deleteQueuedMessage, deleteSessionGroup, deliverBrowserNotification, denyDevice, denyPairing, devProxyStore, dialogCancelled, dialogConfirmed, dialogDraftStore, dialogValue, disableLivePush, disableRemoteAccess, discardSettingsDraft, disconnectCaptures, dispatchChannelFrame, dispatchHeldSessionChannel, disposeModelContextAdapter, dropComposerState, dropPluginSessionData, dropSessionStore, dropThreads, dropTransientTabs, emptySelection, enableLivePush, enableRemoteAccess, endSessionReplay, enqueueAutomaticCommand, ensureTemplateConfiguration, fetchContextItemDetail, fetchDevProxyTargets, fetchRemoteState, fetchWithStepUp, fileCompletions, fileLinkFor, fileTabForPath, findTransientTab, flushBrowserTelemetry, focusPrompt, focusWorkspaceWebPlugins, followUpCommand, formatRunDuration, getAvailableModelsCommand, getAvailableThinkingLevelsCommand, getCommandsCommand, getSessionStatsCommand, getStateCommand, groupSummary, groupTone, hasSessionProtocol, heldSessionChannels, heldThreads, holdSessionChannels, imagesFromContent, inactiveTotal, initialSessionState, inlineTextBytes, installBrowserErrorReporting, installGlobalWebPlugins, installSessionWebPlugins, installWebPlugins, installWorkspaceWebPlugins, installedWebPlugins, invokeServerMethod, isDesktopClient, isSessionMcpActivity, isSupportedImageMimeType, leaderConflicts, leaderGroup, listDirectory, listPoFolders, listProviders, listSessionHistory, listSessionMcpClients, listSessions, listSettingsModels, listSettingsRepositories, listWorkspaceHistory, listWorkspaces, livePushStatus, loadModelChoices, loadSessionAsset, loadSessionAvatar, loadSettingsDraft, localHostId, logoutProvider, markSocketClosed, markToolPromptFailed, markUpdateRequired, mediaKindFor, menuStore, mergeScopedPlugins, minorModes, mintPairingCode, nativeTemplateCatalog, newPairingCode, newSessionDraftStore, newSessionStore, noSessions, notifyHubConnected, onCaptureStatus, onComposerSubmitted, onHubConnected, onSealedSignInRequired, openNewSession, openPalette, openRemoteDialog, openResumeDialog, openTransientTab, ownerLabel, ownersOf, paletteCommands, paletteStore, parseFileMentions, parseHostKey, parseSelection, passkeysAvailable, pendingCaptureSessions, pendingMenuFor, pendingSetupView, personaInitials, plannedSettingsWrites, pluginActivityGroups, pluginContextActions, pluginDockFaces, pluginFileLinks, pluginHomeContributions, pluginLeaderBindings, pluginMinorModes, pluginRepositorySettingsPanels, pluginSelectionAxes, pluginSessionContext, pluginSettingsPanels, pluginSettingsSections, pluginSlotProps, pluginToolRenderer, pluginUserMessageActions, pluginsAtScope, prependHistory, projectedGroups, promoteQueuedCommand, promoteQueuedMessage, promptCommand, protocolSocketUrl, publishComposerSubmission, qrMatrix, qualifyHostId, qualifyHostKey, queueFollowUp, queueFollowUpWithAck, railDialogStore, railRestartStore, readDormantTranscriptPage, readImageSettings, readLogin, readRepositorySettings, readSessionMcpActivity, readSessionMcpConfig, readSettingsConfig, recordBrowserError, recordBrowserPerformance, reduceSession, refreshDevProxyTargets, refreshPasskeys, refreshRemoteState, refreshSessionFacts, refreshSessionSelection, refreshSessionStats, refreshTemplateConfiguration, refreshWebPluginCompositions, registerPasskey, registerPromptInput, releaseDialogMenu, releaseProtocolTranscript, releaseSessionActivityRenderer, releaseSessionTranscriptRenderer, releaseThreadRenderer, releaseTransport, reloadWebTemplateDecision, rememberHostChannelKey, rememberedHostChannelKey, remoteAccessStore, removeDevProxyTarget, removeHostWebPlugins, removeQueuedCommand, removeQueuedEntry, removeSessionMcpSetup, removeSessionWebPlugins, removeWorkspace, removeWorkspaceWebPlugins, renameSession, renameSessionGroup, renderSessionActivity, renderSessionTranscript, renderThread, replaceQueuedEntries, requestBrowserNotificationPermission, requestLatestHistory, requestNewerHistory, requestOlderHistory, requestSessionProtocolFrame, resetComposerStore, resetDevProxyStore, resetMenuStore, resetNewSessionStore, resetRailDialogStore, resetSealedSessions, resetSessionStore, resetSessionStores, resetSessions, resetThreads, resetToolPromptStore, resetTransientTabs, resetWebPlugins, resetWorkspaceAdmission, resetWorkspaces, resolveNativeTemplate, resolveParentId, resolveWebTemplate, restartDashboardSession, restartSession, restoreComposerDrafts, restoreLivePushRegistration, restoreSealedSession, resubscribeThreads, resumeDashboardSession, resumeDraftStore, resumeQueueCommand, resumeQueuedMessages, resumeSession, resumeWorkspaceSession, retryWebPluginCompositions, reviveSession, revokeDevice, revokePairedDevice, revokeSessionMcpClient, revokeTrustedDevice, revokeTrustedNativeDevice, rewindCommand, rewindToMessage, runCommand, runningCount, saveComposerDrafts, saveRemoteSettings, saveSettingsDraft, saveTemplateDefault, sealedHttpSession, sealedProtocolSession, sealedSession, searchDirectories, searchSessionFiles, seedHistoryCursor, selectFastMode, selectModel, selectTheme, selectThinkingLevel, selectWorkspace, selectionAxes, selectionStatuses, sendFrame, sendFrameWithAck, sendHubFrame, sendSessionProtocolFrame, sessionMinorModes, sessionStatusLine, sessionStoreFor, sessionToolRenderer, sessionWebPluginsInstalled, sessionsStore, setActiveSession, setAgentLock, setDockOpen, setDockTab, setHasNewerHistory, setModelCommand, setNewSessionName, setPalettePath, setPendingMenu, setSessionGroups, setSessionNameCommand, setSessionStreamed, setSettingsDraft, setThinkingLevelCommand, setTransientTabSession, setWebPluginLoadDiagnostics, setWorkspaceSandbox, settingsDraftKey, settingsDraftStore, settingsKeyOf, settingsLockedReason, settingsSection, settingsSections, showRemoteOptions, signInWithPasskey, slotFills, splitHostId, startLogin, startPluginDefinitions, startWebPlugins, steerCommand, stopSession, streamedSessions, stripAnsi, submitCapture, submitComposerDraft, submitMessage, submitMessageWithAck, subscribeActivitySources, subscribeThread, subscribeWebPluginRegistry, summariseArgs, tabComposerContext, templateStore, textFromContent, themeStore, threadStoreKey, timelineUnits, toQueuedEntries, toTimelineEntries, togglePalette, toolMessageProps, toolPromptClaim, toolPromptStore, totalTokens, transientTabsOf, transientTabsStore, transportForHost, triggerTokenAt, turnRemoteAccessOff, turnRemoteAccessOn, uiStore, unsubscribeThread, updateComposerState, updateDialogDraft, updateRemoteSettings, updateResumeDraft, updateWorkspaceAdmission, uploadSessionAttachment, useActiveSession, useActiveSessionMeta, useActivityGroups, useComposerState, useDashboardRoute, useDashboardState, useDialogDraft, useDockFaces, useFileLinks, useHasOlderHistory, useNoSessions, useOpenTab, usePluginSlotProps, useSessionMcp, useTemplateConfiguration, useToolPrompt, useTransientTabs, useWebPluginRegistry, validateComposerCapture, waitForSession, watchDashboardTranscript, watchHubThread, webPluginCompositionStore, webPluginDiagnostics, webPluginMountState, webPluginRegistryForHost, webPluginRegistryRevision, webPluginsInstalled, webTabs, webTemplateCatalog, workspaceAdmissionStore, workspaceName, workspaceSlotFills, workspacesStore, writeImageSettings, writeRepositorySelection, writeSettingsValue };
84
+ export { BUILTIN_COMMANDS, DEFAULT_REPOSITORY_SETTINGS_SECTION, DEFAULT_SETTINGS_SECTION, DashboardRendererProvider, EMPTY_NEW_SESSION_DRAFT, EMPTY_SETTINGS_DRAFT, HOST_SLOTS, LEGACY_WORKSPACE_ID, MAX_COMPLETION_ITEMS, MAX_COMPOSER_ATTACHMENTS, MAX_COMPOSER_IMAGE_BYTES, MAX_COMPOSER_TEXT_BYTES, MAX_COMPOSER_TOTAL_IMAGE_BYTES, MAX_COMPOSER_TOTAL_TEXT_BYTES, MAX_COMPOSER_UPLOAD_BYTES, PACKAGED_MINOR_MODES, PACKAGED_SELECTION_AXES, STEP_UP_HEADER_NAME, TRIGGER_CHARS, UPDATE_REQUIRED_REASON, abbreviateCwd, abortCommand, abortRun, acquireModelContext, activateWebPluginHost, activateWebPluginSession, activateWebPluginWorkspace, activeSessionId, activityGroupSlot, activityGroups, addDevProxyTarget, addPasskey, admitDashboardWorkspace, admitWorkspace, ansiSegments, answerDialogConfirm, answerDialogValue, answerLogin, appendComposerDraft, appendComposerQuote, appendQueued, appendUserPrompt, applyCaptureFrame, applyHistoryPage, applyProtocolQueue, applyProtocolTranscript, applySelectionAnswer, applySessionBacklog, applySessionFrame, applySessionLifecycle, applySessionRemoved, applySessionUpsert, applySessionsSnapshot, applyStoredTheme, applyThreadFrame, applyThreadTranscriptFrame, applyWorkspaceRemoved, applyWorkspaceUpsert, applyWorkspacesSnapshot, approveDevice, approvePairing, asWorkspace, assertionFor, attachComposerCapture, attachComposerContext, attachmentPrompt, availableThemes, beginSessionReplay, beginSessionTransfer, bindBundledNativeTemplates, bindBundledWebTemplates, bindDashboardTranscriptWatcher, bindFileLinkModes, bindHistoryReader, bindHostTransport, bindSessionActivityRenderer, bindSessionFileLinkModes, bindSessionProtocol, bindSessionTranscriptRenderer, bindSessionWebWorkspace, bindThreadReader, bindThreadRenderer, bindTransport, bindWebPluginCompositions, browserNotificationPermission, browserReadyDuration, buildRailWorkspaces, builtinCommandFrame, canSaveSettings, cancelDialog, cancelLogin, claimDialogMenu, clearComposerState, clearDialog, clearPendingMenu, clearQueueCommand, clearQueuedEntries, clearQueuedMessages, closeNewSession, closePalette, closeRemoteDialog, closeResumeDialog, closeTransientTab, collectNativeTemplates, collectWebTemplates, commandCompletions, compactCommand, completeSessionTransfer, composerStore, composerSubmissionStore, configuredTemplate, contextGroups, createDashboardTransport, createDevProxyTarget, createPagedTranscript, createPlainSession, createProtocolHubSocket, createProtocolLink, createSession, createSessionMcpClient, createToolCompletionTabs, createWebPluginRegistry, createWorkspaceSession, dashboardRouteFrom, dashboardStateFor, deleteDevProxyTarget, deleteQueuedMessage, deleteSessionGroup, deliverBrowserNotification, denyDevice, denyPairing, devProxyStore, dialogCancelled, dialogConfirmed, dialogDraftStore, dialogValue, disableLivePush, disableRemoteAccess, discardSettingsDraft, disconnectCaptures, dispatchChannelFrame, dispatchHeldSessionChannel, disposeModelContextAdapter, dockTabFor, dropComposerState, dropPluginSessionData, dropSessionStore, dropThreads, dropTransientTabs, emptySelection, enableLivePush, enableRemoteAccess, endSessionReplay, enqueueAutomaticCommand, ensureTemplateConfiguration, fetchContextItemDetail, fetchDevProxyTargets, fetchRemoteState, fetchWithStepUp, fileCompletions, fileLinkFor, fileLinkMentions, fileTabForPath, findTransientTab, flushBrowserTelemetry, focusPrompt, focusWorkspaceWebPlugins, followUpCommand, formatRunDuration, getAvailableModelsCommand, getAvailableThinkingLevelsCommand, getCommandsCommand, getSessionStatsCommand, getStateCommand, groupSummary, groupTone, hasSessionProtocol, heldSessionChannels, heldThreads, holdSessionChannels, imagesFromContent, inactiveTotal, initialSessionState, inlineTextBytes, installBrowserErrorReporting, installGlobalWebPlugins, installSessionWebPlugins, installWebPlugins, installWorkspaceWebPlugins, installedWebPlugins, invokeServerMethod, isDesktopClient, isSessionMcpActivity, isSupportedImageMimeType, leaderConflicts, leaderGroup, listDirectory, listPoFolders, listProviders, listSessionHistory, listSessionMcpClients, listSessions, listSettingsModels, listSettingsRepositories, listWorkspaceHistory, listWorkspaces, livePushStatus, loadModelChoices, loadSessionAsset, loadSessionAvatar, loadSettingsDraft, localHostId, logoutProvider, markSocketClosed, markToolPromptFailed, markUpdateRequired, mediaKindFor, menuStore, mergeScopedPlugins, minorModes, mintPairingCode, nativeTemplateCatalog, newPairingCode, newSessionDraftStore, newSessionStore, noSessions, notifyHubConnected, onCaptureStatus, onComposerSubmitted, onHubConnected, onSealedSignInRequired, openNewSession, openPalette, openRemoteDialog, openResumeDialog, openTransientTab, ownerLabel, ownersOf, paletteCommands, paletteStore, parseFileMentions, parseHostKey, parseSelection, passkeysAvailable, pendingCaptureSessions, pendingMenuFor, pendingSetupView, personaInitials, plannedSettingsWrites, pluginActivityGroups, pluginContextActions, pluginDockFaces, pluginFileLinks, pluginHomeContributions, pluginLeaderBindings, pluginMinorModes, pluginRepositorySettingsPanels, pluginSelectionAxes, pluginSessionContext, pluginSettingsPanels, pluginSettingsSections, pluginSlotProps, pluginToolRenderer, pluginUserMessageActions, pluginsAtScope, prependHistory, projectedGroups, promoteQueuedCommand, promoteQueuedMessage, promptCommand, protocolSocketUrl, publishComposerSubmission, qrMatrix, qualifyHostId, qualifyHostKey, queueFollowUp, queueFollowUpWithAck, railDialogStore, railRestartStore, readDormantTranscriptPage, readImageSettings, readLogin, readRepositorySettings, readSessionMcpActivity, readSessionMcpConfig, readSettingsConfig, recordBrowserError, recordBrowserPerformance, reduceSession, refreshDevProxyTargets, refreshPasskeys, refreshRemoteState, refreshSessionFacts, refreshSessionSelection, refreshSessionStats, refreshTemplateConfiguration, refreshWebPluginCompositions, registerPasskey, registerPromptInput, releaseDialogMenu, releaseProtocolTranscript, releaseSessionActivityRenderer, releaseSessionTranscriptRenderer, releaseThreadRenderer, releaseTransport, reloadWebTemplateDecision, rememberHostChannelKey, rememberedHostChannelKey, remoteAccessStore, removeDevProxyTarget, removeHostWebPlugins, removeQueuedCommand, removeQueuedEntry, removeSessionMcpSetup, removeSessionWebPlugins, removeWorkspace, removeWorkspaceWebPlugins, renameSession, renameSessionGroup, renderSessionActivity, renderSessionTranscript, renderThread, replaceQueuedEntries, requestBrowserNotificationPermission, requestLatestHistory, requestNewerHistory, requestOlderHistory, requestSessionProtocolFrame, resetComposerStore, resetDevProxyStore, resetMenuStore, resetNewSessionStore, resetRailDialogStore, resetSealedSessions, resetSessionStore, resetSessionStores, resetSessions, resetThreads, resetToolPromptStore, resetTransientTabs, resetWebPlugins, resetWorkspaceAdmission, resetWorkspaces, resolveNativeTemplate, resolveParentId, resolveWebTemplate, restartDashboardSession, restartSession, restoreComposerDrafts, restoreLivePushRegistration, restoreSealedSession, resubscribeThreads, resumeDashboardSession, resumeDraftStore, resumeQueueCommand, resumeQueuedMessages, resumeSession, resumeWorkspaceSession, retryWebPluginCompositions, reviveSession, revokeDevice, revokePairedDevice, revokeSessionMcpClient, revokeTrustedDevice, revokeTrustedNativeDevice, rewindCommand, rewindToMessage, runCommand, runningCount, saveComposerDrafts, saveRemoteSettings, saveSettingsDraft, saveTemplateDefault, sealedHttpSession, sealedProtocolSession, sealedSession, searchDirectories, searchSessionFiles, seedHistoryCursor, selectFastMode, selectModel, selectTheme, selectThinkingLevel, selectWorkspace, selectionAxes, selectionStatuses, sendFrame, sendFrameWithAck, sendHubFrame, sendSessionProtocolFrame, sessionMinorModes, sessionStatusLine, sessionStoreFor, sessionToolRenderer, sessionWebPluginsInstalled, sessionsStore, setActiveSession, setAgentLock, setDockOpen, setDockTab, setHasNewerHistory, setModelCommand, setNewSessionName, setPalettePath, setPendingMenu, setSessionGroups, setSessionNameCommand, setSessionStreamed, setSettingsDraft, setThinkingLevelCommand, setTransientTabSession, setWebPluginLoadDiagnostics, setWorkspaceSandbox, settingsDraftKey, settingsDraftStore, settingsKeyOf, settingsLockedReason, settingsSection, settingsSections, showRemoteOptions, signInWithPasskey, slotFills, splitHostId, startLogin, startPluginDefinitions, startWebPlugins, steerCommand, stopSession, streamedSessions, stripAnsi, submitCapture, submitComposerDraft, submitMessage, submitMessageWithAck, subscribeActivitySources, subscribeThread, subscribeWebPluginRegistry, summariseArgs, tabComposerContext, templateStore, textFromContent, themeStore, threadStoreKey, timelineUnits, toQueuedEntries, toTimelineEntries, togglePalette, toolMessageProps, toolPromptClaim, toolPromptStore, totalTokens, transientTabsOf, transientTabsStore, transportForHost, triggerTokenAt, turnRemoteAccessOff, turnRemoteAccessOn, uiStore, unsubscribeThread, updateComposerState, updateDialogDraft, updateRemoteSettings, updateResumeDraft, updateWorkspaceAdmission, uploadSessionAttachment, useActiveSession, useActiveSessionMeta, useActivityGroups, useComposerState, useDashboardRoute, useDashboardState, useDialogDraft, useDockFaceBadges, useDockFaces, useFileLinks, useHasOlderHistory, useNoSessions, useOpenTab, usePluginSlotProps, useSessionMcp, useTemplateConfiguration, useToolPrompt, useTransientTabs, useWebPluginRegistry, validateComposerCapture, waitForSession, watchDashboardTranscript, watchHubThread, webPluginCompositionStore, webPluginDiagnostics, webPluginMountState, webPluginRegistryForHost, webPluginRegistryRevision, webPluginsInstalled, webTabs, webTemplateCatalog, workspaceAdmissionStore, workspaceName, workspaceSlotFills, workspacesStore, writeImageSettings, writeRepositorySelection, writeSettingsValue };
package/dist/views.cjs CHANGED
@@ -113,6 +113,7 @@ exports.TrustedDeviceListView = require_TrustedDeviceList.TrustedDeviceListView;
113
113
  exports.TunnelSettings = require_TunnelSettings.TunnelSettings;
114
114
  exports.WelcomePanel = require_WelcomePanel.WelcomePanel;
115
115
  exports.addComposerFiles = require_Composer.addComposerFiles;
116
+ exports.appearedFaces = require_ActivityDock.appearedFaces;
116
117
  exports.hostKeyFor = require_HostsSettings.hostKeyFor;
117
118
  exports.isQuickTunnel = require_HostsSettings.isQuickTunnel;
118
119
  exports.nestedToolCard = require_ToolCard.nestedToolCard;
package/dist/views.d.mts CHANGED
@@ -3,7 +3,7 @@ import { MascotMark, MascotMarkProps } from "./web/components/MascotMark.mjs";
3
3
  import { PluginSurface } from "./web/components/PluginSurface.mjs";
4
4
  import { QrCode, QrCodeProps } from "./web/components/QrCode.mjs";
5
5
  import { SessionMcp, SessionMcpTools } from "./web/components/SessionMcp.mjs";
6
- import { ActivityDock } from "./web/features/activity/ActivityDock.mjs";
6
+ import { ActivityDock, DockFaceSnapshot, appearedFaces } from "./web/features/activity/ActivityDock.mjs";
7
7
  import { ContextItemDialog, ContextItemDialogProps } from "./web/features/activity/ContextItemDialog.mjs";
8
8
  import { ContextPanel, ContextPanelView } from "./web/features/activity/ContextPanel.mjs";
9
9
  import { DockTabs } from "./web/features/activity/DockTabs.mjs";
@@ -52,4 +52,4 @@ import { SettingsPanelHost } from "./web/features/settings/SettingsPanelHost.mjs
52
52
  import { TemplateSettings } from "./web/features/settings/TemplateSettings.mjs";
53
53
  import { TunnelSettings } from "./web/features/settings/TunnelSettings.mjs";
54
54
  import { TopBar } from "./web/features/status/TopBar.mjs";
55
- export { ActivityDock, AppearanceSettings, CockpitHost, CommandPalette, Composer, ComposerPrompt, ContextItemDialog, ContextItemDialogProps, ContextPanel, ContextPanelView, ContributedSettings, DevProxyTargets, DialogOverlay, DockTabs, DormantPanel, HostsSettings, HostsSettingsProps, ImageSettings, LoginFlowDialog, METHOD_LABEL, MascotMark, MascotMarkProps, MentionPreviewAsset, MentionPreviews, MessageFileLinkHandler, MessageMarkdown, ModelPopup, NewSessionDialog, NotificationSettings, PairedDeviceList, PairingApprovalDialog, PluginSettings, PluginSurface, ProviderSettings, QrCode, QrCodeProps, QueueSheet, RefusedCard, RemoteAccessDialog, RemoteAccessOptions, RemoteAccessPairing, RemoteControlSettings, RepositorySettings, RepositoryWorkspace, ResumeSessionDialog, SelectionBar, SessionActivity, SessionActivityView, SessionMcp, SessionMcpSettings, SessionMcpTools, SessionRailDialogs, SessionTranscriptView, SettingsMenu, SettingsPanelHost, TemplateSettings, ThreadView, Timeline, ToolCard, ToolRendererBoundary, TopBar, Transcript, TrustedDeviceList, TrustedDeviceListView, TrustedDeviceListViewProps, TunnelSettings, WelcomePanel, addComposerFiles, hostKeyFor, isQuickTunnel, nestedToolCard, readComposerFiles, sessionActivity, useNewSessionActions, useSessionRail };
55
+ export { ActivityDock, AppearanceSettings, CockpitHost, CommandPalette, Composer, ComposerPrompt, ContextItemDialog, ContextItemDialogProps, ContextPanel, ContextPanelView, ContributedSettings, DevProxyTargets, DialogOverlay, DockFaceSnapshot, DockTabs, DormantPanel, HostsSettings, HostsSettingsProps, ImageSettings, LoginFlowDialog, METHOD_LABEL, MascotMark, MascotMarkProps, MentionPreviewAsset, MentionPreviews, MessageFileLinkHandler, MessageMarkdown, ModelPopup, NewSessionDialog, NotificationSettings, PairedDeviceList, PairingApprovalDialog, PluginSettings, PluginSurface, ProviderSettings, QrCode, QrCodeProps, QueueSheet, RefusedCard, RemoteAccessDialog, RemoteAccessOptions, RemoteAccessPairing, RemoteControlSettings, RepositorySettings, RepositoryWorkspace, ResumeSessionDialog, SelectionBar, SessionActivity, SessionActivityView, SessionMcp, SessionMcpSettings, SessionMcpTools, SessionRailDialogs, SessionTranscriptView, SettingsMenu, SettingsPanelHost, TemplateSettings, ThreadView, Timeline, ToolCard, ToolRendererBoundary, TopBar, Transcript, TrustedDeviceList, TrustedDeviceListView, TrustedDeviceListViewProps, TunnelSettings, WelcomePanel, addComposerFiles, appearedFaces, hostKeyFor, isQuickTunnel, nestedToolCard, readComposerFiles, sessionActivity, useNewSessionActions, useSessionRail };
package/dist/views.mjs CHANGED
@@ -6,7 +6,7 @@ import { SessionMcp, SessionMcpTools } from "./web/components/SessionMcp.mjs";
6
6
  import { ContextItemDialog } from "./web/features/activity/ContextItemDialog.mjs";
7
7
  import { ContextPanel, ContextPanelView } from "./web/features/activity/ContextPanel.mjs";
8
8
  import { DockTabs } from "./web/features/activity/DockTabs.mjs";
9
- import { ActivityDock } from "./web/features/activity/ActivityDock.mjs";
9
+ import { ActivityDock, appearedFaces } from "./web/features/activity/ActivityDock.mjs";
10
10
  import { RefusedCard } from "./web/features/connection/RefusedCard.mjs";
11
11
  import { DialogOverlay } from "./web/features/dialogs/DialogOverlay.mjs";
12
12
  import { CommandPalette } from "./web/features/leader/CommandPalette.mjs";
@@ -52,4 +52,4 @@ import { SettingsMenu } from "./web/features/settings/SettingsMenu.mjs";
52
52
  import { RepositoryWorkspace } from "./web/features/settings/RepositoryWorkspace.mjs";
53
53
  import { SettingsPanelHost } from "./web/features/settings/SettingsPanelHost.mjs";
54
54
  import { TopBar } from "./web/features/status/TopBar.mjs";
55
- export { ActivityDock, AppearanceSettings, CommandPalette, Composer, ComposerPrompt, ContextItemDialog, ContextPanel, ContextPanelView, ContributedSettings, DevProxyTargets, DialogOverlay, DockTabs, DormantPanel, HostsSettings, ImageSettings, LoginFlowDialog, METHOD_LABEL, MascotMark, MentionPreviewAsset, MentionPreviews, MessageMarkdown, ModelPopup, NewSessionDialog, NotificationSettings, PairedDeviceList, PairingApprovalDialog, PluginSettings, PluginSurface, ProviderSettings, QrCode, QueueSheet, RefusedCard, RemoteAccessDialog, RemoteAccessOptions, RemoteAccessPairing, RemoteControlSettings, RepositorySettings, RepositoryWorkspace, ResumeSessionDialog, SelectionBar, SessionActivity, SessionMcp, SessionMcpSettings, SessionMcpTools, SessionRailDialogs, SessionTranscriptView, SettingsMenu, SettingsPanelHost, TemplateSettings, ThreadView, Timeline, ToolCard, ToolRendererBoundary, TopBar, Transcript, TrustedDeviceList, TrustedDeviceListView, TunnelSettings, WelcomePanel, addComposerFiles, hostKeyFor, isQuickTunnel, nestedToolCard, readComposerFiles, sessionActivity, useNewSessionActions, useSessionRail };
55
+ export { ActivityDock, AppearanceSettings, CommandPalette, Composer, ComposerPrompt, ContextItemDialog, ContextPanel, ContextPanelView, ContributedSettings, DevProxyTargets, DialogOverlay, DockTabs, DormantPanel, HostsSettings, ImageSettings, LoginFlowDialog, METHOD_LABEL, MascotMark, MentionPreviewAsset, MentionPreviews, MessageMarkdown, ModelPopup, NewSessionDialog, NotificationSettings, PairedDeviceList, PairingApprovalDialog, PluginSettings, PluginSurface, ProviderSettings, QrCode, QueueSheet, RefusedCard, RemoteAccessDialog, RemoteAccessOptions, RemoteAccessPairing, RemoteControlSettings, RepositorySettings, RepositoryWorkspace, ResumeSessionDialog, SelectionBar, SessionActivity, SessionMcp, SessionMcpSettings, SessionMcpTools, SessionRailDialogs, SessionTranscriptView, SettingsMenu, SettingsPanelHost, TemplateSettings, ThreadView, Timeline, ToolCard, ToolRendererBoundary, TopBar, Transcript, TrustedDeviceList, TrustedDeviceListView, TunnelSettings, WelcomePanel, addComposerFiles, appearedFaces, hostKeyFor, isQuickTunnel, nestedToolCard, readComposerFiles, sessionActivity, useNewSessionActions, useSessionRail };
@@ -14,11 +14,35 @@ let _tanstack_react_store = require("@tanstack/react-store");
14
14
  let react_jsx_runtime = require("react/jsx-runtime");
15
15
  let _agimon_ai_po_web_components = require("@agimon-ai/po-web-components");
16
16
  //#region src/web/features/activity/ActivityDock.tsx
17
- /** Outlives the dock: hiding and reopening it must not count as entering the tab again. */
18
- let automaticFaceKeys = {
19
- sessions: [],
20
- tab: ""
21
- };
17
+ /** How long a face that just appeared keeps its tint before it fades. */
18
+ const ATTENTION_MS = 2400;
19
+ /**
20
+ * Faces that appeared while this session's dock was already on screen. Faces
21
+ * present when the dock mounts or the session changes are not news.
22
+ */
23
+ function appearedFaces(before, after) {
24
+ if (before === void 0 || before.sessionId !== after.sessionId) return [];
25
+ return [...after.ids].filter((id) => !before.ids.has(id));
26
+ }
27
+ function useAppearingFaces(sessionId, faceIds) {
28
+ const previous = (0, react.useRef)(void 0);
29
+ const [attention, setAttention] = (0, react.useState)([]);
30
+ const key = faceIds.join("\n");
31
+ (0, react.useEffect)(() => {
32
+ const after = {
33
+ sessionId,
34
+ ids: new Set(key === "" ? [] : key.split("\n"))
35
+ };
36
+ const before = previous.current;
37
+ previous.current = after;
38
+ if (before?.sessionId !== sessionId) setAttention([]);
39
+ const appeared = appearedFaces(before, after);
40
+ if (appeared.length === 0) return;
41
+ setAttention((current) => [...current, ...appeared]);
42
+ setTimeout(() => setAttention((current) => current.filter((id) => !appeared.includes(id))), ATTENTION_MS);
43
+ }, [sessionId, key]);
44
+ return attention;
45
+ }
22
46
  /**
23
47
  * The column for everything that is not the transcript.
24
48
  *
@@ -31,27 +55,26 @@ let automaticFaceKeys = {
31
55
  * Each declared group opens the keyed slot activity.<name>; the sections any
32
56
  * plugin registers under that name render there, in slot order, and a group
33
57
  * nobody fills shows the one-line summary the session's footer publishes.
58
+ *
59
+ * Only the person moves between faces. A face that appears later, such as
60
+ * Author when a document opens, announces itself in the tab strip instead of
61
+ * taking the dock over.
34
62
  */
35
- function ActivityDock({ onClose, onOpenContent, mcp, tabId, scope }) {
63
+ function ActivityDock({ onClose, onOpenContent, mcp, scope }) {
36
64
  const activeId = (0, _tanstack_react_store.useStore)(require_sessionsStore.sessionsStore, (state) => state.activeId);
37
65
  const connection = (0, _tanstack_react_store.useStore)(require_sessionsStore.sessionsStore, (state) => state.activeId === null ? void 0 : state.byId[state.activeId]);
38
66
  const updateRequired = (0, _tanstack_react_store.useStore)(require_sessionsStore.sessionsStore, (state) => state.updateRequired);
39
67
  const statuses = require_sessionStore.useActiveSession((state) => state.statuses);
40
68
  const widgets = require_sessionStore.useActiveSession((state) => state.widgets);
41
69
  const slotProps = require_usePluginSlotProps.usePluginSlotProps(activeId, onOpenContent);
42
- const tab = (0, _tanstack_react_store.useStore)(require_uiStore.uiStore, (state) => state.dockTab);
70
+ const tab = (0, _tanstack_react_store.useStore)(require_uiStore.uiStore, (state) => require_uiStore.dockTabFor(state, activeId));
43
71
  const dockFaces = require_composition.useDockFaces(activeId).filter((face) => face.requiredMinorMode === void 0 || slotProps.activeMinorModes?.includes(face.requiredMinorMode));
44
72
  const selectedFace = dockFaces.find((face) => face.id === tab);
45
73
  const mcpEnabled = mcp?.snapshot?.enabled === true;
46
74
  const resolvedTab = tab === "context" || tab === "activity" || tab === "mcp" && mcpEnabled || selectedFace !== void 0 ? tab : "activity";
47
75
  const DockPanel = selectedFace?.panel;
48
- const automaticSelection = require_composition.autoSelectedDockFace(dockFaces, {
49
- sessionId: activeId,
50
- tabId: tabId ?? null
51
- }, automaticFaceKeys);
52
- const automaticFace = automaticSelection.face;
53
- const automaticSessionKeys = automaticSelection.keys.sessions;
54
- const automaticTabKey = automaticSelection.keys.tab;
76
+ const badges = require_composition.useDockFaceBadges(dockFaces, activeId);
77
+ const attention = useAppearingFaces(activeId, dockFaces.map((face) => face.id)).filter((id) => id !== resolvedTab);
55
78
  const workspaceId = (0, _tanstack_react_store.useStore)(require_sessionsStore.sessionsStore, (state) => state.activeId === null ? void 0 : state.byId[state.activeId]?.summary.workspaceId);
56
79
  const compositionSnapshot = (0, _tanstack_react_store.useStore)(require_pluginCompositions.webPluginCompositionStore);
57
80
  const compositionState = require_pluginCompositions.webPluginMountState(activeId === null ? { scope: "global" } : {
@@ -63,20 +86,6 @@ function ActivityDock({ onClose, onOpenContent, mcp, tabId, scope }) {
63
86
  const ordinaryGroups = groups.filter((group) => group.placement !== "bottom");
64
87
  const pinnedGroups = groups.filter((group) => group.placement === "bottom");
65
88
  const busy = groups.filter((group) => group.active).length;
66
- (0, react.useEffect)(() => {
67
- automaticFaceKeys = {
68
- sessions: automaticSessionKeys,
69
- tab: automaticTabKey
70
- };
71
- if (automaticFace !== void 0) require_uiStore.setDockTab(automaticFace.id);
72
- }, [
73
- automaticFace,
74
- automaticSessionKeys,
75
- automaticTabKey
76
- ]);
77
- (0, react.useEffect)(() => {
78
- if (resolvedTab !== tab) require_uiStore.setDockTab(resolvedTab);
79
- }, [resolvedTab, tab]);
80
89
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("aside", {
81
90
  "data-testid": "activity-dock",
82
91
  className: "flex w-[min(360px,calc(100vw-48px))] shrink-0 flex-col overflow-hidden border-l border-po-border-soft bg-po-rail sm:w-[360px]",
@@ -85,7 +94,11 @@ function ActivityDock({ onClose, onOpenContent, mcp, tabId, scope }) {
85
94
  children: [
86
95
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_DockTabs.DockTabs, {
87
96
  contributed: dockFaces,
88
- mcpEnabled
97
+ mcpEnabled,
98
+ active: resolvedTab,
99
+ onSelect: (id) => require_uiStore.setDockTab(activeId, id),
100
+ badges,
101
+ attention
89
102
  }),
90
103
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { className: "flex-1" }),
91
104
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_agimon_ai_po_web_components.Button, {
@@ -293,5 +306,6 @@ function ActivityGroupView({ group, slotProps }) {
293
306
  }
294
307
  //#endregion
295
308
  exports.ActivityDock = ActivityDock;
309
+ exports.appearedFaces = appearedFaces;
296
310
 
297
311
  //# sourceMappingURL=ActivityDock.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ActivityDock.cjs","names":["useStore","sessionsStore","useActiveSession","usePluginSlotProps","uiStore","useDockFaces","autoSelectedDockFace","webPluginCompositionStore","webPluginMountState","useActivityGroups","DockTabs","Button","CloseIcon","SessionMcpTools","ContextPanel","retryWebPluginCompositions","PluginSurface","HOST_SLOTS","LightbulbIcon","LoaderIcon","SparklesIcon","ActivityIcon","Kbd","ChevronRightIcon","slotFills","activityGroupSlot"],"sources":["../../../../src/web/features/activity/ActivityDock.tsx"],"sourcesContent":["import {\n ActivityIcon,\n Button,\n ChevronRightIcon,\n CloseIcon,\n Kbd,\n LightbulbIcon,\n LoaderIcon,\n SparklesIcon,\n} from '@agimon-ai/po-web-components';\nimport { useStore } from '@tanstack/react-store';\nimport { useEffect } from 'react';\n\nimport { PluginSurface } from '../../components/PluginSurface';\nimport { SessionMcpTools } from '../../components/SessionMcp';\nimport {\n type ActivityGroup,\n autoSelectedDockFace,\n type DockAutoSelectKeys,\n useActivityGroups,\n useDockFaces,\n} from '../../lib/composition';\nimport {\n retryWebPluginCompositions,\n webPluginCompositionStore,\n webPluginMountState,\n} from '../../lib/pluginCompositions';\nimport { activityGroupSlot, HOST_SLOTS, slotFills } from '../../lib/pluginRegistry';\nimport type { SessionMcpViewState } from '../../lib/useSessionMcp';\nimport { sessionsStore } from '../../stores/sessionsStore';\nimport { useActiveSession } from '../../stores/sessionStore';\nimport { setDockTab, uiStore } from '../../stores/uiStore';\nimport { usePluginSlotProps } from '../../stores/usePluginSlotProps';\nimport { ContextPanel } from './ContextPanel';\nimport { DockTabs } from './DockTabs';\n\n/** Outlives the dock: hiding and reopening it must not count as entering the tab again. */\nlet automaticFaceKeys: DockAutoSelectKeys = { sessions: [], tab: '' };\n/**\n * The column for everything that is not the transcript.\n *\n * `activity` is asynchronous work that outlives the turn that started it.\n * `context` is the composition that work runs under, and what carrying it costs.\n * `mcp` lists capabilities granted to this session's remote connections.\n *\n * On the activity face the host owns only the frame: which groups exist, their\n * key chips, and what they render come from the packages that declare them.\n * Each declared group opens the keyed slot activity.<name>; the sections any\n * plugin registers under that name render there, in slot order, and a group\n * nobody fills shows the one-line summary the session's footer publishes.\n */\nexport function ActivityDock({\n onClose,\n onOpenContent,\n mcp,\n tabId,\n scope,\n}: {\n onClose: () => void;\n onOpenContent: () => void;\n mcp?: SessionMcpViewState;\n tabId?: string;\n /** Names what the activity face is showing when it is not the session itself, such as a workflow step. */\n scope?: string;\n}) {\n const activeId = useStore(sessionsStore, (state) => state.activeId);\n const connection = useStore(sessionsStore, (state) =>\n state.activeId === null ? undefined : state.byId[state.activeId],\n );\n const updateRequired = useStore(sessionsStore, (state) => state.updateRequired);\n const statuses = useActiveSession((state) => state.statuses);\n const widgets = useActiveSession((state) => state.widgets);\n const slotProps = usePluginSlotProps(activeId, onOpenContent);\n const tab = useStore(uiStore, (state) => state.dockTab);\n const dockFaces = useDockFaces(activeId).filter(\n (face) => face.requiredMinorMode === undefined || slotProps.activeMinorModes?.includes(face.requiredMinorMode),\n );\n const selectedFace = dockFaces.find((face) => face.id === tab);\n const mcpEnabled = mcp?.snapshot?.enabled === true;\n const resolvedTab =\n tab === 'context' || tab === 'activity' || (tab === 'mcp' && mcpEnabled) || selectedFace !== undefined\n ? tab\n : 'activity';\n const DockPanel = selectedFace?.panel;\n const automaticSelection = autoSelectedDockFace(\n dockFaces,\n { sessionId: activeId, tabId: tabId ?? null },\n automaticFaceKeys,\n );\n const automaticFace = automaticSelection.face;\n const automaticSessionKeys = automaticSelection.keys.sessions;\n const automaticTabKey = automaticSelection.keys.tab;\n const workspaceId = useStore(sessionsStore, (state) =>\n state.activeId === null ? undefined : state.byId[state.activeId]?.summary.workspaceId,\n );\n const compositionSnapshot = useStore(webPluginCompositionStore);\n const compositionState = webPluginMountState(\n activeId === null ? { scope: 'global' } : { scope: 'session', sessionId: activeId, workspaceId: workspaceId ?? '' },\n compositionSnapshot,\n );\n const groups = useActivityGroups(statuses, widgets, activeId);\n const ordinaryGroups = groups.filter((group) => group.placement !== 'bottom');\n const pinnedGroups = groups.filter((group) => group.placement === 'bottom');\n const busy = groups.filter((group) => group.active).length;\n\n useEffect(() => {\n automaticFaceKeys = { sessions: automaticSessionKeys, tab: automaticTabKey };\n if (automaticFace !== undefined) setDockTab(automaticFace.id);\n }, [automaticFace, automaticSessionKeys, automaticTabKey]);\n useEffect(() => {\n if (resolvedTab !== tab) setDockTab(resolvedTab);\n }, [resolvedTab, tab]);\n return (\n <aside\n data-testid=\"activity-dock\"\n className=\"flex w-[min(360px,calc(100vw-48px))] shrink-0 flex-col overflow-hidden border-l border-po-border-soft bg-po-rail sm:w-[360px]\"\n >\n <div className=\"flex h-16 shrink-0 items-end gap-6 border-b border-po-border-soft px-5\">\n <DockTabs contributed={dockFaces} mcpEnabled={mcpEnabled} />\n <span className=\"flex-1\" />\n <Button\n variant=\"ghost\"\n size=\"icon\"\n data-testid=\"activity-close\"\n aria-label=\"Hide activity\"\n title=\"Hide activity\"\n onClick={onClose}\n className=\"mb-4 text-po-dim\"\n >\n <CloseIcon aria-hidden className=\"size-3.5\" />\n </Button>\n </div>\n\n {resolvedTab === 'mcp' && mcp !== undefined ? (\n <SessionMcpTools key={activeId} state={mcp} />\n ) : DockPanel !== undefined ? (\n <DockPanel {...slotProps} />\n ) : resolvedTab === 'context' ? (\n <ContextPanel />\n ) : (\n <>\n <div data-testid=\"activity-scroll\" className=\"flex min-h-0 flex-1 flex-col gap-3 overflow-y-auto p-4\">\n {scope === undefined ? null : (\n <p data-testid=\"activity-scope\" className=\"px-1 text-sm text-po-dim\">\n {scope}\n </p>\n )}\n {connection?.attach === 'offline' ? (\n <output\n data-testid=\"activity-offline\"\n className={updateRequired ? 'block px-1 text-sm text-po-magenta' : 'block px-1 text-sm text-po-dim'}\n >\n {connection.reason || 'Reconnecting'}\n </output>\n ) : null}\n {compositionState.phase === 'error' ? (\n <div\n data-testid=\"activity-error\"\n role=\"alert\"\n className=\"flex items-center justify-between gap-3 rounded-lg border border-po-border-soft px-4 py-3\"\n >\n <span className=\"text-sm text-po-dim\">Activity failed to load</span>\n <Button\n variant=\"outline\"\n size=\"xs\"\n data-testid=\"activity-retry\"\n onClick={() => void retryWebPluginCompositions().catch((error: unknown) => console.error(error))}\n >\n Retry\n </Button>\n </div>\n ) : null}\n {groups.length === 0 && compositionState.phase === 'loading' ? (\n <Placeholder\n testId=\"activity-loading\"\n title=\"Loading activity\"\n description=\"Loading the package extensions that supervise work.\"\n />\n ) : null}\n {groups.length === 0 && compositionState.phase !== 'loading' && compositionState.phase !== 'error' ? (\n <Placeholder\n testId=\"activity-empty\"\n title=\"Nothing supervised yet\"\n description=\"A package's group appears here once its extension reports in.\"\n />\n ) : null}\n {ordinaryGroups.map((group) => (\n <ActivityGroupView key={group.name} group={group} slotProps={slotProps} />\n ))}\n\n <PluginSurface slot={HOST_SLOTS.activity} sessionId={activeId} />\n <PromoPanel />\n </div>\n\n {pinnedGroups.length > 0 ? (\n <div data-testid=\"activity-pinned\" className=\"flex shrink-0 flex-col gap-3 px-4 pb-4\">\n {pinnedGroups.map((group) => (\n <ActivityGroupView key={group.name} group={group} slotProps={slotProps} />\n ))}\n </div>\n ) : null}\n\n {/* The busy count overlays the footer hint instead of joining the scroll\n column, so it appearing or clearing never shifts the groups. It\n belongs to the activity face only: on the context face it would be\n a number about a list the reader is not looking at. */}\n <div className=\"relative shrink-0\">\n <p className=\"flex gap-2 border-t border-po-border-soft px-5 py-3 text-sm leading-relaxed text-po-dim\">\n <LightbulbIcon aria-hidden className=\"size-3.5 shrink-0\" />\n Each group is rendered by the package that owns it. The session's summary line stands in until that\n package publishes per-run detail.\n </p>\n {busy > 0 ? (\n <div className=\"absolute inset-0 flex items-center border-t border-po-border-soft bg-po-rail px-4\">\n <output\n data-testid=\"activity-busy\"\n className=\"flex flex-1 items-center gap-2 rounded-lg bg-po-tint-yellow px-3 py-2 text-sm text-po-yellow\"\n >\n <LoaderIcon aria-hidden className=\"size-3.5 animate-spin\" />\n {busy} running in the background\n </output>\n </div>\n ) : null}\n </div>\n </>\n )}\n </aside>\n );\n}\n\n/** Plugin group names are lowercase identifiers; the heading reads in sentence case. */\nfunction sentenceCase(name: string): string {\n return name.charAt(0).toUpperCase() + name.slice(1);\n}\n\nfunction Placeholder({ testId, title, description }: { testId: string; title: string; description: string }) {\n return (\n <div\n data-testid={testId}\n className=\"flex flex-col gap-1 rounded-lg border border-dashed border-po-border px-4 py-5\"\n >\n <span className=\"text-base font-semibold text-po-hi\">{title}</span>\n <span className=\"text-sm text-po-dim\">{description}</span>\n </div>\n );\n}\n\n/** Static and decorative: it names what the dock is for and offers no action. */\nfunction PromoPanel() {\n return (\n <div className=\"relative shrink-0 overflow-hidden rounded-lg border border-po-border-soft px-4 pt-3.5 pb-16\">\n <span className=\"flex items-start gap-3\">\n <SparklesIcon aria-hidden className=\"mt-0.5 size-5 shrink-0 text-po-green\" />\n <span className=\"flex flex-col gap-1\">\n <span className=\"text-base font-semibold text-po-hi\">A more capable you</span>\n <span className=\"text-sm text-po-dim\">Agents, tools, and your codebase. All in one place.</span>\n </span>\n </span>\n <svg\n aria-hidden\n viewBox=\"0 0 320 80\"\n preserveAspectRatio=\"none\"\n className=\"absolute inset-x-0 bottom-0 h-16 w-full\"\n >\n <path d=\"M0 50 C60 30 110 70 170 46 S280 18 320 34 V80 H0Z\" className=\"fill-po-tint-green\" />\n <path d=\"M0 64 C70 46 120 78 190 58 S290 44 320 52 V80 H0Z\" className=\"fill-po-edge-green opacity-40\" />\n <path d=\"M0 74 C80 62 150 82 220 70 S300 64 320 68 V80 H0Z\" className=\"fill-po-green opacity-20\" />\n </svg>\n </div>\n );\n}\n\nfunction ActivityGroupView({\n group,\n slotProps,\n}: {\n group: ActivityGroup;\n slotProps: ReturnType<typeof usePluginSlotProps>;\n}) {\n // Plugins without icon metadata get the host's generic mark rather than nothing.\n const GroupIcon = group.icon ?? ActivityIcon;\n const label = sentenceCase(group.name);\n const heading = (\n <>\n <span className=\"min-w-0 flex-1 truncate text-left text-base font-semibold text-po-hi\">{label}</span>\n {group.keys ? (\n <Kbd data-testid={`activity-keys-${group.name}`} className=\"bg-po-bg\">\n {group.keys}\n </Kbd>\n ) : null}\n </>\n );\n return (\n <div\n data-testid={`activity-${group.name}`}\n data-active={group.active}\n className=\"flex shrink-0 gap-3 rounded-lg border border-po-border-soft px-4 py-4\"\n >\n {/* One marker per head, carrying the busy colour. */}\n <GroupIcon aria-hidden className={`mt-0.5 size-5 shrink-0 ${group.active ? 'text-po-yellow' : 'text-po-hi'}`} />\n <div className=\"flex min-w-0 flex-1 flex-col gap-2\">\n {/* A group that owns a panel opens it from its own name: the tab is\n temporary, so the tab strip carries it only while the reader is\n using it. Only those headings get a chevron. */}\n {group.transientTab === undefined ? (\n <span className=\"flex min-w-0 items-center gap-2\">{heading}</span>\n ) : (\n <Button\n variant=\"ghost\"\n size=\"xs\"\n data-testid={`activity-open-${group.name}`}\n title={`Open ${group.name}`}\n onClick={() => {\n const tab = group.transientTab?.();\n if (tab !== undefined) slotProps.openTransientTab(tab);\n }}\n className=\"group/heading h-auto min-w-0 justify-start gap-2 px-0 py-0 hover:bg-transparent\"\n >\n {heading}\n <ChevronRightIcon aria-hidden className=\"size-4 shrink-0 text-po-faint group-hover/heading:text-po-dim\" />\n </Button>\n )}\n {slotFills(activityGroupSlot(group.name)).length > 0 ? (\n slotProps.renderSlot(activityGroupSlot(group.name))\n ) : (\n <p\n data-testid={`activity-summary-${group.name}`}\n className={`text-sm first-letter:uppercase ${group.active ? 'text-po-yellow' : 'text-po-dim'}`}\n >\n {group.summary || 'Idle'}\n </p>\n )}\n </div>\n </div>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"ActivityDock.cjs","names":["useRef","useState","useStore","sessionsStore","useActiveSession","usePluginSlotProps","uiStore","dockTabFor","useDockFaces","useDockFaceBadges","webPluginCompositionStore","webPluginMountState","useActivityGroups","DockTabs","setDockTab","Button","CloseIcon","SessionMcpTools","ContextPanel","retryWebPluginCompositions","PluginSurface","HOST_SLOTS","LightbulbIcon","LoaderIcon","SparklesIcon","ActivityIcon","Kbd","ChevronRightIcon","slotFills","activityGroupSlot"],"sources":["../../../../src/web/features/activity/ActivityDock.tsx"],"sourcesContent":["import {\n ActivityIcon,\n Button,\n ChevronRightIcon,\n CloseIcon,\n Kbd,\n LightbulbIcon,\n LoaderIcon,\n SparklesIcon,\n} from '@agimon-ai/po-web-components';\nimport { useStore } from '@tanstack/react-store';\nimport { useEffect, useRef, useState } from 'react';\n\nimport { PluginSurface } from '../../components/PluginSurface';\nimport { SessionMcpTools } from '../../components/SessionMcp';\nimport { type ActivityGroup, useActivityGroups, useDockFaceBadges, useDockFaces } from '../../lib/composition';\nimport {\n retryWebPluginCompositions,\n webPluginCompositionStore,\n webPluginMountState,\n} from '../../lib/pluginCompositions';\nimport { activityGroupSlot, HOST_SLOTS, slotFills } from '../../lib/pluginRegistry';\nimport type { SessionMcpViewState } from '../../lib/useSessionMcp';\nimport { sessionsStore } from '../../stores/sessionsStore';\nimport { useActiveSession } from '../../stores/sessionStore';\nimport { dockTabFor, setDockTab, uiStore } from '../../stores/uiStore';\nimport { usePluginSlotProps } from '../../stores/usePluginSlotProps';\nimport { ContextPanel } from './ContextPanel';\nimport { DockTabs } from './DockTabs';\n\n/** How long a face that just appeared keeps its tint before it fades. */\nconst ATTENTION_MS = 2400;\n\nexport interface DockFaceSnapshot {\n sessionId: string | null;\n ids: ReadonlySet<string>;\n}\n\n/**\n * Faces that appeared while this session's dock was already on screen. Faces\n * present when the dock mounts or the session changes are not news.\n */\nexport function appearedFaces(before: DockFaceSnapshot | undefined, after: DockFaceSnapshot): string[] {\n if (before === undefined || before.sessionId !== after.sessionId) return [];\n return [...after.ids].filter((id) => !before.ids.has(id));\n}\n\nfunction useAppearingFaces(sessionId: string | null, faceIds: readonly string[]): readonly string[] {\n const previous = useRef<DockFaceSnapshot | undefined>(undefined);\n const [attention, setAttention] = useState<readonly string[]>([]);\n const key = faceIds.join('\\n');\n useEffect(() => {\n const after = { sessionId, ids: new Set(key === '' ? [] : key.split('\\n')) };\n const before = previous.current;\n previous.current = after;\n if (before?.sessionId !== sessionId) setAttention([]);\n const appeared = appearedFaces(before, after);\n if (appeared.length === 0) return;\n setAttention((current) => [...current, ...appeared]);\n // Not cleared on the next change: a second face appearing must not strand this one's tint.\n setTimeout(() => setAttention((current) => current.filter((id) => !appeared.includes(id))), ATTENTION_MS);\n }, [sessionId, key]);\n return attention;\n}\n/**\n * The column for everything that is not the transcript.\n *\n * `activity` is asynchronous work that outlives the turn that started it.\n * `context` is the composition that work runs under, and what carrying it costs.\n * `mcp` lists capabilities granted to this session's remote connections.\n *\n * On the activity face the host owns only the frame: which groups exist, their\n * key chips, and what they render come from the packages that declare them.\n * Each declared group opens the keyed slot activity.<name>; the sections any\n * plugin registers under that name render there, in slot order, and a group\n * nobody fills shows the one-line summary the session's footer publishes.\n *\n * Only the person moves between faces. A face that appears later, such as\n * Author when a document opens, announces itself in the tab strip instead of\n * taking the dock over.\n */\nexport function ActivityDock({\n onClose,\n onOpenContent,\n mcp,\n scope,\n}: {\n onClose: () => void;\n onOpenContent: () => void;\n mcp?: SessionMcpViewState;\n /** Names what the activity face is showing when it is not the session itself, such as a workflow step. */\n scope?: string;\n}) {\n const activeId = useStore(sessionsStore, (state) => state.activeId);\n const connection = useStore(sessionsStore, (state) =>\n state.activeId === null ? undefined : state.byId[state.activeId],\n );\n const updateRequired = useStore(sessionsStore, (state) => state.updateRequired);\n const statuses = useActiveSession((state) => state.statuses);\n const widgets = useActiveSession((state) => state.widgets);\n const slotProps = usePluginSlotProps(activeId, onOpenContent);\n const tab = useStore(uiStore, (state) => dockTabFor(state, activeId));\n const dockFaces = useDockFaces(activeId).filter(\n (face) => face.requiredMinorMode === undefined || slotProps.activeMinorModes?.includes(face.requiredMinorMode),\n );\n const selectedFace = dockFaces.find((face) => face.id === tab);\n const mcpEnabled = mcp?.snapshot?.enabled === true;\n // Display only: a saved face that is not available yet (Author before its\n // document opens) shows Activity and comes back when it does.\n const resolvedTab =\n tab === 'context' || tab === 'activity' || (tab === 'mcp' && mcpEnabled) || selectedFace !== undefined\n ? tab\n : 'activity';\n const DockPanel = selectedFace?.panel;\n const badges = useDockFaceBadges(dockFaces, activeId);\n const attention = useAppearingFaces(\n activeId,\n dockFaces.map((face) => face.id),\n ).filter((id) => id !== resolvedTab);\n const workspaceId = useStore(sessionsStore, (state) =>\n state.activeId === null ? undefined : state.byId[state.activeId]?.summary.workspaceId,\n );\n const compositionSnapshot = useStore(webPluginCompositionStore);\n const compositionState = webPluginMountState(\n activeId === null ? { scope: 'global' } : { scope: 'session', sessionId: activeId, workspaceId: workspaceId ?? '' },\n compositionSnapshot,\n );\n const groups = useActivityGroups(statuses, widgets, activeId);\n const ordinaryGroups = groups.filter((group) => group.placement !== 'bottom');\n const pinnedGroups = groups.filter((group) => group.placement === 'bottom');\n const busy = groups.filter((group) => group.active).length;\n\n return (\n <aside\n data-testid=\"activity-dock\"\n className=\"flex w-[min(360px,calc(100vw-48px))] shrink-0 flex-col overflow-hidden border-l border-po-border-soft bg-po-rail sm:w-[360px]\"\n >\n <div className=\"flex h-16 shrink-0 items-end gap-6 border-b border-po-border-soft px-5\">\n <DockTabs\n contributed={dockFaces}\n mcpEnabled={mcpEnabled}\n active={resolvedTab}\n onSelect={(id) => setDockTab(activeId, id)}\n badges={badges}\n attention={attention}\n />\n <span className=\"flex-1\" />\n <Button\n variant=\"ghost\"\n size=\"icon\"\n data-testid=\"activity-close\"\n aria-label=\"Hide activity\"\n title=\"Hide activity\"\n onClick={onClose}\n className=\"mb-4 text-po-dim\"\n >\n <CloseIcon aria-hidden className=\"size-3.5\" />\n </Button>\n </div>\n\n {resolvedTab === 'mcp' && mcp !== undefined ? (\n <SessionMcpTools key={activeId} state={mcp} />\n ) : DockPanel !== undefined ? (\n <DockPanel {...slotProps} />\n ) : resolvedTab === 'context' ? (\n <ContextPanel />\n ) : (\n <>\n <div data-testid=\"activity-scroll\" className=\"flex min-h-0 flex-1 flex-col gap-3 overflow-y-auto p-4\">\n {scope === undefined ? null : (\n <p data-testid=\"activity-scope\" className=\"px-1 text-sm text-po-dim\">\n {scope}\n </p>\n )}\n {connection?.attach === 'offline' ? (\n <output\n data-testid=\"activity-offline\"\n className={updateRequired ? 'block px-1 text-sm text-po-magenta' : 'block px-1 text-sm text-po-dim'}\n >\n {connection.reason || 'Reconnecting'}\n </output>\n ) : null}\n {compositionState.phase === 'error' ? (\n <div\n data-testid=\"activity-error\"\n role=\"alert\"\n className=\"flex items-center justify-between gap-3 rounded-lg border border-po-border-soft px-4 py-3\"\n >\n <span className=\"text-sm text-po-dim\">Activity failed to load</span>\n <Button\n variant=\"outline\"\n size=\"xs\"\n data-testid=\"activity-retry\"\n onClick={() => void retryWebPluginCompositions().catch((error: unknown) => console.error(error))}\n >\n Retry\n </Button>\n </div>\n ) : null}\n {groups.length === 0 && compositionState.phase === 'loading' ? (\n <Placeholder\n testId=\"activity-loading\"\n title=\"Loading activity\"\n description=\"Loading the package extensions that supervise work.\"\n />\n ) : null}\n {groups.length === 0 && compositionState.phase !== 'loading' && compositionState.phase !== 'error' ? (\n <Placeholder\n testId=\"activity-empty\"\n title=\"Nothing supervised yet\"\n description=\"A package's group appears here once its extension reports in.\"\n />\n ) : null}\n {ordinaryGroups.map((group) => (\n <ActivityGroupView key={group.name} group={group} slotProps={slotProps} />\n ))}\n\n <PluginSurface slot={HOST_SLOTS.activity} sessionId={activeId} />\n <PromoPanel />\n </div>\n\n {pinnedGroups.length > 0 ? (\n <div data-testid=\"activity-pinned\" className=\"flex shrink-0 flex-col gap-3 px-4 pb-4\">\n {pinnedGroups.map((group) => (\n <ActivityGroupView key={group.name} group={group} slotProps={slotProps} />\n ))}\n </div>\n ) : null}\n\n {/* The busy count overlays the footer hint instead of joining the scroll\n column, so it appearing or clearing never shifts the groups. It\n belongs to the activity face only: on the context face it would be\n a number about a list the reader is not looking at. */}\n <div className=\"relative shrink-0\">\n <p className=\"flex gap-2 border-t border-po-border-soft px-5 py-3 text-sm leading-relaxed text-po-dim\">\n <LightbulbIcon aria-hidden className=\"size-3.5 shrink-0\" />\n Each group is rendered by the package that owns it. The session's summary line stands in until that\n package publishes per-run detail.\n </p>\n {busy > 0 ? (\n <div className=\"absolute inset-0 flex items-center border-t border-po-border-soft bg-po-rail px-4\">\n <output\n data-testid=\"activity-busy\"\n className=\"flex flex-1 items-center gap-2 rounded-lg bg-po-tint-yellow px-3 py-2 text-sm text-po-yellow\"\n >\n <LoaderIcon aria-hidden className=\"size-3.5 animate-spin\" />\n {busy} running in the background\n </output>\n </div>\n ) : null}\n </div>\n </>\n )}\n </aside>\n );\n}\n\n/** Plugin group names are lowercase identifiers; the heading reads in sentence case. */\nfunction sentenceCase(name: string): string {\n return name.charAt(0).toUpperCase() + name.slice(1);\n}\n\nfunction Placeholder({ testId, title, description }: { testId: string; title: string; description: string }) {\n return (\n <div\n data-testid={testId}\n className=\"flex flex-col gap-1 rounded-lg border border-dashed border-po-border px-4 py-5\"\n >\n <span className=\"text-base font-semibold text-po-hi\">{title}</span>\n <span className=\"text-sm text-po-dim\">{description}</span>\n </div>\n );\n}\n\n/** Static and decorative: it names what the dock is for and offers no action. */\nfunction PromoPanel() {\n return (\n <div className=\"relative shrink-0 overflow-hidden rounded-lg border border-po-border-soft px-4 pt-3.5 pb-16\">\n <span className=\"flex items-start gap-3\">\n <SparklesIcon aria-hidden className=\"mt-0.5 size-5 shrink-0 text-po-green\" />\n <span className=\"flex flex-col gap-1\">\n <span className=\"text-base font-semibold text-po-hi\">A more capable you</span>\n <span className=\"text-sm text-po-dim\">Agents, tools, and your codebase. All in one place.</span>\n </span>\n </span>\n <svg\n aria-hidden\n viewBox=\"0 0 320 80\"\n preserveAspectRatio=\"none\"\n className=\"absolute inset-x-0 bottom-0 h-16 w-full\"\n >\n <path d=\"M0 50 C60 30 110 70 170 46 S280 18 320 34 V80 H0Z\" className=\"fill-po-tint-green\" />\n <path d=\"M0 64 C70 46 120 78 190 58 S290 44 320 52 V80 H0Z\" className=\"fill-po-edge-green opacity-40\" />\n <path d=\"M0 74 C80 62 150 82 220 70 S300 64 320 68 V80 H0Z\" className=\"fill-po-green opacity-20\" />\n </svg>\n </div>\n );\n}\n\nfunction ActivityGroupView({\n group,\n slotProps,\n}: {\n group: ActivityGroup;\n slotProps: ReturnType<typeof usePluginSlotProps>;\n}) {\n // Plugins without icon metadata get the host's generic mark rather than nothing.\n const GroupIcon = group.icon ?? ActivityIcon;\n const label = sentenceCase(group.name);\n const heading = (\n <>\n <span className=\"min-w-0 flex-1 truncate text-left text-base font-semibold text-po-hi\">{label}</span>\n {group.keys ? (\n <Kbd data-testid={`activity-keys-${group.name}`} className=\"bg-po-bg\">\n {group.keys}\n </Kbd>\n ) : null}\n </>\n );\n return (\n <div\n data-testid={`activity-${group.name}`}\n data-active={group.active}\n className=\"flex shrink-0 gap-3 rounded-lg border border-po-border-soft px-4 py-4\"\n >\n {/* One marker per head, carrying the busy colour. */}\n <GroupIcon aria-hidden className={`mt-0.5 size-5 shrink-0 ${group.active ? 'text-po-yellow' : 'text-po-hi'}`} />\n <div className=\"flex min-w-0 flex-1 flex-col gap-2\">\n {/* A group that owns a panel opens it from its own name: the tab is\n temporary, so the tab strip carries it only while the reader is\n using it. Only those headings get a chevron. */}\n {group.transientTab === undefined ? (\n <span className=\"flex min-w-0 items-center gap-2\">{heading}</span>\n ) : (\n <Button\n variant=\"ghost\"\n size=\"xs\"\n data-testid={`activity-open-${group.name}`}\n title={`Open ${group.name}`}\n onClick={() => {\n const tab = group.transientTab?.();\n if (tab !== undefined) slotProps.openTransientTab(tab);\n }}\n className=\"group/heading h-auto min-w-0 justify-start gap-2 px-0 py-0 hover:bg-transparent\"\n >\n {heading}\n <ChevronRightIcon aria-hidden className=\"size-4 shrink-0 text-po-faint group-hover/heading:text-po-dim\" />\n </Button>\n )}\n {slotFills(activityGroupSlot(group.name)).length > 0 ? (\n slotProps.renderSlot(activityGroupSlot(group.name))\n ) : (\n <p\n data-testid={`activity-summary-${group.name}`}\n className={`text-sm first-letter:uppercase ${group.active ? 'text-po-yellow' : 'text-po-dim'}`}\n >\n {group.summary || 'Idle'}\n </p>\n )}\n </div>\n </div>\n );\n}\n"],"mappings":"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"}
@@ -1,5 +1,14 @@
1
1
  import { SessionMcpViewState } from "../../lib/useSessionMcp.mjs";
2
2
  //#region src/web/features/activity/ActivityDock.d.ts
3
+ export interface DockFaceSnapshot {
4
+ sessionId: string | null;
5
+ ids: ReadonlySet<string>;
6
+ }
7
+ /**
8
+ * Faces that appeared while this session's dock was already on screen. Faces
9
+ * present when the dock mounts or the session changes are not news.
10
+ */
11
+ export declare function appearedFaces(before: DockFaceSnapshot | undefined, after: DockFaceSnapshot): string[];
3
12
  /**
4
13
  * The column for everything that is not the transcript.
5
14
  *
@@ -12,12 +21,15 @@ import { SessionMcpViewState } from "../../lib/useSessionMcp.mjs";
12
21
  * Each declared group opens the keyed slot activity.<name>; the sections any
13
22
  * plugin registers under that name render there, in slot order, and a group
14
23
  * nobody fills shows the one-line summary the session's footer publishes.
24
+ *
25
+ * Only the person moves between faces. A face that appears later, such as
26
+ * Author when a document opens, announces itself in the tab strip instead of
27
+ * taking the dock over.
15
28
  */
16
- export declare function ActivityDock({ onClose, onOpenContent, mcp, tabId, scope }: {
29
+ export declare function ActivityDock({ onClose, onOpenContent, mcp, scope }: {
17
30
  onClose: () => void;
18
31
  onOpenContent: () => void;
19
32
  mcp?: SessionMcpViewState;
20
- tabId?: string;
21
33
  /** Names what the activity face is showing when it is not the session itself, such as a workflow step. */
22
34
  scope?: string;
23
35
  }): import("react").JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"ActivityDock.d.mts","names":[],"sources":["../../../../src/web/features/activity/ActivityDock.tsx"],"mappings":";;;;;;;;;;;;;;;wBAmDgB,eACd,SACA,eACA,KACA,OACA;EAEA;EACA;EACA,MAAM;EACN;;EAEA;oBACD,IAAA"}
1
+ {"version":3,"file":"ActivityDock.d.mts","names":[],"sources":["../../../../src/web/features/activity/ActivityDock.tsx"],"mappings":";;iBAiCiB;EACf;EACA,KAAK;;;;;;wBAOS,cAAc,QAAQ,8BAA8B,OAAO;;;;;;;;;;;;;;;;;;wBAuC3D,eACd,SACA,eACA,KACA;EAEA;EACA;EACA,MAAM;;EAEN;oBACD,IAAA"}