@agimon-ai/po-web-dashboard 0.0.0-alpha.26 → 0.0.0-alpha.28
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 +0 -1
- package/dist/index.d.mts +3 -3
- package/dist/index.mjs +2 -2
- package/dist/types/remoteAccess.cjs.map +1 -1
- package/dist/types/remoteAccess.d.mts +0 -28
- package/dist/types/remoteAccess.d.mts.map +1 -1
- package/dist/types/remoteAccess.mjs.map +1 -1
- package/dist/types.d.mts +2 -2
- package/dist/views.cjs +0 -4
- package/dist/views.d.mts +1 -3
- package/dist/views.mjs +1 -3
- package/dist/web/components/Remote.fixture.cjs +1 -5
- package/dist/web/components/Remote.fixture.cjs.map +1 -1
- package/dist/web/components/Remote.fixture.mjs +1 -5
- package/dist/web/components/Remote.fixture.mjs.map +1 -1
- package/dist/web/features/remote/RemoteAccessDialog.cjs +2 -6
- package/dist/web/features/remote/RemoteAccessDialog.cjs.map +1 -1
- package/dist/web/features/remote/RemoteAccessDialog.d.mts.map +1 -1
- package/dist/web/features/remote/RemoteAccessDialog.mjs +2 -6
- package/dist/web/features/remote/RemoteAccessDialog.mjs.map +1 -1
- package/dist/web/features/remote/RemoteAccessOptions.cjs +0 -28
- package/dist/web/features/remote/RemoteAccessOptions.cjs.map +1 -1
- package/dist/web/features/remote/RemoteAccessOptions.d.mts.map +1 -1
- package/dist/web/features/remote/RemoteAccessOptions.mjs +0 -28
- package/dist/web/features/remote/RemoteAccessOptions.mjs.map +1 -1
- package/dist/web/features/sessions/useSessionRail.cjs +1 -1
- package/dist/web/features/sessions/useSessionRail.cjs.map +1 -1
- package/dist/web/features/sessions/useSessionRail.mjs +1 -1
- package/dist/web/features/sessions/useSessionRail.mjs.map +1 -1
- package/dist/web/lib/remoteApi.cjs +1 -8
- package/dist/web/lib/remoteApi.cjs.map +1 -1
- package/dist/web/lib/remoteApi.d.mts +1 -8
- package/dist/web/lib/remoteApi.d.mts.map +1 -1
- package/dist/web/lib/remoteApi.mjs +1 -8
- package/dist/web/lib/remoteApi.mjs.map +1 -1
- package/dist/web/stores/remoteAccessStore.cjs +1 -15
- package/dist/web/stores/remoteAccessStore.cjs.map +1 -1
- package/dist/web/stores/remoteAccessStore.d.mts +1 -3
- package/dist/web/stores/remoteAccessStore.d.mts.map +1 -1
- package/dist/web/stores/remoteAccessStore.mjs +2 -15
- package/dist/web/stores/remoteAccessStore.mjs.map +1 -1
- package/package.json +5 -5
- package/dist/web/features/remote/HandoverProgress.cjs +0 -28
- package/dist/web/features/remote/HandoverProgress.cjs.map +0 -1
- package/dist/web/features/remote/HandoverProgress.d.mts +0 -12
- package/dist/web/features/remote/HandoverProgress.d.mts.map +0 -1
- package/dist/web/features/remote/HandoverProgress.mjs +0 -28
- package/dist/web/features/remote/HandoverProgress.mjs.map +0 -1
- package/dist/web/features/remote/SandboxWorkspaces.cjs +0 -87
- package/dist/web/features/remote/SandboxWorkspaces.cjs.map +0 -1
- package/dist/web/features/remote/SandboxWorkspaces.d.mts +0 -7
- package/dist/web/features/remote/SandboxWorkspaces.d.mts.map +0 -1
- package/dist/web/features/remote/SandboxWorkspaces.mjs +0 -87
- package/dist/web/features/remote/SandboxWorkspaces.mjs.map +0 -1
package/dist/index.cjs
CHANGED
|
@@ -126,7 +126,6 @@ exports.applyCaptureFrame = require_captureStore.applyCaptureFrame;
|
|
|
126
126
|
exports.applyHistoryPage = require_sessionStore.applyHistoryPage;
|
|
127
127
|
exports.applyProtocolQueue = require_sessionStore.applyProtocolQueue;
|
|
128
128
|
exports.applyProtocolTranscript = require_sessionStore.applyProtocolTranscript;
|
|
129
|
-
exports.applyRemoteState = require_remoteAccessStore.applyRemoteState;
|
|
130
129
|
exports.applySelectionAnswer = require_sessionModel.applySelectionAnswer;
|
|
131
130
|
exports.applySessionBacklog = require_sessionsStore.applySessionBacklog;
|
|
132
131
|
exports.applySessionFrame = require_sessionStore.applySessionFrame;
|
package/dist/index.d.mts
CHANGED
|
@@ -44,7 +44,7 @@ import { WebPluginCompositionPhase, WebPluginCompositionState, WebPluginMountSta
|
|
|
44
44
|
import { focusPrompt, registerPromptInput } from "./web/lib/promptFocus.mjs";
|
|
45
45
|
import { toQueuedEntries, toTimelineEntries } from "./web/lib/protocolTimeline.mjs";
|
|
46
46
|
import { qrMatrix } from "./web/lib/qrMatrix.mjs";
|
|
47
|
-
import {
|
|
47
|
+
import { PairingResult, StateResult, approvePairing, denyPairing, disableRemoteAccess, enableRemoteAccess, fetchRemoteState, mintPairingCode, revokeDevice, revokeTrustedDevice, saveRemoteSettings } from "./web/lib/remoteApi.mjs";
|
|
48
48
|
import { rememberHostChannelKey, rememberedHostChannelKey, resetSealedSessions, restoreSealedSession, sealedHttpSession, sealedProtocolSession, sealedSession } from "./web/lib/sealedSession.mjs";
|
|
49
49
|
import { bindSessionActivityRenderer, releaseSessionActivityRenderer, renderSessionActivity } from "./web/lib/sessionActivityRenderer.mjs";
|
|
50
50
|
import { SessionAsset, StoredSessionAttachment, loadSessionAsset, uploadSessionAttachment } from "./web/lib/sessionAsset.mjs";
|
|
@@ -67,7 +67,7 @@ import { bindSessionFileLinkModes, sessionMinorModes } from "./web/stores/fileLi
|
|
|
67
67
|
import { EMPTY_NEW_SESSION_DRAFT, NewSessionDraft, NewSessionState, closeNewSession, createPlainSession, newSessionDraftStore, newSessionStore, openNewSession, resetNewSessionStore, setNewSessionName } from "./web/stores/newSessionStore.mjs";
|
|
68
68
|
import { PaletteState, closePalette, openPalette, paletteStore, setPalettePath, togglePalette } from "./web/stores/paletteStore.mjs";
|
|
69
69
|
import { RailDialogState, ResumeDraft, ResumeTarget, closeResumeDialog, openResumeDialog, railDialogStore, railRestartStore, resetRailDialogStore, restartDashboardSession, resumeDashboardSession, resumeDraftStore, updateResumeDraft } from "./web/stores/railDialogStore.mjs";
|
|
70
|
-
import { PasskeySupportView, RemoteAccessState, RemoteStep, addPasskey,
|
|
70
|
+
import { PasskeySupportView, RemoteAccessState, RemoteStep, addPasskey, approveDevice, closeRemoteDialog, denyDevice, newPairingCode, openRemoteDialog, refreshPasskeys, refreshRemoteState, remoteAccessStore, revokePairedDevice, revokeTrustedNativeDevice, showRemoteOptions, turnRemoteAccessOff, turnRemoteAccessOn, updateRemoteSettings } from "./web/stores/remoteAccessStore.mjs";
|
|
71
71
|
import { TemplateConfiguration, configuredTemplate, ensureTemplateConfiguration, refreshTemplateConfiguration, saveTemplateDefault, templateStore, useTemplateConfiguration } from "./web/stores/templateStore.mjs";
|
|
72
72
|
import { ThemeState, applyStoredTheme, availableThemes, selectTheme, themeStore } from "./web/stores/themeStore.mjs";
|
|
73
73
|
import { ToolPromptState, markToolPromptFailed, resetToolPromptStore, toolPromptStore } from "./web/stores/toolPromptStore.mjs";
|
|
@@ -80,4 +80,4 @@ import { WorkspaceAdmissionDraft, admitDashboardWorkspace, resetWorkspaceAdmissi
|
|
|
80
80
|
import { EMPTY_SETTINGS_DRAFT, SettingsDraftState, SettingsDraftTarget, discardSettingsDraft, loadSettingsDraft, saveSettingsDraft, setSettingsDraft, settingsDraftKey, settingsDraftStore } from "./web/stores/settingsDraftStore.mjs";
|
|
81
81
|
import { dashboardStateFor, useDashboardState } from "./web/stores/dashboardStateStore.mjs";
|
|
82
82
|
import { DashboardRendererProvider, DashboardRenderers } from "./web/lib/dashboardRenderers.mjs";
|
|
83
|
-
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, EnableResult, 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, WebTemplateCatalog, WebTemplateDecision, WebTemplateDiagnostic, WorkspaceAdmissionDraft, WorkspaceResult, WorkspacesResult, WorkspacesState, WriteConfigResult, abbreviateCwd, abortCommand, abortRun, acquireModelContext, activateWebPluginSession, activateWebPluginWorkspace, activeSessionId, activityGroupSlot, activityGroups, addDevProxyTarget, addPasskey, admitDashboardWorkspace, admitWorkspace, ansiSegments, answerDialogConfirm, answerDialogValue, answerLogin, appendComposerDraft, appendComposerQuote, appendQueued, appendUserPrompt, applyCaptureFrame, applyHistoryPage, applyProtocolQueue, applyProtocolTranscript, applyRemoteState, applySelectionAnswer, applySessionBacklog, applySessionFrame, applySessionLifecycle, applySessionRemoved, applySessionUpsert, applySessionsSnapshot, applyStoredTheme, applyThreadFrame, applyThreadTranscriptFrame, applyWorkspaceRemoved, applyWorkspaceUpsert, applyWorkspacesSnapshot, approveDevice, approvePairing, assertionFor, attachComposerCapture, attachComposerContext, attachmentPrompt, autoSelectedDockFace, availableThemes, beginSessionReplay, beginSessionTransfer, bindBundledNativeTemplates, bindBundledWebTemplates, bindDashboardTranscriptWatcher, bindFileLinkModes, bindHistoryReader, 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, createDevProxyTarget, createPagedTranscript, createPlainSession, createProtocolHubSocket, createProtocolLink, createSession, createSessionMcpClient, createToolCompletionTabs, 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, logoutProvider, markSocketClosed, markToolPromptFailed, markUpdateRequired, mediaKindFor, menuStore, mergeScopedPlugins, minorModes, mintPairingCode, nativeTemplateCatalog, newPairingCode, newSessionDraftStore, newSessionStore, noSessions, notifyHubConnected, onCaptureStatus, onComposerSubmitted, onHubConnected, openNewSession, openPalette, openRemoteDialog, openResumeDialog, openTransientTab, ownerLabel, ownersOf, paletteCommands, paletteStore, parseFileMentions, 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, 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, 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, setWebPluginLoadDiagnostics, settingsDraftKey, settingsDraftStore, settingsKeyOf, settingsLockedReason, settingsSection, settingsSections, showRemoteOptions, signInWithPasskey, slotFills, 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, 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, webPluginRegistryRevision, webPluginsInstalled, webTabs, webTemplateCatalog, workspaceAdmissionStore, workspaceName, workspaceSlotFills, workspacesStore, writeImageSettings, writeRepositorySelection, writeSettingsValue };
|
|
83
|
+
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, WebTemplateCatalog, WebTemplateDecision, WebTemplateDiagnostic, WorkspaceAdmissionDraft, WorkspaceResult, WorkspacesResult, WorkspacesState, WriteConfigResult, abbreviateCwd, abortCommand, abortRun, acquireModelContext, 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, assertionFor, attachComposerCapture, attachComposerContext, attachmentPrompt, autoSelectedDockFace, availableThemes, beginSessionReplay, beginSessionTransfer, bindBundledNativeTemplates, bindBundledWebTemplates, bindDashboardTranscriptWatcher, bindFileLinkModes, bindHistoryReader, 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, createDevProxyTarget, createPagedTranscript, createPlainSession, createProtocolHubSocket, createProtocolLink, createSession, createSessionMcpClient, createToolCompletionTabs, 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, logoutProvider, markSocketClosed, markToolPromptFailed, markUpdateRequired, mediaKindFor, menuStore, mergeScopedPlugins, minorModes, mintPairingCode, nativeTemplateCatalog, newPairingCode, newSessionDraftStore, newSessionStore, noSessions, notifyHubConnected, onCaptureStatus, onComposerSubmitted, onHubConnected, openNewSession, openPalette, openRemoteDialog, openResumeDialog, openTransientTab, ownerLabel, ownersOf, paletteCommands, paletteStore, parseFileMentions, 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, 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, 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, setWebPluginLoadDiagnostics, settingsDraftKey, settingsDraftStore, settingsKeyOf, settingsLockedReason, settingsSection, settingsSections, showRemoteOptions, signInWithPasskey, slotFills, 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, 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, webPluginRegistryRevision, webPluginsInstalled, webTabs, webTemplateCatalog, workspaceAdmissionStore, workspaceName, workspaceSlotFills, workspacesStore, writeImageSettings, writeRepositorySelection, writeSettingsValue };
|
package/dist/index.mjs
CHANGED
|
@@ -62,7 +62,7 @@ import { EMPTY_NEW_SESSION_DRAFT, closeNewSession, createPlainSession, newSessio
|
|
|
62
62
|
import { createPagedTranscript } from "./web/stores/pagedTranscriptStore.mjs";
|
|
63
63
|
import { closePalette, openPalette, paletteStore, setPalettePath, togglePalette } from "./web/stores/paletteStore.mjs";
|
|
64
64
|
import { closeResumeDialog, openResumeDialog, railDialogStore, railRestartStore, resetRailDialogStore, restartDashboardSession, resumeDashboardSession, resumeDraftStore, updateResumeDraft } from "./web/stores/railDialogStore.mjs";
|
|
65
|
-
import { addPasskey,
|
|
65
|
+
import { addPasskey, approveDevice, closeRemoteDialog, denyDevice, newPairingCode, openRemoteDialog, refreshPasskeys, refreshRemoteState, remoteAccessStore, revokePairedDevice, revokeTrustedNativeDevice, showRemoteOptions, turnRemoteAccessOff, turnRemoteAccessOn, updateRemoteSettings } from "./web/stores/remoteAccessStore.mjs";
|
|
66
66
|
import { dispatchHeldSessionChannel, heldSessionChannels, holdSessionChannels } from "./web/stores/sessionChannelHoldsStore.mjs";
|
|
67
67
|
import { configuredTemplate, ensureTemplateConfiguration, refreshTemplateConfiguration, saveTemplateDefault, templateStore, useTemplateConfiguration } from "./web/stores/templateStore.mjs";
|
|
68
68
|
import { applyStoredTheme, availableThemes, selectTheme, themeStore } from "./web/stores/themeStore.mjs";
|
|
@@ -80,4 +80,4 @@ import { admitDashboardWorkspace, resetWorkspaceAdmission, updateWorkspaceAdmiss
|
|
|
80
80
|
import { dialogDraftStore, updateDialogDraft, useDialogDraft } from "./web/stores/dialogDraftStore.mjs";
|
|
81
81
|
import { EMPTY_SETTINGS_DRAFT, discardSettingsDraft, loadSettingsDraft, saveSettingsDraft, setSettingsDraft, settingsDraftKey, settingsDraftStore } from "./web/stores/settingsDraftStore.mjs";
|
|
82
82
|
import { dashboardStateFor, useDashboardState } from "./web/stores/dashboardStateStore.mjs";
|
|
83
|
-
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, activateWebPluginSession, activateWebPluginWorkspace, activeSessionId, activityGroupSlot, activityGroups, addDevProxyTarget, addPasskey, admitDashboardWorkspace, admitWorkspace, ansiSegments, answerDialogConfirm, answerDialogValue, answerLogin, appendComposerDraft, appendComposerQuote, appendQueued, appendUserPrompt, applyCaptureFrame, applyHistoryPage, applyProtocolQueue, applyProtocolTranscript,
|
|
83
|
+
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, 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, assertionFor, attachComposerCapture, attachComposerContext, attachmentPrompt, autoSelectedDockFace, availableThemes, beginSessionReplay, beginSessionTransfer, bindBundledNativeTemplates, bindBundledWebTemplates, bindDashboardTranscriptWatcher, bindFileLinkModes, bindHistoryReader, 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, createDevProxyTarget, createPagedTranscript, createPlainSession, createProtocolHubSocket, createProtocolLink, createSession, createSessionMcpClient, createToolCompletionTabs, 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, logoutProvider, markSocketClosed, markToolPromptFailed, markUpdateRequired, mediaKindFor, menuStore, mergeScopedPlugins, minorModes, mintPairingCode, nativeTemplateCatalog, newPairingCode, newSessionDraftStore, newSessionStore, noSessions, notifyHubConnected, onCaptureStatus, onComposerSubmitted, onHubConnected, openNewSession, openPalette, openRemoteDialog, openResumeDialog, openTransientTab, ownerLabel, ownersOf, paletteCommands, paletteStore, parseFileMentions, 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, 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, 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, setWebPluginLoadDiagnostics, settingsDraftKey, settingsDraftStore, settingsKeyOf, settingsLockedReason, settingsSection, settingsSections, showRemoteOptions, signInWithPasskey, slotFills, 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, 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, webPluginRegistryRevision, webPluginsInstalled, webTabs, webTemplateCatalog, workspaceAdmissionStore, workspaceName, workspaceSlotFills, workspacesStore, writeImageSettings, writeRepositorySelection, writeSettingsValue };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remoteAccess.cjs","names":[],"sources":["../../src/types/remoteAccess.ts"],"sourcesContent":["/**\n * Wire vocabulary for remote access, shared by the hub routes and the cockpit.\n *\n * Remote access binds a second loopback listener that a tunnel points at, and\n * everything arriving there must prove it holds a paired session. The\n * discriminator is the listening socket, not a header: a tunnel connects from\n * 127.0.0.1 like every local client, and there is no header a remote caller\n * cannot forge.\n */\n\n/** REST surface for the remote-access control plane; local callers only, except turn-off and revoke. */\nexport const REMOTE_API_ROUTE = '/api/remote';\n/** Direct endpoint that establishes one scoped end-to-end channel. */\nexport const REMOTE_CHANNEL_ROUTE = `${REMOTE_API_ROUTE}/channel`;\n/** The only authenticated HTTP gateway exposed on the tunnel listener. */\nexport const REMOTE_HTTP_ROUTE = `${REMOTE_API_ROUTE}/request`;\n/** Device-bound, sealed routes for ephemeral live Web Push registration. */\n/** Trusted native devices; `DELETE ${TRUSTED_DEVICES_ROUTE}/:id` revokes one. Mirrors po-core's constant. */\nexport const TRUSTED_DEVICES_ROUTE = `${REMOTE_API_ROUTE}/trusted-devices`;\nexport const REMOTE_PUSH_ROUTE = `${REMOTE_API_ROUTE}/push`;\nexport const REMOTE_PUSH_KEY_ROUTE = `${REMOTE_PUSH_ROUTE}/key`;\nexport const PROTOCOL_SOCKET_ROUTE = '/api/ws';\n/** The pairing page a scanned QR opens. Unauthenticated on the tunnel listener. */\nexport const PAIRING_PAGE_ROUTE = '/pair';\n/** Where the pairing page posts the scanned code. Unauthenticated on the tunnel listener. */\nexport const PAIRING_CLAIM_ROUTE = '/api/remote/pair';\n/** Polled until the host approves or denies. Unauthenticated on the tunnel listener. */\nexport const PAIRING_STATUS_ROUTE = '/api/remote/pair/status';\n/** Query parameter naming the pairing request; a path parameter would force a wildcard into the allowlist. */\nexport const PAIRING_STATUS_QUERY = 'request';\n/** URL-fragment fields authenticated by seeing the host's physical QR. */\nexport const BUNDLE_SIGNING_KEY_PARAM = 's';\nexport const BUNDLE_MINIMUM_REVISION_PARAM = 'r';\n\n/**\n * Session cookie base name. Rendered `__Host-po_device` by hono's `host`\n * prefix, which refuses the cookie unless it is Secure, Path=/, and\n * Domain-less, so a sibling subdomain can neither read nor overwrite it.\n */\nexport const DEVICE_COOKIE = 'po_device';\n\n/**\n * Passkey ceremonies exposed directly on the pairing surface.\n *\n * Sign-in is unauthenticated because it creates a session. Registration requires\n * the paired device cookie issued after host approval, but remains direct so the\n * self-contained pairing page can offer enrolment before loading the cockpit.\n */\nexport const PASSKEY_AUTH_BEGIN_ROUTE = '/api/remote/passkeys/authenticate/begin';\nexport const PASSKEY_AUTH_FINISH_ROUTE = '/api/remote/passkeys/authenticate/finish';\nexport const PASSKEY_REGISTER_BEGIN_ROUTE = '/api/remote/passkeys/register/begin';\nexport const PASSKEY_REGISTER_FINISH_ROUTE = '/api/remote/passkeys/register/finish';\n\n/** Header carrying a step-up assertion for an action that needs more than a live session. */\nexport const STEP_UP_HEADER = 'x-po-assertion';\n\n/** The vite dev server port; the origin allowlist and vite.config.ts share this. */\nexport const WEB_DEV_SERVER_PORT = 7534;\n\n/** How long a scanned pairing code stays claimable. */\nexport const PAIRING_CODE_TTL_MS = 120_000;\n/** How long the host has to approve or deny a claimed request. */\nexport const PAIRING_REQUEST_TTL_MS = 180_000;\n/** Cookie lifetime when session expiry is switched off; a session cookie can outlive the laptop. */\nexport const COOKIE_CEILING_SECONDS = 30 * 24 * 60 * 60;\n\nexport type TunnelKind = 'quick' | 'named';\nexport type RemoteChannelScope = 'session' | 'protocol' | 'http';\n\n/**\n * How the tunnel is established.\n *\n * `named` carries a hostname rather than discovering one, which is why it is\n * the mode that supports passkeys, a service worker, and durable pairing: all\n * three are bound to the origin, and a quick tunnel's hostname rotates on every\n * start. The token is referenced by path, never stored inline, because it is a\n * Cloudflare account credential and an inlined one ends up in a bug report.\n */\nexport type TunnelConfig =\n | { kind: 'quick' }\n | { kind: 'named'; hostname: string; name?: string; tokenFile?: string; configFile?: string };\n\n
|
|
1
|
+
{"version":3,"file":"remoteAccess.cjs","names":[],"sources":["../../src/types/remoteAccess.ts"],"sourcesContent":["/**\n * Wire vocabulary for remote access, shared by the hub routes and the cockpit.\n *\n * Remote access binds a second loopback listener that a tunnel points at, and\n * everything arriving there must prove it holds a paired session. The\n * discriminator is the listening socket, not a header: a tunnel connects from\n * 127.0.0.1 like every local client, and there is no header a remote caller\n * cannot forge.\n */\n\n/** REST surface for the remote-access control plane; local callers only, except turn-off and revoke. */\nexport const REMOTE_API_ROUTE = '/api/remote';\n/** Direct endpoint that establishes one scoped end-to-end channel. */\nexport const REMOTE_CHANNEL_ROUTE = `${REMOTE_API_ROUTE}/channel`;\n/** The only authenticated HTTP gateway exposed on the tunnel listener. */\nexport const REMOTE_HTTP_ROUTE = `${REMOTE_API_ROUTE}/request`;\n/** Device-bound, sealed routes for ephemeral live Web Push registration. */\n/** Trusted native devices; `DELETE ${TRUSTED_DEVICES_ROUTE}/:id` revokes one. Mirrors po-core's constant. */\nexport const TRUSTED_DEVICES_ROUTE = `${REMOTE_API_ROUTE}/trusted-devices`;\nexport const REMOTE_PUSH_ROUTE = `${REMOTE_API_ROUTE}/push`;\nexport const REMOTE_PUSH_KEY_ROUTE = `${REMOTE_PUSH_ROUTE}/key`;\nexport const PROTOCOL_SOCKET_ROUTE = '/api/ws';\n/** The pairing page a scanned QR opens. Unauthenticated on the tunnel listener. */\nexport const PAIRING_PAGE_ROUTE = '/pair';\n/** Where the pairing page posts the scanned code. Unauthenticated on the tunnel listener. */\nexport const PAIRING_CLAIM_ROUTE = '/api/remote/pair';\n/** Polled until the host approves or denies. Unauthenticated on the tunnel listener. */\nexport const PAIRING_STATUS_ROUTE = '/api/remote/pair/status';\n/** Query parameter naming the pairing request; a path parameter would force a wildcard into the allowlist. */\nexport const PAIRING_STATUS_QUERY = 'request';\n/** URL-fragment fields authenticated by seeing the host's physical QR. */\nexport const BUNDLE_SIGNING_KEY_PARAM = 's';\nexport const BUNDLE_MINIMUM_REVISION_PARAM = 'r';\n\n/**\n * Session cookie base name. Rendered `__Host-po_device` by hono's `host`\n * prefix, which refuses the cookie unless it is Secure, Path=/, and\n * Domain-less, so a sibling subdomain can neither read nor overwrite it.\n */\nexport const DEVICE_COOKIE = 'po_device';\n\n/**\n * Passkey ceremonies exposed directly on the pairing surface.\n *\n * Sign-in is unauthenticated because it creates a session. Registration requires\n * the paired device cookie issued after host approval, but remains direct so the\n * self-contained pairing page can offer enrolment before loading the cockpit.\n */\nexport const PASSKEY_AUTH_BEGIN_ROUTE = '/api/remote/passkeys/authenticate/begin';\nexport const PASSKEY_AUTH_FINISH_ROUTE = '/api/remote/passkeys/authenticate/finish';\nexport const PASSKEY_REGISTER_BEGIN_ROUTE = '/api/remote/passkeys/register/begin';\nexport const PASSKEY_REGISTER_FINISH_ROUTE = '/api/remote/passkeys/register/finish';\n\n/** Header carrying a step-up assertion for an action that needs more than a live session. */\nexport const STEP_UP_HEADER = 'x-po-assertion';\n\n/** The vite dev server port; the origin allowlist and vite.config.ts share this. */\nexport const WEB_DEV_SERVER_PORT = 7534;\n\n/** How long a scanned pairing code stays claimable. */\nexport const PAIRING_CODE_TTL_MS = 120_000;\n/** How long the host has to approve or deny a claimed request. */\nexport const PAIRING_REQUEST_TTL_MS = 180_000;\n/** Cookie lifetime when session expiry is switched off; a session cookie can outlive the laptop. */\nexport const COOKIE_CEILING_SECONDS = 30 * 24 * 60 * 60;\n\nexport type TunnelKind = 'quick' | 'named';\nexport type RemoteChannelScope = 'session' | 'protocol' | 'http';\n\n/**\n * How the tunnel is established.\n *\n * `named` carries a hostname rather than discovering one, which is why it is\n * the mode that supports passkeys, a service worker, and durable pairing: all\n * three are bound to the origin, and a quick tunnel's hostname rotates on every\n * start. The token is referenced by path, never stored inline, because it is a\n * Cloudflare account credential and an inlined one ends up in a bug report.\n */\nexport type TunnelConfig =\n | { kind: 'quick' }\n | { kind: 'named'; hostname: string; name?: string; tokenFile?: string; configFile?: string };\n\n/** Nullable numbers are not used: a disabled toggle keeps its value so flipping it back restores it. */\nexport interface RemoteAccessSettings {\n /** Close the tunnel on a timer. */\n autoCloseEnabled: boolean;\n autoCloseMinutes: number;\n /** Expire paired sessions on idle and on total age. */\n sessionExpiryEnabled: boolean;\n idleMinutes: number;\n absoluteHours: number;\n tunnel: TunnelConfig;\n}\n\nexport interface BundlePairingTrust {\n publicKey: string;\n fingerprint: string;\n revision: number;\n}\n\nexport type RemoteAccessStatus = 'off' | 'starting' | 'on' | 'failed';\n\nexport interface PairedDeviceView {\n id: string;\n label: string;\n userAgent: string;\n /** ISO 8601. */\n createdAt: string;\n /** ISO 8601. */\n lastSeenAt: string;\n /** True for the device making the request, so the UI can say \"this device\". */\n self: boolean;\n}\n\nexport type TrustedDevicePlatform = 'ios' | 'android';\n\n/** What local and remote callers see of a trusted native device: no keys. Mirrors po-core's view. */\nexport interface TrustedDeviceView {\n id: string;\n label: string;\n platform: TrustedDevicePlatform;\n /** ISO 8601. */\n createdAt: string;\n /** ISO 8601. */\n lastSeenAt: string;\n /** True when the calling session signed in with this device's key. */\n self: boolean;\n}\n\nexport interface PairingRequestView {\n id: string;\n userAgent: string;\n /**\n * The address Cloudflare's edge reported. Display only: any local process can\n * reach the tunnel listener directly and set this header to anything, so it\n * never gates a decision. The UI labels it \"reported by the edge\".\n */\n edgeIp: string;\n /** ISO 8601. */\n createdAt: string;\n /** ISO 8601. */\n expiresAt: string;\n}\n\nexport interface RemoteAccessStateView {\n status: RemoteAccessStatus;\n /** Present once the tunnel reports its hostname. */\n publicUrl?: string;\n /** ISO 8601, present while the tunnel is up. */\n startedAt?: string;\n /** ISO 8601, absent when auto-close is switched off. */\n closesAt?: string;\n /** Why the tunnel failed, once it has. */\n error?: string;\n devices: PairedDeviceView[];\n /** Populated for local callers only; a paired phone must not see approval prompts. */\n pending: PairingRequestView[];\n /** Shown to local and remote callers, so a paired device can revoke a lost one. */\n trustedDevices: TrustedDeviceView[];\n settings: RemoteAccessSettings;\n}\n\nexport type PairingStatus = 'pending' | 'approved' | 'denied' | 'expired' | 'consumed';\n\nexport type TunnelFailure = 'not_installed' | 'spawn_failed' | 'timeout' | 'self_test_failed' | 'exited';\n\nexport interface TunnelStartInput {\n /** The loopback port the tunnel should publish. */\n port: number;\n config: TunnelConfig;\n /** Arms the exact public origin before the launcher probes through it. */\n acceptOrigin?: (origin: string) => void;\n /** Cancels startup and asks the launcher to stop any process it has spawned. */\n signal?: AbortSignal;\n}\n\nexport type TunnelStartResult =\n | { ok: true; publicOrigin: string; stop: () => Promise<void> }\n | { ok: false; failure: TunnelFailure; message: string };\n\n/**\n * Starting a tunnel, as a port rather than a concrete process.\n *\n * Declared here so a test can inject a fake without pulling in the cloudflared\n * adapter, and so `WebServerOptions` can name the seam without reaching across\n * a layer to do it.\n */\nexport type TunnelLauncher = (input: TunnelStartInput) => Promise<TunnelStartResult>;\n\n/** Hub frame announcing remote-access state; sent to local and remote pages. */\nexport const REMOTE_STATE_TYPE = 'remote_state';\n/** Hub frame announcing a device waiting for approval; sent to local pages only. */\nexport const REMOTE_PAIRING_REQUEST_TYPE = 'remote_pairing_request';\n"],"mappings":";;;;;;;;;;;AAWA,MAAa,mBAAmB;;AAEhC,MAAa,uBAAuB,GAAG,iBAAiB;;AAExD,MAAa,oBAAoB,GAAG,iBAAiB;;;AAGrD,MAAa,wBAAwB,GAAG,iBAAiB;AACzD,MAAa,oBAAoB,GAAG,iBAAiB;AACrD,MAAa,wBAAwB,GAAG,kBAAkB;AAC1D,MAAa,wBAAwB;;AAErC,MAAa,qBAAqB;;AAElC,MAAa,sBAAsB;;AAEnC,MAAa,uBAAuB;;AAEpC,MAAa,uBAAuB;;AAEpC,MAAa,2BAA2B;AACxC,MAAa,gCAAgC;;;;;;AAO7C,MAAa,gBAAgB;;;;;;;;AAS7B,MAAa,2BAA2B;AACxC,MAAa,4BAA4B;AACzC,MAAa,+BAA+B;AAC5C,MAAa,gCAAgC;;AAG7C,MAAa,iBAAiB;;AAG9B,MAAa,sBAAsB;;AAGnC,MAAa,sBAAsB;;AAEnC,MAAa,yBAAyB;;AAEtC,MAAa,yBAAyB;;AA8HtC,MAAa,oBAAoB;;AAEjC,MAAa,8BAA8B"}
|
|
@@ -78,33 +78,6 @@ export type TunnelConfig = {
|
|
|
78
78
|
tokenFile?: string;
|
|
79
79
|
configFile?: string;
|
|
80
80
|
};
|
|
81
|
-
/**
|
|
82
|
-
* Running the cockpit in a container.
|
|
83
|
-
*
|
|
84
|
-
* Tied to remote access rather than offered separately: the reason to contain
|
|
85
|
-
* the cockpit is that a paired device drives an agent holding a shell, and the
|
|
86
|
-
* containment only means anything if it is in place before the tunnel is.
|
|
87
|
-
*
|
|
88
|
-
* The workspace list is the boundary. A hub inside the container cannot create
|
|
89
|
-
* a session in a path that is not mounted, so arbitrary-directory spawning is
|
|
90
|
-
* closed by construction rather than by a check.
|
|
91
|
-
*/
|
|
92
|
-
export interface SandboxSettings {
|
|
93
|
-
enabled: boolean;
|
|
94
|
-
/** Absolute host directories the contained cockpit may work in. */
|
|
95
|
-
workspaces: string[];
|
|
96
|
-
}
|
|
97
|
-
/**
|
|
98
|
-
* A session the handover has to account for.
|
|
99
|
-
*
|
|
100
|
-
* Only what recreating it needs: the container hub spawns a fresh server, so
|
|
101
|
-
* nothing about the host process survives the move.
|
|
102
|
-
*/
|
|
103
|
-
export interface MigratingSession {
|
|
104
|
-
id: string;
|
|
105
|
-
cwd: string;
|
|
106
|
-
name?: string;
|
|
107
|
-
}
|
|
108
81
|
/** Nullable numbers are not used: a disabled toggle keeps its value so flipping it back restores it. */
|
|
109
82
|
export interface RemoteAccessSettings {
|
|
110
83
|
/** Close the tunnel on a timer. */
|
|
@@ -115,7 +88,6 @@ export interface RemoteAccessSettings {
|
|
|
115
88
|
idleMinutes: number;
|
|
116
89
|
absoluteHours: number;
|
|
117
90
|
tunnel: TunnelConfig;
|
|
118
|
-
sandbox: SandboxSettings;
|
|
119
91
|
}
|
|
120
92
|
export interface BundlePairingTrust {
|
|
121
93
|
publicKey: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remoteAccess.d.mts","names":[],"sources":["../../src/types/remoteAccess.ts"],"mappings":";;;;;;;;;;;qBAWa;;qBAEA;;qBAEA;;;qBAGA;qBACA;qBACA;qBACA;;qBAEA;;qBAEA;;qBAEA;;qBAEA;;qBAEA;qBACA;;;;;;qBAOA;;;;;;;;qBASA;qBACA;qBACA;qBACA;;qBAGA;;qBAGA;;qBAGA;;qBAEA;;qBAEA;YAED;YACA;;;;;;;;;;YAWA;EACN;;EACA;EAAe;EAAkB;EAAe;EAAoB
|
|
1
|
+
{"version":3,"file":"remoteAccess.d.mts","names":[],"sources":["../../src/types/remoteAccess.ts"],"mappings":";;;;;;;;;;;qBAWa;;qBAEA;;qBAEA;;;qBAGA;qBACA;qBACA;qBACA;;qBAEA;;qBAEA;;qBAEA;;qBAEA;;qBAEA;qBACA;;;;;;qBAOA;;;;;;;;qBASA;qBACA;qBACA;qBACA;;qBAGA;;qBAGA;;qBAGA;;qBAEA;;qBAEA;YAED;YACA;;;;;;;;;;YAWA;EACN;;EACA;EAAe;EAAkB;EAAe;EAAoB;;;iBAGzD;;EAEf;EACA;;EAEA;EACA;EACA;EACA,QAAQ;;iBAGO;EACf;EACA;EACA;;YAGU;iBAEK;EACf;EACA;EACA;;EAEA;;EAEA;;EAEA;;YAGU;;iBAGK;EACf;EACA;EACA,UAAU;;EAEV;;EAEA;;EAEA;;iBAGe;EACf;EACA;;;;;;EAMA;;EAEA;;EAEA;;iBAGe;EACf,QAAQ;;EAER;;EAEA;;EAEA;;EAEA;EACA,SAAS;;EAET,SAAS;;EAET,gBAAgB;EAChB,UAAU;;YAGA;YAEA;iBAEK;;EAEf;EACA,QAAQ;;EAER,gBAAgB;;EAEhB,SAAS;;YAGC;EACN;EAAU;EAAsB,YAAY;;EAC5C;EAAW,SAAS;EAAe;;;;;;;;;YAS7B,kBAAkB,OAAO,qBAAqB,QAAQ;;qBAGrD;;qBAEA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remoteAccess.mjs","names":[],"sources":["../../src/types/remoteAccess.ts"],"sourcesContent":["/**\n * Wire vocabulary for remote access, shared by the hub routes and the cockpit.\n *\n * Remote access binds a second loopback listener that a tunnel points at, and\n * everything arriving there must prove it holds a paired session. The\n * discriminator is the listening socket, not a header: a tunnel connects from\n * 127.0.0.1 like every local client, and there is no header a remote caller\n * cannot forge.\n */\n\n/** REST surface for the remote-access control plane; local callers only, except turn-off and revoke. */\nexport const REMOTE_API_ROUTE = '/api/remote';\n/** Direct endpoint that establishes one scoped end-to-end channel. */\nexport const REMOTE_CHANNEL_ROUTE = `${REMOTE_API_ROUTE}/channel`;\n/** The only authenticated HTTP gateway exposed on the tunnel listener. */\nexport const REMOTE_HTTP_ROUTE = `${REMOTE_API_ROUTE}/request`;\n/** Device-bound, sealed routes for ephemeral live Web Push registration. */\n/** Trusted native devices; `DELETE ${TRUSTED_DEVICES_ROUTE}/:id` revokes one. Mirrors po-core's constant. */\nexport const TRUSTED_DEVICES_ROUTE = `${REMOTE_API_ROUTE}/trusted-devices`;\nexport const REMOTE_PUSH_ROUTE = `${REMOTE_API_ROUTE}/push`;\nexport const REMOTE_PUSH_KEY_ROUTE = `${REMOTE_PUSH_ROUTE}/key`;\nexport const PROTOCOL_SOCKET_ROUTE = '/api/ws';\n/** The pairing page a scanned QR opens. Unauthenticated on the tunnel listener. */\nexport const PAIRING_PAGE_ROUTE = '/pair';\n/** Where the pairing page posts the scanned code. Unauthenticated on the tunnel listener. */\nexport const PAIRING_CLAIM_ROUTE = '/api/remote/pair';\n/** Polled until the host approves or denies. Unauthenticated on the tunnel listener. */\nexport const PAIRING_STATUS_ROUTE = '/api/remote/pair/status';\n/** Query parameter naming the pairing request; a path parameter would force a wildcard into the allowlist. */\nexport const PAIRING_STATUS_QUERY = 'request';\n/** URL-fragment fields authenticated by seeing the host's physical QR. */\nexport const BUNDLE_SIGNING_KEY_PARAM = 's';\nexport const BUNDLE_MINIMUM_REVISION_PARAM = 'r';\n\n/**\n * Session cookie base name. Rendered `__Host-po_device` by hono's `host`\n * prefix, which refuses the cookie unless it is Secure, Path=/, and\n * Domain-less, so a sibling subdomain can neither read nor overwrite it.\n */\nexport const DEVICE_COOKIE = 'po_device';\n\n/**\n * Passkey ceremonies exposed directly on the pairing surface.\n *\n * Sign-in is unauthenticated because it creates a session. Registration requires\n * the paired device cookie issued after host approval, but remains direct so the\n * self-contained pairing page can offer enrolment before loading the cockpit.\n */\nexport const PASSKEY_AUTH_BEGIN_ROUTE = '/api/remote/passkeys/authenticate/begin';\nexport const PASSKEY_AUTH_FINISH_ROUTE = '/api/remote/passkeys/authenticate/finish';\nexport const PASSKEY_REGISTER_BEGIN_ROUTE = '/api/remote/passkeys/register/begin';\nexport const PASSKEY_REGISTER_FINISH_ROUTE = '/api/remote/passkeys/register/finish';\n\n/** Header carrying a step-up assertion for an action that needs more than a live session. */\nexport const STEP_UP_HEADER = 'x-po-assertion';\n\n/** The vite dev server port; the origin allowlist and vite.config.ts share this. */\nexport const WEB_DEV_SERVER_PORT = 7534;\n\n/** How long a scanned pairing code stays claimable. */\nexport const PAIRING_CODE_TTL_MS = 120_000;\n/** How long the host has to approve or deny a claimed request. */\nexport const PAIRING_REQUEST_TTL_MS = 180_000;\n/** Cookie lifetime when session expiry is switched off; a session cookie can outlive the laptop. */\nexport const COOKIE_CEILING_SECONDS = 30 * 24 * 60 * 60;\n\nexport type TunnelKind = 'quick' | 'named';\nexport type RemoteChannelScope = 'session' | 'protocol' | 'http';\n\n/**\n * How the tunnel is established.\n *\n * `named` carries a hostname rather than discovering one, which is why it is\n * the mode that supports passkeys, a service worker, and durable pairing: all\n * three are bound to the origin, and a quick tunnel's hostname rotates on every\n * start. The token is referenced by path, never stored inline, because it is a\n * Cloudflare account credential and an inlined one ends up in a bug report.\n */\nexport type TunnelConfig =\n | { kind: 'quick' }\n | { kind: 'named'; hostname: string; name?: string; tokenFile?: string; configFile?: string };\n\n
|
|
1
|
+
{"version":3,"file":"remoteAccess.mjs","names":[],"sources":["../../src/types/remoteAccess.ts"],"sourcesContent":["/**\n * Wire vocabulary for remote access, shared by the hub routes and the cockpit.\n *\n * Remote access binds a second loopback listener that a tunnel points at, and\n * everything arriving there must prove it holds a paired session. The\n * discriminator is the listening socket, not a header: a tunnel connects from\n * 127.0.0.1 like every local client, and there is no header a remote caller\n * cannot forge.\n */\n\n/** REST surface for the remote-access control plane; local callers only, except turn-off and revoke. */\nexport const REMOTE_API_ROUTE = '/api/remote';\n/** Direct endpoint that establishes one scoped end-to-end channel. */\nexport const REMOTE_CHANNEL_ROUTE = `${REMOTE_API_ROUTE}/channel`;\n/** The only authenticated HTTP gateway exposed on the tunnel listener. */\nexport const REMOTE_HTTP_ROUTE = `${REMOTE_API_ROUTE}/request`;\n/** Device-bound, sealed routes for ephemeral live Web Push registration. */\n/** Trusted native devices; `DELETE ${TRUSTED_DEVICES_ROUTE}/:id` revokes one. Mirrors po-core's constant. */\nexport const TRUSTED_DEVICES_ROUTE = `${REMOTE_API_ROUTE}/trusted-devices`;\nexport const REMOTE_PUSH_ROUTE = `${REMOTE_API_ROUTE}/push`;\nexport const REMOTE_PUSH_KEY_ROUTE = `${REMOTE_PUSH_ROUTE}/key`;\nexport const PROTOCOL_SOCKET_ROUTE = '/api/ws';\n/** The pairing page a scanned QR opens. Unauthenticated on the tunnel listener. */\nexport const PAIRING_PAGE_ROUTE = '/pair';\n/** Where the pairing page posts the scanned code. Unauthenticated on the tunnel listener. */\nexport const PAIRING_CLAIM_ROUTE = '/api/remote/pair';\n/** Polled until the host approves or denies. Unauthenticated on the tunnel listener. */\nexport const PAIRING_STATUS_ROUTE = '/api/remote/pair/status';\n/** Query parameter naming the pairing request; a path parameter would force a wildcard into the allowlist. */\nexport const PAIRING_STATUS_QUERY = 'request';\n/** URL-fragment fields authenticated by seeing the host's physical QR. */\nexport const BUNDLE_SIGNING_KEY_PARAM = 's';\nexport const BUNDLE_MINIMUM_REVISION_PARAM = 'r';\n\n/**\n * Session cookie base name. Rendered `__Host-po_device` by hono's `host`\n * prefix, which refuses the cookie unless it is Secure, Path=/, and\n * Domain-less, so a sibling subdomain can neither read nor overwrite it.\n */\nexport const DEVICE_COOKIE = 'po_device';\n\n/**\n * Passkey ceremonies exposed directly on the pairing surface.\n *\n * Sign-in is unauthenticated because it creates a session. Registration requires\n * the paired device cookie issued after host approval, but remains direct so the\n * self-contained pairing page can offer enrolment before loading the cockpit.\n */\nexport const PASSKEY_AUTH_BEGIN_ROUTE = '/api/remote/passkeys/authenticate/begin';\nexport const PASSKEY_AUTH_FINISH_ROUTE = '/api/remote/passkeys/authenticate/finish';\nexport const PASSKEY_REGISTER_BEGIN_ROUTE = '/api/remote/passkeys/register/begin';\nexport const PASSKEY_REGISTER_FINISH_ROUTE = '/api/remote/passkeys/register/finish';\n\n/** Header carrying a step-up assertion for an action that needs more than a live session. */\nexport const STEP_UP_HEADER = 'x-po-assertion';\n\n/** The vite dev server port; the origin allowlist and vite.config.ts share this. */\nexport const WEB_DEV_SERVER_PORT = 7534;\n\n/** How long a scanned pairing code stays claimable. */\nexport const PAIRING_CODE_TTL_MS = 120_000;\n/** How long the host has to approve or deny a claimed request. */\nexport const PAIRING_REQUEST_TTL_MS = 180_000;\n/** Cookie lifetime when session expiry is switched off; a session cookie can outlive the laptop. */\nexport const COOKIE_CEILING_SECONDS = 30 * 24 * 60 * 60;\n\nexport type TunnelKind = 'quick' | 'named';\nexport type RemoteChannelScope = 'session' | 'protocol' | 'http';\n\n/**\n * How the tunnel is established.\n *\n * `named` carries a hostname rather than discovering one, which is why it is\n * the mode that supports passkeys, a service worker, and durable pairing: all\n * three are bound to the origin, and a quick tunnel's hostname rotates on every\n * start. The token is referenced by path, never stored inline, because it is a\n * Cloudflare account credential and an inlined one ends up in a bug report.\n */\nexport type TunnelConfig =\n | { kind: 'quick' }\n | { kind: 'named'; hostname: string; name?: string; tokenFile?: string; configFile?: string };\n\n/** Nullable numbers are not used: a disabled toggle keeps its value so flipping it back restores it. */\nexport interface RemoteAccessSettings {\n /** Close the tunnel on a timer. */\n autoCloseEnabled: boolean;\n autoCloseMinutes: number;\n /** Expire paired sessions on idle and on total age. */\n sessionExpiryEnabled: boolean;\n idleMinutes: number;\n absoluteHours: number;\n tunnel: TunnelConfig;\n}\n\nexport interface BundlePairingTrust {\n publicKey: string;\n fingerprint: string;\n revision: number;\n}\n\nexport type RemoteAccessStatus = 'off' | 'starting' | 'on' | 'failed';\n\nexport interface PairedDeviceView {\n id: string;\n label: string;\n userAgent: string;\n /** ISO 8601. */\n createdAt: string;\n /** ISO 8601. */\n lastSeenAt: string;\n /** True for the device making the request, so the UI can say \"this device\". */\n self: boolean;\n}\n\nexport type TrustedDevicePlatform = 'ios' | 'android';\n\n/** What local and remote callers see of a trusted native device: no keys. Mirrors po-core's view. */\nexport interface TrustedDeviceView {\n id: string;\n label: string;\n platform: TrustedDevicePlatform;\n /** ISO 8601. */\n createdAt: string;\n /** ISO 8601. */\n lastSeenAt: string;\n /** True when the calling session signed in with this device's key. */\n self: boolean;\n}\n\nexport interface PairingRequestView {\n id: string;\n userAgent: string;\n /**\n * The address Cloudflare's edge reported. Display only: any local process can\n * reach the tunnel listener directly and set this header to anything, so it\n * never gates a decision. The UI labels it \"reported by the edge\".\n */\n edgeIp: string;\n /** ISO 8601. */\n createdAt: string;\n /** ISO 8601. */\n expiresAt: string;\n}\n\nexport interface RemoteAccessStateView {\n status: RemoteAccessStatus;\n /** Present once the tunnel reports its hostname. */\n publicUrl?: string;\n /** ISO 8601, present while the tunnel is up. */\n startedAt?: string;\n /** ISO 8601, absent when auto-close is switched off. */\n closesAt?: string;\n /** Why the tunnel failed, once it has. */\n error?: string;\n devices: PairedDeviceView[];\n /** Populated for local callers only; a paired phone must not see approval prompts. */\n pending: PairingRequestView[];\n /** Shown to local and remote callers, so a paired device can revoke a lost one. */\n trustedDevices: TrustedDeviceView[];\n settings: RemoteAccessSettings;\n}\n\nexport type PairingStatus = 'pending' | 'approved' | 'denied' | 'expired' | 'consumed';\n\nexport type TunnelFailure = 'not_installed' | 'spawn_failed' | 'timeout' | 'self_test_failed' | 'exited';\n\nexport interface TunnelStartInput {\n /** The loopback port the tunnel should publish. */\n port: number;\n config: TunnelConfig;\n /** Arms the exact public origin before the launcher probes through it. */\n acceptOrigin?: (origin: string) => void;\n /** Cancels startup and asks the launcher to stop any process it has spawned. */\n signal?: AbortSignal;\n}\n\nexport type TunnelStartResult =\n | { ok: true; publicOrigin: string; stop: () => Promise<void> }\n | { ok: false; failure: TunnelFailure; message: string };\n\n/**\n * Starting a tunnel, as a port rather than a concrete process.\n *\n * Declared here so a test can inject a fake without pulling in the cloudflared\n * adapter, and so `WebServerOptions` can name the seam without reaching across\n * a layer to do it.\n */\nexport type TunnelLauncher = (input: TunnelStartInput) => Promise<TunnelStartResult>;\n\n/** Hub frame announcing remote-access state; sent to local and remote pages. */\nexport const REMOTE_STATE_TYPE = 'remote_state';\n/** Hub frame announcing a device waiting for approval; sent to local pages only. */\nexport const REMOTE_PAIRING_REQUEST_TYPE = 'remote_pairing_request';\n"],"mappings":";;;;;;;;;;;AAWA,MAAa,mBAAmB;;AAEhC,MAAa,uBAAuB,GAAG,iBAAiB;;AAExD,MAAa,oBAAoB,GAAG,iBAAiB;;;AAGrD,MAAa,wBAAwB,GAAG,iBAAiB;AACzD,MAAa,oBAAoB,GAAG,iBAAiB;AACrD,MAAa,wBAAwB,GAAG,kBAAkB;AAC1D,MAAa,wBAAwB;;AAErC,MAAa,qBAAqB;;AAElC,MAAa,sBAAsB;;AAEnC,MAAa,uBAAuB;;AAEpC,MAAa,uBAAuB;;AAEpC,MAAa,2BAA2B;AACxC,MAAa,gCAAgC;;;;;;AAO7C,MAAa,gBAAgB;;;;;;;;AAS7B,MAAa,2BAA2B;AACxC,MAAa,4BAA4B;AACzC,MAAa,+BAA+B;AAC5C,MAAa,gCAAgC;;AAG7C,MAAa,iBAAiB;;AAG9B,MAAa,sBAAsB;;AAGnC,MAAa,sBAAsB;;AAEnC,MAAa,yBAAyB;;AAEtC,MAAa,yBAAyB;;AA8HtC,MAAa,oBAAoB;;AAEjC,MAAa,8BAA8B"}
|
package/dist/types.d.mts
CHANGED
|
@@ -3,9 +3,9 @@ import { AGENT_MODEL_ENTRY_TYPE, API_SESSION_QUERY_PARAM, CONTEXT_ENTRY_TYPE, Co
|
|
|
3
3
|
import { AUTH_LOGINS_API_ROUTE, AUTH_PROVIDERS_API_ROUTE, AuthMethodType, AuthRuntime, AuthRuntimeProvider, LoginEvent, LoginFlowSnapshot, LoginFlowStatus, LoginInteraction, LoginPrompt, LoginPromptView, LoginSelectOption, ProviderAuthMethod, ProviderAuthSummary } from "./types/auth.mjs";
|
|
4
4
|
import { DEV_PROXY_API_ROUTE, DEV_PROXY_PREFIX, DEV_PROXY_TARGETS_ROUTE, DevProxyStateView, DevProxyTarget } from "./types/devProxy.mjs";
|
|
5
5
|
import { MAX_SESSION_FILE_BYTES, MEDIA_TYPES, MediaKind, MediaType, SESSION_FILE_EXPECTED_SHA256_HEADER, SESSION_FILE_ROUTE, SESSION_FILE_SHA256_HEADER, sessionFileUrl } from "./types/media.mjs";
|
|
6
|
-
import { BUNDLE_MINIMUM_REVISION_PARAM, BUNDLE_SIGNING_KEY_PARAM, BundlePairingTrust, COOKIE_CEILING_SECONDS, DEVICE_COOKIE,
|
|
6
|
+
import { BUNDLE_MINIMUM_REVISION_PARAM, BUNDLE_SIGNING_KEY_PARAM, BundlePairingTrust, COOKIE_CEILING_SECONDS, DEVICE_COOKIE, PAIRING_CLAIM_ROUTE, PAIRING_CODE_TTL_MS, PAIRING_PAGE_ROUTE, PAIRING_REQUEST_TTL_MS, PAIRING_STATUS_QUERY, PAIRING_STATUS_ROUTE, PASSKEY_AUTH_BEGIN_ROUTE, PASSKEY_AUTH_FINISH_ROUTE, PASSKEY_REGISTER_BEGIN_ROUTE, PASSKEY_REGISTER_FINISH_ROUTE, PROTOCOL_SOCKET_ROUTE, PairedDeviceView, PairingRequestView, PairingStatus, REMOTE_API_ROUTE, REMOTE_CHANNEL_ROUTE, REMOTE_HTTP_ROUTE, REMOTE_PAIRING_REQUEST_TYPE, REMOTE_PUSH_KEY_ROUTE, REMOTE_PUSH_ROUTE, REMOTE_STATE_TYPE, RemoteAccessSettings, RemoteAccessStateView, RemoteAccessStatus, RemoteChannelScope, STEP_UP_HEADER, TRUSTED_DEVICES_ROUTE, TrustedDevicePlatform, TrustedDeviceView, TunnelConfig, TunnelFailure, TunnelKind, TunnelLauncher, TunnelStartInput, TunnelStartResult, WEB_DEV_SERVER_PORT } from "./types/remoteAccess.mjs";
|
|
7
7
|
import { CreateSessionMcpClientInput, CreatedSessionMcpClient, SessionMcpClient, SessionMcpConfig, SessionMcpRouting, SessionMcpScope, SessionMcpSkill, SessionMcpTool } from "./types/sessionMcp.mjs";
|
|
8
8
|
import { RepositoryCatalogOption, RepositorySelectionChanges, RepositorySelectionValue, RepositorySelectionWriteRequest, RepositorySettingsView, SETTINGS_CONFIG_API_ROUTE, SETTINGS_IMAGES_API_ROUTE, SETTINGS_MODELS_API_ROUTE, SETTINGS_REPOSITORIES_API_ROUTE, SETTINGS_REPOSITORY_API_ROUTE, SETTINGS_REPOSITORY_SELECTION_API_ROUTE, SETTINGS_VALUE_API_ROUTE, SettingsBatchWriteRequest, SettingsConfigView, SettingsErrorView, SettingsImagesView, SettingsImagesWriteRequest, SettingsKeyScope, SettingsModel, SettingsOrigin, SettingsRepository, SettingsScope, SettingsValueView, SettingsWriteRequest } from "./types/settings.mjs";
|
|
9
9
|
import { WebServer, WebServerOptions } from "./types/bridge.mjs";
|
|
10
10
|
import { PoNotificationEntry, parsePoNotificationEntry } from "./types/notification.mjs";
|
|
11
|
-
export { AGENT_MODEL_ENTRY_TYPE, API_SESSION_QUERY_PARAM, ATTACHED_TYPE, ATTACH_ERROR_TYPE, ATTACH_TYPE, AUTH_LOGINS_API_ROUTE, AUTH_PROVIDERS_API_ROUTE, AuthMethodType, AuthRuntime, AuthRuntimeProvider, BRIDGE_STATUS_TYPE, BUNDLE_MINIMUM_REVISION_PARAM, BUNDLE_SIGNING_KEY_PARAM, BridgeState, BridgeStatusFrame, BundlePairingTrust, CONTEXT_ENTRY_TYPE, COOKIE_CEILING_SECONDS, ContextGroupKind, ContextGroupProjection, ContextItemProjection, ContextItemSource, ContextProjection, CreateSessionMcpClientInput, CreatedSessionMcpClient, DEVICE_COOKIE, DEV_PROXY_API_ROUTE, DEV_PROXY_PREFIX, DEV_PROXY_TARGETS_ROUTE, DIALOG_ANSWERED_TYPE, DIRECTORIES_API_ROUTE, DIRECTORY_CHILDREN_API_ROUTE, DevProxyStateView, DevProxyTarget, DirectoryListing, HISTORY_PAGE_SIZE, HISTORY_PAGE_TYPE, HISTORY_REQUEST_TYPE, HUB_HELLO_TYPE, HUB_PROTOCOL_VERSION, HUB_ROLE, HistoryPageFrame, HistoryRequestFrame, HubHelloFrame, LoginEvent, LoginFlowSnapshot, LoginFlowStatus, LoginInteraction, LoginPrompt, LoginPromptView, LoginSelectOption, MAX_SESSION_FILE_BYTES, MEDIA_TYPES, MINOR_MODE_ENTRY_TYPE, MediaKind, MediaType,
|
|
11
|
+
export { AGENT_MODEL_ENTRY_TYPE, API_SESSION_QUERY_PARAM, ATTACHED_TYPE, ATTACH_ERROR_TYPE, ATTACH_TYPE, AUTH_LOGINS_API_ROUTE, AUTH_PROVIDERS_API_ROUTE, AuthMethodType, AuthRuntime, AuthRuntimeProvider, BRIDGE_STATUS_TYPE, BUNDLE_MINIMUM_REVISION_PARAM, BUNDLE_SIGNING_KEY_PARAM, BridgeState, BridgeStatusFrame, BundlePairingTrust, CONTEXT_ENTRY_TYPE, COOKIE_CEILING_SECONDS, ContextGroupKind, ContextGroupProjection, ContextItemProjection, ContextItemSource, ContextProjection, CreateSessionMcpClientInput, CreatedSessionMcpClient, DEVICE_COOKIE, DEV_PROXY_API_ROUTE, DEV_PROXY_PREFIX, DEV_PROXY_TARGETS_ROUTE, DIALOG_ANSWERED_TYPE, DIRECTORIES_API_ROUTE, DIRECTORY_CHILDREN_API_ROUTE, DevProxyStateView, DevProxyTarget, DirectoryListing, HISTORY_PAGE_SIZE, HISTORY_PAGE_TYPE, HISTORY_REQUEST_TYPE, HUB_HELLO_TYPE, HUB_PROTOCOL_VERSION, HUB_ROLE, HistoryPageFrame, HistoryRequestFrame, HubHelloFrame, LoginEvent, LoginFlowSnapshot, LoginFlowStatus, LoginInteraction, LoginPrompt, LoginPromptView, LoginSelectOption, MAX_SESSION_FILE_BYTES, MEDIA_TYPES, MINOR_MODE_ENTRY_TYPE, MediaKind, MediaType, MinorModeActionProjection, MinorModeProjection, MinorModeRecordProjection, PAIRING_CLAIM_ROUTE, PAIRING_CODE_TTL_MS, PAIRING_PAGE_ROUTE, PAIRING_REQUEST_TTL_MS, PAIRING_STATUS_QUERY, PAIRING_STATUS_ROUTE, PASSKEY_AUTH_BEGIN_ROUTE, PASSKEY_AUTH_FINISH_ROUTE, PASSKEY_REGISTER_BEGIN_ROUTE, PASSKEY_REGISTER_FINISH_ROUTE, PO_FOLDERS_API_ROUTE, PROFILE_IDENTITY_ENTRY_TYPE, PROTOCOL_SOCKET_ROUTE, PairedDeviceView, PairingRequestView, PairingStatus, PiSessionHistoryItem, PoNotificationEntry, ProviderAuthMethod, ProviderAuthSummary, REMOTE_API_ROUTE, REMOTE_CHANNEL_ROUTE, REMOTE_HTTP_ROUTE, REMOTE_PAIRING_REQUEST_TYPE, REMOTE_PUSH_KEY_ROUTE, REMOTE_PUSH_ROUTE, REMOTE_STATE_TYPE, REPLAY_TYPE, RESOURCE_CATALOG_ENTRY_TYPE, RemoteAccessSettings, RemoteAccessStateView, RemoteAccessStatus, RemoteChannelScope, RepositoryCatalogOption, RepositorySelectionChanges, RepositorySelectionValue, RepositorySelectionWriteRequest, RepositorySettingsView, SESSIONS_API_ROUTE, SESSION_COMMAND_TYPE, SESSION_FILE_EXPECTED_SHA256_HEADER, SESSION_FILE_ROUTE, SESSION_FILE_SHA256_HEADER, SETTINGS_CONFIG_API_ROUTE, SETTINGS_IMAGES_API_ROUTE, SETTINGS_MODELS_API_ROUTE, SETTINGS_REPOSITORIES_API_ROUTE, SETTINGS_REPOSITORY_API_ROUTE, SETTINGS_REPOSITORY_SELECTION_API_ROUTE, SETTINGS_VALUE_API_ROUTE, STEP_UP_HEADER, SessionCommandFrame, SessionFrame, SessionGitStatus, SessionMcpClient, SessionMcpConfig, SessionMcpRouting, SessionMcpScope, SessionMcpSkill, SessionMcpTool, SessionNativeComposition, SessionPhase, SessionProfile, SessionSummary, SessionWebComposition, SettingsBatchWriteRequest, SettingsConfigView, SettingsErrorView, SettingsImagesView, SettingsImagesWriteRequest, SettingsKeyScope, SettingsModel, SettingsOrigin, SettingsRepository, SettingsScope, SettingsValueView, SettingsWriteRequest, TRUSTED_DEVICES_ROUTE, TrustedDevicePlatform, TrustedDeviceView, TunnelConfig, TunnelFailure, TunnelKind, TunnelLauncher, TunnelStartInput, TunnelStartResult, WEB_DEV_SERVER_PORT, WORKSPACES_API_ROUTE, WebServer, WebServerOptions, WorkspaceSummary, bridgeStatus, hubHello, parsePoNotificationEntry, sessionCommand, sessionFileUrl };
|
package/dist/views.cjs
CHANGED
|
@@ -12,10 +12,8 @@ const require_RefusedCard = require("./web/features/connection/RefusedCard.cjs")
|
|
|
12
12
|
const require_DialogOverlay = require("./web/features/dialogs/DialogOverlay.cjs");
|
|
13
13
|
const require_CommandPalette = require("./web/features/leader/CommandPalette.cjs");
|
|
14
14
|
const require_DevProxyTargets = require("./web/features/remote/DevProxyTargets.cjs");
|
|
15
|
-
const require_HandoverProgress = require("./web/features/remote/HandoverProgress.cjs");
|
|
16
15
|
const require_PairedDeviceList = require("./web/features/remote/PairedDeviceList.cjs");
|
|
17
16
|
const require_PairingApprovalDialog = require("./web/features/remote/PairingApprovalDialog.cjs");
|
|
18
|
-
const require_SandboxWorkspaces = require("./web/features/remote/SandboxWorkspaces.cjs");
|
|
19
17
|
const require_TrustedDeviceList = require("./web/features/remote/TrustedDeviceList.cjs");
|
|
20
18
|
const require_RemoteAccessOptions = require("./web/features/remote/RemoteAccessOptions.cjs");
|
|
21
19
|
const require_RemoteAccessPairing = require("./web/features/remote/RemoteAccessPairing.cjs");
|
|
@@ -67,7 +65,6 @@ exports.DevProxyTargets = require_DevProxyTargets.DevProxyTargets;
|
|
|
67
65
|
exports.DialogOverlay = require_DialogOverlay.DialogOverlay;
|
|
68
66
|
exports.DockTabs = require_DockTabs.DockTabs;
|
|
69
67
|
exports.DormantPanel = require_DormantPanel.DormantPanel;
|
|
70
|
-
exports.HandoverProgress = require_HandoverProgress.HandoverProgress;
|
|
71
68
|
exports.ImageSettings = require_ImageSettings.ImageSettings;
|
|
72
69
|
exports.LoginFlowDialog = require_LoginFlowDialog.LoginFlowDialog;
|
|
73
70
|
exports.METHOD_LABEL = require_LoginFlowDialog.METHOD_LABEL;
|
|
@@ -93,7 +90,6 @@ exports.RemoteControlSettings = require_RemoteControlSettings.RemoteControlSetti
|
|
|
93
90
|
exports.RepositorySettings = require_RepositorySettings.RepositorySettings;
|
|
94
91
|
exports.RepositoryWorkspace = require_RepositoryWorkspace.RepositoryWorkspace;
|
|
95
92
|
exports.ResumeSessionDialog = require_ResumeSessionDialog.ResumeSessionDialog;
|
|
96
|
-
exports.SandboxWorkspaces = require_SandboxWorkspaces.SandboxWorkspaces;
|
|
97
93
|
exports.SelectionBar = require_SelectionBar.SelectionBar;
|
|
98
94
|
exports.SessionActivity = require_SessionActivity.SessionActivity;
|
|
99
95
|
exports.SessionMcp = require_SessionMcp.SessionMcp;
|
package/dist/views.d.mts
CHANGED
|
@@ -11,13 +11,11 @@ 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";
|
|
13
13
|
import { DevProxyTargets } from "./web/features/remote/DevProxyTargets.mjs";
|
|
14
|
-
import { HandoverProgress } from "./web/features/remote/HandoverProgress.mjs";
|
|
15
14
|
import { PairedDeviceList } from "./web/features/remote/PairedDeviceList.mjs";
|
|
16
15
|
import { PairingApprovalDialog } from "./web/features/remote/PairingApprovalDialog.mjs";
|
|
17
16
|
import { RemoteAccessDialog } from "./web/features/remote/RemoteAccessDialog.mjs";
|
|
18
17
|
import { RemoteAccessOptions } from "./web/features/remote/RemoteAccessOptions.mjs";
|
|
19
18
|
import { RemoteAccessPairing } from "./web/features/remote/RemoteAccessPairing.mjs";
|
|
20
|
-
import { SandboxWorkspaces, SandboxWorkspacesProps } from "./web/features/remote/SandboxWorkspaces.mjs";
|
|
21
19
|
import { TrustedDeviceList, TrustedDeviceListView, TrustedDeviceListViewProps } from "./web/features/remote/TrustedDeviceList.mjs";
|
|
22
20
|
import { ModelPopup, SelectionBar } from "./web/features/selection/SelectionBar.mjs";
|
|
23
21
|
import { Composer, addComposerFiles, readComposerFiles } from "./web/features/session/Composer.mjs";
|
|
@@ -53,4 +51,4 @@ import { SettingsPanelHost } from "./web/features/settings/SettingsPanelHost.mjs
|
|
|
53
51
|
import { TemplateSettings } from "./web/features/settings/TemplateSettings.mjs";
|
|
54
52
|
import { TunnelSettings } from "./web/features/settings/TunnelSettings.mjs";
|
|
55
53
|
import { TopBar } from "./web/features/status/TopBar.mjs";
|
|
56
|
-
export { ActivityDock, AppearanceSettings, CommandPalette, Composer, ComposerPrompt, ContextItemDialog, ContextItemDialogProps, ContextPanel, ContextPanelView, ContributedSettings, DevProxyTargets, DialogOverlay, DockTabs, DormantPanel,
|
|
54
|
+
export { ActivityDock, AppearanceSettings, CommandPalette, Composer, ComposerPrompt, ContextItemDialog, ContextItemDialogProps, ContextPanel, ContextPanelView, ContributedSettings, DevProxyTargets, DialogOverlay, DockTabs, DormantPanel, 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, readComposerFiles, sessionActivity, useNewSessionActions, useSessionRail };
|
package/dist/views.mjs
CHANGED
|
@@ -11,10 +11,8 @@ 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";
|
|
13
13
|
import { DevProxyTargets } from "./web/features/remote/DevProxyTargets.mjs";
|
|
14
|
-
import { HandoverProgress } from "./web/features/remote/HandoverProgress.mjs";
|
|
15
14
|
import { PairedDeviceList } from "./web/features/remote/PairedDeviceList.mjs";
|
|
16
15
|
import { PairingApprovalDialog } from "./web/features/remote/PairingApprovalDialog.mjs";
|
|
17
|
-
import { SandboxWorkspaces } from "./web/features/remote/SandboxWorkspaces.mjs";
|
|
18
16
|
import { TrustedDeviceList, TrustedDeviceListView } from "./web/features/remote/TrustedDeviceList.mjs";
|
|
19
17
|
import { RemoteAccessOptions } from "./web/features/remote/RemoteAccessOptions.mjs";
|
|
20
18
|
import { RemoteAccessPairing } from "./web/features/remote/RemoteAccessPairing.mjs";
|
|
@@ -53,4 +51,4 @@ import { SettingsMenu } from "./web/features/settings/SettingsMenu.mjs";
|
|
|
53
51
|
import { RepositoryWorkspace } from "./web/features/settings/RepositoryWorkspace.mjs";
|
|
54
52
|
import { SettingsPanelHost } from "./web/features/settings/SettingsPanelHost.mjs";
|
|
55
53
|
import { TopBar } from "./web/features/status/TopBar.mjs";
|
|
56
|
-
export { ActivityDock, AppearanceSettings, CommandPalette, Composer, ComposerPrompt, ContextItemDialog, ContextPanel, ContextPanelView, ContributedSettings, DevProxyTargets, DialogOverlay, DockTabs, DormantPanel,
|
|
54
|
+
export { ActivityDock, AppearanceSettings, CommandPalette, Composer, ComposerPrompt, ContextItemDialog, ContextPanel, ContextPanelView, ContributedSettings, DevProxyTargets, DialogOverlay, DockTabs, DormantPanel, 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, readComposerFiles, sessionActivity, useNewSessionActions, useSessionRail };
|
|
@@ -28,11 +28,7 @@ const remoteView = {
|
|
|
28
28
|
sessionExpiryEnabled: true,
|
|
29
29
|
idleMinutes: 15,
|
|
30
30
|
absoluteHours: 24,
|
|
31
|
-
tunnel: { kind: "quick" }
|
|
32
|
-
sandbox: {
|
|
33
|
-
enabled: true,
|
|
34
|
-
workspaces: ["/workspace/po"]
|
|
35
|
-
}
|
|
31
|
+
tunnel: { kind: "quick" }
|
|
36
32
|
}
|
|
37
33
|
};
|
|
38
34
|
function seedRemoteStory(patch = {}, proxyPatch = {}) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Remote.fixture.cjs","names":["DEV_PROXY_TARGETS_ROUTE"],"sources":["../../../src/web/components/Remote.fixture.tsx"],"sourcesContent":["import { DEV_PROXY_TARGETS_ROUTE } from '../../types/devProxy.ts';\nimport type { RemoteAccessStateView } from '../../types/remoteAccess.ts';\nimport { devProxyStore, type DevProxyState } from '../stores/devProxyStore.ts';\nimport { remoteAccessStore, type RemoteAccessState } from '../stores/remoteAccessStore.ts';\nimport { mockStoryRequests } from './Story.fixture.tsx';\n\nexport const remoteView: RemoteAccessStateView = {\n status: 'off',\n devices: [\n {\n id: 'story-device',\n label: 'A paired phone with a long descriptive name',\n userAgent: 'Example mobile browser on a personal phone',\n createdAt: '2026-09-01T10:00:00.000Z',\n lastSeenAt: '2026-09-01T10:00:00.000Z',\n self: false,\n },\n ],\n pending: [],\n trustedDevices: [\n {\n id: 'story-trusted-phone',\n label: 'A trusted phone with a long descriptive name',\n platform: 'ios',\n createdAt: '2026-09-01T10:00:00.000Z',\n lastSeenAt: '2026-09-01T10:00:00.000Z',\n self: false,\n },\n ],\n settings: {\n autoCloseEnabled: true,\n autoCloseMinutes: 30,\n sessionExpiryEnabled: true,\n idleMinutes: 15,\n absoluteHours: 24,\n tunnel: { kind: 'quick' },\n
|
|
1
|
+
{"version":3,"file":"Remote.fixture.cjs","names":["DEV_PROXY_TARGETS_ROUTE"],"sources":["../../../src/web/components/Remote.fixture.tsx"],"sourcesContent":["import { DEV_PROXY_TARGETS_ROUTE } from '../../types/devProxy.ts';\nimport type { RemoteAccessStateView } from '../../types/remoteAccess.ts';\nimport { devProxyStore, type DevProxyState } from '../stores/devProxyStore.ts';\nimport { remoteAccessStore, type RemoteAccessState } from '../stores/remoteAccessStore.ts';\nimport { mockStoryRequests } from './Story.fixture.tsx';\n\nexport const remoteView: RemoteAccessStateView = {\n status: 'off',\n devices: [\n {\n id: 'story-device',\n label: 'A paired phone with a long descriptive name',\n userAgent: 'Example mobile browser on a personal phone',\n createdAt: '2026-09-01T10:00:00.000Z',\n lastSeenAt: '2026-09-01T10:00:00.000Z',\n self: false,\n },\n ],\n pending: [],\n trustedDevices: [\n {\n id: 'story-trusted-phone',\n label: 'A trusted phone with a long descriptive name',\n platform: 'ios',\n createdAt: '2026-09-01T10:00:00.000Z',\n lastSeenAt: '2026-09-01T10:00:00.000Z',\n self: false,\n },\n ],\n settings: {\n autoCloseEnabled: true,\n autoCloseMinutes: 30,\n sessionExpiryEnabled: true,\n idleMinutes: 15,\n absoluteHours: 24,\n tunnel: { kind: 'quick' },\n },\n};\n\nexport function seedRemoteStory(patch: Partial<RemoteAccessState> = {}, proxyPatch: Partial<DevProxyState> = {}): void {\n const proxy: DevProxyState = {\n targets: [{ name: 'component-preview', port: 3000, createdAt: 0 }],\n canRegister: true,\n busy: false,\n ...proxyPatch,\n };\n mockStoryRequests({ [`GET ${DEV_PROXY_TARGETS_ROUTE}`]: { targets: proxy.targets, canRegister: proxy.canRegister } });\n devProxyStore.setState(() => proxy);\n remoteAccessStore.setState(() => ({\n step: 'options',\n busy: false,\n view: remoteView,\n pairUrl: 'https://example.invalid/pair#story-only',\n pairCode: 'STORY-CODE',\n pairFingerprint: '0123456789abcdef0123456789abcdef',\n pairRevision: 1,\n passkeys: { supported: true, count: 0 },\n ...patch,\n }));\n}\n"],"mappings":";;;;;AAMA,MAAa,aAAoC;CAC/C,QAAQ;CACR,SAAS,CACP;EACE,IAAI;EACJ,OAAO;EACP,WAAW;EACX,WAAW;EACX,YAAY;EACZ,MAAM;CACR,CACF;CACA,SAAS,CAAC;CACV,gBAAgB,CACd;EACE,IAAI;EACJ,OAAO;EACP,UAAU;EACV,WAAW;EACX,YAAY;EACZ,MAAM;CACR,CACF;CACA,UAAU;EACR,kBAAkB;EAClB,kBAAkB;EAClB,sBAAsB;EACtB,aAAa;EACb,eAAe;EACf,QAAQ,EAAE,MAAM,QAAQ;CAC1B;AACF;AAEA,SAAgB,gBAAgB,QAAoC,CAAC,GAAG,aAAqC,CAAC,GAAS;CACrH,MAAM,QAAuB;EAC3B,SAAS,CAAC;GAAE,MAAM;GAAqB,MAAM;GAAM,WAAW;EAAE,CAAC;EACjE,aAAa;EACb,MAAM;EACN,GAAG;CACL;CACA,sBAAA,kBAAkB,GAAG,OAAOA,iBAAAA,4BAA4B;EAAE,SAAS,MAAM;EAAS,aAAa,MAAM;CAAY,EAAE,CAAC;CACpH,sBAAA,cAAc,eAAe,KAAK;CAClC,0BAAA,kBAAkB,gBAAgB;EAChC,MAAM;EACN,MAAM;EACN,MAAM;EACN,SAAS;EACT,UAAU;EACV,iBAAiB;EACjB,cAAc;EACd,UAAU;GAAE,WAAW;GAAM,OAAO;EAAE;EACtC,GAAG;CACL,EAAE;AACJ"}
|
|
@@ -28,11 +28,7 @@ const remoteView = {
|
|
|
28
28
|
sessionExpiryEnabled: true,
|
|
29
29
|
idleMinutes: 15,
|
|
30
30
|
absoluteHours: 24,
|
|
31
|
-
tunnel: { kind: "quick" }
|
|
32
|
-
sandbox: {
|
|
33
|
-
enabled: true,
|
|
34
|
-
workspaces: ["/workspace/po"]
|
|
35
|
-
}
|
|
31
|
+
tunnel: { kind: "quick" }
|
|
36
32
|
}
|
|
37
33
|
};
|
|
38
34
|
function seedRemoteStory(patch = {}, proxyPatch = {}) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Remote.fixture.mjs","names":[],"sources":["../../../src/web/components/Remote.fixture.tsx"],"sourcesContent":["import { DEV_PROXY_TARGETS_ROUTE } from '../../types/devProxy.ts';\nimport type { RemoteAccessStateView } from '../../types/remoteAccess.ts';\nimport { devProxyStore, type DevProxyState } from '../stores/devProxyStore.ts';\nimport { remoteAccessStore, type RemoteAccessState } from '../stores/remoteAccessStore.ts';\nimport { mockStoryRequests } from './Story.fixture.tsx';\n\nexport const remoteView: RemoteAccessStateView = {\n status: 'off',\n devices: [\n {\n id: 'story-device',\n label: 'A paired phone with a long descriptive name',\n userAgent: 'Example mobile browser on a personal phone',\n createdAt: '2026-09-01T10:00:00.000Z',\n lastSeenAt: '2026-09-01T10:00:00.000Z',\n self: false,\n },\n ],\n pending: [],\n trustedDevices: [\n {\n id: 'story-trusted-phone',\n label: 'A trusted phone with a long descriptive name',\n platform: 'ios',\n createdAt: '2026-09-01T10:00:00.000Z',\n lastSeenAt: '2026-09-01T10:00:00.000Z',\n self: false,\n },\n ],\n settings: {\n autoCloseEnabled: true,\n autoCloseMinutes: 30,\n sessionExpiryEnabled: true,\n idleMinutes: 15,\n absoluteHours: 24,\n tunnel: { kind: 'quick' },\n
|
|
1
|
+
{"version":3,"file":"Remote.fixture.mjs","names":[],"sources":["../../../src/web/components/Remote.fixture.tsx"],"sourcesContent":["import { DEV_PROXY_TARGETS_ROUTE } from '../../types/devProxy.ts';\nimport type { RemoteAccessStateView } from '../../types/remoteAccess.ts';\nimport { devProxyStore, type DevProxyState } from '../stores/devProxyStore.ts';\nimport { remoteAccessStore, type RemoteAccessState } from '../stores/remoteAccessStore.ts';\nimport { mockStoryRequests } from './Story.fixture.tsx';\n\nexport const remoteView: RemoteAccessStateView = {\n status: 'off',\n devices: [\n {\n id: 'story-device',\n label: 'A paired phone with a long descriptive name',\n userAgent: 'Example mobile browser on a personal phone',\n createdAt: '2026-09-01T10:00:00.000Z',\n lastSeenAt: '2026-09-01T10:00:00.000Z',\n self: false,\n },\n ],\n pending: [],\n trustedDevices: [\n {\n id: 'story-trusted-phone',\n label: 'A trusted phone with a long descriptive name',\n platform: 'ios',\n createdAt: '2026-09-01T10:00:00.000Z',\n lastSeenAt: '2026-09-01T10:00:00.000Z',\n self: false,\n },\n ],\n settings: {\n autoCloseEnabled: true,\n autoCloseMinutes: 30,\n sessionExpiryEnabled: true,\n idleMinutes: 15,\n absoluteHours: 24,\n tunnel: { kind: 'quick' },\n },\n};\n\nexport function seedRemoteStory(patch: Partial<RemoteAccessState> = {}, proxyPatch: Partial<DevProxyState> = {}): void {\n const proxy: DevProxyState = {\n targets: [{ name: 'component-preview', port: 3000, createdAt: 0 }],\n canRegister: true,\n busy: false,\n ...proxyPatch,\n };\n mockStoryRequests({ [`GET ${DEV_PROXY_TARGETS_ROUTE}`]: { targets: proxy.targets, canRegister: proxy.canRegister } });\n devProxyStore.setState(() => proxy);\n remoteAccessStore.setState(() => ({\n step: 'options',\n busy: false,\n view: remoteView,\n pairUrl: 'https://example.invalid/pair#story-only',\n pairCode: 'STORY-CODE',\n pairFingerprint: '0123456789abcdef0123456789abcdef',\n pairRevision: 1,\n passkeys: { supported: true, count: 0 },\n ...patch,\n }));\n}\n"],"mappings":";;;;;AAMA,MAAa,aAAoC;CAC/C,QAAQ;CACR,SAAS,CACP;EACE,IAAI;EACJ,OAAO;EACP,WAAW;EACX,WAAW;EACX,YAAY;EACZ,MAAM;CACR,CACF;CACA,SAAS,CAAC;CACV,gBAAgB,CACd;EACE,IAAI;EACJ,OAAO;EACP,UAAU;EACV,WAAW;EACX,YAAY;EACZ,MAAM;CACR,CACF;CACA,UAAU;EACR,kBAAkB;EAClB,kBAAkB;EAClB,sBAAsB;EACtB,aAAa;EACb,eAAe;EACf,QAAQ,EAAE,MAAM,QAAQ;CAC1B;AACF;AAEA,SAAgB,gBAAgB,QAAoC,CAAC,GAAG,aAAqC,CAAC,GAAS;CACrH,MAAM,QAAuB;EAC3B,SAAS,CAAC;GAAE,MAAM;GAAqB,MAAM;GAAM,WAAW;EAAE,CAAC;EACjE,aAAa;EACb,MAAM;EACN,GAAG;CACL;CACA,kBAAkB,GAAG,OAAO,4BAA4B;EAAE,SAAS,MAAM;EAAS,aAAa,MAAM;CAAY,EAAE,CAAC;CACpH,cAAc,eAAe,KAAK;CAClC,kBAAkB,gBAAgB;EAChC,MAAM;EACN,MAAM;EACN,MAAM;EACN,SAAS;EACT,UAAU;EACV,iBAAiB;EACjB,cAAc;EACd,UAAU;GAAE,WAAW;GAAM,OAAO;EAAE;EACtC,GAAG;CACL,EAAE;AACJ"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
const require_remoteAccessStore = require("../../stores/remoteAccessStore.cjs");
|
|
2
|
-
const require_HandoverProgress = require("./HandoverProgress.cjs");
|
|
3
2
|
const require_RemoteAccessOptions = require("./RemoteAccessOptions.cjs");
|
|
4
3
|
const require_RemoteAccessPairing = require("./RemoteAccessPairing.cjs");
|
|
5
4
|
let _tanstack_react_store = require("@tanstack/react-store");
|
|
@@ -17,7 +16,6 @@ function RemoteAccessDialog() {
|
|
|
17
16
|
const state = (0, _tanstack_react_store.useStore)(require_remoteAccessStore.remoteAccessStore);
|
|
18
17
|
const view = state.view;
|
|
19
18
|
const pairing = state.step === "pairing";
|
|
20
|
-
const moving = state.step === "handover";
|
|
21
19
|
const starting = state.busy || view?.status === "starting";
|
|
22
20
|
if (view?.pending?.length) return null;
|
|
23
21
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_agimon_ai_po_web_components.Dialog, {
|
|
@@ -36,9 +34,7 @@ function RemoteAccessDialog() {
|
|
|
36
34
|
className: "text-sm leading-relaxed text-po-dim",
|
|
37
35
|
children: "A paired device can prompt the agent, approve its tool calls, and run shell commands as you. Pair only devices you hold, and only when you mean to."
|
|
38
36
|
}),
|
|
39
|
-
|
|
40
|
-
pairing ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_RemoteAccessPairing.RemoteAccessPairing, {}) : null,
|
|
41
|
-
pairing || moving ? null : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_RemoteAccessOptions.RemoteAccessOptions, {}),
|
|
37
|
+
pairing ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_RemoteAccessPairing.RemoteAccessPairing, {}) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_RemoteAccessOptions.RemoteAccessOptions, {}),
|
|
42
38
|
state.error === void 0 ? null : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
43
39
|
"data-testid": "remote-access-error",
|
|
44
40
|
className: "text-sm text-po-red",
|
|
@@ -47,7 +43,7 @@ function RemoteAccessDialog() {
|
|
|
47
43
|
]
|
|
48
44
|
}),
|
|
49
45
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_agimon_ai_po_web_components.DialogFooter, {
|
|
50
|
-
className:
|
|
46
|
+
className: "px-3 pb-3 sm:px-4 sm:pb-4",
|
|
51
47
|
children: view?.status === "on" ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_agimon_ai_po_web_components.Button, {
|
|
52
48
|
variant: "danger-outline",
|
|
53
49
|
"data-testid": "remote-access-off",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RemoteAccessDialog.cjs","names":["useStore","remoteAccessStore","Dialog","closeRemoteDialog","DialogContent","DialogHeader","DialogTitle","DialogDescription","DialogBody","
|
|
1
|
+
{"version":3,"file":"RemoteAccessDialog.cjs","names":["useStore","remoteAccessStore","Dialog","closeRemoteDialog","DialogContent","DialogHeader","DialogTitle","DialogDescription","DialogBody","RemoteAccessPairing","RemoteAccessOptions","DialogFooter","Button","turnRemoteAccessOff","showRemoteOptions","newPairingCode","turnRemoteAccessOn","Spinner"],"sources":["../../../../src/web/features/remote/RemoteAccessDialog.tsx"],"sourcesContent":["import {\n Button,\n Dialog,\n DialogBody,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n Spinner,\n} from '@agimon-ai/po-web-components';\nimport { useStore } from '@tanstack/react-store';\n\nimport {\n closeRemoteDialog,\n newPairingCode,\n remoteAccessStore,\n showRemoteOptions,\n turnRemoteAccessOff,\n turnRemoteAccessOn,\n} from '../../stores/remoteAccessStore';\nimport { RemoteAccessOptions } from './RemoteAccessOptions';\nimport { RemoteAccessPairing } from './RemoteAccessPairing';\n\n/**\n * Two panels rather than one.\n *\n * Turning this on puts a shell on this machine within reach of the internet, so\n * the settings that bound it come first and the code to scan comes second, once\n * those are answered.\n */\nexport function RemoteAccessDialog() {\n const state = useStore(remoteAccessStore);\n const view = state.view;\n const pairing = state.step === 'pairing';\n const starting = state.busy || view?.status === 'starting';\n\n // The approval prompt is the only action that matters while a device waits.\n // Two modal roots compete for focus and backdrop ordering when both stay open.\n if (view?.pending?.length) return null;\n\n return (\n <Dialog open={state.step !== 'closed'} onOpenChange={(next) => (next ? undefined : closeRemoteDialog())}>\n <DialogContent width=\"lg\" data-testid=\"remote-access-dialog\" aria-describedby={undefined}>\n <DialogHeader>\n <DialogTitle>{pairing ? 'Pair a device' : 'Remote access'}</DialogTitle>\n <DialogDescription>\n {pairing\n ? 'Scan this with the device you want to use. You will be asked to approve it here.'\n : 'Reach this cockpit from your phone over a public tunnel.'}\n </DialogDescription>\n </DialogHeader>\n\n <DialogBody className=\"flex flex-col gap-5\">\n {/* Said before the switch, not after: a paired device can do\n everything the person at this keyboard can do. */}\n <p className=\"text-sm leading-relaxed text-po-dim\">\n A paired device can prompt the agent, approve its tool calls, and run shell commands as you. Pair only\n devices you hold, and only when you mean to.\n </p>\n\n {pairing ? <RemoteAccessPairing /> : <RemoteAccessOptions />}\n\n {state.error === undefined ? null : (\n <p data-testid=\"remote-access-error\" className=\"text-sm text-po-red\">\n {state.error}\n </p>\n )}\n </DialogBody>\n\n <DialogFooter className=\"px-3 pb-3 sm:px-4 sm:pb-4\">\n {view?.status === 'on' ? (\n <>\n <Button\n variant=\"danger-outline\"\n data-testid=\"remote-access-off\"\n disabled={state.busy}\n onClick={() => void turnRemoteAccessOff()}\n >\n turn off\n </Button>\n {pairing ? (\n <Button variant=\"ghost\" data-testid=\"remote-access-back\" onClick={showRemoteOptions}>\n options\n </Button>\n ) : (\n <Button\n variant=\"primary\"\n data-testid=\"remote-access-pair\"\n disabled={state.busy}\n onClick={() => void newPairingCode()}\n >\n pair a device\n </Button>\n )}\n </>\n ) : (\n <Button\n variant=\"primary\"\n data-testid=\"remote-access-on\"\n disabled={starting}\n onClick={() => void turnRemoteAccessOn()}\n >\n {starting ? <Spinner /> : null}\n turn on and show the code\n </Button>\n )}\n </DialogFooter>\n </DialogContent>\n </Dialog>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;AA+BA,SAAgB,qBAAqB;CACnC,MAAM,SAAA,GAAQA,sBAAAA,SAAAA,CAASC,0BAAAA,iBAAiB;CACxC,MAAM,OAAO,MAAM;CACnB,MAAM,UAAU,MAAM,SAAS;CAC/B,MAAM,WAAW,MAAM,QAAQ,MAAM,WAAW;CAIhD,IAAI,MAAM,SAAS,QAAQ,OAAO;CAElC,OACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,6BAAAA,QAAD;EAAQ,MAAM,MAAM,SAAS;EAAU,eAAe,SAAU,OAAO,KAAA,IAAYC,0BAAAA,kBAAkB;EACnG,UAAA,iBAAA,GAAA,kBAAA,KAAA,CAACC,6BAAAA,eAAD;GAAe,OAAM;GAAK,eAAY;GAAuB,oBAAkB,KAAA;GAA/E,UAAA;IACE,iBAAA,GAAA,kBAAA,KAAA,CAACC,6BAAAA,cAAD,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,6BAAAA,aAAD,EAAA,UAAc,UAAU,kBAAkB,gBAA6B,CAAA,GACvE,iBAAA,GAAA,kBAAA,IAAA,CAACC,6BAAAA,mBAAD,EAAA,UACG,UACG,qFACA,2DACa,CAAA,CACP,EAAA,CAAA;IAEd,iBAAA,GAAA,kBAAA,KAAA,CAACC,6BAAAA,YAAD;KAAY,WAAU;KAAtB,UAAA;MAGE,iBAAA,GAAA,kBAAA,IAAA,CAAC,KAAD;OAAG,WAAU;OAAsC,UAAA;MAGhD,CAAA;MAEF,UAAU,iBAAA,GAAA,kBAAA,IAAA,CAACC,4BAAAA,qBAAD,CAAsB,CAAA,IAAI,iBAAA,GAAA,kBAAA,IAAA,CAACC,4BAAAA,qBAAD,CAAsB,CAAA;MAE1D,MAAM,UAAU,KAAA,IAAY,OAC3B,iBAAA,GAAA,kBAAA,IAAA,CAAC,KAAD;OAAG,eAAY;OAAsB,WAAU;OAC5C,UAAA,MAAM;MACN,CAAA;KAEK;;IAEZ,iBAAA,GAAA,kBAAA,IAAA,CAACC,6BAAAA,cAAD;KAAc,WAAU;KACrB,UAAA,MAAM,WAAW,OAChB,iBAAA,GAAA,kBAAA,KAAA,CAAA,kBAAA,UAAA,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,6BAAAA,QAAD;MACE,SAAQ;MACR,eAAY;MACZ,UAAU,MAAM;MAChB,eAAe,KAAKC,0BAAAA,oBAAoB;MACzC,UAAA;KAEO,CAAA,GACP,UACC,iBAAA,GAAA,kBAAA,IAAA,CAACD,6BAAAA,QAAD;MAAQ,SAAQ;MAAQ,eAAY;MAAqB,SAASE,0BAAAA;MAAmB,UAAA;KAE7E,CAAA,IAER,iBAAA,GAAA,kBAAA,IAAA,CAACF,6BAAAA,QAAD;MACE,SAAQ;MACR,eAAY;MACZ,UAAU,MAAM;MAChB,eAAe,KAAKG,0BAAAA,eAAe;MACpC,UAAA;KAEO,CAAA,CAEV,EAAA,CAAA,IAEF,iBAAA,GAAA,kBAAA,KAAA,CAACH,6BAAAA,QAAD;MACE,SAAQ;MACR,eAAY;MACZ,UAAU;MACV,eAAe,KAAKI,0BAAAA,mBAAmB;MAJzC,UAAA,CAMG,WAAW,iBAAA,GAAA,kBAAA,IAAA,CAACC,6BAAAA,SAAD,CAAU,CAAA,IAAI,MAAK,2BAEzB;;IAEE,CAAA;GACD;;CACT,CAAA;AAEZ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RemoteAccessDialog.d.mts","names":[],"sources":["../../../../src/web/features/remote/RemoteAccessDialog.tsx"],"mappings":";;;;;;;;
|
|
1
|
+
{"version":3,"file":"RemoteAccessDialog.d.mts","names":[],"sources":["../../../../src/web/features/remote/RemoteAccessDialog.tsx"],"mappings":";;;;;;;;wBA+BgB,sCAAkB,IAAA"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { closeRemoteDialog, newPairingCode, remoteAccessStore, showRemoteOptions, turnRemoteAccessOff, turnRemoteAccessOn } from "../../stores/remoteAccessStore.mjs";
|
|
2
|
-
import { HandoverProgress } from "./HandoverProgress.mjs";
|
|
3
2
|
import { RemoteAccessOptions } from "./RemoteAccessOptions.mjs";
|
|
4
3
|
import { RemoteAccessPairing } from "./RemoteAccessPairing.mjs";
|
|
5
4
|
import { useStore } from "@tanstack/react-store";
|
|
@@ -17,7 +16,6 @@ function RemoteAccessDialog() {
|
|
|
17
16
|
const state = useStore(remoteAccessStore);
|
|
18
17
|
const view = state.view;
|
|
19
18
|
const pairing = state.step === "pairing";
|
|
20
|
-
const moving = state.step === "handover";
|
|
21
19
|
const starting = state.busy || view?.status === "starting";
|
|
22
20
|
if (view?.pending?.length) return null;
|
|
23
21
|
return /* @__PURE__ */ jsx(Dialog, {
|
|
@@ -36,9 +34,7 @@ function RemoteAccessDialog() {
|
|
|
36
34
|
className: "text-sm leading-relaxed text-po-dim",
|
|
37
35
|
children: "A paired device can prompt the agent, approve its tool calls, and run shell commands as you. Pair only devices you hold, and only when you mean to."
|
|
38
36
|
}),
|
|
39
|
-
|
|
40
|
-
pairing ? /* @__PURE__ */ jsx(RemoteAccessPairing, {}) : null,
|
|
41
|
-
pairing || moving ? null : /* @__PURE__ */ jsx(RemoteAccessOptions, {}),
|
|
37
|
+
pairing ? /* @__PURE__ */ jsx(RemoteAccessPairing, {}) : /* @__PURE__ */ jsx(RemoteAccessOptions, {}),
|
|
42
38
|
state.error === void 0 ? null : /* @__PURE__ */ jsx("p", {
|
|
43
39
|
"data-testid": "remote-access-error",
|
|
44
40
|
className: "text-sm text-po-red",
|
|
@@ -47,7 +43,7 @@ function RemoteAccessDialog() {
|
|
|
47
43
|
]
|
|
48
44
|
}),
|
|
49
45
|
/* @__PURE__ */ jsx(DialogFooter, {
|
|
50
|
-
className:
|
|
46
|
+
className: "px-3 pb-3 sm:px-4 sm:pb-4",
|
|
51
47
|
children: view?.status === "on" ? /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(Button, {
|
|
52
48
|
variant: "danger-outline",
|
|
53
49
|
"data-testid": "remote-access-off",
|