@qwen-code/web-shell 0.25.1 → 0.25.2-nightly.20261016.b4614845f0

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 (136) hide show
  1. package/NOTICES.txt +2467 -0
  2. package/README.md +70 -12
  3. package/dist/PierreFilePreview-C735lVHA.js +13124 -0
  4. package/dist/SpreadsheetPreview-C3Rm6nLP.js +379 -0
  5. package/dist/WorkspaceFileBrowser-BBnusVo2.js +9102 -0
  6. package/dist/{agents-route-CufkSNnD.js → agents-route-DS1sYuAH.js} +35 -35
  7. package/dist/c-eeMepfLm.js +6 -0
  8. package/dist/cpp-C0xArK63.js +19 -0
  9. package/dist/csharp-B2h9rwLg.js +6 -0
  10. package/dist/css-D8kMf1Az.js +6 -0
  11. package/dist/daemon-react-sdk.js +1 -1
  12. package/dist/diff-BxzP2J8R.js +6 -0
  13. package/dist/dockerfile-CsHqm9tx.js +6 -0
  14. package/dist/github-dark-DenFmJkN.js +4 -0
  15. package/dist/github-light-JYsPkUQd.js +4 -0
  16. package/dist/go-EbF93JXO.js +6 -0
  17. package/dist/html-Wr5yTrgx.js +10 -0
  18. package/dist/{index-Deg_ZdBo.js → index-BRdReCMn.js} +56288 -51231
  19. package/dist/index.js +29 -29
  20. package/dist/ini-BZIuRIvJ.js +6 -0
  21. package/dist/java-DY6VlHhP.js +6 -0
  22. package/dist/javascript-C25yR2R2.js +6 -0
  23. package/dist/json-DxJze_jm.js +6 -0
  24. package/dist/jsonc-CHjZD8gR.js +6 -0
  25. package/dist/jsx-BtKADgXT.js +6 -0
  26. package/dist/kotlin-ByBMgTeR.js +6 -0
  27. package/dist/lua-Bp3IRv7I.js +8 -0
  28. package/dist/makefile-CsMclxtr.js +6 -0
  29. package/dist/markdown-CrScaQ96.js +6 -0
  30. package/dist/objective-cpp-DGt5UKRO.js +6 -0
  31. package/dist/php-DBsTw_pP.js +18 -0
  32. package/dist/python-BFNSHbwJ.js +6 -0
  33. package/dist/ruby-vDzP41xB.js +41 -0
  34. package/dist/rust-BMMJSOUe.js +6 -0
  35. package/dist/shellscript-InADTalH.js +6 -0
  36. package/dist/sql-CZBvVSLl.js +6 -0
  37. package/dist/sw.js +1 -1
  38. package/dist/swift-DOmCYlRt.js +6 -0
  39. package/dist/toml-DY62mUL_.js +6 -0
  40. package/dist/transcript.js +9749 -9499
  41. package/dist/tsx-B8rCNbgL.js +6 -0
  42. package/dist/types/App.d.ts +8 -5
  43. package/dist/types/adapters/transcriptAdapter.d.ts +1 -1
  44. package/dist/types/browser-turn-notifications.d.ts +2 -1
  45. package/dist/types/components/ChatContextHeader.d.ts +12 -3
  46. package/dist/types/components/ChatEditor.d.ts +7 -0
  47. package/dist/types/components/ChatPane.d.ts +2 -1
  48. package/dist/types/components/ContextUsagePopover.d.ts +2 -1
  49. package/dist/types/components/SplitView.d.ts +2 -1
  50. package/dist/types/components/StreamingStatus.d.ts +2 -1
  51. package/dist/types/components/WorkspaceSelector.d.ts +2 -1
  52. package/dist/types/components/artifacts/ArtifactPanel.d.ts +17 -3
  53. package/dist/types/components/artifacts/PierreFilePreview.d.ts +4 -0
  54. package/dist/types/components/artifacts/SpreadsheetPreview.d.ts +7 -0
  55. package/dist/types/components/artifacts/TrajectoryExecutions.d.ts +9 -0
  56. package/dist/types/components/artifacts/TrajectoryInspector.d.ts +6 -1
  57. package/dist/types/components/artifacts/TrajectoryPanel.d.ts +2 -1
  58. package/dist/types/components/artifacts/WorkspaceFileBrowser.d.ts +11 -0
  59. package/dist/types/components/artifacts/artifactUtils.d.ts +1 -0
  60. package/dist/types/components/artifacts/excel-preview-parser.d.ts +5 -0
  61. package/dist/types/components/artifacts/excel-preview-types.d.ts +44 -0
  62. package/dist/types/components/artifacts/excel-preview.worker.d.ts +1 -0
  63. package/dist/types/components/artifacts/file-name-display.d.ts +1 -0
  64. package/dist/types/components/artifacts/files-messages.d.ts +66 -0
  65. package/dist/types/components/artifacts/files-messages.transcript-stub.d.ts +2 -0
  66. package/dist/types/components/artifacts/useArtifactWorkspaceTarget.d.ts +7 -2
  67. package/dist/types/components/managed/ManagedSessionsPage.d.ts +4 -1
  68. package/dist/types/components/managed/ManagedTaskPanel.d.ts +15 -0
  69. package/dist/types/components/managed/ManagedToolResultPanel.d.ts +6 -1
  70. package/dist/types/components/managed/RemoteWorkspaceRegistration.d.ts +9 -0
  71. package/dist/types/components/managed/WorkspaceBindingCreator.d.ts +3 -1
  72. package/dist/types/components/managed/generated/managed-agent-api.d.ts +653 -15
  73. package/dist/types/components/managed/java-managed-agent-client.d.ts +76 -0
  74. package/dist/types/components/managed/java-managed-agent-provider.d.ts +4 -0
  75. package/dist/types/components/managed/managed-agent-provider.d.ts +117 -0
  76. package/dist/types/components/managed/managed-development-options.d.ts +7 -0
  77. package/dist/types/components/managed/managed-session-storage.d.ts +1 -1
  78. package/dist/types/components/managed/managed-task-messages.d.ts +9 -0
  79. package/dist/types/components/managed/managed-task-messages.transcript-stub.d.ts +7 -0
  80. package/dist/types/components/managed/managed-task.test-fixtures.d.ts +4 -0
  81. package/dist/types/components/managed/managed-workspace-messages.d.ts +7 -0
  82. package/dist/types/components/managed/managed-workspace-messages.transcript-stub.d.ts +7 -0
  83. package/dist/types/components/managed/use-managed-approval-change.d.ts +24 -0
  84. package/dist/types/components/managed/use-managed-model-change.d.ts +23 -0
  85. package/dist/types/components/managed/use-managed-task-cancel.d.ts +12 -0
  86. package/dist/types/components/managed/use-managed-tasks.d.ts +49 -0
  87. package/dist/types/components/messages/BrowserNotificationControl.d.ts +1 -0
  88. package/dist/types/components/messages/SelectionCopyMenu.d.ts +8 -0
  89. package/dist/types/components/messages/SelectionCopyMenu.transcript-stub.d.ts +2 -0
  90. package/dist/types/components/messages/TasksStatusMessage.d.ts +2 -1
  91. package/dist/types/components/messages/ToolApproval.d.ts +2 -1
  92. package/dist/types/components/messages/WorkflowExecutionView.d.ts +3 -1
  93. package/dist/types/components/messages/toolFormatting.d.ts +3 -3
  94. package/dist/types/components/messages/workflow-agent-details.d.ts +3 -0
  95. package/dist/types/components/messages/workflow-agent-details.transcript-stub.d.ts +1 -0
  96. package/dist/types/components/panels/EnvironmentPanel.d.ts +5 -0
  97. package/dist/types/components/sidebar/WebShellSidebar.d.ts +4 -1
  98. package/dist/types/components/ui/alert.d.ts +1 -1
  99. package/dist/types/components/ui/drawer.d.ts +1 -1
  100. package/dist/types/components/ui/resizable.d.ts +5 -0
  101. package/dist/types/components/workflows/WorkflowRunsPage.d.ts +3 -1
  102. package/dist/types/constants/sessions.d.ts +1 -0
  103. package/dist/types/constants/toolNames.d.ts +1 -0
  104. package/dist/types/customization.d.ts +7 -5
  105. package/dist/types/daemon/session/turn-notification-context.d.ts +2 -1
  106. package/dist/types/daemon/session/types.d.ts +7 -2
  107. package/dist/types/hooks/useComposerCore.d.ts +3 -2
  108. package/dist/types/hooks/useMcpAppMessages.d.ts +22 -0
  109. package/dist/types/index.d.ts +1 -1
  110. package/dist/types/mcp-app/messages.d.ts +7 -0
  111. package/dist/types/mcp-app/messages.transcript-stub.d.ts +7 -0
  112. package/dist/types/mcpAppHostContext.d.ts +13 -0
  113. package/dist/types/subagentDetailsContext.d.ts +1 -1
  114. package/dist/types/trajectory/execution-messages.d.ts +9 -0
  115. package/dist/types/trajectory/execution-messages.transcript-stub.d.ts +7 -0
  116. package/dist/types/trajectory/project-trajectory-executions.d.ts +23 -0
  117. package/dist/types/trajectory/project-trajectory-lifecycle.d.ts +27 -0
  118. package/dist/types/trajectory/trajectory-live-context.d.ts +3 -0
  119. package/dist/types/trajectory/trajectory-live-store.d.ts +36 -0
  120. package/dist/types/trajectory/transcriptPageLoader.d.ts +5 -1
  121. package/dist/types/trajectory/useTrajectoryWindow.d.ts +2 -0
  122. package/dist/types/utils/askUserPermission.d.ts +1 -1
  123. package/dist/types/utils/composerModels.d.ts +18 -0
  124. package/dist/types/utils/planMode.d.ts +1 -1
  125. package/dist/types/utils/promptAdmission.d.ts +4 -0
  126. package/dist/types/utils/selectionClipboard.d.ts +5 -0
  127. package/dist/types/voice/messages.d.ts +9 -0
  128. package/dist/types/voice/messages.transcript-stub.d.ts +7 -0
  129. package/dist/types/voice/voice-error.d.ts +7 -0
  130. package/dist/typescript-RycA9KXf.js +6 -0
  131. package/dist/{toolNames-Co4lBbW-.js → useDaemonMidTurnInjected-DJOlO2pI.js} +5943 -5082
  132. package/dist/vue-IHw0KG71.js +33 -0
  133. package/dist/wasm-DQxwEHae.js +7 -0
  134. package/dist/xml-C2J0sS9M.js +8 -0
  135. package/dist/yaml-DaO7k5B1.js +6 -0
  136. package/package.json +21 -4
@@ -1,4 +1,4 @@
1
1
  import type { DaemonTranscriptBlock } from '@qwen-code/web-shell/daemon-react-sdk';
2
- import type { PermissionRequest } from './types';
2
+ import type { PermissionRequest } from './types.js';
3
3
  export declare function extractPendingPermission(blocks: readonly DaemonTranscriptBlock[]): PermissionRequest | null;
4
4
  export declare function escapePreviewText(text: string): string;
@@ -7,7 +7,7 @@ import { type ReactNode } from 'react';
7
7
  import { type WebShellLanguage } from './i18n';
8
8
  export declare const BROWSER_NOTIFICATIONS_STORAGE_KEY = "qwen-code-web-shell-browser-notifications";
9
9
  export interface WebShellBrowserNotificationsOptions {
10
- /** Initial preference when none is saved. Defaults to false; never requests permission automatically. */
10
+ /** Initial preference when none is saved. Defaults to false; mounting alone never requests permission. */
11
11
  defaultEnabled?: boolean;
12
12
  /** Application name prefixed to notification titles. Defaults to QwenCode. */
13
13
  appName?: string;
@@ -28,6 +28,7 @@ interface BrowserNotificationSettings {
28
28
  persistent: boolean;
29
29
  error: boolean;
30
30
  setEnabled(enabled: boolean): Promise<void>;
31
+ requestPermissionOnce(): void;
31
32
  refreshPermission(): void;
32
33
  syncLanguage(language: WebShellLanguage): void;
33
34
  }
@@ -6,18 +6,27 @@ interface ChatContextHeaderProps {
6
6
  /**
7
7
  * Workspace shown as the header's leading icon. Omitting it means the shell
8
8
  * has no workspace: the icon stays the same folder and only its tooltip says
9
- * so, because the icon is the one place that always answers "which workspace
10
- * is this session in?".
9
+ * so. In a session this icon always reports the workspace; the empty-state
10
+ * header can defer to a visible composer workspace selector.
11
11
  */
12
12
  workspaceName?: string;
13
13
  /** Full workspace path, shown as the leading icon's hover tooltip. */
14
14
  workspacePath?: string;
15
+ /**
16
+ * Hides the leading workspace icon when the new-task composer's workspace
17
+ * selector is visible and already names the workspace.
18
+ */
19
+ hideWorkspaceIcon?: boolean;
15
20
  environmentOpen: boolean;
16
21
  environmentAvailable: boolean;
22
+ /** Whether the panel holds an in-progress subagent or background task. */
23
+ environmentRunning?: boolean;
17
24
  rightPanelOpen: boolean;
18
25
  rightPanelAvailable: boolean;
19
26
  onToggleEnvironment: () => void;
20
27
  onToggleRightPanel: () => void;
28
+ /** Opens the current workspace file tree; informational when omitted. */
29
+ onOpenFiles?: () => void;
21
30
  /** Opens the session token-usage panel; hidden when omitted. */
22
31
  onOpenTokenUsage?: () => void;
23
32
  /** Opens the session context panel; hidden when omitted. */
@@ -25,5 +34,5 @@ interface ChatContextHeaderProps {
25
34
  /** Shows the Local Control QR entry; hidden when omitted. */
26
35
  onOpenLocalControlSettings?: () => void;
27
36
  }
28
- export declare function ChatContextHeader({ content, location, workspaceName, workspacePath, environmentOpen, environmentAvailable, rightPanelOpen, rightPanelAvailable, onToggleEnvironment, onToggleRightPanel, onOpenTokenUsage, onOpenContextUsage, onOpenLocalControlSettings, }: ChatContextHeaderProps): import("react/jsx-runtime").JSX.Element;
37
+ export declare function ChatContextHeader({ content, location, workspaceName, workspacePath, hideWorkspaceIcon, environmentOpen, environmentAvailable, environmentRunning, rightPanelOpen, rightPanelAvailable, onToggleEnvironment, onToggleRightPanel, onOpenFiles, onOpenTokenUsage, onOpenContextUsage, onOpenLocalControlSettings, }: ChatContextHeaderProps): import("react/jsx-runtime").JSX.Element;
29
38
  export {};
@@ -39,11 +39,13 @@ interface ChatEditorProps {
39
39
  onPopQueuedMessages?: () => boolean;
40
40
  onClearQueuedMessages?: () => boolean;
41
41
  currentMode?: string;
42
+ availableModes?: readonly string[];
42
43
  planMode?: boolean;
43
44
  modeControlsDisabled?: boolean;
44
45
  onTogglePlan?: () => void;
45
46
  sessionWorkflowEnabled?: boolean;
46
47
  currentModel?: string;
48
+ modelControlsDisabled?: boolean;
47
49
  gitBranch?: string;
48
50
  /** Whether the session is in a worktree (styles the git chip purple). */
49
51
  gitWorktree?: boolean;
@@ -90,6 +92,8 @@ interface ChatEditorProps {
90
92
  contextWindow?: number;
91
93
  /** Keep Context Usage available before a restored session reports usage. */
92
94
  contextUsageAlwaysVisible?: boolean;
95
+ /** Explicit observation state permits zero; omission keeps legacy inference. */
96
+ contextUsageKnown?: boolean;
93
97
  /** Show the context-usage breakdown, exactly like typing /context. */
94
98
  onShowContextUsage?: () => void;
95
99
  onOpenContextUsage?: () => void;
@@ -105,6 +109,7 @@ interface ChatEditorProps {
105
109
  workspaces?: WorkspaceSelectorOption[];
106
110
  selectedWorkspaceCwd?: string;
107
111
  workspaceSelectionDisabled?: boolean;
112
+ workspaceSelectorAlwaysVisible?: boolean;
108
113
  onSelectWorkspace?: (workspaceCwd: string | undefined) => void;
109
114
  /** Host-aware variant; see WorkspaceSelector. */
110
115
  onSelectHostedWorkspace?: (hostOrigin: string, workspaceCwd: string | undefined) => void;
@@ -118,6 +123,8 @@ interface ChatEditorProps {
118
123
  onOpenExistingWorkspace?: () => void;
119
124
  atWorkspaceCwd?: string;
120
125
  composerScopeKey?: string;
126
+ disableLegacyHistoryFallback?: boolean;
127
+ shellModeEnabled?: boolean;
121
128
  workspaceFeaturesEnabled?: boolean;
122
129
  attachmentsEnabled?: boolean;
123
130
  onChatWidthModeChange?: (mode: '1000' | 'wide') => void;
@@ -83,6 +83,7 @@ export interface ChatPaneProps {
83
83
  voiceWorkspaces?: readonly DaemonWorkspaceCapability[];
84
84
  /** Enable the app-scoped experimental Session Workflow presentation. */
85
85
  sessionWorkflowEnabled?: boolean;
86
+ showResponseTokensPerSecond?: boolean;
86
87
  planControlVisible?: boolean;
87
88
  }
88
89
  /**
@@ -92,4 +93,4 @@ export interface ChatPaneProps {
92
93
  * state, approvals, and composer, and the browser scopes keyboard focus to the
93
94
  * pane the user clicks into — so there is no cross-pane approval arbitration.
94
95
  */
95
- 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, planControlVisible, }: ChatPaneProps): import("react/jsx-runtime").JSX.Element;
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;
@@ -1,8 +1,9 @@
1
1
  import { type ReactElement } from 'react';
2
2
  import type { ContextUsageControls } from '../hooks/useContextUsageControls';
3
- export declare function ContextUsagePopover({ tokenCount, contextWindow, controls, onOpenDetails, showSnapshotHint, children, }: {
3
+ export declare function ContextUsagePopover({ tokenCount, contextWindow, known: observedKnown, controls, onOpenDetails, showSnapshotHint, children, }: {
4
4
  tokenCount: number;
5
5
  contextWindow: number;
6
+ known?: boolean;
6
7
  controls?: Pick<ContextUsageControls, 'canCompress' | 'compressing' | 'result' | 'compress'>;
7
8
  onOpenDetails?: () => void;
8
9
  showSnapshotHint: boolean;
@@ -12,6 +12,7 @@ import { type PaneHeaderActionsRenderer } from './ChatPane';
12
12
  import type { TurnOutputKind, TurnOutputOpenRequest } from './artifacts/TurnOutputs';
13
13
  import type { WebShellAssistantTurnSettledEvent } from '../customization';
14
14
  export interface SplitViewProps {
15
+ showResponseTokensPerSecond?: boolean;
15
16
  /** Sessions to show in the split view. */
16
17
  sessionIds?: string[];
17
18
  /** Respect the host's session-details action allowlist. */
@@ -70,4 +71,4 @@ export interface SplitViewProps {
70
71
  * naturally scopes the keyboard to the pane the user clicks into, so panes never
71
72
  * fight over which session an approval or Enter belongs to.
72
73
  */
73
- 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, planControlVisible, }: SplitViewProps): import("react/jsx-runtime").JSX.Element;
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;
@@ -15,6 +15,7 @@ interface StreamingStatusProps {
15
15
  * (#9487). The daemon's session live state is the authoritative source.
16
16
  */
17
17
  hasActivePrompt?: boolean;
18
+ showResponseTokensPerSecond?: boolean;
18
19
  }
19
- export declare function StreamingStatus({ startedAt, backgroundLabel, showPhrase, hasActivePrompt, }: StreamingStatusProps): import("react/jsx-runtime").JSX.Element | null;
20
+ export declare function StreamingStatus({ startedAt, backgroundLabel, showPhrase, hasActivePrompt, showResponseTokensPerSecond, }: StreamingStatusProps): import("react/jsx-runtime").JSX.Element | null;
20
21
  export {};
@@ -12,6 +12,7 @@ interface WorkspaceSelectorProps {
12
12
  selectedWorkspaceCwd?: string;
13
13
  disabled?: boolean;
14
14
  busy?: boolean;
15
+ alwaysVisible?: boolean;
15
16
  scratchSupported: boolean;
16
17
  existingFolderSupported: boolean;
17
18
  /** Offer a projectless (standalone) target alongside the workspaces. */
@@ -33,5 +34,5 @@ interface WorkspaceSelectorProps {
33
34
  * Composer workspace menu. Capability-gated creation actions and disabled
34
35
  * untrusted entries keep presentation aligned with daemon authorization.
35
36
  */
36
- export declare function WorkspaceSelector({ workspaces, selectedWorkspaceCwd, disabled, busy, scratchSupported, existingFolderSupported, standaloneSupported, selectedStandalone, className, onSelectWorkspace, onSelectHostedWorkspace, onSelectStandalone, onCreateScratch, onOpenExistingFolder, }: WorkspaceSelectorProps): import("react/jsx-runtime").JSX.Element | null;
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;
37
38
  export {};
@@ -14,7 +14,13 @@ export type ImageTabSource = {
14
14
  attachmentId: string;
15
15
  sessionId?: string;
16
16
  };
17
- export type ArtifactPanelTab = (WebPreviewState & {
17
+ export type ArtifactPanelTab = {
18
+ id: string;
19
+ kind: 'files';
20
+ title: string;
21
+ workspaceCwd: string;
22
+ workspaceId?: string;
23
+ } | (WebPreviewState & {
18
24
  id: string;
19
25
  kind: 'web_preview';
20
26
  title: string;
@@ -152,6 +158,7 @@ export type ArtifactPanelTab = (WebPreviewState & {
152
158
  * its loading state until then.
153
159
  */
154
160
  loadPage?: TrajectoryPageLoader;
161
+ historyGapRevision?: number;
155
162
  } | {
156
163
  id: string;
157
164
  kind: 'token_usage';
@@ -187,6 +194,7 @@ export interface SideTaskListItem {
187
194
  title: string;
188
195
  workspaceCwd?: string;
189
196
  updatedAt?: string;
197
+ archivable?: boolean;
190
198
  }
191
199
  interface ArtifactPanelProps {
192
200
  contextUsageControls?: Readonly<Record<string, ContextUsageControls>>;
@@ -203,7 +211,7 @@ interface ArtifactPanelProps {
203
211
  onSelectTurnCallsPrompt?: (turnId: string, recordId?: string, promptId?: string, promptLabel?: string) => void;
204
212
  onSelectTab: (tabId: string) => void;
205
213
  onCloseTab: (tabId: string) => void;
206
- onOpenFilePreview: (change: TurnOutputFileChange, workspaceCwd?: string, workspaceId?: string) => void;
214
+ onOpenFilePreview: (change: TurnOutputFileChange | string, workspaceCwd?: string, workspaceId?: string) => void;
207
215
  latestReviewAvailable?: boolean;
208
216
  onOpenLatestReview?: () => void;
209
217
  /** Open an interactive terminal tab in this panel (shown as an empty-state action). */
@@ -217,14 +225,20 @@ interface ArtifactPanelProps {
217
225
  * than for any trajectory tab at all.
218
226
  */
219
227
  trajectoryTabId?: string;
228
+ onOpenFiles?: () => void;
229
+ onReferenceFile?: (path: string) => void;
220
230
  onOpenWebPreview?: () => void;
221
231
  onWebPreviewChange?: (tabId: string, state: WebPreviewState) => void;
222
232
  items?: readonly WebShellRightPanelItem[];
223
233
  sideTaskAvailable?: boolean;
224
234
  sideTasks?: readonly SideTaskListItem[];
235
+ archivedSideTasks?: readonly SideTaskListItem[];
225
236
  sideTasksLoading?: boolean;
226
237
  onCreateSideTask?: () => void;
227
238
  onOpenSideTask?: (sideTask: SideTaskListItem) => void;
239
+ onArchiveSideTasks?: (sideTasks: readonly SideTaskListItem[]) => void | Promise<void>;
240
+ onUnarchiveSideTasks?: (sideTasks: readonly SideTaskListItem[]) => void | Promise<void>;
241
+ onSideTaskMenuOpen?: () => void;
228
242
  onCreateSideTaskSession?: (tabId: string, parentSessionId: string, title: string) => Promise<{
229
243
  sessionId: string;
230
244
  displayName?: string;
@@ -263,5 +277,5 @@ interface ArtifactPanelProps {
263
277
  fullscreen?: boolean;
264
278
  onToggleFullscreen?: () => void;
265
279
  }
266
- export declare function ArtifactPanel({ contextUsageControls, artifacts, tabs, activeTabId, reviewChanges, selectedReviewPath, panelWidth, workspaceCwd, loading, restoring, error, onSelectTab, onSelectTurnCallsPrompt, onCloseTab, onOpenFilePreview, latestReviewAvailable, onOpenLatestReview, onOpenTerminal, onOpenTrajectory, trajectoryTabId, onOpenWebPreview, onWebPreviewChange, items, sideTaskAvailable, sideTasks, sideTasksLoading, onCreateSideTask, onOpenSideTask, 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;
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;
267
281
  export {};
@@ -0,0 +1,4 @@
1
+ export default function PierreFilePreview({ path, content, }: {
2
+ path: string;
3
+ content: string;
4
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,7 @@
1
+ import type { ArtifactWorkspaceActions } from './useArtifactWorkspaceTarget';
2
+ export default function SpreadsheetPreview({ workspacePath, workspaceActions, data, artifactVersion, }: {
3
+ workspacePath: string;
4
+ workspaceActions?: ArtifactWorkspaceActions;
5
+ data?: Blob;
6
+ artifactVersion?: string;
7
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,9 @@
1
+ import type { TrajectoryExecutionRow } from '../../trajectory/project-trajectory-executions';
2
+ export declare function TrajectoryExecutions({ rows, omitted, incomplete, outsideWindow, selectedKey, onSelect, }: {
3
+ rows: readonly TrajectoryExecutionRow[];
4
+ omitted: number;
5
+ incomplete: boolean;
6
+ outsideWindow: number;
7
+ selectedKey?: string;
8
+ onSelect: (key: string) => void;
9
+ }): import("react/jsx-runtime").JSX.Element;
@@ -3,9 +3,14 @@
3
3
  * Copyright 2026 Qwen Team
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
+ import type { TrajectoryLifecycleEntry } from '../../trajectory/project-trajectory-lifecycle';
7
+ import type { TrajectoryExecutionRow } from '../../trajectory/project-trajectory-executions';
6
8
  import type { TrajectoryRow } from '../../trajectory/types';
7
- export declare function TrajectoryInspector({ row, title, stale, turnSelected, hiddenByRange, hiddenByCollapse, hiddenByFilter, onClearFilter, onReveal, onClearRange, onClose, }: {
9
+ export declare function TrajectoryInspector({ row, lifecycle, execution, onLocateExecution, title, stale, turnSelected, hiddenByRange, hiddenByCollapse, hiddenByFilter, onClearFilter, onReveal, onClearRange, onClose, }: {
8
10
  row?: TrajectoryRow;
11
+ lifecycle?: TrajectoryLifecycleEntry;
12
+ execution?: TrajectoryExecutionRow;
13
+ onLocateExecution?: () => void;
9
14
  title?: string;
10
15
  stale?: boolean;
11
16
  turnSelected?: boolean;
@@ -10,5 +10,6 @@ export interface TrajectoryPanelProps {
10
10
  * tab is waiting to be rewired, which renders as the loading state.
11
11
  */
12
12
  loadPage?: TrajectoryPageLoader;
13
+ historyGapRevision?: number;
13
14
  }
14
- export declare function TrajectoryPanel({ loadPage }: TrajectoryPanelProps): import("react/jsx-runtime").JSX.Element;
15
+ export declare function TrajectoryPanel({ loadPage, historyGapRevision, }: TrajectoryPanelProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,11 @@
1
+ import { type ReactNode } from 'react';
2
+ import type { ArtifactWorkspaceActions } from './useArtifactWorkspaceTarget';
3
+ interface WorkspaceFileBrowserProps {
4
+ workspaceCwd: string;
5
+ actions: ArtifactWorkspaceActions;
6
+ onOpenPreview: (path: string) => void;
7
+ onReferenceFile?: (path: string) => void;
8
+ renderPreview: (path: string, source: boolean, version: number) => ReactNode;
9
+ }
10
+ export declare function WorkspaceFileBrowser({ workspaceCwd, actions, renderPreview, onOpenPreview, onReferenceFile, }: WorkspaceFileBrowserProps): import("react/jsx-runtime").JSX.Element;
11
+ export {};
@@ -2,6 +2,7 @@ import type { DaemonSessionArtifact, DaemonWorkspaceFileBytes } from '@qwen-code
2
2
  import type { DaemonWorkspaceActions } from '@qwen-code/web-shell/daemon-react-sdk';
3
3
  export declare function artifactKindLabel(kind: string, workspacePath?: string): string;
4
4
  export declare function isOfficeDocumentPath(workspacePath?: string): boolean;
5
+ export declare function isExcelFile(workspacePath?: string, mimeType?: string): boolean;
5
6
  export declare function isDownloadOnlyWorkspaceArtifact(artifact: {
6
7
  kind?: string;
7
8
  workspacePath?: string;
@@ -0,0 +1,5 @@
1
+ import ExcelJS from 'exceljs';
2
+ import type { ExcelPreviewSheet, ExcelPreviewWorkbookInfo } from './excel-preview-types';
3
+ export declare function loadExcelWorkbook(data: ArrayBuffer): Promise<ExcelJS.Workbook>;
4
+ export declare function getExcelWorkbookInfo(workbook: ExcelJS.Workbook): ExcelPreviewWorkbookInfo;
5
+ export declare function projectExcelSheet(workbook: ExcelJS.Workbook, index: number): ExcelPreviewSheet;
@@ -0,0 +1,44 @@
1
+ import type { CSSProperties } from 'react';
2
+ export declare const MAX_EXCEL_PREVIEW_BYTES: number;
3
+ export declare const MAX_EXCEL_PREVIEW_CELLS = 100000;
4
+ export declare const MAX_EXCEL_PREVIEW_MERGED_CELLS = 100000;
5
+ export declare const MAX_EXCEL_PREVIEW_MERGES = 10000;
6
+ export interface ExcelPreviewCell {
7
+ text: string;
8
+ formula?: string;
9
+ uncalculated?: boolean;
10
+ style: CSSProperties;
11
+ }
12
+ export interface ExcelPreviewSheet {
13
+ name: string;
14
+ rows: (ExcelPreviewCell | null)[][];
15
+ columns: number;
16
+ truncated: boolean;
17
+ merges: {
18
+ top: number;
19
+ left: number;
20
+ bottom: number;
21
+ right: number;
22
+ }[];
23
+ }
24
+ export interface ExcelPreviewWorkbookInfo {
25
+ sheetNames: string[];
26
+ }
27
+ export type ExcelPreviewRequest = {
28
+ type: 'load';
29
+ data: ArrayBuffer;
30
+ } | {
31
+ type: 'sheet';
32
+ index: number;
33
+ };
34
+ export type ExcelPreviewResult = {
35
+ type: 'loaded';
36
+ workbook: ExcelPreviewWorkbookInfo;
37
+ } | {
38
+ type: 'sheet';
39
+ index: number;
40
+ sheet: ExcelPreviewSheet;
41
+ } | {
42
+ type: 'error';
43
+ };
44
+ export declare function excelColumnLabel(index: number): string;
@@ -0,0 +1 @@
1
+ export declare function formatFileName(name: string): string;
@@ -0,0 +1,66 @@
1
+ export declare const FILES_MESSAGES_EN: {
2
+ 'files.delete': string;
3
+ 'files.deleteTitle': string;
4
+ 'files.deleteWarning': string;
5
+ 'files.copyRelativePath': string;
6
+ 'files.copyAbsolutePath': string;
7
+ 'files.reference': string;
8
+ 'files.title': string;
9
+ 'files.newFile': string;
10
+ 'files.newFolder': string;
11
+ 'files.deleteMenu': string;
12
+ 'files.deleteFolderTitle': string;
13
+ 'files.deleteFolderWarning': string;
14
+ 'files.deleting': string;
15
+ 'files.name': string;
16
+ 'files.create': string;
17
+ 'files.creating': string;
18
+ 'files.destination': string;
19
+ 'files.invalidName': string;
20
+ 'files.uploadTo': string;
21
+ 'files.description': string;
22
+ 'files.filter': string;
23
+ 'files.noMatches': string;
24
+ 'files.resizeTree': string;
25
+ 'files.toggleTree': string;
26
+ 'files.closePreview': string;
27
+ 'files.emptyDirectory': string;
28
+ 'files.truncated': string;
29
+ 'files.loadFailed': string;
30
+ 'files.reloadUnavailable': string;
31
+ 'files.close': string;
32
+ 'files.sourceTooLarge': string;
33
+ };
34
+ export declare const FILES_MESSAGES_ZH: {
35
+ 'files.delete': string;
36
+ 'files.deleteTitle': string;
37
+ 'files.deleteWarning': string;
38
+ 'files.copyRelativePath': string;
39
+ 'files.copyAbsolutePath': string;
40
+ 'files.reference': string;
41
+ 'files.title': string;
42
+ 'files.newFile': string;
43
+ 'files.newFolder': string;
44
+ 'files.deleteMenu': string;
45
+ 'files.deleteFolderTitle': string;
46
+ 'files.deleteFolderWarning': string;
47
+ 'files.deleting': string;
48
+ 'files.name': string;
49
+ 'files.create': string;
50
+ 'files.creating': string;
51
+ 'files.destination': string;
52
+ 'files.invalidName': string;
53
+ 'files.uploadTo': string;
54
+ 'files.description': string;
55
+ 'files.filter': string;
56
+ 'files.noMatches': string;
57
+ 'files.resizeTree': string;
58
+ 'files.toggleTree': string;
59
+ 'files.closePreview': string;
60
+ 'files.emptyDirectory': string;
61
+ 'files.truncated': string;
62
+ 'files.loadFailed': string;
63
+ 'files.reloadUnavailable': string;
64
+ 'files.close': string;
65
+ 'files.sourceTooLarge': string;
66
+ };
@@ -0,0 +1,2 @@
1
+ export declare const FILES_MESSAGES_EN: {};
2
+ export declare const FILES_MESSAGES_ZH: {};
@@ -1,6 +1,11 @@
1
- import type { DaemonCapabilities } from '@qwen-code/sdk/daemon';
1
+ import type { DaemonCapabilities, WorkspaceDaemonClient } from '@qwen-code/sdk/daemon';
2
2
  import { type DaemonWorkspaceActions } from '@qwen-code/web-shell/daemon-react-sdk';
3
- export type ArtifactWorkspaceActions = Pick<DaemonWorkspaceActions, 'readWorkspaceFile' | 'readFileBytes' | 'stat' | 'listScheduledTasks' | 'updateScheduledTask' | 'deleteScheduledTask'>;
3
+ import type { FileUploadClient } from '../../hooks/useFileUpload';
4
+ export type ArtifactWorkspaceActions = Pick<DaemonWorkspaceActions, 'readWorkspaceFile' | 'readFileBytes' | 'stat' | 'listDirectory' | 'listScheduledTasks' | 'updateScheduledTask' | 'deleteScheduledTask'> & Partial<Pick<WorkspaceDaemonClient, 'deleteWorkspaceFile'>> & Partial<FileUploadClient> & {
5
+ createFile?(path: string): Promise<void>;
6
+ createDirectory?(path: string): Promise<void>;
7
+ deleteDirectory?(path: string): Promise<void>;
8
+ };
4
9
  interface ArtifactWorkspaceOwner {
5
10
  cwd: string;
6
11
  id?: string;
@@ -1,7 +1,10 @@
1
1
  import type { ManagedAgentProvider } from './managed-agent-provider';
2
- export declare function ManagedSessionsPage({ sessionId, onSelectSession, workspaceCwd, managedAgentProvider, }: {
2
+ export declare function ManagedSessionsPage({ sessionId, onSelectSession, workspaceCwd, managedAgentProvider, navigationTarget, interactive, }: {
3
3
  sessionId?: string;
4
4
  onSelectSession: (sessionId: string | undefined) => void;
5
5
  workspaceCwd?: string;
6
6
  managedAgentProvider?: ManagedAgentProvider;
7
+ /** Null keeps home layout while its sidebar slot is temporarily unmounted. */
8
+ navigationTarget?: HTMLElement | null;
9
+ interactive?: boolean;
7
10
  }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,15 @@
1
+ import type { ManagedToolResultReader } from './managed-tool-result-types';
2
+ import type { useManagedTasks } from './use-managed-tasks';
3
+ import type { ManagedTaskCancelState, useManagedTaskCancel } from './use-managed-task-cancel';
4
+ export declare function taskCancelMessage(state: ManagedTaskCancelState): string;
5
+ export declare function ManagedTaskPanel({ wide, tasks, cancel, canCancel, reader, clientId, sessionId, onClose, restoreFocus, }: {
6
+ wide: boolean;
7
+ tasks: ReturnType<typeof useManagedTasks>;
8
+ cancel: ReturnType<typeof useManagedTaskCancel>;
9
+ canCancel: boolean;
10
+ reader?: ManagedToolResultReader;
11
+ clientId: string;
12
+ sessionId: string;
13
+ onClose: () => void;
14
+ restoreFocus: () => void;
15
+ }): import("react/jsx-runtime").JSX.Element;
@@ -1,4 +1,4 @@
1
- import type { ManagedToolResultReader } from './managed-tool-result-types';
1
+ import type { ManagedArtifact, ManagedToolResultReader } from './managed-tool-result-types';
2
2
  export declare const MANAGED_OUTPUT_PAGE_BYTES: number;
3
3
  export declare function ManagedToolResultPanel({ reader, sessionId, clientId, itemId, onClose, }: {
4
4
  reader: ManagedToolResultReader;
@@ -7,3 +7,8 @@ export declare function ManagedToolResultPanel({ reader, sessionId, clientId, it
7
7
  itemId?: string;
8
8
  onClose: () => void;
9
9
  }): import("react/jsx-runtime").JSX.Element;
10
+ export declare function ManagedArtifactContent({ artifact, reader, clientId, }: {
11
+ artifact: ManagedArtifact;
12
+ reader: ManagedToolResultReader;
13
+ clientId: string;
14
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,9 @@
1
+ import type { ManagedAgentProvider, ManagedAgentWorkspace } from './managed-agent-provider';
2
+ export declare function RemoteWorkspaceRegistration({ provider, clientId, open, onOpenChange, onAvailable, onRegistered, }: {
3
+ provider: ManagedAgentProvider;
4
+ clientId: string;
5
+ open: boolean;
6
+ onOpenChange: (open: boolean) => void;
7
+ onAvailable: (available: boolean) => void;
8
+ onRegistered: (workspace: ManagedAgentWorkspace) => void;
9
+ }): import("react/jsx-runtime").JSX.Element;
@@ -1,6 +1,8 @@
1
1
  import type { ManagedAgentProvider } from './managed-agent-provider';
2
- export declare function WorkspaceBindingCreator({ provider, clientId, onCreated, }: {
2
+ export declare function WorkspaceBindingCreator({ provider, clientId, onCreated, onAbandoned, interactive, }: {
3
3
  provider: ManagedAgentProvider;
4
4
  clientId: string;
5
5
  onCreated: (sessionId: string) => void;
6
+ onAbandoned?: () => void;
7
+ interactive?: boolean;
6
8
  }): import("react/jsx-runtime").JSX.Element;