@qwen-code/web-shell 0.26.1-nightly.20261025.8e28d5380c → 0.26.2-preview.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/dist/{PierreFilePreview-340RefmX.js → PierreFilePreview-Cz8IByld.js} +1 -1
  2. package/dist/{SpreadsheetPreview-DEdSw9Jk.js → SpreadsheetPreview-BSdHX6Lq.js} +2 -2
  3. package/dist/{WorkspaceFileBrowser-QQaafczq.js → WorkspaceFileBrowser-B0EUYL2u.js} +2 -2
  4. package/dist/{agents-route-l0Ktd3iD.js → agents-route-DrM0Iy5a.js} +2 -2
  5. package/dist/daemon-react-sdk.js +1 -1
  6. package/dist/{index-R4OagsCt.js → index-DhmGlDKS.js} +51253 -51454
  7. package/dist/index.js +3 -3
  8. package/dist/sw.js +1 -1
  9. package/dist/transcript.js +8882 -8873
  10. package/dist/types/components/ChatEditor.d.ts +5 -1
  11. package/dist/types/components/MessageItem.d.ts +1 -0
  12. package/dist/types/components/managed/ManagedSessionActions.d.ts +2 -1
  13. package/dist/types/components/managed/ManagedSessionsPage.d.ts +1 -2
  14. package/dist/types/components/managed/WorkspaceBindingCreator.d.ts +1 -2
  15. package/dist/types/components/managed/generated/managed-agent-api.d.ts +151 -57
  16. package/dist/types/components/managed/java-managed-agent-client.d.ts +9 -1
  17. package/dist/types/components/managed/managed-agent-provider.d.ts +8 -9
  18. package/dist/types/components/managed/use-managed-file-references.d.ts +7 -0
  19. package/dist/types/components/managed/use-managed-file-upload.d.ts +23 -0
  20. package/dist/types/components/managed/use-managed-session-rename.d.ts +2 -2
  21. package/dist/types/components/messages/AssistantMessage.d.ts +1 -0
  22. package/dist/types/components/plugins/PluginManagerPage.d.ts +3 -1
  23. package/dist/types/components/ui/tooltip.d.ts +3 -1
  24. package/dist/types/settings.d.ts +1 -0
  25. package/dist/types/utils/selectionClipboard.d.ts +1 -0
  26. package/dist/types/utils/selectionClipboard.transcript-stub.d.ts +1 -0
  27. package/dist/types/utils/turnDuration.d.ts +1 -0
  28. package/dist/{useDaemonMidTurnInjected-DkHzPzzI.js → useDaemonMidTurnInjected-DY7azBbC.js} +10 -45
  29. package/package.json +1 -1
  30. package/dist/types/components/managed/ManagedSessionCwdControl.d.ts +0 -9
  31. package/dist/types/components/managed/use-managed-cwd-change.d.ts +0 -21
@@ -8,8 +8,9 @@ import type { DaemonSessionGroupPresetColor, DaemonWorkspaceGitStatus, Reasoning
8
8
  import type { CommandDisplayCategoryOrder } from '../utils/commandDisplay';
9
9
  import type { SkillInfo } from '../completions/slashCompletion';
10
10
  import type { DaemonReasoningControls } from '@qwen-code/web-shell/daemon-react-sdk';
11
- import { type WebShellComposerInput, type WebShellComposerTagIconMap, type WebShellAtProvider, type WebShellBuiltinAtProvidersConfig } from '../customization';
11
+ import { type WebShellComposerInput, type WebShellComposerTag, type WebShellComposerTagIconMap, type WebShellAtProvider, type WebShellBuiltinAtProvidersConfig } from '../customization';
12
12
  import { type ComposerSubmitMetadata, type EditorHandle } from '../hooks/useComposerCore';
13
+ import { type UseFileUploadOptions } from '../hooks/useFileUpload';
13
14
  import type { ContextCompressionControls } from '../hooks/useContextUsageControls';
14
15
  import type { WebShellUnavailableModel, WebShellUnavailableModelTooltipMount } from '../unavailableModels';
15
16
  import type { VoiceStatusRevision, VoiceWorkspaceTarget } from '../voice/voice-workspace-target';
@@ -136,6 +137,9 @@ interface ChatEditorProps {
136
137
  shellModeEnabled?: boolean;
137
138
  workspaceFeaturesEnabled?: boolean;
138
139
  fileReferenceActions?: AtMentionWorkspaceActions;
140
+ fileUploadTarget?: UseFileUploadOptions & {
141
+ createReference(path: string): WebShellComposerTag;
142
+ };
139
143
  persistFileReferences?: boolean;
140
144
  attachmentsEnabled?: boolean;
141
145
  onChatWidthModeChange?: (mode: '1000' | 'wide') => void;
@@ -35,6 +35,7 @@ interface MessageItemProps {
35
35
  onBranchSession?: (branchRecordId?: string) => void | Promise<void>;
36
36
  branchRecordId?: string;
37
37
  showAssistantActions?: boolean;
38
+ assistantFooterAlwaysVisible?: boolean;
38
39
  showAssistantBranch?: boolean;
39
40
  /** Turn id marks are keyed by; unset hides the marks for this message. */
40
41
  assistantFeedbackTurnId?: string;
@@ -1,7 +1,7 @@
1
1
  import type { ManagedAgentSessionSummary, ManagedLifecycleAction } from './managed-agent-provider';
2
2
  import type { ManagedLifecycleState } from './use-managed-session-lifecycle';
3
3
  export declare function managedSessionActions(session: ManagedAgentSessionSummary): ManagedLifecycleAction[];
4
- export declare function ManagedSessionActions({ session, sidebar, lifecycle, exporting, state, onAction, onExport, onConfirm, }: {
4
+ export declare function ManagedSessionActions({ session, sidebar, lifecycle, exporting, state, onAction, onExport, onConfirm, onRename, }: {
5
5
  session: ManagedAgentSessionSummary;
6
6
  sidebar?: boolean;
7
7
  lifecycle: boolean;
@@ -10,6 +10,7 @@ export declare function ManagedSessionActions({ session, sidebar, lifecycle, exp
10
10
  onAction: (session: ManagedAgentSessionSummary, action: ManagedLifecycleAction) => void;
11
11
  onExport?: (sessionId: string, format: 'html' | 'md') => void;
12
12
  onConfirm: (sessionId: string) => void;
13
+ onRename?: () => void;
13
14
  }): import("react/jsx-runtime").JSX.Element | null;
14
15
  export declare function ManagedLifecycleConfirmation({ session, action, onConfirm, onClose, }: {
15
16
  session: ManagedAgentSessionSummary;
@@ -2,7 +2,7 @@ import type { WorkspaceSelectorOption } from '../WorkspaceSelector';
2
2
  import type { ManagedCreationSkillsSource } from './managed-creation-skills';
3
3
  import { type ManagedArchivedSessionsStatus } from './ManagedArchivedSessions';
4
4
  import type { ManagedAgentProvider, ManagedAgentWorkspace } from './managed-agent-provider';
5
- export declare function ManagedSessionsPage({ sessionId, workspaceCreationOpen, onWorkspaceCreationOpenChange, onWorkspaceCreated, onOpenLocalWorkspace, daemonWorkspaces, onSelectDaemonWorkspace, onWorkspacesChange, onSelectSession, onOpenSession, workspaceId, onSelectWorkspace, onSessionWorkspaceChange, managedAgentProvider, navigationTarget, archivedNavigationTarget, onArchivedSessionsStatusChange, interactive, creationSkills, onManageSkills, navigationActive, navigationSearch, }: {
5
+ export declare function ManagedSessionsPage({ sessionId, workspaceCreationOpen, onWorkspaceCreationOpenChange, onWorkspaceCreated, onOpenLocalWorkspace, daemonWorkspaces, onSelectDaemonWorkspace, onWorkspacesChange, onSelectSession, onOpenSession, workspaceId, onSelectWorkspace, onSessionWorkspaceChange, managedAgentProvider, navigationTarget, archivedNavigationTarget, onArchivedSessionsStatusChange, interactive, creationSkills, navigationActive, navigationSearch, }: {
6
6
  sessionId?: string;
7
7
  workspaceCreationOpen?: boolean;
8
8
  onWorkspaceCreationOpenChange?: (open: boolean) => void;
@@ -23,7 +23,6 @@ export declare function ManagedSessionsPage({ sessionId, workspaceCreationOpen,
23
23
  onArchivedSessionsStatusChange?: (status: ManagedArchivedSessionsStatus) => void;
24
24
  interactive?: boolean;
25
25
  creationSkills?: ManagedCreationSkillsSource;
26
- onManageSkills?: () => void;
27
26
  navigationActive?: boolean;
28
27
  navigationSearch?: string;
29
28
  }): import("react/jsx-runtime").JSX.Element;
@@ -1,7 +1,7 @@
1
1
  import { type ManagedCreationSkillsSource } from './managed-creation-skills';
2
2
  import type { WorkspaceSelectorOption } from '../WorkspaceSelector';
3
3
  import type { ManagedAgentProvider } from './managed-agent-provider';
4
- export declare function WorkspaceBindingCreator({ provider, workspaceCreationOpen, onWorkspaceCreationOpenChange, onOpenLocalWorkspace, daemonWorkspaces, onSelectDaemonWorkspace, creationOnly, clientId, onCreated, onAbandoned, workspaceId: explicitWorkspaceId, onSelectWorkspace, onWorkspaceCreated, interactive, creationSkills, onManageSkills, handoff, onOpenHandoffSource, }: {
4
+ export declare function WorkspaceBindingCreator({ provider, workspaceCreationOpen, onWorkspaceCreationOpenChange, onOpenLocalWorkspace, daemonWorkspaces, onSelectDaemonWorkspace, creationOnly, clientId, onCreated, onAbandoned, workspaceId: explicitWorkspaceId, onSelectWorkspace, onWorkspaceCreated, interactive, creationSkills, handoff, onOpenHandoffSource, }: {
5
5
  provider: ManagedAgentProvider;
6
6
  workspaceCreationOpen?: boolean;
7
7
  onWorkspaceCreationOpenChange?: (open: boolean) => void;
@@ -17,7 +17,6 @@ export declare function WorkspaceBindingCreator({ provider, workspaceCreationOpe
17
17
  onWorkspaceCreated?: (workspaceId: string) => void;
18
18
  interactive?: boolean;
19
19
  creationSkills?: ManagedCreationSkillsSource;
20
- onManageSkills?: () => void;
21
20
  handoff?: import('./managed-recovery-handoff').ManagedRecoveryHandoff;
22
21
  onOpenHandoffSource?: () => void;
23
22
  }): import("react/jsx-runtime").JSX.Element;
@@ -150,23 +150,6 @@ export interface paths {
150
150
  patch?: never;
151
151
  trace?: never;
152
152
  };
153
- "/api/agent/web-shell/v1/sessions/cwd/change": {
154
- parameters: {
155
- query?: never;
156
- header?: never;
157
- path?: never;
158
- cookie?: never;
159
- };
160
- get?: never;
161
- put?: never;
162
- /** @description W2, implemented: the camelCase twin of the public changeSessionCwd with the matched refusal order: 400 invalid_request for a missing or malformed field; 401 actor_required without a trusted actor; 400 invalid_idempotency_key for a malformed idempotencyKey — with two documented divergences: a key over 128 characters is refused during request validation with 400 invalid_request before the service's check, and a blank idempotencyKey is refused there too, while the public header answers 400 invalid_idempotency_key for both shapes; 400 invalid_cwd for a lexical violation and 400 invalid_request for an expectedContextRevision below 1; 404 session_not_found for an unknown Session id; 400 unsupported_feature for an unbound Session; 404 session_not_found for an unreadable Session; 409 idempotency_conflict when one key carries different content, and a completed change under the same key always replays instead, before the role refusal; 403 session_operation_forbidden when a readable actor's Workspace role is below OPERATOR; 409 workspace_unavailable when execution is disabled; 404 session_not_found for a deleted Session; then 409 session_state_conflict, 409 workspace_unavailable from moved Registry facts (the recorded create-command actor's grant included, and the settlement re-checks the V56-persisted initiator the same way, so demoting either actor fails the operation, exactly like the public surface), 409 context_revision_conflict and 409 session_context_busy. Poll the operation or await session.context.changed; do not treat 202 as activation. */
163
- post: operations["webShellChangeCwd"];
164
- delete?: never;
165
- options?: never;
166
- head?: never;
167
- patch?: never;
168
- trace?: never;
169
- };
170
153
  "/api/agent/web-shell/v1/operations/query": {
171
154
  parameters: {
172
155
  query?: never;
@@ -1034,6 +1017,46 @@ export interface paths {
1034
1017
  patch?: never;
1035
1018
  trace?: never;
1036
1019
  };
1020
+ "/api/agent/web-shell/v1/workspaces/files/upload": {
1021
+ parameters: {
1022
+ query?: never;
1023
+ header?: never;
1024
+ path?: never;
1025
+ cookie?: never;
1026
+ };
1027
+ get?: never;
1028
+ put?: never;
1029
+ /**
1030
+ * Upload one binary file to a persisted Workspace
1031
+ * @description Requires a trusted actor with OPERATOR or OWNER access, enabled Workspace files, verified LOCAL or SSH_LOCAL storage and an updated CLI. Uploads are limited to 8 MiB, require an existing parent directory and never overwrite an occupied path. A durable physical storage hold excludes tool execution and retirement until the original upload has a definite terminal result. Repeating the same upload ID reconciles its original command without replaying mutation; changed requests conflict. CSI is unsupported and never falls back to a primary Workspace. An uncertain result returns 503 workspace_upload_pending and must be queried by the original upload ID.
1032
+ */
1033
+ post: operations["webShellWorkspaceFilesUpload"];
1034
+ delete?: never;
1035
+ options?: never;
1036
+ head?: never;
1037
+ patch?: never;
1038
+ trace?: never;
1039
+ };
1040
+ "/api/agent/web-shell/v1/workspaces/files/uploads/query": {
1041
+ parameters: {
1042
+ query?: never;
1043
+ header?: never;
1044
+ path?: never;
1045
+ cookie?: never;
1046
+ };
1047
+ get?: never;
1048
+ put?: never;
1049
+ /**
1050
+ * Reconcile the original Workspace upload
1051
+ * @description Only the admitting actor with a current Workspace operator grant can query the upload. Status checks use the frozen original storage target and never execute an upload or select a replacement Runtime. Reconciliation remains available through storage fencing; pending commands retain their durable hold. The server also reconciles pending uploads after client cancellation or restart.
1052
+ */
1053
+ post: operations["webShellWorkspaceFilesUploadQuery"];
1054
+ delete?: never;
1055
+ options?: never;
1056
+ head?: never;
1057
+ patch?: never;
1058
+ trace?: never;
1059
+ };
1037
1060
  }
1038
1061
  export type webhooks = Record<string, never>;
1039
1062
  export interface components {
@@ -1270,7 +1293,8 @@ export interface components {
1270
1293
  };
1271
1294
  WebShellSessionCapabilities: {
1272
1295
  /**
1273
- * @description True when Workspace files are enabled, the bound Session is active and undeleted, the caller holds OPERATOR or above on the Workspace and the exact ACTIVE Registry generation/storage and create-command-actor OPERATOR/OWNER grant still hold, matching cwd admission. This does not promise an idle Session and is independent of workspaceTurns execution-profile gates. Missing means false. Existing operations remain queryable under read authorization even when this capability is false.
1296
+ * @deprecated
1297
+ * @description Retired: Session directory-change submission has been removed; always false.
1274
1298
  * @default false
1275
1299
  */
1276
1300
  cwdChange?: boolean;
@@ -1484,15 +1508,6 @@ export interface components {
1484
1508
  canCreateSession?: true;
1485
1509
  }) | null;
1486
1510
  };
1487
- WebShellChangeCwdRequest: {
1488
- /** Format: uuid */
1489
- sessionId: string;
1490
- idempotencyKey: string;
1491
- cwdRelative: components["schemas"]["WorkspaceRelativePath"];
1492
- /** Format: int64 */
1493
- expectedContextRevision: number;
1494
- requestId?: string | null;
1495
- };
1496
1511
  WebShellOperationRequest: {
1497
1512
  /** Format: uuid */
1498
1513
  sessionId: string;
@@ -2104,6 +2119,8 @@ export interface components {
2104
2119
  directory: string;
2105
2120
  entries: components["schemas"]["WebShellWorkspaceFileEntry"][];
2106
2121
  truncated: boolean;
2122
+ /** @description Present only when the selected CLI supports durable Workspace uploads. */
2123
+ maxUploadBytes?: number;
2107
2124
  };
2108
2125
  WebShellWorkspaceFileSnapshot: {
2109
2126
  scopeRevision: string;
@@ -2482,6 +2499,29 @@ export interface components {
2482
2499
  idempotencyKey: string;
2483
2500
  command: components["schemas"]["ManagedExtensionApplySelection"];
2484
2501
  };
2502
+ WebShellWorkspaceFileUploadResult: {
2503
+ scopeRevision: string;
2504
+ /** Format: uuid */
2505
+ uploadId: string;
2506
+ path: string;
2507
+ sizeBytes: number;
2508
+ sha256: string;
2509
+ };
2510
+ WebShellWorkspaceFileUploadStatus: {
2511
+ scopeRevision: string;
2512
+ /** Format: uuid */
2513
+ uploadId: string;
2514
+ path: string;
2515
+ sizeBytes: number;
2516
+ sha256: string;
2517
+ /** @enum {string} */
2518
+ state: "completed" | "failed" | "pending";
2519
+ code?: string;
2520
+ };
2521
+ WebShellWorkspaceFileUploadQueryRequest: {
2522
+ /** Format: uuid */
2523
+ uploadId: string;
2524
+ };
2485
2525
  };
2486
2526
  responses: {
2487
2527
  /** @description The authenticated actor belongs to another tenant than X-Qwen-Tenant-Id or has an invalid ID (actor_scope_mismatch, which the tenant filter answers on every /v1/agents/ and WebShell route), or the resource is readable but the actor lacks this operation or the original Action responder permission. Artifact content reads may also return artifact_content_forbidden when the actor cannot read the original bytes. */
@@ -2851,36 +2891,6 @@ export interface operations {
2851
2891
  413: components["responses"]["PayloadTooLarge"];
2852
2892
  };
2853
2893
  };
2854
- webShellChangeCwd: {
2855
- parameters: {
2856
- query?: never;
2857
- header?: never;
2858
- path?: never;
2859
- cookie?: never;
2860
- };
2861
- requestBody: {
2862
- content: {
2863
- "application/json": components["schemas"]["WebShellChangeCwdRequest"];
2864
- };
2865
- };
2866
- responses: {
2867
- /** @description Durable cwd operation; acceptance does not mean the new cwd is active. */
2868
- 202: {
2869
- headers: {
2870
- [name: string]: unknown;
2871
- };
2872
- content: {
2873
- "application/json": components["schemas"]["WebShellCwdOperation"];
2874
- };
2875
- };
2876
- 400: components["responses"]["BadRequest"];
2877
- 401: components["responses"]["Unauthorized"];
2878
- 403: components["responses"]["Forbidden"];
2879
- 404: components["responses"]["NotFound"];
2880
- 409: components["responses"]["Conflict"];
2881
- 413: components["responses"]["PayloadTooLarge"];
2882
- };
2883
- };
2884
2894
  webShellQueryCwdOperation: {
2885
2895
  parameters: {
2886
2896
  query?: never;
@@ -4630,4 +4640,88 @@ export interface operations {
4630
4640
  };
4631
4641
  };
4632
4642
  };
4643
+ webShellWorkspaceFilesUpload: {
4644
+ parameters: {
4645
+ query: {
4646
+ workspaceId: string;
4647
+ cwdRelative: string;
4648
+ path: string;
4649
+ expectedScopeRevision: string;
4650
+ uploadId: string;
4651
+ };
4652
+ header?: never;
4653
+ path?: never;
4654
+ cookie?: never;
4655
+ };
4656
+ requestBody: {
4657
+ content: {
4658
+ "application/octet-stream": string;
4659
+ };
4660
+ };
4661
+ responses: {
4662
+ /** @description Workspace upload result. */
4663
+ 200: {
4664
+ headers: {
4665
+ [name: string]: unknown;
4666
+ };
4667
+ content: {
4668
+ "application/json": components["schemas"]["WebShellWorkspaceFileUploadResult"];
4669
+ };
4670
+ };
4671
+ 400: components["responses"]["BadRequest"];
4672
+ 401: components["responses"]["Unauthorized"];
4673
+ 403: components["responses"]["Forbidden"];
4674
+ 404: components["responses"]["NotFound"];
4675
+ 409: components["responses"]["Conflict"];
4676
+ /** @description The upload exceeds the 8 MiB binary limit. */
4677
+ 413: {
4678
+ headers: {
4679
+ [name: string]: unknown;
4680
+ };
4681
+ content: {
4682
+ "application/json": components["schemas"]["ErrorEnvelope"];
4683
+ };
4684
+ };
4685
+ /** @description Uploads require unencoded application/octet-stream bytes. */
4686
+ 415: {
4687
+ headers: {
4688
+ [name: string]: unknown;
4689
+ };
4690
+ content: {
4691
+ "application/json": components["schemas"]["ErrorEnvelope"];
4692
+ };
4693
+ };
4694
+ 503: components["responses"]["Unavailable"];
4695
+ };
4696
+ };
4697
+ webShellWorkspaceFilesUploadQuery: {
4698
+ parameters: {
4699
+ query?: never;
4700
+ header?: never;
4701
+ path?: never;
4702
+ cookie?: never;
4703
+ };
4704
+ requestBody: {
4705
+ content: {
4706
+ "application/json": components["schemas"]["WebShellWorkspaceFileUploadQueryRequest"];
4707
+ };
4708
+ };
4709
+ responses: {
4710
+ /** @description Workspace upload result. */
4711
+ 200: {
4712
+ headers: {
4713
+ [name: string]: unknown;
4714
+ };
4715
+ content: {
4716
+ "application/json": components["schemas"]["WebShellWorkspaceFileUploadStatus"];
4717
+ };
4718
+ };
4719
+ 400: components["responses"]["BadRequest"];
4720
+ 401: components["responses"]["Unauthorized"];
4721
+ 403: components["responses"]["Forbidden"];
4722
+ 404: components["responses"]["NotFound"];
4723
+ 409: components["responses"]["Conflict"];
4724
+ 503: components["responses"]["Unavailable"];
4725
+ };
4726
+ };
4633
4727
  }
@@ -100,6 +100,14 @@ export declare class JavaManagedAgentClient {
100
100
  createWorkspace(request: Schemas['WebShellWorkspaceCreateRequest'], signal?: AbortSignal): Promise<JavaAgentWorkspace>;
101
101
  queryWorkspaceFiles(request: Schemas['WebShellWorkspaceFileQueryRequest'], signal?: AbortSignal): Promise<Schemas['WebShellWorkspaceFilePage']>;
102
102
  readWorkspaceFile(request: Schemas['WebShellWorkspaceFileReadRequest'], signal?: AbortSignal): Promise<Schemas['WebShellWorkspaceFileSnapshot']>;
103
+ uploadWorkspaceFile(request: {
104
+ workspaceId: string;
105
+ cwdRelative: string;
106
+ path: string;
107
+ expectedScopeRevision: string;
108
+ uploadId: string;
109
+ }, data: Blob, signal?: AbortSignal): Promise<Schemas['WebShellWorkspaceFileUploadResult']>;
110
+ queryWorkspaceFileUpload(uploadId: string, signal?: AbortSignal): Promise<Schemas['WebShellWorkspaceFileUploadStatus']>;
103
111
  workspaceDirectories(request: Schemas['WebShellWorkspaceDirectoryQueryRequest'], signal?: AbortSignal): Promise<Schemas['WebShellWorkspaceDirectoryPage']>;
104
112
  getSessionApproval(sessionId: string, signal?: AbortSignal): Promise<Schemas['WebShellSessionApproval']>;
105
113
  changeApproval(request: Schemas['WebShellChangeApprovalRequest'], signal?: AbortSignal): Promise<Schemas['WebShellApprovalChangeResult']>;
@@ -173,7 +181,6 @@ export declare class JavaManagedAgentClient {
173
181
  respondAction(request: Schemas['WebShellActionRespondRequest'], signal?: AbortSignal): Promise<Schemas['WebShellCommandOperation']>;
174
182
  /** Reads an operation's latest durable status; polling is not a replay. */
175
183
  queryOperation(request: Schemas['WebShellOperationRequest'], signal?: AbortSignal): Promise<Schemas['WebShellOperation']>;
176
- changeCwd(request: Schemas['WebShellChangeCwdRequest'], signal?: AbortSignal): Promise<Schemas['WebShellCwdOperation']>;
177
184
  compressContext(request: Schemas['WebShellContextCompressionRequest'], signal?: AbortSignal): Promise<Schemas['WebShellContextCompressionOperation']>;
178
185
  getSessionModels(sessionId: string, signal?: AbortSignal): Promise<{
179
186
  models: components["schemas"]["WebShellModelOption"][];
@@ -302,5 +309,6 @@ export declare class JavaManagedAgentClient {
302
309
  }>;
303
310
  private post;
304
311
  private request;
312
+ private fetchRequest;
305
313
  }
306
314
  export {};
@@ -120,7 +120,6 @@ export interface ManagedAgentSessionSummary {
120
120
  artifacts?: boolean;
121
121
  /** The caller may submit later Turns to this Workspace-bound Session. */
122
122
  workspaceTurns?: boolean;
123
- cwdChange?: boolean;
124
123
  modelChange?: boolean;
125
124
  contextCompression?: boolean;
126
125
  approvalModeChange?: boolean;
@@ -163,7 +162,6 @@ export interface ManagedAgentRequestOptions {
163
162
  export interface ManagedAgentCommandOptions extends ManagedAgentRequestOptions {
164
163
  idempotencyKey: string;
165
164
  }
166
- export type ManagedCwdOperation = components['schemas']['WebShellCwdOperation'];
167
165
  export type ManagedContextCompressionOperation = components['schemas']['WebShellContextCompressionOperation'];
168
166
  export type ManagedTask = components['schemas']['WebShellTask'];
169
167
  export type ManagedTaskPage = components['schemas']['WebShellTaskPage'];
@@ -276,13 +274,6 @@ export interface ManagedAgentProvider {
276
274
  query(sessionId: string, taskId: string, operationId: string, options: ManagedAgentRequestOptions): Promise<ManagedTaskCancelOperation>;
277
275
  };
278
276
  };
279
- readonly cwdChange?: {
280
- submit(sessionId: string, request: {
281
- cwdRelative: string;
282
- expectedContextRevision: number;
283
- }, options: ManagedAgentCommandOptions): Promise<ManagedCwdOperation>;
284
- query(sessionId: string, operationId: string, options: ManagedAgentRequestOptions): Promise<ManagedCwdOperation>;
285
- };
286
277
  readonly contextCompression?: {
287
278
  submit(sessionId: string, request: {
288
279
  expectedCompactionRevision: number;
@@ -310,6 +301,14 @@ export interface ManagedAgentProvider {
310
301
  readonly workspaceFiles?: {
311
302
  query(request: components['schemas']['WebShellWorkspaceFileQueryRequest'], options: ManagedAgentRequestOptions): Promise<components['schemas']['WebShellWorkspaceFilePage']>;
312
303
  read(request: components['schemas']['WebShellWorkspaceFileReadRequest'], options: ManagedAgentRequestOptions): Promise<components['schemas']['WebShellWorkspaceFileSnapshot']>;
304
+ upload?(request: {
305
+ workspaceId: string;
306
+ cwdRelative: string;
307
+ path: string;
308
+ expectedScopeRevision: string;
309
+ uploadId: string;
310
+ }, data: Blob, options: ManagedAgentRequestOptions): Promise<components['schemas']['WebShellWorkspaceFileUploadResult']>;
311
+ queryUpload?(uploadId: string, options: ManagedAgentRequestOptions): Promise<components['schemas']['WebShellWorkspaceFileUploadStatus']>;
313
312
  };
314
313
  readonly workspaceBinding?: {
315
314
  readonly agentId: string;
@@ -1,5 +1,6 @@
1
1
  import type { AtMentionWorkspaceActions } from '../../hooks/useAtMentionSources';
2
2
  import type { ComposerSubmitMetadata } from '../../hooks/useComposerCore';
3
+ import type { WebShellComposerTag } from '../../customization';
3
4
  import type { ManagedAgentProvider } from './managed-agent-provider';
4
5
  import type { PromptFile } from '../../adapters/promptTypes';
5
6
  export declare function useManagedFileReferences(provider: ManagedAgentProvider, clientId: string, workspace: {
@@ -9,6 +10,12 @@ export declare function useManagedFileReferences(provider: ManagedAgentProvider,
9
10
  state?: string;
10
11
  } | undefined, sessionId?: string): {
11
12
  actions: AtMentionWorkspaceActions | undefined;
13
+ uploadTarget: {
14
+ client: import("../../hooks/useFileUpload").FileUploadClient;
15
+ targetKey: string;
16
+ maxBytes: number;
17
+ createReference(path: string): WebShellComposerTag;
18
+ } | undefined;
12
19
  busy: boolean;
13
20
  prepareInput: (text: string, files?: readonly PromptFile[], metadata?: ComposerSubmitMetadata) => Promise<{
14
21
  text: string;
@@ -0,0 +1,23 @@
1
+ import type { FileUploadClient } from '../../hooks/useFileUpload';
2
+ import type { WebShellComposerTag } from '../../customization';
3
+ import type { ManagedAgentProvider } from './managed-agent-provider';
4
+ export interface ManagedUploadReference {
5
+ version: 1;
6
+ source: string;
7
+ scopeRevision: string;
8
+ path: string;
9
+ }
10
+ interface UploadScope {
11
+ workspaceId: string;
12
+ cwdRelative: string;
13
+ source: string;
14
+ scopeRevision: string;
15
+ maxUploadBytes: number;
16
+ }
17
+ export declare function useManagedFileUpload(provider: ManagedAgentProvider, clientId: string, scope: UploadScope | undefined): {
18
+ client: FileUploadClient;
19
+ targetKey: string;
20
+ maxBytes: number;
21
+ createReference(path: string): WebShellComposerTag;
22
+ } | undefined;
23
+ export {};
@@ -1,12 +1,12 @@
1
1
  import type { ManagedAgentProvider, ManagedAgentSessionSummary } from './managed-agent-provider';
2
- export declare function useManagedSessionRename(provider: ManagedAgentProvider, clientId: string, sessionId: string | undefined, summary: ManagedAgentSessionSummary | undefined, interactive: boolean, onRenamed: (displayName: string) => void): {
2
+ export declare function useManagedSessionRename(provider: ManagedAgentProvider, clientId: string, sessionId: string | undefined, summary: ManagedAgentSessionSummary | undefined, interactive: boolean, onRenamed: (sessionId: string, displayName: string) => void): {
3
3
  supported: boolean;
4
4
  editor: {
5
5
  value: string;
6
6
  busy: boolean;
7
7
  error?: string;
8
8
  } | undefined;
9
- open(): void;
9
+ open(session?: ManagedAgentSessionSummary | undefined): void;
10
10
  close(): void;
11
11
  setValue(value: string): void;
12
12
  submit(displayName: string): Promise<void>;
@@ -10,6 +10,7 @@ interface AssistantMessageProps {
10
10
  timestamp?: number;
11
11
  onBranchSession?: () => void | Promise<void>;
12
12
  showFooterActions?: boolean;
13
+ footerAlwaysVisible?: boolean;
13
14
  showBranchAction?: boolean;
14
15
  /** Satisfied / not-satisfied marks are only offered when this is set. */
15
16
  showAssistantFeedback?: boolean;
@@ -1,4 +1,5 @@
1
1
  import { type Ref } from 'react';
2
+ import type { ManagedExtensionsManagerPageProps } from '../managed/ManagedExtensionsManagerPage';
2
3
  import { type ManagedMcpManagerPageProps } from '../managed/ManagedMcpManagerPage';
3
4
  type PluginTab = 'extensions' | 'mcp' | 'skills' | 'agents';
4
5
  interface PluginManagerPageProps {
@@ -9,7 +10,8 @@ interface PluginManagerPageProps {
9
10
  skillsWorkspaceCwd?: string;
10
11
  onSkillsWorkspaceChange?: (cwd: string) => void;
11
12
  managedSkills?: boolean;
13
+ managedExtensions?: Omit<ManagedExtensionsManagerPageProps, 'onClose'>;
12
14
  managedMcp?: ManagedMcpManagerPageProps;
13
15
  }
14
- export declare function PluginManagerPage({ onClose, onUseSkill, initialFocusRef, initialTab, skillsWorkspaceCwd, onSkillsWorkspaceChange, managedSkills, managedMcp, }: PluginManagerPageProps): import("react/jsx-runtime").JSX.Element;
16
+ export declare function PluginManagerPage({ onClose, onUseSkill, initialFocusRef, initialTab, skillsWorkspaceCwd, onSkillsWorkspaceChange, managedSkills, managedExtensions, managedMcp, }: PluginManagerPageProps): import("react/jsx-runtime").JSX.Element;
15
17
  export {};
@@ -3,5 +3,7 @@ import { Tooltip as TooltipPrimitive } from 'radix-ui';
3
3
  declare function TooltipProvider({ delayDuration, ...props }: React.ComponentProps<typeof TooltipPrimitive.Provider>): import("react/jsx-runtime").JSX.Element;
4
4
  declare function Tooltip({ ...props }: React.ComponentProps<typeof TooltipPrimitive.Root>): import("react/jsx-runtime").JSX.Element;
5
5
  declare const TooltipTrigger: React.ForwardRefExoticComponent<Omit<TooltipPrimitive.TooltipTriggerProps & React.RefAttributes<HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
6
- declare const TooltipContent: React.ForwardRefExoticComponent<Omit<TooltipPrimitive.TooltipContentProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
6
+ declare const TooltipContent: React.ForwardRefExoticComponent<Omit<TooltipPrimitive.TooltipContentProps & React.RefAttributes<HTMLDivElement> & {
7
+ variant?: "default" | "black";
8
+ }, "ref"> & React.RefAttributes<HTMLDivElement>>;
7
9
  export { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger };
@@ -62,6 +62,7 @@ declare const SETTING_KEYS: {
62
62
  readonly 'setting:omni-media-delivery': "omni.enabled";
63
63
  readonly 'setting:artifacts': "experimental.artifact";
64
64
  readonly 'setting:tool-use-summaries': "experimental.emitToolUseSummaries";
65
+ readonly 'setting:unified-agent-loop': "experimental.unifiedAgentLoop";
65
66
  readonly 'setting:voice-model': "voiceModel";
66
67
  readonly 'setting:image-model': "imageModel";
67
68
  };
@@ -1,4 +1,5 @@
1
1
  export declare function getReplySelectionRange(body: HTMLElement): Range | null;
2
+ export declare function getSelectedReplyText(body: HTMLElement, range: Range): string | null;
2
3
  export declare function getSelectedReplyContent(body: HTMLElement, range: Range): {
3
4
  text: string;
4
5
  markdown: string;
@@ -0,0 +1 @@
1
+ export declare function getSelectedReplyText(body: HTMLElement): string;
@@ -0,0 +1 @@
1
+ export declare function formatTurnDuration(ms: number): string;