@qwen-code/web-shell 0.24.6 → 0.24.7-nightly.20260930.57e720bc97

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 (65) hide show
  1. package/README.md +10 -0
  2. package/dist/ThreadsRoute-B5WfAa5o.js +1896 -0
  3. package/dist/daemon-react-sdk.js +1 -1
  4. package/dist/index-BAkajV4Z.js +121676 -0
  5. package/dist/index.js +69 -118171
  6. package/dist/sw.js +1 -1
  7. package/dist/{toolNames-C6S4xtsA.js → toolNames-DHN3_HCf.js} +5591 -4691
  8. package/dist/transcript.js +9483 -9267
  9. package/dist/types/adapters/messageTypes.d.ts +11 -0
  10. package/dist/types/components/BranchPickerPopover.d.ts +2 -1
  11. package/dist/types/components/ChatEditor.d.ts +1 -0
  12. package/dist/types/components/DesktopRelayControl.d.ts +51 -0
  13. package/dist/types/components/MessageList.d.ts +1 -0
  14. package/dist/types/components/agents/AgentCreatePage.d.ts +10 -1
  15. package/dist/types/components/agents/AgentsManagerPage.d.ts +5 -1
  16. package/dist/types/components/artifacts/ArtifactPanel.d.ts +8 -1
  17. package/dist/types/components/artifacts/TrajectoryInspector.d.ts +17 -0
  18. package/dist/types/components/artifacts/TrajectoryOverview.d.ts +3 -1
  19. package/dist/types/components/artifacts/TrajectoryWaterfallCell.d.ts +15 -0
  20. package/dist/types/components/composer/AddMenu.d.ts +5 -1
  21. package/dist/types/components/dialogs/BranchSessionDialog.d.ts +6 -0
  22. package/dist/types/components/dialogs/GitDiffDialog.d.ts +2 -1
  23. package/dist/types/components/dialogs/GitLogDialog.d.ts +2 -1
  24. package/dist/types/components/managed/WorkspaceBindingCreator.d.ts +6 -0
  25. package/dist/types/components/managed/generated/managed-agent-api.d.ts +1346 -0
  26. package/dist/types/components/managed/java-managed-agent-client.d.ts +32 -113
  27. package/dist/types/components/managed/java-managed-agent-provider.d.ts +1 -0
  28. package/dist/types/components/managed/managed-agent-provider.d.ts +31 -1
  29. package/dist/types/components/messages/AssistantMessage.d.ts +3 -0
  30. package/dist/types/components/messages/AuthorAvatar.d.ts +16 -0
  31. package/dist/types/components/messages/ContextUsageMessage.d.ts +5 -1
  32. package/dist/types/components/messages/McpApp.d.ts +1 -1
  33. package/dist/types/components/messages/StatsMessage.d.ts +6 -1
  34. package/dist/types/components/messages/toolFormatting.d.ts +2 -0
  35. package/dist/types/components/panels/EnvironmentPanel.d.ts +2 -1
  36. package/dist/types/components/sidebar/UpdateControl.d.ts +10 -0
  37. package/dist/types/components/sidebar/WebShellSidebar.d.ts +6 -3
  38. package/dist/types/components/sidebar/WorkspaceSection.d.ts +2 -1
  39. package/dist/types/components/sidebar/sessionSearch.d.ts +2 -1
  40. package/dist/types/components/workspace-agents/LazyThreadsRoute.d.ts +7 -0
  41. package/dist/types/components/workspace-agents/ThreadChat.d.ts +30 -0
  42. package/dist/types/components/workspace-agents/ThreadView.d.ts +65 -0
  43. package/dist/types/components/workspace-agents/ThreadsPage.d.ts +104 -0
  44. package/dist/types/components/workspace-agents/ThreadsRoute.d.ts +23 -0
  45. package/dist/types/components/workspace-agents/agent-events.d.ts +50 -0
  46. package/dist/types/components/workspace-agents/agents-view-logic.d.ts +176 -0
  47. package/dist/types/components/workspace-agents/messages.d.ts +16 -0
  48. package/dist/types/components/workspace-agents/messages.transcript-stub.d.ts +12 -0
  49. package/dist/types/components/workspace-agents/share-agent-dialog.d.ts +33 -0
  50. package/dist/types/components/workspace-agents/threads-api.d.ts +49 -0
  51. package/dist/types/components/workspace-agents/useAgentChatEntry.d.ts +36 -0
  52. package/dist/types/components/workspace-agents/useProjectConversations.d.ts +10 -0
  53. package/dist/types/customization.d.ts +10 -0
  54. package/dist/types/daemon/session/transcript-page-table.d.ts +10 -1
  55. package/dist/types/daemon/session/types.d.ts +2 -2
  56. package/dist/types/desktop-relay/desktop-relay-client.d.ts +63 -0
  57. package/dist/types/mcpAppHostContext.d.ts +7 -0
  58. package/dist/types/settings/messages.d.ts +16 -0
  59. package/dist/types/settings/messages.transcript-stub.d.ts +12 -0
  60. package/dist/types/settings.d.ts +1 -0
  61. package/dist/types/trajectory/buildTrajectoryLayout.d.ts +27 -0
  62. package/dist/types/trajectory/summarizeTrajectory.d.ts +20 -0
  63. package/dist/types/trajectory/types.d.ts +2 -1
  64. package/dist/types/trajectory/useTimelineViewport.d.ts +19 -0
  65. package/package.json +3 -1
@@ -59,6 +59,16 @@ export interface DaemonMessageTodoItem {
59
59
  priority?: 'high' | 'medium' | 'low';
60
60
  blockedBy?: string[];
61
61
  }
62
+ /**
63
+ * Who wrote a message when a transcript has more than one assistant voice, as
64
+ * in a conversation several workspace agents work in. Absent in an ordinary
65
+ * session, where the assistant needs no name.
66
+ */
67
+ export interface DaemonMessageAuthor {
68
+ name: string;
69
+ /** The agent's own color, when it has one. */
70
+ color?: string;
71
+ }
62
72
  /**
63
73
  * Fields shared by every history message. Kept as a base interface so a new
64
74
  * cross-cutting field is declared once rather than on each role.
@@ -84,6 +94,7 @@ export interface DaemonMessageMeta {
84
94
  timestamp?: number;
85
95
  /** Stable transcript blocks folded into this rendered message. */
86
96
  sourceBlockIds?: string[];
97
+ author?: DaemonMessageAuthor;
87
98
  }
88
99
  export interface DaemonUserMessage extends DaemonMessageMeta {
89
100
  id: string;
@@ -11,6 +11,7 @@ interface BranchPickerPopoverProps {
11
11
  onOpenChange: (open: boolean) => void;
12
12
  workspaceCwd: string;
13
13
  gitCwd?: string;
14
+ gitSessionId?: string;
14
15
  side?: 'top' | 'right' | 'bottom' | 'left';
15
16
  onBranchChanged?: () => void;
16
17
  /**
@@ -73,5 +74,5 @@ export declare function deriveActionHints(t: TranslateFn, data: DaemonGitBranche
73
74
  * re-fetched. Exported for tests.
74
75
  */
75
76
  export declare function listingContradictsStatus(data: DaemonGitBranchesResult, status: DaemonWorkspaceGitStatus): boolean;
76
- export declare function BranchPickerPopover({ open, onOpenChange, workspaceCwd, gitCwd, side, onBranchChanged, status, onStatusRefreshed, onOpenDiff, onOpenCommit, onOpenWorktrees, onOpenLog, children, }: BranchPickerPopoverProps): import("react/jsx-runtime").JSX.Element;
77
+ export declare function BranchPickerPopover({ open, onOpenChange, workspaceCwd, gitCwd, gitSessionId, side, onBranchChanged, status, onStatusRefreshed, onOpenDiff, onOpenCommit, onOpenWorktrees, onOpenLog, children, }: BranchPickerPopoverProps): import("react/jsx-runtime").JSX.Element;
77
78
  export {};
@@ -15,6 +15,7 @@ interface ChatEditorProps {
15
15
  onSubmit: (text: string, images?: import('../adapters/promptTypes').PromptImage[], files?: import('../adapters/promptTypes').PromptFile[], commitAccepted?: import('../hooks/useComposerCore').ComposerSubmitCommit, metadata?: ComposerSubmitMetadata) => boolean | void;
16
16
  onInputTextChange?: (text: string) => void;
17
17
  onAttachmentsChange?: (hasAttachments: boolean) => void;
18
+ btwEnabled?: boolean;
18
19
  onCycleMode?: () => void;
19
20
  cycleModeOnTab?: boolean;
20
21
  onToggleShortcuts?: () => void;
@@ -0,0 +1,51 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Qwen Team
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import type { DaemonWorkspaceCapability } from '@qwen-code/sdk/daemon';
7
+ import { type DesktopRelayProbe } from '../desktop-relay/desktop-relay-client';
8
+ export type DesktopRelayPhase = 'unavailable' | 'needs-session' | 'checking' | 'permission-required' | 'missing' | 'unknown' | 'idle' | 'awaiting-approval' | 'connecting' | 'connected' | 'other-session' | 'failed';
9
+ export type DesktopRelayBlocker = 'insecure-context' | 'unsupported-daemon' | 'workspace-ineligible' | 'workspace-resolving';
10
+ export interface DesktopRelayStatus {
11
+ phase: DesktopRelayPhase;
12
+ blocker?: DesktopRelayBlocker;
13
+ message?: string;
14
+ canDisconnect?: boolean;
15
+ }
16
+ type DesktopRelayObservation = DesktopRelayProbe | {
17
+ kind: 'unknown';
18
+ };
19
+ export declare function retainLiveDesktopRelayProbe(previous: DesktopRelayObservation | undefined, next: DesktopRelayProbe, inconclusiveProbes?: number): DesktopRelayObservation;
20
+ /** Maps what the relay reports onto what this session can do next. */
21
+ export declare function deriveDesktopRelayStatus(input: {
22
+ blocker: DesktopRelayBlocker | undefined;
23
+ sessionId: string | undefined;
24
+ daemonUrl: string | undefined;
25
+ probe: DesktopRelayObservation | undefined;
26
+ awaitingApproval: boolean;
27
+ error: string | undefined;
28
+ }): DesktopRelayStatus;
29
+ export interface DesktopRelayPanelProps {
30
+ status: DesktopRelayStatus;
31
+ installCommand: string;
32
+ copied: boolean;
33
+ onConnect: () => void;
34
+ onDisconnect: () => void;
35
+ onCheckAgain: () => void;
36
+ onCopyCommand: () => void;
37
+ }
38
+ /** The popover body, prop-driven so every phase is testable without a daemon. */
39
+ export declare function DesktopRelayPanel({ status, installCommand, copied, onConnect, onDisconnect, onCheckAgain, onCopyCommand, }: DesktopRelayPanelProps): import("react/jsx-runtime").JSX.Element;
40
+ interface DesktopRelayControlProps {
41
+ /** Class for the trigger, supplied by the sidebar so it matches its neighbours. */
42
+ triggerClassName: string;
43
+ workspaces?: readonly DaemonWorkspaceCapability[];
44
+ showWhenIdle?: boolean;
45
+ }
46
+ /**
47
+ * "Use this computer": asks the relay on the viewer's computer to lend its
48
+ * node_repl to this session over the daemon's reverse tool channel.
49
+ */
50
+ export declare function DesktopRelayControl({ triggerClassName, workspaces, showWhenIdle, }: DesktopRelayControlProps): import("react/jsx-runtime").JSX.Element | null;
51
+ export {};
@@ -99,6 +99,7 @@ export interface MessageListProps {
99
99
  turnArtifacts?: ReadonlyMap<string, readonly DaemonSessionArtifact[]>;
100
100
  sourceEntries?: readonly WebShellSource[];
101
101
  sourceSessionId?: string;
102
+ mcpAppSessionId?: string;
102
103
  onSourceOpen?: (source: WebShellSource) => void;
103
104
  turnScheduledTasks?: ReadonlyMap<string, readonly TurnOutputScheduledTask[]>;
104
105
  onReviewChanges?: (changes: readonly TurnOutputFileChange[], selectedPath?: string) => void;
@@ -1,9 +1,18 @@
1
1
  import { type DaemonWorkspaceAgentDetail } from '@qwen-code/web-shell/daemon-react-sdk';
2
2
  interface AgentCreatePageProps {
3
+ workspaceCwd?: string;
3
4
  initialScope?: 'workspace' | 'global';
4
5
  agent?: DaemonWorkspaceAgentDetail;
5
6
  onCancel: () => void;
6
7
  onCreated: (name: string) => void;
8
+ onSaveWorkspaceAgent?: (input: {
9
+ name: string;
10
+ description?: string;
11
+ instructions?: string;
12
+ agentType?: string;
13
+ model?: string;
14
+ maxConcurrentRuns: number;
15
+ }) => Promise<void>;
7
16
  }
8
- export declare function AgentCreatePage({ initialScope, agent, onCancel, onCreated, }: AgentCreatePageProps): import("react/jsx-runtime").JSX.Element;
17
+ export declare function AgentCreatePage({ initialScope, agent, onCancel, onCreated, workspaceCwd, onSaveWorkspaceAgent, }: AgentCreatePageProps): import("react/jsx-runtime").JSX.Element;
9
18
  export {};
@@ -1,8 +1,12 @@
1
1
  import type { EmbeddedManagerPage } from '../plugins/manager-page';
2
2
  interface AgentsManagerPageProps {
3
+ initialAgentView?: 'agents' | 'tasks' | 'new-agent';
3
4
  onClose: () => void;
4
5
  embedded?: EmbeddedManagerPage;
5
6
  initialCreateScope?: 'workspace' | 'global' | null;
7
+ /** Opens an agent's own session in the shell's session view. */
8
+ onOpenAgentSession?: (sessionId: string) => void;
9
+ onOpenThreadChat?: (threadId: string, workspaceCwd: string) => void;
6
10
  }
7
- export declare function AgentsManagerPage({ onClose, embedded, initialCreateScope, }: AgentsManagerPageProps): import("react/jsx-runtime").JSX.Element;
11
+ export declare function AgentsManagerPage({ initialAgentView, onClose, embedded, initialCreateScope, onOpenAgentSession, onOpenThreadChat, }: AgentsManagerPageProps): import("react/jsx-runtime").JSX.Element;
8
12
  export {};
@@ -171,6 +171,12 @@ export type ArtifactPanelTab = (WebPreviewState & {
171
171
  kind: 'workflow';
172
172
  title: string;
173
173
  sessionId?: string;
174
+ } | {
175
+ id: string;
176
+ kind: 'agent_activity';
177
+ title: string;
178
+ threadId: string;
179
+ workspaceCwd: string;
174
180
  } | {
175
181
  id: 'turn_calls';
176
182
  kind: 'turn_calls';
@@ -239,6 +245,7 @@ interface ArtifactPanelProps {
239
245
  agentTraceLoading?: boolean;
240
246
  agentTraceError?: string;
241
247
  onOpenWorkflowAgent?: (task: EnvironmentAgentTask) => void;
248
+ onOpenCollaborationSession?: (sessionId: string, workspaceCwd: string) => void;
242
249
  onError?: (error: unknown, fallback: string) => void;
243
250
  sessionWorkflowEnabled?: boolean;
244
251
  modelManagement?: WebShellModelManagementOptions;
@@ -263,5 +270,5 @@ interface ArtifactPanelProps {
263
270
  fullscreen?: boolean;
264
271
  onToggleFullscreen?: () => void;
265
272
  }
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;
273
+ 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, onOpenCollaborationSession, onError, sessionWorkflowEnabled, modelManagement, workflow, onImageIngestionNotice, deferSubagentMount, onClose, variant, fullscreen, onToggleFullscreen, }: ArtifactPanelProps): import("react/jsx-runtime").JSX.Element;
267
274
  export {};
@@ -0,0 +1,17 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Qwen Team
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import type { TrajectoryRow } from '../../trajectory/types';
7
+ export declare function TrajectoryInspector({ row, title, stale, turnSelected, hiddenByRange, hiddenByCollapse, onReveal, onClearRange, onClose, }: {
8
+ row?: TrajectoryRow;
9
+ title?: string;
10
+ stale?: boolean;
11
+ turnSelected?: boolean;
12
+ hiddenByRange: boolean;
13
+ hiddenByCollapse: boolean;
14
+ onReveal: () => void;
15
+ onClearRange: () => void;
16
+ onClose: () => void;
17
+ }): import("react/jsx-runtime").JSX.Element;
@@ -5,6 +5,7 @@
5
5
  */
6
6
  import type { TimelineMode, TimelineModel, TimelineSpan } from '../../trajectory/buildTimeline';
7
7
  import { type TimelineRange } from '../../trajectory/timelineRange';
8
+ import type { TimelineViewportController } from '../../trajectory/useTimelineViewport';
8
9
  /**
9
10
  * The strip's height, which never changes. It sits above the table as a flex
10
11
  * sibling of the scrolled rows, so any change in its height would move every
@@ -20,6 +21,7 @@ export declare const OVERVIEW_HEIGHT = 64;
20
21
  export declare const DRAG_THRESHOLD_PX = 4;
21
22
  export interface TrajectoryOverviewProps {
22
23
  model: TimelineModel | undefined;
24
+ viewportControl: TimelineViewportController;
23
25
  /** Shown inside the box when there is no model to draw. */
24
26
  notice?: string;
25
27
  selectedKey?: string;
@@ -68,4 +70,4 @@ export declare function formatWindowTime(ms: number, windowMs: number): string;
68
70
  * milliseconds.
69
71
  */
70
72
  export declare function formatClockTime(epochMs: number, windowMs: number, language: string): string;
71
- export declare function TrajectoryOverview({ model, notice, selectedKey, onSelect, describe, range, onRangeChange, onModeChange, }: TrajectoryOverviewProps): import("react/jsx-runtime").JSX.Element;
73
+ export declare function TrajectoryOverview({ model, viewportControl, notice, selectedKey, onSelect, describe, range, onRangeChange, onModeChange, }: TrajectoryOverviewProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,15 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Qwen Team
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import type { TimelineSpan } from '../../trajectory/buildTimeline';
7
+ import type { TimelineRange } from '../../trajectory/timelineRange';
8
+ import type { TimelineViewport } from '../../trajectory/useTimelineViewport';
9
+ export declare function TrajectoryWaterfallCell({ span, total, viewport, range, title, }: {
10
+ span?: TimelineSpan;
11
+ total: number;
12
+ viewport?: TimelineViewport;
13
+ range?: TimelineRange;
14
+ title?: string;
15
+ }): import("react/jsx-runtime").JSX.Element;
@@ -23,6 +23,10 @@ export interface AddMenuProps {
23
23
  * Omitted when the host has not enabled Plan.
24
24
  */
25
25
  plan?: AddMenuPlanControl;
26
+ btw?: {
27
+ onSelect: () => void;
28
+ disabledReason?: string;
29
+ };
26
30
  mobileActions?: {
27
31
  commands: readonly CommandInfo[];
28
32
  categoryOrder?: CommandDisplayCategoryOrder;
@@ -39,4 +43,4 @@ export interface AddMenuPlanControl {
39
43
  disabled?: boolean;
40
44
  onToggle: () => void;
41
45
  }
42
- export declare function AddMenu({ disabled, availabilityKey, addFileAvailable, uploadAvailable, onAddFiles, onFilePickerCancel, onInsertReference, onPrependSkill, getWorkspaceActions, skills, onSkillsOpenChange, skillsLoading, skillsLoadError, skillsLoaded, plan, mobileActions, commandsOnly, }: AddMenuProps): import("react/jsx-runtime").JSX.Element;
46
+ export declare function AddMenu({ disabled, availabilityKey, addFileAvailable, uploadAvailable, onAddFiles, onFilePickerCancel, onInsertReference, onPrependSkill, getWorkspaceActions, skills, onSkillsOpenChange, skillsLoading, skillsLoadError, skillsLoaded, plan, btw, mobileActions, commandsOnly, }: AddMenuProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,6 @@
1
+ export type BranchSessionIsolation = 'current' | 'worktree';
2
+ export declare function BranchSessionDialog({ busy, onCancel, onConfirm, }: {
3
+ busy: boolean;
4
+ onCancel: () => void;
5
+ onConfirm: (isolation: BranchSessionIsolation) => void;
6
+ }): import("react/jsx-runtime").JSX.Element;
@@ -3,9 +3,10 @@
3
3
  * Copyright 2026 Qwen Team
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- export declare function GitDiffContent({ workspaceCwd, gitCwd, onSubtitleChange, }: {
6
+ export declare function GitDiffContent({ workspaceCwd, gitCwd, gitSessionId, onSubtitleChange, }: {
7
7
  workspaceCwd: string;
8
8
  gitCwd?: string;
9
+ gitSessionId?: string;
9
10
  onSubtitleChange?: (subtitle: string | undefined) => void;
10
11
  }): import("react/jsx-runtime").JSX.Element;
11
12
  export declare function GitDiffDialog({ workspaceCwd, onClose, }: {
@@ -3,9 +3,10 @@
3
3
  * Copyright 2026 Qwen Team
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- export declare function GitLogContent({ workspaceCwd, gitCwd, onSubtitleChange, }: {
6
+ export declare function GitLogContent({ workspaceCwd, gitCwd, gitSessionId, onSubtitleChange, }: {
7
7
  workspaceCwd: string;
8
8
  gitCwd?: string;
9
+ gitSessionId?: string;
9
10
  onSubtitleChange?: (subtitle: string | undefined) => void;
10
11
  }): import("react/jsx-runtime").JSX.Element;
11
12
  export declare function GitLogDialog({ workspaceCwd, onClose, }: {
@@ -0,0 +1,6 @@
1
+ import type { ManagedAgentProvider } from './managed-agent-provider';
2
+ export declare function WorkspaceBindingCreator({ provider, clientId, onCreated, }: {
3
+ provider: ManagedAgentProvider;
4
+ clientId: string;
5
+ onCreated: (sessionId: string) => void;
6
+ }): import("react/jsx-runtime").JSX.Element;