plato-sdk-v2 2.3.2__tar.gz → 2.3.4__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 (537) hide show
  1. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/PKG-INFO +2 -1
  2. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/README.md +1 -0
  3. plato_sdk_v2-2.3.4/VERSION +1 -0
  4. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/docs/SIMULATOR_LIFECYCLE.md +1 -2
  5. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/docs/skills/SIM-CREATION-ARCHITECTURE.md +1 -9
  6. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/docs/skills/sim-debugger/SKILL.md +1 -15
  7. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/docs/skills/sim-sandbox-services/SKILL.md +0 -1
  8. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/agents/runner.py +2 -0
  9. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/cli/main.py +0 -2
  10. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/cli/sandbox.py +192 -50
  11. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/cli/ssh.py +16 -4
  12. plato_sdk_v2-2.3.4/plato/v1/cli/verify.py +685 -0
  13. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/worlds/runner.py +36 -2
  14. plato_sdk_v2-2.3.2/VERSION +0 -1
  15. plato_sdk_v2-2.3.2/plato/v1/cli/sim.py +0 -11
  16. plato_sdk_v2-2.3.2/plato/v1/cli/verify.py +0 -1269
  17. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/.claude/agents/sim-creator.md +0 -0
  18. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/.gitignore +0 -0
  19. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/.sandbox.yaml +0 -0
  20. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/BUILDING_SIMS.md +0 -0
  21. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/ci/CLAUDE.md +0 -0
  22. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/ci/deploy.sh +0 -0
  23. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/ci/lint.sh +0 -0
  24. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/ci/setup.sh +0 -0
  25. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/ci/version-bump.sh +0 -0
  26. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/docs/AGENT_SPEC.md +0 -0
  27. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/docs/CLI.md +0 -0
  28. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/docs/GENERATING_SIM_SDKS.md +0 -0
  29. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/docs/SIM_CREATOR.md +0 -0
  30. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/docs/cli/agent.md +0 -0
  31. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/docs/cli/flows.md +0 -0
  32. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/docs/cli/pm.md +0 -0
  33. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/docs/cli/sandbox.md +0 -0
  34. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/docs/cli/sims.md +0 -0
  35. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/docs/cli/world.md +0 -0
  36. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/docs/sim-creation-pipeline.md +0 -0
  37. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/docs/skill-restructure-plan.md +0 -0
  38. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/docs/skills/sim-config/SKILL.md +0 -0
  39. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/docs/skills/sim-creator/SKILL.md +0 -0
  40. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/docs/skills/sim-flow-audit/SKILL.md +0 -0
  41. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/docs/skills/sim-flow-clear/SKILL.md +0 -0
  42. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/docs/skills/sim-flow-mutations/SKILL.md +0 -0
  43. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/docs/skills/sim-flow-run/SKILL.md +0 -0
  44. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/docs/skills/sim-research/SKILL.md +0 -0
  45. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/docs/skills/sim-review/SKILL.md +0 -0
  46. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/docs/skills/sim-sandbox-login/SKILL.md +0 -0
  47. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/docs/skills/sim-sandbox-start/SKILL.md +0 -0
  48. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/docs/skills/sim-sandbox-worker/SKILL.md +0 -0
  49. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/docs/skills/sim-snapshot/SKILL.md +0 -0
  50. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/docs/skills/sim-submit/SKILL.md +0 -0
  51. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/docs/skills/sim-validate/SKILL.md +0 -0
  52. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/docs/testcommit +0 -0
  53. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/docs/unit.sh +0 -0
  54. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/__init__.py +0 -0
  55. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/__init__.py +0 -0
  56. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/__init__.py +0 -0
  57. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/__init__.py +0 -0
  58. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/agent_artifacts/__init__.py +0 -0
  59. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/agent_artifacts/archive_agent_artifact.py +0 -0
  60. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/agent_artifacts/create_agent_artifact.py +0 -0
  61. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/agent_artifacts/get_agent_artifact_by_public_id.py +0 -0
  62. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/agent_artifacts/get_agent_artifacts.py +0 -0
  63. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/cluster/__init__.py +0 -0
  64. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/cluster/cleanup_stale_vms.py +0 -0
  65. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/cluster/get_dispatchers.py +0 -0
  66. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/cluster/get_nodes_status.py +0 -0
  67. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/cluster/get_snapshot_lineage.py +0 -0
  68. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/cluster/get_snapshots_status.py +0 -0
  69. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/cluster/pause_resume_dispatchers.py +0 -0
  70. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/cluster/prefetch_snapshot.py +0 -0
  71. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/env/__init__.py +0 -0
  72. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/env/backup.py +0 -0
  73. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/env/cleanup.py +0 -0
  74. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/env/close.py +0 -0
  75. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/env/close_async.py +0 -0
  76. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/env/create.py +0 -0
  77. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/env/create_batch.py +0 -0
  78. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/env/create_simulator.py +0 -0
  79. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/env/evaluate_session.py +0 -0
  80. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/env/generate_mutations.py +0 -0
  81. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/env/generate_mutations_single.py +0 -0
  82. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/env/get_active_session.py +0 -0
  83. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/env/get_app_sim_worker_info.py +0 -0
  84. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/env/get_cdp_url.py +0 -0
  85. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/env/get_flows.py +0 -0
  86. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/env/get_interface_worker_info.py +0 -0
  87. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/env/get_job_info.py +0 -0
  88. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/env/get_job_status.py +0 -0
  89. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/env/get_job_worker_info.py +0 -0
  90. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/env/get_proxy_url.py +0 -0
  91. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/env/get_public_url.py +0 -0
  92. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/env/get_simulator_by_name.py +0 -0
  93. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/env/get_simulators.py +0 -0
  94. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/env/get_state.py +0 -0
  95. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/env/get_worker_ready.py +0 -0
  96. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/env/log_state_mutation.py +0 -0
  97. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/env/rescore_simulator_sessions.py +0 -0
  98. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/env/reset.py +0 -0
  99. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/env/score.py +0 -0
  100. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/env/send_heartbeat.py +0 -0
  101. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/env/update_simulator.py +0 -0
  102. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/evals/__init__.py +0 -0
  103. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/evals/create_test_case_review.py +0 -0
  104. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/evals/evaluate_python.py +0 -0
  105. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/evals/get_all_test_case_reviews.py +0 -0
  106. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/evals/get_scores_by_user.py +0 -0
  107. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/evals/get_scoring.py +0 -0
  108. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/evals/get_test_case_review.py +0 -0
  109. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/evals/human_in_the_loop_scoring.py +0 -0
  110. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/evals/start_eval_from_git.py +0 -0
  111. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/gitea/__init__.py +0 -0
  112. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/gitea/create_gitea_repository.py +0 -0
  113. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/gitea/create_simulator_repository.py +0 -0
  114. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/gitea/delete_gitea_repository.py +0 -0
  115. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/gitea/get_accessible_simulators.py +0 -0
  116. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/gitea/get_gitea_credentials.py +0 -0
  117. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/gitea/get_gitea_repository.py +0 -0
  118. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/gitea/get_my_gitea_info.py +0 -0
  119. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/gitea/get_my_repositories.py +0 -0
  120. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/gitea/get_repository_branches.py +0 -0
  121. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/gitea/get_repository_contents.py +0 -0
  122. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/gitea/get_simulator_file_content.py +0 -0
  123. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/gitea/get_simulator_repository.py +0 -0
  124. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/gitea/get_simulator_repository_branches.py +0 -0
  125. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/gitea/get_simulator_repository_contents.py +0 -0
  126. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/jobs/__init__.py +0 -0
  127. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/jobs/get_job_by_id.py +0 -0
  128. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/jobs/get_jobs_by_group_id.py +0 -0
  129. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/jobs/get_keepalive_jobs.py +0 -0
  130. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/jobs/list_jobs.py +0 -0
  131. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/jobs/update_job_status.py +0 -0
  132. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/organization/__init__.py +0 -0
  133. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/organization/create_annotator_assignment.py +0 -0
  134. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/organization/create_org_api_key.py +0 -0
  135. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/organization/create_org_policy.py +0 -0
  136. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/organization/delete_org_api_key.py +0 -0
  137. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/organization/delete_org_policy.py +0 -0
  138. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/organization/get_annotator_assignments.py +0 -0
  139. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/organization/get_org_api_key_policies.py +0 -0
  140. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/organization/get_org_api_keys.py +0 -0
  141. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/organization/get_org_policies.py +0 -0
  142. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/organization/get_organization_concurrency_status.py +0 -0
  143. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/organization/get_organization_members.py +0 -0
  144. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/organization/update_annotator_assignment_stage.py +0 -0
  145. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/organization/update_organization_concurrency_limit.py +0 -0
  146. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/queue/__init__.py +0 -0
  147. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/queue/get_queue_status.py +0 -0
  148. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/queue/get_vm_detail.py +0 -0
  149. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/queue/get_vms.py +0 -0
  150. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/queue/get_workers.py +0 -0
  151. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/sandbox/__init__.py +0 -0
  152. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/sandbox/checkpoint_vm.py +0 -0
  153. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/sandbox/close_vm.py +0 -0
  154. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/sandbox/create_vm.py +0 -0
  155. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/sandbox/execute_ssh_command.py +0 -0
  156. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/sandbox/get_operation_events.py +0 -0
  157. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/sandbox/healthy_services.py +0 -0
  158. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/sandbox/healthy_worker.py +0 -0
  159. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/sandbox/save_vm_snapshot.py +0 -0
  160. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/sandbox/setup_root_access.py +0 -0
  161. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/sandbox/setup_sandbox.py +0 -0
  162. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/sandbox/start_worker.py +0 -0
  163. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/session/__init__.py +0 -0
  164. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/session/analyze_labels.py +0 -0
  165. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/session/archive_session.py +0 -0
  166. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/session/archive_session_logs_endpoint.py +0 -0
  167. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/session/create_from_labels.py +0 -0
  168. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/session/create_session_from_browser.py +0 -0
  169. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/session/create_session_from_env_recording.py +0 -0
  170. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/session/create_session_from_har.py +0 -0
  171. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/session/get_env_recording.py +0 -0
  172. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/session/get_grouped_replay_sessions.py +0 -0
  173. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/session/get_logs_status.py +0 -0
  174. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/session/get_network_requests.py +0 -0
  175. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/session/get_next_session_for_annotator.py +0 -0
  176. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/session/get_public_benchmark_sessions.py +0 -0
  177. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/session/get_replay_score_data.py +0 -0
  178. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/session/get_rrweb_actions.py +0 -0
  179. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/session/get_rrweb_events.py +0 -0
  180. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/session/get_screen_recording.py +0 -0
  181. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/session/get_session.py +0 -0
  182. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/session/get_session_replays.py +0 -0
  183. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/session/get_sessions.py +0 -0
  184. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/session/get_sessions_for_archival.py +0 -0
  185. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/session/get_ui_events.py +0 -0
  186. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/session/restore_session_logs.py +0 -0
  187. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/session/score_session_with_config.py +0 -0
  188. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/session/search_sessions_by_ids.py +0 -0
  189. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/session/set_session_output.py +0 -0
  190. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/session/update_session_public.py +0 -0
  191. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/session/update_session_testcase.py +0 -0
  192. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/simulator/__init__.py +0 -0
  193. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/simulator/add_simulator_review.py +0 -0
  194. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/simulator/batch_create_test_cases.py +0 -0
  195. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/simulator/batch_get_artifact_metadata.py +0 -0
  196. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/simulator/get_all_simulators_info.py +0 -0
  197. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/simulator/get_db_config.py +0 -0
  198. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/simulator/get_env_flows.py +0 -0
  199. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/simulator/get_plato_config.py +0 -0
  200. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/simulator/get_sessions_batch_by_job_groups.py +0 -0
  201. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/simulator/get_sessions_by_job_group.py +0 -0
  202. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/simulator/get_simulator_by_name.py +0 -0
  203. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/simulator/get_simulator_id.py +0 -0
  204. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/simulator/get_simulator_info.py +0 -0
  205. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/simulator/get_simulator_version_details.py +0 -0
  206. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/simulator/get_simulator_versions.py +0 -0
  207. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/simulator/get_start_path.py +0 -0
  208. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/simulator/get_version_by_tag.py +0 -0
  209. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/simulator/list_simulators.py +0 -0
  210. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/simulator/list_simulators_by_org.py +0 -0
  211. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/simulator/list_simulators_status.py +0 -0
  212. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/simulator/register.py +0 -0
  213. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/simulator/update_simulator.py +0 -0
  214. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/simulator/update_simulator_status.py +0 -0
  215. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/simulator/update_tag.py +0 -0
  216. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/testcases/__init__.py +0 -0
  217. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/testcases/archive_organization_test_case_assignments.py +0 -0
  218. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/testcases/archive_organization_testcase.py +0 -0
  219. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/testcases/archive_testcase.py +0 -0
  220. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/testcases/assign_testcase_to_organizations.py +0 -0
  221. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/testcases/auto_verify_testcase.py +0 -0
  222. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/testcases/bulk_archive_testcases.py +0 -0
  223. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/testcases/convert_text_to_structured_data.py +0 -0
  224. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/testcases/create_testcase.py +0 -0
  225. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/testcases/create_testcase_set.py +0 -0
  226. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/testcases/delete_testcase_set.py +0 -0
  227. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/testcases/filter_human_recorder_testcases.py +0 -0
  228. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/testcases/generate_outcome_schema.py +0 -0
  229. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/testcases/generate_prediction.py +0 -0
  230. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/testcases/generate_prediction_from_steps.py +0 -0
  231. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/testcases/generate_scoring_config_from_sessions.py +0 -0
  232. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/testcases/generate_state_mutations_config_route.py +0 -0
  233. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/testcases/get_human_recorder_tab_counts.py +0 -0
  234. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/testcases/get_human_recorder_testcases.py +0 -0
  235. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/testcases/get_merged_mutations.py +0 -0
  236. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/testcases/get_mutation_groups_for_testcase.py +0 -0
  237. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/testcases/get_next_testcase_for_scoring.py +0 -0
  238. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/testcases/get_organization_test_case_assignments.py +0 -0
  239. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/testcases/get_testcase.py +0 -0
  240. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/testcases/get_testcase_metadata_for_scoring.py +0 -0
  241. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/testcases/get_testcase_sets.py +0 -0
  242. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/testcases/get_testcases.py +0 -0
  243. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/testcases/get_testcases_in_set.py +0 -0
  244. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/testcases/mark_organization_test_case_completed.py +0 -0
  245. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/testcases/update_testcase.py +0 -0
  246. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/testcases/version_bump_testcase.py +0 -0
  247. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/__init__.py +0 -0
  248. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/agents/__init__.py +0 -0
  249. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/agents/get_agent_ecr_token.py +0 -0
  250. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/agents/get_agent_schema.py +0 -0
  251. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/agents/get_agent_versions.py +0 -0
  252. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/agents/import_agent.py +0 -0
  253. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/agents/list_docker_agents.py +0 -0
  254. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/agents/lookup_agent_version.py +0 -0
  255. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/agents/register_docker_agent.py +0 -0
  256. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/artifacts/__init__.py +0 -0
  257. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/artifacts/get_artifact.py +0 -0
  258. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/chronos/__init__.py +0 -0
  259. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/chronos/launch_job.py +0 -0
  260. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/chronos_packages/__init__.py +0 -0
  261. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/chronos_packages/get_package_versions.py +0 -0
  262. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/chronos_packages/list_chronos_packages.py +0 -0
  263. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/chronos_packages/lookup_package_version.py +0 -0
  264. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/chronos_packages/register_chronos_package.py +0 -0
  265. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/chronos_packages/upload_chronos_package.py +0 -0
  266. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/cluster/__init__.py +0 -0
  267. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/cluster/get_node_config.py +0 -0
  268. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/jobs/__init__.py +0 -0
  269. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/jobs/checkpoint.py +0 -0
  270. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/jobs/close.py +0 -0
  271. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/jobs/connect_routing_info.py +0 -0
  272. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/jobs/connect_url.py +0 -0
  273. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/jobs/disk_snapshot.py +0 -0
  274. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/jobs/execute.py +0 -0
  275. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/jobs/get_flows.py +0 -0
  276. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/jobs/get_plato_config.py +0 -0
  277. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/jobs/log_for_job.py +0 -0
  278. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/jobs/make.py +0 -0
  279. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/jobs/public_url.py +0 -0
  280. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/jobs/reset.py +0 -0
  281. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/jobs/set_date.py +0 -0
  282. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/jobs/setup_sandbox.py +0 -0
  283. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/jobs/snapshot.py +0 -0
  284. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/jobs/snapshot_store.py +0 -0
  285. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/jobs/state.py +0 -0
  286. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/jobs/wait_for_ready.py +0 -0
  287. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/pypi/__init__.py +0 -0
  288. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/pypi/download_package.py +0 -0
  289. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/pypi/get_package_schema.py +0 -0
  290. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/pypi/package_index.py +0 -0
  291. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/pypi/simple_index.py +0 -0
  292. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/pypi/upload_package.py +0 -0
  293. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/releases/__init__.py +0 -0
  294. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/releases/create.py +0 -0
  295. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/releases/deploy.py +0 -0
  296. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/releases/get.py +0 -0
  297. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/releases/handle_get_existing_public_ids.py +0 -0
  298. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/releases/handle_import.py +0 -0
  299. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/releases/list_releases.py +0 -0
  300. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/releases/prep_release_assigned_testcases.py +0 -0
  301. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/releases/update.py +0 -0
  302. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/sessions/__init__.py +0 -0
  303. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/sessions/checkpoint.py +0 -0
  304. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/sessions/close.py +0 -0
  305. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/sessions/disk_snapshot.py +0 -0
  306. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/sessions/evaluate.py +0 -0
  307. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/sessions/execute.py +0 -0
  308. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/sessions/get_connect_url.py +0 -0
  309. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/sessions/get_presigned_url.py +0 -0
  310. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/sessions/get_public_url.py +0 -0
  311. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/sessions/get_s3_content.py +0 -0
  312. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/sessions/get_session_details.py +0 -0
  313. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/sessions/get_session_documents.py +0 -0
  314. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/sessions/get_session_flows.py +0 -0
  315. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/sessions/get_session_logs.py +0 -0
  316. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/sessions/get_session_plato_config.py +0 -0
  317. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/sessions/heartbeat.py +0 -0
  318. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/sessions/list_jobs.py +0 -0
  319. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/sessions/list_sessions.py +0 -0
  320. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/sessions/log_job_mutation.py +0 -0
  321. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/sessions/make.py +0 -0
  322. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/sessions/reset.py +0 -0
  323. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/sessions/set_date.py +0 -0
  324. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/sessions/setup_sandbox.py +0 -0
  325. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/sessions/snapshot.py +0 -0
  326. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/sessions/snapshot_store.py +0 -0
  327. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/sessions/state.py +0 -0
  328. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/sessions/upload_session_documents.py +0 -0
  329. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/sessions/wait_for_ready.py +0 -0
  330. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/user/__init__.py +0 -0
  331. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/user/get_current_user.py +0 -0
  332. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/version/__init__.py +0 -0
  333. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/version/check.py +0 -0
  334. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/client.py +0 -0
  335. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/errors.py +0 -0
  336. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/models/__init__.py +0 -0
  337. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/py.typed +0 -0
  338. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_sims_generator/__init__.py +0 -0
  339. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_sims_generator/cli.py +0 -0
  340. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_sims_generator/instruction.py +0 -0
  341. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_sims_generator/parser.py +0 -0
  342. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_sims_generator/python.py +0 -0
  343. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_sims_generator/templates/instruction/helpers.py.jinja +0 -0
  344. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_sims_generator/templates/instruction/init.py.jinja +0 -0
  345. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_sims_generator/templates/python/api_init.py.jinja +0 -0
  346. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_sims_generator/templates/python/client.py.jinja +0 -0
  347. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_sims_generator/templates/python/endpoint.py.jinja +0 -0
  348. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_sims_generator/templates/python/errors.py.jinja +0 -0
  349. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_sims_generator/templates/python/package_init.py.jinja +0 -0
  350. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_sims_generator/templates/python/tag_init.py.jinja +0 -0
  351. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_sims_generator/templates/python/version_init.py.jinja +0 -0
  352. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/agents/__init__.py +0 -0
  353. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/agents/base.py +0 -0
  354. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/agents/build.py +0 -0
  355. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/agents/config.py +0 -0
  356. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/agents/logging.py +0 -0
  357. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/agents/trajectory.py +0 -0
  358. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/__init__.py +0 -0
  359. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/__init__.py +0 -0
  360. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/agents/__init__.py +0 -0
  361. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/agents/create_agent.py +0 -0
  362. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/agents/delete_agent.py +0 -0
  363. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/agents/get_agent.py +0 -0
  364. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/agents/get_agent_schema.py +0 -0
  365. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/agents/get_agent_versions.py +0 -0
  366. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/agents/list_agents.py +0 -0
  367. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/agents/lookup_agent.py +0 -0
  368. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/auth/__init__.py +0 -0
  369. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/auth/debug_auth_api_auth_debug_get.py +0 -0
  370. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/auth/get_auth_status_api_auth_status_get.py +0 -0
  371. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/auth/get_current_user_route_api_auth_me_get.py +0 -0
  372. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/callback/__init__.py +0 -0
  373. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/callback/push_agent_logs.py +0 -0
  374. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/callback/update_agent_status.py +0 -0
  375. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/callback/upload_artifacts.py +0 -0
  376. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/callback/upload_logs_zip.py +0 -0
  377. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/callback/upload_trajectory.py +0 -0
  378. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/default/__init__.py +0 -0
  379. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/default/health.py +0 -0
  380. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/jobs/__init__.py +0 -0
  381. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/jobs/launch_job.py +0 -0
  382. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/registry/__init__.py +0 -0
  383. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/registry/get_agent_schema_api_registry_agents__agent_name__schema_get.py +0 -0
  384. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/registry/get_agent_versions_api_registry_agents__agent_name__versions_get.py +0 -0
  385. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/registry/get_world_schema_api_registry_worlds__package_name__schema_get.py +0 -0
  386. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/registry/get_world_versions_api_registry_worlds__package_name__versions_get.py +0 -0
  387. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/registry/list_registry_agents_api_registry_agents_get.py +0 -0
  388. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/registry/list_registry_worlds_api_registry_worlds_get.py +0 -0
  389. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/runtimes/__init__.py +0 -0
  390. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/runtimes/create_runtime.py +0 -0
  391. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/runtimes/delete_runtime.py +0 -0
  392. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/runtimes/get_runtime.py +0 -0
  393. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/runtimes/list_runtimes.py +0 -0
  394. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/runtimes/test_runtime.py +0 -0
  395. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/secrets/__init__.py +0 -0
  396. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/secrets/create_secret.py +0 -0
  397. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/secrets/delete_secret.py +0 -0
  398. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/secrets/get_secret.py +0 -0
  399. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/secrets/list_secrets.py +0 -0
  400. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/secrets/update_secret.py +0 -0
  401. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/sessions/__init__.py +0 -0
  402. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/sessions/get_session.py +0 -0
  403. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/sessions/get_session_logs.py +0 -0
  404. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/sessions/get_session_logs_download.py +0 -0
  405. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/sessions/list_sessions.py +0 -0
  406. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/status/__init__.py +0 -0
  407. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/status/get_status_api_status_get.py +0 -0
  408. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/status/get_version_info_api_version_get.py +0 -0
  409. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/templates/__init__.py +0 -0
  410. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/templates/create_template.py +0 -0
  411. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/templates/delete_template.py +0 -0
  412. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/templates/get_template.py +0 -0
  413. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/templates/list_templates.py +0 -0
  414. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/templates/update_template.py +0 -0
  415. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/trajectories/__init__.py +0 -0
  416. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/trajectories/get_trajectory.py +0 -0
  417. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/trajectories/list_trajectories.py +0 -0
  418. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/worlds/__init__.py +0 -0
  419. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/worlds/create_world.py +0 -0
  420. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/worlds/delete_world.py +0 -0
  421. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/worlds/get_world.py +0 -0
  422. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/worlds/list_worlds.py +0 -0
  423. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/client.py +0 -0
  424. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/errors.py +0 -0
  425. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/models/__init__.py +0 -0
  426. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/py.typed +0 -0
  427. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/py.typed +0 -0
  428. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/sims/README.md +0 -0
  429. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/sims/__init__.py +0 -0
  430. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/sims/agent_helpers.py +0 -0
  431. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/sims/cli.py +0 -0
  432. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/sims/generate_clients.py +0 -0
  433. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/sims/registry.py +0 -0
  434. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/__init__.py +0 -0
  435. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/audit_ui.py +0 -0
  436. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/cli/__init__.py +0 -0
  437. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/cli/agent.py +0 -0
  438. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/cli/pm.py +0 -0
  439. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/cli/utils.py +0 -0
  440. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/cli/world.py +0 -0
  441. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/cli.py +0 -0
  442. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/config.py +0 -0
  443. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/examples/doordash_tasks.py +0 -0
  444. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/examples/loadtest.py +0 -0
  445. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/examples/test_env.py +0 -0
  446. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/examples/test_env_custom_browser.py +0 -0
  447. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/examples/test_env_sync.py +0 -0
  448. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/examples/test_reuse_env.py +0 -0
  449. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/examples/test_run.py +0 -0
  450. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/exceptions.py +0 -0
  451. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/extensions/envgen-recorder/README.md +0 -0
  452. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/extensions/envgen-recorder/api-client.js +0 -0
  453. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/extensions/envgen-recorder/background.js +0 -0
  454. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/extensions/envgen-recorder/build-sdk.js +0 -0
  455. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/extensions/envgen-recorder/content.js +0 -0
  456. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/extensions/envgen-recorder/manifest.json +0 -0
  457. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/extensions/envgen-recorder/offscreen.html +0 -0
  458. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/extensions/envgen-recorder/offscreen.js +0 -0
  459. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/extensions/envgen-recorder/options.html +0 -0
  460. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/extensions/envgen-recorder/options.js +0 -0
  461. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/extensions/envgen-recorder/package-lock.json +0 -0
  462. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/extensions/envgen-recorder/package.json +0 -0
  463. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/extensions/envgen-recorder/plato-sdk-bundle.js +0 -0
  464. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/extensions/envgen-recorder/plato-sdk-bundle.js.map +0 -0
  465. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/extensions/envgen-recorder/popup.html +0 -0
  466. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/extensions/envgen-recorder/popup.js +0 -0
  467. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/extensions/envgen-recorder/review-panel.html +0 -0
  468. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/extensions/envgen-recorder/review-panel.js +0 -0
  469. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/extensions/envgen-recorder/review-success.html +0 -0
  470. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/extensions/envgen-recorder/review-success.js +0 -0
  471. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/extensions/envgen-recorder/session-active.html +0 -0
  472. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/extensions/envgen-recorder/session-active.js +0 -0
  473. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/extensions/envgen-recorder/session-ended.html +0 -0
  474. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/extensions/envgen-recorder/session-ended.js +0 -0
  475. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/extensions/envgen-recorder/session-setup.html +0 -0
  476. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/extensions/envgen-recorder/session-setup.js +0 -0
  477. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/extensions/envgen-recorder/sessions.html +0 -0
  478. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/extensions/envgen-recorder/sessions.js +0 -0
  479. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/extensions/envgen-recorder/styles.css +0 -0
  480. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/flow_executor.py +0 -0
  481. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/models/__init__.py +0 -0
  482. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/models/build_models.py +0 -0
  483. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/models/env.py +0 -0
  484. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/models/flow.py +0 -0
  485. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/models/sandbox.py +0 -0
  486. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/models/task.py +0 -0
  487. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/sandbox_sdk.py +0 -0
  488. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/sdk.py +0 -0
  489. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/sync_env.py +0 -0
  490. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/sync_flow_executor.py +0 -0
  491. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/sync_sdk.py +0 -0
  492. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/utils/proxytunnel.py +0 -0
  493. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v2/__init__.py +0 -0
  494. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v2/async_/__init__.py +0 -0
  495. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v2/async_/artifact.py +0 -0
  496. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v2/async_/client.py +0 -0
  497. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v2/async_/environment.py +0 -0
  498. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v2/async_/flow_executor.py +0 -0
  499. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v2/async_/session.py +0 -0
  500. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v2/models.py +0 -0
  501. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v2/sync/__init__.py +0 -0
  502. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v2/sync/artifact.py +0 -0
  503. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v2/sync/client.py +0 -0
  504. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v2/sync/environment.py +0 -0
  505. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v2/sync/flow_executor.py +0 -0
  506. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v2/sync/session.py +0 -0
  507. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v2/types.py +0 -0
  508. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v2/utils/__init__.py +0 -0
  509. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v2/utils/db_cleanup.py +0 -0
  510. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v2/utils/models.py +0 -0
  511. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v2/utils/proxy_tunnel.py +0 -0
  512. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/worlds/README.md +0 -0
  513. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/worlds/__init__.py +0 -0
  514. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/worlds/base.py +0 -0
  515. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/worlds/build_hook.py +0 -0
  516. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/worlds/config.py +0 -0
  517. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/pyproject.toml +0 -0
  518. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/scripts/get_all_artifact_targets.py +0 -0
  519. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/tests/__init__.py +0 -0
  520. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/tests/integration/__init__.py +0 -0
  521. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/tests/integration/conftest.py +0 -0
  522. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/tests/integration/test_browser_agent.py +0 -0
  523. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/tests/integration/test_chronos_callback.py +0 -0
  524. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/tests/integration/test_cleanup_snapshot.py +0 -0
  525. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/tests/integration/test_code_world.py +0 -0
  526. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/tests/integration/test_harbor_agent_runner.py +0 -0
  527. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/tests/sims/__init__.py +0 -0
  528. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/tests/sims/conftest.py +0 -0
  529. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/tests/sims/test_agent_helpers.py +0 -0
  530. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/tests/test_heartbeat_keepalive.py +0 -0
  531. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/tests/test_session_serialization.py +0 -0
  532. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/tests/test_set_date.py +0 -0
  533. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/tests/test_v2_imports.py +0 -0
  534. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/tests/test_v2_multisim_integration.py +0 -0
  535. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/tests/test_v2_session.py +0 -0
  536. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/tests/test_version.py +0 -0
  537. {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: plato-sdk-v2
3
- Version: 2.3.2
3
+ Version: 2.3.4
4
4
  Summary: Python SDK for the Plato API
5
5
  Author-email: Plato <support@plato.so>
6
6
  License-Expression: MIT
@@ -45,6 +45,7 @@ Description-Content-Type: text/markdown
45
45
  # Plato Python SDK
46
46
 
47
47
 
48
+
48
49
  Python SDK for the Plato platform. Uses [Harbor](https://harborframework.com) for agent execution.
49
50
 
50
51
  ## Installation
@@ -1,6 +1,7 @@
1
1
  # Plato Python SDK
2
2
 
3
3
 
4
+
4
5
  Python SDK for the Plato platform. Uses [Harbor](https://harborframework.com) for agent execution.
5
6
 
6
7
  ## Installation
@@ -0,0 +1 @@
1
+ 2.3.4
@@ -425,9 +425,8 @@ plato sandbox start --from-config # or --simulator
425
425
 
426
426
  ### Docker Compose Not Starting
427
427
 
428
- Use the user docker socket:
429
428
  ```bash
430
- DOCKER_HOST=unix:///var/run/docker-user.sock docker compose up -d
429
+ docker compose up -d
431
430
  ```
432
431
 
433
432
  ### Login Flow Failing
@@ -343,16 +343,9 @@ ssh -F ~/.plato/ssh_42.conf sandbox-42
343
343
  ### CRITICAL: Two Docker Sockets on VM
344
344
 
345
345
  ```bash
346
- # Default socket - ONLY has plato-worker
347
- docker ps # Shows only plato-worker
348
-
349
- # App socket - has actual app containers (db, app, proxy)
350
- export DOCKER_HOST=unix:///var/run/docker-user.sock
351
- docker ps # Shows kimai-db, kimai-app, kimai-nginx, etc.
346
+ docker ps # Shows all containers including db, app, proxy
352
347
  ```
353
348
 
354
- **Always use the app socket for debugging!**
355
-
356
349
  ### Code Path on VM
357
350
 
358
351
  ```
@@ -361,7 +354,6 @@ docker ps # Shows kimai-db, kimai-app, kimai-nginx, etc.
361
354
 
362
355
  ```bash
363
356
  # On VM: iterate fast
364
- export DOCKER_HOST=unix:///var/run/docker-user.sock
365
357
  cd /home/plato/worktree/{sim_name}/base
366
358
  docker compose down && docker compose up -d
367
359
  docker compose logs -f
@@ -40,17 +40,6 @@ sim_path: "/path/to/sim"
40
40
 
41
41
  ### CRITICAL: Two Docker Sockets
42
42
 
43
- The VM has **two Docker sockets**:
44
-
45
- | Socket | Contains | When to Use |
46
- |--------|----------|-------------|
47
- | Default | `plato-worker` only | Never for debugging app |
48
- | `/var/run/docker-user.sock` | App containers (db, app, proxy) | **Always use this** |
49
-
50
- **Always export before running docker commands:**
51
- ```bash
52
- export DOCKER_HOST=unix:///var/run/docker-user.sock
53
- ```
54
43
 
55
44
  ### CRITICAL: Code Path
56
45
 
@@ -69,10 +58,7 @@ Instead, iterate directly on the VM:
69
58
  # 1. SSH into VM
70
59
  ssh -F {ssh_config} sandbox-{id}
71
60
 
72
- # 2. IMPORTANT: Use the correct Docker socket
73
- export DOCKER_HOST=unix:///var/run/docker-user.sock
74
-
75
- # 3. Go to code directory
61
+ # 2. Go to code directory
76
62
  cd /home/plato/worktree/{sim_name}/base
77
63
 
78
64
  # 4. Edit files directly
@@ -93,7 +93,6 @@ Proceed to: **sim-sandbox-login**
93
93
  ```bash
94
94
  # SSH into sandbox and check logs
95
95
  ssh -F {ssh_config} {ssh_host}
96
- export DOCKER_HOST=unix:///var/run/docker-user.sock
97
96
  docker compose logs -f
98
97
  ```
99
98
 
@@ -96,6 +96,8 @@ async def run_agent(
96
96
  f"{logs_dir}:/logs",
97
97
  "-v",
98
98
  f"{config_file.name}:/config.json:ro",
99
+ "-v",
100
+ "/var/run/docker.sock:/var/run/docker.sock",
99
101
  "-w",
100
102
  "/workspace",
101
103
  ]
@@ -11,7 +11,6 @@ from dotenv import load_dotenv
11
11
  from plato.v1.cli.agent import agent_app
12
12
  from plato.v1.cli.pm import pm_app
13
13
  from plato.v1.cli.sandbox import sandbox_app
14
- from plato.v1.cli.sim import sim_app
15
14
  from plato.v1.cli.utils import console
16
15
  from plato.v1.cli.world import world_app
17
16
 
@@ -70,7 +69,6 @@ app = typer.Typer(help="[bold blue]Plato CLI[/bold blue] - Manage Plato environm
70
69
  # Register sub-apps
71
70
  app.add_typer(sandbox_app, name="sandbox")
72
71
  app.add_typer(pm_app, name="pm")
73
- app.add_typer(sim_app, name="sim")
74
72
  app.add_typer(agent_app, name="agent")
75
73
  app.add_typer(world_app, name="world")
76
74
 
@@ -516,7 +516,6 @@ def sandbox_start(
516
516
  console.print(f" [cyan]Public URL:[/cyan] {display_url}")
517
517
  if ssh_host and ssh_config_path:
518
518
  console.print(f" [cyan]SSH:[/cyan] ssh -F {ssh_config_path} {ssh_host}")
519
- console.print(" [cyan]Docker:[/cyan] export DOCKER_HOST=unix:///var/run/docker-user.sock")
520
519
  console.print(f"\n[dim]State saved to {SANDBOX_FILE}[/dim]")
521
520
 
522
521
  except Exception as e:
@@ -1737,6 +1736,148 @@ def sandbox_state_cmd(
1737
1736
  raise typer.Exit(1)
1738
1737
 
1739
1738
 
1739
+ @sandbox_app.command(name="clear-audit")
1740
+ def sandbox_clear_audit(
1741
+ config_path: Path | None = typer.Option(None, "--config-path", help="Path to plato-config.yml"),
1742
+ dataset: str = typer.Option("base", "--dataset", "-d", help="Dataset name"),
1743
+ json_output: bool = typer.Option(False, "--json", "-j", help="Output as JSON"),
1744
+ ):
1745
+ """
1746
+ Clear the audit_log table(s) in the sandbox database.
1747
+
1748
+ Truncates all audit_log tables to reset mutation tracking. Use this after
1749
+ initial setup/login to clear any mutations before running a clean login flow.
1750
+
1751
+ REQUIRES:
1752
+
1753
+ .sandbox.yaml in current directory (created by 'plato sandbox start')
1754
+ plato-config.yml with database listener config
1755
+
1756
+ USAGE:
1757
+
1758
+ plato sandbox clear-audit # Uses plato-config.yml in cwd
1759
+ plato sandbox clear-audit -d base # Specify dataset
1760
+ plato sandbox clear-audit --json # JSON output
1761
+
1762
+ WORKFLOW POSITION:
1763
+
1764
+ 1. plato sandbox start -c
1765
+ 2. plato sandbox start-services
1766
+ 3. plato sandbox start-worker --wait
1767
+ 4. (agent does initial login/setup, generating mutations)
1768
+ 5. plato sandbox clear-audit ← you are here
1769
+ 6. plato sandbox flow ← clean login flow
1770
+ 7. plato sandbox state --verify-no-mutations ← should pass now
1771
+ 8. plato sandbox snapshot
1772
+ """
1773
+ state = require_sandbox_state()
1774
+
1775
+ # Get SSH info
1776
+ ssh_host = state.get("ssh_host")
1777
+ ssh_config_path = state.get("ssh_config_path")
1778
+
1779
+ if not ssh_host or not ssh_config_path:
1780
+ console.print("[red]❌ SSH not configured. Missing ssh_host or ssh_config_path in .sandbox.yaml[/red]")
1781
+ raise typer.Exit(1)
1782
+
1783
+ # Find plato-config.yml
1784
+ if not config_path:
1785
+ config_path = Path.cwd() / "plato-config.yml"
1786
+ if not config_path.exists():
1787
+ config_path = Path.cwd() / "plato-config.yaml"
1788
+ if not config_path.exists():
1789
+ console.print("[red]❌ plato-config.yml not found[/red]")
1790
+ raise typer.Exit(1)
1791
+
1792
+ with open(config_path) as f:
1793
+ plato_config = yaml.safe_load(f)
1794
+
1795
+ # Get dataset config
1796
+ datasets = plato_config.get("datasets", {})
1797
+ if dataset not in datasets:
1798
+ console.print(f"[red]❌ Dataset '{dataset}' not found[/red]")
1799
+ raise typer.Exit(1)
1800
+
1801
+ dataset_config = datasets[dataset]
1802
+ listeners = dataset_config.get("listeners", {})
1803
+
1804
+ # Find DB listeners
1805
+ db_listeners = []
1806
+ for name, listener in listeners.items():
1807
+ if isinstance(listener, dict) and listener.get("type") == "db":
1808
+ db_listeners.append((name, listener))
1809
+
1810
+ if not db_listeners:
1811
+ console.print("[red]❌ No database listeners found in plato-config.yml[/red]")
1812
+ console.print("[yellow]Expected: datasets.<dataset>.listeners.<name>.type = 'db'[/yellow]")
1813
+ raise typer.Exit(1)
1814
+
1815
+ results = []
1816
+
1817
+ for name, db_config in db_listeners:
1818
+ db_type = db_config.get("db_type", "postgresql").lower()
1819
+ db_host = db_config.get("db_host", "127.0.0.1")
1820
+ db_port = db_config.get("db_port", 5432 if db_type == "postgresql" else 3306)
1821
+ db_user = db_config.get("db_user", "postgres" if db_type == "postgresql" else "root")
1822
+ db_password = db_config.get("db_password", "")
1823
+ db_database = db_config.get("db_database", "postgres")
1824
+
1825
+ if not json_output:
1826
+ console.print(f"[cyan]Clearing audit_log for listener '{name}' ({db_type})...[/cyan]")
1827
+
1828
+ # Build SQL command based on db_type
1829
+ if db_type == "postgresql":
1830
+ sql_cmd = f"PGPASSWORD='{db_password}' psql -h {db_host} -p {db_port} -U {db_user} -d {db_database} -c 'TRUNCATE TABLE audit_log RESTART IDENTITY CASCADE'"
1831
+ elif db_type in ("mysql", "mariadb"):
1832
+ sql_cmd = f"mysql -h {db_host} -P {db_port} -u {db_user} -p'{db_password}' {db_database} -e 'SET FOREIGN_KEY_CHECKS=0; DELETE FROM audit_log; SET FOREIGN_KEY_CHECKS=1;'"
1833
+ else:
1834
+ if not json_output:
1835
+ console.print(f"[yellow]⚠ Unsupported db_type '{db_type}' for listener '{name}'[/yellow]")
1836
+ results.append({"listener": name, "success": False, "error": f"Unsupported db_type: {db_type}"})
1837
+ continue
1838
+
1839
+ # Run via SSH
1840
+ ret, stdout, stderr = _run_ssh_command(ssh_config_path, ssh_host, sql_cmd)
1841
+
1842
+ if ret == 0:
1843
+ if not json_output:
1844
+ console.print(f"[green]✅ Cleared audit_log for '{name}'[/green]")
1845
+ results.append({"listener": name, "success": True})
1846
+ else:
1847
+ if not json_output:
1848
+ console.print(f"[red]❌ Failed to clear audit_log for '{name}': {stderr}[/red]")
1849
+ results.append({"listener": name, "success": False, "error": stderr})
1850
+
1851
+ # Call state API to refresh in-memory mutation cache
1852
+ session_id = state.get("session_id")
1853
+ api_key = require_api_key()
1854
+ if session_id:
1855
+ if not json_output:
1856
+ console.print("[dim]Refreshing state cache...[/dim]")
1857
+ try:
1858
+ with get_http_client() as client:
1859
+ sessions_state.sync(
1860
+ client=client,
1861
+ session_id=session_id,
1862
+ x_api_key=api_key,
1863
+ )
1864
+ except Exception as e:
1865
+ if not json_output:
1866
+ console.print(f"[yellow]⚠ Failed to refresh state cache: {e}[/yellow]")
1867
+
1868
+ if json_output:
1869
+ console.print(json.dumps({"results": results}))
1870
+ else:
1871
+ # Summary
1872
+ success_count = sum(1 for r in results if r["success"])
1873
+ total = len(results)
1874
+ if success_count == total:
1875
+ console.print(f"\n[green]✅ All {total} audit logs cleared successfully[/green]")
1876
+ else:
1877
+ console.print(f"\n[yellow]⚠ {success_count}/{total} audit logs cleared[/yellow]")
1878
+ raise typer.Exit(1)
1879
+
1880
+
1740
1881
  @sandbox_app.command(name="audit-ui")
1741
1882
  def sandbox_audit_ui():
1742
1883
  """
@@ -1786,31 +1927,24 @@ def sandbox_audit_ui():
1786
1927
 
1787
1928
 
1788
1929
  def _copy_files_respecting_gitignore(src_dir: Path, dst_dir: Path) -> None:
1789
- """Copy files from src to dst respecting .gitignore rules."""
1790
- # Copy .gitignore first if it exists
1791
- gitignore_src = src_dir / ".gitignore"
1792
- if gitignore_src.exists():
1793
- gitignore_dst = dst_dir / ".gitignore"
1794
- if not gitignore_dst.exists():
1795
- shutil.copy2(gitignore_src, gitignore_dst)
1796
-
1797
- def should_copy(file_path: Path) -> bool:
1798
- """Check if file should be copied (not ignored by git)."""
1799
- base_name = file_path.name
1800
- # Skip .git directories and .plato-hub.json
1801
- if base_name.startswith(".git") or base_name == ".plato-hub.json":
1802
- return False
1803
- # Use git check-ignore to respect .gitignore rules
1804
- try:
1805
- result = subprocess.run(
1806
- ["git", "check-ignore", "-q", str(file_path)],
1807
- cwd=src_dir,
1808
- capture_output=True,
1809
- )
1810
- # git check-ignore returns 0 if path IS ignored, 1 if NOT ignored
1811
- return result.returncode != 0
1812
- except Exception:
1930
+ """Copy files from src to dst, skipping .git/ and .plato-hub.json.
1931
+
1932
+ Note: This function intentionally does NOT respect .gitignore because
1933
+ start-services needs to copy all workspace files to the VM, including
1934
+ config files that might be gitignored locally (like docker-compose.yml
1935
+ in a 'base/' directory).
1936
+ """
1937
+
1938
+ def should_skip(rel_path: Path) -> bool:
1939
+ """Check if path should be skipped."""
1940
+ parts = rel_path.parts
1941
+ # Skip anything inside .git/ directory
1942
+ if ".git" in parts:
1943
+ return True
1944
+ # Skip .plato-hub.json
1945
+ if rel_path.name == ".plato-hub.json":
1813
1946
  return True
1947
+ return False
1814
1948
 
1815
1949
  # Walk through source directory
1816
1950
  for src_path in src_dir.rglob("*"):
@@ -1820,8 +1954,8 @@ def _copy_files_respecting_gitignore(src_dir: Path, dst_dir: Path) -> None:
1820
1954
  if str(rel_path) == ".":
1821
1955
  continue
1822
1956
 
1823
- # Check if should copy
1824
- if not should_copy(src_path):
1957
+ # Check if should skip
1958
+ if should_skip(rel_path):
1825
1959
  continue
1826
1960
 
1827
1961
  dst_path = dst_dir / rel_path
@@ -2007,6 +2141,34 @@ def sandbox_start_services(
2007
2141
 
2008
2142
  try:
2009
2143
  with get_http_client() as client:
2144
+
2145
+ def start_services_on_vm(repo_dir: str) -> list[dict[str, str]]:
2146
+ """Start docker compose services on the VM."""
2147
+ services_started: list[dict[str, str]] = []
2148
+ for svc_name, svc_config in services_config.items():
2149
+ svc_type = svc_config.get("type", "")
2150
+ if svc_type == "docker-compose":
2151
+ compose_file = svc_config.get("file", "docker-compose.yml")
2152
+ compose_cmd = f"cd {repo_dir} && docker compose -f {compose_file} up -d"
2153
+
2154
+ if not json_output:
2155
+ console.print(f"[cyan] Starting docker compose service: {svc_name}...[/cyan]")
2156
+
2157
+ ret, stdout, stderr = _run_ssh_command(ssh_config_path, ssh_host, compose_cmd)
2158
+ if ret != 0:
2159
+ console.print(f"[red]❌ Failed to start service '{svc_name}': {stderr}[/red]")
2160
+ raise typer.Exit(1)
2161
+
2162
+ services_started.append({"name": svc_name, "type": "docker-compose", "file": compose_file})
2163
+ if not json_output:
2164
+ console.print(f"[green] ✓ Started docker compose service: {svc_name}[/green]")
2165
+ else:
2166
+ if not json_output:
2167
+ console.print(
2168
+ f"[yellow] ⚠ Skipped service '{svc_name}' (unknown type: {svc_type})[/yellow]"
2169
+ )
2170
+ return services_started
2171
+
2010
2172
  # Step 1: Get Gitea credentials
2011
2173
  if not json_output:
2012
2174
  console.print("[cyan]Step 1: Getting Gitea credentials...[/cyan]")
@@ -2064,6 +2226,8 @@ def sandbox_start_services(
2064
2226
  if not json_output:
2065
2227
  console.print("[cyan]Step 4: Pushing code to hub...[/cyan]")
2066
2228
 
2229
+ repo_dir = f"/home/plato/worktree/{service_name}"
2230
+
2067
2231
  with tempfile.TemporaryDirectory(prefix="plato-hub-") as temp_dir:
2068
2232
  temp_repo = Path(temp_dir) / "repo"
2069
2233
 
@@ -2148,8 +2312,6 @@ def sandbox_start_services(
2148
2312
  if not json_output:
2149
2313
  console.print("[cyan]Step 5: Cloning repo on VM...[/cyan]")
2150
2314
 
2151
- repo_dir = f"/home/plato/worktree/{service_name}"
2152
-
2153
2315
  # Create worktree directory
2154
2316
  _run_ssh_command(ssh_config_path, ssh_host, "mkdir -p /home/plato/worktree")
2155
2317
 
@@ -2170,27 +2332,7 @@ def sandbox_start_services(
2170
2332
  if not json_output:
2171
2333
  console.print("[cyan]Step 6: Starting services...[/cyan]")
2172
2334
 
2173
- services_started = []
2174
- for svc_name, svc_config in services_config.items():
2175
- svc_type = svc_config.get("type", "")
2176
- if svc_type == "docker-compose":
2177
- compose_file = svc_config.get("file", "docker-compose.yml")
2178
- compose_cmd = f"cd {repo_dir} && DOCKER_HOST=unix:///var/run/docker-user.sock docker compose -f {compose_file} up -d"
2179
-
2180
- if not json_output:
2181
- console.print(f"[cyan] Starting docker compose service: {svc_name}...[/cyan]")
2182
-
2183
- ret, stdout, stderr = _run_ssh_command(ssh_config_path, ssh_host, compose_cmd)
2184
- if ret != 0:
2185
- console.print(f"[red]❌ Failed to start service '{svc_name}': {stderr}[/red]")
2186
- raise typer.Exit(1)
2187
-
2188
- services_started.append({"name": svc_name, "type": "docker-compose", "file": compose_file})
2189
- if not json_output:
2190
- console.print(f"[green] ✓ Started docker compose service: {svc_name}[/green]")
2191
- else:
2192
- if not json_output:
2193
- console.print(f"[yellow] ⚠ Skipped service '{svc_name}' (unknown type: {svc_type})[/yellow]")
2335
+ services_started = start_services_on_vm(repo_dir)
2194
2336
 
2195
2337
  # Output results
2196
2338
  if json_output:
@@ -9,9 +9,21 @@ from cryptography.hazmat.primitives import serialization
9
9
  from cryptography.hazmat.primitives.asymmetric import ed25519
10
10
 
11
11
 
12
+ def get_plato_dir() -> Path:
13
+ """Get the directory for plato config/SSH files.
14
+
15
+ Uses /workspace/.plato if /workspace exists (container environment),
16
+ otherwise uses ~/.plato (local development).
17
+ """
18
+ workspace = Path("/workspace")
19
+ if workspace.exists() and workspace.is_dir():
20
+ return workspace / ".plato"
21
+ return Path.home() / ".plato"
22
+
23
+
12
24
  def get_next_sandbox_number() -> int:
13
- """Find next available sandbox number by checking existing config files in ~/.plato/."""
14
- plato_dir = Path.home() / ".plato"
25
+ """Find next available sandbox number by checking existing config files."""
26
+ plato_dir = get_plato_dir()
15
27
  if not plato_dir.exists():
16
28
  return 1
17
29
 
@@ -35,7 +47,7 @@ def generate_ssh_key_pair(sandbox_num: int) -> tuple[str, str]:
35
47
 
36
48
  Returns (public_key_str, private_key_path).
37
49
  """
38
- plato_dir = Path.home() / ".plato"
50
+ plato_dir = get_plato_dir()
39
51
  plato_dir.mkdir(mode=0o700, exist_ok=True)
40
52
 
41
53
  private_key_path = plato_dir / f"ssh_{sandbox_num}_key"
@@ -160,7 +172,7 @@ def create_ssh_config(
160
172
  TCPKeepAlive yes
161
173
  """
162
174
 
163
- plato_dir = Path.home() / ".plato"
175
+ plato_dir = get_plato_dir()
164
176
  plato_dir.mkdir(mode=0o700, exist_ok=True)
165
177
 
166
178
  config_path = plato_dir / f"ssh_{sandbox_num}.conf"