@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
@@ -7,3 +7,4 @@
7
7
  export declare const AGENT_TOOL_NAME = "agent";
8
8
  /** Whether a tool name identifies the Agent (sub-agent) tool. */
9
9
  export declare function isAgentTool(toolName: string | undefined): boolean;
10
+ export declare function isAskUserQuestionToolName(toolName: string): boolean;
@@ -136,7 +136,7 @@ export interface WebShellChatHeaderOptions {
136
136
  /** Built-in header actions to show. Token and context usage are opt-in. */
137
137
  items?: readonly WebShellChatHeaderItem[];
138
138
  }
139
- export type WebShellRightPanelItem = 'review' | 'sideTask' | 'terminal' | 'webPreview' | 'trajectory';
139
+ export type WebShellRightPanelItem = 'files' | 'review' | 'sideTask' | 'terminal' | 'webPreview' | 'trajectory';
140
140
  export interface WebShellRightPanelOptions {
141
141
  /** Empty-state actions to show. Defaults to review and sideTask. */
142
142
  items?: readonly WebShellRightPanelItem[];
@@ -205,6 +205,7 @@ export interface WebShellSubmitSnapshot {
205
205
  sessionId?: string;
206
206
  prompt: string;
207
207
  inputAnnotations: readonly DaemonInputAnnotation[];
208
+ source?: 'mcp-app';
208
209
  }
209
210
  export type UserMessageContentRenderer = (info: UserMessageContentRenderInfo) => ReactNode;
210
211
  export interface WebShellBottomStatusItem {
@@ -557,8 +558,8 @@ export interface WebShellCustomization {
557
558
  markdown?: WebShellMarkdownCustomization;
558
559
  loadingPhrases?: LoadingPhrasesResolver;
559
560
  /**
560
- * Controls whether the composer's file-upload entry points (drag-and-drop
561
- * and the @ panel upload item) are enabled. Does not disable attachments.
561
+ * Controls composer uploads (drag-and-drop and the @ panel upload item)
562
+ * and Files tree drag-and-drop uploads. Does not disable attachments.
562
563
  * Works alongside the daemon's
563
564
  * `workspace_file_upload` capability, not instead of it: setting `false`
564
565
  * force-disables upload even when the daemon advertises the capability,
@@ -571,13 +572,14 @@ export interface WebShellCustomization {
571
572
  */
572
573
  fileDropAction?: 'upload' | 'attach';
573
574
  /**
574
- * Directory that drag-and-dropped files upload into, **relative to the
575
+ * Directory that composer-dropped files upload into, **relative to the
575
576
  * workspace root**. Use a relative path WITHOUT a leading `/` — e.g.
576
577
  * `'uploads'`, `'uploads/images'`, or omit it to upload into the
577
578
  * workspace root (the default). A leading-slash path like `'/uploads'`
578
579
  * is rejected by the daemon as outside the workspace. The directory
579
580
  * (including intermediate components) is created automatically on upload
580
- * when it does not exist.
581
+ * when it does not exist. Files tree drops use the explicit tree destination
582
+ * instead of this setting.
581
583
  */
582
584
  fileUploadDirectory?: string;
583
585
  }
@@ -15,10 +15,11 @@ export interface TurnNotificationContent {
15
15
  sessionTitle?: string;
16
16
  promptText?: string;
17
17
  responseText?: string;
18
+ attention?: 'approval' | 'question';
18
19
  }
19
20
  export interface TurnNotification extends TurnNotificationContent {
20
21
  key: string;
21
- outcome: 'completed' | 'failed' | 'ended' | 'cancelled';
22
+ outcome: 'completed' | 'failed' | 'ended' | 'cancelled' | 'approval' | 'question';
22
23
  }
23
24
  export interface TurnNotificationObserver {
24
25
  retain(scope: string): () => void;
@@ -266,6 +266,7 @@ export interface DaemonCommandInfo {
266
266
  export interface SendPromptOptions {
267
267
  /** Original text declared at the user submission boundary, before host preparation. */
268
268
  submittedPrompt?: string;
269
+ source?: 'mcp-app';
269
270
  optimisticUserMessage?: boolean;
270
271
  images?: DaemonPromptImage[];
271
272
  files?: DaemonPromptFile[];
@@ -278,6 +279,8 @@ export interface SendPromptOptions {
278
279
  retry?: boolean;
279
280
  /** Fired after local validation, immediately before dispatch to the daemon. */
280
281
  onAdmissionStarted?: () => void;
282
+ /** Revalidates the caller before every HTTP attempt, including client recovery. */
283
+ beforeDispatch?: (clientId: string | undefined) => void;
281
284
  /**
282
285
  * Fired once the daemon has ACCEPTED the prompt (admission), before the turn
283
286
  * runs to completion. Lets a caller act on "the prompt reached the session"
@@ -290,7 +293,7 @@ export interface SendPromptOptions {
290
293
  promptId: string;
291
294
  }) => void;
292
295
  }
293
- export interface SubmitPromptOptions extends SendPromptOptions {
296
+ export interface SubmitPromptOptions extends Omit<SendPromptOptions, 'beforeDispatch' | 'source'> {
294
297
  sessionId?: string;
295
298
  signal?: AbortSignal;
296
299
  }
@@ -360,7 +363,9 @@ export interface DaemonSessionActions {
360
363
  */
361
364
  setDaemonActivePrompt(active: boolean | undefined, owner?: Pick<DaemonActivePromptState, 'workspaceCwd' | 'sessionId'>, backgroundTurn?: DaemonBackgroundTurn, requestStartedAt?: number): void;
362
365
  sendPrompt(text: string, options?: SendPromptOptions): Promise<PromptResult>;
363
- continueSession(): Promise<void>;
366
+ continueSession(options?: {
367
+ confirmCancellation?: string;
368
+ }): Promise<void>;
364
369
  /**
365
370
  * Non-blocking prompt submission. POSTs to the daemon and returns
366
371
  * immediately with the `promptId`. The daemon queues the prompt in its
@@ -98,6 +98,7 @@ export interface UseComposerCoreOptions {
98
98
  atWorkspaceCwd?: string;
99
99
  composerScopeKey?: string;
100
100
  disableLegacyHistoryFallback?: boolean;
101
+ shellModeEnabled?: boolean;
101
102
  attachmentsEnabled?: boolean;
102
103
  workspaceFeaturesEnabled?: boolean;
103
104
  composerTagIcons?: WebShellComposerTagIconMap;
@@ -124,6 +125,8 @@ export interface UseComposerCoreOptions {
124
125
  /** CodeMirror theme extension for the editor view. Each variant provides its own. */
125
126
  editorTheme: Parameters<typeof EditorView.theme>[0];
126
127
  }
128
+ export declare function getComposerDraftStorageKey(sessionId: string | undefined, workspaceCwd: string | undefined): string | undefined;
129
+ export declare function clearComposerDraftIfMatches(storageKey: string | undefined, text: string): void;
127
130
  export interface SearchState {
128
131
  searchMode: boolean;
129
132
  searchQuery: string;
@@ -207,8 +210,6 @@ export interface UseComposerCoreReturn {
207
210
  currentMode: string;
208
211
  sessionName: string | undefined;
209
212
  searchState: SearchState;
210
- navigatePrevHistory: () => void;
211
- navigateNextHistory: () => void;
212
213
  showShortcutHints: boolean;
213
214
  followupState: UseDaemonFollowupSuggestionReturn['followupState'];
214
215
  disabled: boolean;
@@ -0,0 +1,22 @@
1
+ import type { McpAppMessages } from '../mcpAppHostContext';
2
+ import type { DaemonSessionOwnerSnapshot } from '../daemon/session/types';
3
+ export interface McpAppPromptSubmission {
4
+ signal: AbortSignal;
5
+ isCurrent(): boolean;
6
+ onDispatched(): void;
7
+ onAdmitted(admission: {
8
+ promptId: string;
9
+ }): void;
10
+ }
11
+ interface MessageHost {
12
+ enabled: boolean;
13
+ sessionId?: string;
14
+ clientId?: string;
15
+ captureOwner(): DaemonSessionOwnerSnapshot;
16
+ submit(text: string, options: McpAppPromptSubmission): Promise<unknown>;
17
+ }
18
+ export declare function useMcpAppMessages(host: MessageHost): {
19
+ context: McpAppMessages | undefined;
20
+ review: import("react/jsx-runtime").JSX.Element | null;
21
+ };
22
+ export {};
@@ -11,7 +11,7 @@ export { JavaManagedAgentClient, JavaManagedAgentHttpError, type JavaAgentComman
11
11
  export { createJavaManagedAgentProvider, type JavaManagedAgentProviderOptions, } from './components/managed/java-managed-agent-provider';
12
12
  export { ManagedAgentWebShell, type ManagedAgentWebShellProps, } from './ManagedAgentWebShell';
13
13
  export type { ManagedArtifact, ManagedArtifactPage, ManagedArtifactResponse, ManagedArtifactSave, ManagedToolResult, ManagedToolResultReader, ManagedToolResultResponse, } from './components/managed/managed-tool-result-types';
14
- export { type ManagedAgentCommandOptions, type ManagedAgentPendingAction, type ManagedAgentProvider, type ManagedAgentRequestOptions, type ManagedAgentRuntimeState, type ManagedAgentSessionEvent, type ManagedAgentSessionEventType, type ManagedAgentSessionPhase, type ManagedAgentSessionSummary, type ManagedAgentSessionTranscript, type ManagedAgentTurnAdmission, } from './components/managed/managed-agent-provider';
14
+ export { type ManagedAgentCommandOptions, type ManagedAgentPendingAction, type ManagedAgentProvider, type ManagedAgentRequestOptions, type ManagedAgentRuntimeState, type ManagedAgentSessionEvent, type ManagedAgentSessionEventType, type ManagedAgentSessionPhase, type ManagedAgentSessionSummary, type ManagedAgentSessionTranscript, type ManagedAgentTurnAdmission, type ManagedRuntimeNode, type ManagedWorkspaceDirectory, type ManagedWorkspaceCreateOperation, type ManagedWorkspaceRegistration, } from './components/managed/managed-agent-provider';
15
15
  export interface WebShellWithProvidersProps extends WebShellProps {
16
16
  /**
17
17
  * Opt in to URL routing. Explicit initial session target props override the
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Qwen Team
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export declare const MCP_APP_MESSAGES_EN: Record<string, string>;
7
+ export declare const MCP_APP_MESSAGES_ZH: Record<string, string>;
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Qwen Team
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export declare const MCP_APP_MESSAGES_EN: {};
7
+ export declare const MCP_APP_MESSAGES_ZH: {};
@@ -2,6 +2,19 @@ import type { DaemonMcpAppToolCall, DaemonMcpAppToolResult } from '@qwen-code/sd
2
2
  export declare const McpAppHostContext: import("react").Context<string | undefined>;
3
3
  export type McpAppToolCallRequest = DaemonMcpAppToolCall;
4
4
  export declare const McpAppSessionContext: import("react").Context<string | undefined>;
5
+ export interface McpAppMessageRequest {
6
+ serverName: string;
7
+ resourceUri: string;
8
+ text: string;
9
+ signal: AbortSignal;
10
+ }
11
+ export interface McpAppMessages {
12
+ sessionId: string;
13
+ requestMessage(request: McpAppMessageRequest): Promise<{
14
+ isError?: boolean;
15
+ }>;
16
+ }
17
+ export declare const McpAppMessagesContext: import("react").Context<McpAppMessages | undefined>;
5
18
  export declare const McpAppToolsContext: import("react").Context<{
6
19
  sessionId: string;
7
20
  callTool: (request: McpAppToolCallRequest, signal: AbortSignal) => Promise<DaemonMcpAppToolResult>;
@@ -1,7 +1,7 @@
1
1
  import type { DaemonBackgroundTurn } from '@qwen-code/sdk/daemon';
2
2
  import { type ReactNode } from 'react';
3
3
  import type { ACPToolCall } from './adapters/types';
4
- export type OpenSubagentDetails = (tool: ACPToolCall) => void;
4
+ export type OpenSubagentDetails = (tool: ACPToolCall, parentSessionId?: string) => void;
5
5
  interface SubagentDetailsContextValue {
6
6
  onOpen: OpenSubagentDetails;
7
7
  onOpenBackground?: (turn: DaemonBackgroundTurn) => void;
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Qwen Team
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ type ExecutionMessage = string | ((vars?: Record<string, string | number>) => string);
7
+ export declare const TRAJECTORY_EXECUTION_MESSAGES_EN: Record<string, ExecutionMessage>;
8
+ export declare const TRAJECTORY_EXECUTION_MESSAGES_ZH: Record<string, ExecutionMessage>;
9
+ export {};
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Qwen Team
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export declare const TRAJECTORY_EXECUTION_MESSAGES_EN: {};
7
+ export declare const TRAJECTORY_EXECUTION_MESSAGES_ZH: {};
@@ -0,0 +1,23 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Qwen Team
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import type { TrajectoryLifecycleEntry, TrajectoryLifecycleProjection } from './project-trajectory-lifecycle';
7
+ export interface TrajectoryExecutionRow {
8
+ key: string;
9
+ entry: TrajectoryLifecycleEntry;
10
+ name: string;
11
+ status: 'running' | 'unknown' | 'conflict' | 'success' | 'error' | 'cancelled' | 'interrupted' | 'not_started';
12
+ startedAt?: number;
13
+ endedAt?: number;
14
+ durationMs?: number;
15
+ historyRowKey?: string;
16
+ }
17
+ export declare function projectTrajectoryExecutions(lifecycle: TrajectoryLifecycleProjection, identity?: {
18
+ sessionId: string;
19
+ scope?: string;
20
+ }): {
21
+ rows: TrajectoryExecutionRow[];
22
+ omitted: number;
23
+ };
@@ -0,0 +1,27 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Qwen Team
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { type DaemonEvent, type ExecutionLifecycleEntry, type ToolLifecycleEntry } from '@qwen-code/sdk/daemon';
7
+ import type { Trajectory } from './types';
8
+ import type { TrajectoryLiveSnapshot } from './trajectory-live-store';
9
+ export type TrajectoryLifecycleEntry = ExecutionLifecycleEntry | ToolLifecycleEntry;
10
+ export interface TrajectoryLifecycleProjection {
11
+ byRowKey: ReadonlyMap<string, TrajectoryLifecycleEntry>;
12
+ byExecution: ReadonlyMap<string, TrajectoryLifecycleEntry>;
13
+ outsideWindow: readonly TrajectoryLifecycleEntry[];
14
+ status: TrajectoryLiveSnapshot['status'];
15
+ incomplete: boolean;
16
+ truncated: boolean;
17
+ }
18
+ export declare function projectHistoricalLifecycle(events: readonly DaemonEvent[]): {
19
+ requests: import("@qwen-code/sdk/daemon").ExecutionLifecycleState;
20
+ tools: import("@qwen-code/sdk/daemon").ToolLifecycleState;
21
+ truncated: boolean;
22
+ incomplete: boolean;
23
+ };
24
+ export declare function projectTrajectoryLifecycle(history: ReturnType<typeof projectHistoricalLifecycle>, trajectory: Trajectory | undefined, identity: {
25
+ sessionId: string;
26
+ scope?: string;
27
+ } | undefined, live: TrajectoryLiveSnapshot): TrajectoryLifecycleProjection;
@@ -0,0 +1,3 @@
1
+ import type { TrajectoryLiveSnapshot, TrajectoryLiveStore } from './trajectory-live-store.js';
2
+ export declare const TrajectoryLiveContext: import("react").Context<TrajectoryLiveStore | null>;
3
+ export declare function useTrajectoryLiveSnapshot(): TrajectoryLiveSnapshot;
@@ -0,0 +1,36 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Qwen Team
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { type DaemonEvent, type ExecutionLifecycleState, type ToolLifecycleState } from '@qwen-code/sdk/daemon';
7
+ export interface TrajectoryLiveSnapshot {
8
+ readonly sessionId?: string;
9
+ readonly scope?: string;
10
+ readonly epoch?: string;
11
+ readonly lastEventId?: number;
12
+ readonly status: 'catching-up' | 'live' | 'stale' | 'unavailable';
13
+ readonly reason?: string;
14
+ readonly requests: ExecutionLifecycleState;
15
+ readonly tools: ToolLifecycleState;
16
+ readonly incomplete: boolean;
17
+ readonly truncated: boolean;
18
+ }
19
+ export interface TrajectoryLiveInput {
20
+ sessionId: string;
21
+ scope: string;
22
+ epoch?: string;
23
+ lastEventId?: number;
24
+ events: readonly DaemonEvent[];
25
+ incomplete: boolean;
26
+ }
27
+ export interface TrajectoryLiveStore {
28
+ getSnapshot(): TrajectoryLiveSnapshot;
29
+ subscribe(listener: () => void): () => void;
30
+ begin(owner: object, input: TrajectoryLiveInput): void;
31
+ reconnect(owner: object, liveOnly?: boolean): void;
32
+ ingest(owner: object, event: DaemonEvent, epoch?: string): void;
33
+ invalidate(owner: object, reason: string): void;
34
+ clear(): void;
35
+ }
36
+ export declare function createTrajectoryLiveStore(): TrajectoryLiveStore;
@@ -15,6 +15,10 @@ export interface TrajectoryTranscriptClient {
15
15
  cursor?: string;
16
16
  }): Promise<TrajectoryPageResult>;
17
17
  }
18
+ export declare function trajectoryLoaderIdentity(loader: TrajectoryPageLoader | undefined): {
19
+ sessionId: string;
20
+ scope?: string;
21
+ } | undefined;
18
22
  /**
19
23
  * A page loader for one session, stable per (client, session).
20
24
  *
@@ -30,4 +34,4 @@ export interface TrajectoryTranscriptClient {
30
34
  * `summary` projection, which rewrites the event stream the timing frames sit
31
35
  * in.
32
36
  */
33
- export declare function createTrajectoryPageLoader(client: TrajectoryTranscriptClient, sessionId: string): TrajectoryPageLoader;
37
+ export declare function createTrajectoryPageLoader(client: TrajectoryTranscriptClient, sessionId: string, scope?: string): TrajectoryPageLoader;
@@ -5,6 +5,7 @@
5
5
  */
6
6
  import type { DaemonEvent } from '@qwen-code/sdk/daemon';
7
7
  import type { Trajectory } from './types';
8
+ import { type TrajectoryLifecycleProjection } from './project-trajectory-lifecycle';
8
9
  /**
9
10
  * Records asked for per read. The daemon caps a page at 500 records and at
10
11
  * 4 MB, whichever binds first, so a session whose tools wrote a lot comes back
@@ -65,6 +66,7 @@ export type TrajectoryWindowFailure = {
65
66
  export declare const TRAJECTORY_BOOKMARK_LIMIT = 64;
66
67
  export declare const TRAJECTORY_CURSOR_BUDGET: number;
67
68
  export interface TrajectoryWindow {
69
+ lifecycle: TrajectoryLifecycleProjection;
68
70
  trajectory: Trajectory | undefined;
69
71
  status: 'idle' | 'loading' | 'ready' | 'error';
70
72
  error?: TrajectoryWindowFailure;
@@ -3,7 +3,7 @@
3
3
  * Copyright 2025 Qwen Team
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import type { PermissionRequest } from '../adapters/types';
6
+ import type { PermissionRequest } from '../adapters/types.js';
7
7
  /**
8
8
  * True when a pending permission is an AskUserQuestion prompt (it carries a
9
9
  * `questions` array, and either no tool name or the AskUserQuestion tool name)
@@ -13,6 +13,24 @@ export declare const HIDDEN_COMPOSER_MODEL_IDS: Set<string>;
13
13
  export declare function isVisibleComposerModel(model: {
14
14
  id: string;
15
15
  }): boolean;
16
+ /**
17
+ * Whether Settings ▸ Model must hide a row for the discontinued built-in OAuth
18
+ * entry. Settings holds the structured form (`authType` on the provider, the
19
+ * base id on the model), so it rebuilds the encoded id the composer hides by
20
+ * and asks that shared policy instead of restating it at the call site.
21
+ *
22
+ * The row the session is actually running is deliberately kept, matching
23
+ * `isDiscontinuedModel` in the VS Code webview, so a live qwen-oauth session
24
+ * still lists its own model. `isCurrent` is the only usable signal for that:
25
+ * the daemon's provider list skips runtime rows and hardcodes `isRuntime:
26
+ * false`, so the runtime flag never marks the running model.
27
+ */
28
+ export declare function isDiscontinuedSettingsModel(provider: {
29
+ authType: string;
30
+ }, model: {
31
+ baseModelId: string;
32
+ isCurrent: boolean;
33
+ }): boolean;
16
34
  /**
17
35
  * Whether the model picker is unavailable for a fresh standalone draft: no
18
36
  * session attached yet and the hydrated catalog has no user-selectable
@@ -1,4 +1,4 @@
1
- export declare const EXECUTION_APPROVAL_MODES: ("auto" | "default" | "auto-edit" | "yolo")[];
1
+ export declare const EXECUTION_APPROVAL_MODES: ("default" | "auto-edit" | "yolo" | "auto")[];
2
2
  export declare function parsePlanCommand(args: string, enabled: boolean): {
3
3
  enabled: boolean;
4
4
  prompt?: string;
@@ -1 +1,5 @@
1
+ export declare class PromptDispatchCancelledError extends Error {
2
+ name: string;
3
+ }
4
+ export declare function isMcpAppPromptAdmissionRejected(error: unknown): boolean;
1
5
  export declare function isDefinitelyRejectedPromptAdmission(error: unknown): boolean;
@@ -0,0 +1,5 @@
1
+ export declare function getReplySelectionRange(body: HTMLElement): Range | null;
2
+ export declare function getSelectedReplyContent(body: HTMLElement, range: Range): {
3
+ text: string;
4
+ markdown: string;
5
+ } | null;
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Qwen Team
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ type VoiceMessage = string | ((vars?: Record<string, string | number>) => string);
7
+ export declare const VOICE_MESSAGES_EN: Record<string, VoiceMessage>;
8
+ export declare const VOICE_MESSAGES_ZH: Record<string, VoiceMessage>;
9
+ export {};
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Qwen Team
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export declare const VOICE_MESSAGES_EN: {};
7
+ export declare const VOICE_MESSAGES_ZH: {};
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Qwen Team
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import type { getTranslator } from '../i18n';
7
+ export declare function formatVoiceError(message: string | undefined, t: ReturnType<typeof getTranslator>): string;