@qwen-code/web-shell 0.24.1-preview.0 → 0.24.3-nightly.20260921.2800e9bb4f
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/LICENSE +203 -0
- package/README.md +51 -4
- package/dist/daemon-react-sdk.js +1 -1
- package/dist/index.js +54062 -49941
- package/dist/sw.js +1 -1
- package/dist/{toolNames-DgCpmhML.js → toolNames-DQad2xSu.js} +6114 -5488
- package/dist/transcript.js +10297 -9531
- package/dist/types/App.d.ts +13 -2
- package/dist/types/adapters/messageTypes.d.ts +12 -1
- package/dist/types/adapters/reported-artifacts.d.ts +2 -0
- package/dist/types/adapters/transcriptToMessages.d.ts +16 -0
- package/dist/types/assistant-turn-settlement.d.ts +12 -0
- package/dist/types/components/BranchPickerPopover.d.ts +3 -1
- package/dist/types/components/ChatContextHeader.d.ts +10 -1
- package/dist/types/components/ChatEditor.d.ts +10 -0
- package/dist/types/components/GoalStatusStrip.d.ts +12 -0
- package/dist/types/components/MessageItem.d.ts +7 -1
- package/dist/types/components/SplitView.d.ts +3 -1
- package/dist/types/components/StandaloneAuth.d.ts +3 -1
- package/dist/types/components/artifacts/ArtifactPanel.d.ts +22 -1
- package/dist/types/components/artifacts/TrajectoryPanel.d.ts +14 -0
- package/dist/types/components/artifacts/TurnOutputs.d.ts +7 -0
- package/dist/types/components/artifacts/artifactUtils.d.ts +1 -1
- package/dist/types/components/composer/AddMenu.d.ts +24 -2
- package/dist/types/components/dialogs/AddWorkspaceDialog.d.ts +11 -1
- package/dist/types/components/dialogs/DaemonStatusDialog.d.ts +4 -0
- package/dist/types/components/dialogs/WorkspaceAddStatusDialog.d.ts +11 -0
- package/dist/types/components/messages/AssistantMessage.d.ts +5 -1
- package/dist/types/components/messages/SettingsMessage.d.ts +4 -1
- package/dist/types/components/messages/tools/ShellToolOutput.d.ts +4 -0
- package/dist/types/components/messages/tools/shellLiveOutput.d.ts +13 -0
- package/dist/types/components/panels/EnvironmentPanel.d.ts +2 -1
- package/dist/types/components/sidebar/WorkspaceSection.d.ts +2 -1
- package/dist/types/components/ui/alert-dialog.d.ts +1 -1
- package/dist/types/components/ui/field.d.ts +1 -1
- package/dist/types/components/ui/toggle-group.d.ts +1 -1
- package/dist/types/components/workspaces/CapacityRecoveryDialog.d.ts +11 -0
- package/dist/types/config/daemon.d.ts +3 -1
- package/dist/types/config/remote-connections.d.ts +18 -0
- package/dist/types/config/remote-workspace-add.d.ts +17 -0
- package/dist/types/customization.d.ts +59 -1
- package/dist/types/daemon/session/DaemonSessionProvider.d.ts +3 -2
- package/dist/types/daemon/session/actions.d.ts +1 -1
- package/dist/types/daemon/session/httpErrors.d.ts +1 -0
- package/dist/types/daemon/session/types.d.ts +30 -1
- package/dist/types/daemon/workspace/hooks/useDaemonMemory.d.ts +3 -1
- package/dist/types/daemon/workspace/types.d.ts +8 -1
- package/dist/types/hooks/useAssistantFeedback.d.ts +16 -0
- package/dist/types/hooks/useCapacityRecovery.d.ts +8 -0
- package/dist/types/hooks/useComposerCore.d.ts +6 -1
- package/dist/types/hooks/useContextCompressionReconcile.d.ts +38 -0
- package/dist/types/hooks/useQueuedPrompts.d.ts +2 -1
- package/dist/types/hooks/useReportedArtifactRegistration.d.ts +20 -0
- package/dist/types/hooks/useSessionArtifacts.d.ts +2 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/live/LiveLevelMeter.d.ts +31 -0
- package/dist/types/live/LiveVoiceButton.d.ts +7 -1
- package/dist/types/live/LiveVoiceMenuItem.d.ts +9 -0
- package/dist/types/live/live-model-options.d.ts +24 -0
- package/dist/types/live/messages.d.ts +16 -0
- package/dist/types/live/messages.transcript-stub.d.ts +12 -0
- package/dist/types/live/pcm-player.d.ts +34 -0
- package/dist/types/live/screen-share.d.ts +25 -0
- package/dist/types/live/useLiveBrowserHost.d.ts +92 -0
- package/dist/types/live/useLiveVoice.d.ts +6 -0
- package/dist/types/session-catalog/session-catalog-store.d.ts +9 -0
- package/dist/types/settings.d.ts +6 -4
- package/dist/types/trajectory/buildTrajectory.d.ts +15 -0
- package/dist/types/trajectory/projectTrajectoryWindow.d.ts +23 -0
- package/dist/types/trajectory/transcriptPageLoader.d.ts +31 -0
- package/dist/types/trajectory/types.d.ts +130 -0
- package/dist/types/trajectory/useTrajectoryWindow.d.ts +75 -0
- package/dist/types/utils/assistantFeedback.d.ts +71 -0
- package/dist/types/utils/commitGraph.d.ts +39 -0
- package/dist/types/utils/contextCompression.d.ts +38 -0
- package/dist/types/utils/sessionPreparation.d.ts +3 -1
- package/dist/types/voice/capture-utils.d.ts +22 -0
- package/dist/types/voice/useVoiceCapture.d.ts +2 -1
- package/package.json +24 -19
package/dist/types/App.d.ts
CHANGED
|
@@ -16,7 +16,7 @@ import { type ComposerPlaceholderState } from './utils/composerInputState';
|
|
|
16
16
|
import type { CommandInfo, Message } from './adapters/types';
|
|
17
17
|
import { type WebShellBrand, type WebShellResolvedBrand } from './brandContext';
|
|
18
18
|
import { type WebShellTheme } from './themeContext';
|
|
19
|
-
import { 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 WebShellSessionArtifactsChange } from './customization';
|
|
19
|
+
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';
|
|
20
20
|
import type { CommandDisplayCategoryOrder } from './utils/commandDisplay';
|
|
21
21
|
export interface BugReportInfo {
|
|
22
22
|
title: string;
|
|
@@ -326,6 +326,11 @@ export interface WebShellProps {
|
|
|
326
326
|
onComposerTagClick?: ComposerTagClickHandler;
|
|
327
327
|
/** Custom renderer displayed after the final assistant message of each turn. */
|
|
328
328
|
renderAssistantTurnFooter?: AssistantTurnFooterRenderer;
|
|
329
|
+
/**
|
|
330
|
+
* Satisfied / not-satisfied marks on each completed assistant turn. Omit the
|
|
331
|
+
* object to leave the answer footer unchanged.
|
|
332
|
+
*/
|
|
333
|
+
assistantFeedback?: WebShellAssistantFeedbackOptions;
|
|
329
334
|
getAssistantSourcesIcon?: WebShellSourceIconResolver;
|
|
330
335
|
sourceReferences?: readonly WebShellSourceReference[];
|
|
331
336
|
/** Custom renderer inserted before the built-in chat composer toolbar controls. */
|
|
@@ -377,6 +382,12 @@ export interface WebShellProps {
|
|
|
377
382
|
composerInputVersion?: number;
|
|
378
383
|
/** Called when a session-level event occurs (rename, submit, turn complete). */
|
|
379
384
|
onSessionChange?: (event: SessionChangeEvent) => void;
|
|
385
|
+
/**
|
|
386
|
+
* Called for authoritative terminals observed live, or replayed for a prompt
|
|
387
|
+
* this provider admitted. Multiple mounted providers can report the same
|
|
388
|
+
* `(sessionId, promptId)`, so hosts should deduplicate by that key.
|
|
389
|
+
*/
|
|
390
|
+
onAssistantTurnSettled?: (event: WebShellAssistantTurnSettledEvent) => void;
|
|
380
391
|
/**
|
|
381
392
|
* Prepare the immutable payload for a daemon submission. Called once for a
|
|
382
393
|
* direct or queued logical submit, after local command routing and before
|
|
@@ -416,4 +427,4 @@ interface SideTaskCatalogState {
|
|
|
416
427
|
export declare function mergeSideTaskCatalog(catalog: SideTaskCatalogState, parentSessionId: string, listedItems: SideTaskListItem[], optimisticIds: ReadonlySet<string>): SideTaskCatalogState;
|
|
417
428
|
export declare function getEnvironmentAgentTasks(messages: readonly Message[], sessionTasks: readonly DaemonSessionTaskWithWorkflowStatus[]): EnvironmentAgentTask[];
|
|
418
429
|
export declare function mergeAgentTrace(liveAgents: readonly EnvironmentAgentTask[], trace: DaemonAgentTrace | undefined, now?: number): EnvironmentAgentTask[];
|
|
419
|
-
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, getAssistantSourcesIcon, sourceReferences, renderComposerToolbarStart, renderComposerToolbarEnd, renderComposerToolbarRight, renderComposerHeader, renderComposerFooter, renderChatHeader, renderFooter, bottomStatusItems, chatMaxWidth, sidebar, settings: settingsPresentation, header, rightPanel, environmentPanel, splitSessionIds: externalSplitSessionIds, onSplitSessionIdsChange, renderPaneHeaderActions, onRightPanelOpen, onFileReviewOpen, onWorkspaceFileOpen, onInsightReportOpen, onContextUsageOpen, messageTurnOutputs, shellRef, composerToolbarActions, mainModelFilter, compactComposerOverlays, autoSubmitSlashCommands, additionalSlashCommands, contextUsageAlwaysVisible, userMessageEditing, onUserMessageEditRequest, cycleModeOnTab, sessionSourceType, composerToolbarAdditionalActions, composerPlaceholders, compactThinking, hostOwnsEditDiffPreview, collapseCompletedTurns, markdownTableMode, virtualScrollThreshold, markdown, loadingPhrases, onAgentTasksChange, onTranscriptChange, onSessionArtifactsChange, onToast, composerRef, onComposerReady, composerInput, composerInputVersion, onSessionChange, prepareSubmit, onSubmitBefore, restartSseOnPrompt, historyPageSize, initialSelectedWorkspaceCwd, lockedWorkspaceCwd, lockedWorkspaceCapability, }?: AppProps): import("react/jsx-runtime").JSX.Element;
|
|
430
|
+
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, header, rightPanel, environmentPanel, splitSessionIds: externalSplitSessionIds, onSplitSessionIdsChange, renderPaneHeaderActions, onRightPanelOpen, onFileReviewOpen, onWorkspaceFileOpen, onInsightReportOpen, onContextUsageOpen, messageTurnOutputs, shellRef, composerToolbarActions, mainModelFilter, compactComposerOverlays, autoSubmitSlashCommands, additionalSlashCommands, contextUsageAlwaysVisible, userMessageEditing, onUserMessageEditRequest, cycleModeOnTab, sessionSourceType, composerToolbarAdditionalActions, composerPlaceholders, compactThinking, hostOwnsEditDiffPreview, collapseCompletedTurns, markdownTableMode, virtualScrollThreshold, 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;
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Copyright 2025 Qwen Team
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
import type { DaemonBackgroundTurn, DaemonInputAnnotation } from '@qwen-code/sdk/daemon';
|
|
6
|
+
import type { DaemonBackgroundTurn, DaemonSessionArtifactInput, DaemonInputAnnotation } from '@qwen-code/sdk/daemon';
|
|
7
7
|
export interface AttachmentPreviewRequest {
|
|
8
8
|
name: string;
|
|
9
9
|
mimeType?: string;
|
|
@@ -65,6 +65,16 @@ export interface DaemonMessageTodoItem {
|
|
|
65
65
|
*/
|
|
66
66
|
export interface DaemonMessageMeta {
|
|
67
67
|
backgroundTurn?: DaemonBackgroundTurn;
|
|
68
|
+
/**
|
|
69
|
+
* Admitted prompt this message belongs to, copied from the daemon-stamped
|
|
70
|
+
* `promptId` of the transcript blocks it was built from.
|
|
71
|
+
*
|
|
72
|
+
* Unlike a block id (a per-projection ordinal), this survives a reload: the
|
|
73
|
+
* live stream stamps it on assistant blocks, and a replay stamps it on the
|
|
74
|
+
* user block, which is the same value the turn's persisted record carries.
|
|
75
|
+
* Undefined for locally appended messages the daemon has not echoed yet.
|
|
76
|
+
*/
|
|
77
|
+
promptId?: string;
|
|
68
78
|
/**
|
|
69
79
|
* Wall-clock epoch milliseconds when the backing transcript block was first
|
|
70
80
|
* observed, populated from `serverTimestamp ?? clientReceivedAt`. Surfaced
|
|
@@ -96,6 +106,7 @@ export interface DaemonUserMessage extends DaemonMessageMeta {
|
|
|
96
106
|
source?: string;
|
|
97
107
|
}
|
|
98
108
|
export interface DaemonAssistantMessage extends DaemonMessageMeta {
|
|
109
|
+
reportedArtifacts?: DaemonSessionArtifactInput[];
|
|
99
110
|
id: string;
|
|
100
111
|
role: 'assistant';
|
|
101
112
|
content: string;
|
|
@@ -17,6 +17,13 @@ interface TranscriptMessageOptions {
|
|
|
17
17
|
safeToolProjection?: boolean;
|
|
18
18
|
}
|
|
19
19
|
export declare function isRetryableTurnErrorKind(errorKind: string | undefined): boolean;
|
|
20
|
+
/**
|
|
21
|
+
* Whether an assistant block renders as a `role: 'system'` notice instead of
|
|
22
|
+
* assistant text. Consumers that publish a turn's final answer ask the adapter
|
|
23
|
+
* rather than re-deriving the notice set, so a future notice source is excluded
|
|
24
|
+
* from them by construction.
|
|
25
|
+
*/
|
|
26
|
+
export declare function assistantBlockRendersAsSystemNotice(block: DaemonTranscriptBlock): boolean;
|
|
20
27
|
export declare function transcriptBlocksToDaemonMessages(blocks: readonly DaemonTranscriptBlock[], options?: TranscriptMessageOptions): DaemonMessage[];
|
|
21
28
|
type ParsedInsight = {
|
|
22
29
|
type: 'insight_progress';
|
|
@@ -38,4 +45,13 @@ type InsightSegment = {
|
|
|
38
45
|
data: ParsedInsight;
|
|
39
46
|
};
|
|
40
47
|
export declare function splitInsightSegments(text: string): InsightSegment[] | null;
|
|
48
|
+
/**
|
|
49
|
+
* The visible assistant text of a block's text, with insight protocol frames
|
|
50
|
+
* (`insight_progress` / `insight_ready` / `insight_error`) stripped exactly as
|
|
51
|
+
* `transcriptBlocksToDaemonMessages` strips them. A payload-only block — one
|
|
52
|
+
* whose only content is such a frame — renders to no assistant text and
|
|
53
|
+
* therefore yields an empty string, so callers that publish a turn's final
|
|
54
|
+
* answer can skip it instead of leaking raw protocol JSON.
|
|
55
|
+
*/
|
|
56
|
+
export declare function assistantVisibleTextOf(text: string): string;
|
|
41
57
|
export {};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Qwen Team
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import type { WebShellAssistantTurnSettledEvent } from './customization.js';
|
|
7
|
+
type AssistantTurnSettledHandler = (event: WebShellAssistantTurnSettledEvent) => void;
|
|
8
|
+
export declare function useAssistantTurnSettlementProjection(onAssistantTurnSettled: AssistantTurnSettledHandler | undefined): void;
|
|
9
|
+
export declare function AssistantTurnSettlementObserver({ onAssistantTurnSettled, }: {
|
|
10
|
+
onAssistantTurnSettled: AssistantTurnSettledHandler;
|
|
11
|
+
}): null;
|
|
12
|
+
export {};
|
|
@@ -27,6 +27,8 @@ interface BranchPickerPopoverProps {
|
|
|
27
27
|
onStatusRefreshed?: (status: DaemonWorkspaceGitStatus) => void;
|
|
28
28
|
onOpenDiff?: () => void;
|
|
29
29
|
onOpenCommit?: () => void;
|
|
30
|
+
/** Opens the commit history graph. */
|
|
31
|
+
onOpenLog?: () => void;
|
|
30
32
|
children: React.ReactNode;
|
|
31
33
|
}
|
|
32
34
|
type HintTone = 'muted' | 'info' | 'warning';
|
|
@@ -69,5 +71,5 @@ export declare function deriveActionHints(t: TranslateFn, data: DaemonGitBranche
|
|
|
69
71
|
* re-fetched. Exported for tests.
|
|
70
72
|
*/
|
|
71
73
|
export declare function listingContradictsStatus(data: DaemonGitBranchesResult, status: DaemonWorkspaceGitStatus): boolean;
|
|
72
|
-
export declare function BranchPickerPopover({ open, onOpenChange, workspaceCwd, gitCwd, side, onBranchChanged, status, onStatusRefreshed, onOpenDiff, onOpenCommit, children, }: BranchPickerPopoverProps): import("react/jsx-runtime").JSX.Element;
|
|
74
|
+
export declare function BranchPickerPopover({ open, onOpenChange, workspaceCwd, gitCwd, side, onBranchChanged, status, onStatusRefreshed, onOpenDiff, onOpenCommit, onOpenLog, children, }: BranchPickerPopoverProps): import("react/jsx-runtime").JSX.Element;
|
|
73
75
|
export {};
|
|
@@ -1,6 +1,15 @@
|
|
|
1
1
|
import type { ReactNode } from 'react';
|
|
2
2
|
interface ChatContextHeaderProps {
|
|
3
3
|
content: ReactNode;
|
|
4
|
+
/**
|
|
5
|
+
* Workspace shown as the header's leading icon. Omitting it means the shell
|
|
6
|
+
* has no workspace: the icon stays the same folder and only its tooltip says
|
|
7
|
+
* so, because the icon is the one place that always answers "which workspace
|
|
8
|
+
* is this session in?".
|
|
9
|
+
*/
|
|
10
|
+
workspaceName?: string;
|
|
11
|
+
/** Full workspace path, shown as the leading icon's hover tooltip. */
|
|
12
|
+
workspacePath?: string;
|
|
4
13
|
environmentOpen: boolean;
|
|
5
14
|
environmentAvailable: boolean;
|
|
6
15
|
rightPanelOpen: boolean;
|
|
@@ -14,5 +23,5 @@ interface ChatContextHeaderProps {
|
|
|
14
23
|
/** Shows the Local Control QR entry; hidden when omitted. */
|
|
15
24
|
onOpenLocalControlSettings?: () => void;
|
|
16
25
|
}
|
|
17
|
-
export declare function ChatContextHeader({ content, environmentOpen, environmentAvailable, rightPanelOpen, rightPanelAvailable, onToggleEnvironment, onToggleRightPanel, onOpenTokenUsage, onOpenContextUsage, onOpenLocalControlSettings, }: ChatContextHeaderProps): import("react/jsx-runtime").JSX.Element;
|
|
26
|
+
export declare function ChatContextHeader({ content, workspaceName, workspacePath, environmentOpen, environmentAvailable, rightPanelOpen, rightPanelAvailable, onToggleEnvironment, onToggleRightPanel, onOpenTokenUsage, onOpenContextUsage, onOpenLocalControlSettings, }: ChatContextHeaderProps): import("react/jsx-runtime").JSX.Element;
|
|
18
27
|
export {};
|
|
@@ -57,6 +57,8 @@ interface ChatEditorProps {
|
|
|
57
57
|
onOpenGitDiff?: () => void;
|
|
58
58
|
/** Opens the commit dialog. */
|
|
59
59
|
onOpenCommit?: () => void;
|
|
60
|
+
/** Opens the commit history graph. */
|
|
61
|
+
onOpenLog?: () => void;
|
|
60
62
|
/** Workspace name shown in the pane composer's `workspace` toolbar chip. */
|
|
61
63
|
workspaceName?: string;
|
|
62
64
|
/** Full workspace cwd, used as the chip's tooltip. */
|
|
@@ -70,6 +72,14 @@ interface ChatEditorProps {
|
|
|
70
72
|
showChatWidthToggle?: boolean;
|
|
71
73
|
chatWidthToggleMin?: number;
|
|
72
74
|
visibleToolbarActions?: readonly ComposerToolbarAction[];
|
|
75
|
+
/**
|
|
76
|
+
* Where the composer's context chips (workspace selector, git branch) land.
|
|
77
|
+
* `toolbar` (default) keeps both in the composer toolbar. `below` moves both
|
|
78
|
+
* to the row directly under the composer box. `header` leaves the workspace
|
|
79
|
+
* to the chat header, which shows it as a leading icon, and keeps git in the
|
|
80
|
+
* toolbar.
|
|
81
|
+
*/
|
|
82
|
+
contextChipPlacement?: 'toolbar' | 'below' | 'header';
|
|
73
83
|
/** Current context-window occupancy for the `contextUsage` toolbar ring. */
|
|
74
84
|
tokenCount?: number;
|
|
75
85
|
contextWindow?: number;
|
|
@@ -10,4 +10,16 @@ export interface GoalStatusStripProps {
|
|
|
10
10
|
}
|
|
11
11
|
export declare function getGoalActiveTimeMs(snapshot: GoalSnapshotV2, now: number): number;
|
|
12
12
|
export declare function getGoalTokenLabel(goal: NonNullable<GoalSnapshotV2['goal']>, t: ReturnType<typeof useI18n>['t']): string | undefined;
|
|
13
|
+
/**
|
|
14
|
+
* Active time, against its ceiling when `model.goalMaxActiveMinutes` armed
|
|
15
|
+
* one for this Goal.
|
|
16
|
+
*/
|
|
17
|
+
export declare function getGoalActiveTimeLabel(goal: NonNullable<GoalSnapshotV2['goal']>, activeTimeMs: number, t: ReturnType<typeof useI18n>['t']): string;
|
|
18
|
+
/**
|
|
19
|
+
* Finished turns against the ceiling `model.goalMaxTurns` armed. A Goal with
|
|
20
|
+
* no turn ceiling shows no turn figure here: the strip is one line, and the
|
|
21
|
+
* count alone says nothing about how much room is left. Zero stays hidden,
|
|
22
|
+
* as it does for tokens.
|
|
23
|
+
*/
|
|
24
|
+
export declare function getGoalTurnBudgetLabel(goal: NonNullable<GoalSnapshotV2['goal']>, t: ReturnType<typeof useI18n>['t']): string | undefined;
|
|
13
25
|
export declare function GoalStatusStrip({ snapshot, busy, onEdit, onPause, onResume, onClear, }: GoalStatusStripProps): import("react/jsx-runtime").JSX.Element | null;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Message, PermissionRequest } from '../adapters/types';
|
|
2
|
-
import type { WebShellAssistantTurnFooterRenderInfo, WebShellSource } from '../customization';
|
|
2
|
+
import type { WebShellAssistantFeedbackRating, WebShellAssistantTurnFooterRenderInfo, WebShellSource } from '../customization';
|
|
3
3
|
import { type SessionContentGenerator } from './messages/AssistantMessage';
|
|
4
4
|
import type { TurnOutputOpenRequest } from './artifacts/TurnOutputs';
|
|
5
5
|
import type { AttachmentPreviewRequest } from '../adapters/messageTypes';
|
|
@@ -33,6 +33,12 @@ interface MessageItemProps {
|
|
|
33
33
|
branchRecordId?: string;
|
|
34
34
|
showAssistantActions?: boolean;
|
|
35
35
|
showAssistantBranch?: boolean;
|
|
36
|
+
/** Turn id marks are keyed by; unset hides the marks for this message. */
|
|
37
|
+
assistantFeedbackTurnId?: string;
|
|
38
|
+
/** Admitted prompt id of the turn; unset hides the marks for this message. */
|
|
39
|
+
assistantFeedbackPromptId?: string;
|
|
40
|
+
assistantFeedbackRating?: WebShellAssistantFeedbackRating;
|
|
41
|
+
onAssistantFeedbackRate?: (promptId: string, turnId: string, rating: WebShellAssistantFeedbackRating | null) => void;
|
|
36
42
|
isLocateFlashing?: boolean;
|
|
37
43
|
assistantTurnFooterInfo?: WebShellAssistantTurnFooterRenderInfo;
|
|
38
44
|
turnSources?: readonly WebShellSource[];
|
|
@@ -9,6 +9,7 @@ import type { WebShellSlashCommandHandler } from '../App';
|
|
|
9
9
|
import type { RegisterContextUsageControls } from '../hooks/useContextUsageControls';
|
|
10
10
|
import { type PaneHeaderActionsRenderer } from './ChatPane';
|
|
11
11
|
import type { TurnOutputKind, TurnOutputOpenRequest } from './artifacts/TurnOutputs';
|
|
12
|
+
import type { WebShellAssistantTurnSettledEvent } from '../customization';
|
|
12
13
|
export interface SplitViewProps {
|
|
13
14
|
/** Sessions to show in the split view. */
|
|
14
15
|
sessionIds?: string[];
|
|
@@ -22,6 +23,7 @@ export interface SplitViewProps {
|
|
|
22
23
|
* each render would re-fire the reporting effect and loop.
|
|
23
24
|
*/
|
|
24
25
|
onPanesChange?: (sessionIds: string[]) => void;
|
|
26
|
+
onAssistantTurnSettled?: (event: WebShellAssistantTurnSettledEvent) => void;
|
|
25
27
|
/**
|
|
26
28
|
* Report panes surfacing approvals, including hidden panes. Keep stable while
|
|
27
29
|
* consumer inputs are unchanged; a new callback receives the current list.
|
|
@@ -66,4 +68,4 @@ export interface SplitViewProps {
|
|
|
66
68
|
* naturally scopes the keyboard to the pane the user clicks into, so panes never
|
|
67
69
|
* fight over which session an approval or Enter belongs to.
|
|
68
70
|
*/
|
|
69
|
-
export declare function SplitView({ sessionIds, showSessionDetails, onPanesChange, onPendingPanesChange, onExit, onError, onImageIngestionNotice, onSlashCommand, onOpenGoals, onRightPanelOpen, onOpenMonitor, onPaneArtifactsChange, registerContextUsageControls, onBeforeContextCompress, onOpenContextUsage, messageTurnOutputs, renderPaneHeaderActions, includeOtherWorkspaces, workspaceCwd, restartSseOnPrompt, historyPageSize, voiceUserRevision, voiceWorkspaceRevisions, voiceWorkspaces, sessionWorkflowEnabled, planControlVisible, }: SplitViewProps): import("react/jsx-runtime").JSX.Element;
|
|
71
|
+
export declare function SplitView({ sessionIds, showSessionDetails, onPanesChange, onAssistantTurnSettled, onPendingPanesChange, onExit, onError, onImageIngestionNotice, onSlashCommand, onOpenGoals, onRightPanelOpen, onOpenMonitor, onPaneArtifactsChange, registerContextUsageControls, onBeforeContextCompress, onOpenContextUsage, messageTurnOutputs, renderPaneHeaderActions, includeOtherWorkspaces, workspaceCwd, restartSseOnPrompt, historyPageSize, voiceUserRevision, voiceWorkspaceRevisions, voiceWorkspaces, sessionWorkflowEnabled, planControlVisible, }: SplitViewProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -12,6 +12,8 @@ export declare function StandaloneAuth({ baseUrl, initialToken, initialAddress,
|
|
|
12
12
|
invalidTarget?: boolean;
|
|
13
13
|
/** The daemon came from a link to an origin this browser has not used. */
|
|
14
14
|
unconfirmedTarget?: boolean;
|
|
15
|
-
onChangeTarget?: (daemonOrigin: string, token?: string
|
|
15
|
+
onChangeTarget?: (daemonOrigin: string, token?: string, options?: {
|
|
16
|
+
continueFlow?: 'workspace' | 'connection';
|
|
17
|
+
}) => boolean | void;
|
|
16
18
|
children: (token: string | undefined) => ReactNode;
|
|
17
19
|
}): string | number | bigint | boolean | Iterable<ReactNode> | Promise<string | number | bigint | boolean | import("react").ReactPortal | import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>> | Iterable<ReactNode> | null | undefined> | import("react/jsx-runtime").JSX.Element | null | undefined;
|
|
@@ -5,6 +5,7 @@ import { type DaemonSessionOwnerSnapshot, type DaemonSessionActions } from '@qwe
|
|
|
5
5
|
import { type TurnOutputFileChange, type TurnOutputOpenRequest, type TurnOutputScheduledTask } from './TurnOutputs';
|
|
6
6
|
import type { EnvironmentAgentTask } from '../panels/EnvironmentPanel';
|
|
7
7
|
import type { WebPreviewState } from '../preview/web-preview';
|
|
8
|
+
import type { TrajectoryPageLoader } from '../../trajectory/useTrajectoryWindow';
|
|
8
9
|
import type { ContextUsageControls } from '../../hooks/useContextUsageControls';
|
|
9
10
|
export type ImageTabSource = {
|
|
10
11
|
kind: 'attachment';
|
|
@@ -138,6 +139,17 @@ export type ArtifactPanelTab = (WebPreviewState & {
|
|
|
138
139
|
title: string;
|
|
139
140
|
workspaceCwd?: string;
|
|
140
141
|
initialized?: boolean;
|
|
142
|
+
} | {
|
|
143
|
+
id: string;
|
|
144
|
+
kind: 'trajectory';
|
|
145
|
+
title: string;
|
|
146
|
+
sessionId: string;
|
|
147
|
+
/**
|
|
148
|
+
* Fetches transcript pages for `sessionId`. Not serialisable, so a
|
|
149
|
+
* restored tab carries none until the host rewires it — the panel shows
|
|
150
|
+
* its loading state until then.
|
|
151
|
+
*/
|
|
152
|
+
loadPage?: TrajectoryPageLoader;
|
|
141
153
|
} | {
|
|
142
154
|
id: string;
|
|
143
155
|
kind: 'token_usage';
|
|
@@ -183,6 +195,15 @@ interface ArtifactPanelProps {
|
|
|
183
195
|
onOpenLatestReview?: () => void;
|
|
184
196
|
/** Open an interactive terminal tab in this panel (shown as an empty-state action). */
|
|
185
197
|
onOpenTerminal?: () => void;
|
|
198
|
+
/** Open this session's trajectory tab (shown as an empty-state action). */
|
|
199
|
+
onOpenTrajectory?: () => void;
|
|
200
|
+
/**
|
|
201
|
+
* Id of the tab `onOpenTrajectory` opens. Tabs can belong to other sessions
|
|
202
|
+
* — split view opens one per pane, and a restored tab keeps the session it
|
|
203
|
+
* was opened for — so the entry has to look for this session's tab rather
|
|
204
|
+
* than for any trajectory tab at all.
|
|
205
|
+
*/
|
|
206
|
+
trajectoryTabId?: string;
|
|
186
207
|
onOpenWebPreview?: () => void;
|
|
187
208
|
onWebPreviewChange?: (tabId: string, state: WebPreviewState) => void;
|
|
188
209
|
items?: readonly WebShellRightPanelItem[];
|
|
@@ -225,5 +246,5 @@ interface ArtifactPanelProps {
|
|
|
225
246
|
fullscreen?: boolean;
|
|
226
247
|
onToggleFullscreen?: () => void;
|
|
227
248
|
}
|
|
228
|
-
export declare function ArtifactPanel({ contextUsageControls, artifacts, tabs, activeTabId, reviewChanges, selectedReviewPath, panelWidth, workspaceCwd, loading, restoring, error, onSelectTab, onCloseTab, onOpenFilePreview, latestReviewAvailable, onOpenLatestReview, onOpenTerminal, onOpenWebPreview, onWebPreviewChange, items, sideTaskAvailable, sideTasks, sideTasksLoading, onCreateSideTask, onOpenSideTask, onCreateSideTaskSession, onSideTaskCreated, onSideTaskTitleChange, onNestedRightPanelOpen, onNestedArtifactsChange, onOpenNestedSubagent, agentTasks, agentTraceLoading, agentTraceError, onOpenWorkflowAgent, onError, sessionWorkflowEnabled, workflow, onImageIngestionNotice, deferSubagentMount, onClose, variant, fullscreen, onToggleFullscreen, }: ArtifactPanelProps): import("react/jsx-runtime").JSX.Element;
|
|
249
|
+
export declare function ArtifactPanel({ contextUsageControls, artifacts, tabs, activeTabId, reviewChanges, selectedReviewPath, panelWidth, workspaceCwd, loading, restoring, error, onSelectTab, onCloseTab, onOpenFilePreview, latestReviewAvailable, onOpenLatestReview, onOpenTerminal, onOpenTrajectory, trajectoryTabId, onOpenWebPreview, onWebPreviewChange, items, sideTaskAvailable, sideTasks, sideTasksLoading, onCreateSideTask, onOpenSideTask, onCreateSideTaskSession, onSideTaskCreated, onSideTaskTitleChange, onNestedRightPanelOpen, onNestedArtifactsChange, onOpenNestedSubagent, agentTasks, agentTraceLoading, agentTraceError, onOpenWorkflowAgent, onError, sessionWorkflowEnabled, workflow, onImageIngestionNotice, deferSubagentMount, onClose, variant, fullscreen, onToggleFullscreen, }: ArtifactPanelProps): import("react/jsx-runtime").JSX.Element;
|
|
229
250
|
export {};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Qwen Team
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { type TrajectoryPageLoader } from '../../trajectory/useTrajectoryWindow';
|
|
7
|
+
export interface TrajectoryPanelProps {
|
|
8
|
+
/**
|
|
9
|
+
* Fetches transcript pages for this tab's session. Absent while a restored
|
|
10
|
+
* tab is waiting to be rewired, which renders as the loading state.
|
|
11
|
+
*/
|
|
12
|
+
loadPage?: TrajectoryPageLoader;
|
|
13
|
+
}
|
|
14
|
+
export declare function TrajectoryPanel({ loadPage }: TrajectoryPanelProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -116,6 +116,13 @@ export declare function getFileChangePreviewContent(change: TurnOutputFileChange
|
|
|
116
116
|
export declare function isRenderedFilePath(value: string): boolean;
|
|
117
117
|
export declare function isDownloadableReviewFilePath(value: string): boolean;
|
|
118
118
|
export declare function canOpenWorkspaceArtifact(artifact: DaemonSessionArtifact): boolean;
|
|
119
|
+
/**
|
|
120
|
+
* Link artifacts are entries to a resource, so their card opens the address in
|
|
121
|
+
* a new page instead of the side panel. Only a URL the shell may hand to the
|
|
122
|
+
* external opener qualifies, and published deliveries stay with the panel's
|
|
123
|
+
* live preview (`handleTurnOutputOpen`).
|
|
124
|
+
*/
|
|
125
|
+
export declare function getArtifactExternalUrl(artifact: DaemonSessionArtifact): string | undefined;
|
|
119
126
|
export declare function getWorkspaceArtifactOpenBlockReason(artifact: DaemonSessionArtifact, t: (key: string, vars?: Record<string, string | number>) => string): string | undefined;
|
|
120
127
|
export declare function displayPath(path: string, workspaceCwd?: string): string;
|
|
121
128
|
export {};
|
|
@@ -34,4 +34,4 @@ export declare function normalizePath(value: string | undefined): string;
|
|
|
34
34
|
export declare function stripWorkspacePath(path: string, workspaceCwd?: string): string;
|
|
35
35
|
export declare function isSamePath(left: string | undefined, right: string | undefined, workspaceCwd?: string): boolean;
|
|
36
36
|
export declare function artifactPreviewDocument(html: string, title: string): string;
|
|
37
|
-
export declare function
|
|
37
|
+
export declare function loadArtifactPreviewDocument(html: string, title: string, signal: AbortSignal): Promise<string>;
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { CommandInfo } from '../../adapters/types';
|
|
2
|
+
import { type SkillInfo } from '../../completions/slashCompletion';
|
|
3
|
+
import type { CommandDisplayCategoryOrder } from '../../utils/commandDisplay';
|
|
2
4
|
import type { WebShellComposerTag } from '../../customization';
|
|
3
5
|
import type { AtMentionWorkspaceActions } from '../../hooks/useAtMentionSources';
|
|
4
6
|
export interface AddMenuProps {
|
|
@@ -16,5 +18,25 @@ export interface AddMenuProps {
|
|
|
16
18
|
skillsLoading?: boolean;
|
|
17
19
|
skillsLoadError?: boolean;
|
|
18
20
|
skillsLoaded?: boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Plan is chosen rarely, so its entry lives here rather than on the toolbar.
|
|
23
|
+
* Omitted when the host has not enabled Plan.
|
|
24
|
+
*/
|
|
25
|
+
plan?: AddMenuPlanControl;
|
|
26
|
+
mobileActions?: {
|
|
27
|
+
commands: readonly CommandInfo[];
|
|
28
|
+
categoryOrder?: CommandDisplayCategoryOrder;
|
|
29
|
+
onHistory: () => void;
|
|
30
|
+
onToggleShell: () => void;
|
|
31
|
+
shellMode: boolean;
|
|
32
|
+
onLiveVoice?: () => void;
|
|
33
|
+
};
|
|
34
|
+
commandsOnly?: boolean;
|
|
19
35
|
}
|
|
20
|
-
export
|
|
36
|
+
export interface AddMenuPlanControl {
|
|
37
|
+
checked: boolean;
|
|
38
|
+
/** Mode controls are busy; the row says so, as no row is disabled silently. */
|
|
39
|
+
disabled?: boolean;
|
|
40
|
+
onToggle: () => void;
|
|
41
|
+
}
|
|
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;
|
|
@@ -8,10 +8,20 @@ export interface WorkspacePathSuggestions {
|
|
|
8
8
|
suggestions: WorkspacePathSuggestion[];
|
|
9
9
|
truncated: boolean;
|
|
10
10
|
}
|
|
11
|
+
export interface WorkspaceLocationOption {
|
|
12
|
+
origin: string;
|
|
13
|
+
label: string;
|
|
14
|
+
remote: boolean;
|
|
15
|
+
}
|
|
11
16
|
interface AddWorkspaceDialogProps {
|
|
17
|
+
browseDirectories?: boolean;
|
|
18
|
+
initialPath?: string;
|
|
12
19
|
onClose: () => void;
|
|
13
20
|
onAdd: (cwd: string, persist: boolean, displayName?: string) => Promise<void>;
|
|
14
21
|
displayNameEnabled?: boolean;
|
|
22
|
+
locations?: WorkspaceLocationOption[];
|
|
23
|
+
selectedLocation?: string;
|
|
24
|
+
onLocationChange?: (origin: string) => boolean | void;
|
|
15
25
|
/**
|
|
16
26
|
* Directory autocomplete backend. When provided, typing an absolute path
|
|
17
27
|
* surfaces matching subdirectories in a listbox under the input.
|
|
@@ -20,5 +30,5 @@ interface AddWorkspaceDialogProps {
|
|
|
20
30
|
onPick?: () => Promise<string | undefined>;
|
|
21
31
|
persistenceSupported?: boolean;
|
|
22
32
|
}
|
|
23
|
-
export declare function AddWorkspaceDialog({ onClose, onAdd, displayNameEnabled, onSuggest, onPick, persistenceSupported, }: AddWorkspaceDialogProps): import("react/jsx-runtime").JSX.Element;
|
|
33
|
+
export declare function AddWorkspaceDialog({ browseDirectories, initialPath, onClose, onAdd, displayNameEnabled, locations, selectedLocation, onLocationChange, onSuggest, onPick, persistenceSupported, }: AddWorkspaceDialogProps): import("react/jsx-runtime").JSX.Element;
|
|
24
34
|
export {};
|
|
@@ -1,3 +1,7 @@
|
|
|
1
1
|
export declare function DaemonStatusDialog({ onChangeTarget, }?: {
|
|
2
2
|
onChangeTarget?: (daemonOrigin: string, token?: string) => boolean | void;
|
|
3
3
|
}): import("react/jsx-runtime").JSX.Element;
|
|
4
|
+
export declare function DaemonConnectionsSettings({ onChangeTarget, onAddConnection, }?: {
|
|
5
|
+
onChangeTarget?: (daemonOrigin: string, token?: string) => boolean | void;
|
|
6
|
+
onAddConnection?: (daemonOrigin: string, token?: string) => boolean | void;
|
|
7
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The folder step before it can show folders: the daemon's capabilities are
|
|
3
|
+
* still loading, the lookup failed, or the daemon cannot register workspaces at
|
|
4
|
+
* all. One shell for all three, so the states cannot overlap or leave a gap.
|
|
5
|
+
*/
|
|
6
|
+
export declare function WorkspaceAddStatusDialog({ message, tone, subtitle, onClose, }: {
|
|
7
|
+
message: string;
|
|
8
|
+
tone: 'status' | 'alert';
|
|
9
|
+
subtitle?: string;
|
|
10
|
+
onClose: () => void;
|
|
11
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type WebShellAssistantTurnFooterRenderInfo, type WebShellSource } from '../../customization';
|
|
1
|
+
import { type WebShellAssistantFeedbackRating, type WebShellAssistantTurnFooterRenderInfo, type WebShellSource } from '../../customization';
|
|
2
2
|
import type { DaemonSessionGenerationEvent } from '@qwen-code/sdk/daemon';
|
|
3
3
|
interface AssistantMessageProps {
|
|
4
4
|
content: string;
|
|
@@ -7,6 +7,10 @@ interface AssistantMessageProps {
|
|
|
7
7
|
onBranchSession?: () => void | Promise<void>;
|
|
8
8
|
showFooterActions?: boolean;
|
|
9
9
|
showBranchAction?: boolean;
|
|
10
|
+
/** Satisfied / not-satisfied marks are only offered when this is set. */
|
|
11
|
+
showAssistantFeedback?: boolean;
|
|
12
|
+
assistantFeedbackRating?: WebShellAssistantFeedbackRating;
|
|
13
|
+
onAssistantFeedbackRate?: (rating: WebShellAssistantFeedbackRating | null) => void;
|
|
10
14
|
isLocateFlashing?: boolean;
|
|
11
15
|
customFooterInfo?: WebShellAssistantTurnFooterRenderInfo;
|
|
12
16
|
turnSources?: readonly WebShellSource[];
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
1
2
|
import type { DaemonSettingDescriptor, DaemonSettingUpdateResult, DaemonWorkspaceSettingsStatus } from '@qwen-code/web-shell/daemon-react-sdk';
|
|
2
3
|
import { type WebShellLanguage } from '../../i18n';
|
|
3
4
|
import type { UseLiveVoiceSetupResult } from '../../live/useLiveVoiceSetup';
|
|
@@ -15,6 +16,8 @@ interface SettingsMessageProps {
|
|
|
15
16
|
onChatWidthModeChange: (mode: ChatWidthMode) => void;
|
|
16
17
|
/** Model list/add/delete/select, rendered inside the Model category. */
|
|
17
18
|
modelManagement?: ModelManagementProps;
|
|
19
|
+
/** Browser-local remote computer catalog and connection controls. */
|
|
20
|
+
connections?: ReactNode;
|
|
18
21
|
embedded?: boolean;
|
|
19
22
|
/** Category to select on open (deep link, e.g. 'Daemon'). */
|
|
20
23
|
initialCategory?: string;
|
|
@@ -42,5 +45,5 @@ export type FlatRow = {
|
|
|
42
45
|
localKey: 'chatWidth' | 'browserNotifications';
|
|
43
46
|
};
|
|
44
47
|
export declare function nextSettingIdx(rows: FlatRow[], current: number, dir: 1 | -1): number;
|
|
45
|
-
export declare function SettingsMessage({ settingsState, presentation, onLanguageChange, onSubDialog, onThemeChange, chatWidthMode, onChatWidthModeChange, modelManagement, embedded, initialCategory, }: SettingsMessageProps): import("react/jsx-runtime").JSX.Element;
|
|
48
|
+
export declare function SettingsMessage({ settingsState, presentation, onLanguageChange, onSubDialog, onThemeChange, chatWidthMode, onChatWidthModeChange, modelManagement, connections, embedded, initialCategory, }: SettingsMessageProps): import("react/jsx-runtime").JSX.Element;
|
|
46
49
|
export {};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { CSSProperties } from 'react';
|
|
2
|
+
interface ShellSegment {
|
|
3
|
+
text: string;
|
|
4
|
+
style?: CSSProperties;
|
|
5
|
+
}
|
|
6
|
+
export interface ShellLiveOutput {
|
|
7
|
+
segments?: ShellSegment[];
|
|
8
|
+
timeoutMs?: number;
|
|
9
|
+
totalLines?: number;
|
|
10
|
+
totalBytes?: number;
|
|
11
|
+
}
|
|
12
|
+
export declare function parseShellLiveOutput(value: unknown): ShellLiveOutput | null;
|
|
13
|
+
export {};
|
|
@@ -26,6 +26,7 @@ interface EnvironmentPanelProps {
|
|
|
26
26
|
items?: readonly WebShellEnvironmentPanelItem[];
|
|
27
27
|
onOpenGitDiff?: () => void;
|
|
28
28
|
onOpenGitCommit?: () => void;
|
|
29
|
+
onOpenGitLog?: () => void;
|
|
29
30
|
onOpenAgent?: (task: DaemonSessionAgentTaskStatus) => void;
|
|
30
31
|
onOpenAgentWorkflow?: () => void;
|
|
31
32
|
onOpenTask: (task: DaemonSessionTaskWithWorkflowStatus) => void;
|
|
@@ -41,5 +42,5 @@ export type EnvironmentAgentTask = DaemonSessionAgentTaskStatus & {
|
|
|
41
42
|
color?: string;
|
|
42
43
|
lineageState?: 'complete' | 'orphaned' | 'cycle';
|
|
43
44
|
};
|
|
44
|
-
export declare function EnvironmentPanel({ sources, onOpenSource, retrySourceRegistration, floating, hidden, workspaceCwd, gitWorkspaceCwd, gitCwd, branch, gitStatus, tasks, agentTasks, attachments, attachmentsLoading, attachmentsError, onRetryAttachments, artifacts, artifactsLoading, items, onOpenGitDiff, onOpenGitCommit, onOpenAgent, onOpenAgentWorkflow, onOpenTask, onReadImage, onImagePreview, onAttachmentPreview, onAttachmentPreviewError, onOpenArtifact, onDismiss, }: EnvironmentPanelProps): import("react/jsx-runtime").JSX.Element;
|
|
45
|
+
export declare function EnvironmentPanel({ sources, onOpenSource, retrySourceRegistration, floating, hidden, workspaceCwd, gitWorkspaceCwd, gitCwd, branch, gitStatus, tasks, agentTasks, attachments, attachmentsLoading, attachmentsError, onRetryAttachments, artifacts, artifactsLoading, items, onOpenGitDiff, onOpenGitCommit, onOpenGitLog, onOpenAgent, onOpenAgentWorkflow, onOpenTask, onReadImage, onImagePreview, onAttachmentPreview, onAttachmentPreviewError, onOpenArtifact, onDismiss, }: EnvironmentPanelProps): import("react/jsx-runtime").JSX.Element;
|
|
45
46
|
export {};
|
|
@@ -10,6 +10,7 @@ export interface WorkspaceHeaderActionsContext {
|
|
|
10
10
|
}
|
|
11
11
|
interface WorkspaceSectionProps {
|
|
12
12
|
workspace: DaemonWorkspaceCapability;
|
|
13
|
+
remote?: boolean;
|
|
13
14
|
renderHeader?: (expanded: boolean) => ReactNode;
|
|
14
15
|
client: DaemonClient;
|
|
15
16
|
reloadToken: number;
|
|
@@ -108,5 +109,5 @@ interface WorkspaceSectionProps {
|
|
|
108
109
|
/** Commit entry for the same picker; the row still opens without it. */
|
|
109
110
|
onOpenCommit?: (workspaceCwd: string) => void;
|
|
110
111
|
}
|
|
111
|
-
export declare function WorkspaceSection({ workspace, renderHeader, client, reloadToken, untrustedLabel, readOnlyLabel, trustToOpenLabel, noSessionsLabel, loadErrorLabel, organizationEnabled, sessionCatalogRequestsEnabled, sessionGroupCatalog, sessionLiveStateEnabled, sourceType, channelGroupingEnabled, ungroupedLabel, searchQuery, expanded: controlledExpanded, autoExpandKey, onExpandedChange, renderSessions, renderSession, mapSession, showSessionDetails, headerActions, overviewEnabled, overviewMenuOpen, overviewItems, gitBranchWanted, sessionStats, onRenameGroup, onDeleteGroup, renameGroupLabel, deleteGroupLabel, groupActionsDisabled, excludePinned, limitSessions, isPinnedSectionMember, onOpenPathLocally, onOpenTerminalLocally, onOpenGitDiff, onOpenCommit, }: WorkspaceSectionProps): import("react/jsx-runtime").JSX.Element;
|
|
112
|
+
export declare function WorkspaceSection({ workspace, remote, renderHeader, client, reloadToken, untrustedLabel, readOnlyLabel, trustToOpenLabel, noSessionsLabel, loadErrorLabel, organizationEnabled, sessionCatalogRequestsEnabled, sessionGroupCatalog, sessionLiveStateEnabled, sourceType, channelGroupingEnabled, ungroupedLabel, searchQuery, expanded: controlledExpanded, autoExpandKey, onExpandedChange, renderSessions, renderSession, mapSession, showSessionDetails, headerActions, overviewEnabled, overviewMenuOpen, overviewItems, gitBranchWanted, sessionStats, onRenameGroup, onDeleteGroup, renameGroupLabel, deleteGroupLabel, groupActionsDisabled, excludePinned, limitSessions, isPinnedSectionMember, onOpenPathLocally, onOpenTerminalLocally, onOpenGitDiff, onOpenCommit, }: WorkspaceSectionProps): import("react/jsx-runtime").JSX.Element;
|
|
112
113
|
export {};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { AlertDialog as AlertDialogPrimitive } from 'radix-ui';
|
|
3
|
-
import { Button } from '
|
|
3
|
+
import { Button } from './button';
|
|
4
4
|
declare function AlertDialog({ ...props }: React.ComponentProps<typeof AlertDialogPrimitive.Root>): import("react/jsx-runtime").JSX.Element;
|
|
5
5
|
declare function AlertDialogTrigger({ ...props }: React.ComponentProps<typeof AlertDialogPrimitive.Trigger>): import("react/jsx-runtime").JSX.Element;
|
|
6
6
|
declare function AlertDialogPortal({ container, ...props }: React.ComponentProps<typeof AlertDialogPrimitive.Portal>): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type VariantProps } from 'class-variance-authority';
|
|
2
|
-
import { Label } from '
|
|
2
|
+
import { Label } from './label';
|
|
3
3
|
declare function FieldSet({ className, ...props }: React.ComponentProps<'fieldset'>): import("react/jsx-runtime").JSX.Element;
|
|
4
4
|
declare function FieldLegend({ className, variant, ...props }: React.ComponentProps<'legend'> & {
|
|
5
5
|
variant?: 'legend' | 'label';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { type VariantProps } from 'class-variance-authority';
|
|
3
3
|
import { ToggleGroup as ToggleGroupPrimitive } from 'radix-ui';
|
|
4
|
-
import { toggleVariants } from '
|
|
4
|
+
import { toggleVariants } from './toggle';
|
|
5
5
|
declare function ToggleGroup({ className, variant, size, spacing, orientation, children, ...props }: React.ComponentProps<typeof ToggleGroupPrimitive.Root> & VariantProps<typeof toggleVariants> & {
|
|
6
6
|
spacing?: number;
|
|
7
7
|
orientation?: 'horizontal' | 'vertical';
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { DaemonClient } from '@qwen-code/sdk/daemon';
|
|
2
|
+
export interface CapacityRecoveryIntent {
|
|
3
|
+
client: DaemonClient;
|
|
4
|
+
requesterCwd?: string;
|
|
5
|
+
isCurrent(): boolean;
|
|
6
|
+
resume(): Promise<unknown>;
|
|
7
|
+
}
|
|
8
|
+
export declare function CapacityRecoveryDialog({ intent, onClose, }: {
|
|
9
|
+
intent: CapacityRecoveryIntent;
|
|
10
|
+
onClose(): void;
|
|
11
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
@@ -38,4 +38,6 @@ export declare function getAllowedDaemonOrigin(raw: string): string;
|
|
|
38
38
|
export declare function buildDaemonConnectionUrl(raw: string, currentHref: string): string | undefined;
|
|
39
39
|
export declare function confirmDaemonTarget(origin: string): void;
|
|
40
40
|
export declare function isKnownDaemonTarget(origin: string): boolean;
|
|
41
|
-
export declare function navigateToDaemon(raw: string, token?: string
|
|
41
|
+
export declare function navigateToDaemon(raw: string, token?: string, options?: {
|
|
42
|
+
continueFlow?: 'workspace' | 'connection';
|
|
43
|
+
}): boolean;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export declare function formatOriginHost(origin: string): string;
|
|
2
|
+
export declare function readRemoteConnections(): string[];
|
|
3
|
+
export declare function rememberRemoteConnection(origin: string): void;
|
|
4
|
+
export declare function forgetRemoteConnection(origin: string): string[];
|
|
5
|
+
export declare function isRemoteConnectionKnown(origin: string): boolean;
|
|
6
|
+
/**
|
|
7
|
+
* Remote computers offered as a workspace location: the persisted catalog plus
|
|
8
|
+
* the daemon this tab is pointed at, which is reachable now even if the catalog
|
|
9
|
+
* write was refused. Callers use the count to decide whether a location step is
|
|
10
|
+
* worth showing at all, so both sites must agree on the list.
|
|
11
|
+
*/
|
|
12
|
+
export declare function listRemoteComputers(): string[];
|
|
13
|
+
export declare function isRemoteConnectionAddActive(): boolean;
|
|
14
|
+
export declare function startRemoteConnectionAdd(daemonOrigin: string, token?: string): boolean;
|
|
15
|
+
export declare function completeRemoteConnectionAdd(origin: string): boolean;
|
|
16
|
+
export declare function leaveRemoteConnectionAdd(): boolean;
|
|
17
|
+
export declare function getInitialConnectionsSettingsCategory(): string | undefined;
|
|
18
|
+
export declare function clearInitialConnectionsSettingsCategory(): void;
|