sandbox-agent 0.4.0 → 0.4.1

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 (36) hide show
  1. package/dist/chunk-7BNDCDDU.js +18 -0
  2. package/dist/chunk-7BNDCDDU.js.map +1 -0
  3. package/dist/chunk-TVCDKGSM.js +3029 -0
  4. package/dist/chunk-TVCDKGSM.js.map +1 -0
  5. package/dist/index.d.ts +1674 -144
  6. package/dist/index.js +17 -2353
  7. package/dist/index.js.map +1 -1
  8. package/dist/providers/cloudflare.d.ts +1 -1
  9. package/dist/providers/cloudflare.js +1 -0
  10. package/dist/providers/cloudflare.js.map +1 -1
  11. package/dist/providers/computesdk.d.ts +4 -4
  12. package/dist/providers/computesdk.js +9 -3
  13. package/dist/providers/computesdk.js.map +1 -1
  14. package/dist/providers/daytona.d.ts +3 -2
  15. package/dist/providers/daytona.js +4 -1
  16. package/dist/providers/daytona.js.map +1 -1
  17. package/dist/providers/docker.d.ts +1 -1
  18. package/dist/providers/docker.js +2 -1
  19. package/dist/providers/docker.js.map +1 -1
  20. package/dist/providers/e2b.d.ts +10 -3
  21. package/dist/providers/e2b.js +55 -10
  22. package/dist/providers/e2b.js.map +1 -1
  23. package/dist/providers/local.d.ts +1 -1
  24. package/dist/providers/modal.d.ts +9 -6
  25. package/dist/providers/modal.js +20 -14
  26. package/dist/providers/modal.js.map +1 -1
  27. package/dist/providers/sprites.d.ts +22 -0
  28. package/dist/providers/sprites.js +209 -0
  29. package/dist/providers/sprites.js.map +1 -0
  30. package/dist/providers/vercel.d.ts +1 -1
  31. package/dist/providers/vercel.js +2 -1
  32. package/dist/providers/vercel.js.map +1 -1
  33. package/dist/{types-DLlJOfyX.d.ts → types-DdcvY5CI.d.ts} +22 -0
  34. package/package.json +13 -4
  35. package/dist/chunk-TWTMX66J.js +0 -15
  36. package/dist/chunk-TWTMX66J.js.map +0 -1
package/dist/index.d.ts CHANGED
@@ -1,7 +1,9 @@
1
1
  import { NewSessionRequest, SessionConfigOption, SessionModeState, AnyMessage, AcpEnvelopeDirection, RequestPermissionRequest, RequestPermissionResponse, NewSessionResponse, PermissionOptionKind, PromptRequest, PromptResponse, SetSessionModeResponse, SetSessionConfigOptionResponse } from 'acp-http-client';
2
2
  export { AcpRpcError } from 'acp-http-client';
3
- import { S as SandboxProvider } from './types-DLlJOfyX.js';
3
+ import { S as SandboxProvider } from './types-DdcvY5CI.js';
4
4
  export { S as SandboxAgentSpawnLogMode, a as SandboxAgentSpawnOptions } from './spawn-76JDF5d3.js';
5
+ export { SpritesClientOverrides, SpritesCreateOverrides, SpritesProviderOptions } from './providers/sprites.js';
6
+ import '@fly/sprites';
5
7
 
6
8
  interface components {
7
9
  schemas: {
@@ -74,6 +76,255 @@ interface components {
74
76
  AgentListResponse: {
75
77
  agents: components["schemas"]["AgentInfo"][];
76
78
  };
79
+ DesktopActionResponse: {
80
+ ok: boolean;
81
+ };
82
+ DesktopClipboardQuery: {
83
+ selection?: string | null;
84
+ };
85
+ DesktopClipboardResponse: {
86
+ selection: string;
87
+ text: string;
88
+ };
89
+ DesktopClipboardWriteRequest: {
90
+ selection?: string | null;
91
+ text: string;
92
+ };
93
+ DesktopDisplayInfoResponse: {
94
+ display: string;
95
+ resolution: components["schemas"]["DesktopResolution"];
96
+ };
97
+ DesktopErrorInfo: {
98
+ code: string;
99
+ message: string;
100
+ };
101
+ DesktopKeyModifiers: {
102
+ alt?: boolean | null;
103
+ cmd?: boolean | null;
104
+ ctrl?: boolean | null;
105
+ shift?: boolean | null;
106
+ };
107
+ DesktopKeyboardDownRequest: {
108
+ key: string;
109
+ };
110
+ DesktopKeyboardPressRequest: {
111
+ key: string;
112
+ modifiers?: components["schemas"]["DesktopKeyModifiers"] | null;
113
+ };
114
+ DesktopKeyboardTypeRequest: {
115
+ /** Format: int32 */
116
+ delayMs?: number | null;
117
+ text: string;
118
+ };
119
+ DesktopKeyboardUpRequest: {
120
+ key: string;
121
+ };
122
+ DesktopLaunchRequest: {
123
+ app: string;
124
+ args?: string[] | null;
125
+ wait?: boolean | null;
126
+ };
127
+ DesktopLaunchResponse: {
128
+ /** Format: int32 */
129
+ pid?: number | null;
130
+ processId: string;
131
+ windowId?: string | null;
132
+ };
133
+ /** @enum {string} */
134
+ DesktopMouseButton: "left" | "middle" | "right";
135
+ DesktopMouseClickRequest: {
136
+ button?: components["schemas"]["DesktopMouseButton"] | null;
137
+ /** Format: int32 */
138
+ clickCount?: number | null;
139
+ /** Format: int32 */
140
+ x: number;
141
+ /** Format: int32 */
142
+ y: number;
143
+ };
144
+ DesktopMouseDownRequest: {
145
+ button?: components["schemas"]["DesktopMouseButton"] | null;
146
+ /** Format: int32 */
147
+ x?: number | null;
148
+ /** Format: int32 */
149
+ y?: number | null;
150
+ };
151
+ DesktopMouseDragRequest: {
152
+ button?: components["schemas"]["DesktopMouseButton"] | null;
153
+ /** Format: int32 */
154
+ endX: number;
155
+ /** Format: int32 */
156
+ endY: number;
157
+ /** Format: int32 */
158
+ startX: number;
159
+ /** Format: int32 */
160
+ startY: number;
161
+ };
162
+ DesktopMouseMoveRequest: {
163
+ /** Format: int32 */
164
+ x: number;
165
+ /** Format: int32 */
166
+ y: number;
167
+ };
168
+ DesktopMousePositionResponse: {
169
+ /** Format: int32 */
170
+ screen?: number | null;
171
+ window?: string | null;
172
+ /** Format: int32 */
173
+ x: number;
174
+ /** Format: int32 */
175
+ y: number;
176
+ };
177
+ DesktopMouseScrollRequest: {
178
+ /** Format: int32 */
179
+ deltaX?: number | null;
180
+ /** Format: int32 */
181
+ deltaY?: number | null;
182
+ /** Format: int32 */
183
+ x: number;
184
+ /** Format: int32 */
185
+ y: number;
186
+ };
187
+ DesktopMouseUpRequest: {
188
+ button?: components["schemas"]["DesktopMouseButton"] | null;
189
+ /** Format: int32 */
190
+ x?: number | null;
191
+ /** Format: int32 */
192
+ y?: number | null;
193
+ };
194
+ DesktopOpenRequest: {
195
+ target: string;
196
+ };
197
+ DesktopOpenResponse: {
198
+ /** Format: int32 */
199
+ pid?: number | null;
200
+ processId: string;
201
+ };
202
+ DesktopProcessInfo: {
203
+ logPath?: string | null;
204
+ name: string;
205
+ /** Format: int32 */
206
+ pid?: number | null;
207
+ running: boolean;
208
+ };
209
+ DesktopRecordingInfo: {
210
+ /** Format: int64 */
211
+ bytes: number;
212
+ endedAt?: string | null;
213
+ fileName: string;
214
+ id: string;
215
+ processId?: string | null;
216
+ startedAt: string;
217
+ status: components["schemas"]["DesktopRecordingStatus"];
218
+ };
219
+ DesktopRecordingListResponse: {
220
+ recordings: components["schemas"]["DesktopRecordingInfo"][];
221
+ };
222
+ DesktopRecordingStartRequest: {
223
+ /** Format: int32 */
224
+ fps?: number | null;
225
+ };
226
+ /** @enum {string} */
227
+ DesktopRecordingStatus: "recording" | "completed" | "failed";
228
+ DesktopRegionScreenshotQuery: {
229
+ format?: components["schemas"]["DesktopScreenshotFormat"] | null;
230
+ /** Format: int32 */
231
+ height: number;
232
+ /** Format: int32 */
233
+ quality?: number | null;
234
+ /** Format: float */
235
+ scale?: number | null;
236
+ showCursor?: boolean | null;
237
+ /** Format: int32 */
238
+ width: number;
239
+ /** Format: int32 */
240
+ x: number;
241
+ /** Format: int32 */
242
+ y: number;
243
+ };
244
+ DesktopResolution: {
245
+ /** Format: int32 */
246
+ dpi?: number | null;
247
+ /** Format: int32 */
248
+ height: number;
249
+ /** Format: int32 */
250
+ width: number;
251
+ };
252
+ /** @enum {string} */
253
+ DesktopScreenshotFormat: "png" | "jpeg" | "webp";
254
+ DesktopScreenshotQuery: {
255
+ format?: components["schemas"]["DesktopScreenshotFormat"] | null;
256
+ /** Format: int32 */
257
+ quality?: number | null;
258
+ /** Format: float */
259
+ scale?: number | null;
260
+ showCursor?: boolean | null;
261
+ };
262
+ DesktopStartRequest: {
263
+ /** Format: int32 */
264
+ displayNum?: number | null;
265
+ /** Format: int32 */
266
+ dpi?: number | null;
267
+ /** Format: int32 */
268
+ height?: number | null;
269
+ /** Format: int32 */
270
+ recordingFps?: number | null;
271
+ stateDir?: string | null;
272
+ streamAudioCodec?: string | null;
273
+ /** Format: int32 */
274
+ streamFrameRate?: number | null;
275
+ streamVideoCodec?: string | null;
276
+ webrtcPortRange?: string | null;
277
+ /** Format: int32 */
278
+ width?: number | null;
279
+ };
280
+ /** @enum {string} */
281
+ DesktopState: "inactive" | "install_required" | "starting" | "active" | "stopping" | "failed";
282
+ DesktopStatusResponse: {
283
+ display?: string | null;
284
+ installCommand?: string | null;
285
+ lastError?: components["schemas"]["DesktopErrorInfo"] | null;
286
+ missingDependencies?: string[];
287
+ processes?: components["schemas"]["DesktopProcessInfo"][];
288
+ resolution?: components["schemas"]["DesktopResolution"] | null;
289
+ runtimeLogPath?: string | null;
290
+ startedAt?: string | null;
291
+ state: components["schemas"]["DesktopState"];
292
+ /** @description Current visible windows (included when the desktop is active). */
293
+ windows?: components["schemas"]["DesktopWindowInfo"][];
294
+ };
295
+ DesktopStreamStatusResponse: {
296
+ active: boolean;
297
+ processId?: string | null;
298
+ windowId?: string | null;
299
+ };
300
+ DesktopWindowInfo: {
301
+ /** Format: int32 */
302
+ height: number;
303
+ id: string;
304
+ isActive: boolean;
305
+ title: string;
306
+ /** Format: int32 */
307
+ width: number;
308
+ /** Format: int32 */
309
+ x: number;
310
+ /** Format: int32 */
311
+ y: number;
312
+ };
313
+ DesktopWindowListResponse: {
314
+ windows: components["schemas"]["DesktopWindowInfo"][];
315
+ };
316
+ DesktopWindowMoveRequest: {
317
+ /** Format: int32 */
318
+ x: number;
319
+ /** Format: int32 */
320
+ y: number;
321
+ };
322
+ DesktopWindowResizeRequest: {
323
+ /** Format: int32 */
324
+ height: number;
325
+ /** Format: int32 */
326
+ width: number;
327
+ };
77
328
  /** @enum {string} */
78
329
  ErrorType: "invalid_request" | "conflict" | "unsupported_agent" | "agent_not_installed" | "install_failed" | "agent_process_exited" | "token_invalid" | "permission_denied" | "not_acceptable" | "unsupported_media_type" | "not_found" | "session_not_found" | "session_already_exists" | "mode_not_supported" | "stream_error" | "timeout";
79
330
  FsActionResponse: {
@@ -204,6 +455,7 @@ interface components {
204
455
  exitedAtMs?: number | null;
205
456
  id: string;
206
457
  interactive: boolean;
458
+ owner: components["schemas"]["ProcessOwner"];
207
459
  /** Format: int32 */
208
460
  pid?: number | null;
209
461
  status: components["schemas"]["ProcessState"];
@@ -216,6 +468,9 @@ interface components {
216
468
  ProcessInputResponse: {
217
469
  bytesWritten: number;
218
470
  };
471
+ ProcessListQuery: {
472
+ owner?: components["schemas"]["ProcessOwner"] | null;
473
+ };
219
474
  ProcessListResponse: {
220
475
  processes: components["schemas"]["ProcessInfo"][];
221
476
  };
@@ -242,6 +497,8 @@ interface components {
242
497
  };
243
498
  /** @enum {string} */
244
499
  ProcessLogsStream: "stdout" | "stderr" | "combined" | "pty";
500
+ /** @enum {string} */
501
+ ProcessOwner: "user" | "desktop" | "system";
245
502
  ProcessRunRequest: {
246
503
  args?: string[];
247
504
  command: string;
@@ -386,262 +643,1374 @@ interface operations {
386
643
  "application/json": components["schemas"]["ProblemDetails"];
387
644
  };
388
645
  };
389
- /** @description Unknown ACP server */
390
- 404: {
646
+ /** @description Unknown ACP server */
647
+ 404: {
648
+ content: {
649
+ "application/json": components["schemas"]["ProblemDetails"];
650
+ };
651
+ };
652
+ /** @description Client does not accept JSON responses */
653
+ 406: {
654
+ content: {
655
+ "application/json": components["schemas"]["ProblemDetails"];
656
+ };
657
+ };
658
+ /** @description ACP server bound to different agent */
659
+ 409: {
660
+ content: {
661
+ "application/json": components["schemas"]["ProblemDetails"];
662
+ };
663
+ };
664
+ /** @description Unsupported media type */
665
+ 415: {
666
+ content: {
667
+ "application/json": components["schemas"]["ProblemDetails"];
668
+ };
669
+ };
670
+ /** @description ACP agent process response timeout */
671
+ 504: {
672
+ content: {
673
+ "application/json": components["schemas"]["ProblemDetails"];
674
+ };
675
+ };
676
+ };
677
+ };
678
+ delete_v1_acp: {
679
+ parameters: {
680
+ path: {
681
+ /** @description Client-defined ACP server id */
682
+ server_id: string;
683
+ };
684
+ };
685
+ responses: {
686
+ /** @description ACP server closed */
687
+ 204: {
688
+ content: never;
689
+ };
690
+ };
691
+ };
692
+ get_v1_agents: {
693
+ parameters: {
694
+ query?: {
695
+ /** @description When true, include version/path/configOptions (slower) */
696
+ config?: boolean | null;
697
+ /** @description When true, bypass version cache */
698
+ no_cache?: boolean | null;
699
+ };
700
+ };
701
+ responses: {
702
+ /** @description List of v1 agents */
703
+ 200: {
704
+ content: {
705
+ "application/json": components["schemas"]["AgentListResponse"];
706
+ };
707
+ };
708
+ /** @description Authentication required */
709
+ 401: {
710
+ content: {
711
+ "application/json": components["schemas"]["ProblemDetails"];
712
+ };
713
+ };
714
+ };
715
+ };
716
+ get_v1_agent: {
717
+ parameters: {
718
+ query?: {
719
+ /** @description When true, include version/path/configOptions (slower) */
720
+ config?: boolean | null;
721
+ /** @description When true, bypass version cache */
722
+ no_cache?: boolean | null;
723
+ };
724
+ path: {
725
+ /** @description Agent id */
726
+ agent: string;
727
+ };
728
+ };
729
+ responses: {
730
+ /** @description Agent info */
731
+ 200: {
732
+ content: {
733
+ "application/json": components["schemas"]["AgentInfo"];
734
+ };
735
+ };
736
+ /** @description Unknown agent */
737
+ 400: {
738
+ content: {
739
+ "application/json": components["schemas"]["ProblemDetails"];
740
+ };
741
+ };
742
+ /** @description Authentication required */
743
+ 401: {
744
+ content: {
745
+ "application/json": components["schemas"]["ProblemDetails"];
746
+ };
747
+ };
748
+ };
749
+ };
750
+ post_v1_agent_install: {
751
+ parameters: {
752
+ path: {
753
+ /** @description Agent id */
754
+ agent: string;
755
+ };
756
+ };
757
+ requestBody: {
758
+ content: {
759
+ "application/json": components["schemas"]["AgentInstallRequest"];
760
+ };
761
+ };
762
+ responses: {
763
+ /** @description Agent install result */
764
+ 200: {
765
+ content: {
766
+ "application/json": components["schemas"]["AgentInstallResponse"];
767
+ };
768
+ };
769
+ /** @description Invalid request */
770
+ 400: {
771
+ content: {
772
+ "application/json": components["schemas"]["ProblemDetails"];
773
+ };
774
+ };
775
+ /** @description Install failed */
776
+ 500: {
777
+ content: {
778
+ "application/json": components["schemas"]["ProblemDetails"];
779
+ };
780
+ };
781
+ };
782
+ };
783
+ get_v1_config_mcp: {
784
+ parameters: {
785
+ query: {
786
+ /** @description Target directory */
787
+ directory: string;
788
+ /** @description MCP entry name */
789
+ mcpName: string;
790
+ };
791
+ };
792
+ responses: {
793
+ /** @description MCP entry */
794
+ 200: {
795
+ content: {
796
+ "application/json": components["schemas"]["McpServerConfig"];
797
+ };
798
+ };
799
+ /** @description Entry not found */
800
+ 404: {
801
+ content: {
802
+ "application/json": components["schemas"]["ProblemDetails"];
803
+ };
804
+ };
805
+ };
806
+ };
807
+ put_v1_config_mcp: {
808
+ parameters: {
809
+ query: {
810
+ /** @description Target directory */
811
+ directory: string;
812
+ /** @description MCP entry name */
813
+ mcpName: string;
814
+ };
815
+ };
816
+ requestBody: {
817
+ content: {
818
+ "application/json": components["schemas"]["McpServerConfig"];
819
+ };
820
+ };
821
+ responses: {
822
+ /** @description Stored */
823
+ 204: {
824
+ content: never;
825
+ };
826
+ };
827
+ };
828
+ delete_v1_config_mcp: {
829
+ parameters: {
830
+ query: {
831
+ /** @description Target directory */
832
+ directory: string;
833
+ /** @description MCP entry name */
834
+ mcpName: string;
835
+ };
836
+ };
837
+ responses: {
838
+ /** @description Deleted */
839
+ 204: {
840
+ content: never;
841
+ };
842
+ };
843
+ };
844
+ get_v1_config_skills: {
845
+ parameters: {
846
+ query: {
847
+ /** @description Target directory */
848
+ directory: string;
849
+ /** @description Skill entry name */
850
+ skillName: string;
851
+ };
852
+ };
853
+ responses: {
854
+ /** @description Skills entry */
855
+ 200: {
856
+ content: {
857
+ "application/json": components["schemas"]["SkillsConfig"];
858
+ };
859
+ };
860
+ /** @description Entry not found */
861
+ 404: {
862
+ content: {
863
+ "application/json": components["schemas"]["ProblemDetails"];
864
+ };
865
+ };
866
+ };
867
+ };
868
+ put_v1_config_skills: {
869
+ parameters: {
870
+ query: {
871
+ /** @description Target directory */
872
+ directory: string;
873
+ /** @description Skill entry name */
874
+ skillName: string;
875
+ };
876
+ };
877
+ requestBody: {
878
+ content: {
879
+ "application/json": components["schemas"]["SkillsConfig"];
880
+ };
881
+ };
882
+ responses: {
883
+ /** @description Stored */
884
+ 204: {
885
+ content: never;
886
+ };
887
+ };
888
+ };
889
+ delete_v1_config_skills: {
890
+ parameters: {
891
+ query: {
892
+ /** @description Target directory */
893
+ directory: string;
894
+ /** @description Skill entry name */
895
+ skillName: string;
896
+ };
897
+ };
898
+ responses: {
899
+ /** @description Deleted */
900
+ 204: {
901
+ content: never;
902
+ };
903
+ };
904
+ };
905
+ /**
906
+ * Read the desktop clipboard.
907
+ * @description Returns the current text content of the X11 clipboard.
908
+ */
909
+ get_v1_desktop_clipboard: {
910
+ parameters: {
911
+ query?: {
912
+ selection?: string | null;
913
+ };
914
+ };
915
+ responses: {
916
+ /** @description Clipboard contents */
917
+ 200: {
918
+ content: {
919
+ "application/json": components["schemas"]["DesktopClipboardResponse"];
920
+ };
921
+ };
922
+ /** @description Desktop runtime is not ready */
923
+ 409: {
924
+ content: {
925
+ "application/json": components["schemas"]["ProblemDetails"];
926
+ };
927
+ };
928
+ /** @description Clipboard read failed */
929
+ 500: {
930
+ content: {
931
+ "application/json": components["schemas"]["ProblemDetails"];
932
+ };
933
+ };
934
+ };
935
+ };
936
+ /**
937
+ * Write to the desktop clipboard.
938
+ * @description Sets the text content of the X11 clipboard.
939
+ */
940
+ post_v1_desktop_clipboard: {
941
+ requestBody: {
942
+ content: {
943
+ "application/json": components["schemas"]["DesktopClipboardWriteRequest"];
944
+ };
945
+ };
946
+ responses: {
947
+ /** @description Clipboard updated */
948
+ 200: {
949
+ content: {
950
+ "application/json": components["schemas"]["DesktopActionResponse"];
951
+ };
952
+ };
953
+ /** @description Desktop runtime is not ready */
954
+ 409: {
955
+ content: {
956
+ "application/json": components["schemas"]["ProblemDetails"];
957
+ };
958
+ };
959
+ /** @description Clipboard write failed */
960
+ 500: {
961
+ content: {
962
+ "application/json": components["schemas"]["ProblemDetails"];
963
+ };
964
+ };
965
+ };
966
+ };
967
+ /**
968
+ * Get desktop display information.
969
+ * @description Performs a health-gated display query against the managed desktop and
970
+ * returns the current display identifier and resolution.
971
+ */
972
+ get_v1_desktop_display_info: {
973
+ responses: {
974
+ /** @description Desktop display information */
975
+ 200: {
976
+ content: {
977
+ "application/json": components["schemas"]["DesktopDisplayInfoResponse"];
978
+ };
979
+ };
980
+ /** @description Desktop runtime is not ready */
981
+ 409: {
982
+ content: {
983
+ "application/json": components["schemas"]["ProblemDetails"];
984
+ };
985
+ };
986
+ /** @description Desktop runtime health or display query failed */
987
+ 503: {
988
+ content: {
989
+ "application/json": components["schemas"]["ProblemDetails"];
990
+ };
991
+ };
992
+ };
993
+ };
994
+ /**
995
+ * Press and hold a desktop keyboard key.
996
+ * @description Performs a health-gated `xdotool keydown` operation against the managed
997
+ * desktop.
998
+ */
999
+ post_v1_desktop_keyboard_down: {
1000
+ requestBody: {
1001
+ content: {
1002
+ "application/json": components["schemas"]["DesktopKeyboardDownRequest"];
1003
+ };
1004
+ };
1005
+ responses: {
1006
+ /** @description Desktop keyboard action result */
1007
+ 200: {
1008
+ content: {
1009
+ "application/json": components["schemas"]["DesktopActionResponse"];
1010
+ };
1011
+ };
1012
+ /** @description Invalid keyboard down request */
1013
+ 400: {
1014
+ content: {
1015
+ "application/json": components["schemas"]["ProblemDetails"];
1016
+ };
1017
+ };
1018
+ /** @description Desktop runtime is not ready */
1019
+ 409: {
1020
+ content: {
1021
+ "application/json": components["schemas"]["ProblemDetails"];
1022
+ };
1023
+ };
1024
+ /** @description Desktop runtime health or input failed */
1025
+ 502: {
1026
+ content: {
1027
+ "application/json": components["schemas"]["ProblemDetails"];
1028
+ };
1029
+ };
1030
+ };
1031
+ };
1032
+ /**
1033
+ * Press a desktop keyboard shortcut.
1034
+ * @description Performs a health-gated `xdotool key` operation against the managed
1035
+ * desktop.
1036
+ */
1037
+ post_v1_desktop_keyboard_press: {
1038
+ requestBody: {
1039
+ content: {
1040
+ "application/json": components["schemas"]["DesktopKeyboardPressRequest"];
1041
+ };
1042
+ };
1043
+ responses: {
1044
+ /** @description Desktop keyboard action result */
1045
+ 200: {
1046
+ content: {
1047
+ "application/json": components["schemas"]["DesktopActionResponse"];
1048
+ };
1049
+ };
1050
+ /** @description Invalid keyboard press request */
1051
+ 400: {
1052
+ content: {
1053
+ "application/json": components["schemas"]["ProblemDetails"];
1054
+ };
1055
+ };
1056
+ /** @description Desktop runtime is not ready */
1057
+ 409: {
1058
+ content: {
1059
+ "application/json": components["schemas"]["ProblemDetails"];
1060
+ };
1061
+ };
1062
+ /** @description Desktop runtime health or input failed */
1063
+ 502: {
1064
+ content: {
1065
+ "application/json": components["schemas"]["ProblemDetails"];
1066
+ };
1067
+ };
1068
+ };
1069
+ };
1070
+ /**
1071
+ * Type desktop keyboard text.
1072
+ * @description Performs a health-gated `xdotool type` operation against the managed
1073
+ * desktop.
1074
+ */
1075
+ post_v1_desktop_keyboard_type: {
1076
+ requestBody: {
1077
+ content: {
1078
+ "application/json": components["schemas"]["DesktopKeyboardTypeRequest"];
1079
+ };
1080
+ };
1081
+ responses: {
1082
+ /** @description Desktop keyboard action result */
1083
+ 200: {
1084
+ content: {
1085
+ "application/json": components["schemas"]["DesktopActionResponse"];
1086
+ };
1087
+ };
1088
+ /** @description Invalid keyboard type request */
1089
+ 400: {
1090
+ content: {
1091
+ "application/json": components["schemas"]["ProblemDetails"];
1092
+ };
1093
+ };
1094
+ /** @description Desktop runtime is not ready */
1095
+ 409: {
1096
+ content: {
1097
+ "application/json": components["schemas"]["ProblemDetails"];
1098
+ };
1099
+ };
1100
+ /** @description Desktop runtime health or input failed */
1101
+ 502: {
1102
+ content: {
1103
+ "application/json": components["schemas"]["ProblemDetails"];
1104
+ };
1105
+ };
1106
+ };
1107
+ };
1108
+ /**
1109
+ * Release a desktop keyboard key.
1110
+ * @description Performs a health-gated `xdotool keyup` operation against the managed
1111
+ * desktop.
1112
+ */
1113
+ post_v1_desktop_keyboard_up: {
1114
+ requestBody: {
1115
+ content: {
1116
+ "application/json": components["schemas"]["DesktopKeyboardUpRequest"];
1117
+ };
1118
+ };
1119
+ responses: {
1120
+ /** @description Desktop keyboard action result */
1121
+ 200: {
1122
+ content: {
1123
+ "application/json": components["schemas"]["DesktopActionResponse"];
1124
+ };
1125
+ };
1126
+ /** @description Invalid keyboard up request */
1127
+ 400: {
1128
+ content: {
1129
+ "application/json": components["schemas"]["ProblemDetails"];
1130
+ };
1131
+ };
1132
+ /** @description Desktop runtime is not ready */
1133
+ 409: {
1134
+ content: {
1135
+ "application/json": components["schemas"]["ProblemDetails"];
1136
+ };
1137
+ };
1138
+ /** @description Desktop runtime health or input failed */
1139
+ 502: {
1140
+ content: {
1141
+ "application/json": components["schemas"]["ProblemDetails"];
1142
+ };
1143
+ };
1144
+ };
1145
+ };
1146
+ /**
1147
+ * Launch a desktop application.
1148
+ * @description Launches an application by name on the managed desktop, optionally waiting
1149
+ * for its window to appear.
1150
+ */
1151
+ post_v1_desktop_launch: {
1152
+ requestBody: {
1153
+ content: {
1154
+ "application/json": components["schemas"]["DesktopLaunchRequest"];
1155
+ };
1156
+ };
1157
+ responses: {
1158
+ /** @description Application launched */
1159
+ 200: {
1160
+ content: {
1161
+ "application/json": components["schemas"]["DesktopLaunchResponse"];
1162
+ };
1163
+ };
1164
+ /** @description Application not found */
1165
+ 404: {
1166
+ content: {
1167
+ "application/json": components["schemas"]["ProblemDetails"];
1168
+ };
1169
+ };
1170
+ /** @description Desktop runtime is not ready */
1171
+ 409: {
1172
+ content: {
1173
+ "application/json": components["schemas"]["ProblemDetails"];
1174
+ };
1175
+ };
1176
+ };
1177
+ };
1178
+ /**
1179
+ * Click on the desktop.
1180
+ * @description Performs a health-gated pointer move and click against the managed desktop
1181
+ * and returns the resulting mouse position.
1182
+ */
1183
+ post_v1_desktop_mouse_click: {
1184
+ requestBody: {
1185
+ content: {
1186
+ "application/json": components["schemas"]["DesktopMouseClickRequest"];
1187
+ };
1188
+ };
1189
+ responses: {
1190
+ /** @description Desktop mouse position after click */
1191
+ 200: {
1192
+ content: {
1193
+ "application/json": components["schemas"]["DesktopMousePositionResponse"];
1194
+ };
1195
+ };
1196
+ /** @description Invalid mouse click request */
1197
+ 400: {
1198
+ content: {
1199
+ "application/json": components["schemas"]["ProblemDetails"];
1200
+ };
1201
+ };
1202
+ /** @description Desktop runtime is not ready */
1203
+ 409: {
1204
+ content: {
1205
+ "application/json": components["schemas"]["ProblemDetails"];
1206
+ };
1207
+ };
1208
+ /** @description Desktop runtime health or input failed */
1209
+ 502: {
1210
+ content: {
1211
+ "application/json": components["schemas"]["ProblemDetails"];
1212
+ };
1213
+ };
1214
+ };
1215
+ };
1216
+ /**
1217
+ * Press and hold a desktop mouse button.
1218
+ * @description Performs a health-gated optional pointer move followed by `xdotool mousedown`
1219
+ * and returns the resulting mouse position.
1220
+ */
1221
+ post_v1_desktop_mouse_down: {
1222
+ requestBody: {
1223
+ content: {
1224
+ "application/json": components["schemas"]["DesktopMouseDownRequest"];
1225
+ };
1226
+ };
1227
+ responses: {
1228
+ /** @description Desktop mouse position after button press */
1229
+ 200: {
1230
+ content: {
1231
+ "application/json": components["schemas"]["DesktopMousePositionResponse"];
1232
+ };
1233
+ };
1234
+ /** @description Invalid mouse down request */
1235
+ 400: {
1236
+ content: {
1237
+ "application/json": components["schemas"]["ProblemDetails"];
1238
+ };
1239
+ };
1240
+ /** @description Desktop runtime is not ready */
1241
+ 409: {
1242
+ content: {
1243
+ "application/json": components["schemas"]["ProblemDetails"];
1244
+ };
1245
+ };
1246
+ /** @description Desktop runtime health or input failed */
1247
+ 502: {
1248
+ content: {
1249
+ "application/json": components["schemas"]["ProblemDetails"];
1250
+ };
1251
+ };
1252
+ };
1253
+ };
1254
+ /**
1255
+ * Drag the desktop mouse.
1256
+ * @description Performs a health-gated drag gesture against the managed desktop and
1257
+ * returns the resulting mouse position.
1258
+ */
1259
+ post_v1_desktop_mouse_drag: {
1260
+ requestBody: {
1261
+ content: {
1262
+ "application/json": components["schemas"]["DesktopMouseDragRequest"];
1263
+ };
1264
+ };
1265
+ responses: {
1266
+ /** @description Desktop mouse position after drag */
1267
+ 200: {
1268
+ content: {
1269
+ "application/json": components["schemas"]["DesktopMousePositionResponse"];
1270
+ };
1271
+ };
1272
+ /** @description Invalid mouse drag request */
1273
+ 400: {
1274
+ content: {
1275
+ "application/json": components["schemas"]["ProblemDetails"];
1276
+ };
1277
+ };
1278
+ /** @description Desktop runtime is not ready */
1279
+ 409: {
1280
+ content: {
1281
+ "application/json": components["schemas"]["ProblemDetails"];
1282
+ };
1283
+ };
1284
+ /** @description Desktop runtime health or input failed */
1285
+ 502: {
1286
+ content: {
1287
+ "application/json": components["schemas"]["ProblemDetails"];
1288
+ };
1289
+ };
1290
+ };
1291
+ };
1292
+ /**
1293
+ * Move the desktop mouse.
1294
+ * @description Performs a health-gated absolute pointer move on the managed desktop and
1295
+ * returns the resulting mouse position.
1296
+ */
1297
+ post_v1_desktop_mouse_move: {
1298
+ requestBody: {
1299
+ content: {
1300
+ "application/json": components["schemas"]["DesktopMouseMoveRequest"];
1301
+ };
1302
+ };
1303
+ responses: {
1304
+ /** @description Desktop mouse position after move */
1305
+ 200: {
1306
+ content: {
1307
+ "application/json": components["schemas"]["DesktopMousePositionResponse"];
1308
+ };
1309
+ };
1310
+ /** @description Invalid mouse move request */
1311
+ 400: {
1312
+ content: {
1313
+ "application/json": components["schemas"]["ProblemDetails"];
1314
+ };
1315
+ };
1316
+ /** @description Desktop runtime is not ready */
1317
+ 409: {
1318
+ content: {
1319
+ "application/json": components["schemas"]["ProblemDetails"];
1320
+ };
1321
+ };
1322
+ /** @description Desktop runtime health or input failed */
1323
+ 502: {
1324
+ content: {
1325
+ "application/json": components["schemas"]["ProblemDetails"];
1326
+ };
1327
+ };
1328
+ };
1329
+ };
1330
+ /**
1331
+ * Get the current desktop mouse position.
1332
+ * @description Performs a health-gated mouse position query against the managed desktop.
1333
+ */
1334
+ get_v1_desktop_mouse_position: {
1335
+ responses: {
1336
+ /** @description Desktop mouse position */
1337
+ 200: {
1338
+ content: {
1339
+ "application/json": components["schemas"]["DesktopMousePositionResponse"];
1340
+ };
1341
+ };
1342
+ /** @description Desktop runtime is not ready */
1343
+ 409: {
1344
+ content: {
1345
+ "application/json": components["schemas"]["ProblemDetails"];
1346
+ };
1347
+ };
1348
+ /** @description Desktop runtime health or input check failed */
1349
+ 502: {
1350
+ content: {
1351
+ "application/json": components["schemas"]["ProblemDetails"];
1352
+ };
1353
+ };
1354
+ };
1355
+ };
1356
+ /**
1357
+ * Scroll the desktop mouse wheel.
1358
+ * @description Performs a health-gated scroll gesture at the requested coordinates and
1359
+ * returns the resulting mouse position.
1360
+ */
1361
+ post_v1_desktop_mouse_scroll: {
1362
+ requestBody: {
1363
+ content: {
1364
+ "application/json": components["schemas"]["DesktopMouseScrollRequest"];
1365
+ };
1366
+ };
1367
+ responses: {
1368
+ /** @description Desktop mouse position after scroll */
1369
+ 200: {
1370
+ content: {
1371
+ "application/json": components["schemas"]["DesktopMousePositionResponse"];
1372
+ };
1373
+ };
1374
+ /** @description Invalid mouse scroll request */
1375
+ 400: {
1376
+ content: {
1377
+ "application/json": components["schemas"]["ProblemDetails"];
1378
+ };
1379
+ };
1380
+ /** @description Desktop runtime is not ready */
1381
+ 409: {
1382
+ content: {
1383
+ "application/json": components["schemas"]["ProblemDetails"];
1384
+ };
1385
+ };
1386
+ /** @description Desktop runtime health or input failed */
1387
+ 502: {
1388
+ content: {
1389
+ "application/json": components["schemas"]["ProblemDetails"];
1390
+ };
1391
+ };
1392
+ };
1393
+ };
1394
+ /**
1395
+ * Release a desktop mouse button.
1396
+ * @description Performs a health-gated optional pointer move followed by `xdotool mouseup`
1397
+ * and returns the resulting mouse position.
1398
+ */
1399
+ post_v1_desktop_mouse_up: {
1400
+ requestBody: {
1401
+ content: {
1402
+ "application/json": components["schemas"]["DesktopMouseUpRequest"];
1403
+ };
1404
+ };
1405
+ responses: {
1406
+ /** @description Desktop mouse position after button release */
1407
+ 200: {
1408
+ content: {
1409
+ "application/json": components["schemas"]["DesktopMousePositionResponse"];
1410
+ };
1411
+ };
1412
+ /** @description Invalid mouse up request */
1413
+ 400: {
1414
+ content: {
1415
+ "application/json": components["schemas"]["ProblemDetails"];
1416
+ };
1417
+ };
1418
+ /** @description Desktop runtime is not ready */
1419
+ 409: {
1420
+ content: {
1421
+ "application/json": components["schemas"]["ProblemDetails"];
1422
+ };
1423
+ };
1424
+ /** @description Desktop runtime health or input failed */
1425
+ 502: {
1426
+ content: {
1427
+ "application/json": components["schemas"]["ProblemDetails"];
1428
+ };
1429
+ };
1430
+ };
1431
+ };
1432
+ /**
1433
+ * Open a file or URL with the default handler.
1434
+ * @description Opens a file path or URL using xdg-open on the managed desktop.
1435
+ */
1436
+ post_v1_desktop_open: {
1437
+ requestBody: {
1438
+ content: {
1439
+ "application/json": components["schemas"]["DesktopOpenRequest"];
1440
+ };
1441
+ };
1442
+ responses: {
1443
+ /** @description Target opened */
1444
+ 200: {
1445
+ content: {
1446
+ "application/json": components["schemas"]["DesktopOpenResponse"];
1447
+ };
1448
+ };
1449
+ /** @description Desktop runtime is not ready */
1450
+ 409: {
1451
+ content: {
1452
+ "application/json": components["schemas"]["ProblemDetails"];
1453
+ };
1454
+ };
1455
+ };
1456
+ };
1457
+ /**
1458
+ * Start desktop recording.
1459
+ * @description Starts an ffmpeg x11grab recording against the managed desktop and returns
1460
+ * the created recording metadata.
1461
+ */
1462
+ post_v1_desktop_recording_start: {
1463
+ requestBody: {
1464
+ content: {
1465
+ "application/json": components["schemas"]["DesktopRecordingStartRequest"];
1466
+ };
1467
+ };
1468
+ responses: {
1469
+ /** @description Desktop recording started */
1470
+ 200: {
1471
+ content: {
1472
+ "application/json": components["schemas"]["DesktopRecordingInfo"];
1473
+ };
1474
+ };
1475
+ /** @description Desktop runtime is not ready or a recording is already active */
1476
+ 409: {
1477
+ content: {
1478
+ "application/json": components["schemas"]["ProblemDetails"];
1479
+ };
1480
+ };
1481
+ /** @description Desktop recording failed */
1482
+ 502: {
1483
+ content: {
1484
+ "application/json": components["schemas"]["ProblemDetails"];
1485
+ };
1486
+ };
1487
+ };
1488
+ };
1489
+ /**
1490
+ * Stop desktop recording.
1491
+ * @description Stops the active desktop recording and returns the finalized recording
1492
+ * metadata.
1493
+ */
1494
+ post_v1_desktop_recording_stop: {
1495
+ responses: {
1496
+ /** @description Desktop recording stopped */
1497
+ 200: {
1498
+ content: {
1499
+ "application/json": components["schemas"]["DesktopRecordingInfo"];
1500
+ };
1501
+ };
1502
+ /** @description No active desktop recording */
1503
+ 409: {
1504
+ content: {
1505
+ "application/json": components["schemas"]["ProblemDetails"];
1506
+ };
1507
+ };
1508
+ /** @description Desktop recording stop failed */
1509
+ 502: {
1510
+ content: {
1511
+ "application/json": components["schemas"]["ProblemDetails"];
1512
+ };
1513
+ };
1514
+ };
1515
+ };
1516
+ /**
1517
+ * List desktop recordings.
1518
+ * @description Returns the current desktop recording catalog.
1519
+ */
1520
+ get_v1_desktop_recordings: {
1521
+ responses: {
1522
+ /** @description Desktop recordings */
1523
+ 200: {
1524
+ content: {
1525
+ "application/json": components["schemas"]["DesktopRecordingListResponse"];
1526
+ };
1527
+ };
1528
+ /** @description Desktop recordings query failed */
1529
+ 502: {
1530
+ content: {
1531
+ "application/json": components["schemas"]["ProblemDetails"];
1532
+ };
1533
+ };
1534
+ };
1535
+ };
1536
+ /**
1537
+ * Get desktop recording metadata.
1538
+ * @description Returns metadata for a single desktop recording.
1539
+ */
1540
+ get_v1_desktop_recording: {
1541
+ parameters: {
1542
+ path: {
1543
+ /** @description Desktop recording ID */
1544
+ id: string;
1545
+ };
1546
+ };
1547
+ responses: {
1548
+ /** @description Desktop recording metadata */
1549
+ 200: {
1550
+ content: {
1551
+ "application/json": components["schemas"]["DesktopRecordingInfo"];
1552
+ };
1553
+ };
1554
+ /** @description Unknown desktop recording */
1555
+ 404: {
1556
+ content: {
1557
+ "application/json": components["schemas"]["ProblemDetails"];
1558
+ };
1559
+ };
1560
+ };
1561
+ };
1562
+ /**
1563
+ * Delete a desktop recording.
1564
+ * @description Removes a completed desktop recording and its file from disk.
1565
+ */
1566
+ delete_v1_desktop_recording: {
1567
+ parameters: {
1568
+ path: {
1569
+ /** @description Desktop recording ID */
1570
+ id: string;
1571
+ };
1572
+ };
1573
+ responses: {
1574
+ /** @description Desktop recording deleted */
1575
+ 204: {
1576
+ content: never;
1577
+ };
1578
+ /** @description Unknown desktop recording */
1579
+ 404: {
1580
+ content: {
1581
+ "application/json": components["schemas"]["ProblemDetails"];
1582
+ };
1583
+ };
1584
+ /** @description Desktop recording is still active */
1585
+ 409: {
1586
+ content: {
1587
+ "application/json": components["schemas"]["ProblemDetails"];
1588
+ };
1589
+ };
1590
+ };
1591
+ };
1592
+ /**
1593
+ * Download a desktop recording.
1594
+ * @description Serves the recorded MP4 bytes for a completed desktop recording.
1595
+ */
1596
+ get_v1_desktop_recording_download: {
1597
+ parameters: {
1598
+ path: {
1599
+ /** @description Desktop recording ID */
1600
+ id: string;
1601
+ };
1602
+ };
1603
+ responses: {
1604
+ /** @description Desktop recording as MP4 bytes */
1605
+ 200: {
1606
+ content: never;
1607
+ };
1608
+ /** @description Unknown desktop recording */
1609
+ 404: {
1610
+ content: {
1611
+ "application/json": components["schemas"]["ProblemDetails"];
1612
+ };
1613
+ };
1614
+ };
1615
+ };
1616
+ /**
1617
+ * Capture a full desktop screenshot.
1618
+ * @description Performs a health-gated full-frame screenshot of the managed desktop and
1619
+ * returns the requested image bytes.
1620
+ */
1621
+ get_v1_desktop_screenshot: {
1622
+ parameters: {
1623
+ query?: {
1624
+ format?: components["schemas"]["DesktopScreenshotFormat"] | null;
1625
+ quality?: number | null;
1626
+ scale?: number | null;
1627
+ showCursor?: boolean | null;
1628
+ };
1629
+ };
1630
+ responses: {
1631
+ /** @description Desktop screenshot as image bytes */
1632
+ 200: {
1633
+ content: never;
1634
+ };
1635
+ /** @description Invalid screenshot query */
1636
+ 400: {
1637
+ content: {
1638
+ "application/json": components["schemas"]["ProblemDetails"];
1639
+ };
1640
+ };
1641
+ /** @description Desktop runtime is not ready */
1642
+ 409: {
1643
+ content: {
1644
+ "application/json": components["schemas"]["ProblemDetails"];
1645
+ };
1646
+ };
1647
+ /** @description Desktop runtime health or screenshot capture failed */
1648
+ 502: {
1649
+ content: {
1650
+ "application/json": components["schemas"]["ProblemDetails"];
1651
+ };
1652
+ };
1653
+ };
1654
+ };
1655
+ /**
1656
+ * Capture a desktop screenshot region.
1657
+ * @description Performs a health-gated screenshot crop against the managed desktop and
1658
+ * returns the requested region image bytes.
1659
+ */
1660
+ get_v1_desktop_screenshot_region: {
1661
+ parameters: {
1662
+ query: {
1663
+ x: number;
1664
+ y: number;
1665
+ width: number;
1666
+ height: number;
1667
+ format?: components["schemas"]["DesktopScreenshotFormat"] | null;
1668
+ quality?: number | null;
1669
+ scale?: number | null;
1670
+ showCursor?: boolean | null;
1671
+ };
1672
+ };
1673
+ responses: {
1674
+ /** @description Desktop screenshot region as image bytes */
1675
+ 200: {
1676
+ content: never;
1677
+ };
1678
+ /** @description Invalid screenshot region */
1679
+ 400: {
1680
+ content: {
1681
+ "application/json": components["schemas"]["ProblemDetails"];
1682
+ };
1683
+ };
1684
+ /** @description Desktop runtime is not ready */
1685
+ 409: {
1686
+ content: {
1687
+ "application/json": components["schemas"]["ProblemDetails"];
1688
+ };
1689
+ };
1690
+ /** @description Desktop runtime health or screenshot capture failed */
1691
+ 502: {
1692
+ content: {
1693
+ "application/json": components["schemas"]["ProblemDetails"];
1694
+ };
1695
+ };
1696
+ };
1697
+ };
1698
+ /**
1699
+ * Start the private desktop runtime.
1700
+ * @description Lazily launches the managed Xvfb/openbox stack, validates display health,
1701
+ * and returns the resulting desktop status snapshot.
1702
+ */
1703
+ post_v1_desktop_start: {
1704
+ requestBody: {
1705
+ content: {
1706
+ "application/json": components["schemas"]["DesktopStartRequest"];
1707
+ };
1708
+ };
1709
+ responses: {
1710
+ /** @description Desktop runtime status after start */
1711
+ 200: {
1712
+ content: {
1713
+ "application/json": components["schemas"]["DesktopStatusResponse"];
1714
+ };
1715
+ };
1716
+ /** @description Invalid desktop start request */
1717
+ 400: {
1718
+ content: {
1719
+ "application/json": components["schemas"]["ProblemDetails"];
1720
+ };
1721
+ };
1722
+ /** @description Desktop runtime is already transitioning */
1723
+ 409: {
1724
+ content: {
1725
+ "application/json": components["schemas"]["ProblemDetails"];
1726
+ };
1727
+ };
1728
+ /** @description Desktop API unsupported on this platform */
1729
+ 501: {
391
1730
  content: {
392
1731
  "application/json": components["schemas"]["ProblemDetails"];
393
1732
  };
394
1733
  };
395
- /** @description Client does not accept JSON responses */
396
- 406: {
1734
+ /** @description Desktop runtime could not be started */
1735
+ 503: {
397
1736
  content: {
398
1737
  "application/json": components["schemas"]["ProblemDetails"];
399
1738
  };
400
1739
  };
401
- /** @description ACP server bound to different agent */
402
- 409: {
1740
+ };
1741
+ };
1742
+ /**
1743
+ * Get desktop runtime status.
1744
+ * @description Returns the current desktop runtime state, dependency status, active
1745
+ * display metadata, and supervised process information.
1746
+ */
1747
+ get_v1_desktop_status: {
1748
+ responses: {
1749
+ /** @description Desktop runtime status */
1750
+ 200: {
403
1751
  content: {
404
- "application/json": components["schemas"]["ProblemDetails"];
1752
+ "application/json": components["schemas"]["DesktopStatusResponse"];
405
1753
  };
406
1754
  };
407
- /** @description Unsupported media type */
408
- 415: {
1755
+ /** @description Authentication required */
1756
+ 401: {
409
1757
  content: {
410
1758
  "application/json": components["schemas"]["ProblemDetails"];
411
1759
  };
412
1760
  };
413
- /** @description ACP agent process response timeout */
414
- 504: {
1761
+ };
1762
+ };
1763
+ /**
1764
+ * Stop the private desktop runtime.
1765
+ * @description Terminates the managed openbox/Xvfb/dbus processes owned by the desktop
1766
+ * runtime and returns the resulting status snapshot.
1767
+ */
1768
+ post_v1_desktop_stop: {
1769
+ responses: {
1770
+ /** @description Desktop runtime status after stop */
1771
+ 200: {
1772
+ content: {
1773
+ "application/json": components["schemas"]["DesktopStatusResponse"];
1774
+ };
1775
+ };
1776
+ /** @description Desktop runtime is already transitioning */
1777
+ 409: {
415
1778
  content: {
416
1779
  "application/json": components["schemas"]["ProblemDetails"];
417
1780
  };
418
1781
  };
419
1782
  };
420
1783
  };
421
- delete_v1_acp: {
1784
+ /**
1785
+ * Open a desktop WebRTC signaling session.
1786
+ * @description Upgrades the connection to a WebSocket used for WebRTC signaling between
1787
+ * the browser client and the desktop streaming process. Also accepts mouse
1788
+ * and keyboard input frames as a fallback transport.
1789
+ */
1790
+ get_v1_desktop_stream_ws: {
422
1791
  parameters: {
423
- path: {
424
- /** @description Client-defined ACP server id */
425
- server_id: string;
1792
+ query?: {
1793
+ /** @description Bearer token alternative for WS auth */
1794
+ access_token?: string | null;
426
1795
  };
427
1796
  };
428
1797
  responses: {
429
- /** @description ACP server closed */
430
- 204: {
1798
+ /** @description WebSocket upgraded */
1799
+ 101: {
431
1800
  content: never;
432
1801
  };
433
- };
434
- };
435
- get_v1_agents: {
436
- parameters: {
437
- query?: {
438
- /** @description When true, include version/path/configOptions (slower) */
439
- config?: boolean | null;
440
- /** @description When true, bypass version cache */
441
- no_cache?: boolean | null;
1802
+ /** @description Desktop runtime or streaming session is not ready */
1803
+ 409: {
1804
+ content: {
1805
+ "application/json": components["schemas"]["ProblemDetails"];
1806
+ };
1807
+ };
1808
+ /** @description Desktop stream failed */
1809
+ 502: {
1810
+ content: {
1811
+ "application/json": components["schemas"]["ProblemDetails"];
1812
+ };
442
1813
  };
443
1814
  };
1815
+ };
1816
+ /**
1817
+ * Start desktop streaming.
1818
+ * @description Enables desktop websocket streaming for the managed desktop.
1819
+ */
1820
+ post_v1_desktop_stream_start: {
444
1821
  responses: {
445
- /** @description List of v1 agents */
1822
+ /** @description Desktop streaming started */
446
1823
  200: {
447
1824
  content: {
448
- "application/json": components["schemas"]["AgentListResponse"];
1825
+ "application/json": components["schemas"]["DesktopStreamStatusResponse"];
449
1826
  };
450
1827
  };
451
- /** @description Authentication required */
452
- 401: {
1828
+ };
1829
+ };
1830
+ /**
1831
+ * Get desktop stream status.
1832
+ * @description Returns the current state of the desktop WebRTC streaming session.
1833
+ */
1834
+ get_v1_desktop_stream_status: {
1835
+ responses: {
1836
+ /** @description Desktop stream status */
1837
+ 200: {
453
1838
  content: {
454
- "application/json": components["schemas"]["ProblemDetails"];
1839
+ "application/json": components["schemas"]["DesktopStreamStatusResponse"];
455
1840
  };
456
1841
  };
457
1842
  };
458
1843
  };
459
- get_v1_agent: {
460
- parameters: {
461
- query?: {
462
- /** @description When true, include version/path/configOptions (slower) */
463
- config?: boolean | null;
464
- /** @description When true, bypass version cache */
465
- no_cache?: boolean | null;
466
- };
467
- path: {
468
- /** @description Agent id */
469
- agent: string;
1844
+ /**
1845
+ * Stop desktop streaming.
1846
+ * @description Disables desktop websocket streaming for the managed desktop.
1847
+ */
1848
+ post_v1_desktop_stream_stop: {
1849
+ responses: {
1850
+ /** @description Desktop streaming stopped */
1851
+ 200: {
1852
+ content: {
1853
+ "application/json": components["schemas"]["DesktopStreamStatusResponse"];
1854
+ };
470
1855
  };
471
1856
  };
1857
+ };
1858
+ /**
1859
+ * List visible desktop windows.
1860
+ * @description Performs a health-gated visible-window enumeration against the managed
1861
+ * desktop and returns the current window metadata.
1862
+ */
1863
+ get_v1_desktop_windows: {
472
1864
  responses: {
473
- /** @description Agent info */
1865
+ /** @description Visible desktop windows */
474
1866
  200: {
475
1867
  content: {
476
- "application/json": components["schemas"]["AgentInfo"];
1868
+ "application/json": components["schemas"]["DesktopWindowListResponse"];
477
1869
  };
478
1870
  };
479
- /** @description Unknown agent */
480
- 400: {
1871
+ /** @description Desktop runtime is not ready */
1872
+ 409: {
481
1873
  content: {
482
1874
  "application/json": components["schemas"]["ProblemDetails"];
483
1875
  };
484
1876
  };
485
- /** @description Authentication required */
486
- 401: {
1877
+ /** @description Desktop runtime health or window query failed */
1878
+ 503: {
487
1879
  content: {
488
1880
  "application/json": components["schemas"]["ProblemDetails"];
489
1881
  };
490
1882
  };
491
1883
  };
492
1884
  };
493
- post_v1_agent_install: {
494
- parameters: {
495
- path: {
496
- /** @description Agent id */
497
- agent: string;
498
- };
499
- };
500
- requestBody: {
501
- content: {
502
- "application/json": components["schemas"]["AgentInstallRequest"];
503
- };
504
- };
1885
+ /**
1886
+ * Get the currently focused desktop window.
1887
+ * @description Returns information about the window that currently has input focus.
1888
+ */
1889
+ get_v1_desktop_windows_focused: {
505
1890
  responses: {
506
- /** @description Agent install result */
1891
+ /** @description Focused window info */
507
1892
  200: {
508
1893
  content: {
509
- "application/json": components["schemas"]["AgentInstallResponse"];
1894
+ "application/json": components["schemas"]["DesktopWindowInfo"];
510
1895
  };
511
1896
  };
512
- /** @description Invalid request */
513
- 400: {
1897
+ /** @description No window is focused */
1898
+ 404: {
514
1899
  content: {
515
1900
  "application/json": components["schemas"]["ProblemDetails"];
516
1901
  };
517
1902
  };
518
- /** @description Install failed */
519
- 500: {
1903
+ /** @description Desktop runtime is not ready */
1904
+ 409: {
520
1905
  content: {
521
1906
  "application/json": components["schemas"]["ProblemDetails"];
522
1907
  };
523
1908
  };
524
1909
  };
525
1910
  };
526
- get_v1_config_mcp: {
1911
+ /**
1912
+ * Focus a desktop window.
1913
+ * @description Brings the specified window to the foreground and gives it input focus.
1914
+ */
1915
+ post_v1_desktop_window_focus: {
527
1916
  parameters: {
528
- query: {
529
- /** @description Target directory */
530
- directory: string;
531
- /** @description MCP entry name */
532
- mcpName: string;
1917
+ path: {
1918
+ /** @description X11 window ID */
1919
+ id: string;
533
1920
  };
534
1921
  };
535
1922
  responses: {
536
- /** @description MCP entry */
1923
+ /** @description Window info after focus */
537
1924
  200: {
538
1925
  content: {
539
- "application/json": components["schemas"]["McpServerConfig"];
1926
+ "application/json": components["schemas"]["DesktopWindowInfo"];
540
1927
  };
541
1928
  };
542
- /** @description Entry not found */
1929
+ /** @description Window not found */
543
1930
  404: {
544
1931
  content: {
545
1932
  "application/json": components["schemas"]["ProblemDetails"];
546
1933
  };
547
1934
  };
1935
+ /** @description Desktop runtime is not ready */
1936
+ 409: {
1937
+ content: {
1938
+ "application/json": components["schemas"]["ProblemDetails"];
1939
+ };
1940
+ };
548
1941
  };
549
1942
  };
550
- put_v1_config_mcp: {
1943
+ /**
1944
+ * Move a desktop window.
1945
+ * @description Moves the specified window to the given position.
1946
+ */
1947
+ post_v1_desktop_window_move: {
551
1948
  parameters: {
552
- query: {
553
- /** @description Target directory */
554
- directory: string;
555
- /** @description MCP entry name */
556
- mcpName: string;
1949
+ path: {
1950
+ /** @description X11 window ID */
1951
+ id: string;
557
1952
  };
558
1953
  };
559
1954
  requestBody: {
560
1955
  content: {
561
- "application/json": components["schemas"]["McpServerConfig"];
562
- };
563
- };
564
- responses: {
565
- /** @description Stored */
566
- 204: {
567
- content: never;
568
- };
569
- };
570
- };
571
- delete_v1_config_mcp: {
572
- parameters: {
573
- query: {
574
- /** @description Target directory */
575
- directory: string;
576
- /** @description MCP entry name */
577
- mcpName: string;
578
- };
579
- };
580
- responses: {
581
- /** @description Deleted */
582
- 204: {
583
- content: never;
584
- };
585
- };
586
- };
587
- get_v1_config_skills: {
588
- parameters: {
589
- query: {
590
- /** @description Target directory */
591
- directory: string;
592
- /** @description Skill entry name */
593
- skillName: string;
1956
+ "application/json": components["schemas"]["DesktopWindowMoveRequest"];
594
1957
  };
595
1958
  };
596
1959
  responses: {
597
- /** @description Skills entry */
1960
+ /** @description Window info after move */
598
1961
  200: {
599
1962
  content: {
600
- "application/json": components["schemas"]["SkillsConfig"];
1963
+ "application/json": components["schemas"]["DesktopWindowInfo"];
601
1964
  };
602
1965
  };
603
- /** @description Entry not found */
1966
+ /** @description Window not found */
604
1967
  404: {
605
1968
  content: {
606
1969
  "application/json": components["schemas"]["ProblemDetails"];
607
1970
  };
608
1971
  };
1972
+ /** @description Desktop runtime is not ready */
1973
+ 409: {
1974
+ content: {
1975
+ "application/json": components["schemas"]["ProblemDetails"];
1976
+ };
1977
+ };
609
1978
  };
610
1979
  };
611
- put_v1_config_skills: {
1980
+ /**
1981
+ * Resize a desktop window.
1982
+ * @description Resizes the specified window to the given dimensions.
1983
+ */
1984
+ post_v1_desktop_window_resize: {
612
1985
  parameters: {
613
- query: {
614
- /** @description Target directory */
615
- directory: string;
616
- /** @description Skill entry name */
617
- skillName: string;
1986
+ path: {
1987
+ /** @description X11 window ID */
1988
+ id: string;
618
1989
  };
619
1990
  };
620
1991
  requestBody: {
621
1992
  content: {
622
- "application/json": components["schemas"]["SkillsConfig"];
1993
+ "application/json": components["schemas"]["DesktopWindowResizeRequest"];
623
1994
  };
624
1995
  };
625
1996
  responses: {
626
- /** @description Stored */
627
- 204: {
628
- content: never;
1997
+ /** @description Window info after resize */
1998
+ 200: {
1999
+ content: {
2000
+ "application/json": components["schemas"]["DesktopWindowInfo"];
2001
+ };
629
2002
  };
630
- };
631
- };
632
- delete_v1_config_skills: {
633
- parameters: {
634
- query: {
635
- /** @description Target directory */
636
- directory: string;
637
- /** @description Skill entry name */
638
- skillName: string;
2003
+ /** @description Window not found */
2004
+ 404: {
2005
+ content: {
2006
+ "application/json": components["schemas"]["ProblemDetails"];
2007
+ };
639
2008
  };
640
- };
641
- responses: {
642
- /** @description Deleted */
643
- 204: {
644
- content: never;
2009
+ /** @description Desktop runtime is not ready */
2010
+ 409: {
2011
+ content: {
2012
+ "application/json": components["schemas"]["ProblemDetails"];
2013
+ };
645
2014
  };
646
2015
  };
647
2016
  };
@@ -800,6 +2169,11 @@ interface operations {
800
2169
  * by the runtime, sorted by process ID.
801
2170
  */
802
2171
  get_v1_processes: {
2172
+ parameters: {
2173
+ query?: {
2174
+ owner?: components["schemas"]["ProcessOwner"] | null;
2175
+ };
2176
+ };
803
2177
  responses: {
804
2178
  /** @description List processes */
805
2179
  200: {
@@ -1280,6 +2654,46 @@ interface operations {
1280
2654
 
1281
2655
  type ProblemDetails = components["schemas"]["ProblemDetails"];
1282
2656
  type HealthResponse = JsonResponse<operations["get_v1_health"], 200>;
2657
+ type DesktopState = components["schemas"]["DesktopState"];
2658
+ type DesktopResolution = components["schemas"]["DesktopResolution"];
2659
+ type DesktopErrorInfo = components["schemas"]["DesktopErrorInfo"];
2660
+ type DesktopProcessInfo = components["schemas"]["DesktopProcessInfo"];
2661
+ type DesktopStatusResponse = JsonResponse<operations["get_v1_desktop_status"], 200>;
2662
+ type DesktopStartRequest = JsonRequestBody<operations["post_v1_desktop_start"]>;
2663
+ type DesktopScreenshotFormat = components["schemas"]["DesktopScreenshotFormat"];
2664
+ type DesktopScreenshotQuery = QueryParams<operations["get_v1_desktop_screenshot"]> extends never ? Record<string, never> : QueryParams<operations["get_v1_desktop_screenshot"]>;
2665
+ type DesktopRegionScreenshotQuery = QueryParams<operations["get_v1_desktop_screenshot_region"]>;
2666
+ type DesktopMousePositionResponse = JsonResponse<operations["get_v1_desktop_mouse_position"], 200>;
2667
+ type DesktopMouseButton = components["schemas"]["DesktopMouseButton"];
2668
+ type DesktopMouseMoveRequest = JsonRequestBody<operations["post_v1_desktop_mouse_move"]>;
2669
+ type DesktopMouseClickRequest = JsonRequestBody<operations["post_v1_desktop_mouse_click"]>;
2670
+ type DesktopMouseDownRequest = JsonRequestBody<operations["post_v1_desktop_mouse_down"]>;
2671
+ type DesktopMouseUpRequest = JsonRequestBody<operations["post_v1_desktop_mouse_up"]>;
2672
+ type DesktopMouseDragRequest = JsonRequestBody<operations["post_v1_desktop_mouse_drag"]>;
2673
+ type DesktopMouseScrollRequest = JsonRequestBody<operations["post_v1_desktop_mouse_scroll"]>;
2674
+ type DesktopKeyboardTypeRequest = JsonRequestBody<operations["post_v1_desktop_keyboard_type"]>;
2675
+ type DesktopKeyModifiers = components["schemas"]["DesktopKeyModifiers"];
2676
+ type DesktopKeyboardPressRequest = JsonRequestBody<operations["post_v1_desktop_keyboard_press"]>;
2677
+ type DesktopKeyboardDownRequest = JsonRequestBody<operations["post_v1_desktop_keyboard_down"]>;
2678
+ type DesktopKeyboardUpRequest = JsonRequestBody<operations["post_v1_desktop_keyboard_up"]>;
2679
+ type DesktopActionResponse = JsonResponse<operations["post_v1_desktop_keyboard_type"], 200>;
2680
+ type DesktopDisplayInfoResponse = JsonResponse<operations["get_v1_desktop_display_info"], 200>;
2681
+ type DesktopWindowInfo = components["schemas"]["DesktopWindowInfo"];
2682
+ type DesktopWindowListResponse = JsonResponse<operations["get_v1_desktop_windows"], 200>;
2683
+ type DesktopRecordingStartRequest = JsonRequestBody<operations["post_v1_desktop_recording_start"]>;
2684
+ type DesktopRecordingStatus = components["schemas"]["DesktopRecordingStatus"];
2685
+ type DesktopRecordingInfo = JsonResponse<operations["post_v1_desktop_recording_start"], 200>;
2686
+ type DesktopRecordingListResponse = JsonResponse<operations["get_v1_desktop_recordings"], 200>;
2687
+ type DesktopStreamStatusResponse = JsonResponse<operations["post_v1_desktop_stream_start"], 200>;
2688
+ type DesktopClipboardResponse = JsonResponse<operations["get_v1_desktop_clipboard"], 200>;
2689
+ type DesktopClipboardQuery = QueryParams<operations["get_v1_desktop_clipboard"]> extends never ? Record<string, never> : QueryParams<operations["get_v1_desktop_clipboard"]>;
2690
+ type DesktopClipboardWriteRequest = JsonRequestBody<operations["post_v1_desktop_clipboard"]>;
2691
+ type DesktopLaunchRequest = JsonRequestBody<operations["post_v1_desktop_launch"]>;
2692
+ type DesktopLaunchResponse = JsonResponse<operations["post_v1_desktop_launch"], 200>;
2693
+ type DesktopOpenRequest = JsonRequestBody<operations["post_v1_desktop_open"]>;
2694
+ type DesktopOpenResponse = JsonResponse<operations["post_v1_desktop_open"], 200>;
2695
+ type DesktopWindowMoveRequest = JsonRequestBody<operations["post_v1_desktop_window_move"]>;
2696
+ type DesktopWindowResizeRequest = JsonRequestBody<operations["post_v1_desktop_window_resize"]>;
1283
2697
  type AgentListResponse = JsonResponse<operations["get_v1_agents"], 200>;
1284
2698
  type AgentInfo = components["schemas"]["AgentInfo"];
1285
2699
  type AgentQuery = QueryParams<operations["get_v1_agents"]>;
@@ -1308,11 +2722,13 @@ type ProcessCreateRequest = JsonRequestBody<operations["post_v1_processes"]>;
1308
2722
  type ProcessInfo = components["schemas"]["ProcessInfo"];
1309
2723
  type ProcessInputRequest = JsonRequestBody<operations["post_v1_process_input"]>;
1310
2724
  type ProcessInputResponse = JsonResponse<operations["post_v1_process_input"], 200>;
2725
+ type ProcessListQuery = QueryParams<operations["get_v1_processes"]>;
1311
2726
  type ProcessListResponse = JsonResponse<operations["get_v1_processes"], 200>;
1312
2727
  type ProcessLogEntry = components["schemas"]["ProcessLogEntry"];
1313
2728
  type ProcessLogsQuery = QueryParams<operations["get_v1_process_logs"]>;
1314
2729
  type ProcessLogsResponse = JsonResponse<operations["get_v1_process_logs"], 200>;
1315
2730
  type ProcessLogsStream = components["schemas"]["ProcessLogsStream"];
2731
+ type ProcessOwner = components["schemas"]["ProcessOwner"];
1316
2732
  type ProcessRunRequest = JsonRequestBody<operations["post_v1_processes_run"]>;
1317
2733
  type ProcessRunResponse = JsonResponse<operations["post_v1_processes_run"], 200>;
1318
2734
  type ProcessSignalQuery = QueryParams<operations["post_v1_process_stop"]>;
@@ -1432,6 +2848,72 @@ type QueryParams<T> = T extends {
1432
2848
  };
1433
2849
  } ? Q : never;
1434
2850
 
2851
+ interface DesktopStreamReadyStatus {
2852
+ type: "ready";
2853
+ width: number;
2854
+ height: number;
2855
+ }
2856
+ interface DesktopStreamErrorStatus {
2857
+ type: "error";
2858
+ message: string;
2859
+ }
2860
+ type DesktopStreamStatusMessage = DesktopStreamReadyStatus | DesktopStreamErrorStatus;
2861
+ interface DesktopStreamConnectOptions {
2862
+ accessToken?: string;
2863
+ WebSocket?: typeof WebSocket;
2864
+ protocols?: string | string[];
2865
+ RTCPeerConnection?: typeof RTCPeerConnection;
2866
+ rtcConfig?: RTCConfiguration;
2867
+ }
2868
+ declare class DesktopStreamSession {
2869
+ readonly socket: WebSocket;
2870
+ readonly closed: Promise<void>;
2871
+ private pc;
2872
+ private dataChannel;
2873
+ private mediaStream;
2874
+ private connected;
2875
+ private pendingCandidates;
2876
+ private cachedReadyStatus;
2877
+ private readonly readyListeners;
2878
+ private readonly trackListeners;
2879
+ private readonly connectListeners;
2880
+ private readonly disconnectListeners;
2881
+ private readonly errorListeners;
2882
+ private closedResolve;
2883
+ private readonly PeerConnection;
2884
+ private readonly rtcConfig;
2885
+ constructor(socket: WebSocket, options?: DesktopStreamConnectOptions);
2886
+ onReady(listener: (status: DesktopStreamReadyStatus) => void): () => void;
2887
+ onTrack(listener: (stream: MediaStream) => void): () => void;
2888
+ onConnect(listener: () => void): () => void;
2889
+ onDisconnect(listener: () => void): () => void;
2890
+ onError(listener: (error: DesktopStreamErrorStatus | Error) => void): () => void;
2891
+ /** @deprecated Use onDisconnect instead. */
2892
+ onClose(listener: () => void): () => void;
2893
+ /** @deprecated No longer emits JPEG frames. Use onTrack for WebRTC media. */
2894
+ onFrame(_listener: (frame: Uint8Array) => void): () => void;
2895
+ getMediaStream(): MediaStream | null;
2896
+ /** Build a neko data channel message with the 3-byte header (event + length). */
2897
+ private buildNekoMsg;
2898
+ moveMouse(x: number, y: number): void;
2899
+ mouseDown(button?: DesktopMouseButton, x?: number, y?: number): void;
2900
+ mouseUp(button?: DesktopMouseButton, x?: number, y?: number): void;
2901
+ scroll(x: number, y: number, deltaX?: number, deltaY?: number): void;
2902
+ keyDown(key: string): void;
2903
+ keyUp(key: string): void;
2904
+ close(): void;
2905
+ private handleMessage;
2906
+ private handleNekoOffer;
2907
+ private handleNekoCandidate;
2908
+ private sendSignaling;
2909
+ private sendDataChannel;
2910
+ /** Tear down the peer connection, nullifying handlers first to prevent stale
2911
+ * callbacks. Matches the reference disconnect() pattern.
2912
+ * Ref: https://github.com/demodesk/neko-client/blob/37f93ea/src/component/internal/webrtc.ts#L321-L363 */
2913
+ private teardownPeerConnection;
2914
+ private emitError;
2915
+ }
2916
+
1435
2917
  interface SandboxAgentHealthWaitOptions {
1436
2918
  timeoutMs?: number;
1437
2919
  }
@@ -1526,12 +3008,20 @@ interface ProcessTerminalConnectOptions extends ProcessTerminalWebSocketUrlOptio
1526
3008
  WebSocket?: typeof WebSocket;
1527
3009
  }
1528
3010
  type ProcessTerminalSessionOptions = ProcessTerminalConnectOptions;
3011
+ type DesktopStreamSessionOptions = DesktopStreamConnectOptions;
1529
3012
  declare class SandboxAgentError extends Error {
1530
3013
  readonly status: number;
1531
3014
  readonly problem?: ProblemDetails;
1532
3015
  readonly response: Response;
1533
3016
  constructor(status: number, problem: ProblemDetails | undefined, response: Response);
1534
3017
  }
3018
+ declare class SandboxDestroyedError extends Error {
3019
+ readonly sandboxId: string;
3020
+ readonly provider: string;
3021
+ constructor(sandboxId: string, provider: string, options?: {
3022
+ cause?: unknown;
3023
+ });
3024
+ }
1535
3025
  declare class UnsupportedSessionCategoryError extends Error {
1536
3026
  readonly sessionId: string;
1537
3027
  readonly category: string;
@@ -1676,6 +3166,8 @@ declare class SandboxAgent {
1676
3166
  get inspectorUrl(): string;
1677
3167
  dispose(): Promise<void>;
1678
3168
  destroySandbox(): Promise<void>;
3169
+ pauseSandbox(): Promise<void>;
3170
+ killSandbox(): Promise<void>;
1679
3171
  listSessions(request?: ListPageRequest): Promise<ListPage<Session>>;
1680
3172
  getSession(id: string): Promise<Session | null>;
1681
3173
  getEvents(request: ListEventsRequest): Promise<ListPage<SessionEvent>>;
@@ -1714,6 +3206,41 @@ declare class SandboxAgent {
1714
3206
  respondPermission(permissionId: string, reply: PermissionReply): Promise<void>;
1715
3207
  rawRespondPermission(permissionId: string, response: RequestPermissionResponse): Promise<void>;
1716
3208
  getHealth(): Promise<HealthResponse>;
3209
+ startDesktop(request?: DesktopStartRequest): Promise<DesktopStatusResponse>;
3210
+ stopDesktop(): Promise<DesktopStatusResponse>;
3211
+ getDesktopStatus(): Promise<DesktopStatusResponse>;
3212
+ getDesktopDisplayInfo(): Promise<DesktopDisplayInfoResponse>;
3213
+ takeDesktopScreenshot(query?: DesktopScreenshotQuery): Promise<Uint8Array>;
3214
+ takeDesktopRegionScreenshot(query: DesktopRegionScreenshotQuery): Promise<Uint8Array>;
3215
+ getDesktopMousePosition(): Promise<DesktopMousePositionResponse>;
3216
+ moveDesktopMouse(request: DesktopMouseMoveRequest): Promise<DesktopMousePositionResponse>;
3217
+ clickDesktop(request: DesktopMouseClickRequest): Promise<DesktopMousePositionResponse>;
3218
+ mouseDownDesktop(request: DesktopMouseDownRequest): Promise<DesktopMousePositionResponse>;
3219
+ mouseUpDesktop(request: DesktopMouseUpRequest): Promise<DesktopMousePositionResponse>;
3220
+ dragDesktopMouse(request: DesktopMouseDragRequest): Promise<DesktopMousePositionResponse>;
3221
+ scrollDesktop(request: DesktopMouseScrollRequest): Promise<DesktopMousePositionResponse>;
3222
+ typeDesktopText(request: DesktopKeyboardTypeRequest): Promise<DesktopActionResponse>;
3223
+ pressDesktopKey(request: DesktopKeyboardPressRequest): Promise<DesktopActionResponse>;
3224
+ keyDownDesktop(request: DesktopKeyboardDownRequest): Promise<DesktopActionResponse>;
3225
+ keyUpDesktop(request: DesktopKeyboardUpRequest): Promise<DesktopActionResponse>;
3226
+ listDesktopWindows(): Promise<DesktopWindowListResponse>;
3227
+ getDesktopFocusedWindow(): Promise<DesktopWindowInfo>;
3228
+ focusDesktopWindow(windowId: string): Promise<DesktopWindowInfo>;
3229
+ moveDesktopWindow(windowId: string, request: DesktopWindowMoveRequest): Promise<DesktopWindowInfo>;
3230
+ resizeDesktopWindow(windowId: string, request: DesktopWindowResizeRequest): Promise<DesktopWindowInfo>;
3231
+ getDesktopClipboard(query?: DesktopClipboardQuery): Promise<DesktopClipboardResponse>;
3232
+ setDesktopClipboard(request: DesktopClipboardWriteRequest): Promise<DesktopActionResponse>;
3233
+ launchDesktopApp(request: DesktopLaunchRequest): Promise<DesktopLaunchResponse>;
3234
+ openDesktopTarget(request: DesktopOpenRequest): Promise<DesktopOpenResponse>;
3235
+ getDesktopStreamStatus(): Promise<DesktopStreamStatusResponse>;
3236
+ startDesktopRecording(request?: DesktopRecordingStartRequest): Promise<DesktopRecordingInfo>;
3237
+ stopDesktopRecording(): Promise<DesktopRecordingInfo>;
3238
+ listDesktopRecordings(): Promise<DesktopRecordingListResponse>;
3239
+ getDesktopRecording(id: string): Promise<DesktopRecordingInfo>;
3240
+ downloadDesktopRecording(id: string): Promise<Uint8Array>;
3241
+ deleteDesktopRecording(id: string): Promise<void>;
3242
+ startDesktopStream(): Promise<DesktopStreamStatusResponse>;
3243
+ stopDesktopStream(): Promise<DesktopStreamStatusResponse>;
1717
3244
  listAgents(options?: AgentQueryOptions): Promise<AgentListResponse>;
1718
3245
  getAgent(agent: string, options?: AgentQueryOptions): Promise<AgentInfo>;
1719
3246
  installAgent(agent: string, request?: AgentInstallRequest): Promise<AgentInstallResponse>;
@@ -1736,7 +3263,7 @@ declare class SandboxAgent {
1736
3263
  setProcessConfig(config: ProcessConfig): Promise<ProcessConfig>;
1737
3264
  createProcess(request: ProcessCreateRequest): Promise<ProcessInfo>;
1738
3265
  runProcess(request: ProcessRunRequest): Promise<ProcessRunResponse>;
1739
- listProcesses(): Promise<ProcessListResponse>;
3266
+ listProcesses(query?: ProcessListQuery): Promise<ProcessListResponse>;
1740
3267
  getProcess(id: string): Promise<ProcessInfo>;
1741
3268
  stopProcess(id: string, query?: ProcessSignalQuery): Promise<ProcessInfo>;
1742
3269
  killProcess(id: string, query?: ProcessSignalQuery): Promise<ProcessInfo>;
@@ -1748,6 +3275,9 @@ declare class SandboxAgent {
1748
3275
  buildProcessTerminalWebSocketUrl(id: string, options?: ProcessTerminalWebSocketUrlOptions): string;
1749
3276
  connectProcessTerminalWebSocket(id: string, options?: ProcessTerminalConnectOptions): WebSocket;
1750
3277
  connectProcessTerminal(id: string, options?: ProcessTerminalSessionOptions): ProcessTerminalSession;
3278
+ buildDesktopStreamWebSocketUrl(options?: ProcessTerminalWebSocketUrlOptions): string;
3279
+ connectDesktopStreamWebSocket(options?: DesktopStreamConnectOptions): WebSocket;
3280
+ connectDesktopStream(options?: DesktopStreamSessionOptions): DesktopStreamSession;
1751
3281
  private getLiveConnection;
1752
3282
  private persistObservedEnvelope;
1753
3283
  private enqueueObservedEnvelopePersistence;
@@ -1792,4 +3322,4 @@ interface InspectorUrlOptions {
1792
3322
  */
1793
3323
  declare function buildInspectorUrl(options: InspectorUrlOptions): string;
1794
3324
 
1795
- export { type AcpEnvelope, type AcpServerInfo, type AcpServerListResponse, type AgentInfo, type AgentInstallRequest, type AgentInstallResponse, type AgentListResponse, type AgentQuery, type AgentQueryOptions, type FsActionResponse, type FsDeleteQuery, type FsEntriesQuery, type FsEntry, type FsMoveRequest, type FsMoveResponse, type FsPathQuery, type FsStat, type FsUploadBatchQuery, type FsUploadBatchResponse, type FsWriteResponse, type HealthResponse, InMemorySessionPersistDriver, type InMemorySessionPersistDriverOptions, type InspectorUrlOptions, type ListEventsRequest, type ListPage, type ListPageRequest, LiveAcpConnection, type McpConfigQuery, type McpServerConfig, type PermissionReply, type PermissionRequestListener, type ProblemDetails, type ProcessConfig, type ProcessCreateRequest, type ProcessInfo, type ProcessInputRequest, type ProcessInputResponse, type ProcessListResponse, type ProcessLogEntry, type ProcessLogFollowQuery, type ProcessLogListener, type ProcessLogSubscription, type ProcessLogsQuery, type ProcessLogsResponse, type ProcessLogsStream, type ProcessRunRequest, type ProcessRunResponse, type ProcessSignalQuery, type ProcessState, type ProcessTerminalClientFrame, type ProcessTerminalConnectOptions, type ProcessTerminalErrorFrame, type ProcessTerminalExitFrame, type ProcessTerminalReadyFrame, type ProcessTerminalResizeRequest, type ProcessTerminalResizeResponse, type ProcessTerminalServerFrame, ProcessTerminalSession, type ProcessTerminalSessionOptions, type ProcessTerminalWebSocketUrlOptions, SandboxAgent, type SandboxAgentConnectOptions, SandboxAgentError, type SandboxAgentHealthWaitOptions, type SandboxAgentStartOptions, SandboxProvider, Session, type SessionCreateRequest, type SessionEvent, type SessionEventListener, type SessionPermissionRequest, type SessionPermissionRequestOption, type SessionPersistDriver, type SessionRecord, type SessionResumeOrCreateRequest, type SessionSendOptions, type SkillsConfig, type SkillsConfigQuery, type TerminalErrorStatus, type TerminalExitStatus, type TerminalReadyStatus, type TerminalResizePayload, type TerminalStatusMessage, UnsupportedPermissionReplyError, UnsupportedSessionCategoryError, UnsupportedSessionConfigOptionError, UnsupportedSessionValueError, buildInspectorUrl };
3325
+ export { type AcpEnvelope, type AcpServerInfo, type AcpServerListResponse, type AgentInfo, type AgentInstallRequest, type AgentInstallResponse, type AgentListResponse, type AgentQuery, type AgentQueryOptions, type DesktopActionResponse, type DesktopDisplayInfoResponse, type DesktopErrorInfo, type DesktopKeyModifiers, type DesktopKeyboardDownRequest, type DesktopKeyboardPressRequest, type DesktopKeyboardTypeRequest, type DesktopKeyboardUpRequest, type DesktopMouseButton, type DesktopMouseClickRequest, type DesktopMouseDownRequest, type DesktopMouseDragRequest, type DesktopMouseMoveRequest, type DesktopMousePositionResponse, type DesktopMouseScrollRequest, type DesktopMouseUpRequest, type DesktopProcessInfo, type DesktopRecordingInfo, type DesktopRecordingListResponse, type DesktopRecordingStartRequest, type DesktopRecordingStatus, type DesktopRegionScreenshotQuery, type DesktopResolution, type DesktopScreenshotFormat, type DesktopScreenshotQuery, type DesktopStartRequest, type DesktopState, type DesktopStatusResponse, type DesktopStreamConnectOptions, type DesktopStreamErrorStatus, type DesktopStreamReadyStatus, DesktopStreamSession, type DesktopStreamSessionOptions, type DesktopStreamStatusMessage, type DesktopStreamStatusResponse, type DesktopWindowInfo, type DesktopWindowListResponse, type FsActionResponse, type FsDeleteQuery, type FsEntriesQuery, type FsEntry, type FsMoveRequest, type FsMoveResponse, type FsPathQuery, type FsStat, type FsUploadBatchQuery, type FsUploadBatchResponse, type FsWriteResponse, type HealthResponse, InMemorySessionPersistDriver, type InMemorySessionPersistDriverOptions, type InspectorUrlOptions, type ListEventsRequest, type ListPage, type ListPageRequest, LiveAcpConnection, type McpConfigQuery, type McpServerConfig, type PermissionReply, type PermissionRequestListener, type ProblemDetails, type ProcessConfig, type ProcessCreateRequest, type ProcessInfo, type ProcessInputRequest, type ProcessInputResponse, type ProcessListQuery, type ProcessListResponse, type ProcessLogEntry, type ProcessLogFollowQuery, type ProcessLogListener, type ProcessLogSubscription, type ProcessLogsQuery, type ProcessLogsResponse, type ProcessLogsStream, type ProcessOwner, type ProcessRunRequest, type ProcessRunResponse, type ProcessSignalQuery, type ProcessState, type ProcessTerminalClientFrame, type ProcessTerminalConnectOptions, type ProcessTerminalErrorFrame, type ProcessTerminalExitFrame, type ProcessTerminalReadyFrame, type ProcessTerminalResizeRequest, type ProcessTerminalResizeResponse, type ProcessTerminalServerFrame, ProcessTerminalSession, type ProcessTerminalSessionOptions, type ProcessTerminalWebSocketUrlOptions, SandboxAgent, type SandboxAgentConnectOptions, SandboxAgentError, type SandboxAgentHealthWaitOptions, type SandboxAgentStartOptions, SandboxDestroyedError, SandboxProvider, Session, type SessionCreateRequest, type SessionEvent, type SessionEventListener, type SessionPermissionRequest, type SessionPermissionRequestOption, type SessionPersistDriver, type SessionRecord, type SessionResumeOrCreateRequest, type SessionSendOptions, type SkillsConfig, type SkillsConfigQuery, type TerminalErrorStatus, type TerminalExitStatus, type TerminalReadyStatus, type TerminalResizePayload, type TerminalStatusMessage, UnsupportedPermissionReplyError, UnsupportedSessionCategoryError, UnsupportedSessionConfigOptionError, UnsupportedSessionValueError, buildInspectorUrl };