@qwen-code/web-shell 0.25.3-preview.0 → 0.25.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/README.md +40 -0
  2. package/dist/{PierreFilePreview-DAD1C1oX.js → PierreFilePreview-CDwdShQj.js} +1 -1
  3. package/dist/{SpreadsheetPreview-DShn9rcb.js → SpreadsheetPreview-DrhBxOLb.js} +2 -2
  4. package/dist/{WorkspaceFileBrowser-zWgE76sn.js → WorkspaceFileBrowser-Cj-IkaDU.js} +2 -2
  5. package/dist/{agents-route-CYSCpPDR.js → agents-route-CNZAhyBJ.js} +2 -2
  6. package/dist/daemon-react-sdk.js +1 -1
  7. package/dist/{index-CWxIoEi_.js → index-D0B7Fiw9.js} +50102 -49146
  8. package/dist/index.js +3 -3
  9. package/dist/sw.js +1 -1
  10. package/dist/transcript.js +3718 -3696
  11. package/dist/types/App.d.ts +4 -1
  12. package/dist/types/components/dialogs/AddWorkspaceDialog.d.ts +3 -1
  13. package/dist/types/components/dialogs/ApprovalModeDialog.d.ts +3 -1
  14. package/dist/types/components/managed/RemoteWorkspaceRegistration.d.ts +9 -0
  15. package/dist/types/components/managed/generated/managed-agent-api.d.ts +448 -19
  16. package/dist/types/components/managed/java-managed-agent-client.d.ts +32 -0
  17. package/dist/types/components/managed/managed-agent-provider.d.ts +37 -0
  18. package/dist/types/components/managed/managed-input.d.ts +7 -0
  19. package/dist/types/components/managed/managed-workspace-messages.d.ts +7 -0
  20. package/dist/types/components/managed/managed-workspace-messages.transcript-stub.d.ts +7 -0
  21. package/dist/types/components/managed/use-managed-approval-change.d.ts +2 -1
  22. package/dist/types/components/managed/use-managed-skills.d.ts +12 -0
  23. package/dist/types/components/managed/use-managed-tasks.d.ts +1 -0
  24. package/dist/types/customization.d.ts +2 -0
  25. package/dist/types/hooks/useApprovalModes.d.ts +2 -0
  26. package/dist/types/hooks/useInputHistory.d.ts +0 -4
  27. package/dist/types/index.d.ts +2 -1
  28. package/dist/types/utils/planMode.d.ts +5 -1
  29. package/dist/types/voice/voice-workspace-target.d.ts +2 -0
  30. package/dist/{useDaemonMidTurnInjected-Cf5L3VKm.js → useDaemonMidTurnInjected-BDFSY1Yl.js} +773 -705
  31. package/package.json +1 -1
@@ -421,7 +421,7 @@ export interface paths {
421
421
  };
422
422
  get?: never;
423
423
  put?: never;
424
- /** @description Create an independent empty Workspace under the operator-controlled creation root and grant its authenticated creator OWNER access. Disabled deployments reject creation. The actor-scoped idempotency key freezes the normalized name and storage registration; retry the same request after an uncertain response. Completed replay checks current access and does not restore removed Workspaces or revoked grants. No host path is accepted or returned. */
424
+ /** @description Create an empty Workspace under the operator-controlled root, or supply sourceWorkspaceId and cwdRelative together to select an existing directory under an ACTIVE ROOT Workspace owned by the actor. Existing-directory creation shares its verified storage, config and policy and persists a default working directory. The actor-scoped idempotency key pins the normalized request and source generation. Completed replay checks current access and never restores grants. */
425
425
  post: operations["webShellCreateWorkspace"];
426
426
  delete?: never;
427
427
  options?: never;
@@ -506,7 +506,7 @@ export interface paths {
506
506
  };
507
507
  get?: never;
508
508
  put?: never;
509
- /** @description Change the next-Turn policy of an idle built-in Workspace Session. Requires its recorded owner and current OPERATOR access. Changes are revision-checked and actor/session-scoped idempotent. */
509
+ /** @description Change the next-user-Turn policy of an idle eligible Workspace Session: built-in qwen-code or a stored AgentDefinition on exactly hosted-workspace-files/1 or hosted-workspace-shell/1,/2. Requires its recorded owner, current OPERATOR or OWNER access and Session-specific Harness feature support. Changes are revision-checked and actor/session-scoped idempotent. Definition creation policy and pins remain immutable. */
510
510
  post: operations["changeWebShellSessionApproval"];
511
511
  delete?: never;
512
512
  options?: never;
@@ -514,15 +514,113 @@ export interface paths {
514
514
  patch?: never;
515
515
  trace?: never;
516
516
  };
517
+ "/api/agent/web-shell/v1/runtime-nodes/query": {
518
+ parameters: {
519
+ query?: never;
520
+ header?: never;
521
+ path?: never;
522
+ cookie?: never;
523
+ };
524
+ get?: never;
525
+ put?: never;
526
+ /** @description Lists only administrator-configured SSH nodes authorized for the current tenant and actor. Requires a trusted actor. Registration is disabled by default and answers 200 with supported=false and an empty data array; an enabled deployment may answer supported=true with no authorized nodes. Node credentials, SSH aliases and server paths are not exposed. This read starts no worker. */
527
+ post: operations["webShellQueryRuntimeNodes"];
528
+ delete?: never;
529
+ options?: never;
530
+ head?: never;
531
+ patch?: never;
532
+ trace?: never;
533
+ };
534
+ "/api/agent/web-shell/v1/workspaces/check-directory": {
535
+ parameters: {
536
+ query?: never;
537
+ header?: never;
538
+ path?: never;
539
+ cookie?: never;
540
+ };
541
+ get?: never;
542
+ put?: never;
543
+ /** @description Checks the configured Node.js and pinned qwen-code versions, allowed directory range, existing canonical directory and access permissions over SSH. Requires an enabled deployment and an exact tenant/actor node grant; disabled registration answers 404 ssh_runtime_disabled and an unknown or unauthorized node answers 403 runtime_node_forbidden. This is a preview: registration revalidates the directory and never creates a directory, clones a repository or starts a worker. */
544
+ post: operations["webShellCheckWorkspaceDirectory"];
545
+ delete?: never;
546
+ options?: never;
547
+ head?: never;
548
+ patch?: never;
549
+ trace?: never;
550
+ };
551
+ "/api/agent/web-shell/v1/workspaces/operations/get": {
552
+ parameters: {
553
+ query?: never;
554
+ header?: never;
555
+ path?: never;
556
+ cookie?: never;
557
+ };
558
+ get?: never;
559
+ put?: never;
560
+ /** @description Reads only a Workspace registration owned by the current tenant and actor; an unknown operation or another actor's operation answers 404 operation_not_found. Queries and accepted registration settlement remain available when new registration is disabled. Pending or running operations may resume their original registration attempt. A registration refused before it reserved its directory fails. One that may have reached its node is recovery_blocked and keeps the directory reserved while Java reads the node again, never registering anything: the registration's marker completes it, and a root without the marker, or holding another directory, fails it and releases the directory. Querying never unlocks it or starts a Runtime worker. */
561
+ post: operations["webShellGetWorkspaceOperation"];
562
+ delete?: never;
563
+ options?: never;
564
+ head?: never;
565
+ patch?: never;
566
+ trace?: never;
567
+ };
568
+ "/api/agent/web-shell/v1/workspaces/register": {
569
+ parameters: {
570
+ query?: never;
571
+ header?: never;
572
+ path?: never;
573
+ cookie?: never;
574
+ };
575
+ get?: never;
576
+ put?: never;
577
+ /** @description Admits actor-scoped, idempotent registration of an existing remote directory. The request body carries idempotencyKey; a retry with the same nodeId, path and displayName returns the original operation and its latest durable state, even after new registration is disabled or node admission is revoked. Reusing the key for different content answers 409 idempotency_conflict. Fresh admission requires an enabled deployment and an authorized node (404 ssh_runtime_disabled or 403 runtime_node_forbidden). A completed operation atomically creates the Workspace and creator OWNER grant. 202 does not mean registration is complete; query the operation, then read the Workspace and its canCreateSession hint. This operation creates no Session and starts no Runtime worker. requestId is trace-only and excluded from the request digest. */
578
+ post: operations["webShellRegisterWorkspace"];
579
+ delete?: never;
580
+ options?: never;
581
+ head?: never;
582
+ patch?: never;
583
+ trace?: never;
584
+ };
585
+ "/api/agent/web-shell/v1/workspaces/directories/query": {
586
+ parameters: {
587
+ query?: never;
588
+ header?: never;
589
+ path?: never;
590
+ cookie?: never;
591
+ };
592
+ get?: never;
593
+ put?: never;
594
+ /** @description List bounded immediate real directories on the selected Workspace storage host. Requires an authenticated OWNER of the ACTIVE ROOT Workspace and verified LOCAL storage. Refuses traversal, symlinks and reserved maintenance directories; never uses the ordinary daemon filesystem. Root paths are disclosed only within this authorized scope. */
595
+ post: operations["queryWebShellWorkspaceDirectories"];
596
+ delete?: never;
597
+ options?: never;
598
+ head?: never;
599
+ patch?: never;
600
+ trace?: never;
601
+ };
602
+ "/api/agent/web-shell/v1/session-skills/query": {
603
+ parameters: {
604
+ query?: never;
605
+ header?: never;
606
+ path?: never;
607
+ cookie?: never;
608
+ };
609
+ get?: never;
610
+ put?: never;
611
+ /** @description Read only names and descriptions from the Session's pinned static Skill catalog. Requires a trusted actor and Workspace read access. Never resolves the latest AgentDefinition or discovers host Skills. */
612
+ post: operations["queryWebShellSessionSkills"];
613
+ delete?: never;
614
+ options?: never;
615
+ head?: never;
616
+ patch?: never;
617
+ trace?: never;
618
+ };
517
619
  }
518
620
  export type webhooks = Record<string, never>;
519
621
  export interface components {
520
622
  schemas: {
521
- InputBlock: {
522
- /** @enum {string} */
523
- type: "input_text";
524
- text: string;
525
- };
623
+ InputBlock: components["schemas"]["InputTextBlock"] | components["schemas"]["InputFileBlock"] | components["schemas"]["InputImageBlock"];
526
624
  PublicArtifact: {
527
625
  /** @constant */
528
626
  object: "agent.artifact";
@@ -578,15 +676,17 @@ export interface components {
578
676
  environmentId?: string | null;
579
677
  /** @description The server enforces the bound in UTF-16 code units (Java String.length()), so an astral character counts as two: a title this schema's code-point maxLength accepts can still exceed the server's 256-unit bound and answer 400 invalid_title. */
580
678
  title?: string | null;
581
- /** @description Each block adds to a 4,000,000-character aggregate admission budget per command (per-block 1,000,000-character cap applies). Admission ceiling only: a command whose serialized prompt or durable Session-store record exceeds the Hosted Harness's 64 KiB durable-record limit is accepted and then fails the Turn with hosted_harness_rejected. */
679
+ /** @description Text has a 4,000,000-character aggregate budget and per-block 1,000,000-character cap, counted in code points. Hosted also enforces its 64 KiB durable-record limit and prepared-snapshot ceiling. A complete canonical input containing file/image attachments must fit within 48 KiB and requires input-attachments/1. */
582
680
  input?: components["schemas"]["InputBlock"][];
583
681
  metadata?: components["schemas"]["WebShellMetadata"];
584
682
  workspace?: components["schemas"]["WebShellWorkspaceSelection"];
585
683
  /**
586
- * @description Optional policy for Workspace-bound creation only. Omission preserves the existing default and idempotency digest. Explicit selection is validated against the resolved Agent and tool profile and frozen in the Session; Shell refuses yolo and definitions retain their compiled policy.
684
+ * @description Optional initial execution policy for Workspace creation, validated against the resolved Agent and profile. Omission preserves its default and idempotency digest. Independent of planMode.
587
685
  * @enum {string}
588
686
  */
589
687
  approvalMode?: "default" | "auto-edit" | "yolo";
688
+ /** @description Persisted public Plan overlay, independent of execution permission. Omission on a change preserves the selected state. */
689
+ planMode?: boolean;
590
690
  };
591
691
  WebShellSubmitRequest: {
592
692
  /** @description Trace correlation only. */
@@ -594,9 +694,15 @@ export interface components {
594
694
  idempotencyKey: string;
595
695
  /** Format: uuid */
596
696
  sessionId: string;
597
- /** @description Each block adds to a 4,000,000-character aggregate admission budget per command (per-block 1,000,000-character cap applies). Admission ceiling only: a command whose serialized prompt or durable Session-store record exceeds the Hosted Harness's 64 KiB durable-record limit is accepted and then fails the Turn with hosted_harness_rejected. */
697
+ /** @description Text has a 4,000,000-character aggregate budget and per-block 1,000,000-character cap, counted in code points. Hosted also enforces its 64 KiB durable-record limit and prepared-snapshot ceiling. A complete canonical input containing file/image attachments must fit within 48 KiB and requires input-attachments/1. */
598
698
  input?: components["schemas"]["InputBlock"][];
599
699
  metadata?: components["schemas"]["WebShellMetadata"];
700
+ /**
701
+ * @description D7-3. java_durable asks for the java_durable admission view: the 202 then names the command's operation (operationId, admissionStage, deliveryState), so a lost response resolves through that operation. Only a deployment whose Sessions advertise durableOperations admits it; elsewhere it answers 400 unsupported_feature before anything is read or written. Absent or harness_confirmed keeps today's response. harness_confirmed is the pinned reference design's qwen_confirmed. The request digest leaves this field out, so a retry under the same idempotencyKey replays the same command in either view.
702
+ * @default harness_confirmed
703
+ * @enum {string}
704
+ */
705
+ admissionProfile?: "harness_confirmed" | "java_durable";
600
706
  };
601
707
  WebShellCancelRequest: {
602
708
  /** @description Trace correlation only. */
@@ -605,18 +711,29 @@ export interface components {
605
711
  /** Format: uuid */
606
712
  sessionId: string;
607
713
  turnId: string;
714
+ /**
715
+ * @description D7-3. java_durable asks for the java_durable admission view: the 202 then names the command's operation (operationId, admissionStage, deliveryState), so a lost response resolves through that operation. Only a deployment whose Sessions advertise durableOperations admits it; elsewhere it answers 400 unsupported_feature before anything is read or written. Absent or harness_confirmed keeps today's response. harness_confirmed is the pinned reference design's qwen_confirmed. The request digest leaves this field out, so a retry under the same idempotencyKey replays the same command in either view.
716
+ * @default harness_confirmed
717
+ * @enum {string}
718
+ */
719
+ admissionProfile?: "harness_confirmed" | "java_durable";
608
720
  };
609
721
  /** @description Arbitrary caller metadata, as a JSON object (or null). Accepted and ignored in Phase 1: nothing from it is persisted. On WebShellCreateRequest the Session title travels in that request's own `title` field; WebShellSubmitRequest has no title surface. Any keys are valid. */
610
722
  WebShellMetadata: {
611
723
  [key: string]: unknown;
612
724
  } | null;
613
- /** @description With durable_operations enabled, all three target fields are returned. accepted means Java durable delivery responsibility, not model execution. Missing fields retain the deployed legacy response semantics. */
725
+ /** @description accepted means Java durable delivery responsibility, not model execution. The three operation fields come together, and only on a Turn input or cancel admission that asked for admissionProfile java_durable on a deployment advertising durableOperations (D7-3): operationId names the command's original submit_input or cancel operation, readable through the operation query, and admissionStage and deliveryState are that operation's latest durable values. A fresh input reads java_durable and pending; a cancel of a Turn that already ended reads its settled values. A retry under the same key answers the same operation with replayed true. Missing fields keep the legacy harness_confirmed response semantics, also for Session creation and for a replayed command recorded before v1.58. */
614
726
  WebShellAdmission: {
615
727
  /** Format: uuid */
616
728
  sessionId: string;
617
729
  turnId?: string | null;
618
730
  status: string;
619
731
  replayed: boolean;
732
+ operationId?: string;
733
+ /** @enum {string} */
734
+ admissionStage?: "java_durable" | "harness_confirmed";
735
+ /** @enum {string} */
736
+ deliveryState?: "pending" | "leased" | "confirmed" | "blocked";
620
737
  };
621
738
  WebShellTurn: {
622
739
  turnId: string;
@@ -661,6 +778,10 @@ export interface components {
661
778
  * @enum {string}
662
779
  */
663
780
  initialApprovalMode?: "default" | "auto-edit" | "yolo";
781
+ /** @description Persisted public Plan overlay, independent of execution permission. Omission on a change preserves the selected state. */
782
+ planMode?: boolean;
783
+ /** @description Optional deployment capability; missing means false. */
784
+ planModeSupported?: boolean;
664
785
  };
665
786
  WebShellSessionCapabilities: {
666
787
  /**
@@ -668,6 +789,11 @@ export interface components {
668
789
  * @default false
669
790
  */
670
791
  cwdChange?: boolean;
792
+ /**
793
+ * @description D7-3. Present only on a deployment that enables the java_durable admission profile, where it is true while the Session is readable: a Turn input or cancel may then ask for admissionProfile java_durable. Omitted elsewhere, where asking for it answers 400 unsupported_feature.
794
+ * @default false
795
+ */
796
+ durableOperations?: boolean;
671
797
  /** @default false */
672
798
  actions: boolean;
673
799
  /**
@@ -701,8 +827,10 @@ export interface components {
701
827
  foregroundShell?: boolean;
702
828
  /** @description The caller may request an idle Session model change using the server model catalog. Missing means unsupported; authorization and revision admission still apply. */
703
829
  modelChange?: boolean;
704
- /** @description The caller owns this built-in Workspace Session with OPERATOR access and the Harness supports approval-selection/1. Idle-state admission is checked separately. Missing means false. */
830
+ /** @description The caller owns this eligible Workspace Session with current OPERATOR or OWNER access. Built-in qwen-code requires approval-selection/1; stored AgentDefinitions on exactly hosted-workspace-files/1 or hosted-workspace-shell/1,/2 also require agent-definition-approval-selection/1. Idle-state admission is checked separately. Missing means false. */
705
831
  approvalModeChange?: boolean;
832
+ /** @description Optional deployment capability; missing means false. */
833
+ inputAttachments?: boolean;
706
834
  };
707
835
  WebShellSessionPage: {
708
836
  data: components["schemas"]["WebShellSession"][];
@@ -827,6 +955,10 @@ export interface components {
827
955
  canCreateSession: boolean;
828
956
  /** @enum {string} */
829
957
  state: "active" | "draining" | "removed";
958
+ /** @description Persisted default working directory for new WebShell Sessions; absent means dot. */
959
+ defaultCwdRelative?: string;
960
+ /** @description Current actor owns this active root Workspace; directory discovery rechecks authorization and native storage. */
961
+ canSelectDirectory?: boolean;
830
962
  };
831
963
  WebShellWorkspacePage: {
832
964
  data: components["schemas"]["WebShellWorkspace"][];
@@ -844,6 +976,8 @@ export interface components {
844
976
  workspaceCreation?: boolean;
845
977
  /** @description Supports effective Session policy options and explicit Workspace-bound creation policy. Missing or false means unsupported. */
846
978
  approvalModeSelection?: boolean;
979
+ /** @description Supports browsing and selecting existing directories on authorized Linux storage; absent means unsupported. */
980
+ workspaceDirectorySelection?: boolean;
847
981
  };
848
982
  /** @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. */
849
983
  defaultWorkspace: (components["schemas"]["WebShellWorkspace"] & {
@@ -907,7 +1041,7 @@ export interface components {
907
1041
  allowText: boolean;
908
1042
  options: components["schemas"]["WebShellActionOption"][];
909
1043
  };
910
- /** @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. */
1044
+ /** @description Receipt IDs are opaque authorized product handles, not private journal or storage refs. Input completion means a Harness admitted its Turn, not that the Turn completed; an input whose Turn failed after a submission no Harness answered is recovery_blocked until the Session journal proves whether a Harness admitted it. For submit_input and task cancel, recovery_blocked means acceptance is unknown: the operation is never delivered again and settles only from its own durable evidence. For close and delete it is a published wait that delivery re-drives. Cancel completion means its Turn reached cancelled; a cancel fails with turn_already_settled when its Turn ended otherwise. 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. */
911
1045
  WebShellCommandOperation: {
912
1046
  operationId: string;
913
1047
  /** Format: uuid */
@@ -924,7 +1058,7 @@ export interface components {
924
1058
  deliveryState: "pending" | "leased" | "confirmed" | "blocked";
925
1059
  receiptId?: string;
926
1060
  actionResolution?: components["schemas"]["WebShellActionResolution"];
927
- /** @description Reason a durable response or task cancellation failed. Action response failures come from the original committed Action, or a definitive invalid response. Task cancel failures are task_already_settled (the run ended before the stop request was recorded), task_action_unavailable and task_not_found; a recovery_blocked task cancel reports task_cancel_unconfirmed. Workspace close recovery_blocked reports original resource identity or unsettled execution; the Session remains closing. */
1061
+ /** @description Reason a durable response or task cancellation failed. Action response failures come from the original committed Action, or a definitive invalid response. Task cancel failures are task_already_settled (the run ended before the stop request was recorded), task_action_unavailable and task_not_found; a recovery_blocked task cancel reports task_cancel_unconfirmed. A lifecycle operation that exhausted its retry budget fails with the settle's failure: session_lifecycle_delivery_failed, managed_capability_mismatch or hosted_harness_protocol_error when the Hosted Harness refused to negotiate, a workspace close or lifecycle refusal (a workspace_close_* or workspace_lifecycle_* code, or runtime_admission_closed; a Runtime Broker runtime_broker_recovery_blocked refusal is reported as workspace_close_identity_unverified), or another Runtime Broker refusal code; one whose settle reached the Harness but stayed unsettled past the larger settled budget fails with session_close_completion_unsettled. A lifecycle recovery_blocked operation reports the refusal it waits on, original resource identity or unsettled execution for a Workspace close, session_close_writer_live while a Harness holds the journal writer or while that check itself fails, or hosted_harness_generation_mismatch while this replica's view of the Harness boot is stale; the Session remains closing. A submit_input failure carries its Turn's error code, and a recovery_blocked submit_input reports submit_input_unconfirmed; a cancel fails with turn_already_settled when its Turn completed or failed without being cancelled. */
928
1062
  failureCode?: string;
929
1063
  replayed: boolean;
930
1064
  } & (unknown & unknown & unknown & unknown & unknown);
@@ -1039,7 +1173,7 @@ export interface components {
1039
1173
  workspaceId: string;
1040
1174
  };
1041
1175
  /** @enum {string} */
1042
- TaskKind: "child_agent" | "workflow" | "background_shell" | "monitor" | "automation_run";
1176
+ TaskKind: "child_agent" | "workflow" | "background_shell" | "monitor" | "automation_run" | "channel_delivery";
1043
1177
  /**
1044
1178
  * @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.
1045
1179
  * @enum {string}
@@ -1051,7 +1185,7 @@ export interface components {
1051
1185
  */
1052
1186
  TaskRuntimeState: "unbound" | "provisioning" | "ready" | "draining" | "lost";
1053
1187
  /**
1054
- * @description Actions the task supports now, the same for every caller. cancel: the cancel route accepts a new command for this task (since 1.40 for child_agent and 1.46 for workflow, tasks of those kinds in pending, running, waiting or degraded, in an active Session); whether a caller may use it is an authorization check (403 on the cancel route). send_input: reserved for a later capability route. read_output: the task events route returns output events for this task to any caller that can read it. read_output does not change during the task's life, and a task without it produces no output events: its output goes only to Artifacts, so the events route never filters out events that exist.
1188
+ * @description Actions the task supports now, the same for every caller. cancel: the cancel route accepts a new command for this task (since 1.40 for child_agent, 1.46 for workflow and 1.54 for background_shell and monitor, tasks of those kinds in pending, running, waiting or degraded, and since 1.57 for channel_delivery, a delivery still pending because no adapter has claimed it, each in an active Session, and since 1.65 for automation_run in pending, running, waiting or degraded in an active Session; only that occurrence is cancelled and its schedule is preserved); whether a caller may use it is an authorization check (403 on the cancel route). send_input: reserved for a later capability route. read_output: the task events route returns output events for this task to any caller that can read it. read_output does not change during the task's life, and a task without it produces no output events: its output goes only to Artifacts, so the events route never filters out events that exist.
1055
1189
  * @enum {string}
1056
1190
  */
1057
1191
  TaskActionCapability: "cancel" | "send_input" | "read_output";
@@ -1060,6 +1194,11 @@ export interface components {
1060
1194
  taskId: string;
1061
1195
  /** Format: uuid */
1062
1196
  sessionId: string;
1197
+ /**
1198
+ * Format: uuid
1199
+ * @description The child Session that runs this task: present for a child_agent or workflow task once the run's committed record names it (the child's attach, or a terminal verdict that names a minted child), and absent for every other kind and before then. The child is a Session in the same Workspace, readable by exactly the callers that can read this task, so its Turns, items and events are the task's own output; reading them needs no other grant.
1200
+ */
1201
+ childSessionId?: string;
1063
1202
  kind: components["schemas"]["TaskKind"];
1064
1203
  state: components["schemas"]["TaskState"];
1065
1204
  /**
@@ -1088,7 +1227,7 @@ export interface components {
1088
1227
  /** @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. */
1089
1228
  artifactRefs: string[];
1090
1229
  actionCapabilities: components["schemas"]["TaskActionCapability"][];
1091
- } & (unknown & unknown & unknown & unknown);
1230
+ } & (unknown & unknown & unknown & unknown & unknown);
1092
1231
  WebShellTaskPage: {
1093
1232
  data: components["schemas"]["WebShellTask"][];
1094
1233
  hasMore: boolean;
@@ -1216,7 +1355,7 @@ export interface components {
1216
1355
  };
1217
1356
  /** @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. */
1218
1357
  WebShellActionInputPreview: {
1219
- /** @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. */
1358
+ /** @description Exact UTF-8 prefix of payloadJson ({toolName,input}). Ordinary tools retain the 8192-byte preview. exit_plan_mode includes its complete input within the 64 KiB resource ceiling so a plan can be reviewed after refresh. Truncated ordinary previews may not be valid JSON. */
1220
1359
  text: string;
1221
1360
  /** @description True when text is shorter than the complete UTF-8 input. */
1222
1361
  truncated: boolean;
@@ -1230,6 +1369,8 @@ export interface components {
1230
1369
  /** @description Trimmed display name, without control characters. The server validates the normalized name. */
1231
1370
  displayName: string;
1232
1371
  idempotencyKey: string;
1372
+ sourceWorkspaceId?: string;
1373
+ cwdRelative?: string;
1233
1374
  };
1234
1375
  WebShellSessionOptionsRequest: {
1235
1376
  agentId: string;
@@ -1237,8 +1378,12 @@ export interface components {
1237
1378
  WebShellSessionOptions: {
1238
1379
  /** @enum {string} */
1239
1380
  approvalMode: "default" | "auto-edit" | "yolo";
1240
- /** @description Effective modes for this Agent/profile. Stored definitions offer only their pinned mode; auto and plan are unsupported. */
1381
+ /** @description Execution policies available at creation. Stored definitions retain their initial policy; existing eligible Sessions may select a policy separately. Plan is an independent overlay. */
1241
1382
  availableApprovalModes: ("default" | "auto-edit" | "yolo")[];
1383
+ /** @description Optional deployment capability; missing means false. */
1384
+ planModeSupported?: boolean;
1385
+ /** @description Optional deployment capability; missing means false. */
1386
+ inputAttachments?: boolean;
1242
1387
  };
1243
1388
  /** @description Safe allowlisted observation for a Workspace-bound Session. Unknown counts are omitted, never estimated. */
1244
1389
  WebShellModelContext: {
@@ -1291,6 +1436,10 @@ export interface components {
1291
1436
  approvalRevision: number;
1292
1437
  availableApprovalModes: ("default" | "auto-edit" | "yolo")[];
1293
1438
  supported: boolean;
1439
+ /** @description Persisted public Plan overlay, independent of execution permission. Omission on a change preserves the selected state. */
1440
+ planMode?: boolean;
1441
+ /** @description Optional deployment capability; missing means false. */
1442
+ planModeSupported?: boolean;
1294
1443
  };
1295
1444
  WebShellChangeApprovalRequest: {
1296
1445
  sessionId: string;
@@ -1300,6 +1449,8 @@ export interface components {
1300
1449
  requestId?: string;
1301
1450
  /** @enum {string} */
1302
1451
  approvalMode: "default" | "auto-edit" | "yolo";
1452
+ /** @description Persisted public Plan overlay, independent of execution permission. Omission on a change preserves the selected state. */
1453
+ planMode?: boolean;
1303
1454
  };
1304
1455
  WebShellApprovalChangeResult: {
1305
1456
  sessionId: string;
@@ -1308,6 +1459,94 @@ export interface components {
1308
1459
  /** Format: int64 */
1309
1460
  approvalRevision: number;
1310
1461
  replayed: boolean;
1462
+ /** @description Persisted public Plan overlay, independent of execution permission. Omission on a change preserves the selected state. */
1463
+ planMode?: boolean;
1464
+ };
1465
+ WebShellRuntimeNode: {
1466
+ nodeId: string;
1467
+ displayName: string;
1468
+ };
1469
+ /** @description Disabled registration returns supported=false and no nodes. This capability controls fresh registration only; existing operation queries remain available. */
1470
+ WebShellRuntimeNodePage: {
1471
+ /** @default false */
1472
+ supported: boolean;
1473
+ data: components["schemas"]["WebShellRuntimeNode"][];
1474
+ } & unknown;
1475
+ WebShellWorkspaceDirectoryRequest: {
1476
+ nodeId: string;
1477
+ /** @description Existing absolute directory on the selected node; no directory or repository is created. */
1478
+ path: string;
1479
+ };
1480
+ WebShellWorkspaceDirectory: {
1481
+ nodeId: string;
1482
+ /** @description Canonical absolute path after remote directory validation. */
1483
+ canonicalPath: string;
1484
+ /** @enum {string} */
1485
+ platform: "linux" | "darwin";
1486
+ };
1487
+ WebShellWorkspaceOperationRequest: {
1488
+ operationId: string;
1489
+ };
1490
+ /** @description workspaceId is returned only after completed registration. recovery_blocked means the registration may have reached its node: it keeps the original ownership until Java reads the node and completes it, or fails it and releases the directory. A node that cannot be read, no longer admits the actor or holds another registration's marker leaves it for administrator review, and a new browser draft does not release it. failed releases the directory if the registration reserved it. replayed=true identifies an existing operation returned by a repeated key or a query. */
1491
+ WebShellWorkspaceCreateOperation: {
1492
+ operationId: string;
1493
+ /** @constant */
1494
+ type: "workspace_create";
1495
+ /** @enum {string} */
1496
+ status: "pending" | "running" | "completed" | "failed" | "cancelled" | "recovery_blocked";
1497
+ workspaceId?: string | null;
1498
+ failureCode?: string | null;
1499
+ replayed: boolean;
1500
+ };
1501
+ WebShellWorkspaceRegisterRequest: {
1502
+ nodeId: string;
1503
+ path: string;
1504
+ displayName: string;
1505
+ /** @description Actor-scoped registration key. Reuse this key and the same semantic fields until the operation identity is known. */
1506
+ idempotencyKey: string;
1507
+ /** @description Trace correlation only; excluded from the request digest, so a retry with another requestId still replays. A header-safe value (1 to 128 visible ASCII characters) is echoed as X-Request-Id; any other value is replaced by a server-chosen id. */
1508
+ requestId?: string | null;
1509
+ };
1510
+ WebShellWorkspaceDirectoryPage: {
1511
+ root: string;
1512
+ cwdRelative: string;
1513
+ truncated: boolean;
1514
+ directories: {
1515
+ name: string;
1516
+ cwdRelative: string;
1517
+ }[];
1518
+ };
1519
+ WebShellWorkspaceDirectoryQueryRequest: {
1520
+ workspaceId: string;
1521
+ cwdRelative: string;
1522
+ };
1523
+ InputTextBlock: {
1524
+ /** @enum {string} */
1525
+ type: "input_text" | "text";
1526
+ text: string;
1527
+ };
1528
+ /** @description Inline UTF-8 text file. No host paths, URLs, binary or NUL. Conservative text MIME/extension validation; the complete canonical input containing attachments is limited to 48 KiB. */
1529
+ InputFileBlock: {
1530
+ /** @enum {string} */
1531
+ type: "input_file";
1532
+ name: string;
1533
+ mime_type: string;
1534
+ text: string;
1535
+ };
1536
+ /** @description Canonical base64 image with a matching signature. The complete canonical input containing attachments is limited to 48 KiB. */
1537
+ InputImageBlock: {
1538
+ /** @enum {string} */
1539
+ type: "input_image";
1540
+ /** @enum {string} */
1541
+ mime_type: "image/png" | "image/jpeg" | "image/webp";
1542
+ data: string;
1543
+ };
1544
+ WebShellSkill: {
1545
+ name: string;
1546
+ description: string;
1547
+ };
1548
+ WebShellSessionSkills: {
1549
+ skills: components["schemas"]["WebShellSkill"][];
1311
1550
  };
1312
1551
  };
1313
1552
  responses: {
@@ -2426,4 +2665,194 @@ export interface operations {
2426
2665
  413: components["responses"]["PayloadTooLarge"];
2427
2666
  };
2428
2667
  };
2668
+ webShellQueryRuntimeNodes: {
2669
+ parameters: {
2670
+ query?: never;
2671
+ header?: never;
2672
+ path?: never;
2673
+ cookie?: never;
2674
+ };
2675
+ requestBody?: never;
2676
+ responses: {
2677
+ /** @description SSH registration capability and authorized machine display names. */
2678
+ 200: {
2679
+ headers: {
2680
+ "X-Request-Id": components["headers"]["RequestId"];
2681
+ "Cache-Control"?: "no-store";
2682
+ [name: string]: unknown;
2683
+ };
2684
+ content: {
2685
+ "application/json": components["schemas"]["WebShellRuntimeNodePage"];
2686
+ };
2687
+ };
2688
+ 400: components["responses"]["BadRequest"];
2689
+ 401: components["responses"]["Unauthorized"];
2690
+ 403: components["responses"]["Forbidden"];
2691
+ 413: components["responses"]["PayloadTooLarge"];
2692
+ };
2693
+ };
2694
+ webShellCheckWorkspaceDirectory: {
2695
+ parameters: {
2696
+ query?: never;
2697
+ header?: never;
2698
+ path?: never;
2699
+ cookie?: never;
2700
+ };
2701
+ requestBody: {
2702
+ content: {
2703
+ "application/json": components["schemas"]["WebShellWorkspaceDirectoryRequest"];
2704
+ };
2705
+ };
2706
+ responses: {
2707
+ /** @description Validated canonical directory on the selected Linux or macOS node. */
2708
+ 200: {
2709
+ headers: {
2710
+ "X-Request-Id": components["headers"]["RequestId"];
2711
+ "Cache-Control"?: "no-store";
2712
+ [name: string]: unknown;
2713
+ };
2714
+ content: {
2715
+ "application/json": components["schemas"]["WebShellWorkspaceDirectory"];
2716
+ };
2717
+ };
2718
+ 400: components["responses"]["BadRequest"];
2719
+ 401: components["responses"]["Unauthorized"];
2720
+ 403: components["responses"]["Forbidden"];
2721
+ 404: components["responses"]["NotFound"];
2722
+ 409: components["responses"]["Conflict"];
2723
+ 413: components["responses"]["PayloadTooLarge"];
2724
+ /** @description The SSH bootstrap response is invalid. */
2725
+ 502: {
2726
+ headers: {
2727
+ [name: string]: unknown;
2728
+ };
2729
+ content: {
2730
+ "application/json": components["schemas"]["ErrorEnvelope"];
2731
+ };
2732
+ };
2733
+ 503: components["responses"]["Unavailable"];
2734
+ };
2735
+ };
2736
+ webShellGetWorkspaceOperation: {
2737
+ parameters: {
2738
+ query?: never;
2739
+ header?: never;
2740
+ path?: never;
2741
+ cookie?: never;
2742
+ };
2743
+ requestBody: {
2744
+ content: {
2745
+ "application/json": components["schemas"]["WebShellWorkspaceOperationRequest"];
2746
+ };
2747
+ };
2748
+ responses: {
2749
+ /** @description Latest durable state of the original actor-owned registration. */
2750
+ 200: {
2751
+ headers: {
2752
+ "X-Request-Id": components["headers"]["RequestId"];
2753
+ "Cache-Control"?: "no-store";
2754
+ [name: string]: unknown;
2755
+ };
2756
+ content: {
2757
+ "application/json": components["schemas"]["WebShellWorkspaceCreateOperation"];
2758
+ };
2759
+ };
2760
+ 400: components["responses"]["BadRequest"];
2761
+ 401: components["responses"]["Unauthorized"];
2762
+ 403: components["responses"]["Forbidden"];
2763
+ 404: components["responses"]["NotFound"];
2764
+ 413: components["responses"]["PayloadTooLarge"];
2765
+ };
2766
+ };
2767
+ webShellRegisterWorkspace: {
2768
+ parameters: {
2769
+ query?: never;
2770
+ header?: never;
2771
+ path?: never;
2772
+ cookie?: never;
2773
+ };
2774
+ requestBody: {
2775
+ content: {
2776
+ "application/json": components["schemas"]["WebShellWorkspaceRegisterRequest"];
2777
+ };
2778
+ };
2779
+ responses: {
2780
+ /** @description Durable registration operation; repeated requests retain the original identity. */
2781
+ 202: {
2782
+ headers: {
2783
+ "X-Request-Id": components["headers"]["RequestId"];
2784
+ "Cache-Control"?: "no-store";
2785
+ [name: string]: unknown;
2786
+ };
2787
+ content: {
2788
+ "application/json": components["schemas"]["WebShellWorkspaceCreateOperation"];
2789
+ };
2790
+ };
2791
+ 400: components["responses"]["BadRequest"];
2792
+ 401: components["responses"]["Unauthorized"];
2793
+ 403: components["responses"]["Forbidden"];
2794
+ 404: components["responses"]["NotFound"];
2795
+ 409: components["responses"]["Conflict"];
2796
+ 413: components["responses"]["PayloadTooLarge"];
2797
+ };
2798
+ };
2799
+ queryWebShellWorkspaceDirectories: {
2800
+ parameters: {
2801
+ query?: never;
2802
+ header?: never;
2803
+ path?: never;
2804
+ cookie?: never;
2805
+ };
2806
+ requestBody: {
2807
+ content: {
2808
+ "application/json": components["schemas"]["WebShellWorkspaceDirectoryQueryRequest"];
2809
+ };
2810
+ };
2811
+ responses: {
2812
+ /** @description Authorized existing directories. */
2813
+ 200: {
2814
+ headers: {
2815
+ [name: string]: unknown;
2816
+ };
2817
+ content: {
2818
+ "application/json": components["schemas"]["WebShellWorkspaceDirectoryPage"];
2819
+ };
2820
+ };
2821
+ 400: components["responses"]["BadRequest"];
2822
+ 401: components["responses"]["Unauthorized"];
2823
+ 403: components["responses"]["Forbidden"];
2824
+ 404: components["responses"]["NotFound"];
2825
+ 409: components["responses"]["Conflict"];
2826
+ };
2827
+ };
2828
+ queryWebShellSessionSkills: {
2829
+ parameters: {
2830
+ query?: never;
2831
+ header?: never;
2832
+ path?: never;
2833
+ cookie?: never;
2834
+ };
2835
+ requestBody: {
2836
+ content: {
2837
+ "application/json": components["schemas"]["WebShellSessionRequest"];
2838
+ };
2839
+ };
2840
+ responses: {
2841
+ /** @description Session static Skill metadata. */
2842
+ 200: {
2843
+ headers: {
2844
+ [name: string]: unknown;
2845
+ };
2846
+ content: {
2847
+ "application/json": components["schemas"]["WebShellSessionSkills"];
2848
+ };
2849
+ };
2850
+ 400: components["responses"]["BadRequest"];
2851
+ 401: components["responses"]["Unauthorized"];
2852
+ 403: components["responses"]["Forbidden"];
2853
+ 404: components["responses"]["NotFound"];
2854
+ 409: components["responses"]["Conflict"];
2855
+ 413: components["responses"]["PayloadTooLarge"];
2856
+ };
2857
+ };
2429
2858
  }