@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.
- package/dist/index.cjs +3 -1
- package/dist/index.d.mts +3 -3
- package/dist/index.mjs +3 -3
- package/dist/views.cjs +1 -0
- package/dist/views.d.mts +2 -2
- package/dist/views.mjs +2 -2
- package/dist/web/features/activity/ActivityDock.cjs +43 -29
- package/dist/web/features/activity/ActivityDock.cjs.map +1 -1
- package/dist/web/features/activity/ActivityDock.d.mts +14 -2
- package/dist/web/features/activity/ActivityDock.d.mts.map +1 -1
- package/dist/web/features/activity/ActivityDock.mjs +46 -33
- package/dist/web/features/activity/ActivityDock.mjs.map +1 -1
- package/dist/web/features/activity/DockTabs.cjs +52 -16
- package/dist/web/features/activity/DockTabs.cjs.map +1 -1
- package/dist/web/features/activity/DockTabs.d.mts +10 -1
- package/dist/web/features/activity/DockTabs.d.mts.map +1 -1
- package/dist/web/features/activity/DockTabs.mjs +54 -18
- package/dist/web/features/activity/DockTabs.mjs.map +1 -1
- package/dist/web/features/selection/SelectionBar.cjs +1 -1
- package/dist/web/features/selection/SelectionBar.cjs.map +1 -1
- package/dist/web/features/selection/SelectionBar.mjs +1 -1
- package/dist/web/features/selection/SelectionBar.mjs.map +1 -1
- package/dist/web/features/session/Composer.cjs +2 -1
- package/dist/web/features/session/Composer.cjs.map +1 -1
- package/dist/web/features/session/Composer.d.mts.map +1 -1
- package/dist/web/features/session/Composer.mjs +2 -1
- package/dist/web/features/session/Composer.mjs.map +1 -1
- package/dist/web/features/session/MentionPreviews.cjs +32 -0
- package/dist/web/features/session/MentionPreviews.cjs.map +1 -1
- package/dist/web/features/session/MentionPreviews.d.mts.map +1 -1
- package/dist/web/features/session/MentionPreviews.mjs +33 -1
- package/dist/web/features/session/MentionPreviews.mjs.map +1 -1
- package/dist/web/lib/composerCompletion.cjs +11 -4
- package/dist/web/lib/composerCompletion.cjs.map +1 -1
- package/dist/web/lib/composerCompletion.d.mts +8 -2
- package/dist/web/lib/composerCompletion.d.mts.map +1 -1
- package/dist/web/lib/composerCompletion.mjs +11 -4
- package/dist/web/lib/composerCompletion.mjs.map +1 -1
- package/dist/web/lib/composition.cjs +20 -17
- package/dist/web/lib/composition.cjs.map +1 -1
- package/dist/web/lib/composition.d.mts +5 -15
- package/dist/web/lib/composition.d.mts.map +1 -1
- package/dist/web/lib/composition.mjs +19 -17
- package/dist/web/lib/composition.mjs.map +1 -1
- package/dist/web/stores/uiStore.cjs +25 -10
- package/dist/web/stores/uiStore.cjs.map +1 -1
- package/dist/web/stores/uiStore.d.mts +10 -3
- package/dist/web/stores/uiStore.d.mts.map +1 -1
- package/dist/web/stores/uiStore.mjs +25 -11
- package/dist/web/stores/uiStore.mjs.map +1 -1
- 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,
|
|
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,
|
|
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,
|
|
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
|
-
/**
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
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,
|
|
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
|
|
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
|
|
49
|
-
|
|
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,
|
|
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":"
|
|
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"}
|