@qwen-code/web-shell 0.24.7 → 0.25.0-nightly.20261007.8003d28042

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 (79) hide show
  1. package/README.md +65 -2
  2. package/dist/ThreadsRoute--HaIzwKP.js +2407 -0
  3. package/dist/daemon-react-sdk.js +1 -1
  4. package/dist/index-BzGbNfTe.js +123706 -0
  5. package/dist/index.js +69 -120254
  6. package/dist/sw.js +1 -1
  7. package/dist/{toolNames-B0O1UjKB.js → toolNames-Do9xesk5.js} +5531 -4744
  8. package/dist/transcript.js +9765 -9442
  9. package/dist/types/App.d.ts +2 -2
  10. package/dist/types/ManagedAgentWebShell.d.ts +1 -0
  11. package/dist/types/adapters/messageTypes.d.ts +15 -0
  12. package/dist/types/adapters/transcriptAdapter.d.ts +1 -0
  13. package/dist/types/components/ChatEditor.d.ts +1 -0
  14. package/dist/types/components/DesktopRelayControl.d.ts +2 -1
  15. package/dist/types/components/LocalFilesControl.d.ts +3 -1
  16. package/dist/types/components/MessageItem.d.ts +1 -0
  17. package/dist/types/components/MessageList.d.ts +1 -0
  18. package/dist/types/components/agents/AgentCreatePage.d.ts +29 -1
  19. package/dist/types/components/agents/AgentsManagerPage.d.ts +6 -1
  20. package/dist/types/components/artifacts/ArtifactPanel.d.ts +8 -1
  21. package/dist/types/components/artifacts/TrajectoryInspector.d.ts +3 -1
  22. package/dist/types/components/artifacts/TrajectoryOverview.d.ts +3 -1
  23. package/dist/types/components/artifacts/TrajectoryWaterfallCell.d.ts +15 -0
  24. package/dist/types/components/channels/ChannelsManagerPage.d.ts +1 -1
  25. package/dist/types/components/extensions/extensions-manager-logic.d.ts +3 -3
  26. package/dist/types/components/managed/ManagedToolResultPanel.d.ts +9 -0
  27. package/dist/types/components/managed/ManagedToolResultSummary.d.ts +5 -0
  28. package/dist/types/components/managed/generated/managed-agent-api.d.ts +914 -17
  29. package/dist/types/components/managed/java-managed-agent-client.d.ts +29 -1
  30. package/dist/types/components/managed/java-managed-agent-provider.d.ts +4 -0
  31. package/dist/types/components/managed/managed-agent-provider.d.ts +43 -1
  32. package/dist/types/components/managed/managed-agent-sse.test-fixtures.d.ts +8 -0
  33. package/dist/types/components/managed/managed-approval.d.ts +10 -0
  34. package/dist/types/components/managed/managed-artifact-download.d.ts +2 -0
  35. package/dist/types/components/managed/managed-request-error.d.ts +14 -0
  36. package/dist/types/components/managed/managed-tool-result-types.d.ts +24 -0
  37. package/dist/types/components/managed/managed-tool-result.test-fixtures.d.ts +6 -0
  38. package/dist/types/components/managed/use-managed-actions.d.ts +33 -0
  39. package/dist/types/components/messages/AssistantMessage.d.ts +3 -0
  40. package/dist/types/components/messages/AuthorAvatar.d.ts +16 -0
  41. package/dist/types/components/messages/ContextUsageMessage.d.ts +5 -1
  42. package/dist/types/components/messages/StatsMessage.d.ts +6 -1
  43. package/dist/types/components/messages/ToolApproval.d.ts +9 -1
  44. package/dist/types/components/messages/ToolGroup.d.ts +2 -0
  45. package/dist/types/components/sidebar/UpdateControl.d.ts +3 -1
  46. package/dist/types/components/sidebar/WebShellSidebar.d.ts +18 -5
  47. package/dist/types/components/sidebar/WorkspaceSection.d.ts +3 -1
  48. package/dist/types/components/sidebar/sessionSearch.d.ts +2 -1
  49. package/dist/types/components/workspace-agents/LazyThreadsRoute.d.ts +7 -0
  50. package/dist/types/components/workspace-agents/ThreadChat.d.ts +35 -0
  51. package/dist/types/components/workspace-agents/ThreadView.d.ts +72 -0
  52. package/dist/types/components/workspace-agents/ThreadsPage.d.ts +146 -0
  53. package/dist/types/components/workspace-agents/ThreadsRoute.d.ts +23 -0
  54. package/dist/types/components/workspace-agents/add-runtime-dialog.d.ts +50 -0
  55. package/dist/types/components/workspace-agents/agent-events.d.ts +50 -0
  56. package/dist/types/components/workspace-agents/agents-view-logic.d.ts +180 -0
  57. package/dist/types/components/workspace-agents/messages.d.ts +16 -0
  58. package/dist/types/components/workspace-agents/messages.transcript-stub.d.ts +12 -0
  59. package/dist/types/components/workspace-agents/share-agent-dialog.d.ts +33 -0
  60. package/dist/types/components/workspace-agents/threads-api.d.ts +63 -0
  61. package/dist/types/components/workspace-agents/useAgentChatEntry.d.ts +36 -0
  62. package/dist/types/components/workspace-agents/useProjectConversations.d.ts +10 -0
  63. package/dist/types/customization.d.ts +10 -0
  64. package/dist/types/daemon/session/types.d.ts +19 -3
  65. package/dist/types/daemon/workspace/hooks/useDaemonMemory.d.ts +4 -0
  66. package/dist/types/daemon/workspace/types.d.ts +6 -2
  67. package/dist/types/index.d.ts +2 -1
  68. package/dist/types/live/LiveVoiceButton.d.ts +2 -1
  69. package/dist/types/navigation.d.ts +1 -0
  70. package/dist/types/settings.d.ts +1 -0
  71. package/dist/types/trajectory/buildTrajectoryLayout.d.ts +27 -0
  72. package/dist/types/trajectory/types.d.ts +2 -1
  73. package/dist/types/trajectory/useTimelineViewport.d.ts +19 -0
  74. package/dist/types/utils/cancelledTurn.d.ts +17 -0
  75. package/dist/types/utils/composerTag.d.ts +6 -1
  76. package/dist/types/utils/modelEncoding.d.ts +6 -0
  77. package/dist/types/utils/navigationUrl.d.ts +1 -1
  78. package/dist/types/utils/workspace.d.ts +1 -0
  79. package/package.json +2 -1
@@ -40,7 +40,7 @@ export interface paths {
40
40
  };
41
41
  get?: never;
42
42
  put?: never;
43
- /** @description Without a cursor, a Session that has a Snapshot returns all of its Items, the events up to the Snapshot other than turn.accepted, item.output_text.delta, item.reasoning.delta and item.tool_call.updated, which the Items already hold, and every event after it. Otherwise, and for an olderCursor, limit bounds the page of events. */
43
+ /** @description Without a cursor, a Session that has a Snapshot returns all of its Items, the events up to the Snapshot other than turn.accepted, item.output_text.delta, item.reasoning.delta, item.tool_call.updated and item.tool_result.updated, which the Items already hold, and every event after it. Otherwise, and for an olderCursor, limit bounds the page of events. */
44
44
  post: operations["webShellTranscript"];
45
45
  delete?: never;
46
46
  options?: never;
@@ -74,7 +74,7 @@ export interface paths {
74
74
  };
75
75
  get?: never;
76
76
  put?: never;
77
- /** @description W0 maps workspaceId/cwdRelative to the public selection without using environmentId or absolute cwd. Freeze selection with the original idempotency key; admission does not prove physical directory readiness. */
77
+ /** @description Maps workspaceId/cwdRelative to public Workspace selection without using environmentId or absolute cwd. Shares G0's opt-in initial file-tool Turn admission and fixed server-owned profile with public Session creation. The Session creator may submit later Turns and cancel its running Turns under the same opt-in, and may rename the Session, while the creator currently holds Workspace read and create grants on a registry row whose state is ACTIVE and the Session is an active, undeleted qwen-code Session on the frozen execution profile; Workspace close follows its separate close capability and lifecycle admission; archive, delete and unarchive follow their separate retention capabilities after reliable Workspace close; controlled same-Workspace cwd changes ship through the durable cwd_change operations (v1.32). The per-caller workspaceTurns capability on this surface advertises the same rule. Freeze selection with the original idempotency key; admission does not prove physical directory readiness. */
78
78
  post: operations["webShellCreateSession"];
79
79
  delete?: never;
80
80
  options?: never;
@@ -131,6 +131,23 @@ export interface paths {
131
131
  patch?: never;
132
132
  trace?: never;
133
133
  };
134
+ "/api/agent/web-shell/v1/sessions/cwd/change": {
135
+ parameters: {
136
+ query?: never;
137
+ header?: never;
138
+ path?: never;
139
+ cookie?: never;
140
+ };
141
+ get?: never;
142
+ put?: never;
143
+ /** @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 and 403 session_operation_forbidden when a readable actor is not the creator; 409 idempotency_conflict when one key carries different content; 409 workspace_unavailable when execution is disabled; 404 session_not_found for a deleted Session — a completed change under the same key still replays instead; then 409 session_state_conflict, 409 workspace_unavailable from moved Registry facts, 409 context_revision_conflict and 409 session_context_busy exactly like the public surface. Poll the operation or await session.context.changed; do not treat 202 as activation. */
144
+ post: operations["webShellChangeCwd"];
145
+ delete?: never;
146
+ options?: never;
147
+ head?: never;
148
+ patch?: never;
149
+ trace?: never;
150
+ };
134
151
  "/api/agent/web-shell/v1/operations/query": {
135
152
  parameters: {
136
153
  query?: never;
@@ -147,6 +164,57 @@ export interface paths {
147
164
  patch?: never;
148
165
  trace?: never;
149
166
  };
167
+ "/api/agent/web-shell/v1/actions/query": {
168
+ parameters: {
169
+ query?: never;
170
+ header?: never;
171
+ path?: never;
172
+ cookie?: never;
173
+ };
174
+ get?: never;
175
+ put?: never;
176
+ /** @description D6 serves Hosted permission Actions. Question Actions and vote_recorded remain planned. Reads follow Session authorization; only the Session creator may respond (a Session with no recorded creator and no recorded create command answers to any caller in its tenant). Responses are durable operations, reconciled against the original journal decision. */
177
+ post: operations["queryWebShellActions"];
178
+ delete?: never;
179
+ options?: never;
180
+ head?: never;
181
+ patch?: never;
182
+ trace?: never;
183
+ };
184
+ "/api/agent/web-shell/v1/actions/get": {
185
+ parameters: {
186
+ query?: never;
187
+ header?: never;
188
+ path?: never;
189
+ cookie?: never;
190
+ };
191
+ get?: never;
192
+ put?: never;
193
+ /** @description D6 serves Hosted permission Actions. Question Actions and vote_recorded remain planned. Reads follow Session authorization; only the Session creator may respond (a Session with no recorded creator and no recorded create command answers to any caller in its tenant). Responses are durable operations, reconciled against the original journal decision. */
194
+ post: operations["getWebShellAction"];
195
+ delete?: never;
196
+ options?: never;
197
+ head?: never;
198
+ patch?: never;
199
+ trace?: never;
200
+ };
201
+ "/api/agent/web-shell/v1/actions/respond": {
202
+ parameters: {
203
+ query?: never;
204
+ header?: never;
205
+ path?: never;
206
+ cookie?: never;
207
+ };
208
+ get?: never;
209
+ put?: never;
210
+ /** @description D6 serves Hosted permission Actions. Question Actions and vote_recorded remain planned. Reads follow Session authorization; only the Session creator may respond (a Session with no recorded creator and no recorded create command answers to any caller in its tenant). Responses are durable operations, reconciled against the original journal decision. */
211
+ post: operations["respondWebShellAction"];
212
+ delete?: never;
213
+ options?: never;
214
+ head?: never;
215
+ patch?: never;
216
+ trace?: never;
217
+ };
150
218
  "/api/agent/web-shell/v1/sessions/close": {
151
219
  parameters: {
152
220
  query?: never;
@@ -156,6 +224,7 @@ export interface paths {
156
224
  };
157
225
  get?: never;
158
226
  put?: never;
227
+ /** @description Uses the same close admission, creator authorization and durable cleanup semantics as the public close route. sessionClose describes deployment support; it does not grant actor authorization. */
159
228
  post: operations["closeWebShellSession"];
160
229
  delete?: never;
161
230
  options?: never;
@@ -172,6 +241,7 @@ export interface paths {
172
241
  };
173
242
  get?: never;
174
243
  put?: never;
244
+ /** @description Workspace-bound archive requires a closed Session with completed reliable-close evidence and the creator with current read access. It completes atomically during admission, preserves data and the permanent close fence, and calls neither Harness nor Runtime. A readable non-creator returns 403; missing close evidence returns 409 workspace_unavailable. */
175
245
  post: operations["archiveWebShellSession"];
176
246
  delete?: never;
177
247
  options?: never;
@@ -188,6 +258,7 @@ export interface paths {
188
258
  };
189
259
  get?: never;
190
260
  put?: never;
261
+ /** @description Workspace-bound delete accepts only closed or archived Sessions with completed reliable-close evidence and the creator with current read access. Active deletion returns 409 session_state_conflict. Completion atomically retires private recovery/publication access with the tombstone, operation receipt and terminal event; it calls neither Harness nor Runtime and erases no shared Workspace files or backup bytes. Operations remain readable under current read grants; the same authorized actor/key can replay after deletion. A readable non-creator returns 403; missing close evidence returns 409 workspace_unavailable. */
191
262
  post: operations["deleteWebShellSession"];
192
263
  delete?: never;
193
264
  options?: never;
@@ -244,6 +315,87 @@ export interface paths {
244
315
  patch?: never;
245
316
  trace?: never;
246
317
  };
318
+ "/api/agent/web-shell/v1/tasks/events/query": {
319
+ parameters: {
320
+ query?: never;
321
+ header?: never;
322
+ path?: never;
323
+ cookie?: never;
324
+ };
325
+ get?: never;
326
+ put?: never;
327
+ post: operations["queryWebShellTaskEvents"];
328
+ delete?: never;
329
+ options?: never;
330
+ head?: never;
331
+ patch?: never;
332
+ trace?: never;
333
+ };
334
+ "/api/agent/web-shell/v1/tool-results/get": {
335
+ parameters: {
336
+ query?: never;
337
+ header?: never;
338
+ path?: never;
339
+ cookie?: never;
340
+ };
341
+ get?: never;
342
+ put?: never;
343
+ post: operations["getWebShellToolResult"];
344
+ delete?: never;
345
+ options?: never;
346
+ head?: never;
347
+ patch?: never;
348
+ trace?: never;
349
+ };
350
+ "/api/agent/web-shell/v1/artifacts/get": {
351
+ parameters: {
352
+ query?: never;
353
+ header?: never;
354
+ path?: never;
355
+ cookie?: never;
356
+ };
357
+ get?: never;
358
+ put?: never;
359
+ post: operations["getWebShellArtifact"];
360
+ delete?: never;
361
+ options?: never;
362
+ head?: never;
363
+ patch?: never;
364
+ trace?: never;
365
+ };
366
+ "/api/agent/web-shell/v1/artifacts/query": {
367
+ parameters: {
368
+ query?: never;
369
+ header?: never;
370
+ path?: never;
371
+ cookie?: never;
372
+ };
373
+ get?: never;
374
+ put?: never;
375
+ post: operations["queryWebShellArtifacts"];
376
+ delete?: never;
377
+ options?: never;
378
+ head?: never;
379
+ patch?: never;
380
+ trace?: never;
381
+ };
382
+ "/api/agent/web-shell/v1/sessions/unarchive": {
383
+ parameters: {
384
+ query?: never;
385
+ header?: never;
386
+ path?: never;
387
+ cookie?: never;
388
+ };
389
+ get?: never;
390
+ put?: never;
391
+ /** @description Synchronously restores an archived Session to closed. Workspace-bound Sessions require completed reliable-close evidence and the creator with current read access (404 unreadable, 403 readable non-creator). Bound keys are tenant/Session/actor scoped. Replay returns the current visible Session without repeating the mutation; a deleted Session returns 404. The permanent close fence is preserved and no Harness or Runtime call is made. */
392
+ post: operations["unarchiveWebShellSession"];
393
+ delete?: never;
394
+ options?: never;
395
+ head?: never;
396
+ patch?: never;
397
+ trace?: never;
398
+ };
247
399
  }
248
400
  export type webhooks = Record<string, never>;
249
401
  export interface components {
@@ -253,6 +405,27 @@ export interface components {
253
405
  type: "input_text";
254
406
  text: string;
255
407
  };
408
+ PublicArtifact: {
409
+ /** @constant */
410
+ object: "agent.artifact";
411
+ id: string;
412
+ session_id: string;
413
+ result_id: string;
414
+ revision: string;
415
+ /** @enum {string} */
416
+ stream_role: "stdout" | "stderr";
417
+ /** Format: int64 */
418
+ byte_length: number;
419
+ sha256: string;
420
+ media_type: string;
421
+ /** @enum {string} */
422
+ availability: "available" | "unavailable";
423
+ /**
424
+ * Format: int64
425
+ * @description Unix epoch milliseconds, unlike the seconds that the public Session, Turn, Event and Item resources report.
426
+ */
427
+ created_at: number;
428
+ };
256
429
  WebShellListRequest: {
257
430
  cursor?: string | null;
258
431
  /** @default 20 */
@@ -349,10 +522,38 @@ export interface components {
349
522
  /** Format: int64 */
350
523
  lastSequence: number;
351
524
  workspace?: components["schemas"]["WebShellWorkspaceContext"];
352
- capabilities?: components["schemas"]["WebShellSessionCapabilities"];
525
+ capabilities: components["schemas"]["WebShellSessionCapabilities"];
353
526
  };
354
527
  WebShellSessionCapabilities: {
528
+ /** @default false */
529
+ actions: boolean;
530
+ /**
531
+ * @description True when the caller may submit later Turns of this Workspace-bound Session, cancel its running Turns and rename it: the deployment enables Workspace files, the caller created the Session and currently holds Workspace read and create grants on a registry row whose state is ACTIVE, and the Session is an active qwen-code Session on the frozen execution profile. False for every other caller and for unbound Sessions, which do not use it.
532
+ * @default false
533
+ */
534
+ workspaceTurns?: boolean;
355
535
  tasks: boolean;
536
+ artifacts: boolean;
537
+ /**
538
+ * @description Deployment support for close independently of archive/delete. Admission also requires creator ownership and current read access for a bound Session.
539
+ * @default false
540
+ */
541
+ sessionClose?: boolean;
542
+ /**
543
+ * @description Optional support for this retention operation. For a Workspace-bound Session requires completed reliable-close evidence; authorization and source-state validation still apply.
544
+ * @default false
545
+ */
546
+ sessionArchive?: boolean;
547
+ /**
548
+ * @description Optional support for this retention operation. For a Workspace-bound Session requires completed reliable-close evidence; authorization and source-state validation still apply.
549
+ * @default false
550
+ */
551
+ sessionUnarchive?: boolean;
552
+ /**
553
+ * @description Optional support for this retention operation. For a Workspace-bound Session requires completed reliable-close evidence; authorization and source-state validation still apply.
554
+ * @default false
555
+ */
556
+ sessionDelete?: boolean;
356
557
  };
357
558
  WebShellSessionPage: {
358
559
  data: components["schemas"]["WebShellSession"][];
@@ -439,6 +640,8 @@ export interface components {
439
640
  code: string;
440
641
  message: string;
441
642
  request_id: string;
643
+ /** @description Present on Runtime Broker refusals; true permits retry, false is a definite refusal. Other errors may omit this field. */
644
+ retryable?: boolean;
442
645
  /** Format: int64 */
443
646
  replay_floor_sequence?: number | null;
444
647
  /** Format: int64 */
@@ -451,6 +654,8 @@ export interface components {
451
654
  * @example services/api
452
655
  */
453
656
  WorkspaceRelativePath: string;
657
+ /** @enum {string} */
658
+ CwdOperationStatus: "pending" | "installing" | "completed" | "failed";
454
659
  WebShellWorkspaceSelection: {
455
660
  workspaceId: string;
456
661
  /** @default . */
@@ -482,7 +687,7 @@ export interface components {
482
687
  * @default false
483
688
  */
484
689
  workspaceContext: boolean;
485
- /** @description Supports authorized Workspace discovery, empty Session creation, and saved binding read-back; does not enable execution. */
690
+ /** @description Supports authorized Workspace discovery, Session creation, and saved binding read-back. This capability does not advertise execution readiness. Deployments may separately opt in to an initial Workspace Read/Write/Edit Turn at creation; the Session creator may submit and cancel later Turns under the same opt-in, while close follows its separate capability and lifecycle admission; archive, delete and unarchive follow their separate retention capabilities after reliable Workspace close. */
486
691
  workspaceBinding: boolean;
487
692
  };
488
693
  /** @description Same authorized explicit default as default_workspace, including when outside this page; null if absent or not creatable. A non-null default is active and has canCreateSession=true. */
@@ -493,12 +698,61 @@ export interface components {
493
698
  canCreateSession?: true;
494
699
  }) | null;
495
700
  };
701
+ WebShellChangeCwdRequest: {
702
+ /** Format: uuid */
703
+ sessionId: string;
704
+ idempotencyKey: string;
705
+ cwdRelative: components["schemas"]["WorkspaceRelativePath"];
706
+ /** Format: int64 */
707
+ expectedContextRevision: number;
708
+ requestId?: string | null;
709
+ };
496
710
  WebShellOperationRequest: {
497
711
  /** Format: uuid */
498
712
  sessionId: string;
499
713
  operationId: string;
500
714
  };
501
- /** @description Receipt IDs are opaque authorized product handles, not private journal or storage refs. Input/cancel completion is command acceptance, not Turn completion or physical stop. Action completion may only record one vote. Lifecycle completion requires its cleanup facts; archive may remain java_durable because Java is its authority. Task cancel completion means that the authority recorded the cancel, not that the task stopped: the task becomes cancelled only after its physical execution settles. */
715
+ /** @description A completed operation returns the committed target revision. A replay returns the same operation identity and latest durable status, with replayed=true; polling itself is not replay. */
716
+ WebShellCwdOperation: {
717
+ operationId: string;
718
+ /** Format: uuid */
719
+ sessionId: string;
720
+ /** @constant */
721
+ type: "cwd_change";
722
+ status: components["schemas"]["CwdOperationStatus"];
723
+ /** Format: int64 */
724
+ expectedContextRevision: number;
725
+ targetCwdRelative: components["schemas"]["WorkspaceRelativePath"];
726
+ /** Format: int64 */
727
+ resultContextRevision?: number | null;
728
+ failureCode?: string | null;
729
+ replayed: boolean;
730
+ } & (unknown & unknown);
731
+ WebShellAction: components["schemas"]["WebShellPermissionAction"] | components["schemas"]["WebShellQuestionAction"];
732
+ WebShellActionResolution: {
733
+ actionId: string;
734
+ /**
735
+ * @description D6 supports decided only; vote_recorded is planned.
736
+ * @enum {unknown}
737
+ */
738
+ outcome: "vote_recorded" | "decided";
739
+ receiptId: string;
740
+ decisionReceiptId?: string;
741
+ } & unknown;
742
+ WebShellQuestionAnswer: {
743
+ questionId: string;
744
+ optionIds?: string[];
745
+ text?: string;
746
+ } | unknown | unknown;
747
+ WebShellActionQuestion: {
748
+ id: string;
749
+ prompt: string;
750
+ required: boolean;
751
+ multiple: boolean;
752
+ allowText: boolean;
753
+ options: components["schemas"]["WebShellActionOption"][];
754
+ };
755
+ /** @description Receipt IDs are opaque authorized product handles, not private journal or storage refs. Input/cancel completion is command acceptance, not Turn completion or physical stop. Action completion may only record one vote. Lifecycle completion requires its cleanup facts; archive may remain java_durable because Java is its authority. Task cancel 202 is Java durable admission; completion means the authority durably recorded cancellation and returned a receipt, not that the task stopped. Task cancel failed proves non-acceptance and no further delivery, with a failure code; recovery_blocked means acceptance is unknown and needs reconciliation before re-execution. Its status is never cancelled. Physical settlement and an unknown physical outcome belong to the task, independently of operation acceptance. A completed task cancel carries admission stage harness_confirmed and delivery state confirmed with the authority's receipt; failed and recovery_blocked carry java_durable and blocked, so they are never delivered again without reconciliation. */
502
756
  WebShellCommandOperation: {
503
757
  operationId: string;
504
758
  /** Format: uuid */
@@ -512,9 +766,108 @@ export interface components {
512
766
  /** @enum {unknown} */
513
767
  deliveryState: "pending" | "leased" | "confirmed" | "blocked";
514
768
  receiptId?: string;
769
+ actionResolution?: components["schemas"]["WebShellActionResolution"];
770
+ /** @description Reason a durable response or task cancellation failed. Action response failures come from the original committed Action, or a definitive invalid response. Workspace close recovery_blocked reports original resource identity or unsettled execution; the Session remains closing. */
771
+ failureCode?: string;
515
772
  replayed: boolean;
516
773
  } & (unknown & unknown & unknown & unknown);
517
- WebShellOperation: components["schemas"]["WebShellCommandOperation"];
774
+ WebShellQuestionAction: {
775
+ actionId: string;
776
+ /** Format: uuid */
777
+ sessionId: string;
778
+ /** @constant */
779
+ kind: "question";
780
+ source: components["schemas"]["WebShellActionSource"];
781
+ /** @enum {unknown} */
782
+ state: "requested" | "decided" | "cancelled" | "expired";
783
+ /** Format: int64 */
784
+ inputRevision: number;
785
+ policyRevision: string;
786
+ /** Format: int64 */
787
+ createdAt: number;
788
+ /** Format: int64 */
789
+ expiresAt: number;
790
+ decisionReceiptId?: string;
791
+ questions: components["schemas"]["WebShellActionQuestion"][];
792
+ } & unknown;
793
+ /** @description At most one requested Hosted approval per Turn. allow and deny are stable option IDs. A requested native-tool Action may carry a bounded input preview when the producer supplies an input reference. Version 1 Actions and unavailable inputs omit it. Public timestamps are milliseconds, as recorded by the Harness. Decision receipts are opaque product IDs. */
794
+ WebShellPermissionAction: {
795
+ actionId: string;
796
+ /** Format: uuid */
797
+ sessionId: string;
798
+ /** @constant */
799
+ kind: "permission";
800
+ source: components["schemas"]["WebShellActionSource"];
801
+ /** @enum {unknown} */
802
+ state: "requested" | "decided" | "cancelled" | "expired";
803
+ /** Format: int64 */
804
+ inputRevision: number;
805
+ policyRevision: string;
806
+ /** Format: int64 */
807
+ createdAt: number;
808
+ /** Format: int64 */
809
+ expiresAt: number;
810
+ decisionReceiptId?: string;
811
+ options: components["schemas"]["WebShellActionOption"][];
812
+ turnId?: string;
813
+ functionCallId: string;
814
+ toolName: string;
815
+ inputPreview?: components["schemas"]["WebShellActionInputPreview"];
816
+ } & unknown;
817
+ WebShellPermissionResponse: {
818
+ /** @constant */
819
+ kind: "permission";
820
+ /** Format: int64 */
821
+ inputRevision: number;
822
+ policyRevision: string;
823
+ optionId: string;
824
+ };
825
+ WebShellActionPage: {
826
+ data: components["schemas"]["WebShellAction"][];
827
+ hasMore: boolean;
828
+ nextCursor?: string | null;
829
+ };
830
+ WebShellActionSource: {
831
+ /** @enum {unknown} */
832
+ kind: "tool_call" | "automation_run" | "team_plan" | "user_operation";
833
+ id: string;
834
+ };
835
+ /** @description Validate IDs, required answers, selection cardinality, text eligibility and current responder permission against the original Action. Unknown/expired/cancelled/conflicting revisions cannot grant execution. */
836
+ WebShellActionResponseRequest: components["schemas"]["WebShellPermissionResponse"] | components["schemas"]["WebShellQuestionResponse"];
837
+ WebShellActionOption: {
838
+ id: string;
839
+ label: string;
840
+ description?: string;
841
+ };
842
+ WebShellQuestionResponse: {
843
+ /** @constant */
844
+ kind: "question";
845
+ /** Format: int64 */
846
+ inputRevision: number;
847
+ policyRevision: string;
848
+ answers: components["schemas"]["WebShellQuestionAnswer"][];
849
+ };
850
+ WebShellOperation: components["schemas"]["WebShellCwdOperation"] | components["schemas"]["WebShellCommandOperation"];
851
+ WebShellActionQueryRequest: {
852
+ /** Format: uuid */
853
+ sessionId: string;
854
+ cursor?: string;
855
+ /** @default 20 */
856
+ limit?: number;
857
+ };
858
+ WebShellActionGetRequest: {
859
+ /** Format: uuid */
860
+ sessionId: string;
861
+ actionId: string;
862
+ };
863
+ WebShellActionRespondRequest: {
864
+ /** Format: uuid */
865
+ sessionId: string;
866
+ actionId: string;
867
+ idempotencyKey: string;
868
+ response: components["schemas"]["WebShellActionResponseRequest"];
869
+ requestId?: string;
870
+ };
518
871
  WebShellLifecycleRequest: {
519
872
  /** Format: uuid */
520
873
  sessionId: string;
@@ -531,7 +884,7 @@ export interface components {
531
884
  /** @enum {string} */
532
885
  TaskKind: "child_agent" | "workflow" | "background_shell" | "monitor" | "automation_run";
533
886
  /**
534
- * @description Logical run state. completed, failed and cancelled are terminal and are set only after the physical execution has settled. degraded means that the task still runs with reduced guarantees, such as a Monitor that lost its observation source. recovery_blocked means that recovery cannot prove the physical outcome: it is not settled, is never reported as success and is never re-run automatically.
887
+ * @description Logical run state. completed is terminal and is set when the run's own line ends settled, with or without a physical execution; failed and cancelled are terminal too, and they also cover a run that ended before its execution started (cancelled before dispatch, or failed with no provable start), when no physical execution ever settled. degraded means that the task still runs with reduced guarantees, such as a Monitor that lost its observation source. recovery_blocked means that recovery cannot prove the physical outcome: it is not settled, is never reported as success and is never re-run automatically.
535
888
  * @enum {string}
536
889
  */
537
890
  TaskState: "pending" | "running" | "waiting" | "completed" | "failed" | "cancelled" | "degraded" | "recovery_blocked";
@@ -573,7 +926,9 @@ export interface components {
573
926
  * @description Unix epoch milliseconds.
574
927
  */
575
928
  settledAt?: number;
576
- /** @description The newest Artifacts that hold durable task output, at most 100, oldest first; older Artifacts stay readable through the Session artifact routes. */
929
+ /** @description Stable task event cursor after the committed tail at view read time. No event can later appear at or before it. Pass it as after to follow only new events; recovery must instead keep its saved event page cursor so it does not skip intervening output. Normal retention may expire it. */
930
+ outputCursor?: string;
931
+ /** @description The newest Artifacts that hold durable task output, at most 100, oldest first. Entries must not rotate out until older Artifacts can be enumerated and attributed to the task: an evicted Artifact stays readable by id through the Session artifact routes but is no longer discoverable from the task. */
577
932
  artifactRefs: string[];
578
933
  actionCapabilities: components["schemas"]["TaskActionCapability"][];
579
934
  } & (unknown & unknown & unknown & unknown);
@@ -582,6 +937,31 @@ export interface components {
582
937
  hasMore: boolean;
583
938
  nextCursor?: string | null;
584
939
  } & unknown;
940
+ /** @description One task event: a logical state change, a bounded output chunk, or an Artifact reference. High-volume output goes to Artifacts or bounded chunks in this paged stream, never one Session event per raw line. The closed schema validates the server's own version; clients ignore unknown optional fields and unknown types and checkpoint their cursors. Strict response validation against an older minor version is not supported. Event identity, position, payload and accepted schema/projection versions are immutable across restart, projection rebuild and archival. */
941
+ WebShellTaskEvent: {
942
+ schemaVersion: number;
943
+ projectionVersion: number;
944
+ taskId: string;
945
+ /** Format: uuid */
946
+ sessionId: string;
947
+ type: components["schemas"]["TaskEventType"];
948
+ /** @description Stable opaque position after this event and its identity. Atomically apply the event and save this cursor to avoid duplicate application after a crash. It is never reassigned; normal retention can expire it. */
949
+ cursor: string;
950
+ /** Format: int64 */
951
+ createdAt: number;
952
+ state?: components["schemas"]["TaskState"];
953
+ runtimeState?: components["schemas"]["TaskRuntimeState"];
954
+ text?: string;
955
+ /** @description True when the chunk was cut to the event limit; its full output is already durably readable and discoverable in the task Artifacts when the event is published. */
956
+ truncated?: boolean;
957
+ artifactId?: string;
958
+ } & (unknown & unknown & unknown);
959
+ WebShellTaskEventPage: {
960
+ data: components["schemas"]["WebShellTaskEvent"][];
961
+ hasMore: boolean;
962
+ /** @description The last returned event cursor, never passing an event held back by limit. On an empty page, the requested position, or the durable retention floor if after was omitted. Required and never null, including when no events remain. No event may later become visible at or before this position. */
963
+ nextCursor: string;
964
+ };
585
965
  WebShellTaskQueryRequest: {
586
966
  /** Format: uuid */
587
967
  sessionId: string;
@@ -594,9 +974,96 @@ export interface components {
594
974
  sessionId: string;
595
975
  taskId: string;
596
976
  };
977
+ WebShellTaskEventQueryRequest: {
978
+ /** Format: uuid */
979
+ sessionId: string;
980
+ taskId: string;
981
+ /** @description Opaque task event cursor: an event cursor, a page nextCursor or a task outputCursor. Omit it to read from the durable retention floor. Strictly below the floor is 409 cursor_expired; equality is valid, including with no retained events. */
982
+ after?: string;
983
+ /** @default 20 */
984
+ limit?: number;
985
+ };
986
+ /** @description state_changed, output or artifact. The set is open: a later minor version may add types and optional fields. Clients ignore unknown optional fields and unknown types, while still checkpointing event cursors; strict validation against an older minor response schema is not supported. Existing fields forbidden for a known type cannot be repurposed on that type. */
987
+ TaskEventType: string;
988
+ ToolResultPreview: {
989
+ text: string;
990
+ truncated: boolean;
991
+ /** @enum {string} */
992
+ stream_id: "stdout" | "stderr";
993
+ /** Format: int64 */
994
+ source_start: number;
995
+ /** Format: int64 */
996
+ source_end: number;
997
+ };
998
+ PublicToolResult: {
999
+ id: string;
1000
+ session_id: string;
1001
+ turn_id: string;
1002
+ item_id: string;
1003
+ /** @description This implementation projects each result once at revision 1. Monotonic consumers reject duplicate or stale replay events; reprojection requires a separately reviewed migration and producer. */
1004
+ projection_revision: number;
1005
+ /** @enum {string} */
1006
+ execution_status: "success" | "error" | "cancelled" | "not_started";
1007
+ /** @enum {string|null} */
1008
+ capture_status: "complete" | "partial" | "unavailable" | null;
1009
+ /**
1010
+ * @description O3 emits committed or blocked from the durable receipt. Pending is reserved for future producers and is not emitted by this implementation.
1011
+ * @enum {string}
1012
+ */
1013
+ delivery_status: "pending" | "committed" | "blocked";
1014
+ /** @enum {string|null} */
1015
+ capture_scope: "process_pty" | "process_pipes" | "tool_native" | null;
1016
+ upstream_truncated: boolean | null;
1017
+ /** @enum {string|null} */
1018
+ reason_code?: "quota_exhausted" | "size_limit" | "producer_lost" | "storage_failed" | "cancelled" | null;
1019
+ preview?: components["schemas"]["ToolResultPreview"] | null;
1020
+ artifacts: components["schemas"]["PublicArtifact"][];
1021
+ };
1022
+ ArtifactAccess: {
1023
+ can_read_content: boolean;
1024
+ };
1025
+ ToolResultResponse: {
1026
+ result: components["schemas"]["PublicToolResult"];
1027
+ access: components["schemas"]["ArtifactAccess"];
1028
+ };
1029
+ ArtifactResponse: {
1030
+ artifact: components["schemas"]["PublicArtifact"];
1031
+ access: components["schemas"]["ArtifactAccess"];
1032
+ };
1033
+ WebShellArtifactPage: {
1034
+ data: components["schemas"]["ArtifactResponse"][];
1035
+ nextCursor: string | null;
1036
+ hasMore: boolean;
1037
+ };
1038
+ WebShellToolResultRequest: {
1039
+ sessionId: string;
1040
+ itemId: string;
1041
+ };
1042
+ WebShellArtifactRequest: {
1043
+ sessionId: string;
1044
+ artifactId: string;
1045
+ };
1046
+ WebShellArtifactQueryRequest: {
1047
+ sessionId: string;
1048
+ cursor?: string | null;
1049
+ /** @default 20 */
1050
+ limit?: number;
1051
+ };
1052
+ /** @description Optional preview for requested native read_file, write_file, edit or run_shell_command approvals. Missing or invalid input, and internal MCP inputs, omit the preview. No general secret redaction is performed; visibility follows Session read permissions. Deploy the version 2 Java reader before a Harness producer starts writing version 2 options. */
1053
+ WebShellActionInputPreview: {
1054
+ /** @description Exact prefix of the stored payloadJson ({toolName,input}), at most 8192 UTF-8 bytes ending at a complete code point. Truncated text may not be valid JSON. */
1055
+ text: string;
1056
+ /** @description True when text is shorter than the complete UTF-8 input. */
1057
+ truncated: boolean;
1058
+ /**
1059
+ * Format: int64
1060
+ * @description Byte length of the complete payloadJson in UTF-8, before truncation.
1061
+ */
1062
+ byteLength: number;
1063
+ };
597
1064
  };
598
1065
  responses: {
599
- /** @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. */
1066
+ /** @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. */
600
1067
  Forbidden: {
601
1068
  headers: {
602
1069
  [name: string]: unknown;
@@ -605,7 +1072,7 @@ export interface components {
605
1072
  "application/json": components["schemas"]["ErrorEnvelope"];
606
1073
  };
607
1074
  };
608
- /** @description A trusted actor is required for this request but none was supplied. */
1075
+ /** @description A trusted actor is required for this request but none was supplied (actor_required). In signed authentication mode (qwenSignature) every covered public and WebShell route additionally answers 401 authentication_required when the signature, timestamp or actor headers are missing, and 401 invalid_signature when the signature is wrong or stale. */
609
1076
  Unauthorized: {
610
1077
  headers: {
611
1078
  [name: string]: unknown;
@@ -614,6 +1081,15 @@ export interface components {
614
1081
  "application/json": components["schemas"]["ErrorEnvelope"];
615
1082
  };
616
1083
  };
1084
+ /** @description In signed authentication mode (qwenSignature) a request body beyond the configured signed-body limit (qwen.managed-agent.auth.max-signed-body-bytes, default 10 MiB) answers 413 payload_too_large before the signature is compared. */
1085
+ PayloadTooLarge: {
1086
+ headers: {
1087
+ [name: string]: unknown;
1088
+ };
1089
+ content: {
1090
+ "application/json": components["schemas"]["ErrorEnvelope"];
1091
+ };
1092
+ };
617
1093
  /** @description Invalid request. */
618
1094
  BadRequest: {
619
1095
  headers: {
@@ -623,7 +1099,7 @@ export interface components {
623
1099
  "application/json": components["schemas"]["ErrorEnvelope"];
624
1100
  };
625
1101
  };
626
- /** @description State, idempotency, or recovery conflict. */
1102
+ /** @description State, idempotency, or recovery conflict. New Workspace-scoped admissions return workspace_unavailable with retryable=false while an offline Workspace migration holds the storage fence; authorized durable replays retain their existing behavior. */
627
1103
  Conflict: {
628
1104
  headers: {
629
1105
  [name: string]: unknown;
@@ -641,8 +1117,8 @@ export interface components {
641
1117
  "application/json": components["schemas"]["ErrorEnvelope"];
642
1118
  };
643
1119
  };
644
- /** @description A dependency such as the Hosted Harness is unavailable; retry later. */
645
- Unavailable: {
1120
+ /** @description Task event cursor is strictly below the task's durable retention floor, which survives an empty retained set; equality is valid. The envelope's replay_floor_sequence and snapshot_through_sequence stay absent because task cursors are opaque. */
1121
+ TaskCursorExpired: {
646
1122
  headers: {
647
1123
  [name: string]: unknown;
648
1124
  };
@@ -650,10 +1126,21 @@ export interface components {
650
1126
  "application/json": components["schemas"]["ErrorEnvelope"];
651
1127
  };
652
1128
  };
653
- };
654
- parameters: never;
655
- requestBodies: never;
656
- headers: {
1129
+ /** @description A dependency such as the Hosted Harness is unavailable; retry later. */
1130
+ Unavailable: {
1131
+ headers: {
1132
+ [name: string]: unknown;
1133
+ };
1134
+ content: {
1135
+ "application/json": components["schemas"]["ErrorEnvelope"];
1136
+ };
1137
+ };
1138
+ };
1139
+ parameters: never;
1140
+ requestBodies: never;
1141
+ headers: {
1142
+ /** @description True when an accepted command or operation was replayed for the same idempotency key and digest without repeating its mutation. Session mutation responses represent the current visible Session; operation responses represent the original operation at its current state. */
1143
+ IdempotentReplay: boolean;
657
1144
  /** @description Trace-only correlation identifier; never an idempotency key. */
658
1145
  RequestId: string;
659
1146
  };
@@ -684,7 +1171,9 @@ export interface operations {
684
1171
  };
685
1172
  };
686
1173
  400: components["responses"]["BadRequest"];
1174
+ 401: components["responses"]["Unauthorized"];
687
1175
  403: components["responses"]["Forbidden"];
1176
+ 413: components["responses"]["PayloadTooLarge"];
688
1177
  };
689
1178
  };
690
1179
  webShellGetSession: {
@@ -710,8 +1199,10 @@ export interface operations {
710
1199
  };
711
1200
  };
712
1201
  400: components["responses"]["BadRequest"];
1202
+ 401: components["responses"]["Unauthorized"];
713
1203
  403: components["responses"]["Forbidden"];
714
1204
  404: components["responses"]["NotFound"];
1205
+ 413: components["responses"]["PayloadTooLarge"];
715
1206
  };
716
1207
  };
717
1208
  webShellTranscript: {
@@ -737,7 +1228,10 @@ export interface operations {
737
1228
  };
738
1229
  };
739
1230
  400: components["responses"]["BadRequest"];
1231
+ 401: components["responses"]["Unauthorized"];
1232
+ 403: components["responses"]["Forbidden"];
740
1233
  404: components["responses"]["NotFound"];
1234
+ 413: components["responses"]["PayloadTooLarge"];
741
1235
  };
742
1236
  };
743
1237
  webShellStreamEvents: {
@@ -763,7 +1257,10 @@ export interface operations {
763
1257
  };
764
1258
  };
765
1259
  400: components["responses"]["BadRequest"];
1260
+ 401: components["responses"]["Unauthorized"];
1261
+ 403: components["responses"]["Forbidden"];
766
1262
  404: components["responses"]["NotFound"];
1263
+ 413: components["responses"]["PayloadTooLarge"];
767
1264
  };
768
1265
  };
769
1266
  webShellCreateSession: {
@@ -794,6 +1291,7 @@ export interface operations {
794
1291
  403: components["responses"]["Forbidden"];
795
1292
  404: components["responses"]["NotFound"];
796
1293
  409: components["responses"]["Conflict"];
1294
+ 413: components["responses"]["PayloadTooLarge"];
797
1295
  503: components["responses"]["Unavailable"];
798
1296
  };
799
1297
  };
@@ -821,8 +1319,11 @@ export interface operations {
821
1319
  };
822
1320
  };
823
1321
  400: components["responses"]["BadRequest"];
1322
+ 401: components["responses"]["Unauthorized"];
1323
+ 403: components["responses"]["Forbidden"];
824
1324
  404: components["responses"]["NotFound"];
825
1325
  409: components["responses"]["Conflict"];
1326
+ 413: components["responses"]["PayloadTooLarge"];
826
1327
  };
827
1328
  };
828
1329
  webShellCancelTurn: {
@@ -849,8 +1350,11 @@ export interface operations {
849
1350
  };
850
1351
  };
851
1352
  400: components["responses"]["BadRequest"];
1353
+ 401: components["responses"]["Unauthorized"];
1354
+ 403: components["responses"]["Forbidden"];
852
1355
  404: components["responses"]["NotFound"];
853
1356
  409: components["responses"]["Conflict"];
1357
+ 413: components["responses"]["PayloadTooLarge"];
854
1358
  };
855
1359
  };
856
1360
  webShellQueryWorkspaces: {
@@ -876,7 +1380,40 @@ export interface operations {
876
1380
  };
877
1381
  };
878
1382
  400: components["responses"]["BadRequest"];
1383
+ 401: components["responses"]["Unauthorized"];
1384
+ 403: components["responses"]["Forbidden"];
879
1385
  404: components["responses"]["NotFound"];
1386
+ 413: components["responses"]["PayloadTooLarge"];
1387
+ };
1388
+ };
1389
+ webShellChangeCwd: {
1390
+ parameters: {
1391
+ query?: never;
1392
+ header?: never;
1393
+ path?: never;
1394
+ cookie?: never;
1395
+ };
1396
+ requestBody: {
1397
+ content: {
1398
+ "application/json": components["schemas"]["WebShellChangeCwdRequest"];
1399
+ };
1400
+ };
1401
+ responses: {
1402
+ /** @description Durable cwd operation; acceptance does not mean the new cwd is active. */
1403
+ 202: {
1404
+ headers: {
1405
+ [name: string]: unknown;
1406
+ };
1407
+ content: {
1408
+ "application/json": components["schemas"]["WebShellCwdOperation"];
1409
+ };
1410
+ };
1411
+ 400: components["responses"]["BadRequest"];
1412
+ 401: components["responses"]["Unauthorized"];
1413
+ 403: components["responses"]["Forbidden"];
1414
+ 404: components["responses"]["NotFound"];
1415
+ 409: components["responses"]["Conflict"];
1416
+ 413: components["responses"]["PayloadTooLarge"];
880
1417
  };
881
1418
  };
882
1419
  webShellQueryCwdOperation: {
@@ -902,9 +1439,106 @@ export interface operations {
902
1439
  };
903
1440
  };
904
1441
  400: components["responses"]["BadRequest"];
1442
+ 401: components["responses"]["Unauthorized"];
1443
+ 403: components["responses"]["Forbidden"];
1444
+ 404: components["responses"]["NotFound"];
1445
+ 409: components["responses"]["Conflict"];
1446
+ 413: components["responses"]["PayloadTooLarge"];
1447
+ };
1448
+ };
1449
+ queryWebShellActions: {
1450
+ parameters: {
1451
+ query?: never;
1452
+ header?: never;
1453
+ path?: never;
1454
+ cookie?: never;
1455
+ };
1456
+ requestBody: {
1457
+ content: {
1458
+ "application/json": components["schemas"]["WebShellActionQueryRequest"];
1459
+ };
1460
+ };
1461
+ responses: {
1462
+ /** @description Same authorized operation semantics as the public API. */
1463
+ 200: {
1464
+ headers: {
1465
+ [name: string]: unknown;
1466
+ };
1467
+ content: {
1468
+ "application/json": components["schemas"]["WebShellActionPage"];
1469
+ };
1470
+ };
1471
+ 400: components["responses"]["BadRequest"];
1472
+ 401: components["responses"]["Unauthorized"];
1473
+ 403: components["responses"]["Forbidden"];
1474
+ /** @description Unknown or unreadable Session (session_not_found), or unknown Action (action_not_found). */
1475
+ 404: components["responses"]["NotFound"];
1476
+ 409: components["responses"]["Conflict"];
1477
+ 413: components["responses"]["PayloadTooLarge"];
1478
+ };
1479
+ };
1480
+ getWebShellAction: {
1481
+ parameters: {
1482
+ query?: never;
1483
+ header?: never;
1484
+ path?: never;
1485
+ cookie?: never;
1486
+ };
1487
+ requestBody: {
1488
+ content: {
1489
+ "application/json": components["schemas"]["WebShellActionGetRequest"];
1490
+ };
1491
+ };
1492
+ responses: {
1493
+ /** @description Same authorized operation semantics as the public API. */
1494
+ 200: {
1495
+ headers: {
1496
+ [name: string]: unknown;
1497
+ };
1498
+ content: {
1499
+ "application/json": components["schemas"]["WebShellAction"];
1500
+ };
1501
+ };
1502
+ 400: components["responses"]["BadRequest"];
1503
+ 401: components["responses"]["Unauthorized"];
905
1504
  403: components["responses"]["Forbidden"];
1505
+ /** @description Unknown or unreadable Session (session_not_found), or unknown Action (action_not_found). */
906
1506
  404: components["responses"]["NotFound"];
907
1507
  409: components["responses"]["Conflict"];
1508
+ 413: components["responses"]["PayloadTooLarge"];
1509
+ };
1510
+ };
1511
+ respondWebShellAction: {
1512
+ parameters: {
1513
+ query?: never;
1514
+ header?: never;
1515
+ path?: never;
1516
+ cookie?: never;
1517
+ };
1518
+ requestBody: {
1519
+ content: {
1520
+ "application/json": components["schemas"]["WebShellActionRespondRequest"];
1521
+ };
1522
+ };
1523
+ responses: {
1524
+ /** @description Same authorized operation semantics as the public API. */
1525
+ 202: {
1526
+ headers: {
1527
+ [name: string]: unknown;
1528
+ };
1529
+ content: {
1530
+ "application/json": components["schemas"]["WebShellCommandOperation"];
1531
+ };
1532
+ };
1533
+ 400: components["responses"]["BadRequest"];
1534
+ 401: components["responses"]["Unauthorized"];
1535
+ /** @description Responding requires the Session creator (action_forbidden). A Session with no recorded creator and no recorded create command (anonymous open-mode creation, or a Session created before the V40 migration that also has no Workspace creation record) answers to any caller in its tenant, matching its read ACL. The tenant filter's 403 actor_scope_mismatch also applies on this route. */
1536
+ 403: components["responses"]["Forbidden"];
1537
+ /** @description Unknown or unreadable Session (session_not_found), or unknown Action (action_not_found). */
1538
+ 404: components["responses"]["NotFound"];
1539
+ /** @description Idempotency conflict, a non-active Session (session_inactive), or an ended Action (action_expired, action_cancelled, action_already_resolved). An existing matching response replays before the Session-state check. */
1540
+ 409: components["responses"]["Conflict"];
1541
+ 413: components["responses"]["PayloadTooLarge"];
908
1542
  };
909
1543
  };
910
1544
  closeWebShellSession: {
@@ -930,9 +1564,11 @@ export interface operations {
930
1564
  };
931
1565
  };
932
1566
  400: components["responses"]["BadRequest"];
1567
+ 401: components["responses"]["Unauthorized"];
933
1568
  403: components["responses"]["Forbidden"];
934
1569
  404: components["responses"]["NotFound"];
935
1570
  409: components["responses"]["Conflict"];
1571
+ 413: components["responses"]["PayloadTooLarge"];
936
1572
  };
937
1573
  };
938
1574
  archiveWebShellSession: {
@@ -958,9 +1594,11 @@ export interface operations {
958
1594
  };
959
1595
  };
960
1596
  400: components["responses"]["BadRequest"];
1597
+ 401: components["responses"]["Unauthorized"];
961
1598
  403: components["responses"]["Forbidden"];
962
1599
  404: components["responses"]["NotFound"];
963
1600
  409: components["responses"]["Conflict"];
1601
+ 413: components["responses"]["PayloadTooLarge"];
964
1602
  };
965
1603
  };
966
1604
  deleteWebShellSession: {
@@ -986,9 +1624,11 @@ export interface operations {
986
1624
  };
987
1625
  };
988
1626
  400: components["responses"]["BadRequest"];
1627
+ 401: components["responses"]["Unauthorized"];
989
1628
  403: components["responses"]["Forbidden"];
990
1629
  404: components["responses"]["NotFound"];
991
1630
  409: components["responses"]["Conflict"];
1631
+ 413: components["responses"]["PayloadTooLarge"];
992
1632
  };
993
1633
  };
994
1634
  webShellGetWorkspace: {
@@ -1014,7 +1654,10 @@ export interface operations {
1014
1654
  };
1015
1655
  };
1016
1656
  400: components["responses"]["BadRequest"];
1657
+ 401: components["responses"]["Unauthorized"];
1658
+ 403: components["responses"]["Forbidden"];
1017
1659
  404: components["responses"]["NotFound"];
1660
+ 413: components["responses"]["PayloadTooLarge"];
1018
1661
  };
1019
1662
  };
1020
1663
  queryWebShellTasks: {
@@ -1040,8 +1683,10 @@ export interface operations {
1040
1683
  };
1041
1684
  };
1042
1685
  400: components["responses"]["BadRequest"];
1686
+ 401: components["responses"]["Unauthorized"];
1043
1687
  403: components["responses"]["Forbidden"];
1044
1688
  404: components["responses"]["NotFound"];
1689
+ 413: components["responses"]["PayloadTooLarge"];
1045
1690
  };
1046
1691
  };
1047
1692
  getWebShellTask: {
@@ -1067,8 +1712,260 @@ export interface operations {
1067
1712
  };
1068
1713
  };
1069
1714
  400: components["responses"]["BadRequest"];
1715
+ 401: components["responses"]["Unauthorized"];
1716
+ 403: components["responses"]["Forbidden"];
1717
+ 404: components["responses"]["NotFound"];
1718
+ 413: components["responses"]["PayloadTooLarge"];
1719
+ };
1720
+ };
1721
+ queryWebShellTaskEvents: {
1722
+ parameters: {
1723
+ query?: never;
1724
+ header?: never;
1725
+ path?: never;
1726
+ cookie?: never;
1727
+ };
1728
+ requestBody: {
1729
+ content: {
1730
+ "application/json": components["schemas"]["WebShellTaskEventQueryRequest"];
1731
+ };
1732
+ };
1733
+ responses: {
1734
+ /** @description Same authorized task semantics as the public task events route, including the durable retention floor, committed-prefix publication, Artifact recovery order and client tolerance of unknown optional fields and event types. */
1735
+ 200: {
1736
+ headers: {
1737
+ [name: string]: unknown;
1738
+ };
1739
+ content: {
1740
+ "application/json": components["schemas"]["WebShellTaskEventPage"];
1741
+ };
1742
+ };
1743
+ 400: components["responses"]["BadRequest"];
1744
+ 401: components["responses"]["Unauthorized"];
1070
1745
  403: components["responses"]["Forbidden"];
1071
1746
  404: components["responses"]["NotFound"];
1747
+ 409: components["responses"]["TaskCursorExpired"];
1748
+ 413: components["responses"]["PayloadTooLarge"];
1749
+ };
1750
+ };
1751
+ getWebShellToolResult: {
1752
+ parameters: {
1753
+ query?: never;
1754
+ header?: never;
1755
+ path?: never;
1756
+ cookie?: never;
1757
+ };
1758
+ requestBody: {
1759
+ content: {
1760
+ "application/json": components["schemas"]["WebShellToolResultRequest"];
1761
+ };
1762
+ };
1763
+ responses: {
1764
+ /** @description Authorized persisted tool result resource. */
1765
+ 200: {
1766
+ headers: {
1767
+ "Cache-Control"?: "private, no-store";
1768
+ [name: string]: unknown;
1769
+ };
1770
+ content: {
1771
+ "application/json": components["schemas"]["ToolResultResponse"];
1772
+ };
1773
+ };
1774
+ /** @description Invalid request. */
1775
+ 400: {
1776
+ headers: {
1777
+ [name: string]: unknown;
1778
+ };
1779
+ content: {
1780
+ "application/json": components["schemas"]["ErrorEnvelope"];
1781
+ };
1782
+ };
1783
+ /** @description Trusted actor required. */
1784
+ 401: {
1785
+ headers: {
1786
+ [name: string]: unknown;
1787
+ };
1788
+ content: {
1789
+ "application/json": components["schemas"]["ErrorEnvelope"];
1790
+ };
1791
+ };
1792
+ 403: components["responses"]["Forbidden"];
1793
+ /** @description Unknown or unreadable resource. */
1794
+ 404: {
1795
+ headers: {
1796
+ [name: string]: unknown;
1797
+ };
1798
+ content: {
1799
+ "application/json": components["schemas"]["ErrorEnvelope"];
1800
+ };
1801
+ };
1802
+ 413: components["responses"]["PayloadTooLarge"];
1803
+ /** @description Resource temporarily unavailable. */
1804
+ 503: {
1805
+ headers: {
1806
+ [name: string]: unknown;
1807
+ };
1808
+ content: {
1809
+ "application/json": components["schemas"]["ErrorEnvelope"];
1810
+ };
1811
+ };
1812
+ };
1813
+ };
1814
+ getWebShellArtifact: {
1815
+ parameters: {
1816
+ query?: never;
1817
+ header?: never;
1818
+ path?: never;
1819
+ cookie?: never;
1820
+ };
1821
+ requestBody: {
1822
+ content: {
1823
+ "application/json": components["schemas"]["WebShellArtifactRequest"];
1824
+ };
1825
+ };
1826
+ responses: {
1827
+ /** @description Authorized persisted artifact metadata. */
1828
+ 200: {
1829
+ headers: {
1830
+ "Cache-Control"?: "private, no-store";
1831
+ [name: string]: unknown;
1832
+ };
1833
+ content: {
1834
+ "application/json": components["schemas"]["ArtifactResponse"];
1835
+ };
1836
+ };
1837
+ /** @description Invalid request. */
1838
+ 400: {
1839
+ headers: {
1840
+ [name: string]: unknown;
1841
+ };
1842
+ content: {
1843
+ "application/json": components["schemas"]["ErrorEnvelope"];
1844
+ };
1845
+ };
1846
+ /** @description Trusted actor required. */
1847
+ 401: {
1848
+ headers: {
1849
+ [name: string]: unknown;
1850
+ };
1851
+ content: {
1852
+ "application/json": components["schemas"]["ErrorEnvelope"];
1853
+ };
1854
+ };
1855
+ 403: components["responses"]["Forbidden"];
1856
+ /** @description Unknown or unreadable resource. */
1857
+ 404: {
1858
+ headers: {
1859
+ [name: string]: unknown;
1860
+ };
1861
+ content: {
1862
+ "application/json": components["schemas"]["ErrorEnvelope"];
1863
+ };
1864
+ };
1865
+ 413: components["responses"]["PayloadTooLarge"];
1866
+ /** @description Resource temporarily unavailable. */
1867
+ 503: {
1868
+ headers: {
1869
+ [name: string]: unknown;
1870
+ };
1871
+ content: {
1872
+ "application/json": components["schemas"]["ErrorEnvelope"];
1873
+ };
1874
+ };
1875
+ };
1876
+ };
1877
+ queryWebShellArtifacts: {
1878
+ parameters: {
1879
+ query?: never;
1880
+ header?: never;
1881
+ path?: never;
1882
+ cookie?: never;
1883
+ };
1884
+ requestBody: {
1885
+ content: {
1886
+ "application/json": components["schemas"]["WebShellArtifactQueryRequest"];
1887
+ };
1888
+ };
1889
+ responses: {
1890
+ /** @description Authorized artifact metadata page. */
1891
+ 200: {
1892
+ headers: {
1893
+ "Cache-Control"?: "private, no-store";
1894
+ [name: string]: unknown;
1895
+ };
1896
+ content: {
1897
+ "application/json": components["schemas"]["WebShellArtifactPage"];
1898
+ };
1899
+ };
1900
+ /** @description Invalid request. */
1901
+ 400: {
1902
+ headers: {
1903
+ [name: string]: unknown;
1904
+ };
1905
+ content: {
1906
+ "application/json": components["schemas"]["ErrorEnvelope"];
1907
+ };
1908
+ };
1909
+ /** @description Trusted actor required. */
1910
+ 401: {
1911
+ headers: {
1912
+ [name: string]: unknown;
1913
+ };
1914
+ content: {
1915
+ "application/json": components["schemas"]["ErrorEnvelope"];
1916
+ };
1917
+ };
1918
+ 403: components["responses"]["Forbidden"];
1919
+ /** @description Unknown or unreadable resource. */
1920
+ 404: {
1921
+ headers: {
1922
+ [name: string]: unknown;
1923
+ };
1924
+ content: {
1925
+ "application/json": components["schemas"]["ErrorEnvelope"];
1926
+ };
1927
+ };
1928
+ 413: components["responses"]["PayloadTooLarge"];
1929
+ /** @description Resource temporarily unavailable. */
1930
+ 503: {
1931
+ headers: {
1932
+ [name: string]: unknown;
1933
+ };
1934
+ content: {
1935
+ "application/json": components["schemas"]["ErrorEnvelope"];
1936
+ };
1937
+ };
1938
+ };
1939
+ };
1940
+ unarchiveWebShellSession: {
1941
+ parameters: {
1942
+ query?: never;
1943
+ header?: never;
1944
+ path?: never;
1945
+ cookie?: never;
1946
+ };
1947
+ requestBody: {
1948
+ content: {
1949
+ "application/json": components["schemas"]["WebShellLifecycleRequest"];
1950
+ };
1951
+ };
1952
+ responses: {
1953
+ /** @description Current WebShell Session; replay does not repeat the mutation. */
1954
+ 200: {
1955
+ headers: {
1956
+ "X-Qwen-Idempotent-Replay": components["headers"]["IdempotentReplay"];
1957
+ [name: string]: unknown;
1958
+ };
1959
+ content: {
1960
+ "application/json": components["schemas"]["WebShellSession"];
1961
+ };
1962
+ };
1963
+ 400: components["responses"]["BadRequest"];
1964
+ 401: components["responses"]["Unauthorized"];
1965
+ 403: components["responses"]["Forbidden"];
1966
+ 404: components["responses"]["NotFound"];
1967
+ 409: components["responses"]["Conflict"];
1968
+ 413: components["responses"]["PayloadTooLarge"];
1072
1969
  };
1073
1970
  };
1074
1971
  }