@qwen-code/web-shell 0.24.7 → 0.25.0-nightly.20261009.085a44f336
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/README.md +65 -2
- package/dist/agents-route-D7hp7io8.js +1546 -0
- package/dist/daemon-react-sdk.js +1 -1
- package/dist/index-BEPcxy4Z.js +125142 -0
- package/dist/index.js +69 -120254
- package/dist/sw.js +1 -1
- package/dist/{toolNames-B0O1UjKB.js → toolNames-D4oueGGC.js} +5956 -5252
- package/dist/transcript.js +10276 -9739
- package/dist/types/App.d.ts +2 -2
- package/dist/types/ManagedAgentWebShell.d.ts +1 -0
- package/dist/types/adapters/messageTypes.d.ts +23 -1
- package/dist/types/adapters/transcriptAdapter.d.ts +1 -0
- package/dist/types/components/ChatContextHeader.d.ts +3 -1
- package/dist/types/components/ChatEditor.d.ts +1 -0
- package/dist/types/components/DesktopRelayControl.d.ts +2 -1
- package/dist/types/components/LocalFilesControl.d.ts +3 -1
- package/dist/types/components/MessageItem.d.ts +1 -0
- package/dist/types/components/MessageList.d.ts +1 -0
- package/dist/types/components/agents/AgentCreatePage.d.ts +35 -1
- package/dist/types/components/agents/AgentsManagerPage.d.ts +5 -1
- package/dist/types/components/artifacts/TrajectoryFilters.d.ts +15 -0
- package/dist/types/components/artifacts/TrajectoryInspector.d.ts +5 -1
- package/dist/types/components/artifacts/TrajectoryOverview.d.ts +3 -1
- package/dist/types/components/artifacts/TrajectoryWaterfallCell.d.ts +15 -0
- package/dist/types/components/artifacts/artifactUtils.d.ts +9 -0
- package/dist/types/components/channels/ChannelsManagerPage.d.ts +1 -1
- package/dist/types/components/extensions/extensions-manager-logic.d.ts +3 -3
- package/dist/types/components/managed/ManagedToolResultPanel.d.ts +9 -0
- package/dist/types/components/managed/ManagedToolResultSummary.d.ts +5 -0
- package/dist/types/components/managed/generated/managed-agent-api.d.ts +915 -18
- package/dist/types/components/managed/java-managed-agent-client.d.ts +29 -1
- package/dist/types/components/managed/java-managed-agent-provider.d.ts +4 -0
- package/dist/types/components/managed/managed-agent-provider.d.ts +43 -1
- package/dist/types/components/managed/managed-agent-sse.test-fixtures.d.ts +8 -0
- package/dist/types/components/managed/managed-approval.d.ts +10 -0
- package/dist/types/components/managed/managed-artifact-download.d.ts +2 -0
- package/dist/types/components/managed/managed-request-error.d.ts +14 -0
- package/dist/types/components/managed/managed-tool-result-types.d.ts +24 -0
- package/dist/types/components/managed/managed-tool-result.test-fixtures.d.ts +6 -0
- package/dist/types/components/managed/use-managed-actions.d.ts +34 -0
- package/dist/types/components/messages/AssistantMessage.d.ts +6 -1
- package/dist/types/components/messages/AuthorAvatar.d.ts +16 -0
- package/dist/types/components/messages/ContextUsageMessage.d.ts +5 -1
- package/dist/types/components/messages/StatsMessage.d.ts +6 -1
- package/dist/types/components/messages/ToolApproval.d.ts +9 -1
- package/dist/types/components/messages/ToolGroup.d.ts +2 -0
- package/dist/types/components/messages/UserMessage.d.ts +3 -1
- package/dist/types/components/messages/agent-message-details.d.ts +36 -0
- package/dist/types/components/messages/squad-tag.d.ts +16 -0
- package/dist/types/components/sidebar/UpdateControl.d.ts +3 -1
- package/dist/types/components/sidebar/WebShellSidebar.d.ts +16 -5
- package/dist/types/components/sidebar/WorkspaceSection.d.ts +2 -1
- package/dist/types/components/sidebar/sessionSearch.d.ts +2 -1
- package/dist/types/components/workspace-agents/ThreadsPage.d.ts +122 -0
- package/dist/types/components/workspace-agents/add-runtime-dialog.d.ts +76 -0
- package/dist/types/components/workspace-agents/agent-events.d.ts +20 -0
- package/dist/types/components/workspace-agents/agents-route.d.ts +19 -0
- package/dist/types/components/workspace-agents/agents-view-logic.d.ts +31 -0
- package/dist/types/components/workspace-agents/lazy-agents-route.d.ts +7 -0
- package/dist/types/components/workspace-agents/messages.d.ts +16 -0
- package/dist/types/components/workspace-agents/messages.transcript-stub.d.ts +12 -0
- package/dist/types/components/workspace-agents/session-agent-live-runs.d.ts +96 -0
- package/dist/types/components/workspace-agents/session-agents-api.d.ts +39 -0
- package/dist/types/components/workspace-agents/share-agent-dialog.d.ts +33 -0
- package/dist/types/components/workspace-agents/squads-section.d.ts +28 -0
- package/dist/types/components/workspace-agents/threads-api.d.ts +52 -0
- package/dist/types/components/workspace-agents/use-session-agent-runs.d.ts +66 -0
- package/dist/types/components/workspace-agents/useAgentChatEntry.d.ts +100 -0
- package/dist/types/components/workspaces/WorkspaceHostProjects.d.ts +11 -0
- package/dist/types/components/workspaces/WorkspaceLocation.d.ts +7 -0
- package/dist/types/config/workspace-hosts.d.ts +11 -0
- package/dist/types/customization.d.ts +10 -0
- package/dist/types/daemon/session/types.d.ts +19 -3
- package/dist/types/daemon/workspace/hooks/useDaemonMemory.d.ts +4 -0
- package/dist/types/daemon/workspace/types.d.ts +6 -2
- package/dist/types/index.d.ts +2 -1
- package/dist/types/live/LiveVoiceButton.d.ts +2 -1
- package/dist/types/navigation.d.ts +1 -0
- package/dist/types/settings.d.ts +1 -0
- package/dist/types/trajectory/buildTrajectoryLayout.d.ts +27 -0
- package/dist/types/trajectory/filter-messages.d.ts +9 -0
- package/dist/types/trajectory/filter-messages.transcript-stub.d.ts +7 -0
- package/dist/types/trajectory/filterTrajectory.d.ts +22 -0
- package/dist/types/trajectory/types.d.ts +3 -1
- package/dist/types/trajectory/useTimelineViewport.d.ts +19 -0
- package/dist/types/trajectory/useTrajectoryWindow.d.ts +21 -36
- package/dist/types/trajectory/window-messages.d.ts +9 -0
- package/dist/types/trajectory/window-messages.transcript-stub.d.ts +7 -0
- package/dist/types/utils/cancelledTurn.d.ts +17 -0
- package/dist/types/utils/composerTag.d.ts +6 -1
- package/dist/types/utils/modelEncoding.d.ts +6 -0
- package/dist/types/utils/navigationUrl.d.ts +1 -1
- package/dist/types/utils/workspace.d.ts +1 -0
- package/package.json +2 -1
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { type ComponentProps } from 'react';
|
|
2
|
+
import type { ChatEditor } from '../ChatEditor';
|
|
3
|
+
import type { WebShellAtProvider } from '../../customization';
|
|
4
|
+
import type { useI18n } from '../../i18n';
|
|
5
|
+
import { type SessionAgentsApi } from './session-agents-api';
|
|
6
|
+
import type { WorkspaceAgentSummaryView } from './ThreadsPage';
|
|
7
|
+
import { type DaemonTranscriptBlock, type SessionSquadView } from '@qwen-code/sdk/daemon';
|
|
8
|
+
type Submit = ComponentProps<typeof ChatEditor>['onSubmit'];
|
|
9
|
+
/**
|
|
10
|
+
* The @tokens of a message, lowercased. Same rules as core's parseMentions: no
|
|
11
|
+
* ASCII word character before `@`, so "请@迁移助手" counts and "a@b.dev" does
|
|
12
|
+
* not; a token followed by `/` is a path, not a mention.
|
|
13
|
+
*/
|
|
14
|
+
export declare function mentionTokens(text: string): string[];
|
|
15
|
+
/**
|
|
16
|
+
* The agents a message addresses, in mention order. A name may run into the
|
|
17
|
+
* next word in scripts without spaces ("@迁移助手看一下"); the longest name the
|
|
18
|
+
* token starts with wins. Same addressability predicate as the picker: an
|
|
19
|
+
* agent the server would skip must not divert the message.
|
|
20
|
+
*/
|
|
21
|
+
export declare function resolveMentionedAgents(tokens: readonly string[], agents: readonly WorkspaceAgentSummaryView[]): WorkspaceAgentSummaryView[];
|
|
22
|
+
/** A 32px "people" mask: squads get an icon in the picker, agents none. */
|
|
23
|
+
export declare const SQUAD_PICKER_ICON = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAVklEQVR42u2TMQ4AIAgD+f+ncXXRgKFWTC/pai8CZkKIJvgi1PKdRKlgRgDyU20ETkb1lwD0WqIPU88VdoaCOlsPhlo+S5QJOijU8rAEXeDGrggh3mEAQPbbJbEAqj0AAAAASUVORK5CYII=";
|
|
24
|
+
/**
|
|
25
|
+
* The squads a message addresses, by the same token rules as
|
|
26
|
+
* {@link resolveMentionedAgents}. A token that names an agent exactly is the
|
|
27
|
+
* agent's, as on the daemon.
|
|
28
|
+
*/
|
|
29
|
+
export declare function resolveMentionedSquads(tokens: readonly string[], squads: readonly SessionSquadView[]): SessionSquadView[];
|
|
30
|
+
/** The chat session an @-mention goes to, and the workspace it lives in. */
|
|
31
|
+
export interface AgentMentionSession {
|
|
32
|
+
sessionId: string;
|
|
33
|
+
/** Unset: the hook's own `cwd`. */
|
|
34
|
+
workspaceCwd?: string;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* An @-mention the daemon accepted but deferred behind a running main-model
|
|
38
|
+
* turn (`deferred: true`): its record, and so the user's message, only lands
|
|
39
|
+
* once that turn settles. Shown as the user's message until then.
|
|
40
|
+
*/
|
|
41
|
+
export interface PendingAgentMention {
|
|
42
|
+
/** The post's `clientMessageId`. */
|
|
43
|
+
id: string;
|
|
44
|
+
sessionId: string;
|
|
45
|
+
text: string;
|
|
46
|
+
/**
|
|
47
|
+
* Recorded mentions with this text the session already had, plus earlier
|
|
48
|
+
* pending ones, when it was posted: the record that settles this one is
|
|
49
|
+
* the next.
|
|
50
|
+
*/
|
|
51
|
+
recordedBefore: number;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* The text of each recorded @-mention (`agent_mention` user message) in the
|
|
55
|
+
* transcript, in order. Compare with {@link isPendingMentionRecorded}.
|
|
56
|
+
*/
|
|
57
|
+
export declare function recordedAgentMentionTexts(blocks: readonly DaemonTranscriptBlock[]): string[];
|
|
58
|
+
/** True once the record of `mention` is among the recorded mention texts. */
|
|
59
|
+
export declare function isPendingMentionRecorded(mention: PendingAgentMention, recordedTexts: readonly string[]): boolean;
|
|
60
|
+
export declare function useAgentChatEntry({ enabled, cwd, baseUrl, token, sessionApi, sessionApiFor, ensureSession, onSubmit, onError, onCreateAgent, sessionId, recordedMentionTexts, t, }: {
|
|
61
|
+
enabled: boolean;
|
|
62
|
+
cwd?: string;
|
|
63
|
+
baseUrl: string;
|
|
64
|
+
token?: string;
|
|
65
|
+
/** The session routes of the same workspace (`cwd`). */
|
|
66
|
+
sessionApi?: SessionAgentsApi;
|
|
67
|
+
/**
|
|
68
|
+
* The session routes of another workspace, for a session that lives
|
|
69
|
+
* elsewhere. Defaults to the HTTP routes of that workspace.
|
|
70
|
+
*/
|
|
71
|
+
sessionApiFor?: (workspaceCwd: string) => SessionAgentsApi;
|
|
72
|
+
/**
|
|
73
|
+
* The current chat session, creating it first when this is a new chat (the
|
|
74
|
+
* same lazy creation an ordinary first prompt goes through), with the
|
|
75
|
+
* workspace it was created in.
|
|
76
|
+
*/
|
|
77
|
+
ensureSession: () => Promise<AgentMentionSession | string | undefined>;
|
|
78
|
+
onSubmit: Submit;
|
|
79
|
+
onError: (message: string) => void;
|
|
80
|
+
/** Offered as the picker's last item: open the New agent page. */
|
|
81
|
+
onCreateAgent?: () => void;
|
|
82
|
+
/** The session the chat shows; only its pending @-mentions are returned. */
|
|
83
|
+
sessionId?: string;
|
|
84
|
+
/**
|
|
85
|
+
* {@link recordedAgentMentionTexts} of that session's transcript, memoized:
|
|
86
|
+
* a pending @-mention is dropped once its record shows up here.
|
|
87
|
+
*/
|
|
88
|
+
recordedMentionTexts?: readonly string[];
|
|
89
|
+
/**
|
|
90
|
+
* The caller's translator. App calls this hook above its I18nProvider, where
|
|
91
|
+
* useI18n() would hand back the default that echoes keys.
|
|
92
|
+
*/
|
|
93
|
+
t: ReturnType<typeof useI18n>['t'];
|
|
94
|
+
}): {
|
|
95
|
+
providers: WebShellAtProvider[];
|
|
96
|
+
submit: (text: string, images?: import("../../adapters/promptTypes").PromptImage[], files?: import("../../adapters/promptTypes").PromptFile[], commitAccepted?: import("../../hooks/useComposerCore").ComposerSubmitCommit, metadata?: import("../../hooks/useComposerCore").ComposerSubmitMetadata) => boolean | void;
|
|
97
|
+
pending: boolean;
|
|
98
|
+
pendingMentions: PendingAgentMention[];
|
|
99
|
+
};
|
|
100
|
+
export {};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Names the connected host above its live project list. Until another host is
|
|
3
|
+
* saved there is nothing to tell apart, so the plain list stays unlabeled.
|
|
4
|
+
*/
|
|
5
|
+
export declare function WorkspaceHostHeading(): import("react/jsx-runtime").JSX.Element | null;
|
|
6
|
+
/**
|
|
7
|
+
* Saved projects on the other hosts, grouped by host below the live list.
|
|
8
|
+
* Only the connected host is live; choosing one of these reloads the page
|
|
9
|
+
* against its host.
|
|
10
|
+
*/
|
|
11
|
+
export declare function OtherHostProjects(): import("react/jsx-runtime").JSX.Element | null;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compact label naming the host a chat runs on, with the working directory in
|
|
3
|
+
* its tooltip. Hidden until a project can live on more than one host.
|
|
4
|
+
*/
|
|
5
|
+
export declare function WorkspaceLocation({ cwd }: {
|
|
6
|
+
cwd?: string;
|
|
7
|
+
}): import("react/jsx-runtime").JSX.Element | null;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { DaemonWorkspaceCapability } from '@qwen-code/sdk/daemon';
|
|
2
|
+
export declare const WorkspaceHostsEnabled: import("react").Context<boolean>;
|
|
3
|
+
export interface WorkspaceHost {
|
|
4
|
+
origin: string;
|
|
5
|
+
workspaces: Pick<DaemonWorkspaceCapability, 'id' | 'cwd' | 'displayName'>[];
|
|
6
|
+
}
|
|
7
|
+
export declare function readWorkspaceHosts(): WorkspaceHost[];
|
|
8
|
+
export declare function rememberWorkspaceHost(origin: string, workspaces: WorkspaceHost['workspaces']): void;
|
|
9
|
+
/** Saved hosts, kept in sync with catalog updates from this and other tabs. */
|
|
10
|
+
export declare function useWorkspaceHosts(): WorkspaceHost[];
|
|
11
|
+
export declare function openHostedWorkspace(origin: string, workspaceId?: string): void;
|
|
@@ -362,6 +362,11 @@ export interface WebShellAtItem {
|
|
|
362
362
|
iconTooltip?: string;
|
|
363
363
|
insertText?: string;
|
|
364
364
|
composerTag?: WebShellComposerTag;
|
|
365
|
+
/**
|
|
366
|
+
* Makes the item an action instead of a reference: choosing it removes the
|
|
367
|
+
* typed `@query` and calls this, inserting nothing.
|
|
368
|
+
*/
|
|
369
|
+
onSelect?: () => void;
|
|
365
370
|
}
|
|
366
371
|
export type WebShellBuiltinAtProviderId = 'files' | 'extensions' | 'mcp-resources';
|
|
367
372
|
export type WebShellBuiltinAtProvidersConfig = boolean | readonly WebShellBuiltinAtProviderId[] | {
|
|
@@ -389,6 +394,11 @@ export interface WebShellAtProvider {
|
|
|
389
394
|
order?: number;
|
|
390
395
|
tabs?: readonly WebShellAtProviderTab[];
|
|
391
396
|
renderItem?: WebShellAtItemRenderer;
|
|
397
|
+
/**
|
|
398
|
+
* Claims a typed `@query` that names no category, so it searches this
|
|
399
|
+
* provider instead of falling back to files.
|
|
400
|
+
*/
|
|
401
|
+
claimsTypedQuery?(query: string): boolean;
|
|
392
402
|
search(params: {
|
|
393
403
|
query: string;
|
|
394
404
|
signal: AbortSignal;
|
|
@@ -202,6 +202,12 @@ export interface DaemonPromptSettledEvent {
|
|
|
202
202
|
sessionId: string;
|
|
203
203
|
promptId: string;
|
|
204
204
|
outcome: DaemonPromptSettlementOutcome;
|
|
205
|
+
/**
|
|
206
|
+
* The client that submitted the prompt, from the terminal frame's
|
|
207
|
+
* envelope. Lets a submitter recognise its own turn when the admission
|
|
208
|
+
* response never reached it.
|
|
209
|
+
*/
|
|
210
|
+
originatorClientId?: string;
|
|
205
211
|
/** Daemon terminal reason. Present for completed and cancelled turns. */
|
|
206
212
|
stopReason?: string;
|
|
207
213
|
error?: {
|
|
@@ -277,9 +283,12 @@ export interface SendPromptOptions {
|
|
|
277
283
|
* runs to completion. Lets a caller act on "the prompt reached the session"
|
|
278
284
|
* without waiting for the whole turn — e.g. the scheduled-tasks "run now",
|
|
279
285
|
* which records the run at admission so a long/stalled turn or a closed tab
|
|
280
|
-
* can't lose the record.
|
|
286
|
+
* can't lose the record. Carries the daemon's id for the prompt, the key
|
|
287
|
+
* its terminal `turn_complete` / `turn_error` settles under.
|
|
281
288
|
*/
|
|
282
|
-
onAdmitted?: (
|
|
289
|
+
onAdmitted?: (admission: {
|
|
290
|
+
promptId: string;
|
|
291
|
+
}) => void;
|
|
283
292
|
}
|
|
284
293
|
export interface SubmitPromptOptions extends SendPromptOptions {
|
|
285
294
|
sessionId?: string;
|
|
@@ -440,11 +449,18 @@ export interface DaemonSessionActions {
|
|
|
440
449
|
generateSessionContent(prompt: string, opts?: {
|
|
441
450
|
signal?: AbortSignal;
|
|
442
451
|
}): AsyncGenerator<DaemonSessionGenerationEvent>;
|
|
443
|
-
getRewindSnapshots(
|
|
452
|
+
getRewindSnapshots(opts?: {
|
|
453
|
+
/** Rethrow failures raw instead of recording a notice; for best-effort
|
|
454
|
+
* callers that fall back on their own. */
|
|
455
|
+
silent?: boolean;
|
|
456
|
+
}): Promise<{
|
|
444
457
|
snapshots: DaemonRewindSnapshotInfo[];
|
|
445
458
|
}>;
|
|
446
459
|
rewindSession(promptId: string, opts?: {
|
|
447
460
|
rewindFiles?: boolean;
|
|
461
|
+
/** Rethrow failures raw instead of recording a notice; for best-effort
|
|
462
|
+
* callers that fall back on their own. */
|
|
463
|
+
silent?: boolean;
|
|
448
464
|
}): Promise<DaemonRewindResult>;
|
|
449
465
|
btwSession(question: string, opts?: {
|
|
450
466
|
signal?: AbortSignal;
|
|
@@ -10,6 +10,10 @@ export declare function useDaemonMemory(options?: DaemonResourceOptions): {
|
|
|
10
10
|
readFile: (filePath: string, opts?: {
|
|
11
11
|
maxBytes?: number;
|
|
12
12
|
}) => Promise<import("@qwen-code/sdk/daemon").DaemonWorkspaceFile>;
|
|
13
|
+
readMemoryFile: (filePath: string) => Promise<import("@qwen-code/sdk/daemon").DaemonWorkspaceFile | {
|
|
14
|
+
content: string;
|
|
15
|
+
truncated: boolean;
|
|
16
|
+
}>;
|
|
13
17
|
writeMemory: (req: import("@qwen-code/sdk/daemon").DaemonWriteMemoryRequest) => Promise<import("@qwen-code/sdk/daemon").DaemonWriteMemoryResult>;
|
|
14
18
|
reload: () => Promise<import("@qwen-code/sdk/daemon").DaemonWorkspaceMemoryStatus | undefined>;
|
|
15
19
|
data: import("@qwen-code/sdk/daemon").DaemonWorkspaceMemoryStatus | undefined;
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
import type { ReactNode } from 'react';
|
|
7
|
-
import type { DaemonAgentMutationResult, DaemonAuthProviderId, DaemonAuthProviderCatalog, DaemonAuthProviderInstallRequest, DaemonAuthProviderInstallResult, DaemonAuthStatusSnapshot, DaemonCapabilities, DaemonChannelMutationResult, DaemonChannelPairingApprovalResult, DaemonChannelPairingApprovalsSnapshot, DaemonChannelPairingRequestsSnapshot, DaemonChannelPairingRevocationRequest, DaemonChannelPairingRevocationResult, DaemonChannelsSnapshot, DaemonChannelStartupRequest, DaemonChannelTypeCatalog, DaemonChannelUpsertRequest, DaemonClient, DaemonCreateAgentRequest, DaemonWorkspaceGenerationEvent, DaemonGeneratedAgentContent, DaemonDeviceFlowStartResult, DaemonDeviceFlowState, ExtensionMutationResponse, ExtensionInteractionResponse, ExtensionInteractionResponseResult, ExtensionOperationStatus, ExtensionActiveOperations, ExtensionRefreshResponse, ExtensionScopeRequest, ExtensionInstallRequest, ExtensionArchiveInstallRequest, ExtensionInstallResponse, ExtensionUpdateCheckResponse, GoalControlRequest, GoalSnapshotV2, GoalStateResponse, DaemonInitWorkspaceResult, DaemonMcpRestartResult, DaemonMcpManageAction, DaemonMcpManageResult, DaemonRuntimeMcpAddRequest, DaemonRuntimeMcpAddResult, DaemonRuntimeMcpRemoveResult, DaemonUpdateAgentRequest, DaemonWorkspaceAgentDetail, DaemonWorkspaceAgentsStatus, DaemonWorkspaceAcpPreheatResult, DaemonWorkspaceEnvStatus, DaemonWorkspaceExtensionsStatus, DaemonWorkspaceFile, DaemonWorkspaceFileBytes, DaemonWorkspaceFileEditRequest, DaemonWorkspaceFileEditResult, DaemonWorkspaceFileWriteRequest, DaemonWorkspaceFileWriteResult, DaemonWorkspaceMcpStatus, DaemonWorkspaceMcpConfigStatus, DaemonMcpConfigMutationResult, DaemonMcpConfigScope, DaemonWorkspaceRuntimeStatus, DaemonWorkspaceMcpInitializeResult, DaemonWorkspaceMcpReloadResult, DaemonWorkspaceMcpToolsStatus, DaemonWorkspaceMcpResourcesStatus, DaemonWorkspaceMemoryStatus, DaemonWorkspaceCapability, DaemonWorkspaceRemovalResult, DaemonWorkspaceUpdate, DaemonWorkspacePreflightStatus, DaemonWorkspaceProvidersStatus, DaemonWorkspaceSkillsStatus, DaemonSkillToggleResult, DaemonSkillInstallRequest, DaemonSkillMutationResult, DaemonSkillScope, DaemonWorkspaceToolsStatus, DaemonBrand, DaemonWorkspaceSettingsStatus, DaemonSettingUpdateResult, DaemonModelDeleteRequest, DaemonModelDeleteResult, DaemonSessionGroup, DaemonSessionGroupCatalog, DaemonSessionGroupInput, DaemonSessionGroupUpdate, DaemonSessionListPage, DaemonSessionListPageOptions, DaemonSessionOrganizationResult, DaemonSessionOrganizationUpdate, DaemonSessionSummary, DaemonSessionExportFormat, DaemonSessionExportResult, DaemonStatusReport, DaemonStatusReportDetail, DaemonUsageDashboard, DaemonUsageRange, DaemonWriteMemoryRequest, DaemonWriteMemoryResult, DaemonRevisionRequest } from '@qwen-code/sdk/daemon';
|
|
7
|
+
import type { DaemonAgentMutationResult, DaemonAuthProviderId, DaemonAuthProviderCatalog, DaemonAuthProviderInstallRequest, DaemonAuthProviderInstallResult, DaemonAuthStatusSnapshot, DaemonCapabilities, DaemonChannelMutationResult, DaemonChannelPairingApprovalResult, DaemonChannelPairingApprovalsSnapshot, DaemonChannelPairingRequestsSnapshot, DaemonChannelPairingRevocationRequest, DaemonChannelPairingRevocationResult, DaemonChannelsSnapshot, DaemonChannelStartupRequest, DaemonChannelTypeCatalog, DaemonChannelUpsertRequest, DaemonClient, DaemonCreateAgentRequest, DaemonWorkspaceGenerationEvent, DaemonGeneratedAgentContent, DaemonDeviceFlowStartResult, DaemonDeviceFlowState, ExtensionMutationResponse, ExtensionInteractionResponse, ExtensionInteractionResponseResult, ExtensionOperationStatus, ExtensionActiveOperations, ExtensionRefreshResponse, ExtensionScopeRequest, ExtensionInstallRequest, ExtensionArchiveInstallRequest, ExtensionInstallResponse, ExtensionUpdateCheckResponse, GoalControlRequest, GoalSnapshotV2, GoalStateResponse, DaemonInitWorkspaceResult, DaemonMcpRestartResult, DaemonMcpManageAction, DaemonMcpManageResult, DaemonRuntimeMcpAddRequest, DaemonRuntimeMcpAddResult, DaemonRuntimeMcpRemoveResult, DaemonUpdateAgentRequest, DaemonWorkspaceAgentDetail, DaemonWorkspaceAgentsStatus, DaemonWorkspaceAcpPreheatResult, DaemonWorkspaceEnvStatus, DaemonWorkspaceExtensionsStatus, DaemonWorkspaceExtensionSummaries, DaemonExtensionEntry, DaemonWorkspaceFile, DaemonWorkspaceFileBytes, DaemonWorkspaceFileEditRequest, DaemonWorkspaceFileEditResult, DaemonWorkspaceFileWriteRequest, DaemonWorkspaceFileWriteResult, DaemonWorkspaceMcpStatus, DaemonWorkspaceMcpConfigStatus, DaemonMcpConfigMutationResult, DaemonMcpConfigScope, DaemonWorkspaceRuntimeStatus, DaemonWorkspaceMcpInitializeResult, DaemonWorkspaceMcpReloadResult, DaemonWorkspaceMcpToolsStatus, DaemonWorkspaceMcpResourcesStatus, DaemonWorkspaceMemoryStatus, DaemonWorkspaceCapability, DaemonWorkspaceRemovalResult, DaemonWorkspaceUpdate, DaemonWorkspacePreflightStatus, DaemonWorkspaceProvidersStatus, DaemonWorkspaceSkillsStatus, DaemonSkillToggleResult, DaemonSkillInstallRequest, DaemonSkillMutationResult, DaemonSkillScope, DaemonWorkspaceToolsStatus, DaemonBrand, DaemonWorkspaceSettingsStatus, DaemonSettingUpdateResult, DaemonModelDeleteRequest, DaemonModelDeleteResult, DaemonSessionGroup, DaemonSessionGroupCatalog, DaemonSessionGroupInput, DaemonSessionGroupUpdate, DaemonSessionListPage, DaemonSessionListPageOptions, DaemonSessionOrganizationResult, DaemonSessionOrganizationUpdate, DaemonSessionSummary, DaemonSessionExportFormat, DaemonSessionExportResult, DaemonStatusReport, DaemonStatusReportDetail, DaemonUsageDashboard, DaemonUsageRange, DaemonWriteMemoryRequest, DaemonWriteMemoryResult, DaemonRevisionRequest } from '@qwen-code/sdk/daemon';
|
|
8
8
|
export interface DaemonResourceOptions {
|
|
9
9
|
autoLoad?: boolean;
|
|
10
10
|
enabled?: boolean;
|
|
@@ -330,6 +330,8 @@ export interface DaemonWorkspaceActions {
|
|
|
330
330
|
installWorkspaceSkill(request: DaemonSkillInstallRequest): Promise<DaemonSkillMutationResult>;
|
|
331
331
|
deleteWorkspaceSkill(skillName: string, scope: DaemonSkillScope): Promise<DaemonSkillMutationResult>;
|
|
332
332
|
loadExtensionsStatus(): Promise<DaemonWorkspaceExtensionsStatus>;
|
|
333
|
+
loadExtensionSummaries(): Promise<DaemonWorkspaceExtensionSummaries>;
|
|
334
|
+
loadExtensionDetails(name: string): Promise<DaemonExtensionEntry>;
|
|
333
335
|
preheatAcp(timeoutMs?: number): Promise<DaemonWorkspaceAcpPreheatResult>;
|
|
334
336
|
loadToolsStatus(): Promise<DaemonWorkspaceToolsStatus>;
|
|
335
337
|
setWorkspaceToolEnabled(toolName: string, enabled: boolean): Promise<unknown>;
|
|
@@ -340,7 +342,9 @@ export interface DaemonWorkspaceActions {
|
|
|
340
342
|
name: string;
|
|
341
343
|
};
|
|
342
344
|
}): Promise<DaemonSettingUpdateResult>;
|
|
343
|
-
loadMemoryStatus(
|
|
345
|
+
loadMemoryStatus(options?: {
|
|
346
|
+
includeContent?: boolean;
|
|
347
|
+
}): Promise<DaemonWorkspaceMemoryStatus>;
|
|
344
348
|
/**
|
|
345
349
|
* `opts.maxBytes` is how a caller accepts partial content: without a window
|
|
346
350
|
* argument the daemon refuses any file above its own read cap instead of
|
package/dist/types/index.d.ts
CHANGED
|
@@ -10,7 +10,8 @@ export type { WebShellBrowserNotificationsOptions } from './browser-turn-notific
|
|
|
10
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
11
|
export { createJavaManagedAgentProvider, type JavaManagedAgentProviderOptions, } from './components/managed/java-managed-agent-provider';
|
|
12
12
|
export { ManagedAgentWebShell, type ManagedAgentWebShellProps, } from './ManagedAgentWebShell';
|
|
13
|
-
export
|
|
13
|
+
export type { ManagedArtifact, ManagedArtifactPage, ManagedArtifactResponse, ManagedArtifactSave, ManagedToolResult, ManagedToolResultReader, ManagedToolResultResponse, } from './components/managed/managed-tool-result-types';
|
|
14
|
+
export { type ManagedAgentCommandOptions, type ManagedAgentPendingAction, type ManagedAgentProvider, type ManagedAgentRequestOptions, type ManagedAgentRuntimeState, type ManagedAgentSessionEvent, type ManagedAgentSessionEventType, type ManagedAgentSessionPhase, type ManagedAgentSessionSummary, type ManagedAgentSessionTranscript, type ManagedAgentTurnAdmission, } from './components/managed/managed-agent-provider';
|
|
14
15
|
export interface WebShellWithProvidersProps extends WebShellProps {
|
|
15
16
|
/**
|
|
16
17
|
* Opt in to URL routing. Explicit initial session target props override the
|
|
@@ -4,8 +4,9 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
import type React from 'react';
|
|
7
|
-
export declare function LiveVoiceButton({ hideInactiveTrigger, open, onOpenChange, onSupportedChange, onRequestFocusFallback, }?: {
|
|
7
|
+
export declare function LiveVoiceButton({ hideInactiveTrigger, portalContainer, open, onOpenChange, onSupportedChange, onRequestFocusFallback, }?: {
|
|
8
8
|
hideInactiveTrigger?: boolean;
|
|
9
|
+
portalContainer?: HTMLElement | null;
|
|
9
10
|
open?: boolean;
|
|
10
11
|
onOpenChange?: (open: boolean) => void;
|
|
11
12
|
onSupportedChange?: (supported: boolean) => void;
|
|
@@ -21,6 +21,7 @@ export interface NavigationSessionProps {
|
|
|
21
21
|
interface NavigationController {
|
|
22
22
|
route: WebShellRoute;
|
|
23
23
|
revision: number;
|
|
24
|
+
historyRevision?: number;
|
|
24
25
|
openPage: (page: WebShellPage) => void;
|
|
25
26
|
returnToChat: () => void;
|
|
26
27
|
reconcilePage: (page: WebShellPage | undefined) => void;
|
package/dist/types/settings.d.ts
CHANGED
|
@@ -53,6 +53,7 @@ declare const SETTING_KEYS: {
|
|
|
53
53
|
readonly 'setting:scheduled-tasks': "experimental.cron";
|
|
54
54
|
readonly 'setting:session-writer-lease': "experimental.sessionWriterLease";
|
|
55
55
|
readonly 'setting:agent-team': "experimental.agentTeam";
|
|
56
|
+
readonly 'setting:agent-collaboration': "experimental.agentCollaboration";
|
|
56
57
|
readonly 'setting:omni-media-delivery': "omni.enabled";
|
|
57
58
|
readonly 'setting:artifacts': "experimental.artifact";
|
|
58
59
|
readonly 'setting:tool-use-summaries': "experimental.emitToolUseSummaries";
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Qwen Team
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import type { Trajectory, TrajectoryRow, TrajectoryTurn } from './types';
|
|
7
|
+
export type TrajectoryVisualRow = {
|
|
8
|
+
kind: 'turn';
|
|
9
|
+
key: string;
|
|
10
|
+
turn: TrajectoryTurn;
|
|
11
|
+
} | {
|
|
12
|
+
kind: 'row';
|
|
13
|
+
key: string;
|
|
14
|
+
row: TrajectoryRow;
|
|
15
|
+
};
|
|
16
|
+
export interface TrajectoryLayout {
|
|
17
|
+
rows: TrajectoryVisualRow[];
|
|
18
|
+
ancestors: Map<string, string[]>;
|
|
19
|
+
groups: Set<string>;
|
|
20
|
+
groupIdentities: Map<string, string>;
|
|
21
|
+
unresolvedParents: Set<string>;
|
|
22
|
+
}
|
|
23
|
+
export declare function buildTrajectoryLayout(trajectory: Trajectory): TrajectoryLayout;
|
|
24
|
+
/** Range context is computed before collapse, so hiding never changes a hit. */
|
|
25
|
+
export declare function trajectoryRowsInRange(layout: TrajectoryLayout, inRange: ReadonlySet<string> | undefined): TrajectoryVisualRow[];
|
|
26
|
+
export declare function visibleTrajectoryRows(layout: TrajectoryLayout, rangeRows: TrajectoryVisualRow[], collapsed: ReadonlySet<string>): TrajectoryVisualRow[];
|
|
27
|
+
export declare function visibleTrajectoryAncestor(layout: TrajectoryLayout, key: string, visible: ReadonlySet<string>): string | undefined;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Qwen Team
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
type FilterMessage = string | ((vars?: Record<string, string | number>) => string);
|
|
7
|
+
export declare const TRAJECTORY_FILTER_MESSAGES_EN: Record<string, FilterMessage>;
|
|
8
|
+
export declare const TRAJECTORY_FILTER_MESSAGES_ZH: Record<string, FilterMessage>;
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Qwen Team
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import type { Trajectory, TrajectoryRow } from './types';
|
|
7
|
+
export interface TrajectoryFilter {
|
|
8
|
+
query: string;
|
|
9
|
+
type: 'all' | TrajectoryRow['kind'];
|
|
10
|
+
status: 'all' | 'success' | 'error' | 'cancelled' | 'running' | 'unknown';
|
|
11
|
+
}
|
|
12
|
+
export interface TrajectorySearchIndex {
|
|
13
|
+
rows: Array<{
|
|
14
|
+
key: string;
|
|
15
|
+
kind: TrajectoryRow['kind'];
|
|
16
|
+
status?: Exclude<TrajectoryFilter['status'], 'all'>;
|
|
17
|
+
fields: string[];
|
|
18
|
+
}>;
|
|
19
|
+
truncatedCount: number;
|
|
20
|
+
}
|
|
21
|
+
export declare function buildTrajectorySearchIndex(trajectory: Trajectory): TrajectorySearchIndex;
|
|
22
|
+
export declare function filterTrajectory(index: TrajectorySearchIndex, filter: TrajectoryFilter): string[];
|
|
@@ -81,11 +81,13 @@ export interface TrajectoryRequestRow extends TrajectoryRowBase {
|
|
|
81
81
|
model?: string;
|
|
82
82
|
/** Folded from the round's assistant block; absent when none carried it. */
|
|
83
83
|
usage?: DaemonTurnUsage;
|
|
84
|
+
recordId?: string;
|
|
85
|
+
executionId?: string;
|
|
84
86
|
responseId?: string;
|
|
85
87
|
promptId?: string;
|
|
86
88
|
/** Set when a subagent issued the request. */
|
|
87
89
|
subagentId?: string;
|
|
88
|
-
/**
|
|
90
|
+
/** Tool call that spawned the subagent, when resolvable. */
|
|
89
91
|
parentToolCallId?: string;
|
|
90
92
|
}
|
|
91
93
|
export interface TrajectoryMessageRow extends TrajectoryRowBase {
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Qwen Team
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import type { TimelineModel } from './buildTimeline';
|
|
7
|
+
export interface TimelineViewport {
|
|
8
|
+
start: number;
|
|
9
|
+
end: number;
|
|
10
|
+
}
|
|
11
|
+
export interface TimelineViewportController {
|
|
12
|
+
viewport: TimelineViewport | undefined;
|
|
13
|
+
currentView: () => {
|
|
14
|
+
start: number;
|
|
15
|
+
length: number;
|
|
16
|
+
};
|
|
17
|
+
applyViewport: (next: TimelineViewport | undefined) => void;
|
|
18
|
+
}
|
|
19
|
+
export declare function useTimelineViewport(model: TimelineModel | undefined): TimelineViewportController;
|
|
@@ -59,55 +59,40 @@ export type TrajectoryWindowFailure = {
|
|
|
59
59
|
} | {
|
|
60
60
|
kind: 'unreadable';
|
|
61
61
|
message: string;
|
|
62
|
+
} | {
|
|
63
|
+
kind: 'expired' | 'protocol' | 'budget';
|
|
62
64
|
};
|
|
65
|
+
export declare const TRAJECTORY_BOOKMARK_LIMIT = 64;
|
|
66
|
+
export declare const TRAJECTORY_CURSOR_BUDGET: number;
|
|
63
67
|
export interface TrajectoryWindow {
|
|
64
68
|
trajectory: Trajectory | undefined;
|
|
65
69
|
status: 'idle' | 'loading' | 'ready' | 'error';
|
|
66
|
-
/**
|
|
67
|
-
* The newest page could not be read. The window already on screen, if any,
|
|
68
|
-
* is kept.
|
|
69
|
-
*/
|
|
70
70
|
error?: TrajectoryWindowFailure;
|
|
71
|
-
/**
|
|
72
|
-
* Pages read so far by the load under way, or held by the window once it
|
|
73
|
-
* is ready. What the placeholder counts while the walk back is running.
|
|
74
|
-
*/
|
|
75
71
|
loadedPages: number;
|
|
76
|
-
|
|
77
|
-
* The session has history older than the window: the walk stopped at the
|
|
78
|
-
* page cap, at a page the daemon gave no cursor for, or at an older page it
|
|
79
|
-
* could not read.
|
|
80
|
-
*/
|
|
72
|
+
windowPages: number;
|
|
81
73
|
truncated: boolean;
|
|
82
|
-
/**
|
|
83
|
-
* An older page could not be read, so the window stops just after it. The
|
|
84
|
-
* newer pages are drawn; `refresh` is the retry.
|
|
85
|
-
*/
|
|
86
74
|
olderFailure?: TrajectoryWindowFailure;
|
|
87
|
-
|
|
75
|
+
navigationError?: TrajectoryWindowFailure;
|
|
76
|
+
mode: 'latest' | 'history';
|
|
77
|
+
navigationVersion: number;
|
|
78
|
+
canRefresh: boolean;
|
|
79
|
+
canOlder: boolean;
|
|
80
|
+
canNewer: boolean;
|
|
81
|
+
historyReleased: boolean;
|
|
82
|
+
bookmarks: number;
|
|
88
83
|
refresh: () => void;
|
|
84
|
+
older: () => void;
|
|
85
|
+
newer: () => void;
|
|
86
|
+
retry: () => void;
|
|
89
87
|
}
|
|
90
88
|
/**
|
|
91
|
-
*
|
|
92
|
-
*
|
|
93
|
-
*
|
|
94
|
-
* timing frames, and the chat store is fed by the live stream and by bulk
|
|
95
|
-
* replay, neither of which carries them. Reading here also keeps the window
|
|
96
|
-
* contiguous by construction, which is what lets the projection pair a frame
|
|
97
|
-
* with what it measured.
|
|
98
|
-
*
|
|
99
|
-
* A load walks back from the newest page by cursor, up to the page cap, and
|
|
100
|
-
* the window lands once, whole, when the walk ends. Nothing is ever put in
|
|
101
|
-
* front of rows already drawn: a list that grew upwards under the reader would
|
|
102
|
-
* have to move its scroll offset, its keys, its selection and its focus in
|
|
103
|
-
* step, and no part of that is observable outside a real browser.
|
|
104
|
-
*
|
|
105
|
-
* `refresh` rebuilds the window from the newest page rather than splicing into
|
|
106
|
-
* it: page boundaries are chosen per request, so a fresh page and the held
|
|
107
|
-
* ones overlap by an unknown amount and cannot be joined without dropping or
|
|
108
|
-
* repeating records.
|
|
89
|
+
* Windows are contiguous cursor walks, committed whole. Only bookmarks survive
|
|
90
|
+
* a switch: replaying a saved cursor stays in its snapshot, whereas a read
|
|
91
|
+
* without one explicitly returns to the latest snapshot.
|
|
109
92
|
*/
|
|
110
93
|
export declare function useTrajectoryWindow(loadPage: TrajectoryPageLoader | undefined, options?: {
|
|
111
94
|
pageSize?: number;
|
|
112
95
|
maxPages?: number;
|
|
96
|
+
bookmarkLimit?: number;
|
|
97
|
+
cursorBudget?: number;
|
|
113
98
|
}): TrajectoryWindow;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Qwen Team
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
type WindowMessage = string | ((vars?: Record<string, string | number>) => string);
|
|
7
|
+
export declare const TRAJECTORY_WINDOW_MESSAGES_EN: Record<string, WindowMessage>;
|
|
8
|
+
export declare const TRAJECTORY_WINDOW_MESSAGES_ZH: Record<string, WindowMessage>;
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Qwen Team
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import type { DaemonTranscriptBlock } from '@qwen-code/sdk/daemon';
|
|
7
|
+
/**
|
|
8
|
+
* Whether everything a cancelled turn left behind its prompt can go with it.
|
|
9
|
+
* Thoughts count as nothing: cancelling mid-reasoning is exactly when taking
|
|
10
|
+
* the prompt back matters, and the TUI's restore-on-cancel treats them the
|
|
11
|
+
* same way. An answer, a tool call, shell output, a permission request or a
|
|
12
|
+
* later user message all keep the turn.
|
|
13
|
+
*
|
|
14
|
+
* Only meaningful once the daemon has settled the turn: until its terminal
|
|
15
|
+
* event arrives, "nothing received yet" is not "nothing produced".
|
|
16
|
+
*/
|
|
17
|
+
export declare function cancelledTurnProducedNothing(blocksAfterPrompt: readonly DaemonTranscriptBlock[]): boolean;
|
|
@@ -37,6 +37,11 @@ export declare function parseUserMessageContentSafely(content: string, parser: U
|
|
|
37
37
|
export declare function getComposerTagSerialized(tag: WebShellComposerTag): string;
|
|
38
38
|
export declare function getComposerTagIconUrl(kind: WebShellComposerTagKind | undefined, customIconUrls?: WebShellComposerTagIconMap): string | undefined;
|
|
39
39
|
export declare function isBuiltinComposerTagIconUrl(iconUrl: string | undefined): boolean;
|
|
40
|
-
export
|
|
40
|
+
export interface ComposerTagKnownPlacement {
|
|
41
|
+
start: number;
|
|
42
|
+
end: number;
|
|
43
|
+
tag: WebShellComposerTag;
|
|
44
|
+
}
|
|
45
|
+
export declare function createInputAnnotationsFromComposerTags(content: string, tags: readonly WebShellComposerTag[], knownPlacements?: readonly ComposerTagKnownPlacement[]): DaemonInputAnnotation[];
|
|
41
46
|
export declare function splitComposerTagContentByAnnotations(content: string, inputAnnotations?: readonly DaemonInputAnnotation[]): ComposerTagContentSegment[];
|
|
42
47
|
export declare function getComposerTagViewModel(tag: WebShellComposerTag, composerTagIcons?: WebShellComposerTagIconMap): ComposerTagViewModel;
|
|
@@ -13,3 +13,9 @@ export declare function extractBareModelId(modelId: string): string;
|
|
|
13
13
|
* If the input has no colon, returns it unchanged.
|
|
14
14
|
*/
|
|
15
15
|
export declare function decodeVisionModelForPicker(storedValue: string): string;
|
|
16
|
+
export declare function resolveFastModelForPicker(storedValue: string, models: readonly {
|
|
17
|
+
id: string;
|
|
18
|
+
baseModelId?: string;
|
|
19
|
+
authType?: string;
|
|
20
|
+
baseUrl?: string;
|
|
21
|
+
}[]): string;
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Copyright 2026 Qwen Team
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
export declare const WEB_SHELL_PAGES: readonly ["plugins", "channels", "scheduled-tasks", "goals", "settings"];
|
|
6
|
+
export declare const WEB_SHELL_PAGES: readonly ["plugins", "channels", "live", "scheduled-tasks", "goals", "settings"];
|
|
7
7
|
export type WebShellPage = (typeof WEB_SHELL_PAGES)[number];
|
|
8
8
|
export interface SessionUrlTarget {
|
|
9
9
|
sessionId?: string;
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
import type { DaemonCapabilities, DaemonSessionSummary, DaemonWorkspaceCapability } from '@qwen-code/sdk/daemon';
|
|
7
|
+
export declare function isAgentCollaborationEnabledForWorkspace(capabilities: DaemonCapabilities | undefined, cwd: string | undefined): boolean;
|
|
7
8
|
/**
|
|
8
9
|
* Last path segment of an absolute workspace cwd, for a compact per-workspace
|
|
9
10
|
* label (e.g. `/home/me/projects/api` → `api`). Falls back to the full path when
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@qwen-code/web-shell",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.25.0-nightly.20261009.085a44f336",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "git+https://github.com/QwenLM/qwen-code.git",
|
|
@@ -72,6 +72,7 @@
|
|
|
72
72
|
},
|
|
73
73
|
"devDependencies": {
|
|
74
74
|
"@playwright/test": "1.61.1",
|
|
75
|
+
"@qwen-code/acp-bridge": "file:../acp-bridge",
|
|
75
76
|
"@qwen-code/sdk": "file:../sdk-typescript",
|
|
76
77
|
"@tailwindcss/vite": "^4.3.2",
|
|
77
78
|
"@types/hast": "^3.0.5",
|