@qwen-code/web-shell 0.25.4-preview.0 → 0.26.0-nightly.20261022.bf66a26c97

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (92) hide show
  1. package/README.md +82 -34
  2. package/dist/{PierreFilePreview-vbxsbBX2.js → PierreFilePreview-4cB4L1-g.js} +1 -1
  3. package/dist/{SpreadsheetPreview-yFPFfgME.js → SpreadsheetPreview-DGbGBaEF.js} +2 -2
  4. package/dist/{WorkspaceFileBrowser-DGQbVeSD.js → WorkspaceFileBrowser-B5XfnDl5.js} +1008 -1041
  5. package/dist/{agents-route-D6wGe0cs.js → agents-route-hl7LLKgC.js} +2 -2
  6. package/dist/daemon-react-sdk.js +1 -1
  7. package/dist/{index-ChD_Ub2E.js → index-OJ6CsSGD.js} +63040 -58550
  8. package/dist/index.js +3 -3
  9. package/dist/sw.js +1 -1
  10. package/dist/transcript.js +7992 -8072
  11. package/dist/types/App.d.ts +6 -1
  12. package/dist/types/ManagedStandaloneApp.d.ts +9 -0
  13. package/dist/types/components/ChatEditor.d.ts +8 -2
  14. package/dist/types/components/ChatPane.d.ts +4 -1
  15. package/dist/types/components/ContextCompressionFeedback.d.ts +2 -2
  16. package/dist/types/components/ContextUsagePopover.d.ts +2 -2
  17. package/dist/types/components/ModelRefreshControl.d.ts +3 -0
  18. package/dist/types/components/SessionPrBadge.d.ts +7 -2
  19. package/dist/types/components/SplitView.d.ts +4 -1
  20. package/dist/types/components/UnavailableModelTooltip.d.ts +12 -0
  21. package/dist/types/components/WorkspaceSelector.d.ts +3 -1
  22. package/dist/types/components/artifacts/ArtifactPanel.d.ts +4 -1
  23. package/dist/types/components/artifacts/SideTaskPanel.d.ts +4 -1
  24. package/dist/types/components/artifacts/TrajectoryDetail.d.ts +34 -0
  25. package/dist/types/components/artifacts/TrajectoryExecutions.d.ts +6 -8
  26. package/dist/types/components/artifacts/TrajectoryOverview.d.ts +2 -0
  27. package/dist/types/components/artifacts/TrajectorySummaryBar.d.ts +35 -0
  28. package/dist/types/components/artifacts/TrajectoryToolbar.d.ts +24 -0
  29. package/dist/types/components/artifacts/TurnCallsPanel.d.ts +5 -0
  30. package/dist/types/components/artifacts/tool-call-content.d.ts +34 -0
  31. package/dist/types/components/dialogs/AddWorkspaceDialog.d.ts +5 -1
  32. package/dist/types/components/dialogs/SessionRenameDialog.d.ts +10 -0
  33. package/dist/types/components/dialogs/WorkspaceAddStatusDialog.d.ts +3 -1
  34. package/dist/types/components/managed/ManagedChildSessionView.d.ts +8 -0
  35. package/dist/types/components/managed/ManagedMcpManagerPage.d.ts +8 -0
  36. package/dist/types/components/managed/ManagedRecoveryPanel.d.ts +9 -0
  37. package/dist/types/components/managed/ManagedSessionActions.d.ts +18 -0
  38. package/dist/types/components/managed/ManagedSessionsPage.d.ts +20 -3
  39. package/dist/types/components/managed/ManagedTaskPanel.d.ts +3 -1
  40. package/dist/types/components/managed/ManagedWorkspaceNavigation.d.ts +16 -0
  41. package/dist/types/components/managed/WorkspaceBindingCreator.d.ts +17 -2
  42. package/dist/types/components/managed/generated/managed-agent-api.d.ts +807 -68
  43. package/dist/types/components/managed/java-managed-agent-client.d.ts +70 -0
  44. package/dist/types/components/managed/java-managed-agent-provider.d.ts +2 -5
  45. package/dist/types/components/managed/managed-agent-provider.d.ts +95 -7
  46. package/dist/types/components/managed/managed-creation-skills.d.ts +7 -0
  47. package/dist/types/components/managed/managed-lifecycle-messages.d.ts +80 -0
  48. package/dist/types/components/managed/managed-lifecycle-messages.transcript-stub.d.ts +2 -0
  49. package/dist/types/components/managed/managed-mcp-command-storage.d.ts +16 -0
  50. package/dist/types/components/managed/managed-mcp-management-types.d.ts +8 -0
  51. package/dist/types/components/managed/managed-mcp-messages.d.ts +4 -0
  52. package/dist/types/components/managed/managed-mcp-messages.transcript-stub.d.ts +2 -0
  53. package/dist/types/components/managed/managed-recovery-handoff.d.ts +17 -0
  54. package/dist/types/components/managed/managed-recovery-messages.d.ts +31 -0
  55. package/dist/types/components/managed/managed-session-export.d.ts +21 -0
  56. package/dist/types/components/managed/use-managed-actions.d.ts +2 -1
  57. package/dist/types/components/managed/use-managed-context-compression.d.ts +23 -0
  58. package/dist/types/components/managed/use-managed-mcp-management.d.ts +25 -0
  59. package/dist/types/components/managed/use-managed-mcp.d.ts +3 -0
  60. package/dist/types/components/managed/use-managed-recovery.d.ts +14 -0
  61. package/dist/types/components/managed/use-managed-session-lifecycle.d.ts +26 -0
  62. package/dist/types/components/managed/use-managed-session-rename.d.ts +13 -0
  63. package/dist/types/components/managed/use-managed-session.d.ts +1 -0
  64. package/dist/types/components/managed/use-managed-skills.d.ts +9 -2
  65. package/dist/types/components/managed/use-managed-tasks.d.ts +3 -0
  66. package/dist/types/components/managed/use-managed-turn-cancel.d.ts +9 -0
  67. package/dist/types/components/mcp/McpDetails.d.ts +30 -0
  68. package/dist/types/components/messages/McpApp.d.ts +4 -0
  69. package/dist/types/components/plugins/PluginManagerPage.d.ts +8 -1
  70. package/dist/types/components/sidebar/WebShellSidebar.d.ts +5 -1
  71. package/dist/types/components/sidebar/WorkspaceSection.d.ts +2 -1
  72. package/dist/types/components/ui/tabs.d.ts +1 -1
  73. package/dist/types/components/workspaces/WorkspaceExecutionSelect.d.ts +6 -0
  74. package/dist/types/daemon/index.d.ts +1 -1
  75. package/dist/types/daemon/workspace/index.d.ts +1 -1
  76. package/dist/types/daemon/workspace/types.d.ts +19 -0
  77. package/dist/types/daemon-react-sdk.d.ts +2 -0
  78. package/dist/types/desktop-relay/desktop-relay-client.d.ts +1 -1
  79. package/dist/types/hooks/useContextUsageControls.d.ts +8 -3
  80. package/dist/types/index.d.ts +1 -0
  81. package/dist/types/main.d.ts +3 -1
  82. package/dist/types/mcpAppHostContext.d.ts +10 -1
  83. package/dist/types/settings.d.ts +1 -0
  84. package/dist/types/trajectory/summarizeTrajectory.d.ts +5 -0
  85. package/dist/types/trajectory/trajectory-status.d.ts +51 -0
  86. package/dist/types/trajectory/useTrajectoryWindow.d.ts +2 -0
  87. package/dist/types/unavailableModels.d.ts +24 -0
  88. package/dist/types/utils/composerModels.d.ts +18 -0
  89. package/dist/{useDaemonMidTurnInjected-CfhBFIym.js → useDaemonMidTurnInjected-TnZPRjfx.js} +4256 -4021
  90. package/package.json +1 -1
  91. package/dist/types/components/artifacts/TrajectoryFilters.d.ts +0 -15
  92. package/dist/types/components/artifacts/TrajectoryInspector.d.ts +0 -25
@@ -1,4 +1,5 @@
1
1
  import { type WebShellModelManagementOptions } from './modelManagement';
2
+ import type { WebShellUnavailableModel, WebShellUnavailableModelTooltipMount } from './unavailableModels';
2
3
  import './styles/globals.css';
3
4
  import { type WebShellMessageNavigationRequest, type WebShellMessageNavigationResult } from './hooks/useMessageNavigation';
4
5
  import { type DaemonProductSessionContext, type DaemonStreamingState } from '@qwen-code/web-shell/daemon-react-sdk';
@@ -104,6 +105,10 @@ export interface WebShellProps {
104
105
  settings?: WebShellSettingsOptions;
105
106
  /** Model add/delete interactions across WebShell. Not a backend permission policy. */
106
107
  modelManagement?: WebShellModelManagementOptions;
108
+ /** Extra catalog models shown disabled in the composer picker. */
109
+ unavailableModels?: readonly WebShellUnavailableModel[];
110
+ /** Host-owned hint for a disabled model. DOM/Solid hosts mount into the container. */
111
+ mountUnavailableModelTooltip?: WebShellUnavailableModelTooltipMount;
107
112
  /** Host-specific label for the Ask User Question free-text choice. */
108
113
  askUserFreeTextLabel?: string;
109
114
  /** Called whenever the attached daemon session or workspace changes. */
@@ -450,4 +455,4 @@ export declare function canArchiveSideTaskSummary(session: Pick<DaemonSessionSum
450
455
  export declare function mergeSideTaskCatalog(catalog: SideTaskCatalogState, parentSessionId: string, listedItems: SideTaskListItem[], optimisticIds: ReadonlySet<string>): SideTaskCatalogState;
451
456
  export declare function getEnvironmentAgentTasks(messages: readonly Message[], sessionTasks: readonly DaemonSessionTaskWithWorkflowStatus[]): EnvironmentAgentTask[];
452
457
  export declare function mergeAgentTrace(liveAgents: readonly EnvironmentAgentTask[], trace: DaemonAgentTrace | undefined, now?: number): EnvironmentAgentTask[];
453
- export declare function App({ onRefreshModels, askUserFreeTextLabel, onSessionIdChange, onSessionInfoChange, onSessionCreated, managedAgentProvider, theme: providedTheme, onThemeChange, onThemeResolved, language: providedLanguage, onLanguageChange, onLanguageResolved, brand: providedBrand, onBrandResolved, className: externalClassName, style: externalStyle, shadowDom, onConnectionChange, onStreamingStateChange, onError, onBugReport, hiddenSlashCommands, slashCommandCategoryOrder, onSlashCommand, builtinAtProviders, atProviders, composerTagIcons, fileUploadEnabled, fileUploadDirectory, artifact, fileDropAction, renderToolHeaderExtra, renderWelcomeHeader, renderWelcomeFooter, mobileWelcomeFooterMiddle, parseUserMessageContent, renderUserMessageContent, renderComposerTag, renderComposerTagTooltip, onComposerTagClick, renderAssistantTurnFooter, assistantFeedback, getAssistantSourcesIcon, sourceReferences, renderComposerToolbarStart, renderComposerToolbarEnd, renderComposerToolbarRight, renderComposerHeader, renderComposerFooter, renderChatHeader, renderFooter, bottomStatusItems, chatMaxWidth, sidebar, settings: settingsPresentation, modelManagement, header, rightPanel, showToolCalls, environmentPanel, splitSessionIds: externalSplitSessionIds, onSplitSessionIdsChange, renderPaneHeaderActions, onRightPanelOpen, onFileReviewOpen, onWorkspaceFileOpen, onInsightReportOpen, onContextUsageOpen, messageTurnOutputs, filterArtifact, shellRef, composerToolbarActions, allowedApprovalModes: allowedApprovalModesProp, mainModelFilter, compactComposerOverlays, autoSubmitSlashCommands, additionalSlashCommands, contextUsageAlwaysVisible, userMessageEditing, onUserMessageEditRequest, cycleModeOnTab, sessionSourceType, composerToolbarAdditionalActions, composerPlaceholders, compactThinking, hostOwnsEditDiffPreview, collapseCompletedTurns, markdownTableMode, virtualScrollThreshold, conversationSearchThreshold, markdown, loadingPhrases, onAgentTasksChange, onTranscriptChange, onSessionArtifactsChange, onToast, composerRef, onComposerReady, composerInput, composerInputVersion, onSessionChange, onAssistantTurnSettled, prepareSubmit, onSubmitBefore, restartSseOnPrompt, historyPageSize, initialSelectedWorkspaceCwd, lockedWorkspaceCwd, lockedWorkspaceCapability, }?: AppProps): import("react/jsx-runtime").JSX.Element;
458
+ export declare function App({ onRefreshModels, askUserFreeTextLabel, onSessionIdChange, onSessionInfoChange, onSessionCreated, managedAgentProvider, theme: providedTheme, onThemeChange, onThemeResolved, language: providedLanguage, onLanguageChange, onLanguageResolved, brand: providedBrand, onBrandResolved, className: externalClassName, style: externalStyle, shadowDom, onConnectionChange, onStreamingStateChange, onError, onBugReport, hiddenSlashCommands, slashCommandCategoryOrder, onSlashCommand, builtinAtProviders, atProviders, composerTagIcons, fileUploadEnabled, fileUploadDirectory, artifact, fileDropAction, renderToolHeaderExtra, renderWelcomeHeader, renderWelcomeFooter, mobileWelcomeFooterMiddle, parseUserMessageContent, renderUserMessageContent, renderComposerTag, renderComposerTagTooltip, onComposerTagClick, renderAssistantTurnFooter, assistantFeedback, getAssistantSourcesIcon, sourceReferences, renderComposerToolbarStart, renderComposerToolbarEnd, renderComposerToolbarRight, renderComposerHeader, renderComposerFooter, renderChatHeader, renderFooter, bottomStatusItems, chatMaxWidth, sidebar, settings: settingsPresentation, modelManagement, unavailableModels, mountUnavailableModelTooltip, header, rightPanel, showToolCalls, environmentPanel, splitSessionIds: externalSplitSessionIds, onSplitSessionIdsChange, renderPaneHeaderActions, onRightPanelOpen, onFileReviewOpen, onWorkspaceFileOpen, onInsightReportOpen, onContextUsageOpen, messageTurnOutputs, filterArtifact, shellRef, composerToolbarActions, allowedApprovalModes: allowedApprovalModesProp, mainModelFilter, compactComposerOverlays, autoSubmitSlashCommands, additionalSlashCommands, contextUsageAlwaysVisible, userMessageEditing, onUserMessageEditRequest, cycleModeOnTab, sessionSourceType, composerToolbarAdditionalActions, composerPlaceholders, compactThinking, hostOwnsEditDiffPreview, collapseCompletedTurns, markdownTableMode, virtualScrollThreshold, conversationSearchThreshold, markdown, loadingPhrases, onAgentTasksChange, onTranscriptChange, onSessionArtifactsChange, onToast, composerRef, onComposerReady, composerInput, composerInputVersion, onSessionChange, onAssistantTurnSettled, prepareSubmit, onSubmitBefore, restartSseOnPrompt, historyPageSize, initialSelectedWorkspaceCwd, lockedWorkspaceCwd, lockedWorkspaceCapability, }?: AppProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,9 @@
1
+ import { type ReactNode } from 'react';
2
+ import type { ManagedAgentProvider } from './components/managed/managed-agent-provider';
3
+ import type { WebShellLanguage } from './i18n';
4
+ export declare function hasManagedAppMarker(): boolean;
5
+ export declare function ManagedStandaloneApp({ daemonToken, language, children, }: {
6
+ daemonToken?: string;
7
+ language?: WebShellLanguage;
8
+ children: (provider: ManagedAgentProvider) => ReactNode;
9
+ }): string | number | bigint | boolean | Iterable<ReactNode> | Promise<string | number | bigint | boolean | import("react").ReactPortal | import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>> | Iterable<ReactNode> | null | undefined> | import("react/jsx-runtime").JSX.Element | null | undefined;
@@ -1,4 +1,5 @@
1
1
  import { type ModelRefreshState } from './ModelRefreshControl';
2
+ import type { ReactNode } from 'react';
2
3
  import type { CommandInfo } from '../adapters/types';
3
4
  import type { AtMentionWorkspaceActions } from '../hooks/useAtMentionSources';
4
5
  import type { AttachmentPreviewRequest } from '../adapters/messageTypes';
@@ -9,7 +10,8 @@ import type { SkillInfo } from '../completions/slashCompletion';
9
10
  import type { DaemonReasoningControls } from '@qwen-code/web-shell/daemon-react-sdk';
10
11
  import { type WebShellComposerInput, type WebShellComposerTagIconMap, type WebShellAtProvider, type WebShellBuiltinAtProvidersConfig } from '../customization';
11
12
  import { type ComposerSubmitMetadata, type EditorHandle } from '../hooks/useComposerCore';
12
- import type { ContextUsageControls } from '../hooks/useContextUsageControls';
13
+ import type { ContextCompressionControls } from '../hooks/useContextUsageControls';
14
+ import type { WebShellUnavailableModel, WebShellUnavailableModelTooltipMount } from '../unavailableModels';
13
15
  import type { VoiceStatusRevision, VoiceWorkspaceTarget } from '../voice/voice-workspace-target';
14
16
  import { type SessionGitIntent } from './GitModePopover';
15
17
  import { type WorkspaceSelectorOption } from './WorkspaceSelector';
@@ -44,6 +46,7 @@ interface ChatEditorProps {
44
46
  availableModes?: readonly string[];
45
47
  planMode?: boolean;
46
48
  modeControlsDisabled?: boolean;
49
+ planControlsDisabled?: boolean;
47
50
  onTogglePlan?: () => void;
48
51
  sessionWorkflowEnabled?: boolean;
49
52
  currentModel?: string;
@@ -99,12 +102,14 @@ interface ChatEditorProps {
99
102
  /** Show the context-usage breakdown, exactly like typing /context. */
100
103
  onShowContextUsage?: () => void;
101
104
  onOpenContextUsage?: () => void;
102
- contextUsageControls?: ContextUsageControls;
105
+ contextUsageControls?: ContextCompressionControls;
103
106
  modelRefresh?: ModelRefreshState;
104
107
  availableModels?: Array<{
105
108
  id: string;
106
109
  label?: string;
107
110
  }>;
111
+ unavailableModels?: readonly WebShellUnavailableModel[];
112
+ mountUnavailableModelTooltip?: WebShellUnavailableModelTooltipMount;
108
113
  onSelectMode?: (mode: string) => void;
109
114
  onSelectModel?: (model: string) => void;
110
115
  reasoning?: DaemonReasoningControls;
@@ -113,6 +118,7 @@ interface ChatEditorProps {
113
118
  selectedWorkspaceCwd?: string;
114
119
  workspaceSelectionDisabled?: boolean;
115
120
  workspaceSelectorAlwaysVisible?: boolean;
121
+ workspaceMenuItems?: ReactNode;
116
122
  onSelectWorkspace?: (workspaceCwd: string | undefined) => void;
117
123
  /** Host-aware variant; see WorkspaceSelector. */
118
124
  onSelectHostedWorkspace?: (hostOrigin: string, workspaceCwd: string | undefined) => void;
@@ -7,6 +7,7 @@ import { type ReactNode } from 'react';
7
7
  import { type DaemonSessionActions } from '@qwen-code/web-shell/daemon-react-sdk';
8
8
  import { type DaemonSessionArtifact, type DaemonSessionMonitorTaskStatus, type DaemonSessionSummary, type DaemonWorkspaceCapability } from '@qwen-code/sdk/daemon';
9
9
  import { type WebShellModelManagementOptions } from '../modelManagement';
10
+ import type { WebShellUnavailableModel, WebShellUnavailableModelTooltipMount } from '../unavailableModels';
10
11
  import { type RegisterContextUsageControls } from '../hooks/useContextUsageControls';
11
12
  import type { WebShellSlashCommandHandler } from '../App';
12
13
  import type { TurnOutputKind, TurnOutputOpenRequest } from './artifacts/TurnOutputs';
@@ -64,6 +65,8 @@ export interface ChatPaneProps {
64
65
  /** Host slash-command callback shared with the main chat composer. */
65
66
  onSlashCommand?: WebShellSlashCommandHandler;
66
67
  modelManagement?: WebShellModelManagementOptions;
68
+ unavailableModels?: readonly WebShellUnavailableModel[];
69
+ mountUnavailableModelTooltip?: WebShellUnavailableModelTooltipMount;
67
70
  onOpenGoals?: () => void;
68
71
  onRightPanelOpen?: (request: TurnOutputOpenRequest) => void;
69
72
  onOpenMonitor?: (task: DaemonSessionMonitorTaskStatus, sessionId: string, sessionActions: DaemonSessionActions) => void;
@@ -93,4 +96,4 @@ export interface ChatPaneProps {
93
96
  * state, approvals, and composer, and the browser scopes keyboard focus to the
94
97
  * pane the user clicks into — so there is no cross-pane approval arbitration.
95
98
  */
96
- export declare function ChatPane({ title, sessionSummary, isActive, onApprovalChange, workspaceCwd, renderHeaderActions, onClose, onToggleMaximize, isMaximized, onError, onImageIngestionNotice, onSlashCommand, modelManagement, onOpenGoals, onRightPanelOpen, onOpenMonitor, onPaneArtifactsChange, registerContextUsageControls, onBeforeContextCompress, onOpenContextUsage, messageTurnOutputs, embedded, onFirstPromptAdmitted, reportCatalogTurnCompletion, hidden, voiceUserRevision, voiceWorkspaceRevisions, voiceWorkspaces, sessionWorkflowEnabled, showResponseTokensPerSecond, planControlVisible, }: ChatPaneProps): import("react/jsx-runtime").JSX.Element;
99
+ export declare function ChatPane({ title, sessionSummary, isActive, onApprovalChange, workspaceCwd, renderHeaderActions, onClose, onToggleMaximize, isMaximized, onError, onImageIngestionNotice, onSlashCommand, modelManagement, unavailableModels, mountUnavailableModelTooltip, onOpenGoals, onRightPanelOpen, onOpenMonitor, onPaneArtifactsChange, registerContextUsageControls, onBeforeContextCompress, onOpenContextUsage, messageTurnOutputs, embedded, onFirstPromptAdmitted, reportCatalogTurnCompletion, hidden, voiceUserRevision, voiceWorkspaceRevisions, voiceWorkspaces, sessionWorkflowEnabled, showResponseTokensPerSecond, planControlVisible, }: ChatPaneProps): import("react/jsx-runtime").JSX.Element;
@@ -1,5 +1,5 @@
1
- import type { ContextUsageControls } from '../hooks/useContextUsageControls';
1
+ import type { ContextCompressionControls } from '../hooks/useContextUsageControls';
2
2
  export declare function ContextCompressionFeedback({ controls, className, }: {
3
- controls?: Pick<ContextUsageControls, 'compressing' | 'result'>;
3
+ controls?: Pick<ContextCompressionControls, 'compressing' | 'result'>;
4
4
  className?: string;
5
5
  }): import("react/jsx-runtime").JSX.Element | null;
@@ -1,10 +1,10 @@
1
1
  import { type ReactElement } from 'react';
2
- import type { ContextUsageControls } from '../hooks/useContextUsageControls';
2
+ import type { ContextCompressionControls } from '../hooks/useContextUsageControls';
3
3
  export declare function ContextUsagePopover({ tokenCount, contextWindow, known: observedKnown, controls, onOpenDetails, showSnapshotHint, children, }: {
4
4
  tokenCount: number;
5
5
  contextWindow: number;
6
6
  known?: boolean;
7
- controls?: Pick<ContextUsageControls, 'canCompress' | 'compressing' | 'result' | 'compress'>;
7
+ controls?: ContextCompressionControls;
8
8
  onOpenDetails?: () => void;
9
9
  showSnapshotHint: boolean;
10
10
  children: ReactElement;
@@ -3,3 +3,6 @@ export type ModelRefreshState = ReturnType<typeof useModelRefresh>;
3
3
  export declare function ModelRefreshControl({ state }: {
4
4
  state?: ModelRefreshState;
5
5
  }): import("react/jsx-runtime").JSX.Element | null;
6
+ export declare function ModelRefreshError({ state }: {
7
+ state?: ModelRefreshState;
8
+ }): import("react/jsx-runtime").JSX.Element | null;
@@ -13,12 +13,17 @@ interface SessionPrBadgeProps {
13
13
  */
14
14
  tabIndex?: number;
15
15
  }
16
+ /**
17
+ * The bound PRs the badge can open. Non-http(s) bindings are filtered out as
18
+ * a defense-in-depth measure on top of the daemon-side validators; callers
19
+ * that lay out around the badge use this to know whether it renders.
20
+ */
21
+ export declare function openableSessionPrs(prs: DaemonSessionPrInfo[]): DaemonSessionPrInfo[];
16
22
  /**
17
23
  * The `#N (+M)` pull-request badge shared by the sidebar session row, the
18
24
  * session overview card, and the picker dialogs. Renders the latest bound
19
25
  * PR with an overflow count and opens it through the desktop-aware
20
- * external-link opener. Non-http(s) bindings are filtered out as a
21
- * defense-in-depth measure on top of the daemon-side validators.
26
+ * external-link opener.
22
27
  */
23
28
  export declare function SessionPrBadge({ prs, tabIndex }: SessionPrBadgeProps): import("react/jsx-runtime").JSX.Element | null;
24
29
  export {};
@@ -7,6 +7,7 @@ import { type DaemonSessionActions } from '@qwen-code/web-shell/daemon-react-sdk
7
7
  import type { DaemonSessionArtifact, DaemonSessionMonitorTaskStatus, DaemonWorkspaceCapability } from '@qwen-code/sdk/daemon';
8
8
  import type { WebShellSlashCommandHandler } from '../App';
9
9
  import type { WebShellModelManagementOptions } from '../modelManagement';
10
+ import type { WebShellUnavailableModel, WebShellUnavailableModelTooltipMount } from '../unavailableModels';
10
11
  import type { RegisterContextUsageControls } from '../hooks/useContextUsageControls';
11
12
  import { type PaneHeaderActionsRenderer } from './ChatPane';
12
13
  import type { TurnOutputKind, TurnOutputOpenRequest } from './artifacts/TurnOutputs';
@@ -37,6 +38,8 @@ export interface SplitViewProps {
37
38
  onImageIngestionNotice?: (tone: 'warning' | 'error', message: string) => void;
38
39
  onSlashCommand?: WebShellSlashCommandHandler;
39
40
  modelManagement?: WebShellModelManagementOptions;
41
+ unavailableModels?: readonly WebShellUnavailableModel[];
42
+ mountUnavailableModelTooltip?: WebShellUnavailableModelTooltipMount;
40
43
  onOpenGoals?: () => void;
41
44
  onRightPanelOpen?: (request: TurnOutputOpenRequest) => void;
42
45
  onOpenMonitor?: (task: DaemonSessionMonitorTaskStatus, sessionId: string, sessionActions: DaemonSessionActions) => void;
@@ -71,4 +74,4 @@ export interface SplitViewProps {
71
74
  * naturally scopes the keyboard to the pane the user clicks into, so panes never
72
75
  * fight over which session an approval or Enter belongs to.
73
76
  */
74
- export declare function SplitView({ sessionIds, showSessionDetails, onPanesChange, onAssistantTurnSettled, onPendingPanesChange, onExit, onError, onImageIngestionNotice, onSlashCommand, modelManagement, onOpenGoals, onRightPanelOpen, onOpenMonitor, onPaneArtifactsChange, registerContextUsageControls, onBeforeContextCompress, onOpenContextUsage, messageTurnOutputs, renderPaneHeaderActions, includeOtherWorkspaces, workspaceCwd, restartSseOnPrompt, historyPageSize, voiceUserRevision, voiceWorkspaceRevisions, voiceWorkspaces, sessionWorkflowEnabled, showResponseTokensPerSecond, planControlVisible, }: SplitViewProps): import("react/jsx-runtime").JSX.Element;
77
+ export declare function SplitView({ sessionIds, showSessionDetails, onPanesChange, onAssistantTurnSettled, onPendingPanesChange, onExit, onError, onImageIngestionNotice, onSlashCommand, modelManagement, unavailableModels, mountUnavailableModelTooltip, onOpenGoals, onRightPanelOpen, onOpenMonitor, onPaneArtifactsChange, registerContextUsageControls, onBeforeContextCompress, onOpenContextUsage, messageTurnOutputs, renderPaneHeaderActions, includeOtherWorkspaces, workspaceCwd, restartSseOnPrompt, historyPageSize, voiceUserRevision, voiceWorkspaceRevisions, voiceWorkspaces, sessionWorkflowEnabled, showResponseTokensPerSecond, planControlVisible, }: SplitViewProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,12 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Qwen Team
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { type ReactElement } from 'react';
7
+ import type { WebShellUnavailableModel, WebShellUnavailableModelTooltipMount } from '../unavailableModels';
8
+ export declare function UnavailableModelTooltip({ model, mount, children, }: {
9
+ model: WebShellUnavailableModel;
10
+ mount?: WebShellUnavailableModelTooltipMount;
11
+ children: ReactElement;
12
+ }): import("react/jsx-runtime").JSX.Element;
@@ -1,3 +1,4 @@
1
+ import type { ReactNode } from 'react';
1
2
  export interface WorkspaceSelectorOption {
2
3
  id: string;
3
4
  cwd: string;
@@ -13,6 +14,7 @@ interface WorkspaceSelectorProps {
13
14
  disabled?: boolean;
14
15
  busy?: boolean;
15
16
  alwaysVisible?: boolean;
17
+ menuItems?: ReactNode;
16
18
  scratchSupported: boolean;
17
19
  existingFolderSupported: boolean;
18
20
  /** Offer a projectless (standalone) target alongside the workspaces. */
@@ -34,5 +36,5 @@ interface WorkspaceSelectorProps {
34
36
  * Composer workspace menu. Capability-gated creation actions and disabled
35
37
  * untrusted entries keep presentation aligned with daemon authorization.
36
38
  */
37
- export declare function WorkspaceSelector({ workspaces, selectedWorkspaceCwd, disabled, busy, alwaysVisible, scratchSupported, existingFolderSupported, standaloneSupported, selectedStandalone, className, onSelectWorkspace, onSelectHostedWorkspace, onSelectStandalone, onCreateScratch, onOpenExistingFolder, }: WorkspaceSelectorProps): import("react/jsx-runtime").JSX.Element | null;
39
+ export declare function WorkspaceSelector({ workspaces, selectedWorkspaceCwd, disabled, busy, alwaysVisible, menuItems, scratchSupported, existingFolderSupported, standaloneSupported, selectedStandalone, className, onSelectWorkspace, onSelectHostedWorkspace, onSelectStandalone, onCreateScratch, onOpenExistingFolder, }: WorkspaceSelectorProps): import("react/jsx-runtime").JSX.Element | null;
38
40
  export {};
@@ -5,6 +5,7 @@ import { type DaemonSessionOwnerSnapshot, type DaemonSessionActions } from '@qwe
5
5
  import { type TurnOutputFileChange, type TurnOutputOpenRequest, type TurnOutputScheduledTask } from './TurnOutputs';
6
6
  import type { EnvironmentAgentTask } from '../panels/EnvironmentPanel';
7
7
  import type { WebShellModelManagementOptions } from '../../modelManagement';
8
+ import type { WebShellUnavailableModel, WebShellUnavailableModelTooltipMount } from '../../unavailableModels';
8
9
  import type { SessionWorkflowProjection } from '../workflow/session-workflow-model';
9
10
  import type { WebPreviewState } from '../preview/web-preview';
10
11
  import type { TrajectoryPageLoader } from '../../trajectory/useTrajectoryWindow';
@@ -256,6 +257,8 @@ interface ArtifactPanelProps {
256
257
  onError?: (error: unknown, fallback: string) => void;
257
258
  sessionWorkflowEnabled?: boolean;
258
259
  modelManagement?: WebShellModelManagementOptions;
260
+ unavailableModels?: readonly WebShellUnavailableModel[];
261
+ mountUnavailableModelTooltip?: WebShellUnavailableModelTooltipMount;
259
262
  workflow?: {
260
263
  todos: readonly TodoItem[];
261
264
  tools: readonly ACPToolCall[];
@@ -277,5 +280,5 @@ interface ArtifactPanelProps {
277
280
  fullscreen?: boolean;
278
281
  onToggleFullscreen?: () => void;
279
282
  }
280
- export declare function ArtifactPanel({ contextUsageControls, artifacts, tabs, activeTabId, reviewChanges, selectedReviewPath, panelWidth, workspaceCwd, loading, restoring, error, onSelectTab, onSelectTurnCallsPrompt, onCloseTab, onOpenFilePreview, latestReviewAvailable, onOpenLatestReview, onOpenTerminal, onOpenTrajectory, trajectoryTabId, onOpenFiles, onReferenceFile, onOpenWebPreview, onWebPreviewChange, items, sideTaskAvailable, sideTasks, archivedSideTasks, sideTasksLoading, onCreateSideTask, onOpenSideTask, onArchiveSideTasks, onUnarchiveSideTasks, onSideTaskMenuOpen, onCreateSideTaskSession, onSideTaskCreated, onSideTaskTitleChange, onSideTaskInitialPromptRefused, onNestedRightPanelOpen, onNestedArtifactsChange, onOpenNestedSubagent, agentTasks, agentTraceLoading, agentTraceError, onOpenWorkflowAgent, onError, sessionWorkflowEnabled, modelManagement, workflow, onImageIngestionNotice, deferSubagentMount, onClose, variant, fullscreen, onToggleFullscreen, }: ArtifactPanelProps): import("react/jsx-runtime").JSX.Element;
283
+ export declare function ArtifactPanel({ contextUsageControls, artifacts, tabs, activeTabId, reviewChanges, selectedReviewPath, panelWidth, workspaceCwd, loading, restoring, error, onSelectTab, onSelectTurnCallsPrompt, onCloseTab, onOpenFilePreview, latestReviewAvailable, onOpenLatestReview, onOpenTerminal, onOpenTrajectory, trajectoryTabId, onOpenFiles, onReferenceFile, onOpenWebPreview, onWebPreviewChange, items, sideTaskAvailable, sideTasks, archivedSideTasks, sideTasksLoading, onCreateSideTask, onOpenSideTask, onArchiveSideTasks, onUnarchiveSideTasks, onSideTaskMenuOpen, onCreateSideTaskSession, onSideTaskCreated, onSideTaskTitleChange, onSideTaskInitialPromptRefused, onNestedRightPanelOpen, onNestedArtifactsChange, onOpenNestedSubagent, agentTasks, agentTraceLoading, agentTraceError, onOpenWorkflowAgent, onError, sessionWorkflowEnabled, modelManagement, unavailableModels, mountUnavailableModelTooltip, workflow, onImageIngestionNotice, deferSubagentMount, onClose, variant, fullscreen, onToggleFullscreen, }: ArtifactPanelProps): import("react/jsx-runtime").JSX.Element;
281
284
  export {};
@@ -1,6 +1,7 @@
1
1
  import type { TurnOutputOpenRequest } from './TurnOutputs';
2
2
  import type { DaemonSessionArtifact } from '@qwen-code/sdk/daemon';
3
3
  import { type WebShellModelManagementOptions } from '../../modelManagement';
4
+ import type { WebShellUnavailableModel, WebShellUnavailableModelTooltipMount } from '../../unavailableModels';
4
5
  interface SideTaskPanelProps {
5
6
  tabId: string;
6
7
  sessionId?: string;
@@ -20,9 +21,11 @@ interface SideTaskPanelProps {
20
21
  onError?: (error: unknown, fallback: string) => void;
21
22
  sessionWorkflowEnabled?: boolean;
22
23
  modelManagement?: WebShellModelManagementOptions;
24
+ unavailableModels?: readonly WebShellUnavailableModel[];
25
+ mountUnavailableModelTooltip?: WebShellUnavailableModelTooltipMount;
23
26
  onImageIngestionNotice?: (tone: 'warning' | 'error', message: string) => void;
24
27
  /** Policy refused the stored initial prompt; the parent drops it from the tab. */
25
28
  onInitialPromptRefused?: (tabId: string) => void;
26
29
  }
27
- export declare function SideTaskPanel({ tabId, sessionId, parentSessionId, workspaceCwd, title, shouldNameFromFirstPrompt, initialPrompt, createSession, onCreated, onTitleChange, onRightPanelOpen, onArtifactsChange, onError, sessionWorkflowEnabled, modelManagement, onImageIngestionNotice, onInitialPromptRefused, }: SideTaskPanelProps): import("react/jsx-runtime").JSX.Element;
30
+ export declare function SideTaskPanel({ tabId, sessionId, parentSessionId, workspaceCwd, title, shouldNameFromFirstPrompt, initialPrompt, createSession, onCreated, onTitleChange, onRightPanelOpen, onArtifactsChange, onError, sessionWorkflowEnabled, modelManagement, unavailableModels, mountUnavailableModelTooltip, onImageIngestionNotice, onInitialPromptRefused, }: SideTaskPanelProps): import("react/jsx-runtime").JSX.Element;
28
31
  export {};
@@ -0,0 +1,34 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Qwen Team
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import type { TrajectoryLifecycleEntry } from '../../trajectory/project-trajectory-lifecycle';
7
+ import type { TrajectoryExecutionRow } from '../../trajectory/project-trajectory-executions';
8
+ import type { TrajectoryRow, TrajectoryTurn } from '../../trajectory/types';
9
+ /**
10
+ * Everything recorded about one record, turn or live execution: a header that
11
+ * names it and steps through the list, the measured facts, then its content.
12
+ * Docked it covers the list (`drill-in`); fullscreen it sits beside it.
13
+ */
14
+ export declare function TrajectoryDetail({ row, turn, lifecycle, execution, onLocateExecution, title, presentation, stale, hiddenByRange, hiddenByCollapse, hiddenByFilter, onClearFilter, onReveal, onClearRange, onClose, onStep, onFocusedUnmount, }: {
15
+ /** For a turn, its prompt; absent when the window cut the turn's head off. */
16
+ row?: TrajectoryRow;
17
+ turn?: TrajectoryTurn;
18
+ lifecycle?: TrajectoryLifecycleEntry;
19
+ execution?: TrajectoryExecutionRow;
20
+ onLocateExecution?: () => void;
21
+ title?: string;
22
+ presentation: 'drill-in' | 'side';
23
+ stale?: boolean;
24
+ hiddenByRange?: boolean;
25
+ hiddenByCollapse?: boolean;
26
+ hiddenByFilter?: boolean;
27
+ onClearFilter?: () => void;
28
+ onReveal?: () => void;
29
+ onClearRange?: () => void;
30
+ onClose: () => void;
31
+ /** Steps to the previous or next record in the list; absent for executions. */
32
+ onStep?: (direction: 1 | -1) => void;
33
+ onFocusedUnmount?: () => void;
34
+ }): import("react/jsx-runtime").JSX.Element;
@@ -1,17 +1,15 @@
1
1
  import type { TrajectoryExecutionRow } from '../../trajectory/project-trajectory-executions';
2
2
  import type { TrajectoryLifecycleProjection } from '../../trajectory/project-trajectory-lifecycle';
3
- export declare function TrajectoryExecutions({ rows, omitted, incomplete, outsideWindow, selectedKey, onSelect, following, liveStatus, historySnapshot, onPause, onReturnToLatest, canReturn, returning, }: {
3
+ export declare function TrajectoryExecutions({ rows, selectedKey, onSelect, following, liveStatus, historySnapshot, onPause, onUpdatedChange, onFocusLost, }: {
4
4
  rows: readonly TrajectoryExecutionRow[];
5
- omitted: number;
6
- incomplete: boolean;
7
- outsideWindow: number;
8
5
  selectedKey?: string;
9
6
  onSelect: (key: string) => void;
10
7
  following: boolean;
11
8
  liveStatus: TrajectoryLifecycleProjection['status'];
12
9
  historySnapshot: object | undefined;
13
10
  onPause: () => void;
14
- onReturnToLatest: () => void;
15
- canReturn: boolean;
16
- returning: boolean;
17
- }): import("react/jsx-runtime").JSX.Element;
11
+ /** New executions arrived while the reader was not following. */
12
+ onUpdatedChange?: (updated: boolean) => void;
13
+ /** The focused grid went away with nothing of the strip left to take it. */
14
+ onFocusLost?: () => void;
15
+ }): import("react/jsx-runtime").JSX.Element | null;
@@ -70,4 +70,6 @@ export declare function formatWindowTime(ms: number, windowMs: number): string;
70
70
  * milliseconds.
71
71
  */
72
72
  export declare function formatClockTime(epochMs: number, windowMs: number, language: string): string;
73
+ /** A point on the axis, as the model's mode names one. */
74
+ export declare function formatTimelinePoint(model: Pick<TimelineModel, 'mode' | 'originMs'> | undefined, ms: number, windowMs: number, language: string): string;
73
75
  export declare function TrajectoryOverview({ model, viewportControl, notice, selectedKey, onSelect, describe, range, onRangeChange, onModeChange, }: TrajectoryOverviewProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,35 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Qwen Team
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import type { TrajectorySummary } from '../../trajectory/summarizeTrajectory';
7
+ import { type TrajectoryPillState, type TrajectoryWarning } from '../../trajectory/trajectory-status';
8
+ /** Same rounding as the table: 999,950 tokens already reads as `1.0M`. */
9
+ export declare function compactTokens(value: number): string;
10
+ export interface TrajectoryAboutInfo {
11
+ pages: number;
12
+ searchExcluded: number;
13
+ executionsOmitted: number;
14
+ executionsOutside: number;
15
+ }
16
+ /**
17
+ * One line above the strip: what the loaded records add up to, whether the
18
+ * panel is following the session, and anything that needs attention. Every
19
+ * caveat about scope lives behind the About button rather than on screen.
20
+ */
21
+ export declare function TrajectorySummaryBar({ summary, pill, onPill, warnings, onRetry, onRefresh, onReturnToLatest, canRefresh, history, failuresOn, onToggleFailures, about, }: {
22
+ summary?: TrajectorySummary;
23
+ pill: TrajectoryPillState;
24
+ onPill: () => void;
25
+ warnings: readonly TrajectoryWarning[];
26
+ onRetry: () => void;
27
+ onRefresh: () => void;
28
+ onReturnToLatest: () => void;
29
+ canRefresh: boolean;
30
+ /** An earlier window is on screen: a refresh would leave it for the latest. */
31
+ history: boolean;
32
+ failuresOn: boolean;
33
+ onToggleFailures: () => void;
34
+ about: TrajectoryAboutInfo;
35
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,24 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Qwen Team
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import type { TrajectoryFilter } from '../../trajectory/filterTrajectory';
7
+ /**
8
+ * Search, the type and status facets, and the selected time range, in one
9
+ * row. Matching rules live in `filterTrajectory`; this only edits the filter.
10
+ */
11
+ export declare function TrajectoryToolbar({ value, onChange, onNavigate, onClear, count, position, truncatedCount, range, onClearRange, status, }: {
12
+ value: TrajectoryFilter;
13
+ onChange: (filter: TrajectoryFilter) => void;
14
+ onNavigate: (direction: 1 | -1, filter?: TrajectoryFilter) => void;
15
+ onClear: () => void;
16
+ count: number;
17
+ position: number;
18
+ truncatedCount: number;
19
+ /** Label of the selected time range, when there is one. */
20
+ range?: string;
21
+ onClearRange: () => void;
22
+ /** How many records the current filters leave visible; announced only. */
23
+ status?: string;
24
+ }): import("react/jsx-runtime").JSX.Element;
@@ -2,6 +2,11 @@ import type { DaemonToolTranscriptBlock, DaemonTranscriptBlock } from '@qwen-cod
2
2
  import type { ACPToolCall } from '../../adapters/types';
3
3
  import type { TurnOutputOpenRequest } from './TurnOutputs';
4
4
  import { type OpenTurnCalls } from '../../turnCallsContext';
5
+ /**
6
+ * Strong ceiling for a single expanded field. Tool arguments and results can be
7
+ * arbitrarily large; the panel keeps them readable instead of letting a
8
+ * multi-megabyte payload reach the DOM.
9
+ */
5
10
  export interface TurnCallRow {
6
11
  block: DaemonToolTranscriptBlock;
7
12
  /** 0 for a top-level call, 1 for a call made by a sub-agent, and so on. */
@@ -0,0 +1,34 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Qwen Team
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import type { DaemonToolTranscriptBlock } from '@qwen-code/sdk/daemon';
7
+ import type { ACPToolCall } from '../../adapters/types';
8
+ /** The longest stretch of one argument or result put in the DOM by default. */
9
+ export declare const MAX_DETAIL_LENGTH = 4000;
10
+ export declare function stringifyValue(value: unknown): string;
11
+ /** Valid JSON renders as a code block; anything else stays plain text. */
12
+ export declare function ToolCallDetail({ text, limit, }: {
13
+ text: string;
14
+ limit?: number;
15
+ }): import("react/jsx-runtime").JSX.Element;
16
+ export declare function shellDetails(tool: ACPToolCall): {
17
+ command: string;
18
+ output: string;
19
+ other: string;
20
+ };
21
+ /**
22
+ * What a tool call's arguments and result read as: a shell call as its command
23
+ * and output, an edit or write as its diff, anything else as recorded.
24
+ */
25
+ export declare function toolCallContent(tool: ACPToolCall, block: Pick<DaemonToolTranscriptBlock, 'rawInput' | 'rawOutput' | 'content'>): {
26
+ diff: string;
27
+ shell: {
28
+ command: string;
29
+ output: string;
30
+ other: string;
31
+ } | undefined;
32
+ argumentsText: string;
33
+ resultText: string;
34
+ };
@@ -1,3 +1,4 @@
1
+ import { type WorkspaceExecutionMode } from '../workspaces/WorkspaceExecutionSelect';
1
2
  export interface WorkspacePathSuggestion {
2
3
  name: string;
3
4
  path: string;
@@ -14,6 +15,9 @@ export interface WorkspaceLocationOption {
14
15
  remote: boolean;
15
16
  }
16
17
  interface AddWorkspaceDialogProps {
18
+ executionMode?: WorkspaceExecutionMode;
19
+ onExecutionModeChange?: (mode: WorkspaceExecutionMode) => void;
20
+ executionModeLocked?: boolean;
17
21
  browseDirectories?: boolean;
18
22
  initialPath?: string;
19
23
  pathHint?: string;
@@ -32,5 +36,5 @@ interface AddWorkspaceDialogProps {
32
36
  onPick?: () => Promise<string | undefined>;
33
37
  persistenceSupported?: boolean;
34
38
  }
35
- export declare function AddWorkspaceDialog({ browseDirectories, initialPath, pathHint, pathPlaceholder, onClose, onAdd, displayNameEnabled, locations, selectedLocation, onLocationChange, onSuggest, onPick, persistenceSupported, }: AddWorkspaceDialogProps): import("react/jsx-runtime").JSX.Element;
39
+ export declare function AddWorkspaceDialog({ executionMode, onExecutionModeChange, executionModeLocked, browseDirectories, initialPath, pathHint, pathPlaceholder, onClose, onAdd, displayNameEnabled, locations, selectedLocation, onLocationChange, onSuggest, onPick, persistenceSupported, }: AddWorkspaceDialogProps): import("react/jsx-runtime").JSX.Element;
36
40
  export {};
@@ -0,0 +1,10 @@
1
+ interface SessionRenameDialogProps {
2
+ value: string;
3
+ busy: boolean;
4
+ error?: string;
5
+ onChange: (value: string) => void;
6
+ onSubmit: (displayName: string) => void;
7
+ onClose: () => void;
8
+ }
9
+ export declare function SessionRenameDialog({ value, busy, error, onChange, onSubmit, onClose, }: SessionRenameDialogProps): import("react/jsx-runtime").JSX.Element;
10
+ export {};
@@ -1,11 +1,13 @@
1
+ import type { ReactNode } from 'react';
1
2
  /**
2
3
  * The folder step before it can show folders: the daemon's capabilities are
3
4
  * still loading, the lookup failed, or the daemon cannot register workspaces at
4
5
  * all. One shell for all three, so the states cannot overlap or leave a gap.
5
6
  */
6
- export declare function WorkspaceAddStatusDialog({ message, tone, subtitle, onClose, }: {
7
+ export declare function WorkspaceAddStatusDialog({ message, tone, subtitle, onClose, children, }: {
7
8
  message: string;
8
9
  tone: 'status' | 'alert';
9
10
  subtitle?: string;
10
11
  onClose: () => void;
12
+ children?: ReactNode;
11
13
  }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,8 @@
1
+ import type { ManagedAgentProvider } from './managed-agent-provider';
2
+ export declare function ManagedChildSessionView({ provider, clientId, sessionId, onClose, restoreFocus, }: {
3
+ provider: ManagedAgentProvider;
4
+ clientId: string;
5
+ sessionId: string;
6
+ onClose(): void;
7
+ restoreFocus(): void;
8
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,8 @@
1
+ import type { ManagedAgentProvider } from './managed-agent-provider';
2
+ export interface ManagedMcpManagerPageProps {
3
+ provider: ManagedAgentProvider;
4
+ sessionId?: string;
5
+ workspaceId?: string;
6
+ onClose?: () => void;
7
+ }
8
+ export declare function ManagedMcpManagerPage(props: ManagedMcpManagerPageProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,9 @@
1
+ import type { ManagedSessionRecovery } from './managed-agent-provider';
2
+ export declare function ManagedRecoveryPanel({ recovery, busy, error, onRecheck, onCancel, onHandoff, }: {
3
+ recovery: ManagedSessionRecovery;
4
+ busy: boolean;
5
+ error?: string;
6
+ onRecheck: () => void;
7
+ onCancel?: () => void;
8
+ onHandoff?: () => void;
9
+ }): import("react/jsx-runtime").JSX.Element | null;
@@ -0,0 +1,18 @@
1
+ import type { ManagedAgentSessionSummary, ManagedLifecycleAction } from './managed-agent-provider';
2
+ import type { ManagedLifecycleState } from './use-managed-session-lifecycle';
3
+ export declare function managedSessionActions(session: ManagedAgentSessionSummary): ManagedLifecycleAction[];
4
+ export declare function ManagedSessionActions({ session, lifecycle, exporting, state, onAction, onExport, onConfirm, }: {
5
+ session: ManagedAgentSessionSummary;
6
+ lifecycle: boolean;
7
+ exporting?: boolean;
8
+ state?: ManagedLifecycleState;
9
+ onAction: (session: ManagedAgentSessionSummary, action: ManagedLifecycleAction) => void;
10
+ onExport?: (sessionId: string, format: 'html' | 'md') => void;
11
+ onConfirm: (sessionId: string) => void;
12
+ }): import("react/jsx-runtime").JSX.Element | null;
13
+ export declare function ManagedLifecycleConfirmation({ session, action, onConfirm, onClose, }: {
14
+ session: ManagedAgentSessionSummary;
15
+ action: ManagedLifecycleAction;
16
+ onConfirm: () => void;
17
+ onClose: () => void;
18
+ }): import("react/jsx-runtime").JSX.Element;
@@ -1,10 +1,27 @@
1
- import type { ManagedAgentProvider } from './managed-agent-provider';
2
- export declare function ManagedSessionsPage({ sessionId, onSelectSession, workspaceCwd, managedAgentProvider, navigationTarget, interactive, }: {
1
+ import type { WorkspaceSelectorOption } from '../WorkspaceSelector';
2
+ import type { ManagedCreationSkillsSource } from './managed-creation-skills';
3
+ import type { ManagedAgentProvider, ManagedAgentWorkspace } from './managed-agent-provider';
4
+ export declare function ManagedSessionsPage({ sessionId, workspaceCreationOpen, onWorkspaceCreationOpenChange, onWorkspaceCreated, onOpenLocalWorkspace, daemonWorkspaces, onSelectDaemonWorkspace, onWorkspacesChange, onSelectSession, onOpenSession, workspaceId, onSelectWorkspace, onSessionWorkspaceChange, workspaceCwd, managedAgentProvider, navigationTarget, interactive, creationSkills, onManageSkills, navigationActive, navigationSearch, }: {
3
5
  sessionId?: string;
4
- onSelectSession: (sessionId: string | undefined) => void;
6
+ workspaceCreationOpen?: boolean;
7
+ onWorkspaceCreationOpenChange?: (open: boolean) => void;
8
+ onWorkspaceCreated?: (workspaceId: string) => void;
9
+ onOpenLocalWorkspace?: () => void;
10
+ daemonWorkspaces?: WorkspaceSelectorOption[];
11
+ onSelectDaemonWorkspace?: (workspace: WorkspaceSelectorOption) => void;
12
+ onWorkspacesChange?: (workspaces: ManagedAgentWorkspace[]) => void;
13
+ onSelectSession: (sessionId: string | undefined, workspaceId?: string) => void;
14
+ onOpenSession?: (sessionId: string, workspaceId?: string) => void;
15
+ workspaceId?: string;
16
+ onSelectWorkspace?: (workspaceId: string) => void;
17
+ onSessionWorkspaceChange?: (workspaceId: string | null) => void;
5
18
  workspaceCwd?: string;
6
19
  managedAgentProvider?: ManagedAgentProvider;
7
20
  /** Null keeps home layout while its sidebar slot is temporarily unmounted. */
8
21
  navigationTarget?: HTMLElement | null;
9
22
  interactive?: boolean;
23
+ creationSkills?: ManagedCreationSkillsSource;
24
+ onManageSkills?: () => void;
25
+ navigationActive?: boolean;
26
+ navigationSearch?: string;
10
27
  }): import("react/jsx-runtime").JSX.Element;
@@ -2,7 +2,7 @@ import type { ManagedToolResultReader } from './managed-tool-result-types';
2
2
  import type { useManagedTasks } from './use-managed-tasks';
3
3
  import type { ManagedTaskCancelState, useManagedTaskCancel } from './use-managed-task-cancel';
4
4
  export declare function taskCancelMessage(state: ManagedTaskCancelState): string;
5
- export declare function ManagedTaskPanel({ wide, tasks, cancel, canCancel, reader, clientId, sessionId, onClose, restoreFocus, }: {
5
+ export declare function ManagedTaskPanel({ wide, tasks, cancel, canCancel, reader, clientId, sessionId, onClose, restoreFocus, waitingSessions, onOpenChild, }: {
6
6
  wide: boolean;
7
7
  tasks: ReturnType<typeof useManagedTasks>;
8
8
  cancel: ReturnType<typeof useManagedTaskCancel>;
@@ -12,4 +12,6 @@ export declare function ManagedTaskPanel({ wide, tasks, cancel, canCancel, reade
12
12
  sessionId: string;
13
13
  onClose: () => void;
14
14
  restoreFocus: () => void;
15
+ waitingSessions?: ReadonlySet<string>;
16
+ onOpenChild?: (sessionId: string) => void;
15
17
  }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,16 @@
1
+ import { type ReactNode } from 'react';
2
+ import type { ManagedAgentProvider, ManagedAgentSessionSummary, ManagedAgentWorkspace } from './managed-agent-provider';
3
+ export declare function ManagedWorkspaceNavigation({ provider, clientId, sessions, sessionId, workspaceId, active, search, revision, onSelectWorkspace, onSelectSession, onWorkspacesChange, renderSessionActions, }: {
4
+ provider: ManagedAgentProvider;
5
+ clientId: string;
6
+ sessions: ManagedAgentSessionSummary[];
7
+ sessionId?: string;
8
+ workspaceId?: string;
9
+ active: boolean;
10
+ search: string;
11
+ revision: number;
12
+ onSelectWorkspace?: (workspaceId: string) => void;
13
+ onSelectSession: (sessionId: string, workspaceId?: string) => void;
14
+ onWorkspacesChange?: (workspaces: ManagedAgentWorkspace[]) => void;
15
+ renderSessionActions?: (session: ManagedAgentSessionSummary) => ReactNode;
16
+ }): import("react/jsx-runtime").JSX.Element;