cyberdesk 2.1.4__py3-none-any.whl → 2.1.6__py3-none-any.whl

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.

Potentially problematic release.


This version of cyberdesk might be problematic. Click here for more details.

Files changed (26) hide show
  1. cyberdesk/__init__.py +1 -1
  2. cyberdesk/client.py +73 -0
  3. {cyberdesk-2.1.4.dist-info → cyberdesk-2.1.6.dist-info}/METADATA +1 -1
  4. {cyberdesk-2.1.4.dist-info → cyberdesk-2.1.6.dist-info}/RECORD +26 -13
  5. openapi_client/cyberdesk_cloud_client/api/computer/mouse_scroll_v1_computer_machine_id_input_mouse_scroll_post.py +187 -0
  6. openapi_client/cyberdesk_cloud_client/api/runs/create_run_chain_v1_runs_chain_post.py +192 -0
  7. openapi_client/cyberdesk_cloud_client/models/__init__.py +22 -0
  8. openapi_client/cyberdesk_cloud_client/models/chain_step.py +122 -0
  9. openapi_client/cyberdesk_cloud_client/models/chain_step_inputs_type_0.py +74 -0
  10. openapi_client/cyberdesk_cloud_client/models/machine_response.py +30 -0
  11. openapi_client/cyberdesk_cloud_client/models/machine_update.py +32 -0
  12. openapi_client/cyberdesk_cloud_client/models/mouse_scroll_request.py +109 -0
  13. openapi_client/cyberdesk_cloud_client/models/ref_value.py +61 -0
  14. openapi_client/cyberdesk_cloud_client/models/run_bulk_create.py +85 -0
  15. openapi_client/cyberdesk_cloud_client/models/run_bulk_create_sensitive_input_values_type_0.py +44 -0
  16. openapi_client/cyberdesk_cloud_client/models/run_create.py +105 -0
  17. openapi_client/cyberdesk_cloud_client/models/run_create_sensitive_input_values_type_0.py +44 -0
  18. openapi_client/cyberdesk_cloud_client/models/run_response.py +83 -0
  19. openapi_client/cyberdesk_cloud_client/models/run_response_sensitive_input_aliases_type_0.py +44 -0
  20. openapi_client/cyberdesk_cloud_client/models/workflow_chain_create.py +305 -0
  21. openapi_client/cyberdesk_cloud_client/models/workflow_chain_create_shared_inputs_type_0.py +44 -0
  22. openapi_client/cyberdesk_cloud_client/models/workflow_chain_create_shared_sensitive_inputs_type_0.py +44 -0
  23. openapi_client/cyberdesk_cloud_client/models/workflow_chain_response.py +77 -0
  24. {cyberdesk-2.1.4.dist-info → cyberdesk-2.1.6.dist-info}/WHEEL +0 -0
  25. {cyberdesk-2.1.4.dist-info → cyberdesk-2.1.6.dist-info}/licenses/LICENSE +0 -0
  26. {cyberdesk-2.1.4.dist-info → cyberdesk-2.1.6.dist-info}/top_level.txt +0 -0
cyberdesk/__init__.py CHANGED
@@ -27,7 +27,7 @@ from .client import (
27
27
  AttachmentType,
28
28
  )
29
29
 
30
- __version__ = "2.1.4"
30
+ __version__ = "2.1.6"
31
31
 
32
32
  __all__ = [
33
33
  "CyberdeskClient",
cyberdesk/client.py CHANGED
@@ -41,6 +41,7 @@ from openapi_client.cyberdesk_cloud_client.api.runs import (
41
41
  update_run_v1_runs_run_id_patch,
42
42
  delete_run_v1_runs_run_id_delete,
43
43
  bulk_create_runs_v1_runs_bulk_post,
44
+ create_run_chain_v1_runs_chain_post,
44
45
  )
45
46
  from openapi_client.cyberdesk_cloud_client.api.connections import (
46
47
  list_connections_v1_connections_get,
@@ -85,6 +86,8 @@ from openapi_client.cyberdesk_cloud_client.models import (
85
86
  RunStatus,
86
87
  RunBulkCreate,
87
88
  RunBulkCreateResponse,
89
+ WorkflowChainCreate,
90
+ WorkflowChainResponse,
88
91
  FileInput,
89
92
  ConnectionCreate,
90
93
  ConnectionResponse,
@@ -128,6 +131,8 @@ __all__ = [
128
131
  "RunStatus",
129
132
  "RunBulkCreate",
130
133
  "RunBulkCreateResponse",
134
+ "WorkflowChainCreate",
135
+ "WorkflowChainResponse",
131
136
  "FileInput",
132
137
  "ConnectionCreate",
133
138
  "ConnectionResponse",
@@ -312,6 +317,35 @@ class MachinesAPI:
312
317
  except Exception as e:
313
318
  return ApiResponse(error=e)
314
319
 
320
+ async def clear_session(self, machine_id: str) -> ApiResponse:
321
+ """Clear the machine's reserved session (cancels queued/running session runs).
322
+
323
+ This sends reserved_session_id=null per API contract.
324
+ """
325
+ try:
326
+ update = MachineUpdate(reserved_session_id=None)
327
+ response = await update_machine_v1_machines_machine_id_patch.asyncio(
328
+ client=self.client,
329
+ machine_id=_to_uuid(machine_id),
330
+ body=update
331
+ )
332
+ return ApiResponse(data=response)
333
+ except Exception as e:
334
+ return ApiResponse(error=e)
335
+
336
+ def clear_session_sync(self, machine_id: str) -> ApiResponse:
337
+ """Clear the machine's reserved session (synchronous)."""
338
+ try:
339
+ update = MachineUpdate(reserved_session_id=None)
340
+ response = update_machine_v1_machines_machine_id_patch.sync(
341
+ client=self.client,
342
+ machine_id=_to_uuid(machine_id),
343
+ body=update
344
+ )
345
+ return ApiResponse(data=response)
346
+ except Exception as e:
347
+ return ApiResponse(error=e)
348
+
315
349
  async def delete(self, machine_id: str) -> ApiResponse:
316
350
  """Delete a machine."""
317
351
  try:
@@ -854,6 +888,8 @@ class RunsAPI:
854
888
  - pool_ids: Optional list of pool IDs (machine must be in ALL specified pools)
855
889
  - input_values: Optional input values for workflow variables
856
890
  - file_inputs: Optional files to upload to the machine
891
+ - start_session: Optional bool to start a new machine session
892
+ - session_id: Optional UUID to join an existing session
857
893
 
858
894
  Returns:
859
895
  ApiResponse with RunResponse
@@ -877,6 +913,8 @@ class RunsAPI:
877
913
  - pool_ids: Optional list of pool IDs (machine must be in ALL specified pools)
878
914
  - input_values: Optional input values for workflow variables
879
915
  - file_inputs: Optional files to upload to the machine
916
+ - start_session: Optional bool to start a new machine session
917
+ - session_id: Optional UUID to join an existing session
880
918
 
881
919
  Returns:
882
920
  ApiResponse with RunResponse
@@ -974,6 +1012,8 @@ class RunsAPI:
974
1012
  - input_values: Optional input values for workflow variables
975
1013
  - file_inputs: Optional files to upload to the machine
976
1014
  - count: Number of runs to create (max 1000)
1015
+ - start_session: Optional bool to start a new machine session for all runs
1016
+ - session_id: Optional UUID to join an existing session for all runs
977
1017
 
978
1018
  Returns:
979
1019
  ApiResponse with RunBulkCreateResponse containing:
@@ -1006,6 +1046,8 @@ class RunsAPI:
1006
1046
  - input_values: Optional input values for workflow variables
1007
1047
  - file_inputs: Optional files to upload to the machine
1008
1048
  - count: Number of runs to create (max 1000)
1049
+ - start_session: Optional bool to start a new machine session for all runs
1050
+ - session_id: Optional UUID to join an existing session for all runs
1009
1051
 
1010
1052
  Returns:
1011
1053
  ApiResponse with RunBulkCreateResponse containing:
@@ -1022,6 +1064,37 @@ class RunsAPI:
1022
1064
  except Exception as e:
1023
1065
  return ApiResponse(error=e)
1024
1066
 
1067
+ async def chain(self, data: WorkflowChainCreate) -> ApiResponse:
1068
+ """Create a multi-step chain that runs on a single reserved session/machine.
1069
+
1070
+ Args:
1071
+ data: WorkflowChainCreate with steps (session_alias, inputs),
1072
+ optional shared_inputs/sensitive/file_inputs, and optional
1073
+ session_id or machine_id/pool_id for session start.
1074
+
1075
+ Returns:
1076
+ ApiResponse with WorkflowChainResponse
1077
+ """
1078
+ try:
1079
+ response = await create_run_chain_v1_runs_chain_post.asyncio(
1080
+ client=self.client,
1081
+ body=data
1082
+ )
1083
+ return ApiResponse(data=response)
1084
+ except Exception as e:
1085
+ return ApiResponse(error=e)
1086
+
1087
+ def chain_sync(self, data: WorkflowChainCreate) -> ApiResponse:
1088
+ """Create a multi-step chain (synchronous)."""
1089
+ try:
1090
+ response = create_run_chain_v1_runs_chain_post.sync(
1091
+ client=self.client,
1092
+ body=data
1093
+ )
1094
+ return ApiResponse(data=response)
1095
+ except Exception as e:
1096
+ return ApiResponse(error=e)
1097
+
1025
1098
 
1026
1099
  class ConnectionsAPI:
1027
1100
  """Connections API endpoints."""
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cyberdesk
3
- Version: 2.1.4
3
+ Version: 2.1.6
4
4
  Summary: The official Python SDK for Cyberdesk
5
5
  Author-email: Cyberdesk Team <dev@cyberdesk.io>
6
6
  License-Expression: MIT
@@ -1,6 +1,6 @@
1
- cyberdesk/__init__.py,sha256=P_WW_HA8MjPDBEKUJjUByCT4Rc32m6uQm__vuzCcJk4,1157
2
- cyberdesk/client.py,sha256=uRclPvQCGqpToajKZxDoam_97H3edH1SDMeui2HiN6Y,62002
3
- cyberdesk-2.1.4.dist-info/licenses/LICENSE,sha256=06Op63FCwGhuUOz__M8IZW5sxd29WxyGC4X5-Uih7IQ,1071
1
+ cyberdesk/__init__.py,sha256=Rw283-Jd5SQp35m80AJj-y0ArPRm_cSPdfq5TFjpFrA,1157
2
+ cyberdesk/client.py,sha256=QbOzRMrqAnCH7_13O0cU5HO0FpQFXbZOyCsfusaWXPc,65112
3
+ cyberdesk-2.1.6.dist-info/licenses/LICENSE,sha256=06Op63FCwGhuUOz__M8IZW5sxd29WxyGC4X5-Uih7IQ,1071
4
4
  openapi_client/cyberdesk_cloud_client/__init__.py,sha256=r_uVkNUL-SOK8j7-KiGMIKdinES5X8K1Q250ySX2F-A,158
5
5
  openapi_client/cyberdesk_cloud_client/client.py,sha256=o_mdLqyBCQstu5tS1WZFwqIEbGwkvWQ7eQjuCJw_5VY,12419
6
6
  openapi_client/cyberdesk_cloud_client/errors.py,sha256=gO8GBmKqmSNgAg-E5oT-oOyxztvp7V_6XG7OUTT15q0,546
@@ -18,6 +18,7 @@ openapi_client/cyberdesk_cloud_client/api/computer/keyboard_key_v1_computer_mach
18
18
  openapi_client/cyberdesk_cloud_client/api/computer/keyboard_type_v1_computer_machine_id_input_keyboard_type_post.py,sha256=tVBv4T6cg5UscdZtFuZpV4WJFF1Lqg7jDP97dbpoPnk,4664
19
19
  openapi_client/cyberdesk_cloud_client/api/computer/mouse_click_v1_computer_machine_id_input_mouse_click_post.py,sha256=_b8dCyAI0W3Fr0Ra5vo35yJuMb36cS0o41SSlLT1xf8,4984
20
20
  openapi_client/cyberdesk_cloud_client/api/computer/mouse_move_v1_computer_machine_id_input_mouse_move_post.py,sha256=CNfIj6oTs8QSRo4674pmHw9kJQIBw7D-u7mKT62tMDg,4704
21
+ openapi_client/cyberdesk_cloud_client/api/computer/mouse_scroll_v1_computer_machine_id_input_mouse_scroll_post.py,sha256=iHi8de7RU7gc1aLzLXlrlNW4HO13M8SigTyMqypA-9s,5024
21
22
  openapi_client/cyberdesk_cloud_client/api/computer/powershell_exec_v1_computer_machine_id_shell_powershell_exec_post.py,sha256=iZCvu92FFTVAZfIkw-PIWPllUe4NRuAdjB63IasSxKw,6567
22
23
  openapi_client/cyberdesk_cloud_client/api/computer/powershell_session_v1_computer_machine_id_shell_powershell_session_post.py,sha256=Bw-zP9ekElWvHbfts1bGfZX6mkEfrNwZ-A9rajAuzYM,6799
23
24
  openapi_client/cyberdesk_cloud_client/api/connections/__init__.py,sha256=5vd9uJWAjRqa9xzxzYkLD1yoZ12Ld_bAaNB5WX4fbE8,56
@@ -65,6 +66,7 @@ openapi_client/cyberdesk_cloud_client/api/run_attachments/list_run_attachments_v
65
66
  openapi_client/cyberdesk_cloud_client/api/run_attachments/update_run_attachment_v1_run_attachments_attachment_id_put.py,sha256=4jsIek-Z4U5hbKHRMBsnJr0DgfOoY5B2sC22d5Af-UU,5395
66
67
  openapi_client/cyberdesk_cloud_client/api/runs/__init__.py,sha256=5vd9uJWAjRqa9xzxzYkLD1yoZ12Ld_bAaNB5WX4fbE8,56
67
68
  openapi_client/cyberdesk_cloud_client/api/runs/bulk_create_runs_v1_runs_bulk_post.py,sha256=e89ThcQxPj-PZBzyieS4SC4kswup9aKBSsc3K8btN3U,5809
69
+ openapi_client/cyberdesk_cloud_client/api/runs/create_run_chain_v1_runs_chain_post.py,sha256=rAGFQld5TK5jBfrxkiebNF03t0HuRAMJzsqlHm1OQtg,6163
68
70
  openapi_client/cyberdesk_cloud_client/api/runs/create_run_v1_runs_post.py,sha256=GhCe-A0JxVWvTgzA4AyKEJQOlem0uzttLmXBxRLlUys,5451
69
71
  openapi_client/cyberdesk_cloud_client/api/runs/delete_run_v1_runs_run_id_delete.py,sha256=dOGd7lAPd9SBn9-13zhTx-wTtM6YQvT3WspjIQjOhHg,4428
70
72
  openapi_client/cyberdesk_cloud_client/api/runs/get_run_v1_runs_run_id_get.py,sha256=4mPvnOtAICVqzyXbD5Gdtqq_f1ardg7WpseT8RI3mwQ,4594
@@ -86,8 +88,10 @@ openapi_client/cyberdesk_cloud_client/api/workflows/get_workflow_v1_workflows_wo
86
88
  openapi_client/cyberdesk_cloud_client/api/workflows/get_workflow_versions_v1_workflows_workflow_id_versions_get.py,sha256=ax_5V-lIClvOxr50eXSIAPbyhWP-cS4a4DXzwdxkVYs,5889
87
89
  openapi_client/cyberdesk_cloud_client/api/workflows/list_workflows_v1_workflows_get.py,sha256=Aszxh1BlUuRqMHjT7lvZf8g6kDCcNUZtuwoJqhDOwlQ,11258
88
90
  openapi_client/cyberdesk_cloud_client/api/workflows/update_workflow_v1_workflows_workflow_id_patch.py,sha256=K_tuO6s_FyM8MUOck5AuX_RNIeYqCQcfYx1aDg9xwhE,5737
89
- openapi_client/cyberdesk_cloud_client/models/__init__.py,sha256=jhkqOlsuTqRD9AdBq_sfofxjFboTY1a5pCIKHGIaTV4,9110
91
+ openapi_client/cyberdesk_cloud_client/models/__init__.py,sha256=ucZQdTLcqDH1pUOq5qINlsFO6wqwYIa6JKJt3nycrJQ,10262
90
92
  openapi_client/cyberdesk_cloud_client/models/attachment_type.py,sha256=zqPOsSd2AmxGNqb5HQ6ZYBAYL8k-0UbWHhfAJYNHoro,161
93
+ openapi_client/cyberdesk_cloud_client/models/chain_step.py,sha256=mdWyUoC-zPXPkNc_JWONbEKao5VH5az2LQNJA3mmG1k,3871
94
+ openapi_client/cyberdesk_cloud_client/models/chain_step_inputs_type_0.py,sha256=fLKmOSl7rEi7pRrXbY1sqiVdbCNg0mGj2cPOb5_7hh4,2368
91
95
  openapi_client/cyberdesk_cloud_client/models/connection_create.py,sha256=gCI36DmjJDZxzGFPbykyYw9k4QEf_4dVNz9b-xZfLo4,3288
92
96
  openapi_client/cyberdesk_cloud_client/models/connection_response.py,sha256=aFxqJX75wSEw5dZ-kvh3Wgv_haJ6xYJ7o72vSAbEtHY,5247
93
97
  openapi_client/cyberdesk_cloud_client/models/connection_status.py,sha256=XTpa-W0TinYhypU7P-LaJEI3I2JsEaT3voUZQ3zoJO0,203
@@ -108,12 +112,13 @@ openapi_client/cyberdesk_cloud_client/models/keyboard_type_request.py,sha256=Jgz
108
112
  openapi_client/cyberdesk_cloud_client/models/machine_create.py,sha256=WiSBX-7Sx73C0jVHc6dhl4E0pWQNE2RrJ9DZ3gljZQ4,4449
109
113
  openapi_client/cyberdesk_cloud_client/models/machine_pool_assignment.py,sha256=oTctHGs4FQsdRvhc_evjC13vewhiQsaohsztMSWXJ9Q,2011
110
114
  openapi_client/cyberdesk_cloud_client/models/machine_pool_update.py,sha256=K1ax3OmPZj2t-VlQ0CsRWYuTR667fBTXsT8hJkZXcWU,1935
111
- openapi_client/cyberdesk_cloud_client/models/machine_response.py,sha256=jY8g10HTS1bjnMs1ptBC4X__kexnDSPCxNilGN0OAgk,9001
115
+ openapi_client/cyberdesk_cloud_client/models/machine_response.py,sha256=ic1fciSMgg1n1vnbz_24O2Uxm6cT72bw30k5YkHYm3A,10247
112
116
  openapi_client/cyberdesk_cloud_client/models/machine_status.py,sha256=mqKyXgK1wcaA2fI6iTo_tS7AMeuVrRN4yE21d2Lsq1I,200
113
- openapi_client/cyberdesk_cloud_client/models/machine_update.py,sha256=906MebM_AUetLZtTyeoZ40TPMORx4yyZPHmJ_j_tg9A,6973
117
+ openapi_client/cyberdesk_cloud_client/models/machine_update.py,sha256=0rUF8QOMrKLfGc2t1tULmId33sXBr9uwNgJSUD7p6es,8344
114
118
  openapi_client/cyberdesk_cloud_client/models/mouse_click_request.py,sha256=GSBn4fg2sNnL4KQQHKly2YIzyRqbfwVgrQXpaalOUxg,3423
115
119
  openapi_client/cyberdesk_cloud_client/models/mouse_move_request.py,sha256=D5sWQwnRvs_IvRocctMeE2czciI-KvuuYh73PLutkPo,1548
116
120
  openapi_client/cyberdesk_cloud_client/models/mouse_position.py,sha256=t8PW-7xKfyHb3LVnZQglSu4Hrlp7W_xmoqS-UYOqG2U,1530
121
+ openapi_client/cyberdesk_cloud_client/models/mouse_scroll_request.py,sha256=Q0QG8UweABu0BJXOBQVh8HCgMMyCSvHzoXf4Gkm6A5s,2980
117
122
  openapi_client/cyberdesk_cloud_client/models/paginated_response.py,sha256=P9bt0Koea8rODsULodX8dDAwm-uP2KRE1mRi8AK-VBY,1988
118
123
  openapi_client/cyberdesk_cloud_client/models/paginated_response_connection_response.py,sha256=2WxYXSS1RoBeh2ealxdQeEBSv0pBpllar1m98toeYHs,2527
119
124
  openapi_client/cyberdesk_cloud_client/models/paginated_response_machine_response.py,sha256=m_bJGQwSQkqPeJwcQ2UnXglhdmPqsj_tjjx_3S-YZyE,2491
@@ -130,6 +135,7 @@ openapi_client/cyberdesk_cloud_client/models/power_shell_exec_request.py,sha256=
130
135
  openapi_client/cyberdesk_cloud_client/models/power_shell_session_request.py,sha256=2Ix3dnjljWXO6KuOTPCykkYJim1at0_vAu1dh4Dahcw,2361
131
136
  openapi_client/cyberdesk_cloud_client/models/powershell_exec_v1_computer_machine_id_shell_powershell_exec_post_response_powershell_exec_v1_computer_machine_id_shell_powershell_exec_post.py,sha256=N496N5sS2XP1dqAvoB3EplU3Dxwtf867Vr8hhh315V8,1813
132
137
  openapi_client/cyberdesk_cloud_client/models/powershell_session_v1_computer_machine_id_shell_powershell_session_post_response_powershell_session_v1_computer_machine_id_shell_powershell_session_post.py,sha256=pmt2dgp_0v1YoLJqDXTXdpJ29TBenyCC4C_xmUCFGgA,1873
138
+ openapi_client/cyberdesk_cloud_client/models/ref_value.py,sha256=I98XZ2sslo7FPz5Y34isl-6v8gJ3cV5dP75Ng0Trzow,1536
133
139
  openapi_client/cyberdesk_cloud_client/models/request_log_create.py,sha256=6CNnBvl9oyGs0J0R994eFn-TIdl6ohsofvCc2SXVfWc,6072
134
140
  openapi_client/cyberdesk_cloud_client/models/request_log_response.py,sha256=ar41BvME8lsQOaDCz7KfPSSohj5_r8MYiMzdiIbRTMw,8239
135
141
  openapi_client/cyberdesk_cloud_client/models/request_log_update.py,sha256=VcXBNffDOoEYYBjwvdkuSWPz04BW3c8YTcqzlZRb0ns,5677
@@ -137,16 +143,19 @@ openapi_client/cyberdesk_cloud_client/models/run_attachment_create.py,sha256=w58
137
143
  openapi_client/cyberdesk_cloud_client/models/run_attachment_download_url_response.py,sha256=CUeh3Zas29uwfpH5oMbQ_hhkpsZ_RH7ZA_RyfRsf8mY,1864
138
144
  openapi_client/cyberdesk_cloud_client/models/run_attachment_response.py,sha256=_K4POw4eH_5wYbu8lqH1sHc3oMXFBDPtcqWfkBx3z68,7371
139
145
  openapi_client/cyberdesk_cloud_client/models/run_attachment_update.py,sha256=rGXcB21waSTXG0-mt0XhNcwoJI1PhBpBDUkLfp8mM-0,2573
140
- openapi_client/cyberdesk_cloud_client/models/run_bulk_create.py,sha256=CyZJONbhXWLndS_Mh1tx53eGh9qSz4qoiaI53N-CvJs,7951
146
+ openapi_client/cyberdesk_cloud_client/models/run_bulk_create.py,sha256=H5B8_7j6uSH8mN7WswoyjhJJX5Kx7z1AVOAtRxHLuTs,11997
141
147
  openapi_client/cyberdesk_cloud_client/models/run_bulk_create_input_values_type_0.py,sha256=JxGOOYKueFx5NtvnXgf9z_sXbMByQrsjjQ3AmU8qG30,1305
142
148
  openapi_client/cyberdesk_cloud_client/models/run_bulk_create_response.py,sha256=N9sMykvm6pC2fMMH_XVQI8wVc6-53qAHMb_qbNBo9-c,2886
149
+ openapi_client/cyberdesk_cloud_client/models/run_bulk_create_sensitive_input_values_type_0.py,sha256=gUuuevR9IZLJtqhnVvxvMDKf47JD4tdEEof9kESGWWY,1353
143
150
  openapi_client/cyberdesk_cloud_client/models/run_completed_event.py,sha256=JP4okhYCwpnbyORLVz-C9zUMcNt7FlVIjbpuG61bKFo,3415
144
- openapi_client/cyberdesk_cloud_client/models/run_create.py,sha256=C_l48nK5DhWNNdjZ7pGQkiquP57lmNj4KI1pklpwhco,7684
151
+ openapi_client/cyberdesk_cloud_client/models/run_create.py,sha256=uJrEXwJ1ZBtismGWy-sDoi2dLlQ1pVUVMP9YZFGXdPs,12459
145
152
  openapi_client/cyberdesk_cloud_client/models/run_create_input_values_type_0.py,sha256=APV4O0GduU3fhHoJHMMOBk-h92Hf21c1ZU-pIsJoZpg,1282
146
- openapi_client/cyberdesk_cloud_client/models/run_response.py,sha256=H9rKD3JYcOy8Lp_IB6eOYXw5Nx7K11wRNVi4xJZ_NuU,13779
153
+ openapi_client/cyberdesk_cloud_client/models/run_create_sensitive_input_values_type_0.py,sha256=gtmXorTEeOVv2fYJKkHCSFhKCRMvE-6-XjfNfNhiNMY,1330
154
+ openapi_client/cyberdesk_cloud_client/models/run_response.py,sha256=Eopwu4GLjx-6lf0dosYRm02i9HzEge-5KEtAdXS4P4A,17490
147
155
  openapi_client/cyberdesk_cloud_client/models/run_response_input_values_type_0.py,sha256=NpMqT3qaMrLGA7mHBjvtS1fnMGc5zxwWLoFWunjjupA,1292
148
156
  openapi_client/cyberdesk_cloud_client/models/run_response_output_data_type_0.py,sha256=rO4YJAa26G_83CFtBTQ_ZKCURAxNS7PcvdKbfuvDcrA,1287
149
157
  openapi_client/cyberdesk_cloud_client/models/run_response_run_message_history_type_0_item.py,sha256=3x1N3yi3kyc1que3bizmHEuGBn5s7pEirEg4TgBV9FU,1348
158
+ openapi_client/cyberdesk_cloud_client/models/run_response_sensitive_input_aliases_type_0.py,sha256=zKdXtKDOG2iv_1vtqzSGGuAthXP6JR7fKmiabJSvQE0,1345
150
159
  openapi_client/cyberdesk_cloud_client/models/run_status.py,sha256=Qbsj-KKplPDamvoJvyOK_sZp7XKj6SPf8J9WnRwOhXk,240
151
160
  openapi_client/cyberdesk_cloud_client/models/run_update.py,sha256=EY8zP-Dd3WgGNdUVDy1QUM6UPAZH4rNMEOPYjVej-Mo,9974
152
161
  openapi_client/cyberdesk_cloud_client/models/run_update_input_values_type_0.py,sha256=Dg_CSahXf_M8x7go8K0BoUrHWnoKpc6l-IFPeT15DNk,1282
@@ -163,11 +172,15 @@ openapi_client/cyberdesk_cloud_client/models/trajectory_response_trajectory_data
163
172
  openapi_client/cyberdesk_cloud_client/models/trajectory_update.py,sha256=EF-O37EgyVd9qmdMZk7frNFsSdiiWC7_ZWEoDGMxWnY,4916
164
173
  openapi_client/cyberdesk_cloud_client/models/trajectory_update_trajectory_data_type_0_item.py,sha256=3Zt8-nV3ZHjXzL1y5xKQdrHb-7ILG4EjHvtA4xabde4,1355
165
174
  openapi_client/cyberdesk_cloud_client/models/validation_error.py,sha256=ZlK9hbhWr4zSC-dxZh9giERvMiYf9s2k8e1O9Rch_NI,2181
175
+ openapi_client/cyberdesk_cloud_client/models/workflow_chain_create.py,sha256=Ll-4OOO5KJ_-npNtnqXlSLU97dGBATUTF_sw1XGIUEM,11945
176
+ openapi_client/cyberdesk_cloud_client/models/workflow_chain_create_shared_inputs_type_0.py,sha256=DMyjLQZDdL4Ys9S04mswimHNeLowXu6HK4rwcy2EdfY,1340
177
+ openapi_client/cyberdesk_cloud_client/models/workflow_chain_create_shared_sensitive_inputs_type_0.py,sha256=v-q9148uzXRexSOpGbXc1hOY_4qwESiHO8Xt2DSBf6M,1388
178
+ openapi_client/cyberdesk_cloud_client/models/workflow_chain_response.py,sha256=mw3uh4xWu0ATK44f2Qa2xd_H0rWORBnIBERHqrw4gc4,2086
166
179
  openapi_client/cyberdesk_cloud_client/models/workflow_create.py,sha256=d0bfNbNBF3RADrNcTiMeGm61NuV0c-6tB-S06ZxFdY4,3928
167
180
  openapi_client/cyberdesk_cloud_client/models/workflow_response.py,sha256=k48mouJ6Dcisz2vyM7Rb_cbjU66JudGVPsq4UC7grHA,8977
168
181
  openapi_client/cyberdesk_cloud_client/models/workflow_response_old_versions_type_0_item.py,sha256=W9AxxlBlN3rUwLDcoUx5H7MUiYA9UztfX9iEpNGlgAs,1340
169
182
  openapi_client/cyberdesk_cloud_client/models/workflow_update.py,sha256=TG2jEitXixS2thtz7lTxTZaE0RBVSWd-apVxWxsvnrg,5333
170
- cyberdesk-2.1.4.dist-info/METADATA,sha256=01tWJEDv0N-kx0yVS_CCDo7mudddz34Tv9cfpoTMZF8,6791
171
- cyberdesk-2.1.4.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
172
- cyberdesk-2.1.4.dist-info/top_level.txt,sha256=qTYHZHVHh3VClNPQsiFFA8p8tmJgFGhq9G1COd-pX_A,25
173
- cyberdesk-2.1.4.dist-info/RECORD,,
183
+ cyberdesk-2.1.6.dist-info/METADATA,sha256=aVFDPkRJsaoGM-SoZNln7gvzVpEDJrY-HX1CGsrO_xI,6791
184
+ cyberdesk-2.1.6.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
185
+ cyberdesk-2.1.6.dist-info/top_level.txt,sha256=qTYHZHVHh3VClNPQsiFFA8p8tmJgFGhq9G1COd-pX_A,25
186
+ cyberdesk-2.1.6.dist-info/RECORD,,
@@ -0,0 +1,187 @@
1
+ from http import HTTPStatus
2
+ from typing import Any, Optional, Union, cast
3
+
4
+ import httpx
5
+
6
+ from ... import errors
7
+ from ...client import AuthenticatedClient, Client
8
+ from ...models.http_validation_error import HTTPValidationError
9
+ from ...models.mouse_scroll_request import MouseScrollRequest
10
+ from ...types import Response
11
+
12
+
13
+ def _get_kwargs(
14
+ machine_id: str,
15
+ *,
16
+ body: MouseScrollRequest,
17
+ ) -> dict[str, Any]:
18
+ headers: dict[str, Any] = {}
19
+
20
+ _kwargs: dict[str, Any] = {
21
+ "method": "post",
22
+ "url": f"/v1/computer/{machine_id}/input/mouse/scroll",
23
+ }
24
+
25
+ _kwargs["json"] = body.to_dict()
26
+
27
+ headers["Content-Type"] = "application/json"
28
+
29
+ _kwargs["headers"] = headers
30
+ return _kwargs
31
+
32
+
33
+ def _parse_response(
34
+ *, client: Union[AuthenticatedClient, Client], response: httpx.Response
35
+ ) -> Optional[Union[Any, HTTPValidationError]]:
36
+ if response.status_code == 204:
37
+ response_204 = cast(Any, None)
38
+ return response_204
39
+ if response.status_code == 422:
40
+ response_422 = HTTPValidationError.from_dict(response.json())
41
+
42
+ return response_422
43
+ if client.raise_on_unexpected_status:
44
+ raise errors.UnexpectedStatus(response.status_code, response.content)
45
+ else:
46
+ return None
47
+
48
+
49
+ def _build_response(
50
+ *, client: Union[AuthenticatedClient, Client], response: httpx.Response
51
+ ) -> Response[Union[Any, HTTPValidationError]]:
52
+ return Response(
53
+ status_code=HTTPStatus(response.status_code),
54
+ content=response.content,
55
+ headers=response.headers,
56
+ parsed=_parse_response(client=client, response=response),
57
+ )
58
+
59
+
60
+ def sync_detailed(
61
+ machine_id: str,
62
+ *,
63
+ client: AuthenticatedClient,
64
+ body: MouseScrollRequest,
65
+ ) -> Response[Union[Any, HTTPValidationError]]:
66
+ """Scroll mouse wheel
67
+
68
+ Scroll the mouse wheel in the specified direction by a number of steps.
69
+ Optionally moves to (x, y) before scrolling.
70
+
71
+ Args:
72
+ machine_id (str):
73
+ body (MouseScrollRequest):
74
+
75
+ Raises:
76
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
77
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
78
+
79
+ Returns:
80
+ Response[Union[Any, HTTPValidationError]]
81
+ """
82
+
83
+ kwargs = _get_kwargs(
84
+ machine_id=machine_id,
85
+ body=body,
86
+ )
87
+
88
+ response = client.get_httpx_client().request(
89
+ **kwargs,
90
+ )
91
+
92
+ return _build_response(client=client, response=response)
93
+
94
+
95
+ def sync(
96
+ machine_id: str,
97
+ *,
98
+ client: AuthenticatedClient,
99
+ body: MouseScrollRequest,
100
+ ) -> Optional[Union[Any, HTTPValidationError]]:
101
+ """Scroll mouse wheel
102
+
103
+ Scroll the mouse wheel in the specified direction by a number of steps.
104
+ Optionally moves to (x, y) before scrolling.
105
+
106
+ Args:
107
+ machine_id (str):
108
+ body (MouseScrollRequest):
109
+
110
+ Raises:
111
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
112
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
113
+
114
+ Returns:
115
+ Union[Any, HTTPValidationError]
116
+ """
117
+
118
+ return sync_detailed(
119
+ machine_id=machine_id,
120
+ client=client,
121
+ body=body,
122
+ ).parsed
123
+
124
+
125
+ async def asyncio_detailed(
126
+ machine_id: str,
127
+ *,
128
+ client: AuthenticatedClient,
129
+ body: MouseScrollRequest,
130
+ ) -> Response[Union[Any, HTTPValidationError]]:
131
+ """Scroll mouse wheel
132
+
133
+ Scroll the mouse wheel in the specified direction by a number of steps.
134
+ Optionally moves to (x, y) before scrolling.
135
+
136
+ Args:
137
+ machine_id (str):
138
+ body (MouseScrollRequest):
139
+
140
+ Raises:
141
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
142
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
143
+
144
+ Returns:
145
+ Response[Union[Any, HTTPValidationError]]
146
+ """
147
+
148
+ kwargs = _get_kwargs(
149
+ machine_id=machine_id,
150
+ body=body,
151
+ )
152
+
153
+ response = await client.get_async_httpx_client().request(**kwargs)
154
+
155
+ return _build_response(client=client, response=response)
156
+
157
+
158
+ async def asyncio(
159
+ machine_id: str,
160
+ *,
161
+ client: AuthenticatedClient,
162
+ body: MouseScrollRequest,
163
+ ) -> Optional[Union[Any, HTTPValidationError]]:
164
+ """Scroll mouse wheel
165
+
166
+ Scroll the mouse wheel in the specified direction by a number of steps.
167
+ Optionally moves to (x, y) before scrolling.
168
+
169
+ Args:
170
+ machine_id (str):
171
+ body (MouseScrollRequest):
172
+
173
+ Raises:
174
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
175
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
176
+
177
+ Returns:
178
+ Union[Any, HTTPValidationError]
179
+ """
180
+
181
+ return (
182
+ await asyncio_detailed(
183
+ machine_id=machine_id,
184
+ client=client,
185
+ body=body,
186
+ )
187
+ ).parsed
@@ -0,0 +1,192 @@
1
+ from http import HTTPStatus
2
+ from typing import Any, Optional, Union
3
+
4
+ import httpx
5
+
6
+ from ... import errors
7
+ from ...client import AuthenticatedClient, Client
8
+ from ...models.http_validation_error import HTTPValidationError
9
+ from ...models.workflow_chain_create import WorkflowChainCreate
10
+ from ...models.workflow_chain_response import WorkflowChainResponse
11
+ from ...types import Response
12
+
13
+
14
+ def _get_kwargs(
15
+ *,
16
+ body: WorkflowChainCreate,
17
+ ) -> dict[str, Any]:
18
+ headers: dict[str, Any] = {}
19
+
20
+ _kwargs: dict[str, Any] = {
21
+ "method": "post",
22
+ "url": "/v1/runs/chain",
23
+ }
24
+
25
+ _kwargs["json"] = body.to_dict()
26
+
27
+ headers["Content-Type"] = "application/json"
28
+
29
+ _kwargs["headers"] = headers
30
+ return _kwargs
31
+
32
+
33
+ def _parse_response(
34
+ *, client: Union[AuthenticatedClient, Client], response: httpx.Response
35
+ ) -> Optional[Union[HTTPValidationError, WorkflowChainResponse]]:
36
+ if response.status_code == 201:
37
+ response_201 = WorkflowChainResponse.from_dict(response.json())
38
+
39
+ return response_201
40
+ if response.status_code == 422:
41
+ response_422 = HTTPValidationError.from_dict(response.json())
42
+
43
+ return response_422
44
+ if client.raise_on_unexpected_status:
45
+ raise errors.UnexpectedStatus(response.status_code, response.content)
46
+ else:
47
+ return None
48
+
49
+
50
+ def _build_response(
51
+ *, client: Union[AuthenticatedClient, Client], response: httpx.Response
52
+ ) -> Response[Union[HTTPValidationError, WorkflowChainResponse]]:
53
+ return Response(
54
+ status_code=HTTPStatus(response.status_code),
55
+ content=response.content,
56
+ headers=response.headers,
57
+ parsed=_parse_response(client=client, response=response),
58
+ )
59
+
60
+
61
+ def sync_detailed(
62
+ *,
63
+ client: AuthenticatedClient,
64
+ body: WorkflowChainCreate,
65
+ ) -> Response[Union[HTTPValidationError, WorkflowChainResponse]]:
66
+ """Create Run Chain
67
+
68
+ Create a multi-step chain that runs on a single reserved session/machine.
69
+
70
+ - Starts a new session unless session_id is provided (then runs on existing session).
71
+ - Accepts shared_inputs/sensitive/file_inputs and per-step file_inputs.
72
+ - machine_id > pool_id when starting a new session; both ignored if session_id provided.
73
+
74
+ Args:
75
+ body (WorkflowChainCreate): Request to create and run a multi-step chain on a single
76
+ reserved session/machine
77
+
78
+ Raises:
79
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
80
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
81
+
82
+ Returns:
83
+ Response[Union[HTTPValidationError, WorkflowChainResponse]]
84
+ """
85
+
86
+ kwargs = _get_kwargs(
87
+ body=body,
88
+ )
89
+
90
+ response = client.get_httpx_client().request(
91
+ **kwargs,
92
+ )
93
+
94
+ return _build_response(client=client, response=response)
95
+
96
+
97
+ def sync(
98
+ *,
99
+ client: AuthenticatedClient,
100
+ body: WorkflowChainCreate,
101
+ ) -> Optional[Union[HTTPValidationError, WorkflowChainResponse]]:
102
+ """Create Run Chain
103
+
104
+ Create a multi-step chain that runs on a single reserved session/machine.
105
+
106
+ - Starts a new session unless session_id is provided (then runs on existing session).
107
+ - Accepts shared_inputs/sensitive/file_inputs and per-step file_inputs.
108
+ - machine_id > pool_id when starting a new session; both ignored if session_id provided.
109
+
110
+ Args:
111
+ body (WorkflowChainCreate): Request to create and run a multi-step chain on a single
112
+ reserved session/machine
113
+
114
+ Raises:
115
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
116
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
117
+
118
+ Returns:
119
+ Union[HTTPValidationError, WorkflowChainResponse]
120
+ """
121
+
122
+ return sync_detailed(
123
+ client=client,
124
+ body=body,
125
+ ).parsed
126
+
127
+
128
+ async def asyncio_detailed(
129
+ *,
130
+ client: AuthenticatedClient,
131
+ body: WorkflowChainCreate,
132
+ ) -> Response[Union[HTTPValidationError, WorkflowChainResponse]]:
133
+ """Create Run Chain
134
+
135
+ Create a multi-step chain that runs on a single reserved session/machine.
136
+
137
+ - Starts a new session unless session_id is provided (then runs on existing session).
138
+ - Accepts shared_inputs/sensitive/file_inputs and per-step file_inputs.
139
+ - machine_id > pool_id when starting a new session; both ignored if session_id provided.
140
+
141
+ Args:
142
+ body (WorkflowChainCreate): Request to create and run a multi-step chain on a single
143
+ reserved session/machine
144
+
145
+ Raises:
146
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
147
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
148
+
149
+ Returns:
150
+ Response[Union[HTTPValidationError, WorkflowChainResponse]]
151
+ """
152
+
153
+ kwargs = _get_kwargs(
154
+ body=body,
155
+ )
156
+
157
+ response = await client.get_async_httpx_client().request(**kwargs)
158
+
159
+ return _build_response(client=client, response=response)
160
+
161
+
162
+ async def asyncio(
163
+ *,
164
+ client: AuthenticatedClient,
165
+ body: WorkflowChainCreate,
166
+ ) -> Optional[Union[HTTPValidationError, WorkflowChainResponse]]:
167
+ """Create Run Chain
168
+
169
+ Create a multi-step chain that runs on a single reserved session/machine.
170
+
171
+ - Starts a new session unless session_id is provided (then runs on existing session).
172
+ - Accepts shared_inputs/sensitive/file_inputs and per-step file_inputs.
173
+ - machine_id > pool_id when starting a new session; both ignored if session_id provided.
174
+
175
+ Args:
176
+ body (WorkflowChainCreate): Request to create and run a multi-step chain on a single
177
+ reserved session/machine
178
+
179
+ Raises:
180
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
181
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
182
+
183
+ Returns:
184
+ Union[HTTPValidationError, WorkflowChainResponse]
185
+ """
186
+
187
+ return (
188
+ await asyncio_detailed(
189
+ client=client,
190
+ body=body,
191
+ )
192
+ ).parsed