@qwen-code/web-shell 0.24.7 → 0.25.1-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 (79) hide show
  1. package/README.md +65 -2
  2. package/dist/ThreadsRoute-CXAiD3t_.js +2407 -0
  3. package/dist/daemon-react-sdk.js +1 -1
  4. package/dist/index-D9Bc2Hcz.js +123543 -0
  5. package/dist/index.js +69 -120254
  6. package/dist/sw.js +1 -1
  7. package/dist/{toolNames-B0O1UjKB.js → toolNames-CDhDlFnq.js} +5415 -4628
  8. package/dist/transcript.js +8980 -8737
  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 +911 -16
  29. package/dist/types/components/managed/java-managed-agent-client.d.ts +27 -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 +1 -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"][];
@@ -451,6 +652,8 @@ export interface components {
451
652
  * @example services/api
452
653
  */
453
654
  WorkspaceRelativePath: string;
655
+ /** @enum {string} */
656
+ CwdOperationStatus: "pending" | "installing" | "completed" | "failed";
454
657
  WebShellWorkspaceSelection: {
455
658
  workspaceId: string;
456
659
  /** @default . */
@@ -482,7 +685,7 @@ export interface components {
482
685
  * @default false
483
686
  */
484
687
  workspaceContext: boolean;
485
- /** @description Supports authorized Workspace discovery, empty Session creation, and saved binding read-back; does not enable execution. */
688
+ /** @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
689
  workspaceBinding: boolean;
487
690
  };
488
691
  /** @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 +696,61 @@ export interface components {
493
696
  canCreateSession?: true;
494
697
  }) | null;
495
698
  };
699
+ WebShellChangeCwdRequest: {
700
+ /** Format: uuid */
701
+ sessionId: string;
702
+ idempotencyKey: string;
703
+ cwdRelative: components["schemas"]["WorkspaceRelativePath"];
704
+ /** Format: int64 */
705
+ expectedContextRevision: number;
706
+ requestId?: string | null;
707
+ };
496
708
  WebShellOperationRequest: {
497
709
  /** Format: uuid */
498
710
  sessionId: string;
499
711
  operationId: string;
500
712
  };
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. */
713
+ /** @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. */
714
+ WebShellCwdOperation: {
715
+ operationId: string;
716
+ /** Format: uuid */
717
+ sessionId: string;
718
+ /** @constant */
719
+ type: "cwd_change";
720
+ status: components["schemas"]["CwdOperationStatus"];
721
+ /** Format: int64 */
722
+ expectedContextRevision: number;
723
+ targetCwdRelative: components["schemas"]["WorkspaceRelativePath"];
724
+ /** Format: int64 */
725
+ resultContextRevision?: number | null;
726
+ failureCode?: string | null;
727
+ replayed: boolean;
728
+ } & (unknown & unknown);
729
+ WebShellAction: components["schemas"]["WebShellPermissionAction"] | components["schemas"]["WebShellQuestionAction"];
730
+ WebShellActionResolution: {
731
+ actionId: string;
732
+ /**
733
+ * @description D6 supports decided only; vote_recorded is planned.
734
+ * @enum {unknown}
735
+ */
736
+ outcome: "vote_recorded" | "decided";
737
+ receiptId: string;
738
+ decisionReceiptId?: string;
739
+ } & unknown;
740
+ WebShellQuestionAnswer: {
741
+ questionId: string;
742
+ optionIds?: string[];
743
+ text?: string;
744
+ } | unknown | unknown;
745
+ WebShellActionQuestion: {
746
+ id: string;
747
+ prompt: string;
748
+ required: boolean;
749
+ multiple: boolean;
750
+ allowText: boolean;
751
+ options: components["schemas"]["WebShellActionOption"][];
752
+ };
753
+ /** @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
754
  WebShellCommandOperation: {
503
755
  operationId: string;
504
756
  /** Format: uuid */
@@ -512,9 +764,108 @@ export interface components {
512
764
  /** @enum {unknown} */
513
765
  deliveryState: "pending" | "leased" | "confirmed" | "blocked";
514
766
  receiptId?: string;
767
+ actionResolution?: components["schemas"]["WebShellActionResolution"];
768
+ /** @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. */
769
+ failureCode?: string;
515
770
  replayed: boolean;
516
771
  } & (unknown & unknown & unknown & unknown);
517
- WebShellOperation: components["schemas"]["WebShellCommandOperation"];
772
+ WebShellQuestionAction: {
773
+ actionId: string;
774
+ /** Format: uuid */
775
+ sessionId: string;
776
+ /** @constant */
777
+ kind: "question";
778
+ source: components["schemas"]["WebShellActionSource"];
779
+ /** @enum {unknown} */
780
+ state: "requested" | "decided" | "cancelled" | "expired";
781
+ /** Format: int64 */
782
+ inputRevision: number;
783
+ policyRevision: string;
784
+ /** Format: int64 */
785
+ createdAt: number;
786
+ /** Format: int64 */
787
+ expiresAt: number;
788
+ decisionReceiptId?: string;
789
+ questions: components["schemas"]["WebShellActionQuestion"][];
790
+ } & unknown;
791
+ /** @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. */
792
+ WebShellPermissionAction: {
793
+ actionId: string;
794
+ /** Format: uuid */
795
+ sessionId: string;
796
+ /** @constant */
797
+ kind: "permission";
798
+ source: components["schemas"]["WebShellActionSource"];
799
+ /** @enum {unknown} */
800
+ state: "requested" | "decided" | "cancelled" | "expired";
801
+ /** Format: int64 */
802
+ inputRevision: number;
803
+ policyRevision: string;
804
+ /** Format: int64 */
805
+ createdAt: number;
806
+ /** Format: int64 */
807
+ expiresAt: number;
808
+ decisionReceiptId?: string;
809
+ options: components["schemas"]["WebShellActionOption"][];
810
+ turnId?: string;
811
+ functionCallId: string;
812
+ toolName: string;
813
+ inputPreview?: components["schemas"]["WebShellActionInputPreview"];
814
+ } & unknown;
815
+ WebShellPermissionResponse: {
816
+ /** @constant */
817
+ kind: "permission";
818
+ /** Format: int64 */
819
+ inputRevision: number;
820
+ policyRevision: string;
821
+ optionId: string;
822
+ };
823
+ WebShellActionPage: {
824
+ data: components["schemas"]["WebShellAction"][];
825
+ hasMore: boolean;
826
+ nextCursor?: string | null;
827
+ };
828
+ WebShellActionSource: {
829
+ /** @enum {unknown} */
830
+ kind: "tool_call" | "automation_run" | "team_plan" | "user_operation";
831
+ id: string;
832
+ };
833
+ /** @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. */
834
+ WebShellActionResponseRequest: components["schemas"]["WebShellPermissionResponse"] | components["schemas"]["WebShellQuestionResponse"];
835
+ WebShellActionOption: {
836
+ id: string;
837
+ label: string;
838
+ description?: string;
839
+ };
840
+ WebShellQuestionResponse: {
841
+ /** @constant */
842
+ kind: "question";
843
+ /** Format: int64 */
844
+ inputRevision: number;
845
+ policyRevision: string;
846
+ answers: components["schemas"]["WebShellQuestionAnswer"][];
847
+ };
848
+ WebShellOperation: components["schemas"]["WebShellCwdOperation"] | components["schemas"]["WebShellCommandOperation"];
849
+ WebShellActionQueryRequest: {
850
+ /** Format: uuid */
851
+ sessionId: string;
852
+ cursor?: string;
853
+ /** @default 20 */
854
+ limit?: number;
855
+ };
856
+ WebShellActionGetRequest: {
857
+ /** Format: uuid */
858
+ sessionId: string;
859
+ actionId: string;
860
+ };
861
+ WebShellActionRespondRequest: {
862
+ /** Format: uuid */
863
+ sessionId: string;
864
+ actionId: string;
865
+ idempotencyKey: string;
866
+ response: components["schemas"]["WebShellActionResponseRequest"];
867
+ requestId?: string;
868
+ };
518
869
  WebShellLifecycleRequest: {
519
870
  /** Format: uuid */
520
871
  sessionId: string;
@@ -531,7 +882,7 @@ export interface components {
531
882
  /** @enum {string} */
532
883
  TaskKind: "child_agent" | "workflow" | "background_shell" | "monitor" | "automation_run";
533
884
  /**
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.
885
+ * @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
886
  * @enum {string}
536
887
  */
537
888
  TaskState: "pending" | "running" | "waiting" | "completed" | "failed" | "cancelled" | "degraded" | "recovery_blocked";
@@ -573,7 +924,9 @@ export interface components {
573
924
  * @description Unix epoch milliseconds.
574
925
  */
575
926
  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. */
927
+ /** @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. */
928
+ outputCursor?: string;
929
+ /** @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
930
  artifactRefs: string[];
578
931
  actionCapabilities: components["schemas"]["TaskActionCapability"][];
579
932
  } & (unknown & unknown & unknown & unknown);
@@ -582,6 +935,31 @@ export interface components {
582
935
  hasMore: boolean;
583
936
  nextCursor?: string | null;
584
937
  } & unknown;
938
+ /** @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. */
939
+ WebShellTaskEvent: {
940
+ schemaVersion: number;
941
+ projectionVersion: number;
942
+ taskId: string;
943
+ /** Format: uuid */
944
+ sessionId: string;
945
+ type: components["schemas"]["TaskEventType"];
946
+ /** @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. */
947
+ cursor: string;
948
+ /** Format: int64 */
949
+ createdAt: number;
950
+ state?: components["schemas"]["TaskState"];
951
+ runtimeState?: components["schemas"]["TaskRuntimeState"];
952
+ text?: string;
953
+ /** @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. */
954
+ truncated?: boolean;
955
+ artifactId?: string;
956
+ } & (unknown & unknown & unknown);
957
+ WebShellTaskEventPage: {
958
+ data: components["schemas"]["WebShellTaskEvent"][];
959
+ hasMore: boolean;
960
+ /** @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. */
961
+ nextCursor: string;
962
+ };
585
963
  WebShellTaskQueryRequest: {
586
964
  /** Format: uuid */
587
965
  sessionId: string;
@@ -594,9 +972,96 @@ export interface components {
594
972
  sessionId: string;
595
973
  taskId: string;
596
974
  };
975
+ WebShellTaskEventQueryRequest: {
976
+ /** Format: uuid */
977
+ sessionId: string;
978
+ taskId: string;
979
+ /** @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. */
980
+ after?: string;
981
+ /** @default 20 */
982
+ limit?: number;
983
+ };
984
+ /** @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. */
985
+ TaskEventType: string;
986
+ ToolResultPreview: {
987
+ text: string;
988
+ truncated: boolean;
989
+ /** @enum {string} */
990
+ stream_id: "stdout" | "stderr";
991
+ /** Format: int64 */
992
+ source_start: number;
993
+ /** Format: int64 */
994
+ source_end: number;
995
+ };
996
+ PublicToolResult: {
997
+ id: string;
998
+ session_id: string;
999
+ turn_id: string;
1000
+ item_id: string;
1001
+ /** @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. */
1002
+ projection_revision: number;
1003
+ /** @enum {string} */
1004
+ execution_status: "success" | "error" | "cancelled" | "not_started";
1005
+ /** @enum {string|null} */
1006
+ capture_status: "complete" | "partial" | "unavailable" | null;
1007
+ /**
1008
+ * @description O3 emits committed or blocked from the durable receipt. Pending is reserved for future producers and is not emitted by this implementation.
1009
+ * @enum {string}
1010
+ */
1011
+ delivery_status: "pending" | "committed" | "blocked";
1012
+ /** @enum {string|null} */
1013
+ capture_scope: "process_pty" | "process_pipes" | "tool_native" | null;
1014
+ upstream_truncated: boolean | null;
1015
+ /** @enum {string|null} */
1016
+ reason_code?: "quota_exhausted" | "size_limit" | "producer_lost" | "storage_failed" | "cancelled" | null;
1017
+ preview?: components["schemas"]["ToolResultPreview"] | null;
1018
+ artifacts: components["schemas"]["PublicArtifact"][];
1019
+ };
1020
+ ArtifactAccess: {
1021
+ can_read_content: boolean;
1022
+ };
1023
+ ToolResultResponse: {
1024
+ result: components["schemas"]["PublicToolResult"];
1025
+ access: components["schemas"]["ArtifactAccess"];
1026
+ };
1027
+ ArtifactResponse: {
1028
+ artifact: components["schemas"]["PublicArtifact"];
1029
+ access: components["schemas"]["ArtifactAccess"];
1030
+ };
1031
+ WebShellArtifactPage: {
1032
+ data: components["schemas"]["ArtifactResponse"][];
1033
+ nextCursor: string | null;
1034
+ hasMore: boolean;
1035
+ };
1036
+ WebShellToolResultRequest: {
1037
+ sessionId: string;
1038
+ itemId: string;
1039
+ };
1040
+ WebShellArtifactRequest: {
1041
+ sessionId: string;
1042
+ artifactId: string;
1043
+ };
1044
+ WebShellArtifactQueryRequest: {
1045
+ sessionId: string;
1046
+ cursor?: string | null;
1047
+ /** @default 20 */
1048
+ limit?: number;
1049
+ };
1050
+ /** @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. */
1051
+ WebShellActionInputPreview: {
1052
+ /** @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. */
1053
+ text: string;
1054
+ /** @description True when text is shorter than the complete UTF-8 input. */
1055
+ truncated: boolean;
1056
+ /**
1057
+ * Format: int64
1058
+ * @description Byte length of the complete payloadJson in UTF-8, before truncation.
1059
+ */
1060
+ byteLength: number;
1061
+ };
597
1062
  };
598
1063
  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. */
1064
+ /** @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
1065
  Forbidden: {
601
1066
  headers: {
602
1067
  [name: string]: unknown;
@@ -605,7 +1070,7 @@ export interface components {
605
1070
  "application/json": components["schemas"]["ErrorEnvelope"];
606
1071
  };
607
1072
  };
608
- /** @description A trusted actor is required for this request but none was supplied. */
1073
+ /** @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
1074
  Unauthorized: {
610
1075
  headers: {
611
1076
  [name: string]: unknown;
@@ -614,6 +1079,15 @@ export interface components {
614
1079
  "application/json": components["schemas"]["ErrorEnvelope"];
615
1080
  };
616
1081
  };
1082
+ /** @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. */
1083
+ PayloadTooLarge: {
1084
+ headers: {
1085
+ [name: string]: unknown;
1086
+ };
1087
+ content: {
1088
+ "application/json": components["schemas"]["ErrorEnvelope"];
1089
+ };
1090
+ };
617
1091
  /** @description Invalid request. */
618
1092
  BadRequest: {
619
1093
  headers: {
@@ -641,8 +1115,8 @@ export interface components {
641
1115
  "application/json": components["schemas"]["ErrorEnvelope"];
642
1116
  };
643
1117
  };
644
- /** @description A dependency such as the Hosted Harness is unavailable; retry later. */
645
- Unavailable: {
1118
+ /** @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. */
1119
+ TaskCursorExpired: {
646
1120
  headers: {
647
1121
  [name: string]: unknown;
648
1122
  };
@@ -650,10 +1124,21 @@ export interface components {
650
1124
  "application/json": components["schemas"]["ErrorEnvelope"];
651
1125
  };
652
1126
  };
653
- };
654
- parameters: never;
655
- requestBodies: never;
656
- headers: {
1127
+ /** @description A dependency such as the Hosted Harness is unavailable; retry later. */
1128
+ Unavailable: {
1129
+ headers: {
1130
+ [name: string]: unknown;
1131
+ };
1132
+ content: {
1133
+ "application/json": components["schemas"]["ErrorEnvelope"];
1134
+ };
1135
+ };
1136
+ };
1137
+ parameters: never;
1138
+ requestBodies: never;
1139
+ headers: {
1140
+ /** @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. */
1141
+ IdempotentReplay: boolean;
657
1142
  /** @description Trace-only correlation identifier; never an idempotency key. */
658
1143
  RequestId: string;
659
1144
  };
@@ -684,7 +1169,9 @@ export interface operations {
684
1169
  };
685
1170
  };
686
1171
  400: components["responses"]["BadRequest"];
1172
+ 401: components["responses"]["Unauthorized"];
687
1173
  403: components["responses"]["Forbidden"];
1174
+ 413: components["responses"]["PayloadTooLarge"];
688
1175
  };
689
1176
  };
690
1177
  webShellGetSession: {
@@ -710,8 +1197,10 @@ export interface operations {
710
1197
  };
711
1198
  };
712
1199
  400: components["responses"]["BadRequest"];
1200
+ 401: components["responses"]["Unauthorized"];
713
1201
  403: components["responses"]["Forbidden"];
714
1202
  404: components["responses"]["NotFound"];
1203
+ 413: components["responses"]["PayloadTooLarge"];
715
1204
  };
716
1205
  };
717
1206
  webShellTranscript: {
@@ -737,7 +1226,10 @@ export interface operations {
737
1226
  };
738
1227
  };
739
1228
  400: components["responses"]["BadRequest"];
1229
+ 401: components["responses"]["Unauthorized"];
1230
+ 403: components["responses"]["Forbidden"];
740
1231
  404: components["responses"]["NotFound"];
1232
+ 413: components["responses"]["PayloadTooLarge"];
741
1233
  };
742
1234
  };
743
1235
  webShellStreamEvents: {
@@ -763,7 +1255,10 @@ export interface operations {
763
1255
  };
764
1256
  };
765
1257
  400: components["responses"]["BadRequest"];
1258
+ 401: components["responses"]["Unauthorized"];
1259
+ 403: components["responses"]["Forbidden"];
766
1260
  404: components["responses"]["NotFound"];
1261
+ 413: components["responses"]["PayloadTooLarge"];
767
1262
  };
768
1263
  };
769
1264
  webShellCreateSession: {
@@ -794,6 +1289,7 @@ export interface operations {
794
1289
  403: components["responses"]["Forbidden"];
795
1290
  404: components["responses"]["NotFound"];
796
1291
  409: components["responses"]["Conflict"];
1292
+ 413: components["responses"]["PayloadTooLarge"];
797
1293
  503: components["responses"]["Unavailable"];
798
1294
  };
799
1295
  };
@@ -821,8 +1317,11 @@ export interface operations {
821
1317
  };
822
1318
  };
823
1319
  400: components["responses"]["BadRequest"];
1320
+ 401: components["responses"]["Unauthorized"];
1321
+ 403: components["responses"]["Forbidden"];
824
1322
  404: components["responses"]["NotFound"];
825
1323
  409: components["responses"]["Conflict"];
1324
+ 413: components["responses"]["PayloadTooLarge"];
826
1325
  };
827
1326
  };
828
1327
  webShellCancelTurn: {
@@ -849,8 +1348,11 @@ export interface operations {
849
1348
  };
850
1349
  };
851
1350
  400: components["responses"]["BadRequest"];
1351
+ 401: components["responses"]["Unauthorized"];
1352
+ 403: components["responses"]["Forbidden"];
852
1353
  404: components["responses"]["NotFound"];
853
1354
  409: components["responses"]["Conflict"];
1355
+ 413: components["responses"]["PayloadTooLarge"];
854
1356
  };
855
1357
  };
856
1358
  webShellQueryWorkspaces: {
@@ -876,7 +1378,40 @@ export interface operations {
876
1378
  };
877
1379
  };
878
1380
  400: components["responses"]["BadRequest"];
1381
+ 401: components["responses"]["Unauthorized"];
1382
+ 403: components["responses"]["Forbidden"];
879
1383
  404: components["responses"]["NotFound"];
1384
+ 413: components["responses"]["PayloadTooLarge"];
1385
+ };
1386
+ };
1387
+ webShellChangeCwd: {
1388
+ parameters: {
1389
+ query?: never;
1390
+ header?: never;
1391
+ path?: never;
1392
+ cookie?: never;
1393
+ };
1394
+ requestBody: {
1395
+ content: {
1396
+ "application/json": components["schemas"]["WebShellChangeCwdRequest"];
1397
+ };
1398
+ };
1399
+ responses: {
1400
+ /** @description Durable cwd operation; acceptance does not mean the new cwd is active. */
1401
+ 202: {
1402
+ headers: {
1403
+ [name: string]: unknown;
1404
+ };
1405
+ content: {
1406
+ "application/json": components["schemas"]["WebShellCwdOperation"];
1407
+ };
1408
+ };
1409
+ 400: components["responses"]["BadRequest"];
1410
+ 401: components["responses"]["Unauthorized"];
1411
+ 403: components["responses"]["Forbidden"];
1412
+ 404: components["responses"]["NotFound"];
1413
+ 409: components["responses"]["Conflict"];
1414
+ 413: components["responses"]["PayloadTooLarge"];
880
1415
  };
881
1416
  };
882
1417
  webShellQueryCwdOperation: {
@@ -902,9 +1437,106 @@ export interface operations {
902
1437
  };
903
1438
  };
904
1439
  400: components["responses"]["BadRequest"];
1440
+ 401: components["responses"]["Unauthorized"];
1441
+ 403: components["responses"]["Forbidden"];
1442
+ 404: components["responses"]["NotFound"];
1443
+ 409: components["responses"]["Conflict"];
1444
+ 413: components["responses"]["PayloadTooLarge"];
1445
+ };
1446
+ };
1447
+ queryWebShellActions: {
1448
+ parameters: {
1449
+ query?: never;
1450
+ header?: never;
1451
+ path?: never;
1452
+ cookie?: never;
1453
+ };
1454
+ requestBody: {
1455
+ content: {
1456
+ "application/json": components["schemas"]["WebShellActionQueryRequest"];
1457
+ };
1458
+ };
1459
+ responses: {
1460
+ /** @description Same authorized operation semantics as the public API. */
1461
+ 200: {
1462
+ headers: {
1463
+ [name: string]: unknown;
1464
+ };
1465
+ content: {
1466
+ "application/json": components["schemas"]["WebShellActionPage"];
1467
+ };
1468
+ };
1469
+ 400: components["responses"]["BadRequest"];
1470
+ 401: components["responses"]["Unauthorized"];
1471
+ 403: components["responses"]["Forbidden"];
1472
+ /** @description Unknown or unreadable Session (session_not_found), or unknown Action (action_not_found). */
1473
+ 404: components["responses"]["NotFound"];
1474
+ 409: components["responses"]["Conflict"];
1475
+ 413: components["responses"]["PayloadTooLarge"];
1476
+ };
1477
+ };
1478
+ getWebShellAction: {
1479
+ parameters: {
1480
+ query?: never;
1481
+ header?: never;
1482
+ path?: never;
1483
+ cookie?: never;
1484
+ };
1485
+ requestBody: {
1486
+ content: {
1487
+ "application/json": components["schemas"]["WebShellActionGetRequest"];
1488
+ };
1489
+ };
1490
+ responses: {
1491
+ /** @description Same authorized operation semantics as the public API. */
1492
+ 200: {
1493
+ headers: {
1494
+ [name: string]: unknown;
1495
+ };
1496
+ content: {
1497
+ "application/json": components["schemas"]["WebShellAction"];
1498
+ };
1499
+ };
1500
+ 400: components["responses"]["BadRequest"];
1501
+ 401: components["responses"]["Unauthorized"];
905
1502
  403: components["responses"]["Forbidden"];
1503
+ /** @description Unknown or unreadable Session (session_not_found), or unknown Action (action_not_found). */
906
1504
  404: components["responses"]["NotFound"];
907
1505
  409: components["responses"]["Conflict"];
1506
+ 413: components["responses"]["PayloadTooLarge"];
1507
+ };
1508
+ };
1509
+ respondWebShellAction: {
1510
+ parameters: {
1511
+ query?: never;
1512
+ header?: never;
1513
+ path?: never;
1514
+ cookie?: never;
1515
+ };
1516
+ requestBody: {
1517
+ content: {
1518
+ "application/json": components["schemas"]["WebShellActionRespondRequest"];
1519
+ };
1520
+ };
1521
+ responses: {
1522
+ /** @description Same authorized operation semantics as the public API. */
1523
+ 202: {
1524
+ headers: {
1525
+ [name: string]: unknown;
1526
+ };
1527
+ content: {
1528
+ "application/json": components["schemas"]["WebShellCommandOperation"];
1529
+ };
1530
+ };
1531
+ 400: components["responses"]["BadRequest"];
1532
+ 401: components["responses"]["Unauthorized"];
1533
+ /** @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. */
1534
+ 403: components["responses"]["Forbidden"];
1535
+ /** @description Unknown or unreadable Session (session_not_found), or unknown Action (action_not_found). */
1536
+ 404: components["responses"]["NotFound"];
1537
+ /** @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. */
1538
+ 409: components["responses"]["Conflict"];
1539
+ 413: components["responses"]["PayloadTooLarge"];
908
1540
  };
909
1541
  };
910
1542
  closeWebShellSession: {
@@ -930,9 +1562,11 @@ export interface operations {
930
1562
  };
931
1563
  };
932
1564
  400: components["responses"]["BadRequest"];
1565
+ 401: components["responses"]["Unauthorized"];
933
1566
  403: components["responses"]["Forbidden"];
934
1567
  404: components["responses"]["NotFound"];
935
1568
  409: components["responses"]["Conflict"];
1569
+ 413: components["responses"]["PayloadTooLarge"];
936
1570
  };
937
1571
  };
938
1572
  archiveWebShellSession: {
@@ -958,9 +1592,11 @@ export interface operations {
958
1592
  };
959
1593
  };
960
1594
  400: components["responses"]["BadRequest"];
1595
+ 401: components["responses"]["Unauthorized"];
961
1596
  403: components["responses"]["Forbidden"];
962
1597
  404: components["responses"]["NotFound"];
963
1598
  409: components["responses"]["Conflict"];
1599
+ 413: components["responses"]["PayloadTooLarge"];
964
1600
  };
965
1601
  };
966
1602
  deleteWebShellSession: {
@@ -986,9 +1622,11 @@ export interface operations {
986
1622
  };
987
1623
  };
988
1624
  400: components["responses"]["BadRequest"];
1625
+ 401: components["responses"]["Unauthorized"];
989
1626
  403: components["responses"]["Forbidden"];
990
1627
  404: components["responses"]["NotFound"];
991
1628
  409: components["responses"]["Conflict"];
1629
+ 413: components["responses"]["PayloadTooLarge"];
992
1630
  };
993
1631
  };
994
1632
  webShellGetWorkspace: {
@@ -1014,7 +1652,10 @@ export interface operations {
1014
1652
  };
1015
1653
  };
1016
1654
  400: components["responses"]["BadRequest"];
1655
+ 401: components["responses"]["Unauthorized"];
1656
+ 403: components["responses"]["Forbidden"];
1017
1657
  404: components["responses"]["NotFound"];
1658
+ 413: components["responses"]["PayloadTooLarge"];
1018
1659
  };
1019
1660
  };
1020
1661
  queryWebShellTasks: {
@@ -1040,8 +1681,10 @@ export interface operations {
1040
1681
  };
1041
1682
  };
1042
1683
  400: components["responses"]["BadRequest"];
1684
+ 401: components["responses"]["Unauthorized"];
1043
1685
  403: components["responses"]["Forbidden"];
1044
1686
  404: components["responses"]["NotFound"];
1687
+ 413: components["responses"]["PayloadTooLarge"];
1045
1688
  };
1046
1689
  };
1047
1690
  getWebShellTask: {
@@ -1067,8 +1710,260 @@ export interface operations {
1067
1710
  };
1068
1711
  };
1069
1712
  400: components["responses"]["BadRequest"];
1713
+ 401: components["responses"]["Unauthorized"];
1714
+ 403: components["responses"]["Forbidden"];
1715
+ 404: components["responses"]["NotFound"];
1716
+ 413: components["responses"]["PayloadTooLarge"];
1717
+ };
1718
+ };
1719
+ queryWebShellTaskEvents: {
1720
+ parameters: {
1721
+ query?: never;
1722
+ header?: never;
1723
+ path?: never;
1724
+ cookie?: never;
1725
+ };
1726
+ requestBody: {
1727
+ content: {
1728
+ "application/json": components["schemas"]["WebShellTaskEventQueryRequest"];
1729
+ };
1730
+ };
1731
+ responses: {
1732
+ /** @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. */
1733
+ 200: {
1734
+ headers: {
1735
+ [name: string]: unknown;
1736
+ };
1737
+ content: {
1738
+ "application/json": components["schemas"]["WebShellTaskEventPage"];
1739
+ };
1740
+ };
1741
+ 400: components["responses"]["BadRequest"];
1742
+ 401: components["responses"]["Unauthorized"];
1070
1743
  403: components["responses"]["Forbidden"];
1071
1744
  404: components["responses"]["NotFound"];
1745
+ 409: components["responses"]["TaskCursorExpired"];
1746
+ 413: components["responses"]["PayloadTooLarge"];
1747
+ };
1748
+ };
1749
+ getWebShellToolResult: {
1750
+ parameters: {
1751
+ query?: never;
1752
+ header?: never;
1753
+ path?: never;
1754
+ cookie?: never;
1755
+ };
1756
+ requestBody: {
1757
+ content: {
1758
+ "application/json": components["schemas"]["WebShellToolResultRequest"];
1759
+ };
1760
+ };
1761
+ responses: {
1762
+ /** @description Authorized persisted tool result resource. */
1763
+ 200: {
1764
+ headers: {
1765
+ "Cache-Control"?: "private, no-store";
1766
+ [name: string]: unknown;
1767
+ };
1768
+ content: {
1769
+ "application/json": components["schemas"]["ToolResultResponse"];
1770
+ };
1771
+ };
1772
+ /** @description Invalid request. */
1773
+ 400: {
1774
+ headers: {
1775
+ [name: string]: unknown;
1776
+ };
1777
+ content: {
1778
+ "application/json": components["schemas"]["ErrorEnvelope"];
1779
+ };
1780
+ };
1781
+ /** @description Trusted actor required. */
1782
+ 401: {
1783
+ headers: {
1784
+ [name: string]: unknown;
1785
+ };
1786
+ content: {
1787
+ "application/json": components["schemas"]["ErrorEnvelope"];
1788
+ };
1789
+ };
1790
+ 403: components["responses"]["Forbidden"];
1791
+ /** @description Unknown or unreadable resource. */
1792
+ 404: {
1793
+ headers: {
1794
+ [name: string]: unknown;
1795
+ };
1796
+ content: {
1797
+ "application/json": components["schemas"]["ErrorEnvelope"];
1798
+ };
1799
+ };
1800
+ 413: components["responses"]["PayloadTooLarge"];
1801
+ /** @description Resource temporarily unavailable. */
1802
+ 503: {
1803
+ headers: {
1804
+ [name: string]: unknown;
1805
+ };
1806
+ content: {
1807
+ "application/json": components["schemas"]["ErrorEnvelope"];
1808
+ };
1809
+ };
1810
+ };
1811
+ };
1812
+ getWebShellArtifact: {
1813
+ parameters: {
1814
+ query?: never;
1815
+ header?: never;
1816
+ path?: never;
1817
+ cookie?: never;
1818
+ };
1819
+ requestBody: {
1820
+ content: {
1821
+ "application/json": components["schemas"]["WebShellArtifactRequest"];
1822
+ };
1823
+ };
1824
+ responses: {
1825
+ /** @description Authorized persisted artifact metadata. */
1826
+ 200: {
1827
+ headers: {
1828
+ "Cache-Control"?: "private, no-store";
1829
+ [name: string]: unknown;
1830
+ };
1831
+ content: {
1832
+ "application/json": components["schemas"]["ArtifactResponse"];
1833
+ };
1834
+ };
1835
+ /** @description Invalid request. */
1836
+ 400: {
1837
+ headers: {
1838
+ [name: string]: unknown;
1839
+ };
1840
+ content: {
1841
+ "application/json": components["schemas"]["ErrorEnvelope"];
1842
+ };
1843
+ };
1844
+ /** @description Trusted actor required. */
1845
+ 401: {
1846
+ headers: {
1847
+ [name: string]: unknown;
1848
+ };
1849
+ content: {
1850
+ "application/json": components["schemas"]["ErrorEnvelope"];
1851
+ };
1852
+ };
1853
+ 403: components["responses"]["Forbidden"];
1854
+ /** @description Unknown or unreadable resource. */
1855
+ 404: {
1856
+ headers: {
1857
+ [name: string]: unknown;
1858
+ };
1859
+ content: {
1860
+ "application/json": components["schemas"]["ErrorEnvelope"];
1861
+ };
1862
+ };
1863
+ 413: components["responses"]["PayloadTooLarge"];
1864
+ /** @description Resource temporarily unavailable. */
1865
+ 503: {
1866
+ headers: {
1867
+ [name: string]: unknown;
1868
+ };
1869
+ content: {
1870
+ "application/json": components["schemas"]["ErrorEnvelope"];
1871
+ };
1872
+ };
1873
+ };
1874
+ };
1875
+ queryWebShellArtifacts: {
1876
+ parameters: {
1877
+ query?: never;
1878
+ header?: never;
1879
+ path?: never;
1880
+ cookie?: never;
1881
+ };
1882
+ requestBody: {
1883
+ content: {
1884
+ "application/json": components["schemas"]["WebShellArtifactQueryRequest"];
1885
+ };
1886
+ };
1887
+ responses: {
1888
+ /** @description Authorized artifact metadata page. */
1889
+ 200: {
1890
+ headers: {
1891
+ "Cache-Control"?: "private, no-store";
1892
+ [name: string]: unknown;
1893
+ };
1894
+ content: {
1895
+ "application/json": components["schemas"]["WebShellArtifactPage"];
1896
+ };
1897
+ };
1898
+ /** @description Invalid request. */
1899
+ 400: {
1900
+ headers: {
1901
+ [name: string]: unknown;
1902
+ };
1903
+ content: {
1904
+ "application/json": components["schemas"]["ErrorEnvelope"];
1905
+ };
1906
+ };
1907
+ /** @description Trusted actor required. */
1908
+ 401: {
1909
+ headers: {
1910
+ [name: string]: unknown;
1911
+ };
1912
+ content: {
1913
+ "application/json": components["schemas"]["ErrorEnvelope"];
1914
+ };
1915
+ };
1916
+ 403: components["responses"]["Forbidden"];
1917
+ /** @description Unknown or unreadable resource. */
1918
+ 404: {
1919
+ headers: {
1920
+ [name: string]: unknown;
1921
+ };
1922
+ content: {
1923
+ "application/json": components["schemas"]["ErrorEnvelope"];
1924
+ };
1925
+ };
1926
+ 413: components["responses"]["PayloadTooLarge"];
1927
+ /** @description Resource temporarily unavailable. */
1928
+ 503: {
1929
+ headers: {
1930
+ [name: string]: unknown;
1931
+ };
1932
+ content: {
1933
+ "application/json": components["schemas"]["ErrorEnvelope"];
1934
+ };
1935
+ };
1936
+ };
1937
+ };
1938
+ unarchiveWebShellSession: {
1939
+ parameters: {
1940
+ query?: never;
1941
+ header?: never;
1942
+ path?: never;
1943
+ cookie?: never;
1944
+ };
1945
+ requestBody: {
1946
+ content: {
1947
+ "application/json": components["schemas"]["WebShellLifecycleRequest"];
1948
+ };
1949
+ };
1950
+ responses: {
1951
+ /** @description Current WebShell Session; replay does not repeat the mutation. */
1952
+ 200: {
1953
+ headers: {
1954
+ "X-Qwen-Idempotent-Replay": components["headers"]["IdempotentReplay"];
1955
+ [name: string]: unknown;
1956
+ };
1957
+ content: {
1958
+ "application/json": components["schemas"]["WebShellSession"];
1959
+ };
1960
+ };
1961
+ 400: components["responses"]["BadRequest"];
1962
+ 401: components["responses"]["Unauthorized"];
1963
+ 403: components["responses"]["Forbidden"];
1964
+ 404: components["responses"]["NotFound"];
1965
+ 409: components["responses"]["Conflict"];
1966
+ 413: components["responses"]["PayloadTooLarge"];
1072
1967
  };
1073
1968
  };
1074
1969
  }