@qwen-code/web-shell 0.25.3 → 0.25.4-preview.0

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 (56) hide show
  1. package/NOTICES.txt +1240 -0
  2. package/README.md +33 -27
  3. package/dist/{PierreFilePreview-CDwdShQj.js → PierreFilePreview-vbxsbBX2.js} +1 -1
  4. package/dist/{SpreadsheetPreview-DrhBxOLb.js → SpreadsheetPreview-yFPFfgME.js} +2 -2
  5. package/dist/{WorkspaceFileBrowser-Cj-IkaDU.js → WorkspaceFileBrowser-DGQbVeSD.js} +656 -656
  6. package/dist/{agents-route-CNZAhyBJ.js → agents-route-D6wGe0cs.js} +2 -2
  7. package/dist/daemon-react-sdk.js +1 -1
  8. package/dist/docx-preview-BucJeYCm.js +5570 -0
  9. package/dist/{index-D0B7Fiw9.js → index-ChD_Ub2E.js} +58969 -56718
  10. package/dist/index.js +3 -3
  11. package/dist/sw.js +1 -1
  12. package/dist/transcript.js +11784 -11135
  13. package/dist/types/App.d.ts +4 -2
  14. package/dist/types/adapters/messageTypes.d.ts +3 -0
  15. package/dist/types/adapters/transcriptToMessages.d.ts +3 -1
  16. package/dist/types/components/ChatEditor.d.ts +5 -0
  17. package/dist/types/components/MessageDeletionToolbar.d.ts +4 -0
  18. package/dist/types/components/MessageItem.d.ts +2 -0
  19. package/dist/types/components/MessageList.d.ts +2 -0
  20. package/dist/types/components/MessageTimestamp.d.ts +5 -2
  21. package/dist/types/components/ModelRefreshControl.d.ts +5 -0
  22. package/dist/types/components/artifacts/CodeReviewArtifactDetail.d.ts +5 -0
  23. package/dist/types/components/artifacts/DocxPreview.d.ts +8 -0
  24. package/dist/types/components/artifacts/TrajectoryExecutions.d.ts +9 -1
  25. package/dist/types/components/artifacts/TrajectoryInspector.d.ts +2 -1
  26. package/dist/types/components/artifacts/artifactUtils.d.ts +7 -0
  27. package/dist/types/components/artifacts/token-usage-messages.d.ts +9 -0
  28. package/dist/types/components/artifacts/token-usage-messages.transcript-stub.d.ts +7 -0
  29. package/dist/types/components/channels/channel-platform.d.ts +1 -1
  30. package/dist/types/components/dialogs/ModelDialog.d.ts +3 -1
  31. package/dist/types/components/managed/generated/managed-agent-api.d.ts +251 -7
  32. package/dist/types/components/managed/java-managed-agent-client.d.ts +10 -0
  33. package/dist/types/components/managed/managed-agent-provider.d.ts +7 -0
  34. package/dist/types/components/managed/managed-pending-storage.d.ts +2 -0
  35. package/dist/types/components/managed/managed-session-messages.d.ts +1 -0
  36. package/dist/types/components/managed/use-managed-file-references.d.ts +19 -0
  37. package/dist/types/components/message-deletion-messages.d.ts +7 -0
  38. package/dist/types/components/message-deletion-messages.transcript-stub.d.ts +7 -0
  39. package/dist/types/components/messages/TasksStatusMessage.d.ts +6 -0
  40. package/dist/types/components/messages/toolFormatting.d.ts +1 -0
  41. package/dist/types/components/messages/tools/ToolDetailsContext.d.ts +13 -0
  42. package/dist/types/customization.d.ts +2 -1
  43. package/dist/types/daemon/session/actions.d.ts +10 -2
  44. package/dist/types/daemon/session/types.d.ts +6 -1
  45. package/dist/types/hooks/useAtMentionSources.d.ts +5 -0
  46. package/dist/types/hooks/useComposerCore.d.ts +2 -0
  47. package/dist/types/hooks/useMessageDeletion.d.ts +33 -0
  48. package/dist/types/hooks/useModelRefresh.d.ts +6 -0
  49. package/dist/types/transcript.d.ts +2 -2
  50. package/dist/types/utils/composerTag.d.ts +1 -0
  51. package/dist/types/utils/dom.d.ts +1 -0
  52. package/dist/types/utils/message-deletion.d.ts +20 -0
  53. package/dist/types/utils/planMode.d.ts +1 -1
  54. package/dist/types/utils/plural.d.ts +7 -0
  55. package/dist/{useDaemonMidTurnInjected-BDFSY1Yl.js → useDaemonMidTurnInjected-CfhBFIym.js} +5686 -5264
  56. package/package.json +3 -1
@@ -20,7 +20,7 @@ import { type ComposerPlaceholderState } from './utils/composerInputState';
20
20
  import type { CommandInfo, Message } from './adapters/types';
21
21
  import { type WebShellBrand, type WebShellResolvedBrand } from './brandContext';
22
22
  import { type WebShellTheme } from './themeContext';
23
- import { type WebShellAssistantFeedbackOptions, type WebShellComposerApi, type WebShellComposerInput, type WebShellMarkdownCustomization, type WebShellSourceIconResolver, type WebShellSourceReference, type ToolHeaderExtraRenderer, type UserMessageContentRenderer, type UserMessageContentParser, type AssistantTurnFooterRenderer, type WebShellArtifactCustomization, type WelcomeHeaderRenderer, type WelcomeFooterRenderer, type ComposerToolbarStartRenderer, type ComposerToolbarEndRenderer, type ComposerToolbarRightRenderer, type ComposerHeaderRenderer, type ComposerFooterRenderer, type ChatHeaderRenderer, type WebShellChatHeaderOptions, type WebShellRightPanelOptions, type WebShellEnvironmentPanelOptions, type FooterRenderer, type LoadingPhrasesResolver, type MarkdownTableMode, type WebShellAtProvider, type WebShellBuiltinAtProvidersConfig, type ComposerTagClickHandler, type ComposerTagRenderer, type WebShellComposerTagIconMap, type WebShellBottomStatusItem, type WebShellPreparedSubmit, type WebShellSubmitSnapshot, type WebShellAssistantTurnSettledEvent, type WebShellSessionArtifactsChange } from './customization';
23
+ import { type WebShellCustomization, type WebShellAssistantFeedbackOptions, type WebShellComposerApi, type WebShellComposerInput, type WebShellMarkdownCustomization, type WebShellSourceIconResolver, type WebShellSourceReference, type ToolHeaderExtraRenderer, type UserMessageContentRenderer, type UserMessageContentParser, type AssistantTurnFooterRenderer, type WebShellArtifactCustomization, type WelcomeHeaderRenderer, type WelcomeFooterRenderer, type ComposerToolbarStartRenderer, type ComposerToolbarEndRenderer, type ComposerToolbarRightRenderer, type ComposerHeaderRenderer, type ComposerFooterRenderer, type ChatHeaderRenderer, type WebShellChatHeaderOptions, type WebShellRightPanelOptions, type WebShellEnvironmentPanelOptions, type FooterRenderer, type LoadingPhrasesResolver, type MarkdownTableMode, type WebShellAtProvider, type WebShellBuiltinAtProvidersConfig, type ComposerTagClickHandler, type ComposerTagRenderer, type WebShellComposerTagIconMap, type WebShellBottomStatusItem, type WebShellPreparedSubmit, type WebShellSubmitSnapshot, type WebShellAssistantTurnSettledEvent, type WebShellSessionArtifactsChange } from './customization';
24
24
  import type { CommandDisplayCategoryOrder } from './utils/commandDisplay';
25
25
  export interface BugReportInfo {
26
26
  title: string;
@@ -98,6 +98,8 @@ export interface WebShellSlashCommand {
98
98
  }
99
99
  export type WebShellSlashCommandHandler = (command: WebShellSlashCommand) => boolean | void;
100
100
  export interface WebShellProps {
101
+ /** Refresh and persist the host catalog before Qwen reloads models. No return data is required. */
102
+ onRefreshModels?: WebShellCustomization['onRefreshModels'];
101
103
  /** Native settings-page presentation. Does not restrict commands or daemon access. */
102
104
  settings?: WebShellSettingsOptions;
103
105
  /** Model add/delete interactions across WebShell. Not a backend permission policy. */
@@ -448,4 +450,4 @@ export declare function canArchiveSideTaskSummary(session: Pick<DaemonSessionSum
448
450
  export declare function mergeSideTaskCatalog(catalog: SideTaskCatalogState, parentSessionId: string, listedItems: SideTaskListItem[], optimisticIds: ReadonlySet<string>): SideTaskCatalogState;
449
451
  export declare function getEnvironmentAgentTasks(messages: readonly Message[], sessionTasks: readonly DaemonSessionTaskWithWorkflowStatus[]): EnvironmentAgentTask[];
450
452
  export declare function mergeAgentTrace(liveAgents: readonly EnvironmentAgentTask[], trace: DaemonAgentTrace | undefined, now?: number): EnvironmentAgentTask[];
451
- export declare function App({ askUserFreeTextLabel, onSessionIdChange, onSessionInfoChange, onSessionCreated, managedAgentProvider, theme: providedTheme, onThemeChange, onThemeResolved, language: providedLanguage, onLanguageChange, onLanguageResolved, brand: providedBrand, onBrandResolved, className: externalClassName, style: externalStyle, shadowDom, onConnectionChange, onStreamingStateChange, onError, onBugReport, hiddenSlashCommands, slashCommandCategoryOrder, onSlashCommand, builtinAtProviders, atProviders, composerTagIcons, fileUploadEnabled, fileUploadDirectory, artifact, fileDropAction, renderToolHeaderExtra, renderWelcomeHeader, renderWelcomeFooter, mobileWelcomeFooterMiddle, parseUserMessageContent, renderUserMessageContent, renderComposerTag, renderComposerTagTooltip, onComposerTagClick, renderAssistantTurnFooter, assistantFeedback, getAssistantSourcesIcon, sourceReferences, renderComposerToolbarStart, renderComposerToolbarEnd, renderComposerToolbarRight, renderComposerHeader, renderComposerFooter, renderChatHeader, renderFooter, bottomStatusItems, chatMaxWidth, sidebar, settings: settingsPresentation, modelManagement, header, rightPanel, showToolCalls, environmentPanel, splitSessionIds: externalSplitSessionIds, onSplitSessionIdsChange, renderPaneHeaderActions, onRightPanelOpen, onFileReviewOpen, onWorkspaceFileOpen, onInsightReportOpen, onContextUsageOpen, messageTurnOutputs, filterArtifact, shellRef, composerToolbarActions, allowedApprovalModes: allowedApprovalModesProp, mainModelFilter, compactComposerOverlays, autoSubmitSlashCommands, additionalSlashCommands, contextUsageAlwaysVisible, userMessageEditing, onUserMessageEditRequest, cycleModeOnTab, sessionSourceType, composerToolbarAdditionalActions, composerPlaceholders, compactThinking, hostOwnsEditDiffPreview, collapseCompletedTurns, markdownTableMode, virtualScrollThreshold, conversationSearchThreshold, markdown, loadingPhrases, onAgentTasksChange, onTranscriptChange, onSessionArtifactsChange, onToast, composerRef, onComposerReady, composerInput, composerInputVersion, onSessionChange, onAssistantTurnSettled, prepareSubmit, onSubmitBefore, restartSseOnPrompt, historyPageSize, initialSelectedWorkspaceCwd, lockedWorkspaceCwd, lockedWorkspaceCapability, }?: AppProps): import("react/jsx-runtime").JSX.Element;
453
+ export declare function App({ onRefreshModels, askUserFreeTextLabel, onSessionIdChange, onSessionInfoChange, onSessionCreated, managedAgentProvider, theme: providedTheme, onThemeChange, onThemeResolved, language: providedLanguage, onLanguageChange, onLanguageResolved, brand: providedBrand, onBrandResolved, className: externalClassName, style: externalStyle, shadowDom, onConnectionChange, onStreamingStateChange, onError, onBugReport, hiddenSlashCommands, slashCommandCategoryOrder, onSlashCommand, builtinAtProviders, atProviders, composerTagIcons, fileUploadEnabled, fileUploadDirectory, artifact, fileDropAction, renderToolHeaderExtra, renderWelcomeHeader, renderWelcomeFooter, mobileWelcomeFooterMiddle, parseUserMessageContent, renderUserMessageContent, renderComposerTag, renderComposerTagTooltip, onComposerTagClick, renderAssistantTurnFooter, assistantFeedback, getAssistantSourcesIcon, sourceReferences, renderComposerToolbarStart, renderComposerToolbarEnd, renderComposerToolbarRight, renderComposerHeader, renderComposerFooter, renderChatHeader, renderFooter, bottomStatusItems, chatMaxWidth, sidebar, settings: settingsPresentation, modelManagement, header, rightPanel, showToolCalls, environmentPanel, splitSessionIds: externalSplitSessionIds, onSplitSessionIdsChange, renderPaneHeaderActions, onRightPanelOpen, onFileReviewOpen, onWorkspaceFileOpen, onInsightReportOpen, onContextUsageOpen, messageTurnOutputs, filterArtifact, shellRef, composerToolbarActions, allowedApprovalModes: allowedApprovalModesProp, mainModelFilter, compactComposerOverlays, autoSubmitSlashCommands, additionalSlashCommands, contextUsageAlwaysVisible, userMessageEditing, onUserMessageEditRequest, cycleModeOnTab, sessionSourceType, composerToolbarAdditionalActions, composerPlaceholders, compactThinking, hostOwnsEditDiffPreview, collapseCompletedTurns, markdownTableMode, virtualScrollThreshold, conversationSearchThreshold, markdown, loadingPhrases, onAgentTasksChange, onTranscriptChange, onSessionArtifactsChange, onToast, composerRef, onComposerReady, composerInput, composerInputVersion, onSessionChange, onAssistantTurnSettled, prepareSubmit, onSubmitBefore, restartSseOnPrompt, historyPageSize, initialSelectedWorkspaceCwd, lockedWorkspaceCwd, lockedWorkspaceCapability, }?: AppProps): import("react/jsx-runtime").JSX.Element;
@@ -46,6 +46,7 @@ export interface DaemonMessageToolCall {
46
46
  content?: readonly DaemonMessageToolCallContent[];
47
47
  rawOutput?: unknown;
48
48
  toolResult?: components['schemas']['PublicToolResult'];
49
+ toolDetailsRevision?: number;
49
50
  locations?: DaemonMessageToolCallLocation[];
50
51
  kind?: DaemonMessageToolKind;
51
52
  startTime?: number;
@@ -78,6 +79,8 @@ export interface DaemonMessageAuthor {
78
79
  * cross-cutting field is declared once rather than on each role.
79
80
  */
80
81
  export interface DaemonMessageMeta {
82
+ sourceRecordIds?: string[];
83
+ localCommandId?: string;
81
84
  backgroundTurn?: DaemonBackgroundTurn;
82
85
  /**
83
86
  * Admitted prompt this message belongs to, copied from the daemon-stamped
@@ -3,13 +3,15 @@
3
3
  * Copyright 2025 Qwen Team
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import type { DaemonTranscriptBlock, DaemonToolTranscriptBlock } from '@qwen-code/sdk/daemon';
6
+ import type { DaemonLoopStop, DaemonTranscriptBlock, DaemonToolTranscriptBlock } from '@qwen-code/sdk/daemon';
7
7
  import type { DaemonMessage, DaemonMessageToolCall } from './messageTypes.js';
8
8
  interface TranscriptMessageLabels {
9
9
  promptCancelled?: string;
10
10
  branchSuccess?: (name: string) => string;
11
11
  modelStreamInterrupted?: string;
12
12
  loopDetected?: string;
13
+ /** Text for a loop stop whose cause is known; undefined falls back. */
14
+ loopDetectedFor?: (loop: DaemonLoopStop) => string | undefined;
13
15
  }
14
16
  interface TranscriptMessageOptions {
15
17
  labels?: TranscriptMessageLabels;
@@ -1,4 +1,6 @@
1
+ import { type ModelRefreshState } from './ModelRefreshControl';
1
2
  import type { CommandInfo } from '../adapters/types';
3
+ import type { AtMentionWorkspaceActions } from '../hooks/useAtMentionSources';
2
4
  import type { AttachmentPreviewRequest } from '../adapters/messageTypes';
3
5
  import type { UseDaemonFollowupSuggestionReturn } from '@qwen-code/web-shell/daemon-react-sdk';
4
6
  import type { DaemonSessionGroupPresetColor, DaemonWorkspaceGitStatus, ReasoningSelection } from '@qwen-code/sdk/daemon';
@@ -98,6 +100,7 @@ interface ChatEditorProps {
98
100
  onShowContextUsage?: () => void;
99
101
  onOpenContextUsage?: () => void;
100
102
  contextUsageControls?: ContextUsageControls;
103
+ modelRefresh?: ModelRefreshState;
101
104
  availableModels?: Array<{
102
105
  id: string;
103
106
  label?: string;
@@ -126,6 +129,8 @@ interface ChatEditorProps {
126
129
  disableLegacyHistoryFallback?: boolean;
127
130
  shellModeEnabled?: boolean;
128
131
  workspaceFeaturesEnabled?: boolean;
132
+ fileReferenceActions?: AtMentionWorkspaceActions;
133
+ persistFileReferences?: boolean;
129
134
  attachmentsEnabled?: boolean;
130
135
  onChatWidthModeChange?: (mode: '1000' | 'wide') => void;
131
136
  onFocusFooter?: () => boolean;
@@ -0,0 +1,4 @@
1
+ import type { MessageDeletionControls } from '../hooks/useMessageDeletion';
2
+ export declare function MessageDeletionToolbar({ controls, }: {
3
+ controls: MessageDeletionControls;
4
+ }): import("react/jsx-runtime").JSX.Element | null;
@@ -25,6 +25,8 @@ interface MessageItemProps {
25
25
  * owns the edit lifecycle — then the inline editor stays closed.
26
26
  */
27
27
  onEditUserMessage?: () => boolean | void;
28
+ onDeleteMessage?: () => void;
29
+ deleteMessageDisabled?: boolean;
28
30
  /**
29
31
  * Send the text the user confirmed in the inline editor. Resolves `false`
30
32
  * when the resend was refused or failed; the editor stays open then.
@@ -4,10 +4,12 @@ import type { Message, TurnCollapseHead } from '../adapters/types';
4
4
  import type { PermissionRequest } from '../adapters/types';
5
5
  import { type ParallelAgentDisplayItem } from '../adapters/parallelAgentGrouping';
6
6
  import { type WebShellSource } from '../customization';
7
+ import type { MessageDeletionControls } from '../hooks/useMessageDeletion';
7
8
  import type { SessionContentGenerator } from './messages/AssistantMessage';
8
9
  import { type TurnOutputFileChange, type TurnOutputOpenRequest, type TurnOutputScheduledTask } from './artifacts/TurnOutputs';
9
10
  import type { AttachmentPreviewRequest } from '../adapters/messageTypes';
10
11
  export interface MessageListProps {
12
+ deletion?: MessageDeletionControls;
11
13
  messages: Message[];
12
14
  frozenViewport?: boolean;
13
15
  terminalBackgroundShellTaskIds?: ReadonlySet<string>;
@@ -10,9 +10,12 @@ interface MessageTimestampProps {
10
10
  toolGroupSpacing?: boolean;
11
11
  copyText?: string;
12
12
  copyTitle?: string;
13
- /** When set, render an edit action after the copy button. */
13
+ /** When set, include an edit action in the overflow menu. */
14
14
  onEdit?: () => void;
15
15
  editTitle?: string;
16
+ onDelete?: () => void;
17
+ deleteDisabled?: boolean;
18
+ deleteTitle?: string;
16
19
  /** When set, render an action that opens this turn's tool-call list. */
17
20
  onOpenTurnCalls?: () => void;
18
21
  turnCallsTitle?: string;
@@ -21,7 +24,7 @@ interface MessageTimestampProps {
21
24
  * Wraps a rendered history message and reveals its wall-clock time as a
22
25
  * CSS-only tooltip on hover.
23
26
  */
24
- export declare function MessageTimestamp({ timestamp, hideTimestamp, children, chatMode, toolGroupSpacing, copyText, copyTitle, onEdit, editTitle, onOpenTurnCalls, turnCallsTitle, }: MessageTimestampProps): import("react/jsx-runtime").JSX.Element;
27
+ export declare function MessageTimestamp({ timestamp, hideTimestamp, children, chatMode, toolGroupSpacing, copyText, copyTitle, onEdit, editTitle, onDelete, deleteDisabled, deleteTitle, onOpenTurnCalls, turnCallsTitle, }: MessageTimestampProps): import("react/jsx-runtime").JSX.Element;
25
28
  /**
26
29
  * Local-time clock, dropping the date only for same-day timestamps:
27
30
  * - same day → `HH:mm:ss`
@@ -0,0 +1,5 @@
1
+ import type { useModelRefresh } from '../hooks/useModelRefresh';
2
+ export type ModelRefreshState = ReturnType<typeof useModelRefresh>;
3
+ export declare function ModelRefreshControl({ state }: {
4
+ state?: ModelRefreshState;
5
+ }): import("react/jsx-runtime").JSX.Element | null;
@@ -23,6 +23,11 @@ interface ReviewFinding {
23
23
  /** The executed evidence that settled the verdict, or its `not run` line. */
24
24
  witness?: string;
25
25
  suggestedFix?: string;
26
+ /**
27
+ * The acceptance criterion the suggested fix owes: the test that must go
28
+ * red if the fix is removed.
29
+ */
30
+ fixWitness?: string;
26
31
  category?: string;
27
32
  locations: FindingLocation[];
28
33
  /** Local evidence paths; rendered as workspace images where possible. */
@@ -0,0 +1,8 @@
1
+ import type { ArtifactWorkspaceActions } from './useArtifactWorkspaceTarget';
2
+ export default function DocxPreview({ workspacePath, workspaceActions, data, artifactVersion, downloadName, }: {
3
+ workspacePath: string;
4
+ workspaceActions?: Pick<ArtifactWorkspaceActions, 'readFileBytes' | 'stat'>;
5
+ data?: Blob;
6
+ artifactVersion?: string;
7
+ downloadName?: string;
8
+ }): import("react/jsx-runtime").JSX.Element;
@@ -1,9 +1,17 @@
1
1
  import type { TrajectoryExecutionRow } from '../../trajectory/project-trajectory-executions';
2
- export declare function TrajectoryExecutions({ rows, omitted, incomplete, outsideWindow, selectedKey, onSelect, }: {
2
+ import type { TrajectoryLifecycleProjection } from '../../trajectory/project-trajectory-lifecycle';
3
+ export declare function TrajectoryExecutions({ rows, omitted, incomplete, outsideWindow, selectedKey, onSelect, following, liveStatus, historySnapshot, onPause, onReturnToLatest, canReturn, returning, }: {
3
4
  rows: readonly TrajectoryExecutionRow[];
4
5
  omitted: number;
5
6
  incomplete: boolean;
6
7
  outsideWindow: number;
7
8
  selectedKey?: string;
8
9
  onSelect: (key: string) => void;
10
+ following: boolean;
11
+ liveStatus: TrajectoryLifecycleProjection['status'];
12
+ historySnapshot: object | undefined;
13
+ onPause: () => void;
14
+ onReturnToLatest: () => void;
15
+ canReturn: boolean;
16
+ returning: boolean;
9
17
  }): import("react/jsx-runtime").JSX.Element;
@@ -6,7 +6,7 @@
6
6
  import type { TrajectoryLifecycleEntry } from '../../trajectory/project-trajectory-lifecycle';
7
7
  import type { TrajectoryExecutionRow } from '../../trajectory/project-trajectory-executions';
8
8
  import type { TrajectoryRow } from '../../trajectory/types';
9
- export declare function TrajectoryInspector({ row, lifecycle, execution, onLocateExecution, title, stale, turnSelected, hiddenByRange, hiddenByCollapse, hiddenByFilter, onClearFilter, onReveal, onClearRange, onClose, }: {
9
+ export declare function TrajectoryInspector({ row, lifecycle, execution, onLocateExecution, title, stale, turnSelected, hiddenByRange, hiddenByCollapse, hiddenByFilter, onClearFilter, onReveal, onClearRange, onClose, onFocusedUnmount, }: {
10
10
  row?: TrajectoryRow;
11
11
  lifecycle?: TrajectoryLifecycleEntry;
12
12
  execution?: TrajectoryExecutionRow;
@@ -21,4 +21,5 @@ export declare function TrajectoryInspector({ row, lifecycle, execution, onLocat
21
21
  onReveal: () => void;
22
22
  onClearRange: () => void;
23
23
  onClose: () => void;
24
+ onFocusedUnmount?: () => void;
24
25
  }): import("react/jsx-runtime").JSX.Element;
@@ -3,6 +3,13 @@ import type { DaemonWorkspaceActions } from '@qwen-code/web-shell/daemon-react-s
3
3
  export declare function artifactKindLabel(kind: string, workspacePath?: string): string;
4
4
  export declare function isOfficeDocumentPath(workspacePath?: string): boolean;
5
5
  export declare function isExcelFile(workspacePath?: string, mimeType?: string): boolean;
6
+ export declare const DOCX_MIME_TYPE = "application/vnd.openxmlformats-officedocument.wordprocessingml.document";
7
+ export declare function isDocxFile(workspacePath?: string, mimeType?: string): boolean;
8
+ export declare function isPdfArtifact(artifact: {
9
+ kind?: string;
10
+ workspacePath?: string;
11
+ mimeType?: string;
12
+ }): boolean;
6
13
  export declare function isDownloadOnlyWorkspaceArtifact(artifact: {
7
14
  kind?: string;
8
15
  workspacePath?: string;
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Qwen Team
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ type TokenUsageMessage = string | ((vars?: Record<string, string | number>) => string);
7
+ export declare const TOKEN_USAGE_MESSAGES_EN: Record<string, TokenUsageMessage>;
8
+ export declare const TOKEN_USAGE_MESSAGES_ZH: Record<string, TokenUsageMessage>;
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 TOKEN_USAGE_MESSAGES_EN: {};
7
+ export declare const TOKEN_USAGE_MESSAGES_ZH: {};
@@ -5,5 +5,5 @@
5
5
  */
6
6
  import type { DaemonChannelTypeDescriptor } from '@qwen-code/sdk/daemon';
7
7
  export declare const PLATFORM_MARKS: Record<string, string>;
8
- export declare function isSupportedChannelType(type: unknown): type is 'dingtalk' | 'dws' | 'wecom' | 'feishu' | 'github' | 'gitlab';
8
+ export declare function isSupportedChannelType(type: unknown): type is 'dingtalk' | 'dws' | 'wecom' | 'wecom-callback' | 'feishu' | 'github' | 'gitlab';
9
9
  export declare function isChannelPlatformAvailable(descriptor: DaemonChannelTypeDescriptor): boolean;
@@ -1,5 +1,7 @@
1
+ import { type ModelRefreshState } from '../ModelRefreshControl';
1
2
  export type ModelDialogMode = 'main' | 'fast' | 'voice' | 'vision' | 'advisor' | 'image';
2
3
  interface ModelDialogProps {
4
+ modelRefresh?: ModelRefreshState;
3
5
  mode?: ModelDialogMode;
4
6
  loading?: boolean;
5
7
  error?: Error;
@@ -24,5 +26,5 @@ export interface ModelDialogModel {
24
26
  envKey?: string;
25
27
  isRuntime?: boolean;
26
28
  }
27
- export declare function ModelDialog({ mode, loading, error, onSelect, models, currentModelId, filterModel, }: ModelDialogProps): import("react/jsx-runtime").JSX.Element;
29
+ export declare function ModelDialog({ modelRefresh, mode, loading, error, onSelect, models, currentModelId, filterModel, }: ModelDialogProps): import("react/jsx-runtime").JSX.Element;
28
30
  export {};
@@ -616,6 +616,62 @@ export interface paths {
616
616
  patch?: never;
617
617
  trace?: never;
618
618
  };
619
+ "/api/agent/web-shell/v1/workspaces/files/query": {
620
+ parameters: {
621
+ query?: never;
622
+ header?: never;
623
+ path?: never;
624
+ cookie?: never;
625
+ };
626
+ get?: never;
627
+ put?: never;
628
+ /**
629
+ * Read-only Workspace file query
630
+ * @description Browse directories or search file names within the persisted Workspace working directory. Requires a trusted actor with current OPERATOR or OWNER access to an ACTIVE Workspace, the deployment Workspace-files opt-in, and verified LOCAL or SSH_LOCAL storage. Authorization and binding are rechecked after I/O. Paths are relative to the working directory; host paths and Runtime credentials are never returned. Unsupported storage never falls back to the local daemon, and no Session, worker or model request is created.
631
+ */
632
+ post: operations["webShellWorkspaceFilesQuery"];
633
+ delete?: never;
634
+ options?: never;
635
+ head?: never;
636
+ patch?: never;
637
+ trace?: never;
638
+ };
639
+ "/api/agent/web-shell/v1/workspaces/files/read": {
640
+ parameters: {
641
+ query?: never;
642
+ header?: never;
643
+ path?: never;
644
+ cookie?: never;
645
+ };
646
+ get?: never;
647
+ put?: never;
648
+ /**
649
+ * Read-only Workspace file read
650
+ * @description Read one selection-time snapshot of a nonempty, NUL-free UTF-8 file, at most 24 KiB, using the scope revision returned by query. Requires a trusted actor with current OPERATOR or OWNER access to an ACTIVE Workspace, the deployment Workspace-files opt-in, and verified LOCAL or SSH_LOCAL storage. Authorization and binding are rechecked after I/O. Paths are relative to the working directory; host paths and Runtime credentials are never returned. Unsupported storage never falls back to the local daemon, and no Session, worker or model request is created.
651
+ */
652
+ post: operations["webShellWorkspaceFilesRead"];
653
+ delete?: never;
654
+ options?: never;
655
+ head?: never;
656
+ patch?: never;
657
+ trace?: never;
658
+ };
659
+ "/api/agent/web-shell/v1/tool-details/get": {
660
+ parameters: {
661
+ query?: never;
662
+ header?: never;
663
+ path?: never;
664
+ cookie?: never;
665
+ };
666
+ get?: never;
667
+ put?: never;
668
+ post: operations["getWebShellToolDetails"];
669
+ delete?: never;
670
+ options?: never;
671
+ head?: never;
672
+ patch?: never;
673
+ trace?: never;
674
+ };
619
675
  }
620
676
  export type webhooks = Record<string, never>;
621
677
  export interface components {
@@ -676,7 +732,7 @@ export interface components {
676
732
  environmentId?: string | null;
677
733
  /** @description The server enforces the bound in UTF-16 code units (Java String.length()), so an astral character counts as two: a title this schema's code-point maxLength accepts can still exceed the server's 256-unit bound and answer 400 invalid_title. */
678
734
  title?: string | null;
679
- /** @description Text has a 4,000,000-character aggregate budget and per-block 1,000,000-character cap, counted in code points. Hosted also enforces its 64 KiB durable-record limit and prepared-snapshot ceiling. A complete canonical input containing file/image attachments must fit within 48 KiB and requires input-attachments/1. */
735
+ /** @description Text has a 4,000,000-character aggregate budget and per-block 1,000,000-character cap, counted in code points. Hosted also enforces its 64 KiB durable-record limit for text-only inputs and a 32 MiB prepared-snapshot ceiling. A complete canonical input containing file/image attachments must fit within 8 MiB and requires input-attachments/1. */
680
736
  input?: components["schemas"]["InputBlock"][];
681
737
  metadata?: components["schemas"]["WebShellMetadata"];
682
738
  workspace?: components["schemas"]["WebShellWorkspaceSelection"];
@@ -694,7 +750,7 @@ export interface components {
694
750
  idempotencyKey: string;
695
751
  /** Format: uuid */
696
752
  sessionId: string;
697
- /** @description Text has a 4,000,000-character aggregate budget and per-block 1,000,000-character cap, counted in code points. Hosted also enforces its 64 KiB durable-record limit and prepared-snapshot ceiling. A complete canonical input containing file/image attachments must fit within 48 KiB and requires input-attachments/1. */
753
+ /** @description Text has a 4,000,000-character aggregate budget and per-block 1,000,000-character cap, counted in code points. Hosted also enforces its 64 KiB durable-record limit for text-only inputs and a 32 MiB prepared-snapshot ceiling. A complete canonical input containing file/image attachments must fit within 8 MiB and requires input-attachments/1. */
698
754
  input?: components["schemas"]["InputBlock"][];
699
755
  metadata?: components["schemas"]["WebShellMetadata"];
700
756
  /**
@@ -1041,7 +1097,7 @@ export interface components {
1041
1097
  allowText: boolean;
1042
1098
  options: components["schemas"]["WebShellActionOption"][];
1043
1099
  };
1044
- /** @description Receipt IDs are opaque authorized product handles, not private journal or storage refs. Input completion means a Harness admitted its Turn, not that the Turn completed; an input whose Turn failed after a submission no Harness answered is recovery_blocked until the Session journal proves whether a Harness admitted it. For submit_input and task cancel, recovery_blocked means acceptance is unknown: the operation is never delivered again and settles only from its own durable evidence. For close and delete it is a published wait that delivery re-drives. Cancel completion means its Turn reached cancelled; a cancel fails with turn_already_settled when its Turn ended otherwise. Action completion may only record one vote. Lifecycle completion requires its cleanup facts; archive may remain java_durable because Java is its authority. Task cancel 202 is Java durable admission; completion means the authority durably recorded cancellation and returned a receipt, not that the task stopped. Task cancel failed proves non-acceptance and no further delivery, with a failure code; recovery_blocked means acceptance is unknown and needs reconciliation before re-execution. Its status is never cancelled. Physical settlement and an unknown physical outcome belong to the task, independently of operation acceptance. A completed task cancel carries admission stage harness_confirmed and delivery state confirmed with the authority's receipt; failed and recovery_blocked carry java_durable and blocked, so they are never delivered again without reconciliation. */
1100
+ /** @description Receipt IDs are opaque authorized product handles, not private journal or storage refs. Input completion means a Harness admitted its Turn, not that the Turn completed; an input whose Turn failed after a submission no Harness answered is recovery_blocked until the Session journal proves whether a Harness admitted it. For submit_input and task cancel, recovery_blocked means acceptance is unknown: the operation is never delivered again and settles only from its own durable evidence. For close and delete it is a published wait that delivery re-drives. Cancel completion means its Turn reached cancelled; a cancel fails with turn_already_settled when its Turn ended otherwise, except one that already existed when its Turn failed with managed_runtime_recovery_blocked after a Harness admitted it or a submission was attempted, which parks recovery_blocked with cancel_unconfirmed. A cancel submitted after the Turn ended still fails turn_already_settled. Action completion may only record one vote. Lifecycle completion requires its cleanup facts; archive may remain java_durable because Java is its authority. Task cancel 202 is Java durable admission; completion means the authority durably recorded cancellation and returned a receipt, not that the task stopped. Task cancel failed proves non-acceptance and no further delivery, with a failure code; recovery_blocked means acceptance is unknown and needs reconciliation before re-execution. Its status is never cancelled. Physical settlement and an unknown physical outcome belong to the task, independently of operation acceptance. A completed task cancel carries admission stage harness_confirmed and delivery state confirmed with the authority's receipt; failed and recovery_blocked carry java_durable and blocked, so they are never delivered again without reconciliation. A cancel parked as recovery_blocked/cancel_unconfirmed by unobserved-Turn recovery reconciles only from the original prompt's retained durable terminal event: cancelled completes it, completed or error fails it with turn_already_settled, and missing or unreadable evidence stays parked. A recorded stop request alone does not prove cancellation completed. */
1045
1101
  WebShellCommandOperation: {
1046
1102
  operationId: string;
1047
1103
  /** Format: uuid */
@@ -1058,7 +1114,7 @@ export interface components {
1058
1114
  deliveryState: "pending" | "leased" | "confirmed" | "blocked";
1059
1115
  receiptId?: string;
1060
1116
  actionResolution?: components["schemas"]["WebShellActionResolution"];
1061
- /** @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. A lifecycle operation that exhausted its retry budget fails with the settle's failure: session_lifecycle_delivery_failed, managed_capability_mismatch or hosted_harness_protocol_error when the Hosted Harness refused to negotiate, a workspace close or lifecycle refusal (a workspace_close_* or workspace_lifecycle_* code, or runtime_admission_closed; a Runtime Broker runtime_broker_recovery_blocked refusal is reported as workspace_close_identity_unverified), or another Runtime Broker refusal code; one whose settle reached the Harness but stayed unsettled past the larger settled budget fails with session_close_completion_unsettled. A lifecycle recovery_blocked operation reports the refusal it waits on, original resource identity or unsettled execution for a Workspace close, session_close_writer_live while a Harness holds the journal writer or while that check itself fails, or hosted_harness_generation_mismatch while this replica's view of the Harness boot is stale; the Session remains closing. A submit_input failure carries its Turn's error code, and a recovery_blocked submit_input reports submit_input_unconfirmed; a cancel fails with turn_already_settled when its Turn completed or failed without being cancelled. */
1117
+ /** @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. A lifecycle operation that exhausted its retry budget fails with the settle's failure: session_lifecycle_delivery_failed, managed_capability_mismatch or hosted_harness_protocol_error when the Hosted Harness refused to negotiate, a workspace close or lifecycle refusal (a workspace_close_* or workspace_lifecycle_* code, or runtime_admission_closed; a Runtime Broker runtime_broker_recovery_blocked refusal is reported as workspace_close_identity_unverified), or another Runtime Broker refusal code; one whose settle reached the Harness but stayed unsettled past the larger settled budget fails with session_close_completion_unsettled. A lifecycle recovery_blocked operation reports the refusal it waits on, original resource identity or unsettled execution for a Workspace close, session_close_writer_live while a Harness holds the journal writer or while that check itself fails, or hosted_harness_generation_mismatch while this replica's view of the Harness boot is stale, or hosted_lifecycle_recovery_required while the daemon settles a previous prompt, or hosted_turn_active while a turn, MCP call or hook is still draining; the Session remains closing. A submit_input failure carries its Turn's error code, and a recovery_blocked submit_input reports submit_input_unconfirmed; a cancel fails with turn_already_settled when its Turn completed or failed without being cancelled, except one that already existed when its Turn failed with managed_runtime_recovery_blocked after a Harness admitted it or a submission was attempted: it parks recovery_blocked with cancel_unconfirmed. A cancel submitted after the Turn ended still fails turn_already_settled. A cancel parked as recovery_blocked/cancel_unconfirmed by unobserved-Turn recovery reconciles only from the original prompt's retained durable terminal event: cancelled completes it, completed or error fails it with turn_already_settled, and missing or unreadable evidence stays parked. A recorded stop request alone does not prove cancellation completed. */
1062
1118
  failureCode?: string;
1063
1119
  replayed: boolean;
1064
1120
  } & (unknown & unknown & unknown & unknown & unknown);
@@ -1525,7 +1581,7 @@ export interface components {
1525
1581
  type: "input_text" | "text";
1526
1582
  text: string;
1527
1583
  };
1528
- /** @description Inline UTF-8 text file. No host paths, URLs, binary or NUL. Conservative text MIME/extension validation; the complete canonical input containing attachments is limited to 48 KiB. */
1584
+ /** @description Inline UTF-8 text file. No host paths, URLs, binary or NUL. Conservative text MIME/extension validation; the complete canonical input containing attachments is limited to 8 MiB. */
1529
1585
  InputFileBlock: {
1530
1586
  /** @enum {string} */
1531
1587
  type: "input_file";
@@ -1533,12 +1589,12 @@ export interface components {
1533
1589
  mime_type: string;
1534
1590
  text: string;
1535
1591
  };
1536
- /** @description Canonical base64 image with a matching signature. The complete canonical input containing attachments is limited to 48 KiB. */
1592
+ /** @description Canonical base64 PNG, JPEG, GIF or WebP image with a matching signature. The image/jpg alias is normalized to image/jpeg. The complete canonical input containing attachments is limited to 8 MiB. */
1537
1593
  InputImageBlock: {
1538
1594
  /** @enum {string} */
1539
1595
  type: "input_image";
1540
1596
  /** @enum {string} */
1541
- mime_type: "image/png" | "image/jpeg" | "image/webp";
1597
+ mime_type: "image/png" | "image/jpeg" | "image/jpg" | "image/gif" | "image/webp";
1542
1598
  data: string;
1543
1599
  };
1544
1600
  WebShellSkill: {
@@ -1548,6 +1604,70 @@ export interface components {
1548
1604
  WebShellSessionSkills: {
1549
1605
  skills: components["schemas"]["WebShellSkill"][];
1550
1606
  };
1607
+ WebShellWorkspaceFileQueryRequest: {
1608
+ workspaceId: string;
1609
+ cwdRelative: string;
1610
+ directory: string;
1611
+ query?: string;
1612
+ expectedScopeRevision?: string;
1613
+ };
1614
+ WebShellWorkspaceFileReadRequest: {
1615
+ workspaceId: string;
1616
+ cwdRelative: string;
1617
+ path: string;
1618
+ expectedScopeRevision: string;
1619
+ };
1620
+ WebShellWorkspaceFileEntry: {
1621
+ path: string;
1622
+ name: string;
1623
+ /** @enum {string} */
1624
+ kind: "file" | "directory";
1625
+ };
1626
+ WebShellWorkspaceFilePage: {
1627
+ scopeRevision: string;
1628
+ directory: string;
1629
+ entries: components["schemas"]["WebShellWorkspaceFileEntry"][];
1630
+ truncated: boolean;
1631
+ };
1632
+ WebShellWorkspaceFileSnapshot: {
1633
+ scopeRevision: string;
1634
+ path: string;
1635
+ name: string;
1636
+ /** @enum {string} */
1637
+ mimeType: "text/plain";
1638
+ text: string;
1639
+ byteLength: number;
1640
+ sha256: string;
1641
+ };
1642
+ WebShellToolDetails: {
1643
+ /** @description Allowlisted display arguments, or null when unavailable or larger than 4 KiB. */
1644
+ input: {
1645
+ [key: string]: unknown;
1646
+ } | null;
1647
+ /** @description Recorded text or error, bounded to 8 KiB and 200 lines; null means unavailable, an empty string means recorded empty output. */
1648
+ output: string | null;
1649
+ truncated: boolean;
1650
+ /** @description Validated saved Shell display, when available. Text fields share an 8 KiB/200-line budget; directory and output-file paths share an 8 KiB UTF-8 budget. Legacy text remains in output. */
1651
+ shellResult?: components["schemas"]["WebShellShellResult"];
1652
+ };
1653
+ WebShellShellResult: {
1654
+ /** @constant */
1655
+ type: "shell_result";
1656
+ /** @constant */
1657
+ version: 1;
1658
+ text: string;
1659
+ output: string;
1660
+ directory: string;
1661
+ exitCode: number | null;
1662
+ signal: number | null;
1663
+ pid: number | null;
1664
+ error: string | null;
1665
+ /** @enum {string} */
1666
+ outcome: "completed" | "failed" | "cancelled" | "timed_out";
1667
+ notices: string[];
1668
+ truncated: boolean;
1669
+ outputFiles: string[];
1670
+ };
1551
1671
  };
1552
1672
  responses: {
1553
1673
  /** @description The authenticated actor belongs to another tenant than X-Qwen-Tenant-Id or has an invalid ID (actor_scope_mismatch, which the tenant filter answers on every /v1/agents/ and WebShell route), or the resource is readable but the actor lacks this operation or the original Action responder permission. Artifact content reads may also return artifact_content_forbidden when the actor cannot read the original bytes. */
@@ -2855,4 +2975,128 @@ export interface operations {
2855
2975
  413: components["responses"]["PayloadTooLarge"];
2856
2976
  };
2857
2977
  };
2978
+ webShellWorkspaceFilesQuery: {
2979
+ parameters: {
2980
+ query?: never;
2981
+ header?: never;
2982
+ path?: never;
2983
+ cookie?: never;
2984
+ };
2985
+ requestBody: {
2986
+ content: {
2987
+ "application/json": components["schemas"]["WebShellWorkspaceFileQueryRequest"];
2988
+ };
2989
+ };
2990
+ responses: {
2991
+ /** @description Authorized Workspace file result. */
2992
+ 200: {
2993
+ headers: {
2994
+ [name: string]: unknown;
2995
+ };
2996
+ content: {
2997
+ "application/json": components["schemas"]["WebShellWorkspaceFilePage"];
2998
+ };
2999
+ };
3000
+ 400: components["responses"]["BadRequest"];
3001
+ 401: components["responses"]["Unauthorized"];
3002
+ 403: components["responses"]["Forbidden"];
3003
+ 404: components["responses"]["NotFound"];
3004
+ 409: components["responses"]["Conflict"];
3005
+ 503: components["responses"]["Unavailable"];
3006
+ };
3007
+ };
3008
+ webShellWorkspaceFilesRead: {
3009
+ parameters: {
3010
+ query?: never;
3011
+ header?: never;
3012
+ path?: never;
3013
+ cookie?: never;
3014
+ };
3015
+ requestBody: {
3016
+ content: {
3017
+ "application/json": components["schemas"]["WebShellWorkspaceFileReadRequest"];
3018
+ };
3019
+ };
3020
+ responses: {
3021
+ /** @description Authorized Workspace file result. */
3022
+ 200: {
3023
+ headers: {
3024
+ [name: string]: unknown;
3025
+ };
3026
+ content: {
3027
+ "application/json": components["schemas"]["WebShellWorkspaceFileSnapshot"];
3028
+ };
3029
+ };
3030
+ 400: components["responses"]["BadRequest"];
3031
+ 401: components["responses"]["Unauthorized"];
3032
+ 403: components["responses"]["Forbidden"];
3033
+ 404: components["responses"]["NotFound"];
3034
+ 409: components["responses"]["Conflict"];
3035
+ 503: components["responses"]["Unavailable"];
3036
+ };
3037
+ };
3038
+ getWebShellToolDetails: {
3039
+ parameters: {
3040
+ query?: never;
3041
+ header?: never;
3042
+ path?: never;
3043
+ cookie?: never;
3044
+ };
3045
+ requestBody: {
3046
+ content: {
3047
+ "application/json": components["schemas"]["WebShellToolResultRequest"];
3048
+ };
3049
+ };
3050
+ responses: {
3051
+ /** @description Bounded saved ReadFile/Shell input and text output, read on demand; requires a trusted actor and current Session/Workspace read access. Available to authorized readers without a feature switch. */
3052
+ 200: {
3053
+ headers: {
3054
+ "Cache-Control"?: "private, no-store";
3055
+ [name: string]: unknown;
3056
+ };
3057
+ content: {
3058
+ "application/json": components["schemas"]["WebShellToolDetails"];
3059
+ };
3060
+ };
3061
+ /** @description Invalid request. */
3062
+ 400: {
3063
+ headers: {
3064
+ [name: string]: unknown;
3065
+ };
3066
+ content: {
3067
+ "application/json": components["schemas"]["ErrorEnvelope"];
3068
+ };
3069
+ };
3070
+ /** @description Trusted actor required. */
3071
+ 401: {
3072
+ headers: {
3073
+ [name: string]: unknown;
3074
+ };
3075
+ content: {
3076
+ "application/json": components["schemas"]["ErrorEnvelope"];
3077
+ };
3078
+ };
3079
+ 403: components["responses"]["Forbidden"];
3080
+ /** @description Unknown or unreadable resource. */
3081
+ 404: {
3082
+ headers: {
3083
+ [name: string]: unknown;
3084
+ };
3085
+ content: {
3086
+ "application/json": components["schemas"]["ErrorEnvelope"];
3087
+ };
3088
+ };
3089
+ 409: components["responses"]["Conflict"];
3090
+ 413: components["responses"]["PayloadTooLarge"];
3091
+ /** @description Resource temporarily unavailable. */
3092
+ 503: {
3093
+ headers: {
3094
+ [name: string]: unknown;
3095
+ };
3096
+ content: {
3097
+ "application/json": components["schemas"]["ErrorEnvelope"];
3098
+ };
3099
+ };
3100
+ };
3101
+ };
2858
3102
  }
@@ -80,6 +80,8 @@ export declare class JavaManagedAgentClient {
80
80
  replayed: boolean;
81
81
  }>;
82
82
  createWorkspace(request: Schemas['WebShellWorkspaceCreateRequest'], signal?: AbortSignal): Promise<JavaAgentWorkspace>;
83
+ queryWorkspaceFiles(request: Schemas['WebShellWorkspaceFileQueryRequest'], signal?: AbortSignal): Promise<Schemas['WebShellWorkspaceFilePage']>;
84
+ readWorkspaceFile(request: Schemas['WebShellWorkspaceFileReadRequest'], signal?: AbortSignal): Promise<Schemas['WebShellWorkspaceFileSnapshot']>;
83
85
  workspaceDirectories(request: Schemas['WebShellWorkspaceDirectoryQueryRequest'], signal?: AbortSignal): Promise<Schemas['WebShellWorkspaceDirectoryPage']>;
84
86
  getSessionApproval(sessionId: string, signal?: AbortSignal): Promise<Schemas['WebShellSessionApproval']>;
85
87
  changeApproval(request: Schemas['WebShellChangeApprovalRequest'], signal?: AbortSignal): Promise<Schemas['WebShellApprovalChangeResult']>;
@@ -144,6 +146,14 @@ export declare class JavaManagedAgentClient {
144
146
  modelSelection: components["schemas"]["WebShellModelSelection"];
145
147
  replayed: boolean;
146
148
  }>;
149
+ getToolDetails(sessionId: string, itemId: string, signal?: AbortSignal): Promise<{
150
+ input: {
151
+ [key: string]: unknown;
152
+ } | null;
153
+ output: string | null;
154
+ truncated: boolean;
155
+ shellResult?: components["schemas"]["WebShellShellResult"];
156
+ }>;
147
157
  getToolResult(sessionId: string, itemId: string, signal?: AbortSignal): Promise<{
148
158
  result: components["schemas"]["PublicToolResult"];
149
159
  access: components["schemas"]["ArtifactAccess"];