@qwen-code/web-shell 0.25.1-preview.0 → 0.25.1-preview.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agents-route-B3FonPY-.js +1546 -0
- package/dist/daemon-react-sdk.js +1 -1
- package/dist/{index-D9Bc2Hcz.js → index-BPRuZpl-.js} +47522 -45342
- package/dist/index.js +22 -22
- package/dist/sw.js +1 -1
- package/dist/{toolNames-CDhDlFnq.js → toolNames-CusX912Z.js} +3821 -3893
- package/dist/transcript.js +9734 -9428
- package/dist/types/adapters/messageTypes.d.ts +8 -1
- package/dist/types/components/ChatContextHeader.d.ts +3 -1
- package/dist/types/components/ChatEditor.d.ts +4 -7
- package/dist/types/components/WorkspaceSelector.d.ts +9 -1
- package/dist/types/components/agents/AgentCreatePage.d.ts +7 -1
- package/dist/types/components/agents/AgentsManagerPage.d.ts +4 -5
- package/dist/types/components/artifacts/ArtifactPanel.d.ts +1 -8
- package/dist/types/components/artifacts/TrajectoryFilters.d.ts +15 -0
- package/dist/types/components/artifacts/TrajectoryInspector.d.ts +3 -1
- package/dist/types/components/artifacts/artifactUtils.d.ts +9 -0
- package/dist/types/components/managed/generated/managed-agent-api.d.ts +79 -20
- package/dist/types/components/managed/java-managed-agent-client.d.ts +2 -0
- package/dist/types/components/managed/use-managed-actions.d.ts +6 -5
- package/dist/types/components/messages/AssistantMessage.d.ts +3 -1
- package/dist/types/components/messages/UserMessage.d.ts +3 -1
- package/dist/types/components/messages/agent-message-details.d.ts +36 -0
- package/dist/types/components/messages/squad-tag.d.ts +16 -0
- package/dist/types/components/sidebar/WebShellSidebar.d.ts +8 -4
- package/dist/types/components/sidebar/WorkspaceSection.d.ts +9 -2
- package/dist/types/components/workspace-agents/ThreadsPage.d.ts +30 -54
- package/dist/types/components/workspace-agents/add-runtime-dialog.d.ts +30 -4
- package/dist/types/components/workspace-agents/agent-events.d.ts +4 -34
- package/dist/types/components/workspace-agents/agents-route.d.ts +19 -0
- package/dist/types/components/workspace-agents/agents-view-logic.d.ts +14 -163
- package/dist/types/components/workspace-agents/lazy-agents-route.d.ts +7 -0
- package/dist/types/components/workspace-agents/messages.d.ts +2 -2
- package/dist/types/components/workspace-agents/session-agent-live-runs.d.ts +96 -0
- package/dist/types/components/workspace-agents/session-agents-api.d.ts +39 -0
- package/dist/types/components/workspace-agents/squads-section.d.ts +28 -0
- package/dist/types/components/workspace-agents/threads-api.d.ts +24 -35
- package/dist/types/components/workspace-agents/use-session-agent-runs.d.ts +66 -0
- package/dist/types/components/workspace-agents/useAgentChatEntry.d.ts +74 -10
- package/dist/types/components/workspaces/HostLabel.d.ts +8 -0
- package/dist/types/components/workspaces/WorkspaceHostProjects.d.ts +18 -0
- package/dist/types/components/workspaces/WorkspaceLocation.d.ts +10 -0
- package/dist/types/config/daemon-target.d.ts +76 -0
- package/dist/types/config/daemon.d.ts +16 -0
- package/dist/types/config/host-fanout.d.ts +53 -0
- package/dist/types/config/remote-connections.d.ts +3 -0
- package/dist/types/config/workspace-hosts.d.ts +18 -0
- package/dist/types/trajectory/filter-messages.d.ts +9 -0
- package/dist/types/trajectory/filter-messages.transcript-stub.d.ts +7 -0
- package/dist/types/trajectory/filterTrajectory.d.ts +22 -0
- package/dist/types/trajectory/types.d.ts +1 -0
- package/dist/types/trajectory/useTrajectoryWindow.d.ts +21 -36
- package/dist/types/trajectory/window-messages.d.ts +9 -0
- package/dist/types/trajectory/window-messages.transcript-stub.d.ts +7 -0
- package/dist/types/utils/workspace.d.ts +10 -0
- package/package.json +2 -1
- package/dist/ThreadsRoute-CXAiD3t_.js +0 -2407
- package/dist/types/components/workspace-agents/LazyThreadsRoute.d.ts +0 -7
- package/dist/types/components/workspace-agents/ThreadChat.d.ts +0 -35
- package/dist/types/components/workspace-agents/ThreadView.d.ts +0 -72
- package/dist/types/components/workspace-agents/ThreadsRoute.d.ts +0 -23
- package/dist/types/components/workspace-agents/useProjectConversations.d.ts +0 -10
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Copyright 2025 Qwen Team
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
import type { DaemonBackgroundTurn, DaemonSessionArtifactInput, DaemonInputAnnotation } from '@qwen-code/sdk/daemon';
|
|
6
|
+
import type { DaemonBackgroundTurn, DaemonSessionArtifactInput, DaemonInputAnnotation, QwenAgentMessageMeta } from '@qwen-code/sdk/daemon';
|
|
7
7
|
import type { components } from '../components/managed/generated/managed-agent-api.js';
|
|
8
8
|
export interface AttachmentPreviewRequest {
|
|
9
9
|
name: string;
|
|
@@ -119,6 +119,8 @@ export interface DaemonUserMessage extends DaemonMessageMeta {
|
|
|
119
119
|
}>;
|
|
120
120
|
inputAnnotations?: DaemonInputAnnotation[];
|
|
121
121
|
source?: string;
|
|
122
|
+
/** `_meta.qwenAgentMessage` of an @-mention (`kind: 'agent_mention'`). */
|
|
123
|
+
agentMessage?: QwenAgentMessageMeta;
|
|
122
124
|
}
|
|
123
125
|
export interface DaemonAssistantMessage extends DaemonMessageMeta {
|
|
124
126
|
reportedArtifacts?: DaemonSessionArtifactInput[];
|
|
@@ -138,6 +140,11 @@ export interface DaemonAssistantMessage extends DaemonMessageMeta {
|
|
|
138
140
|
outputTokens: number;
|
|
139
141
|
cachedTokens?: number;
|
|
140
142
|
};
|
|
143
|
+
/**
|
|
144
|
+
* `_meta.qwenAgentMessage` of a workspace agent's reply in this session
|
|
145
|
+
* (`kind: 'agent_message'`): its run status, error, steps and tokens.
|
|
146
|
+
*/
|
|
147
|
+
agentMessage?: QwenAgentMessageMeta;
|
|
141
148
|
}
|
|
142
149
|
export interface DaemonThinkingMessage extends DaemonMessageMeta {
|
|
143
150
|
id: string;
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import type { ReactNode } from 'react';
|
|
2
2
|
interface ChatContextHeaderProps {
|
|
3
3
|
content: ReactNode;
|
|
4
|
+
/** Names where the chat runs, beside the actions; hidden when omitted. */
|
|
5
|
+
location?: ReactNode;
|
|
4
6
|
/**
|
|
5
7
|
* Workspace shown as the header's leading icon. Omitting it means the shell
|
|
6
8
|
* has no workspace: the icon stays the same folder and only its tooltip says
|
|
@@ -23,5 +25,5 @@ interface ChatContextHeaderProps {
|
|
|
23
25
|
/** Shows the Local Control QR entry; hidden when omitted. */
|
|
24
26
|
onOpenLocalControlSettings?: () => void;
|
|
25
27
|
}
|
|
26
|
-
export declare function ChatContextHeader({ content, workspaceName, workspacePath, environmentOpen, environmentAvailable, rightPanelOpen, rightPanelAvailable, onToggleEnvironment, onToggleRightPanel, onOpenTokenUsage, onOpenContextUsage, onOpenLocalControlSettings, }: ChatContextHeaderProps): import("react/jsx-runtime").JSX.Element;
|
|
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;
|
|
27
29
|
export {};
|
|
@@ -10,6 +10,7 @@ import { type ComposerSubmitMetadata, type EditorHandle } from '../hooks/useComp
|
|
|
10
10
|
import type { ContextUsageControls } from '../hooks/useContextUsageControls';
|
|
11
11
|
import type { VoiceStatusRevision, VoiceWorkspaceTarget } from '../voice/voice-workspace-target';
|
|
12
12
|
import { type SessionGitIntent } from './GitModePopover';
|
|
13
|
+
import { type WorkspaceSelectorOption } from './WorkspaceSelector';
|
|
13
14
|
export type ComposerToolbarAction = 'approvalMode' | 'plan' | 'contextUsage' | 'gitBranch' | 'model' | 'commands' | 'files' | 'widthMode' | 'voice' | 'workspace' | 'addMenu';
|
|
14
15
|
interface ChatEditorProps {
|
|
15
16
|
onSubmit: (text: string, images?: import('../adapters/promptTypes').PromptImage[], files?: import('../adapters/promptTypes').PromptFile[], commitAccepted?: import('../hooks/useComposerCore').ComposerSubmitCommit, metadata?: ComposerSubmitMetadata) => boolean | void;
|
|
@@ -101,16 +102,12 @@ interface ChatEditorProps {
|
|
|
101
102
|
onSelectModel?: (model: string) => void;
|
|
102
103
|
reasoning?: DaemonReasoningControls;
|
|
103
104
|
onSelectReasoningEffort?: (value: ReasoningSelection, source?: 'toggle') => Promise<void> | void;
|
|
104
|
-
workspaces?:
|
|
105
|
-
id: string;
|
|
106
|
-
cwd: string;
|
|
107
|
-
label: string;
|
|
108
|
-
primary: boolean;
|
|
109
|
-
trusted: boolean;
|
|
110
|
-
}>;
|
|
105
|
+
workspaces?: WorkspaceSelectorOption[];
|
|
111
106
|
selectedWorkspaceCwd?: string;
|
|
112
107
|
workspaceSelectionDisabled?: boolean;
|
|
113
108
|
onSelectWorkspace?: (workspaceCwd: string | undefined) => void;
|
|
109
|
+
/** Host-aware variant; see WorkspaceSelector. */
|
|
110
|
+
onSelectHostedWorkspace?: (hostOrigin: string, workspaceCwd: string | undefined) => void;
|
|
114
111
|
scratchWorkspaceSupported?: boolean;
|
|
115
112
|
existingFolderWorkspaceSupported?: boolean;
|
|
116
113
|
standaloneTargetSupported?: boolean;
|
|
@@ -4,6 +4,8 @@ export interface WorkspaceSelectorOption {
|
|
|
4
4
|
label: string;
|
|
5
5
|
primary: boolean;
|
|
6
6
|
trusted: boolean;
|
|
7
|
+
/** Daemon host this workspace lives on; defaults to the page origin. */
|
|
8
|
+
hostOrigin?: string;
|
|
7
9
|
}
|
|
8
10
|
interface WorkspaceSelectorProps {
|
|
9
11
|
workspaces: WorkspaceSelectorOption[];
|
|
@@ -17,6 +19,12 @@ interface WorkspaceSelectorProps {
|
|
|
17
19
|
selectedStandalone?: boolean;
|
|
18
20
|
className?: string;
|
|
19
21
|
onSelectWorkspace: (cwd: string | undefined) => void;
|
|
22
|
+
/**
|
|
23
|
+
* Host-aware selection for multi-daemon pages. When provided it fires
|
|
24
|
+
* INSTEAD of `onSelectWorkspace`, with the option's host (page origin when
|
|
25
|
+
* unset); `undefined` cwd keeps marking the host's primary workspace.
|
|
26
|
+
*/
|
|
27
|
+
onSelectHostedWorkspace?: (hostOrigin: string, cwd: string | undefined) => void;
|
|
20
28
|
onSelectStandalone?: () => void;
|
|
21
29
|
onCreateScratch: () => void;
|
|
22
30
|
onOpenExistingFolder: () => void;
|
|
@@ -25,5 +33,5 @@ interface WorkspaceSelectorProps {
|
|
|
25
33
|
* Composer workspace menu. Capability-gated creation actions and disabled
|
|
26
34
|
* untrusted entries keep presentation aligned with daemon authorization.
|
|
27
35
|
*/
|
|
28
|
-
export declare function WorkspaceSelector({ workspaces, selectedWorkspaceCwd, disabled, busy, scratchSupported, existingFolderSupported, standaloneSupported, selectedStandalone, className, onSelectWorkspace, onSelectStandalone, onCreateScratch, onOpenExistingFolder, }: WorkspaceSelectorProps): import("react/jsx-runtime").JSX.Element | null;
|
|
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;
|
|
29
37
|
export {};
|
|
@@ -17,6 +17,11 @@ interface AgentCreatePageProps {
|
|
|
17
17
|
}[];
|
|
18
18
|
/** Preselects the runtime, e.g. right after it joined. */
|
|
19
19
|
initialHostId?: string;
|
|
20
|
+
/**
|
|
21
|
+
* Program ids this computer's daemon reported it can run. Absent (an older
|
|
22
|
+
* daemon) means Qwen Code only.
|
|
23
|
+
*/
|
|
24
|
+
localPrograms?: readonly string[];
|
|
20
25
|
onSaveWorkspaceAgent?: (input: {
|
|
21
26
|
name: string;
|
|
22
27
|
description?: string;
|
|
@@ -26,6 +31,7 @@ interface AgentCreatePageProps {
|
|
|
26
31
|
maxConcurrentRuns: number;
|
|
27
32
|
execution?: {
|
|
28
33
|
mode: 'local';
|
|
34
|
+
provider?: AgentProgramView;
|
|
29
35
|
} | {
|
|
30
36
|
mode: 'managed-host';
|
|
31
37
|
hostIds: string[];
|
|
@@ -33,5 +39,5 @@ interface AgentCreatePageProps {
|
|
|
33
39
|
};
|
|
34
40
|
}) => Promise<void>;
|
|
35
41
|
}
|
|
36
|
-
export declare function AgentCreatePage({ initialScope, agent, onCancel, onCreated, executionHosts, workspaceCwd, initialHostId, onSaveWorkspaceAgent, }: AgentCreatePageProps): import("react/jsx-runtime").JSX.Element;
|
|
42
|
+
export declare function AgentCreatePage({ initialScope, agent, onCancel, onCreated, executionHosts, workspaceCwd, initialHostId, localPrograms, onSaveWorkspaceAgent, }: AgentCreatePageProps): import("react/jsx-runtime").JSX.Element;
|
|
37
43
|
export {};
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
import type { EmbeddedManagerPage } from '../plugins/manager-page';
|
|
2
2
|
interface AgentsManagerPageProps {
|
|
3
|
-
initialAgentView?: 'agents' | '
|
|
3
|
+
initialAgentView?: 'agents' | 'squads' | 'runtime' | 'new-agent';
|
|
4
4
|
onClose: () => void;
|
|
5
5
|
embedded?: EmbeddedManagerPage;
|
|
6
6
|
initialCreateScope?: 'workspace' | 'global' | null;
|
|
7
7
|
workspaceCwd?: string;
|
|
8
|
-
/**
|
|
9
|
-
|
|
10
|
-
onOpenThreadChat?: (threadId: string, workspaceCwd: string) => void;
|
|
8
|
+
/** Puts `@name ` into the chat composer, from an agent card. */
|
|
9
|
+
onMentionAgent?: (name: string) => void;
|
|
11
10
|
}
|
|
12
|
-
export declare function AgentsManagerPage({ initialAgentView, onClose, embedded, initialCreateScope, workspaceCwd,
|
|
11
|
+
export declare function AgentsManagerPage({ initialAgentView, onClose, embedded, initialCreateScope, workspaceCwd, onMentionAgent, }: AgentsManagerPageProps): import("react/jsx-runtime").JSX.Element;
|
|
13
12
|
export {};
|
|
@@ -171,12 +171,6 @@ 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;
|
|
180
174
|
} | {
|
|
181
175
|
id: 'turn_calls';
|
|
182
176
|
kind: 'turn_calls';
|
|
@@ -245,7 +239,6 @@ interface ArtifactPanelProps {
|
|
|
245
239
|
agentTraceLoading?: boolean;
|
|
246
240
|
agentTraceError?: string;
|
|
247
241
|
onOpenWorkflowAgent?: (task: EnvironmentAgentTask) => void;
|
|
248
|
-
onOpenCollaborationSession?: (sessionId: string, workspaceCwd: string) => void;
|
|
249
242
|
onError?: (error: unknown, fallback: string) => void;
|
|
250
243
|
sessionWorkflowEnabled?: boolean;
|
|
251
244
|
modelManagement?: WebShellModelManagementOptions;
|
|
@@ -270,5 +263,5 @@ interface ArtifactPanelProps {
|
|
|
270
263
|
fullscreen?: boolean;
|
|
271
264
|
onToggleFullscreen?: () => void;
|
|
272
265
|
}
|
|
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,
|
|
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;
|
|
274
267
|
export {};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Qwen Team
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import type { TrajectoryFilter } from '../../trajectory/filterTrajectory';
|
|
7
|
+
export declare function TrajectoryFilters({ value, onChange, onNavigate, onClear, count, position, truncatedCount, }: {
|
|
8
|
+
value: TrajectoryFilter;
|
|
9
|
+
onChange: (filter: TrajectoryFilter) => void;
|
|
10
|
+
onNavigate: (direction: 1 | -1, filter?: TrajectoryFilter) => void;
|
|
11
|
+
onClear: () => void;
|
|
12
|
+
count: number;
|
|
13
|
+
position: number;
|
|
14
|
+
truncatedCount: number;
|
|
15
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
@@ -4,13 +4,15 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
import type { TrajectoryRow } from '../../trajectory/types';
|
|
7
|
-
export declare function TrajectoryInspector({ row, title, stale, turnSelected, hiddenByRange, hiddenByCollapse, onReveal, onClearRange, onClose, }: {
|
|
7
|
+
export declare function TrajectoryInspector({ row, title, stale, turnSelected, hiddenByRange, hiddenByCollapse, hiddenByFilter, onClearFilter, onReveal, onClearRange, onClose, }: {
|
|
8
8
|
row?: TrajectoryRow;
|
|
9
9
|
title?: string;
|
|
10
10
|
stale?: boolean;
|
|
11
11
|
turnSelected?: boolean;
|
|
12
12
|
hiddenByRange: boolean;
|
|
13
13
|
hiddenByCollapse: boolean;
|
|
14
|
+
hiddenByFilter?: boolean;
|
|
15
|
+
onClearFilter?: () => void;
|
|
14
16
|
onReveal: () => void;
|
|
15
17
|
onClearRange: () => void;
|
|
16
18
|
onClose: () => void;
|
|
@@ -30,6 +30,15 @@ export declare function readWorkspaceFileAsBlob(readFileBytes: (filePath: string
|
|
|
30
30
|
}): Promise<Blob>;
|
|
31
31
|
export declare function downloadWorkspaceFile(workspaceActions: Pick<DaemonWorkspaceActions, 'readFileBytes' | 'stat'>, workspacePath: string, mimeType?: string, isCancelled?: () => boolean): Promise<void>;
|
|
32
32
|
export declare function getArtifactLocation(artifact: DaemonSessionArtifact): string;
|
|
33
|
+
/**
|
|
34
|
+
* Workspace files are shown by filename. Links and managed artifacts have no
|
|
35
|
+
* file, so they keep the stored title.
|
|
36
|
+
*/
|
|
37
|
+
export declare function artifactDisplayName(artifact: Pick<DaemonSessionArtifact, 'title'> & {
|
|
38
|
+
workspacePath?: string;
|
|
39
|
+
}): string;
|
|
40
|
+
/** A backslash stays in the name, matching `path.posix.basename`. */
|
|
41
|
+
export declare function workspaceFileName(workspacePath: string | undefined): string | undefined;
|
|
33
42
|
export declare function normalizePath(value: string | undefined): string;
|
|
34
43
|
export declare function stripWorkspacePath(path: string, workspaceCwd?: string): string;
|
|
35
44
|
export declare function isSamePath(left: string | undefined, right: string | undefined, workspaceCwd?: string): boolean;
|
|
@@ -57,7 +57,7 @@ export interface paths {
|
|
|
57
57
|
};
|
|
58
58
|
get?: never;
|
|
59
59
|
put?: never;
|
|
60
|
-
/** @description POST SSE consumed through fetch response.body. An afterSequence below the replay floor ends the stream with one agent.session.resync_required frame instead of a 409; reload the transcript and resume after its lastSequence. */
|
|
60
|
+
/** @description POST SSE consumed through fetch response.body. An afterSequence below the replay floor ends the stream with one agent.session.resync_required frame instead of a 409 only while the Snapshot backs the floor (replay_floor_sequence <= snapshot_through_sequence); a stream reconciliation discards the Snapshot without lowering the floor, and during that rebuild such a cursor is served from the retained events. On the resync frame, reload the transcript and resume after its lastSequence. */
|
|
61
61
|
post: operations["webShellStreamEvents"];
|
|
62
62
|
delete?: never;
|
|
63
63
|
options?: never;
|
|
@@ -74,7 +74,7 @@ export interface paths {
|
|
|
74
74
|
};
|
|
75
75
|
get?: never;
|
|
76
76
|
put?: never;
|
|
77
|
-
/** @description Maps workspaceId/cwdRelative to public Workspace selection without using environmentId or absolute cwd. Shares G0's opt-in initial file-tool Turn admission and fixed server-owned profile with public Session creation.
|
|
77
|
+
/** @description Maps workspaceId/cwdRelative to public Workspace selection without using environmentId or absolute cwd. Shares G0's opt-in initial file-tool Turn admission and fixed server-owned profile with public Session creation. Any caller holding the OPERATOR role may submit later Turns and rename the Session under the same opt-in, while the Workspace registry row stays ACTIVE and still backs the binding, the actor recorded by the Workspace create command keeps OPERATOR or above, and the Session is an active, undeleted qwen-code Session on the frozen execution profile; Workspace close follows its separate close capability and lifecycle admission; the same caller may cancel a running Turn (its delivery re-checks no grants); archive and unarchive follow their separate retention capabilities after reliable Workspace close; delete supports either L3 idle ACTIVE files Sessions or L2 CLOSED/ARCHIVED Sessions; controlled same-Workspace cwd changes ship through the durable cwd_change operations (v1.32). The per-caller workspaceTurns capability on this surface advertises the same submit/rename admission rule; it does not gate cancellation. Freeze selection with the original idempotency key; admission does not prove physical directory readiness. */
|
|
78
78
|
post: operations["webShellCreateSession"];
|
|
79
79
|
delete?: never;
|
|
80
80
|
options?: never;
|
|
@@ -140,7 +140,7 @@ export interface paths {
|
|
|
140
140
|
};
|
|
141
141
|
get?: never;
|
|
142
142
|
put?: never;
|
|
143
|
-
/** @description W2, implemented: the camelCase twin of the public changeSessionCwd with the matched refusal order: 400 invalid_request for a missing or malformed field; 401 actor_required without a trusted actor; 400 invalid_idempotency_key for a malformed idempotencyKey — with two documented divergences: a key over 128 characters is refused during request validation with 400 invalid_request before the service's check, and a blank idempotencyKey is refused there too, while the public header answers 400 invalid_idempotency_key for both shapes; 400 invalid_cwd for a lexical violation and 400 invalid_request for an expectedContextRevision below 1; 404 session_not_found for an unknown Session id; 400 unsupported_feature for an unbound Session; 404 session_not_found for an unreadable Session
|
|
143
|
+
/** @description W2, implemented: the camelCase twin of the public changeSessionCwd with the matched refusal order: 400 invalid_request for a missing or malformed field; 401 actor_required without a trusted actor; 400 invalid_idempotency_key for a malformed idempotencyKey — with two documented divergences: a key over 128 characters is refused during request validation with 400 invalid_request before the service's check, and a blank idempotencyKey is refused there too, while the public header answers 400 invalid_idempotency_key for both shapes; 400 invalid_cwd for a lexical violation and 400 invalid_request for an expectedContextRevision below 1; 404 session_not_found for an unknown Session id; 400 unsupported_feature for an unbound Session; 404 session_not_found for an unreadable Session; 409 idempotency_conflict when one key carries different content, and a completed change under the same key always replays instead, before the role refusal; 403 session_operation_forbidden when a readable actor's Workspace role is below OPERATOR; 409 workspace_unavailable when execution is disabled; 404 session_not_found for a deleted Session; then 409 session_state_conflict, 409 workspace_unavailable from moved Registry facts (the recorded create-command actor's grant included, and the settlement re-checks the V56-persisted initiator the same way, so demoting either actor fails the operation, exactly like the public surface), 409 context_revision_conflict and 409 session_context_busy. Poll the operation or await session.context.changed; do not treat 202 as activation. */
|
|
144
144
|
post: operations["webShellChangeCwd"];
|
|
145
145
|
delete?: never;
|
|
146
146
|
options?: never;
|
|
@@ -173,7 +173,7 @@ export interface paths {
|
|
|
173
173
|
};
|
|
174
174
|
get?: never;
|
|
175
175
|
put?: never;
|
|
176
|
-
/** @description D6 serves Hosted permission Actions. Question Actions and vote_recorded remain planned. Reads follow Session authorization;
|
|
176
|
+
/** @description D6 serves Hosted permission Actions. Question Actions and vote_recorded remain planned. Reads follow Session authorization; the Session's recorded owner or any caller holding OPERATOR on the bound Workspace may respond (an unbound Session with no recorded creator and no recorded create command answers to any caller in its tenant, matching its read ACL; a bound Session without an owner record answers through the create-command actor recorded for it, or through the Workspace role arm). Responses are durable operations, reconciled against the original journal decision. */
|
|
177
177
|
post: operations["queryWebShellActions"];
|
|
178
178
|
delete?: never;
|
|
179
179
|
options?: never;
|
|
@@ -190,7 +190,7 @@ export interface paths {
|
|
|
190
190
|
};
|
|
191
191
|
get?: never;
|
|
192
192
|
put?: never;
|
|
193
|
-
/** @description D6 serves Hosted permission Actions. Question Actions and vote_recorded remain planned. Reads follow Session authorization;
|
|
193
|
+
/** @description D6 serves Hosted permission Actions. Question Actions and vote_recorded remain planned. Reads follow Session authorization; the Session's recorded owner or any caller holding OPERATOR on the bound Workspace may respond (an unbound Session with no recorded creator and no recorded create command answers to any caller in its tenant, matching its read ACL; a bound Session without an owner record answers through the create-command actor recorded for it, or through the Workspace role arm). Responses are durable operations, reconciled against the original journal decision. */
|
|
194
194
|
post: operations["getWebShellAction"];
|
|
195
195
|
delete?: never;
|
|
196
196
|
options?: never;
|
|
@@ -207,7 +207,7 @@ export interface paths {
|
|
|
207
207
|
};
|
|
208
208
|
get?: never;
|
|
209
209
|
put?: never;
|
|
210
|
-
/** @description D6 serves Hosted permission Actions. Question Actions and vote_recorded remain planned. Reads follow Session authorization;
|
|
210
|
+
/** @description D6 serves Hosted permission Actions. Question Actions and vote_recorded remain planned. Reads follow Session authorization; the Session's recorded owner or any caller holding OPERATOR on the bound Workspace may respond (an unbound Session with no recorded creator and no recorded create command answers to any caller in its tenant, matching its read ACL; a bound Session without an owner record answers through the create-command actor recorded for it, or through the Workspace role arm). Responses are durable operations, reconciled against the original journal decision. */
|
|
211
211
|
post: operations["respondWebShellAction"];
|
|
212
212
|
delete?: never;
|
|
213
213
|
options?: never;
|
|
@@ -224,7 +224,7 @@ export interface paths {
|
|
|
224
224
|
};
|
|
225
225
|
get?: never;
|
|
226
226
|
put?: never;
|
|
227
|
-
/** @description Uses the same close admission,
|
|
227
|
+
/** @description Uses the same close admission, owner authorization and durable cleanup semantics as the public close route. sessionClose describes deployment support; it does not grant actor authorization. New L3 Workspace close operations run SessionEnd only, retain data, and finish after durable effects verification and original Runtime stop. SessionDelete is reserved for ACTIVE delete. Missing protocol support rejects new admission; previously admitted operations retain their saved protocol. Unknown outcomes remain recovery_blocked. */
|
|
228
228
|
post: operations["closeWebShellSession"];
|
|
229
229
|
delete?: never;
|
|
230
230
|
options?: never;
|
|
@@ -241,7 +241,7 @@ export interface paths {
|
|
|
241
241
|
};
|
|
242
242
|
get?: never;
|
|
243
243
|
put?: never;
|
|
244
|
-
/** @description Workspace-bound archive requires a closed Session with completed reliable-close evidence and the
|
|
244
|
+
/** @description Workspace-bound archive requires a closed Session with completed reliable-close evidence and the Session's recorded owner with current read access. It completes atomically during admission, preserves data and the permanent close fence, and calls neither Harness nor Runtime. A readable non-owner returns 403; missing close evidence returns 409 workspace_unavailable. */
|
|
245
245
|
post: operations["archiveWebShellSession"];
|
|
246
246
|
delete?: never;
|
|
247
247
|
options?: never;
|
|
@@ -258,7 +258,7 @@ export interface paths {
|
|
|
258
258
|
};
|
|
259
259
|
get?: never;
|
|
260
260
|
put?: never;
|
|
261
|
-
/** @description Workspace-bound
|
|
261
|
+
/** @description Workspace-bound ACTIVE deletion supports idle hosted-workspace-files/1 Sessions when L3 lifecycle protocol and reliable Runtime stop are available. Only the Session's recorded owner (owner_actor_key, with the pre-V40 creator fallback) with current read access may admit it; accepted, running, cancelling or approval-waiting Turns return 409 turn_active. Admission persists a lifecycle-only execution fence and a versioned actor-scoped operation. SessionEnd settles before SessionDelete; committed Hook results are verified in Session Store and saved before permanent draining, attachment cleanup and original worker stop. Unknown outcomes or missing original stop evidence remain recovery_blocked and are never replayed on a replacement worker. CLOSED/ARCHIVED deletion retains L2: completed reliable-close evidence is required and no Harness or Hook is invoked. Completion atomically commits retirement, tombstone, receipt and terminal event, retaining shared Workspace files and neighboring holders. Authorized same-actor/key replays return the original operation, including after deletion; a readable non-owner returns 403. Missing lifecycle capability or close evidence returns 409 workspace_unavailable. */
|
|
262
262
|
post: operations["deleteWebShellSession"];
|
|
263
263
|
delete?: never;
|
|
264
264
|
options?: never;
|
|
@@ -331,6 +331,22 @@ export interface paths {
|
|
|
331
331
|
patch?: never;
|
|
332
332
|
trace?: never;
|
|
333
333
|
};
|
|
334
|
+
"/api/agent/web-shell/v1/tasks/cancel": {
|
|
335
|
+
parameters: {
|
|
336
|
+
query?: never;
|
|
337
|
+
header?: never;
|
|
338
|
+
path?: never;
|
|
339
|
+
cookie?: never;
|
|
340
|
+
};
|
|
341
|
+
get?: never;
|
|
342
|
+
put?: never;
|
|
343
|
+
post: operations["cancelWebShellTask"];
|
|
344
|
+
delete?: never;
|
|
345
|
+
options?: never;
|
|
346
|
+
head?: never;
|
|
347
|
+
patch?: never;
|
|
348
|
+
trace?: never;
|
|
349
|
+
};
|
|
334
350
|
"/api/agent/web-shell/v1/tool-results/get": {
|
|
335
351
|
parameters: {
|
|
336
352
|
query?: never;
|
|
@@ -388,7 +404,7 @@ export interface paths {
|
|
|
388
404
|
};
|
|
389
405
|
get?: never;
|
|
390
406
|
put?: never;
|
|
391
|
-
/** @description Synchronously restores an archived Session to closed. Workspace-bound Sessions require completed reliable-close evidence and the
|
|
407
|
+
/** @description Synchronously restores an archived Session to closed. Workspace-bound Sessions require completed reliable-close evidence and the Session's recorded owner with current read access (404 unreadable, 403 readable non-owner). Bound keys are tenant/Session/actor scoped. Replay returns the current visible Session without repeating the mutation; a deleted Session returns 404. The permanent close fence is preserved and no Harness or Runtime call is made. */
|
|
392
408
|
post: operations["unarchiveWebShellSession"];
|
|
393
409
|
delete?: never;
|
|
394
410
|
options?: never;
|
|
@@ -528,14 +544,14 @@ export interface components {
|
|
|
528
544
|
/** @default false */
|
|
529
545
|
actions: boolean;
|
|
530
546
|
/**
|
|
531
|
-
* @description True when the caller may submit later Turns of this Workspace-bound Session
|
|
547
|
+
* @description True when the caller may submit later Turns of this Workspace-bound Session or rename it: the deployment enables Workspace files, the caller holds the OPERATOR role on a Workspace registry row whose state is ACTIVE and still backs the Session's binding, the actor recorded by the Workspace create command keeps OPERATOR or above, and the Session is an active qwen-code Session on the frozen execution profile. Cancelling only aborts work already running, so an OPERATOR caller may cancel a running Turn even when this is false; the capability does not gate cancellation. False for every other caller and for unbound Sessions, which do not use it.
|
|
532
548
|
* @default false
|
|
533
549
|
*/
|
|
534
|
-
workspaceTurns
|
|
550
|
+
workspaceTurns: boolean;
|
|
535
551
|
tasks: boolean;
|
|
536
552
|
artifacts: boolean;
|
|
537
553
|
/**
|
|
538
|
-
* @description Deployment support for close independently of archive/delete. Admission also requires
|
|
554
|
+
* @description Deployment support for close independently of archive/delete. Admission also requires Session ownership and current read access for a bound Session.
|
|
539
555
|
* @default false
|
|
540
556
|
*/
|
|
541
557
|
sessionClose?: boolean;
|
|
@@ -550,7 +566,7 @@ export interface components {
|
|
|
550
566
|
*/
|
|
551
567
|
sessionUnarchive?: boolean;
|
|
552
568
|
/**
|
|
553
|
-
* @description Optional support
|
|
569
|
+
* @description Optional support capability. ACTIVE Workspace files Sessions require L3 lifecycle protocol and reliable original Runtime stop; CLOSED/ARCHIVED Sessions use independent L2 close evidence. Current creator/read authorization and idle/source-state admission checks still apply. The aggregate session lifecycle capability is unchanged.
|
|
554
570
|
* @default false
|
|
555
571
|
*/
|
|
556
572
|
sessionDelete?: boolean;
|
|
@@ -640,6 +656,8 @@ export interface components {
|
|
|
640
656
|
code: string;
|
|
641
657
|
message: string;
|
|
642
658
|
request_id: string;
|
|
659
|
+
/** @description Present on Runtime Broker refusals; true permits retry, false is a definite refusal. Other errors may omit this field. */
|
|
660
|
+
retryable?: boolean;
|
|
643
661
|
/** Format: int64 */
|
|
644
662
|
replay_floor_sequence?: number | null;
|
|
645
663
|
/** Format: int64 */
|
|
@@ -685,7 +703,7 @@ export interface components {
|
|
|
685
703
|
* @default false
|
|
686
704
|
*/
|
|
687
705
|
workspaceContext: boolean;
|
|
688
|
-
/** @description Supports authorized Workspace discovery, Session creation, and saved binding read-back. This capability does not advertise execution readiness. Deployments may separately opt in to an initial Workspace Read/Write/Edit Turn at creation; the
|
|
706
|
+
/** @description Supports authorized Workspace discovery, Session creation, and saved binding read-back. This capability does not advertise execution readiness. Deployments may separately opt in to an initial Workspace Read/Write/Edit Turn at creation; callers holding the OPERATOR role may submit later Turns or rename under the same opt-in while the registry row stays ACTIVE and still backs the Session's binding and the actor recorded by the Workspace create command keeps OPERATOR or above, and may cancel a running Turn (its delivery re-checks no grants), while close follows its separate capability and lifecycle admission; archive, delete and unarchive follow their separate retention capabilities after reliable Workspace close. */
|
|
689
707
|
workspaceBinding: boolean;
|
|
690
708
|
};
|
|
691
709
|
/** @description Same authorized explicit default as default_workspace, including when outside this page; null if absent or not creatable. A non-null default is active and has canCreateSession=true. */
|
|
@@ -757,6 +775,8 @@ export interface components {
|
|
|
757
775
|
sessionId: string;
|
|
758
776
|
/** @enum {unknown} */
|
|
759
777
|
type: "create_session" | "submit_input" | "cancel" | "action_response" | "close" | "archive" | "delete" | "task_cancel";
|
|
778
|
+
/** @description Task that a task_cancel operation targets. */
|
|
779
|
+
taskId?: string;
|
|
760
780
|
/** @enum {unknown} */
|
|
761
781
|
status: "pending" | "running" | "completed" | "failed" | "cancelled" | "recovery_blocked";
|
|
762
782
|
/** @enum {unknown} */
|
|
@@ -765,10 +785,10 @@ export interface components {
|
|
|
765
785
|
deliveryState: "pending" | "leased" | "confirmed" | "blocked";
|
|
766
786
|
receiptId?: string;
|
|
767
787
|
actionResolution?: components["schemas"]["WebShellActionResolution"];
|
|
768
|
-
/** @description Reason a durable response or task cancellation failed. Action response failures come from the original committed Action, or a definitive invalid response. Workspace close recovery_blocked reports original resource identity or unsettled execution; the Session remains closing. */
|
|
788
|
+
/** @description Reason a durable response or task cancellation failed. Action response failures come from the original committed Action, or a definitive invalid response. Task cancel failures are task_already_settled (the run ended before the stop request was recorded), task_action_unavailable and task_not_found; a recovery_blocked task cancel reports task_cancel_unconfirmed. Workspace close recovery_blocked reports original resource identity or unsettled execution; the Session remains closing. */
|
|
769
789
|
failureCode?: string;
|
|
770
790
|
replayed: boolean;
|
|
771
|
-
} & (unknown & unknown & unknown & unknown);
|
|
791
|
+
} & (unknown & unknown & unknown & unknown & unknown);
|
|
772
792
|
WebShellQuestionAction: {
|
|
773
793
|
actionId: string;
|
|
774
794
|
/** Format: uuid */
|
|
@@ -892,7 +912,7 @@ export interface components {
|
|
|
892
912
|
*/
|
|
893
913
|
TaskRuntimeState: "unbound" | "provisioning" | "ready" | "draining" | "lost";
|
|
894
914
|
/**
|
|
895
|
-
* @description Actions the task supports now, the same for every caller. cancel: the cancel route accepts a new command for this task; whether a caller may use it is an authorization check (403 on the cancel route). send_input: reserved for a later capability route. read_output: the task events route returns output events for this task to any caller that can read it. read_output does not change during the task's life, and a task without it produces no output events: its output goes only to Artifacts, so the events route never filters out events that exist.
|
|
915
|
+
* @description Actions the task supports now, the same for every caller. cancel: the cancel route accepts a new command for this task (since 1.40, child_agent tasks in pending, running, waiting or degraded, in an active Session); whether a caller may use it is an authorization check (403 on the cancel route). send_input: reserved for a later capability route. read_output: the task events route returns output events for this task to any caller that can read it. read_output does not change during the task's life, and a task without it produces no output events: its output goes only to Artifacts, so the events route never filters out events that exist.
|
|
896
916
|
* @enum {string}
|
|
897
917
|
*/
|
|
898
918
|
TaskActionCapability: "cancel" | "send_input" | "read_output";
|
|
@@ -981,6 +1001,14 @@ export interface components {
|
|
|
981
1001
|
/** @default 20 */
|
|
982
1002
|
limit?: number;
|
|
983
1003
|
};
|
|
1004
|
+
WebShellTaskCancelRequest: {
|
|
1005
|
+
/** @description Trace correlation only; excluded from the request digest, so a retry with another requestId still replays. A header-safe value (1 to 128 visible ASCII characters) is echoed as X-Request-Id; any other value is replaced by a server-chosen id. */
|
|
1006
|
+
requestId?: string | null;
|
|
1007
|
+
/** Format: uuid */
|
|
1008
|
+
sessionId: string;
|
|
1009
|
+
taskId: string;
|
|
1010
|
+
idempotencyKey: string;
|
|
1011
|
+
};
|
|
984
1012
|
/** @description state_changed, output or artifact. The set is open: a later minor version may add types and optional fields. Clients ignore unknown optional fields and unknown types, while still checkpointing event cursors; strict validation against an older minor response schema is not supported. Existing fields forbidden for a known type cannot be repurposed on that type. */
|
|
985
1013
|
TaskEventType: string;
|
|
986
1014
|
ToolResultPreview: {
|
|
@@ -1097,7 +1125,7 @@ export interface components {
|
|
|
1097
1125
|
"application/json": components["schemas"]["ErrorEnvelope"];
|
|
1098
1126
|
};
|
|
1099
1127
|
};
|
|
1100
|
-
/** @description State, idempotency, or recovery conflict. */
|
|
1128
|
+
/** @description State, idempotency, or recovery conflict. New Workspace-scoped admissions return workspace_unavailable with retryable=false while an offline Workspace migration holds the storage fence; authorized durable replays retain their existing behavior. */
|
|
1101
1129
|
Conflict: {
|
|
1102
1130
|
headers: {
|
|
1103
1131
|
[name: string]: unknown;
|
|
@@ -1530,7 +1558,7 @@ export interface operations {
|
|
|
1530
1558
|
};
|
|
1531
1559
|
400: components["responses"]["BadRequest"];
|
|
1532
1560
|
401: components["responses"]["Unauthorized"];
|
|
1533
|
-
/** @description Responding requires the Session
|
|
1561
|
+
/** @description Responding requires the Session's recorded owner or a Workspace OPERATOR (action_forbidden). An unbound Session with no recorded creator and no recorded create command (anonymous open-mode creation, or an unbound Session created before the V40 migration that also has no Workspace creation record) answers to any caller in its tenant, matching its read ACL; a bound Session with no recorded owner answers through the create-command actor recorded for it, or through the Workspace role arm. The tenant filter's 403 actor_scope_mismatch also applies on this route. */
|
|
1534
1562
|
403: components["responses"]["Forbidden"];
|
|
1535
1563
|
/** @description Unknown or unreadable Session (session_not_found), or unknown Action (action_not_found). */
|
|
1536
1564
|
404: components["responses"]["NotFound"];
|
|
@@ -1746,6 +1774,37 @@ export interface operations {
|
|
|
1746
1774
|
413: components["responses"]["PayloadTooLarge"];
|
|
1747
1775
|
};
|
|
1748
1776
|
};
|
|
1777
|
+
cancelWebShellTask: {
|
|
1778
|
+
parameters: {
|
|
1779
|
+
query?: never;
|
|
1780
|
+
header?: never;
|
|
1781
|
+
path?: never;
|
|
1782
|
+
cookie?: never;
|
|
1783
|
+
};
|
|
1784
|
+
requestBody: {
|
|
1785
|
+
content: {
|
|
1786
|
+
"application/json": components["schemas"]["WebShellTaskCancelRequest"];
|
|
1787
|
+
};
|
|
1788
|
+
};
|
|
1789
|
+
responses: {
|
|
1790
|
+
/** @description Same authorized task cancellation semantics as the public API: key validation, current access, idempotent replay, then new-request capability, Session, task and storage-migration checks (409 workspace_unavailable under a migration fence). Replay returns the same operation and latest durable state. 202 is durable admission, completed is authority acceptance, and neither proves physical stop. Admission requires no other open operation on the Session (409 session_operation_active), as on the lifecycle routes. A requestId in the body becomes the response's X-Request-Id and stays out of the request digest. */
|
|
1791
|
+
202: {
|
|
1792
|
+
headers: {
|
|
1793
|
+
"X-Request-Id": components["headers"]["RequestId"];
|
|
1794
|
+
[name: string]: unknown;
|
|
1795
|
+
};
|
|
1796
|
+
content: {
|
|
1797
|
+
"application/json": components["schemas"]["WebShellCommandOperation"];
|
|
1798
|
+
};
|
|
1799
|
+
};
|
|
1800
|
+
400: components["responses"]["BadRequest"];
|
|
1801
|
+
401: components["responses"]["Unauthorized"];
|
|
1802
|
+
403: components["responses"]["Forbidden"];
|
|
1803
|
+
404: components["responses"]["NotFound"];
|
|
1804
|
+
409: components["responses"]["Conflict"];
|
|
1805
|
+
413: components["responses"]["PayloadTooLarge"];
|
|
1806
|
+
};
|
|
1807
|
+
};
|
|
1749
1808
|
getWebShellToolResult: {
|
|
1750
1809
|
parameters: {
|
|
1751
1810
|
query?: never;
|
|
@@ -58,6 +58,8 @@ export declare class JavaManagedAgentClient {
|
|
|
58
58
|
cancelTurn(request: Schemas['WebShellCancelRequest'], signal?: AbortSignal): Promise<JavaAgentCommandAdmission>;
|
|
59
59
|
queryActions(request: Schemas['WebShellActionQueryRequest'], signal?: AbortSignal): Promise<JavaAgentActionPage>;
|
|
60
60
|
respondAction(request: Schemas['WebShellActionRespondRequest'], signal?: AbortSignal): Promise<Schemas['WebShellCommandOperation']>;
|
|
61
|
+
/** Reads an operation's latest durable status; polling is not a replay. */
|
|
62
|
+
queryOperation(request: Schemas['WebShellOperationRequest'], signal?: AbortSignal): Promise<Schemas['WebShellOperation']>;
|
|
61
63
|
getToolResult(sessionId: string, itemId: string, signal?: AbortSignal): Promise<{
|
|
62
64
|
result: components["schemas"]["PublicToolResult"];
|
|
63
65
|
access: components["schemas"]["ArtifactAccess"];
|
|
@@ -12,11 +12,12 @@ export interface ManagedActionsState {
|
|
|
12
12
|
/** Sending an answer failed; the approval is shown again. */
|
|
13
13
|
answerError?: unknown;
|
|
14
14
|
/**
|
|
15
|
-
* The service refused an answer
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
15
|
+
* The service refused an answer under the owner-or-Workspace-operator
|
|
16
|
+
* rule. That refusal is a fact about the viewer's Workspace role row,
|
|
17
|
+
* which an operator can raise while the page stays open, so the latch
|
|
18
|
+
* covers every later approval the same Session raises and survives
|
|
19
|
+
* leaving that Session and coming back — but `retry()` drops it and
|
|
20
|
+
* re-probes instead of treating one 403 as permanent for the mount.
|
|
20
21
|
*/
|
|
21
22
|
respondForbidden: boolean;
|
|
22
23
|
respond(actionId: string, optionId: string): Promise<void>;
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { type WebShellAssistantFeedbackRating, type WebShellAssistantTurnFooterRenderInfo, type WebShellSource } from '../../customization';
|
|
2
|
-
import type { DaemonSessionGenerationEvent } from '@qwen-code/sdk/daemon';
|
|
2
|
+
import type { DaemonSessionGenerationEvent, QwenAgentMessageMeta } from '@qwen-code/sdk/daemon';
|
|
3
3
|
import type { DaemonMessageAuthor } from '../../adapters/messageTypes';
|
|
4
4
|
interface AssistantMessageProps {
|
|
5
5
|
content: string;
|
|
6
6
|
author?: DaemonMessageAuthor;
|
|
7
|
+
/** A workspace agent's reply: its run status, error, steps and tokens. */
|
|
8
|
+
agentMessage?: QwenAgentMessageMeta;
|
|
7
9
|
isStreaming?: boolean;
|
|
8
10
|
timestamp?: number;
|
|
9
11
|
onBranchSession?: () => void | Promise<void>;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { DaemonInputAnnotation } from '@qwen-code/sdk/daemon';
|
|
2
2
|
import type { ComposerTagClickHandler, ComposerTagRenderer, WebShellComposerTag, WebShellComposerTagIconMap } from '../../customization';
|
|
3
|
-
import type { AttachmentPreviewRequest } from '../../adapters/messageTypes';
|
|
3
|
+
import type { AttachmentPreviewRequest, DaemonMessageAuthor } from '../../adapters/messageTypes';
|
|
4
4
|
import type { ImageTabSource } from '../artifacts/ArtifactPanel';
|
|
5
5
|
interface UserMessageImage {
|
|
6
6
|
data: string;
|
|
@@ -32,6 +32,8 @@ interface UserMessageProps {
|
|
|
32
32
|
/** Click an uploaded image to preview it in the right panel. */
|
|
33
33
|
onImagePreview?: (src: string, alt?: string, source?: ImageTabSource) => void;
|
|
34
34
|
onAttachmentPreview?: (file: AttachmentPreviewRequest) => void;
|
|
35
|
+
/** Set when a workspace agent, not the user, posted this message. */
|
|
36
|
+
author?: DaemonMessageAuthor;
|
|
35
37
|
}
|
|
36
38
|
export declare const UserMessage: import("react").NamedExoticComponent<UserMessageProps>;
|
|
37
39
|
export declare function ReadonlyComposerTag({ tag, composerTagIcons, renderComposerTag, renderComposerTagTooltip, onComposerTagClick, title, preserveCustomKindLabel, }: {
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Qwen Team
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import type { QwenAgentMessageMeta, SessionAgentStep } from '@qwen-code/sdk/daemon';
|
|
7
|
+
/** True when an agent's text shows nothing: render it as no text at all. */
|
|
8
|
+
export declare function isBlankAgentText(text: string): boolean;
|
|
9
|
+
/**
|
|
10
|
+
* One line per tool call an agent made, like a CI job's step list. Shared by
|
|
11
|
+
* the live run card and the finished reply, so a run reads the same before
|
|
12
|
+
* and after its record lands.
|
|
13
|
+
*
|
|
14
|
+
* Renders in exported transcripts: only `agentMessage.*` strings (i18n.tsx),
|
|
15
|
+
* never the collaboration dictionary.
|
|
16
|
+
*/
|
|
17
|
+
export declare function AgentStepList({ steps, label, settled, }: {
|
|
18
|
+
steps: readonly SessionAgentStep[];
|
|
19
|
+
label?: string;
|
|
20
|
+
/**
|
|
21
|
+
* The run has ended (completed, failed, stopped, offline). A step still
|
|
22
|
+
* marked running then never finished; show it as stopped, not spinning.
|
|
23
|
+
*/
|
|
24
|
+
settled?: boolean;
|
|
25
|
+
}): import("react/jsx-runtime").JSX.Element | null;
|
|
26
|
+
/** "1,234 tokens", or nothing when the run reported no usage. */
|
|
27
|
+
export declare function AgentTokenUsage({ totalTokens }: {
|
|
28
|
+
totalTokens?: number;
|
|
29
|
+
}): import("react/jsx-runtime").JSX.Element | null;
|
|
30
|
+
/**
|
|
31
|
+
* Status, error, steps and token usage of a finished agent reply. A completed
|
|
32
|
+
* run shows no status word: its text is the result.
|
|
33
|
+
*/
|
|
34
|
+
export declare function AgentMessageDetails({ meta }: {
|
|
35
|
+
meta: QwenAgentMessageMeta;
|
|
36
|
+
}): import("react/jsx-runtime").JSX.Element | null;
|