@qwen-code/web-shell 0.24.5 → 0.24.6-nightly.20260926.d6f414190a

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 (31) hide show
  1. package/README.md +10 -0
  2. package/dist/daemon-react-sdk.js +1 -1
  3. package/dist/index.js +46276 -44971
  4. package/dist/sw.js +1 -1
  5. package/dist/{toolNames-DIL221YO.js → toolNames-B0FO3NVV.js} +1726 -1531
  6. package/dist/transcript.js +6136 -6222
  7. package/dist/types/App.d.ts +4 -1
  8. package/dist/types/ManagedAgentWebShell.d.ts +17 -0
  9. package/dist/types/components/ChatEditor.d.ts +1 -0
  10. package/dist/types/components/composer/AddMenu.d.ts +5 -1
  11. package/dist/types/components/dialogs/DeleteSessionDialog.d.ts +9 -1
  12. package/dist/types/components/managed/ManagedSessionProgress.d.ts +6 -0
  13. package/dist/types/components/managed/ManagedSessionsPage.d.ts +7 -0
  14. package/dist/types/components/managed/java-managed-agent-client.d.ts +140 -0
  15. package/dist/types/components/managed/java-managed-agent-event-projector.d.ts +5 -0
  16. package/dist/types/components/managed/java-managed-agent-provider.d.ts +8 -0
  17. package/dist/types/components/managed/managed-agent-provider.d.ts +77 -0
  18. package/dist/types/components/managed/managed-session-messages.d.ts +4 -0
  19. package/dist/types/components/managed/managed-session-storage.d.ts +7 -0
  20. package/dist/types/components/managed/use-managed-session.d.ts +12 -0
  21. package/dist/types/components/messages/LinkifiedText.d.ts +1 -1
  22. package/dist/types/components/messages/toolFormatting.d.ts +3 -0
  23. package/dist/types/components/sidebar/UpdateControl.d.ts +10 -0
  24. package/dist/types/components/sidebar/WebShellSidebar.d.ts +13 -4
  25. package/dist/types/daemon/session/actions.d.ts +1 -1
  26. package/dist/types/daemon/session/types.d.ts +3 -1
  27. package/dist/types/index.d.ts +4 -0
  28. package/dist/types/settings/messages.d.ts +16 -0
  29. package/dist/types/settings/messages.transcript-stub.d.ts +12 -0
  30. package/dist/types/settings.d.ts +1 -0
  31. package/package.json +1 -1
@@ -7,6 +7,7 @@ import { type ComposerToolbarAction } from './components/ChatEditor';
7
7
  import { type ToastTone } from './components/ToastHost';
8
8
  import { type EnvironmentAgentTask } from './components/panels/EnvironmentPanel';
9
9
  import { type ModelDialogModel } from './components/dialogs/ModelDialog';
10
+ import type { ManagedAgentProvider } from './components/managed/managed-agent-provider';
10
11
  import type { PaneHeaderActionsRenderer } from './components/ChatPane';
11
12
  import { type SideTaskListItem } from './components/artifacts/ArtifactPanel';
12
13
  import type { ArtifactFilter, TurnOutputKind, TurnOutputOpenRequest } from './components/artifacts/TurnOutputs';
@@ -111,6 +112,8 @@ export interface WebShellProps {
111
112
  }) => void;
112
113
  /** Called after a new session is created. Session setup waits up to 30 seconds. */
113
114
  onSessionCreated?: (sessionId: string) => Promise<void> | void;
115
+ /** Explicit Managed Agent backend. Omit to keep the daemon provider unchanged. */
116
+ managedAgentProvider?: ManagedAgentProvider;
114
117
  /** Visual theme for the embedded shell. */
115
118
  theme?: WebShellTheme;
116
119
  /** Called when `/theme` changes the web-shell theme. */
@@ -439,4 +442,4 @@ interface SideTaskCatalogState {
439
442
  export declare function mergeSideTaskCatalog(catalog: SideTaskCatalogState, parentSessionId: string, listedItems: SideTaskListItem[], optimisticIds: ReadonlySet<string>): SideTaskCatalogState;
440
443
  export declare function getEnvironmentAgentTasks(messages: readonly Message[], sessionTasks: readonly DaemonSessionTaskWithWorkflowStatus[]): EnvironmentAgentTask[];
441
444
  export declare function mergeAgentTrace(liveAgents: readonly EnvironmentAgentTask[], trace: DaemonAgentTrace | undefined, now?: number): EnvironmentAgentTask[];
442
- export declare function App({ askUserFreeTextLabel, onSessionIdChange, onSessionInfoChange, onSessionCreated, 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, 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;
445
+ 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, 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;
@@ -0,0 +1,17 @@
1
+ import './styles/globals.css';
2
+ import { type CSSProperties } from 'react';
3
+ import { type WebShellBrand } from './brandContext';
4
+ import { type JavaManagedAgentProviderOptions } from './components/managed/java-managed-agent-provider';
5
+ import { type WebShellLanguage } from './i18n';
6
+ import { type WebShellTheme } from './themeContext';
7
+ export interface ManagedAgentWebShellProps extends JavaManagedAgentProviderOptions {
8
+ sessionId?: string;
9
+ onSessionChange?: (sessionId: string | undefined) => void;
10
+ language?: WebShellLanguage;
11
+ theme?: WebShellTheme;
12
+ brand?: WebShellBrand;
13
+ className?: string;
14
+ style?: CSSProperties;
15
+ }
16
+ /** Managed-only 产品入口,不创建 daemon workspace/session context。 */
17
+ export declare function ManagedAgentWebShell(props: ManagedAgentWebShellProps): import("react/jsx-runtime").JSX.Element;
@@ -15,6 +15,7 @@ interface ChatEditorProps {
15
15
  onSubmit: (text: string, images?: import('../adapters/promptTypes').PromptImage[], files?: import('../adapters/promptTypes').PromptFile[], commitAccepted?: import('../hooks/useComposerCore').ComposerSubmitCommit, metadata?: ComposerSubmitMetadata) => boolean | void;
16
16
  onInputTextChange?: (text: string) => void;
17
17
  onAttachmentsChange?: (hasAttachments: boolean) => void;
18
+ btwEnabled?: boolean;
18
19
  onCycleMode?: () => void;
19
20
  cycleModeOnTab?: boolean;
20
21
  onToggleShortcuts?: () => void;
@@ -23,6 +23,10 @@ export interface AddMenuProps {
23
23
  * Omitted when the host has not enabled Plan.
24
24
  */
25
25
  plan?: AddMenuPlanControl;
26
+ btw?: {
27
+ onSelect: () => void;
28
+ disabledReason?: string;
29
+ };
26
30
  mobileActions?: {
27
31
  commands: readonly CommandInfo[];
28
32
  categoryOrder?: CommandDisplayCategoryOrder;
@@ -39,4 +43,4 @@ export interface AddMenuPlanControl {
39
43
  disabled?: boolean;
40
44
  onToggle: () => void;
41
45
  }
42
- export declare function AddMenu({ disabled, availabilityKey, addFileAvailable, uploadAvailable, onAddFiles, onFilePickerCancel, onInsertReference, onPrependSkill, getWorkspaceActions, skills, onSkillsOpenChange, skillsLoading, skillsLoadError, skillsLoaded, plan, mobileActions, commandsOnly, }: AddMenuProps): import("react/jsx-runtime").JSX.Element;
46
+ export declare function AddMenu({ disabled, availabilityKey, addFileAvailable, uploadAvailable, onAddFiles, onFilePickerCancel, onInsertReference, onPrependSkill, getWorkspaceActions, skills, onSkillsOpenChange, skillsLoading, skillsLoadError, skillsLoaded, plan, btw, mobileActions, commandsOnly, }: AddMenuProps): import("react/jsx-runtime").JSX.Element;
@@ -1,5 +1,13 @@
1
1
  interface DeleteSessionDialogProps {
2
- onDeleted: (sessionIds: string[]) => void;
2
+ /**
3
+ * `attachedSessionId` is the session this client was attached to when the
4
+ * delete was confirmed. The daemon publishes the terminal `session_closed`
5
+ * frame before it answers the delete request, so by the time this fires the
6
+ * caller can no longer read the attachment off the connection (#12619).
7
+ */
8
+ onDeleted: (sessionIds: string[], meta?: {
9
+ attachedSessionId?: string;
10
+ }) => void;
3
11
  onError: (error: unknown) => void;
4
12
  onClose: () => void;
5
13
  workspaceCwd?: string;
@@ -0,0 +1,6 @@
1
+ import type { ManagedAgentSessionSummary } from './managed-agent-provider';
2
+ export declare function ManagedSessionProgress({ summary, submitting, loading, }: {
3
+ summary?: ManagedAgentSessionSummary;
4
+ submitting: boolean;
5
+ loading: boolean;
6
+ }): import("react/jsx-runtime").JSX.Element | null;
@@ -0,0 +1,7 @@
1
+ import type { ManagedAgentProvider } from './managed-agent-provider';
2
+ export declare function ManagedSessionsPage({ sessionId, onSelectSession, workspaceCwd, managedAgentProvider, }: {
3
+ sessionId?: string;
4
+ onSelectSession: (sessionId: string | undefined) => void;
5
+ workspaceCwd?: string;
6
+ managedAgentProvider?: ManagedAgentProvider;
7
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,140 @@
1
+ export type JavaAgentDate = number | string;
2
+ export interface JavaAgentTurn {
3
+ turnId: string;
4
+ sessionId: string;
5
+ status: string;
6
+ submittedAt: JavaAgentDate;
7
+ completedAt?: JavaAgentDate;
8
+ errorCode?: string;
9
+ usage?: Record<string, unknown>;
10
+ }
11
+ export interface JavaAgentEnvironment {
12
+ environmentId?: string;
13
+ state?: string;
14
+ errorCode?: string;
15
+ }
16
+ export interface JavaAgentSession {
17
+ sessionId: string;
18
+ title?: string;
19
+ agentId?: string;
20
+ status: string;
21
+ createdAt: JavaAgentDate;
22
+ updatedAt: JavaAgentDate;
23
+ activeTurn?: JavaAgentTurn;
24
+ environment?: JavaAgentEnvironment;
25
+ lastSequence: number;
26
+ }
27
+ export interface JavaAgentEvent {
28
+ sequence: number;
29
+ eventId: string;
30
+ sessionId: string;
31
+ turnId: string;
32
+ itemId?: string;
33
+ type: string;
34
+ createdAt: JavaAgentDate;
35
+ data?: Record<string, unknown>;
36
+ terminal: boolean;
37
+ }
38
+ export interface JavaAgentContentPart {
39
+ partId: string;
40
+ type: 'input_text' | 'output_text' | 'reasoning' | string;
41
+ text: string;
42
+ firstSequence: number;
43
+ lastSequence: number;
44
+ }
45
+ export interface JavaAgentItem {
46
+ itemId: string;
47
+ sessionId: string;
48
+ turnId: string;
49
+ type: 'message' | 'tool_call' | string;
50
+ role?: string;
51
+ status: string;
52
+ content: JavaAgentContentPart[];
53
+ attributes: Record<string, unknown>;
54
+ firstSequence: number;
55
+ lastSequence: number;
56
+ createdAt: JavaAgentDate;
57
+ updatedAt: JavaAgentDate;
58
+ }
59
+ export interface JavaAgentCommandAdmission {
60
+ sessionId: string;
61
+ turnId?: string;
62
+ status: string;
63
+ replayed: boolean;
64
+ }
65
+ export interface JavaAgentCursorPage<T> {
66
+ data: T[];
67
+ nextCursor?: string;
68
+ hasMore: boolean;
69
+ }
70
+ export interface JavaAgentTranscript {
71
+ items?: JavaAgentItem[];
72
+ events: JavaAgentEvent[];
73
+ coveredSequence?: number;
74
+ olderCursor?: string;
75
+ hasMore: boolean;
76
+ lastSequence: number;
77
+ }
78
+ export interface JavaManagedAgentClientOptions {
79
+ baseUrl: string;
80
+ getHeaders?: () => HeadersInit | Promise<HeadersInit>;
81
+ credentials?: RequestCredentials;
82
+ fetch?: typeof fetch;
83
+ }
84
+ export declare class JavaManagedAgentHttpError extends Error {
85
+ readonly status: number;
86
+ readonly code: string;
87
+ constructor(status: number, code: string, message: string);
88
+ }
89
+ export declare class JavaManagedAgentClient {
90
+ private readonly options;
91
+ private readonly baseUrl;
92
+ private readonly fetchImpl;
93
+ private readonly credentials;
94
+ constructor(options: JavaManagedAgentClientOptions);
95
+ listSessions(request: {
96
+ cursor?: string;
97
+ limit?: number;
98
+ }, signal?: AbortSignal): Promise<JavaAgentCursorPage<JavaAgentSession>>;
99
+ getSession(sessionId: string, signal?: AbortSignal): Promise<JavaAgentSession>;
100
+ getTranscript(request: {
101
+ sessionId: string;
102
+ cursor?: string;
103
+ limit?: number;
104
+ }, signal?: AbortSignal): Promise<JavaAgentTranscript>;
105
+ createSession(request: {
106
+ requestId: string;
107
+ idempotencyKey: string;
108
+ agentId: string;
109
+ environmentId?: string;
110
+ title?: string;
111
+ input: Array<{
112
+ type: 'text';
113
+ text: string;
114
+ }>;
115
+ metadata?: Record<string, unknown>;
116
+ }, signal?: AbortSignal): Promise<JavaAgentCommandAdmission>;
117
+ submitTurn(request: {
118
+ requestId: string;
119
+ idempotencyKey: string;
120
+ sessionId: string;
121
+ input: Array<{
122
+ type: 'text';
123
+ text: string;
124
+ }>;
125
+ metadata?: Record<string, unknown>;
126
+ }, signal?: AbortSignal): Promise<JavaAgentCommandAdmission>;
127
+ cancelTurn(request: {
128
+ requestId: string;
129
+ idempotencyKey: string;
130
+ sessionId: string;
131
+ turnId: string;
132
+ }, signal?: AbortSignal): Promise<JavaAgentCommandAdmission>;
133
+ streamEvents(request: {
134
+ sessionId: string;
135
+ afterSequence?: number;
136
+ limit?: number;
137
+ }, signal?: AbortSignal): AsyncGenerator<JavaAgentEvent>;
138
+ private post;
139
+ private request;
140
+ }
@@ -0,0 +1,5 @@
1
+ import type { JavaAgentDate, JavaAgentEvent, JavaAgentItem } from './java-managed-agent-client';
2
+ import type { ManagedAgentSessionEvent } from './managed-agent-provider';
3
+ export declare function projectJavaAgentEvent(event: JavaAgentEvent): ManagedAgentSessionEvent | undefined;
4
+ export declare function projectJavaAgentItem(item: JavaAgentItem): ManagedAgentSessionEvent[];
5
+ export declare function toTimestamp(value: JavaAgentDate | undefined): number;
@@ -0,0 +1,8 @@
1
+ import { type JavaManagedAgentClientOptions } from './java-managed-agent-client';
2
+ import type { ManagedAgentProvider } from './managed-agent-provider';
3
+ export interface JavaManagedAgentProviderOptions extends JavaManagedAgentClientOptions {
4
+ agentId?: string;
5
+ environmentId?: string;
6
+ productScope?: string;
7
+ }
8
+ export declare function createJavaManagedAgentProvider(options: JavaManagedAgentProviderOptions): ManagedAgentProvider;
@@ -0,0 +1,77 @@
1
+ export type ManagedAgentSessionPhase = 'admitted' | 'runtime_starting' | 'agent_running' | 'waiting_runtime' | 'tool_running' | 'cancelling' | 'completed' | 'failed' | 'cancelled';
2
+ export type ManagedAgentRuntimeState = 'unknown' | 'starting' | 'ready' | 'failed';
3
+ export interface ManagedAgentSessionSummary {
4
+ sessionId: string;
5
+ activeTurnId?: string;
6
+ title: string;
7
+ workspaceCwd?: string;
8
+ createdAt: number;
9
+ admittedAt: number;
10
+ updatedAt: number;
11
+ phase: ManagedAgentSessionPhase;
12
+ runtimeReady: boolean;
13
+ runtimeState: ManagedAgentRuntimeState;
14
+ capabilities: {
15
+ canSend: boolean;
16
+ canCancel: boolean;
17
+ };
18
+ failure?: {
19
+ code: string;
20
+ message: string;
21
+ };
22
+ }
23
+ export type ManagedAgentSessionEventType = 'accepted' | 'runtime_starting' | 'runtime_ready' | 'runtime_failed' | 'runtime_released' | 'agent_started' | 'assistant_thought' | 'assistant_delta' | 'tool_requested' | 'tool_started' | 'tool_completed' | 'completed' | 'failed' | 'cancelling' | 'cancelled' | 'stream_gap';
24
+ export interface ManagedAgentSessionEvent {
25
+ id: number;
26
+ at: number;
27
+ type: ManagedAgentSessionEventType;
28
+ sessionId: string;
29
+ turnId: string;
30
+ data?: unknown;
31
+ }
32
+ export interface ManagedAgentSessionTranscript {
33
+ events: ManagedAgentSessionEvent[];
34
+ olderCursor?: string;
35
+ lastEventId: number;
36
+ }
37
+ export interface ManagedAgentTurnAdmission {
38
+ sessionId: string;
39
+ turnId: string;
40
+ }
41
+ export interface ManagedAgentRequestOptions {
42
+ clientId: string;
43
+ signal?: AbortSignal;
44
+ }
45
+ export interface ManagedAgentCommandOptions extends ManagedAgentRequestOptions {
46
+ idempotencyKey: string;
47
+ }
48
+ export interface ManagedAgentProvider {
49
+ readonly kind: 'daemon' | 'java';
50
+ readonly storageKey: string;
51
+ readonly canCancel: boolean;
52
+ readonly acceptsWorkspaceCwd: boolean;
53
+ listSessions(options: ManagedAgentRequestOptions & {
54
+ workspaceCwd?: string;
55
+ limit?: number;
56
+ cursor?: string;
57
+ }): Promise<{
58
+ sessions: ManagedAgentSessionSummary[];
59
+ nextCursor?: string;
60
+ }>;
61
+ getSession(sessionId: string, options: ManagedAgentRequestOptions): Promise<ManagedAgentSessionSummary>;
62
+ getTranscript(sessionId: string, options: ManagedAgentRequestOptions & {
63
+ before?: string;
64
+ limit?: number;
65
+ }): Promise<ManagedAgentSessionTranscript>;
66
+ createSession(request: {
67
+ text: string;
68
+ workspaceCwd?: string;
69
+ }, options: ManagedAgentCommandOptions): Promise<ManagedAgentTurnAdmission>;
70
+ submitPrompt(sessionId: string, request: {
71
+ text: string;
72
+ }, options: ManagedAgentCommandOptions): Promise<ManagedAgentTurnAdmission>;
73
+ cancel(sessionId: string, turnId: string, options: ManagedAgentCommandOptions): Promise<void>;
74
+ subscribeEvents(sessionId: string, options: ManagedAgentRequestOptions & {
75
+ lastEventId?: number;
76
+ }): AsyncIterable<ManagedAgentSessionEvent>;
77
+ }
@@ -0,0 +1,4 @@
1
+ import type { Message } from '../../adapters/types';
2
+ import type { ManagedAgentSessionEvent } from './managed-agent-provider';
3
+ export declare function mergeManagedEvents(current: readonly ManagedAgentSessionEvent[], incoming: readonly ManagedAgentSessionEvent[]): ManagedAgentSessionEvent[];
4
+ export declare function managedEventsToMessages(events: readonly ManagedAgentSessionEvent[], truncatedLabel: string): Message[];
@@ -0,0 +1,7 @@
1
+ export declare function managedRequestId(): string;
2
+ export declare function getManagedClientId(baseUrl: string): string;
3
+ export declare function managedSelectionFromUrl(): {
4
+ open: boolean;
5
+ sessionId?: string;
6
+ };
7
+ export declare function saveManagedSelection(open: boolean, sessionId?: string): void;
@@ -0,0 +1,12 @@
1
+ import type { ManagedAgentProvider, ManagedAgentSessionEvent, ManagedAgentSessionSummary } from './managed-agent-provider';
2
+ export declare function useManagedSession(provider: ManagedAgentProvider, clientId: string, sessionId: string | undefined): {
3
+ loadingOlder: boolean;
4
+ loadOlder: () => Promise<void>;
5
+ reload: () => void;
6
+ sessionId?: string;
7
+ summary?: ManagedAgentSessionSummary;
8
+ events: ManagedAgentSessionEvent[];
9
+ olderCursor?: string;
10
+ loading: boolean;
11
+ error?: string;
12
+ };
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Plain-text renderer that turns explicit http(s) URLs into anchors. Mirrors
3
- * MarkdownLink's safety (`isSafeHref`) and desktop-shell routing
3
+ * MarkdownLink's safety (`isSafeHref`) and desktop-host routing
4
4
  * (`useExternalLinkOpener`); text without URLs passes through untouched.
5
5
  */
6
6
  export declare const LinkifiedText: import("react").NamedExoticComponent<{
@@ -20,6 +20,7 @@ export declare function formatToolDisplayName(toolName: string): string;
20
20
  */
21
21
  export declare function localizeToolDisplayName(toolName: string, t: (key: string, vars?: Record<string, string | number>) => string): string;
22
22
  export declare function isAskUserQuestionToolName(toolName: string): boolean;
23
+ export declare function isAdvisorToolName(toolName: string): boolean;
23
24
  export declare function isCompletedAskUserQuestion(tool: ACPToolCall): boolean;
24
25
  export declare function getQuestionAnswerResult(tool: ACPToolCall): {
25
26
  text: string;
@@ -33,6 +34,7 @@ export declare function getToolDescription(tool: ACPToolCall, workspaceCwd?: str
33
34
  export declare function getToolSummaryDescription(tool: ACPToolCall, workspaceCwd?: string): string;
34
35
  export declare function getShellToolSemanticDescription(tool: ACPToolCall): string;
35
36
  export declare function extractText(tool: ACPToolCall): string | null;
37
+ export declare function getAdvisorDisplayText(tool: ACPToolCall): string | null;
36
38
  export declare function getToolResultSummary(tool: ACPToolCall): string;
37
39
  /**
38
40
  * Like every other is*ToolName helper, normalizes case so callers can pass
@@ -61,3 +63,4 @@ export declare function isDefaultAgentType(agentType: string): boolean;
61
63
  export declare function localizeAgentTypeName(agentType: string, t: (key: string, vars?: Record<string, string | number>) => string): string;
62
64
  export declare function getAgentDescription(agent: ACPToolCall): string;
63
65
  export declare function getAgentCurrentToolHint(agent: ACPToolCall, t: (key: string, vars?: Record<string, string | number>) => string): string;
66
+ export declare function extractRawOutputText(rawOutput: unknown): string | null;
@@ -0,0 +1,10 @@
1
+ import type { DaemonClient } from '@qwen-code/sdk/daemon';
2
+ interface UpdateControlProps {
3
+ client: Pick<DaemonClient, 'daemonUpdateStatus' | 'prepareDaemonUpdate' | 'restartDaemonForUpdate'>;
4
+ collapsed: boolean;
5
+ currentVersion: string;
6
+ onError: (error: unknown, fallback: string) => void;
7
+ onRestarted?: (url: string) => void;
8
+ }
9
+ export declare function UpdateControl({ client, collapsed, currentVersion, onError, onRestarted, }: UpdateControlProps): import("react/jsx-runtime").JSX.Element | null;
10
+ export {};
@@ -2,7 +2,7 @@ import { type ReactNode } from 'react';
2
2
  import { type DaemonWorkspaceCapability } from '@qwen-code/sdk/daemon';
3
3
  import { type WebShellTheme } from '../../themeContext';
4
4
  import { type WorkspaceManagementTarget, type WorkspaceOverviewItem } from './workspaceOverviewModel';
5
- export type WebShellSidebarFooterItem = 'settings' | 'version' | 'theme' | 'sessionsOverview' | 'workspacesOverview' | 'splitView' | 'daemonStatus' | 'localFiles' | 'collapse';
5
+ export type WebShellSidebarFooterItem = 'settings' | 'update' | 'version' | 'theme' | 'sessionsOverview' | 'workspacesOverview' | 'splitView' | 'daemonStatus' | 'localFiles' | 'collapse';
6
6
  export interface WebShellSidebarBranding {
7
7
  /** Replace the complete top branding row. */
8
8
  render?: () => ReactNode;
@@ -15,7 +15,7 @@ export interface WebShellSidebarLockedWorkspace {
15
15
  expanded: boolean;
16
16
  }) => ReactNode;
17
17
  }
18
- export type WebShellSidebarPrimaryNavItem = 'newTask' | 'plugins' | 'channels' | 'scheduledTasks' | 'workflows' | 'goals';
18
+ export type WebShellSidebarPrimaryNavItem = 'newTask' | 'plugins' | 'channels' | 'scheduledTasks' | 'workflows' | 'goals' | 'managed';
19
19
  export interface WebShellSidebarPrimaryNavOptions {
20
20
  /** Built-in primary nav entries to show. Defaults to all. */
21
21
  items?: readonly WebShellSidebarPrimaryNavItem[];
@@ -59,6 +59,7 @@ interface WebShellSidebarProps {
59
59
  onOpenSettings: () => void;
60
60
  onOpenPlugins: () => void;
61
61
  onOpenChannels: () => void;
62
+ onOpenManagedSessions?: () => void;
62
63
  onOpenDaemonStatus: () => void;
63
64
  onOpenScheduledTasks: () => void;
64
65
  onOpenWorkflows: () => void;
@@ -79,7 +80,15 @@ interface WebShellSidebarProps {
79
80
  onLoadSession: (sessionId: string, workspaceCwd?: string) => Promise<void> | void;
80
81
  onSelectCurrentSession?: () => void;
81
82
  onSessionRenameConfirmed?: (workspaceCwd: string | undefined, sessionId: string, displayName: string) => void;
82
- onSessionsDeleted?: (sessionIds: string[]) => void;
83
+ /**
84
+ * `attachedSessionId` is the session this client was attached to when the
85
+ * delete was confirmed. The daemon publishes the terminal `session_closed`
86
+ * frame before the delete request resolves, so the attachment is no longer
87
+ * readable off the connection by the time this callback runs (#12619).
88
+ */
89
+ onSessionsDeleted?: (sessionIds: string[], meta?: {
90
+ attachedSessionId?: string;
91
+ }) => void;
83
92
  onError: (error: unknown, fallback: string) => void;
84
93
  theme: WebShellTheme;
85
94
  onThemeChange: (theme: WebShellTheme) => void;
@@ -136,4 +145,4 @@ interface WebShellSidebarProps {
136
145
  onLoadStandaloneSession?: (sessionId: string) => Promise<void> | void;
137
146
  onStandaloneNotice?: (message: string) => void;
138
147
  }
139
- export declare function WebShellSidebar({ collapsed, onCollapsedChange, onOpenSettings, onOpenPlugins, onOpenChannels, onOpenDaemonStatus, onOpenScheduledTasks, onOpenWorkflows, onOpenGoals, onOpenSessions, canOpenSessionsOverview, onOpenWorkspacesOverview, onOpenSplitView, canOpenSplitView, onNewSession, onNewStandaloneSession, onLoadSession, onSelectCurrentSession, onSessionRenameConfirmed, onSessionsDeleted, onError, theme, onThemeChange, mobileOpen, onMobileClose, selectedWorkspaceCwd, onSelectWorkspace, onOpenGitDiff, onOpenCommit, onOpenAddWorkspace, workspaces: providedWorkspaces, lockedWorkspaceCwd, lockedWorkspace: lockedWorkspaceOptions, branding, primaryNav: primaryNavOptions, showSessionSourceSwitch, showLive, hideProjectHeader, sessionActions: sessionActionsOptions, footer, workspaceOverview, onOpenWorkspaceManagement, onNewWorktreeSession, projectFeaturesEnabled, onLoadStandaloneSession, onStandaloneNotice, }: WebShellSidebarProps): import("react/jsx-runtime").JSX.Element;
148
+ export declare function WebShellSidebar({ collapsed, onCollapsedChange, onOpenSettings, onOpenPlugins, onOpenChannels, onOpenManagedSessions, onOpenDaemonStatus, onOpenScheduledTasks, onOpenWorkflows, onOpenGoals, onOpenSessions, canOpenSessionsOverview, onOpenWorkspacesOverview, onOpenSplitView, canOpenSplitView, onNewSession, onNewStandaloneSession, onLoadSession, onSelectCurrentSession, onSessionRenameConfirmed, onSessionsDeleted, onError, theme, onThemeChange, mobileOpen, onMobileClose, selectedWorkspaceCwd, onSelectWorkspace, onOpenGitDiff, onOpenCommit, onOpenAddWorkspace, workspaces: providedWorkspaces, lockedWorkspaceCwd, lockedWorkspace: lockedWorkspaceOptions, branding, primaryNav: primaryNavOptions, showSessionSourceSwitch, showLive, hideProjectHeader, sessionActions: sessionActionsOptions, footer, workspaceOverview, onOpenWorkspaceManagement, onNewWorktreeSession, projectFeaturesEnabled, onLoadStandaloneSession, onStandaloneNotice, }: WebShellSidebarProps): import("react/jsx-runtime").JSX.Element;
@@ -78,7 +78,7 @@ export interface CreateDaemonSessionActionsArgs {
78
78
  onPromptRemoved?: (owner: DaemonSessionClient, promptId: string, sessionId?: string) => void;
79
79
  }
80
80
  export declare function getWorkspaceModelsAfterSessionClear(current: DaemonConnectionState): DaemonConnectionState['models'];
81
- export declare function getConnectionAfterSessionClear(current: DaemonConnectionState, clearedSessionId: string | undefined, preserveWorkspaceMetadata?: boolean): DaemonConnectionState;
81
+ export declare function getConnectionAfterSessionClear(current: DaemonConnectionState, clearedSessionId: string | undefined, preserveWorkspaceMetadata?: boolean, dropSessionContext?: boolean): DaemonConnectionState;
82
82
  export declare function advanceSessionRecoveryGeneration(generations: WeakMap<DaemonSessionClient, number>, session: DaemonSessionClient): number;
83
83
  export declare function createDaemonSessionActions({ store, sessionRef, activePromptsRef, settledPromptsRef, pendingSessionLoadRef, pendingSessionLoadIdRef, sessionConfigGeneration, sessionRecoveryGeneration, heartbeatSupportedRef, manualSessionClearRef, skipNextCleanupDetachSessionRef, passiveAssistantDoneTimerRef, daemonActivePromptRef, settleRestoredActivePrompt, flushTranscript, getCreateSessionRequest, createDetachedSession, createDetachedStandaloneSession, getDefaultSessionContext, getConnection, getEventDetailMode, hasSessionActivePrompt, resetCurrentSessionActivePrompt, restartEventStream, addNotice, setConnection, setPromptStatus, setRestoreSessionId, setRestoreSessionContext, setRestoreMode, setRestoreSessionNonce, setAttachSessionNonce, setNewSessionNonce, clearLiveJournalRepair, onPromptAdmitted, onContinuationAdmitted, onPromptRemoved, }: CreateDaemonSessionActionsArgs): DaemonSessionActions;
84
84
  /**
@@ -419,7 +419,9 @@ export interface DaemonSessionActions {
419
419
  };
420
420
  }): Promise<DaemonSession>;
421
421
  attachSession(): Promise<void>;
422
- clearSession(): Promise<void>;
422
+ clearSession(options?: {
423
+ dropSessionContext?: boolean;
424
+ }): Promise<void>;
423
425
  newSession(): Promise<void>;
424
426
  releaseSession(sessionId: string): Promise<void>;
425
427
  closeSession(): Promise<void>;
@@ -7,6 +7,10 @@ export { WebShellTranscript } from './components/WebShellTranscript';
7
7
  export type { WebShellTranscriptProps } from './components/WebShellTranscript';
8
8
  export * from './daemon-react-sdk';
9
9
  export type { WebShellBrowserNotificationsOptions } from './browser-turn-notifications';
10
+ export { JavaManagedAgentClient, JavaManagedAgentHttpError, type JavaAgentCommandAdmission, type JavaAgentEnvironment, type JavaAgentEvent, type JavaAgentSession, type JavaAgentTranscript, type JavaAgentTurn, type JavaManagedAgentClientOptions, } from './components/managed/java-managed-agent-client';
11
+ export { createJavaManagedAgentProvider, type JavaManagedAgentProviderOptions, } from './components/managed/java-managed-agent-provider';
12
+ export { ManagedAgentWebShell, type ManagedAgentWebShellProps, } from './ManagedAgentWebShell';
13
+ export { type ManagedAgentCommandOptions, type ManagedAgentProvider, type ManagedAgentRequestOptions, type ManagedAgentRuntimeState, type ManagedAgentSessionEvent, type ManagedAgentSessionEventType, type ManagedAgentSessionPhase, type ManagedAgentSessionSummary, type ManagedAgentSessionTranscript, type ManagedAgentTurnAdmission, } from './components/managed/managed-agent-provider';
10
14
  export interface WebShellWithProvidersProps extends WebShellProps {
11
15
  /**
12
16
  * Opt in to URL routing. Explicit initial session target props override the
@@ -0,0 +1,16 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Qwen
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ /**
7
+ * Settings panel strings. Kept out of the main dictionary so the read-only
8
+ * transcript build can drop them — an exported transcript never renders the
9
+ * settings panel, yet every reader of an exported file downloads the whole
10
+ * dictionary. `vite.lib.config.ts` resolves this module to
11
+ * `messages.transcript-stub.ts` in `--mode transcript`.
12
+ */
13
+ type SettingsMessage = string | ((vars?: Record<string, string | number>) => string);
14
+ export declare const SETTINGS_MESSAGES_EN: Record<string, SettingsMessage>;
15
+ export declare const SETTINGS_MESSAGES_ZH: Record<string, SettingsMessage>;
16
+ export {};
@@ -0,0 +1,12 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Qwen
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ /**
7
+ * Stands in for `./messages` in the transcript build (`--mode transcript`).
8
+ * The transcript renderer has no settings panel, so its dictionary carries
9
+ * none of those strings.
10
+ */
11
+ export declare const SETTINGS_MESSAGES_EN: {};
12
+ export declare const SETTINGS_MESSAGES_ZH: {};
@@ -26,6 +26,7 @@ declare const SETTING_KEYS: {
26
26
  readonly 'setting:usage-statistics': "privacy.usageStatisticsEnabled";
27
27
  readonly 'setting:fast-model': "fastModel";
28
28
  readonly 'setting:advisor-model': "advisorModel";
29
+ readonly 'setting:advisor-session-call-limit': "advisorMaxUses";
29
30
  readonly 'setting:vision-model': "visionModel";
30
31
  readonly 'setting:model-fallbacks': "modelFallbacks";
31
32
  readonly 'setting:respect-git-ignore': "context.fileFiltering.respectGitIgnore";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@qwen-code/web-shell",
3
- "version": "0.24.5",
3
+ "version": "0.24.6-nightly.20260926.d6f414190a",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/QwenLM/qwen-code.git",