plato-sdk-v2 2.0.1__tar.gz

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 (302) hide show
  1. plato_sdk_v2-2.0.1/.gitignore +23 -0
  2. plato_sdk_v2-2.0.1/PKG-INFO +283 -0
  3. plato_sdk_v2-2.0.1/README.md +253 -0
  4. plato_sdk_v2-2.0.1/plato/__init__.py +37 -0
  5. plato_sdk_v2-2.0.1/plato/_generated/__init__.py +37 -0
  6. plato_sdk_v2-2.0.1/plato/_generated/api/__init__.py +8 -0
  7. plato_sdk_v2-2.0.1/plato/_generated/api/v1/__init__.py +31 -0
  8. plato_sdk_v2-2.0.1/plato/_generated/api/v1/agent_artifacts/__init__.py +10 -0
  9. plato_sdk_v2-2.0.1/plato/_generated/api/v1/agent_artifacts/archive_agent_artifact.py +51 -0
  10. plato_sdk_v2-2.0.1/plato/_generated/api/v1/agent_artifacts/create_agent_artifact.py +53 -0
  11. plato_sdk_v2-2.0.1/plato/_generated/api/v1/agent_artifacts/get_agent_artifact_by_public_id.py +51 -0
  12. plato_sdk_v2-2.0.1/plato/_generated/api/v1/agent_artifacts/get_agent_artifacts.py +43 -0
  13. plato_sdk_v2-2.0.1/plato/_generated/api/v1/cluster/__init__.py +21 -0
  14. plato_sdk_v2-2.0.1/plato/_generated/api/v1/cluster/cleanup_stale_vms.py +88 -0
  15. plato_sdk_v2-2.0.1/plato/_generated/api/v1/cluster/get_dispatchers.py +50 -0
  16. plato_sdk_v2-2.0.1/plato/_generated/api/v1/cluster/get_nodes_status.py +62 -0
  17. plato_sdk_v2-2.0.1/plato/_generated/api/v1/cluster/get_snapshot_lineage.py +79 -0
  18. plato_sdk_v2-2.0.1/plato/_generated/api/v1/cluster/get_snapshots_status.py +62 -0
  19. plato_sdk_v2-2.0.1/plato/_generated/api/v1/cluster/pause_resume_dispatchers.py +94 -0
  20. plato_sdk_v2-2.0.1/plato/_generated/api/v1/cluster/prefetch_snapshot.py +105 -0
  21. plato_sdk_v2-2.0.1/plato/_generated/api/v1/env/__init__.py +67 -0
  22. plato_sdk_v2-2.0.1/plato/_generated/api/v1/env/backup.py +69 -0
  23. plato_sdk_v2-2.0.1/plato/_generated/api/v1/env/cleanup.py +69 -0
  24. plato_sdk_v2-2.0.1/plato/_generated/api/v1/env/close.py +69 -0
  25. plato_sdk_v2-2.0.1/plato/_generated/api/v1/env/close_async.py +69 -0
  26. plato_sdk_v2-2.0.1/plato/_generated/api/v1/env/create.py +71 -0
  27. plato_sdk_v2-2.0.1/plato/_generated/api/v1/env/create_batch.py +79 -0
  28. plato_sdk_v2-2.0.1/plato/_generated/api/v1/env/create_simulator.py +71 -0
  29. plato_sdk_v2-2.0.1/plato/_generated/api/v1/env/evaluate_session.py +69 -0
  30. plato_sdk_v2-2.0.1/plato/_generated/api/v1/env/generate_mutations.py +53 -0
  31. plato_sdk_v2-2.0.1/plato/_generated/api/v1/env/generate_mutations_single.py +53 -0
  32. plato_sdk_v2-2.0.1/plato/_generated/api/v1/env/get_active_session.py +69 -0
  33. plato_sdk_v2-2.0.1/plato/_generated/api/v1/env/get_app_sim_worker_info.py +52 -0
  34. plato_sdk_v2-2.0.1/plato/_generated/api/v1/env/get_cdp_url.py +69 -0
  35. plato_sdk_v2-2.0.1/plato/_generated/api/v1/env/get_flows.py +69 -0
  36. plato_sdk_v2-2.0.1/plato/_generated/api/v1/env/get_interface_worker_info.py +69 -0
  37. plato_sdk_v2-2.0.1/plato/_generated/api/v1/env/get_job_info.py +69 -0
  38. plato_sdk_v2-2.0.1/plato/_generated/api/v1/env/get_job_status.py +69 -0
  39. plato_sdk_v2-2.0.1/plato/_generated/api/v1/env/get_job_worker_info.py +52 -0
  40. plato_sdk_v2-2.0.1/plato/_generated/api/v1/env/get_proxy_url.py +69 -0
  41. plato_sdk_v2-2.0.1/plato/_generated/api/v1/env/get_public_url.py +99 -0
  42. plato_sdk_v2-2.0.1/plato/_generated/api/v1/env/get_simulator_by_name.py +69 -0
  43. plato_sdk_v2-2.0.1/plato/_generated/api/v1/env/get_simulators.py +66 -0
  44. plato_sdk_v2-2.0.1/plato/_generated/api/v1/env/get_state.py +69 -0
  45. plato_sdk_v2-2.0.1/plato/_generated/api/v1/env/get_worker_ready.py +87 -0
  46. plato_sdk_v2-2.0.1/plato/_generated/api/v1/env/log_state_mutation.py +52 -0
  47. plato_sdk_v2-2.0.1/plato/_generated/api/v1/env/rescore_simulator_sessions.py +69 -0
  48. plato_sdk_v2-2.0.1/plato/_generated/api/v1/env/reset.py +76 -0
  49. plato_sdk_v2-2.0.1/plato/_generated/api/v1/env/score.py +76 -0
  50. plato_sdk_v2-2.0.1/plato/_generated/api/v1/env/send_heartbeat.py +69 -0
  51. plato_sdk_v2-2.0.1/plato/_generated/api/v1/env/update_simulator.py +76 -0
  52. plato_sdk_v2-2.0.1/plato/_generated/api/v1/evals/__init__.py +11 -0
  53. plato_sdk_v2-2.0.1/plato/_generated/api/v1/evals/evaluate_python.py +53 -0
  54. plato_sdk_v2-2.0.1/plato/_generated/api/v1/evals/get_scores_by_user.py +84 -0
  55. plato_sdk_v2-2.0.1/plato/_generated/api/v1/evals/get_scoring.py +51 -0
  56. plato_sdk_v2-2.0.1/plato/_generated/api/v1/evals/human_in_the_loop_scoring.py +58 -0
  57. plato_sdk_v2-2.0.1/plato/_generated/api/v1/evals/start_eval_from_git.py +53 -0
  58. plato_sdk_v2-2.0.1/plato/_generated/api/v1/gitea/__init__.py +35 -0
  59. plato_sdk_v2-2.0.1/plato/_generated/api/v1/gitea/create_gitea_repository.py +71 -0
  60. plato_sdk_v2-2.0.1/plato/_generated/api/v1/gitea/create_simulator_repository.py +69 -0
  61. plato_sdk_v2-2.0.1/plato/_generated/api/v1/gitea/delete_gitea_repository.py +74 -0
  62. plato_sdk_v2-2.0.1/plato/_generated/api/v1/gitea/get_accessible_simulators.py +66 -0
  63. plato_sdk_v2-2.0.1/plato/_generated/api/v1/gitea/get_gitea_credentials.py +64 -0
  64. plato_sdk_v2-2.0.1/plato/_generated/api/v1/gitea/get_gitea_repository.py +74 -0
  65. plato_sdk_v2-2.0.1/plato/_generated/api/v1/gitea/get_my_gitea_info.py +64 -0
  66. plato_sdk_v2-2.0.1/plato/_generated/api/v1/gitea/get_my_repositories.py +64 -0
  67. plato_sdk_v2-2.0.1/plato/_generated/api/v1/gitea/get_repository_branches.py +73 -0
  68. plato_sdk_v2-2.0.1/plato/_generated/api/v1/gitea/get_repository_contents.py +90 -0
  69. plato_sdk_v2-2.0.1/plato/_generated/api/v1/gitea/get_simulator_file_content.py +86 -0
  70. plato_sdk_v2-2.0.1/plato/_generated/api/v1/gitea/get_simulator_repository.py +69 -0
  71. plato_sdk_v2-2.0.1/plato/_generated/api/v1/gitea/get_simulator_repository_branches.py +68 -0
  72. plato_sdk_v2-2.0.1/plato/_generated/api/v1/gitea/get_simulator_repository_contents.py +85 -0
  73. plato_sdk_v2-2.0.1/plato/_generated/api/v1/jobs/__init__.py +11 -0
  74. plato_sdk_v2-2.0.1/plato/_generated/api/v1/jobs/get_job_by_id.py +68 -0
  75. plato_sdk_v2-2.0.1/plato/_generated/api/v1/jobs/get_jobs_by_group_id.py +68 -0
  76. plato_sdk_v2-2.0.1/plato/_generated/api/v1/jobs/get_keepalive_jobs.py +63 -0
  77. plato_sdk_v2-2.0.1/plato/_generated/api/v1/jobs/list_jobs.py +102 -0
  78. plato_sdk_v2-2.0.1/plato/_generated/api/v1/jobs/update_job_status.py +70 -0
  79. plato_sdk_v2-2.0.1/plato/_generated/api/v1/organization/__init__.py +33 -0
  80. plato_sdk_v2-2.0.1/plato/_generated/api/v1/organization/create_annotator_assignment.py +70 -0
  81. plato_sdk_v2-2.0.1/plato/_generated/api/v1/organization/create_org_api_key.py +76 -0
  82. plato_sdk_v2-2.0.1/plato/_generated/api/v1/organization/create_org_policy.py +76 -0
  83. plato_sdk_v2-2.0.1/plato/_generated/api/v1/organization/delete_org_api_key.py +73 -0
  84. plato_sdk_v2-2.0.1/plato/_generated/api/v1/organization/delete_org_policy.py +73 -0
  85. plato_sdk_v2-2.0.1/plato/_generated/api/v1/organization/get_annotator_assignments.py +74 -0
  86. plato_sdk_v2-2.0.1/plato/_generated/api/v1/organization/get_org_api_key_policies.py +74 -0
  87. plato_sdk_v2-2.0.1/plato/_generated/api/v1/organization/get_org_api_keys.py +69 -0
  88. plato_sdk_v2-2.0.1/plato/_generated/api/v1/organization/get_org_policies.py +69 -0
  89. plato_sdk_v2-2.0.1/plato/_generated/api/v1/organization/get_organization_concurrency_status.py +85 -0
  90. plato_sdk_v2-2.0.1/plato/_generated/api/v1/organization/get_organization_members.py +63 -0
  91. plato_sdk_v2-2.0.1/plato/_generated/api/v1/organization/update_annotator_assignment_stage.py +82 -0
  92. plato_sdk_v2-2.0.1/plato/_generated/api/v1/organization/update_organization_concurrency_limit.py +90 -0
  93. plato_sdk_v2-2.0.1/plato/_generated/api/v1/queue/__init__.py +10 -0
  94. plato_sdk_v2-2.0.1/plato/_generated/api/v1/queue/get_queue_status.py +56 -0
  95. plato_sdk_v2-2.0.1/plato/_generated/api/v1/queue/get_vm_detail.py +83 -0
  96. plato_sdk_v2-2.0.1/plato/_generated/api/v1/queue/get_vms.py +96 -0
  97. plato_sdk_v2-2.0.1/plato/_generated/api/v1/queue/get_workers.py +87 -0
  98. plato_sdk_v2-2.0.1/plato/_generated/api/v1/sandbox/__init__.py +29 -0
  99. plato_sdk_v2-2.0.1/plato/_generated/api/v1/sandbox/checkpoint_vm.py +83 -0
  100. plato_sdk_v2-2.0.1/plato/_generated/api/v1/sandbox/close_vm.py +69 -0
  101. plato_sdk_v2-2.0.1/plato/_generated/api/v1/sandbox/create_vm.py +71 -0
  102. plato_sdk_v2-2.0.1/plato/_generated/api/v1/sandbox/execute_ssh_command.py +82 -0
  103. plato_sdk_v2-2.0.1/plato/_generated/api/v1/sandbox/get_operation_events.py +68 -0
  104. plato_sdk_v2-2.0.1/plato/_generated/api/v1/sandbox/healthy_services.py +76 -0
  105. plato_sdk_v2-2.0.1/plato/_generated/api/v1/sandbox/healthy_worker.py +69 -0
  106. plato_sdk_v2-2.0.1/plato/_generated/api/v1/sandbox/save_vm_snapshot.py +81 -0
  107. plato_sdk_v2-2.0.1/plato/_generated/api/v1/sandbox/setup_root_access.py +76 -0
  108. plato_sdk_v2-2.0.1/plato/_generated/api/v1/sandbox/setup_sandbox.py +76 -0
  109. plato_sdk_v2-2.0.1/plato/_generated/api/v1/sandbox/start_worker.py +76 -0
  110. plato_sdk_v2-2.0.1/plato/_generated/api/v1/session/__init__.py +53 -0
  111. plato_sdk_v2-2.0.1/plato/_generated/api/v1/session/analyze_labels.py +63 -0
  112. plato_sdk_v2-2.0.1/plato/_generated/api/v1/session/archive_session.py +51 -0
  113. plato_sdk_v2-2.0.1/plato/_generated/api/v1/session/create_from_labels.py +68 -0
  114. plato_sdk_v2-2.0.1/plato/_generated/api/v1/session/create_session_from_browser.py +53 -0
  115. plato_sdk_v2-2.0.1/plato/_generated/api/v1/session/create_session_from_env_recording.py +47 -0
  116. plato_sdk_v2-2.0.1/plato/_generated/api/v1/session/create_session_from_har.py +45 -0
  117. plato_sdk_v2-2.0.1/plato/_generated/api/v1/session/get_env_recording.py +57 -0
  118. plato_sdk_v2-2.0.1/plato/_generated/api/v1/session/get_grouped_replay_sessions.py +45 -0
  119. plato_sdk_v2-2.0.1/plato/_generated/api/v1/session/get_network_requests.py +51 -0
  120. plato_sdk_v2-2.0.1/plato/_generated/api/v1/session/get_next_session_for_annotator.py +58 -0
  121. plato_sdk_v2-2.0.1/plato/_generated/api/v1/session/get_public_benchmark_sessions.py +72 -0
  122. plato_sdk_v2-2.0.1/plato/_generated/api/v1/session/get_replay_score_data.py +53 -0
  123. plato_sdk_v2-2.0.1/plato/_generated/api/v1/session/get_rrweb_actions.py +51 -0
  124. plato_sdk_v2-2.0.1/plato/_generated/api/v1/session/get_rrweb_events.py +51 -0
  125. plato_sdk_v2-2.0.1/plato/_generated/api/v1/session/get_screen_recording.py +51 -0
  126. plato_sdk_v2-2.0.1/plato/_generated/api/v1/session/get_session.py +61 -0
  127. plato_sdk_v2-2.0.1/plato/_generated/api/v1/session/get_session_replays.py +53 -0
  128. plato_sdk_v2-2.0.1/plato/_generated/api/v1/session/get_sessions.py +43 -0
  129. plato_sdk_v2-2.0.1/plato/_generated/api/v1/session/get_ui_events.py +51 -0
  130. plato_sdk_v2-2.0.1/plato/_generated/api/v1/session/score_session_with_config.py +62 -0
  131. plato_sdk_v2-2.0.1/plato/_generated/api/v1/session/search_sessions_by_ids.py +58 -0
  132. plato_sdk_v2-2.0.1/plato/_generated/api/v1/session/update_session_public.py +58 -0
  133. plato_sdk_v2-2.0.1/plato/_generated/api/v1/session/update_session_testcase.py +60 -0
  134. plato_sdk_v2-2.0.1/plato/_generated/api/v1/simulator/__init__.py +53 -0
  135. plato_sdk_v2-2.0.1/plato/_generated/api/v1/simulator/add_simulator_review.py +81 -0
  136. plato_sdk_v2-2.0.1/plato/_generated/api/v1/simulator/batch_create_test_cases.py +76 -0
  137. plato_sdk_v2-2.0.1/plato/_generated/api/v1/simulator/batch_get_artifact_metadata.py +54 -0
  138. plato_sdk_v2-2.0.1/plato/_generated/api/v1/simulator/get_all_simulators_info.py +74 -0
  139. plato_sdk_v2-2.0.1/plato/_generated/api/v1/simulator/get_db_config.py +75 -0
  140. plato_sdk_v2-2.0.1/plato/_generated/api/v1/simulator/get_env_flows.py +68 -0
  141. plato_sdk_v2-2.0.1/plato/_generated/api/v1/simulator/get_plato_config.py +69 -0
  142. plato_sdk_v2-2.0.1/plato/_generated/api/v1/simulator/get_sessions_batch_by_job_groups.py +81 -0
  143. plato_sdk_v2-2.0.1/plato/_generated/api/v1/simulator/get_sessions_by_job_group.py +86 -0
  144. plato_sdk_v2-2.0.1/plato/_generated/api/v1/simulator/get_simulator_by_name.py +82 -0
  145. plato_sdk_v2-2.0.1/plato/_generated/api/v1/simulator/get_simulator_id.py +69 -0
  146. plato_sdk_v2-2.0.1/plato/_generated/api/v1/simulator/get_simulator_info.py +67 -0
  147. plato_sdk_v2-2.0.1/plato/_generated/api/v1/simulator/get_simulator_version_details.py +62 -0
  148. plato_sdk_v2-2.0.1/plato/_generated/api/v1/simulator/get_simulator_versions.py +79 -0
  149. plato_sdk_v2-2.0.1/plato/_generated/api/v1/simulator/get_start_path.py +83 -0
  150. plato_sdk_v2-2.0.1/plato/_generated/api/v1/simulator/get_version_by_tag.py +56 -0
  151. plato_sdk_v2-2.0.1/plato/_generated/api/v1/simulator/list_simulators.py +64 -0
  152. plato_sdk_v2-2.0.1/plato/_generated/api/v1/simulator/list_simulators_by_org.py +64 -0
  153. plato_sdk_v2-2.0.1/plato/_generated/api/v1/simulator/list_simulators_status.py +64 -0
  154. plato_sdk_v2-2.0.1/plato/_generated/api/v1/simulator/register.py +76 -0
  155. plato_sdk_v2-2.0.1/plato/_generated/api/v1/simulator/update_simulator.py +77 -0
  156. plato_sdk_v2-2.0.1/plato/_generated/api/v1/simulator/update_simulator_status.py +85 -0
  157. plato_sdk_v2-2.0.1/plato/_generated/api/v1/simulator/update_tag.py +73 -0
  158. plato_sdk_v2-2.0.1/plato/_generated/api/v1/testcases/__init__.py +59 -0
  159. plato_sdk_v2-2.0.1/plato/_generated/api/v1/testcases/archive_organization_test_case_assignments.py +55 -0
  160. plato_sdk_v2-2.0.1/plato/_generated/api/v1/testcases/archive_organization_testcase.py +55 -0
  161. plato_sdk_v2-2.0.1/plato/_generated/api/v1/testcases/archive_testcase.py +51 -0
  162. plato_sdk_v2-2.0.1/plato/_generated/api/v1/testcases/assign_testcase_to_organizations.py +60 -0
  163. plato_sdk_v2-2.0.1/plato/_generated/api/v1/testcases/bulk_archive_testcases.py +53 -0
  164. plato_sdk_v2-2.0.1/plato/_generated/api/v1/testcases/convert_text_to_structured_data.py +53 -0
  165. plato_sdk_v2-2.0.1/plato/_generated/api/v1/testcases/create_testcase.py +53 -0
  166. plato_sdk_v2-2.0.1/plato/_generated/api/v1/testcases/create_testcase_set.py +53 -0
  167. plato_sdk_v2-2.0.1/plato/_generated/api/v1/testcases/delete_testcase_set.py +51 -0
  168. plato_sdk_v2-2.0.1/plato/_generated/api/v1/testcases/filter_human_recorder_testcases.py +84 -0
  169. plato_sdk_v2-2.0.1/plato/_generated/api/v1/testcases/generate_outcome_schema.py +53 -0
  170. plato_sdk_v2-2.0.1/plato/_generated/api/v1/testcases/generate_prediction.py +53 -0
  171. plato_sdk_v2-2.0.1/plato/_generated/api/v1/testcases/generate_prediction_from_steps.py +55 -0
  172. plato_sdk_v2-2.0.1/plato/_generated/api/v1/testcases/generate_scoring_config_from_sessions.py +61 -0
  173. plato_sdk_v2-2.0.1/plato/_generated/api/v1/testcases/generate_state_mutations_config_route.py +51 -0
  174. plato_sdk_v2-2.0.1/plato/_generated/api/v1/testcases/get_human_recorder_tab_counts.py +87 -0
  175. plato_sdk_v2-2.0.1/plato/_generated/api/v1/testcases/get_human_recorder_testcases.py +84 -0
  176. plato_sdk_v2-2.0.1/plato/_generated/api/v1/testcases/get_merged_mutations.py +65 -0
  177. plato_sdk_v2-2.0.1/plato/_generated/api/v1/testcases/get_organization_test_case_assignments.py +79 -0
  178. plato_sdk_v2-2.0.1/plato/_generated/api/v1/testcases/get_testcase.py +51 -0
  179. plato_sdk_v2-2.0.1/plato/_generated/api/v1/testcases/get_testcase_sets.py +43 -0
  180. plato_sdk_v2-2.0.1/plato/_generated/api/v1/testcases/get_testcases.py +154 -0
  181. plato_sdk_v2-2.0.1/plato/_generated/api/v1/testcases/get_testcases_in_set.py +51 -0
  182. plato_sdk_v2-2.0.1/plato/_generated/api/v1/testcases/mark_organization_test_case_completed.py +51 -0
  183. plato_sdk_v2-2.0.1/plato/_generated/api/v1/testcases/update_testcase.py +58 -0
  184. plato_sdk_v2-2.0.1/plato/_generated/api/v1/testcases/version_bump_testcase.py +58 -0
  185. plato_sdk_v2-2.0.1/plato/_generated/api/v2/__init__.py +8 -0
  186. plato_sdk_v2-2.0.1/plato/_generated/api/v2/interfaces/__init__.py +27 -0
  187. plato_sdk_v2-2.0.1/plato/_generated/api/v2/interfaces/v2_interface_browser_create.py +68 -0
  188. plato_sdk_v2-2.0.1/plato/_generated/api/v2/interfaces/v2_interface_cdp_url.py +65 -0
  189. plato_sdk_v2-2.0.1/plato/_generated/api/v2/interfaces/v2_interface_click.py +64 -0
  190. plato_sdk_v2-2.0.1/plato/_generated/api/v2/interfaces/v2_interface_close.py +59 -0
  191. plato_sdk_v2-2.0.1/plato/_generated/api/v2/interfaces/v2_interface_computer_create.py +68 -0
  192. plato_sdk_v2-2.0.1/plato/_generated/api/v2/interfaces/v2_interface_cursor.py +64 -0
  193. plato_sdk_v2-2.0.1/plato/_generated/api/v2/interfaces/v2_interface_key.py +68 -0
  194. plato_sdk_v2-2.0.1/plato/_generated/api/v2/interfaces/v2_interface_screenshot.py +65 -0
  195. plato_sdk_v2-2.0.1/plato/_generated/api/v2/interfaces/v2_interface_scroll.py +70 -0
  196. plato_sdk_v2-2.0.1/plato/_generated/api/v2/interfaces/v2_interface_type.py +64 -0
  197. plato_sdk_v2-2.0.1/plato/_generated/api/v2/jobs/__init__.py +27 -0
  198. plato_sdk_v2-2.0.1/plato/_generated/api/v2/jobs/close.py +69 -0
  199. plato_sdk_v2-2.0.1/plato/_generated/api/v2/jobs/connect_routing_info.py +74 -0
  200. plato_sdk_v2-2.0.1/plato/_generated/api/v2/jobs/connect_url.py +105 -0
  201. plato_sdk_v2-2.0.1/plato/_generated/api/v2/jobs/execute.py +76 -0
  202. plato_sdk_v2-2.0.1/plato/_generated/api/v2/jobs/make.py +72 -0
  203. plato_sdk_v2-2.0.1/plato/_generated/api/v2/jobs/public_url.py +107 -0
  204. plato_sdk_v2-2.0.1/plato/_generated/api/v2/jobs/reset.py +76 -0
  205. plato_sdk_v2-2.0.1/plato/_generated/api/v2/jobs/snapshot.py +69 -0
  206. plato_sdk_v2-2.0.1/plato/_generated/api/v2/jobs/state.py +69 -0
  207. plato_sdk_v2-2.0.1/plato/_generated/api/v2/jobs/wait_for_ready.py +105 -0
  208. plato_sdk_v2-2.0.1/plato/_generated/api/v2/sessions/__init__.py +33 -0
  209. plato_sdk_v2-2.0.1/plato/_generated/api/v2/sessions/checkpoint.py +81 -0
  210. plato_sdk_v2-2.0.1/plato/_generated/api/v2/sessions/close.py +69 -0
  211. plato_sdk_v2-2.0.1/plato/_generated/api/v2/sessions/evaluate.py +69 -0
  212. plato_sdk_v2-2.0.1/plato/_generated/api/v2/sessions/execute.py +76 -0
  213. plato_sdk_v2-2.0.1/plato/_generated/api/v2/sessions/get_connect_url.py +99 -0
  214. plato_sdk_v2-2.0.1/plato/_generated/api/v2/sessions/get_public_url.py +101 -0
  215. plato_sdk_v2-2.0.1/plato/_generated/api/v2/sessions/heartbeat.py +69 -0
  216. plato_sdk_v2-2.0.1/plato/_generated/api/v2/sessions/list_jobs.py +69 -0
  217. plato_sdk_v2-2.0.1/plato/_generated/api/v2/sessions/make.py +79 -0
  218. plato_sdk_v2-2.0.1/plato/_generated/api/v2/sessions/reset.py +76 -0
  219. plato_sdk_v2-2.0.1/plato/_generated/api/v2/sessions/snapshot.py +71 -0
  220. plato_sdk_v2-2.0.1/plato/_generated/api/v2/sessions/state.py +69 -0
  221. plato_sdk_v2-2.0.1/plato/_generated/api/v2/sessions/wait_for_ready.py +105 -0
  222. plato_sdk_v2-2.0.1/plato/_generated/api/version/__init__.py +7 -0
  223. plato_sdk_v2-2.0.1/plato/_generated/api/version/check.py +43 -0
  224. plato_sdk_v2-2.0.1/plato/_generated/client.py +171 -0
  225. plato_sdk_v2-2.0.1/plato/_generated/errors.py +141 -0
  226. plato_sdk_v2-2.0.1/plato/_generated/models/__init__.py +2150 -0
  227. plato_sdk_v2-2.0.1/plato/_generated/py.typed +0 -0
  228. plato_sdk_v2-2.0.1/plato/v1/__init__.py +6 -0
  229. plato_sdk_v2-2.0.1/plato/v1/audit_ui.py +281 -0
  230. plato_sdk_v2-2.0.1/plato/v1/cli.py +1173 -0
  231. plato_sdk_v2-2.0.1/plato/v1/config.py +25 -0
  232. plato_sdk_v2-2.0.1/plato/v1/examples/doordash_tasks.py +540 -0
  233. plato_sdk_v2-2.0.1/plato/v1/examples/loadtest.py +160 -0
  234. plato_sdk_v2-2.0.1/plato/v1/examples/test_env.py +128 -0
  235. plato_sdk_v2-2.0.1/plato/v1/examples/test_env_custom_browser.py +103 -0
  236. plato_sdk_v2-2.0.1/plato/v1/examples/test_env_sync.py +80 -0
  237. plato_sdk_v2-2.0.1/plato/v1/examples/test_reuse_env.py +0 -0
  238. plato_sdk_v2-2.0.1/plato/v1/examples/test_run.py +0 -0
  239. plato_sdk_v2-2.0.1/plato/v1/exceptions.py +4 -0
  240. plato_sdk_v2-2.0.1/plato/v1/extensions/envgen-recorder/README.md +223 -0
  241. plato_sdk_v2-2.0.1/plato/v1/extensions/envgen-recorder/api-client.js +158 -0
  242. plato_sdk_v2-2.0.1/plato/v1/extensions/envgen-recorder/background.js +1044 -0
  243. plato_sdk_v2-2.0.1/plato/v1/extensions/envgen-recorder/build-sdk.js +17 -0
  244. plato_sdk_v2-2.0.1/plato/v1/extensions/envgen-recorder/content.js +446 -0
  245. plato_sdk_v2-2.0.1/plato/v1/extensions/envgen-recorder/manifest.json +51 -0
  246. plato_sdk_v2-2.0.1/plato/v1/extensions/envgen-recorder/offscreen.html +10 -0
  247. plato_sdk_v2-2.0.1/plato/v1/extensions/envgen-recorder/offscreen.js +205 -0
  248. plato_sdk_v2-2.0.1/plato/v1/extensions/envgen-recorder/options.html +204 -0
  249. plato_sdk_v2-2.0.1/plato/v1/extensions/envgen-recorder/options.js +101 -0
  250. plato_sdk_v2-2.0.1/plato/v1/extensions/envgen-recorder/package-lock.json +496 -0
  251. plato_sdk_v2-2.0.1/plato/v1/extensions/envgen-recorder/package.json +5 -0
  252. plato_sdk_v2-2.0.1/plato/v1/extensions/envgen-recorder/plato-sdk-bundle.js +7036 -0
  253. plato_sdk_v2-2.0.1/plato/v1/extensions/envgen-recorder/plato-sdk-bundle.js.map +7 -0
  254. plato_sdk_v2-2.0.1/plato/v1/extensions/envgen-recorder/popup.html +228 -0
  255. plato_sdk_v2-2.0.1/plato/v1/extensions/envgen-recorder/popup.js +324 -0
  256. plato_sdk_v2-2.0.1/plato/v1/extensions/envgen-recorder/review-panel.html +63 -0
  257. plato_sdk_v2-2.0.1/plato/v1/extensions/envgen-recorder/review-panel.js +216 -0
  258. plato_sdk_v2-2.0.1/plato/v1/extensions/envgen-recorder/review-success.html +49 -0
  259. plato_sdk_v2-2.0.1/plato/v1/extensions/envgen-recorder/review-success.js +58 -0
  260. plato_sdk_v2-2.0.1/plato/v1/extensions/envgen-recorder/session-active.html +63 -0
  261. plato_sdk_v2-2.0.1/plato/v1/extensions/envgen-recorder/session-active.js +487 -0
  262. plato_sdk_v2-2.0.1/plato/v1/extensions/envgen-recorder/session-ended.html +54 -0
  263. plato_sdk_v2-2.0.1/plato/v1/extensions/envgen-recorder/session-ended.js +61 -0
  264. plato_sdk_v2-2.0.1/plato/v1/extensions/envgen-recorder/session-setup.html +54 -0
  265. plato_sdk_v2-2.0.1/plato/v1/extensions/envgen-recorder/session-setup.js +101 -0
  266. plato_sdk_v2-2.0.1/plato/v1/extensions/envgen-recorder/sessions.html +270 -0
  267. plato_sdk_v2-2.0.1/plato/v1/extensions/envgen-recorder/sessions.js +444 -0
  268. plato_sdk_v2-2.0.1/plato/v1/extensions/envgen-recorder/styles.css +374 -0
  269. plato_sdk_v2-2.0.1/plato/v1/flow_executor.py +455 -0
  270. plato_sdk_v2-2.0.1/plato/v1/models/__init__.py +37 -0
  271. plato_sdk_v2-2.0.1/plato/v1/models/build_models.py +245 -0
  272. plato_sdk_v2-2.0.1/plato/v1/models/env.py +771 -0
  273. plato_sdk_v2-2.0.1/plato/v1/models/flow.py +195 -0
  274. plato_sdk_v2-2.0.1/plato/v1/models/sandbox.py +143 -0
  275. plato_sdk_v2-2.0.1/plato/v1/models/task.py +145 -0
  276. plato_sdk_v2-2.0.1/plato/v1/sandbox_sdk.py +1046 -0
  277. plato_sdk_v2-2.0.1/plato/v1/sdk.py +852 -0
  278. plato_sdk_v2-2.0.1/plato/v1/sync_env.py +600 -0
  279. plato_sdk_v2-2.0.1/plato/v1/sync_flow_executor.py +449 -0
  280. plato_sdk_v2-2.0.1/plato/v1/sync_sdk.py +689 -0
  281. plato_sdk_v2-2.0.1/plato/v1/utils/proxytunnel.py +152 -0
  282. plato_sdk_v2-2.0.1/plato/v2/__init__.py +47 -0
  283. plato_sdk_v2-2.0.1/plato/v2/async_/__init__.py +11 -0
  284. plato_sdk_v2-2.0.1/plato/v2/async_/client.py +127 -0
  285. plato_sdk_v2-2.0.1/plato/v2/async_/environment.py +112 -0
  286. plato_sdk_v2-2.0.1/plato/v2/async_/session.py +636 -0
  287. plato_sdk_v2-2.0.1/plato/v2/models.py +61 -0
  288. plato_sdk_v2-2.0.1/plato/v2/sync/__init__.py +11 -0
  289. plato_sdk_v2-2.0.1/plato/v2/sync/client.py +127 -0
  290. plato_sdk_v2-2.0.1/plato/v2/sync/environment.py +117 -0
  291. plato_sdk_v2-2.0.1/plato/v2/sync/session.py +558 -0
  292. plato_sdk_v2-2.0.1/plato/v2/types.py +125 -0
  293. plato_sdk_v2-2.0.1/plato/v2/utils/__init__.py +1 -0
  294. plato_sdk_v2-2.0.1/plato/v2/utils/db_cleanup.py +225 -0
  295. plato_sdk_v2-2.0.1/plato/v2/utils/models.py +52 -0
  296. plato_sdk_v2-2.0.1/plato/v2/utils/proxy_tunnel.py +299 -0
  297. plato_sdk_v2-2.0.1/pyproject.toml +71 -0
  298. plato_sdk_v2-2.0.1/tests/__init__.py +1 -0
  299. plato_sdk_v2-2.0.1/tests/integration/test_cleanup_snapshot.py +143 -0
  300. plato_sdk_v2-2.0.1/tests/test_v2_multisim_integration.py +233 -0
  301. plato_sdk_v2-2.0.1/tests/test_v2_session.py +50 -0
  302. plato_sdk_v2-2.0.1/uv.lock +707 -0
@@ -0,0 +1,23 @@
1
+ __pycache__/
2
+ build/
3
+ dist/
4
+ *.egg-info/
5
+ .pytest_cache/
6
+
7
+ # pyenv
8
+ .python-version
9
+
10
+ # Environments
11
+ .env
12
+ .venv
13
+
14
+ # mypy
15
+ .mypy_cache/
16
+ .dmypy.json
17
+ dmypy.json
18
+
19
+ # JetBrains
20
+ .idea/
21
+
22
+ /coverage.xml
23
+ /.coverage
@@ -0,0 +1,283 @@
1
+ Metadata-Version: 2.4
2
+ Name: plato-sdk-v2
3
+ Version: 2.0.1
4
+ Summary: Python SDK for the Plato API
5
+ Author-email: Plato <support@plato.so>
6
+ License-Expression: MIT
7
+ Classifier: Development Status :: 4 - Beta
8
+ Classifier: Intended Audience :: Developers
9
+ Classifier: License :: OSI Approved :: MIT License
10
+ Classifier: Programming Language :: Python :: 3
11
+ Classifier: Programming Language :: Python :: 3.10
12
+ Classifier: Programming Language :: Python :: 3.11
13
+ Classifier: Programming Language :: Python :: 3.12
14
+ Classifier: Typing :: Typed
15
+ Requires-Python: >=3.10
16
+ Requires-Dist: httpx>=0.25.0
17
+ Requires-Dist: pydantic>=2.0.0
18
+ Requires-Dist: python-dotenv>=1.2.1
19
+ Provides-Extra: db-cleanup
20
+ Requires-Dist: aiomysql>=0.2; extra == 'db-cleanup'
21
+ Requires-Dist: aiosqlite>=0.20; extra == 'db-cleanup'
22
+ Requires-Dist: asyncpg>=0.29; extra == 'db-cleanup'
23
+ Requires-Dist: sqlalchemy[asyncio]>=2.0; extra == 'db-cleanup'
24
+ Provides-Extra: dev
25
+ Requires-Dist: basedpyright>=1.18; extra == 'dev'
26
+ Requires-Dist: pytest-asyncio>=0.21; extra == 'dev'
27
+ Requires-Dist: pytest>=7.0; extra == 'dev'
28
+ Requires-Dist: ruff>=0.1; extra == 'dev'
29
+ Description-Content-Type: text/markdown
30
+
31
+ # Plato Python SDK
32
+
33
+ Python SDK for the Plato API v2.
34
+
35
+ ## Installation
36
+
37
+ ```bash
38
+ pip install plato-sdk
39
+ ```
40
+
41
+ ## Quick Start
42
+
43
+ ```python
44
+ from plato.v2 import Client, Env
45
+
46
+ # Synchronous usage
47
+ with Client() as client:
48
+ # Create a session with an environment
49
+ with client.session(envs=[Env.artifact("espocrm")]) as session:
50
+ # Batch operations on all environments
51
+ session.reset()
52
+ state = session.get_state()
53
+
54
+ # Per-environment operations
55
+ for env in session.envs:
56
+ result = env.execute("ls -la")
57
+ print(result)
58
+ ```
59
+
60
+ ## Environment Configuration
61
+
62
+ The SDK provides three modes for creating environments using the `Env` helper, which returns `EnvConfig` objects:
63
+
64
+ ### Mode 1: Simulator with Tag (Default)
65
+
66
+ Start from a snapshotted artifact using "simulator:tag" format:
67
+
68
+ ```python
69
+ from plato.v2 import Client, Env
70
+
71
+ with Client() as client:
72
+ # Use default :prod-latest tag
73
+ session = client.session(envs=[Env.artifact("espocrm")])
74
+ # Equivalent to: Env.artifact("espocrm:prod-latest")
75
+
76
+ # Use custom tag
77
+ session = client.session(envs=[Env.artifact("espocrm:staging")])
78
+
79
+ # With custom alias
80
+ session = client.session(envs=[Env.artifact("espocrm", alias="crm")])
81
+ ```
82
+
83
+ ### Mode 2: Explicit Artifact ID
84
+
85
+ Start
86
+ from
87
+ a
88
+ specific
89
+ artifact
90
+ snapshot
91
+ using
92
+ its
93
+ ID:
94
+
95
+ ```python
96
+ from plato.v2 import Client, Env
97
+
98
+ with Client() as client:
99
+ # Use explicit artifact ID
100
+ session = client.session(envs=[
101
+ Env.artifact(artifact_id="artifact-123", alias="my-env")
102
+ ])
103
+ ```
104
+
105
+ ### Mode 3: Custom VM Resources
106
+
107
+ Create
108
+ a
109
+ blank
110
+ VM
111
+ with
112
+ custom
113
+ CPU,
114
+ memory,
115
+ and
116
+ disk
117
+ configuration:
118
+
119
+ ```python
120
+ from plato.v2 import Client, Env, SimConfigCompute
121
+
122
+ with Client() as client:
123
+ # Create blank VM with custom resources
124
+ session = client.session(envs=[
125
+ Env.resource(
126
+ "redis",
127
+ SimConfigCompute(cpus=4, memory=8192, disk=20000),
128
+ alias="cache"
129
+ )
130
+ ])
131
+ ```
132
+
133
+ ### Multiple Environments
134
+
135
+ ```python
136
+ from plato.v2 import Client, Env, SimConfigCompute
137
+
138
+ with Client() as client:
139
+ # Mix artifact and resource-based environments
140
+ envs = [
141
+ Env.artifact("espocrm", alias="crm"),
142
+ Env.artifact("wordpress:staging", alias="blog"),
143
+ Env.resource("redis", SimConfigCompute(cpus=2, memory=4096), alias="cache"),
144
+ ]
145
+
146
+ with client.session.from_envs(envs) as session:
147
+ # Access environments by alias
148
+ crm = session.get_env("crm")
149
+ blog = session.get_env("blog")
150
+ cache = session.get_env("cache")
151
+
152
+ if crm:
153
+ crm.execute("echo 'Hello CRM'")
154
+ if blog:
155
+ blog.execute("echo 'Hello Blog'")
156
+ ```
157
+
158
+ ### Create Session from Task
159
+
160
+ ```python
161
+ from plato.v2 import Client
162
+
163
+ with Client() as client:
164
+ # Create session from a task ID
165
+ session = client.from_task(task_id=123)
166
+ ```
167
+
168
+ ## Async Usage
169
+
170
+ ```python
171
+ import asyncio
172
+ from plato.v2 import AsyncClient, Env
173
+
174
+ async def main():
175
+ async with AsyncClient() as client:
176
+ async with await client.session(envs=[Env.artifact("espocrm")]) as session:
177
+ await session.reset()
178
+ state = await session.get_state()
179
+
180
+ for env in session.envs:
181
+ result = await env.execute("ls -la")
182
+ print(result)
183
+
184
+ asyncio.run(main())
185
+ ```
186
+
187
+ ## Session Operations
188
+
189
+ ```python
190
+ from plato.v2 import Client, Env
191
+
192
+ with Client() as client:
193
+ with client.session(envs=[Env.artifact("espocrm")]) as session:
194
+ # Reset all environments
195
+ session.reset()
196
+
197
+ # Get state from all environments
198
+ state = session.get_state()
199
+
200
+ # Execute command on all environments
201
+ results = session.execute("ls -la", timeout=30)
202
+
203
+ # Create snapshot of all environments
204
+ snapshots = session.snapshot()
205
+
206
+ # Evaluate session
207
+ evaluation = session.evaluate()
208
+
209
+ # Send heartbeat (automatically done when using context manager)
210
+ session.heartbeat()
211
+ ```
212
+
213
+ ## Per-Environment Operations
214
+
215
+ ```python
216
+ from plato.v2 import Client, Env
217
+
218
+ with Client() as client:
219
+ with client.session(envs=[Env.artifact("espocrm", alias="crm")]) as session:
220
+ # Get specific environment
221
+ env = session.get_env("crm")
222
+
223
+ if env:
224
+ # Execute command
225
+ result = env.execute("pwd")
226
+ print(result.stdout)
227
+
228
+ # Reset environment
229
+ env.reset()
230
+
231
+ # Create snapshot
232
+ snapshot = env.snapshot()
233
+
234
+ # Get state
235
+ state = env.get_state()
236
+
237
+ # Close environment
238
+ env.close()
239
+ ```
240
+
241
+ ## Configuration
242
+
243
+ Set
244
+ your
245
+ API
246
+ key
247
+ via
248
+ environment
249
+ variable:
250
+
251
+ ```bash
252
+ export PLATO_API_KEY=your-api-key
253
+ ```
254
+
255
+ Or
256
+ pass
257
+ it
258
+ directly:
259
+
260
+ ```python
261
+ from plato.v2 import Client
262
+
263
+ client = Client(api_key="your-api-key")
264
+ ```
265
+
266
+ Configure
267
+ custom
268
+ base
269
+ URL:
270
+
271
+ ```bash
272
+ export PLATO_BASE_URL=https://custom.plato.so
273
+ ```
274
+
275
+ Or:
276
+
277
+ ```python
278
+ client = Client(base_url="https://custom.plato.so")
279
+ ```
280
+
281
+ ## License
282
+
283
+ MIT
@@ -0,0 +1,253 @@
1
+ # Plato Python SDK
2
+
3
+ Python SDK for the Plato API v2.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ pip install plato-sdk
9
+ ```
10
+
11
+ ## Quick Start
12
+
13
+ ```python
14
+ from plato.v2 import Client, Env
15
+
16
+ # Synchronous usage
17
+ with Client() as client:
18
+ # Create a session with an environment
19
+ with client.session(envs=[Env.artifact("espocrm")]) as session:
20
+ # Batch operations on all environments
21
+ session.reset()
22
+ state = session.get_state()
23
+
24
+ # Per-environment operations
25
+ for env in session.envs:
26
+ result = env.execute("ls -la")
27
+ print(result)
28
+ ```
29
+
30
+ ## Environment Configuration
31
+
32
+ The SDK provides three modes for creating environments using the `Env` helper, which returns `EnvConfig` objects:
33
+
34
+ ### Mode 1: Simulator with Tag (Default)
35
+
36
+ Start from a snapshotted artifact using "simulator:tag" format:
37
+
38
+ ```python
39
+ from plato.v2 import Client, Env
40
+
41
+ with Client() as client:
42
+ # Use default :prod-latest tag
43
+ session = client.session(envs=[Env.artifact("espocrm")])
44
+ # Equivalent to: Env.artifact("espocrm:prod-latest")
45
+
46
+ # Use custom tag
47
+ session = client.session(envs=[Env.artifact("espocrm:staging")])
48
+
49
+ # With custom alias
50
+ session = client.session(envs=[Env.artifact("espocrm", alias="crm")])
51
+ ```
52
+
53
+ ### Mode 2: Explicit Artifact ID
54
+
55
+ Start
56
+ from
57
+ a
58
+ specific
59
+ artifact
60
+ snapshot
61
+ using
62
+ its
63
+ ID:
64
+
65
+ ```python
66
+ from plato.v2 import Client, Env
67
+
68
+ with Client() as client:
69
+ # Use explicit artifact ID
70
+ session = client.session(envs=[
71
+ Env.artifact(artifact_id="artifact-123", alias="my-env")
72
+ ])
73
+ ```
74
+
75
+ ### Mode 3: Custom VM Resources
76
+
77
+ Create
78
+ a
79
+ blank
80
+ VM
81
+ with
82
+ custom
83
+ CPU,
84
+ memory,
85
+ and
86
+ disk
87
+ configuration:
88
+
89
+ ```python
90
+ from plato.v2 import Client, Env, SimConfigCompute
91
+
92
+ with Client() as client:
93
+ # Create blank VM with custom resources
94
+ session = client.session(envs=[
95
+ Env.resource(
96
+ "redis",
97
+ SimConfigCompute(cpus=4, memory=8192, disk=20000),
98
+ alias="cache"
99
+ )
100
+ ])
101
+ ```
102
+
103
+ ### Multiple Environments
104
+
105
+ ```python
106
+ from plato.v2 import Client, Env, SimConfigCompute
107
+
108
+ with Client() as client:
109
+ # Mix artifact and resource-based environments
110
+ envs = [
111
+ Env.artifact("espocrm", alias="crm"),
112
+ Env.artifact("wordpress:staging", alias="blog"),
113
+ Env.resource("redis", SimConfigCompute(cpus=2, memory=4096), alias="cache"),
114
+ ]
115
+
116
+ with client.session.from_envs(envs) as session:
117
+ # Access environments by alias
118
+ crm = session.get_env("crm")
119
+ blog = session.get_env("blog")
120
+ cache = session.get_env("cache")
121
+
122
+ if crm:
123
+ crm.execute("echo 'Hello CRM'")
124
+ if blog:
125
+ blog.execute("echo 'Hello Blog'")
126
+ ```
127
+
128
+ ### Create Session from Task
129
+
130
+ ```python
131
+ from plato.v2 import Client
132
+
133
+ with Client() as client:
134
+ # Create session from a task ID
135
+ session = client.from_task(task_id=123)
136
+ ```
137
+
138
+ ## Async Usage
139
+
140
+ ```python
141
+ import asyncio
142
+ from plato.v2 import AsyncClient, Env
143
+
144
+ async def main():
145
+ async with AsyncClient() as client:
146
+ async with await client.session(envs=[Env.artifact("espocrm")]) as session:
147
+ await session.reset()
148
+ state = await session.get_state()
149
+
150
+ for env in session.envs:
151
+ result = await env.execute("ls -la")
152
+ print(result)
153
+
154
+ asyncio.run(main())
155
+ ```
156
+
157
+ ## Session Operations
158
+
159
+ ```python
160
+ from plato.v2 import Client, Env
161
+
162
+ with Client() as client:
163
+ with client.session(envs=[Env.artifact("espocrm")]) as session:
164
+ # Reset all environments
165
+ session.reset()
166
+
167
+ # Get state from all environments
168
+ state = session.get_state()
169
+
170
+ # Execute command on all environments
171
+ results = session.execute("ls -la", timeout=30)
172
+
173
+ # Create snapshot of all environments
174
+ snapshots = session.snapshot()
175
+
176
+ # Evaluate session
177
+ evaluation = session.evaluate()
178
+
179
+ # Send heartbeat (automatically done when using context manager)
180
+ session.heartbeat()
181
+ ```
182
+
183
+ ## Per-Environment Operations
184
+
185
+ ```python
186
+ from plato.v2 import Client, Env
187
+
188
+ with Client() as client:
189
+ with client.session(envs=[Env.artifact("espocrm", alias="crm")]) as session:
190
+ # Get specific environment
191
+ env = session.get_env("crm")
192
+
193
+ if env:
194
+ # Execute command
195
+ result = env.execute("pwd")
196
+ print(result.stdout)
197
+
198
+ # Reset environment
199
+ env.reset()
200
+
201
+ # Create snapshot
202
+ snapshot = env.snapshot()
203
+
204
+ # Get state
205
+ state = env.get_state()
206
+
207
+ # Close environment
208
+ env.close()
209
+ ```
210
+
211
+ ## Configuration
212
+
213
+ Set
214
+ your
215
+ API
216
+ key
217
+ via
218
+ environment
219
+ variable:
220
+
221
+ ```bash
222
+ export PLATO_API_KEY=your-api-key
223
+ ```
224
+
225
+ Or
226
+ pass
227
+ it
228
+ directly:
229
+
230
+ ```python
231
+ from plato.v2 import Client
232
+
233
+ client = Client(api_key="your-api-key")
234
+ ```
235
+
236
+ Configure
237
+ custom
238
+ base
239
+ URL:
240
+
241
+ ```bash
242
+ export PLATO_BASE_URL=https://custom.plato.so
243
+ ```
244
+
245
+ Or:
246
+
247
+ ```python
248
+ client = Client(base_url="https://custom.plato.so")
249
+ ```
250
+
251
+ ## License
252
+
253
+ MIT
@@ -0,0 +1,37 @@
1
+ # Plato SDK
2
+ #
3
+ # v1: Legacy SDK (deprecated)
4
+ # v2: New SDK with separate sync/async modules
5
+ #
6
+ # Usage (v2 - recommended):
7
+ # from plato.v2.sync import Client
8
+ # from plato.v2.async_ import Client
9
+ # from plato import EnvOption
10
+ #
11
+ # Usage (v1 - deprecated):
12
+ # from plato import Plato, SyncPlato
13
+
14
+ # Defer imports to avoid circular issues with _generated
15
+ __all__ = ["EnvOption", "v2"]
16
+
17
+
18
+ def __getattr__(name):
19
+ """Lazy import to avoid loading all modules at once."""
20
+ if name == "v2":
21
+ from plato import v2
22
+
23
+ return v2
24
+ if name == "EnvOption":
25
+ from plato._generated.models.env_option import EnvOption
26
+
27
+ return EnvOption
28
+ if name in ("Plato", "SyncPlato", "PlatoTask", "v1"):
29
+ try:
30
+ from plato import v1
31
+
32
+ if name == "v1":
33
+ return v1
34
+ return getattr(v1, name)
35
+ except ImportError:
36
+ raise AttributeError(f"module 'plato' has no attribute '{name}' (v1 unavailable)")
37
+ raise AttributeError(f"module 'plato' has no attribute '{name}'")
@@ -0,0 +1,37 @@
1
+ """Plato API SDK - v0.13.10"""
2
+
3
+ from . import api, errors, models
4
+ from .client import AsyncClient, Client
5
+ from .errors import (
6
+ APIError,
7
+ BadRequestError,
8
+ ConflictError,
9
+ ForbiddenError,
10
+ InternalServerError,
11
+ NotFoundError,
12
+ RateLimitError,
13
+ ServiceUnavailableError,
14
+ UnauthorizedError,
15
+ UnprocessableEntityError,
16
+ )
17
+
18
+ __all__ = [
19
+ # Clients
20
+ "Client",
21
+ "AsyncClient",
22
+ # Modules
23
+ "api",
24
+ "models",
25
+ "errors",
26
+ # Error types for convenience
27
+ "APIError",
28
+ "BadRequestError",
29
+ "UnauthorizedError",
30
+ "ForbiddenError",
31
+ "NotFoundError",
32
+ "ConflictError",
33
+ "UnprocessableEntityError",
34
+ "RateLimitError",
35
+ "InternalServerError",
36
+ "ServiceUnavailableError",
37
+ ]
@@ -0,0 +1,8 @@
1
+ """Generated API modules."""
2
+
3
+ from . import v1, v2
4
+
5
+ __all__ = [
6
+ "v1",
7
+ "v2",
8
+ ]
@@ -0,0 +1,31 @@
1
+ """API version module."""
2
+
3
+ from . import (
4
+ agent_artifacts,
5
+ cluster,
6
+ env,
7
+ evals,
8
+ gitea,
9
+ jobs,
10
+ organization,
11
+ queue,
12
+ sandbox,
13
+ session,
14
+ simulator,
15
+ testcases,
16
+ )
17
+
18
+ __all__ = [
19
+ "agent_artifacts",
20
+ "cluster",
21
+ "env",
22
+ "evals",
23
+ "gitea",
24
+ "jobs",
25
+ "organization",
26
+ "queue",
27
+ "sandbox",
28
+ "session",
29
+ "simulator",
30
+ "testcases",
31
+ ]
@@ -0,0 +1,10 @@
1
+ """API endpoints."""
2
+
3
+ from . import archive_agent_artifact, create_agent_artifact, get_agent_artifact_by_public_id, get_agent_artifacts
4
+
5
+ __all__ = [
6
+ "get_agent_artifacts",
7
+ "create_agent_artifact",
8
+ "get_agent_artifact_by_public_id",
9
+ "archive_agent_artifact",
10
+ ]