plato-sdk-v2 2.3.7__tar.gz → 2.3.10__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 (531) hide show
  1. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/PKG-INFO +1 -2
  2. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/README.md +0 -1
  3. plato_sdk_v2-2.3.10/VERSION +1 -0
  4. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/agents/otel.py +16 -6
  5. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/agents/runner.py +18 -5
  6. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/chronos/models/__init__.py +9 -1
  7. plato_sdk_v2-2.3.10/plato/v1/cli/chronos.py +219 -0
  8. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/v1/cli/main.py +2 -0
  9. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/v1/cli/sandbox.py +5 -2
  10. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/v1/cli/ssh.py +21 -14
  11. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/v1/cli/utils.py +32 -12
  12. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/worlds/base.py +16 -0
  13. plato_sdk_v2-2.3.7/VERSION +0 -1
  14. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/.claude/agents/sim-creator.md +0 -0
  15. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/.gitignore +0 -0
  16. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/.sandbox.yaml +0 -0
  17. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/BUILDING_SIMS.md +0 -0
  18. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/ci/CLAUDE.md +0 -0
  19. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/ci/deploy.sh +0 -0
  20. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/ci/lint.sh +0 -0
  21. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/ci/setup.sh +0 -0
  22. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/ci/version-bump.sh +0 -0
  23. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/docs/AGENT_SPEC.md +0 -0
  24. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/docs/CLI.md +0 -0
  25. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/docs/GENERATING_SIM_SDKS.md +0 -0
  26. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/docs/SIMULATOR_LIFECYCLE.md +0 -0
  27. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/docs/SIM_CREATOR.md +0 -0
  28. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/docs/cli/agent.md +0 -0
  29. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/docs/cli/flows.md +0 -0
  30. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/docs/cli/pm.md +0 -0
  31. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/docs/cli/sandbox.md +0 -0
  32. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/docs/cli/sims.md +0 -0
  33. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/docs/cli/world.md +0 -0
  34. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/docs/sim-creation-pipeline.md +0 -0
  35. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/docs/skill-restructure-plan.md +0 -0
  36. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/docs/skills/SIM-CREATION-ARCHITECTURE.md +0 -0
  37. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/docs/skills/sim-config/SKILL.md +0 -0
  38. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/docs/skills/sim-creator/SKILL.md +0 -0
  39. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/docs/skills/sim-debugger/SKILL.md +0 -0
  40. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/docs/skills/sim-flow-audit/SKILL.md +0 -0
  41. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/docs/skills/sim-flow-clear/SKILL.md +0 -0
  42. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/docs/skills/sim-flow-mutations/SKILL.md +0 -0
  43. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/docs/skills/sim-flow-run/SKILL.md +0 -0
  44. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/docs/skills/sim-research/SKILL.md +0 -0
  45. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/docs/skills/sim-review/SKILL.md +0 -0
  46. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/docs/skills/sim-sandbox-login/SKILL.md +0 -0
  47. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/docs/skills/sim-sandbox-services/SKILL.md +0 -0
  48. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/docs/skills/sim-sandbox-start/SKILL.md +0 -0
  49. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/docs/skills/sim-sandbox-worker/SKILL.md +0 -0
  50. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/docs/skills/sim-snapshot/SKILL.md +0 -0
  51. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/docs/skills/sim-submit/SKILL.md +0 -0
  52. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/docs/skills/sim-validate/SKILL.md +0 -0
  53. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/docs/testcommit +0 -0
  54. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/docs/unit.sh +0 -0
  55. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/__init__.py +0 -0
  56. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/__init__.py +0 -0
  57. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/__init__.py +0 -0
  58. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/__init__.py +0 -0
  59. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/agent_artifacts/__init__.py +0 -0
  60. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/agent_artifacts/archive_agent_artifact.py +0 -0
  61. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/agent_artifacts/create_agent_artifact.py +0 -0
  62. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/agent_artifacts/get_agent_artifact_by_public_id.py +0 -0
  63. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/agent_artifacts/get_agent_artifacts.py +0 -0
  64. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/cluster/__init__.py +0 -0
  65. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/cluster/cleanup_stale_vms.py +0 -0
  66. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/cluster/get_dispatchers.py +0 -0
  67. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/cluster/get_nodes_status.py +0 -0
  68. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/cluster/get_snapshot_lineage.py +0 -0
  69. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/cluster/get_snapshots_status.py +0 -0
  70. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/cluster/pause_resume_dispatchers.py +0 -0
  71. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/cluster/prefetch_snapshot.py +0 -0
  72. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/env/__init__.py +0 -0
  73. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/env/backup.py +0 -0
  74. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/env/cleanup.py +0 -0
  75. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/env/close.py +0 -0
  76. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/env/close_async.py +0 -0
  77. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/env/create.py +0 -0
  78. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/env/create_batch.py +0 -0
  79. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/env/create_simulator.py +0 -0
  80. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/env/evaluate_session.py +0 -0
  81. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/env/generate_mutations.py +0 -0
  82. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/env/generate_mutations_single.py +0 -0
  83. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/env/get_active_session.py +0 -0
  84. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/env/get_app_sim_worker_info.py +0 -0
  85. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/env/get_cdp_url.py +0 -0
  86. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/env/get_flows.py +0 -0
  87. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/env/get_interface_worker_info.py +0 -0
  88. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/env/get_job_info.py +0 -0
  89. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/env/get_job_status.py +0 -0
  90. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/env/get_job_worker_info.py +0 -0
  91. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/env/get_proxy_url.py +0 -0
  92. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/env/get_public_url.py +0 -0
  93. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/env/get_simulator_by_name.py +0 -0
  94. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/env/get_simulators.py +0 -0
  95. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/env/get_state.py +0 -0
  96. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/env/get_worker_ready.py +0 -0
  97. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/env/log_state_mutation.py +0 -0
  98. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/env/rescore_simulator_sessions.py +0 -0
  99. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/env/reset.py +0 -0
  100. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/env/score.py +0 -0
  101. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/env/send_heartbeat.py +0 -0
  102. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/env/update_simulator.py +0 -0
  103. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/evals/__init__.py +0 -0
  104. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/evals/create_test_case_review.py +0 -0
  105. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/evals/evaluate_python.py +0 -0
  106. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/evals/get_all_test_case_reviews.py +0 -0
  107. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/evals/get_scores_by_user.py +0 -0
  108. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/evals/get_scoring.py +0 -0
  109. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/evals/get_test_case_review.py +0 -0
  110. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/evals/human_in_the_loop_scoring.py +0 -0
  111. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/evals/start_eval_from_git.py +0 -0
  112. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/gitea/__init__.py +0 -0
  113. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/gitea/create_gitea_repository.py +0 -0
  114. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/gitea/create_simulator_repository.py +0 -0
  115. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/gitea/delete_gitea_repository.py +0 -0
  116. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/gitea/get_accessible_simulators.py +0 -0
  117. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/gitea/get_gitea_credentials.py +0 -0
  118. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/gitea/get_gitea_repository.py +0 -0
  119. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/gitea/get_my_gitea_info.py +0 -0
  120. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/gitea/get_my_repositories.py +0 -0
  121. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/gitea/get_repository_branches.py +0 -0
  122. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/gitea/get_repository_contents.py +0 -0
  123. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/gitea/get_simulator_file_content.py +0 -0
  124. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/gitea/get_simulator_repository.py +0 -0
  125. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/gitea/get_simulator_repository_branches.py +0 -0
  126. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/gitea/get_simulator_repository_contents.py +0 -0
  127. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/jobs/__init__.py +0 -0
  128. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/jobs/get_job_by_id.py +0 -0
  129. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/jobs/get_jobs_by_group_id.py +0 -0
  130. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/jobs/get_keepalive_jobs.py +0 -0
  131. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/jobs/list_jobs.py +0 -0
  132. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/jobs/update_job_status.py +0 -0
  133. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/organization/__init__.py +0 -0
  134. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/organization/create_annotator_assignment.py +0 -0
  135. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/organization/create_org_api_key.py +0 -0
  136. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/organization/create_org_policy.py +0 -0
  137. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/organization/delete_org_api_key.py +0 -0
  138. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/organization/delete_org_policy.py +0 -0
  139. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/organization/get_annotator_assignments.py +0 -0
  140. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/organization/get_org_api_key_policies.py +0 -0
  141. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/organization/get_org_api_keys.py +0 -0
  142. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/organization/get_org_policies.py +0 -0
  143. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/organization/get_organization_concurrency_status.py +0 -0
  144. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/organization/get_organization_members.py +0 -0
  145. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/organization/update_annotator_assignment_stage.py +0 -0
  146. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/organization/update_organization_concurrency_limit.py +0 -0
  147. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/queue/__init__.py +0 -0
  148. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/queue/get_queue_status.py +0 -0
  149. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/queue/get_vm_detail.py +0 -0
  150. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/queue/get_vms.py +0 -0
  151. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/queue/get_workers.py +0 -0
  152. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/sandbox/__init__.py +0 -0
  153. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/sandbox/checkpoint_vm.py +0 -0
  154. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/sandbox/close_vm.py +0 -0
  155. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/sandbox/create_vm.py +0 -0
  156. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/sandbox/execute_ssh_command.py +0 -0
  157. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/sandbox/get_operation_events.py +0 -0
  158. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/sandbox/healthy_services.py +0 -0
  159. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/sandbox/healthy_worker.py +0 -0
  160. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/sandbox/save_vm_snapshot.py +0 -0
  161. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/sandbox/setup_root_access.py +0 -0
  162. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/sandbox/setup_sandbox.py +0 -0
  163. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/sandbox/start_worker.py +0 -0
  164. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/session/__init__.py +0 -0
  165. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/session/analyze_labels.py +0 -0
  166. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/session/archive_session.py +0 -0
  167. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/session/archive_session_logs_endpoint.py +0 -0
  168. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/session/create_from_labels.py +0 -0
  169. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/session/create_session_from_browser.py +0 -0
  170. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/session/create_session_from_env_recording.py +0 -0
  171. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/session/create_session_from_har.py +0 -0
  172. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/session/get_env_recording.py +0 -0
  173. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/session/get_grouped_replay_sessions.py +0 -0
  174. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/session/get_logs_status.py +0 -0
  175. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/session/get_network_requests.py +0 -0
  176. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/session/get_next_session_for_annotator.py +0 -0
  177. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/session/get_public_benchmark_sessions.py +0 -0
  178. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/session/get_replay_score_data.py +0 -0
  179. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/session/get_rrweb_actions.py +0 -0
  180. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/session/get_rrweb_events.py +0 -0
  181. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/session/get_screen_recording.py +0 -0
  182. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/session/get_session.py +0 -0
  183. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/session/get_session_replays.py +0 -0
  184. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/session/get_sessions.py +0 -0
  185. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/session/get_sessions_for_archival.py +0 -0
  186. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/session/get_ui_events.py +0 -0
  187. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/session/restore_session_logs.py +0 -0
  188. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/session/score_session_with_config.py +0 -0
  189. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/session/search_sessions_by_ids.py +0 -0
  190. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/session/set_session_output.py +0 -0
  191. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/session/update_session_public.py +0 -0
  192. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/session/update_session_testcase.py +0 -0
  193. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/simulator/__init__.py +0 -0
  194. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/simulator/add_simulator_review.py +0 -0
  195. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/simulator/batch_create_test_cases.py +0 -0
  196. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/simulator/batch_get_artifact_metadata.py +0 -0
  197. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/simulator/get_all_simulators_info.py +0 -0
  198. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/simulator/get_db_config.py +0 -0
  199. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/simulator/get_env_flows.py +0 -0
  200. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/simulator/get_plato_config.py +0 -0
  201. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/simulator/get_sessions_batch_by_job_groups.py +0 -0
  202. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/simulator/get_sessions_by_job_group.py +0 -0
  203. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/simulator/get_simulator_by_name.py +0 -0
  204. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/simulator/get_simulator_id.py +0 -0
  205. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/simulator/get_simulator_info.py +0 -0
  206. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/simulator/get_simulator_version_details.py +0 -0
  207. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/simulator/get_simulator_versions.py +0 -0
  208. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/simulator/get_start_path.py +0 -0
  209. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/simulator/get_version_by_tag.py +0 -0
  210. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/simulator/list_simulators.py +0 -0
  211. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/simulator/list_simulators_by_org.py +0 -0
  212. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/simulator/list_simulators_status.py +0 -0
  213. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/simulator/register.py +0 -0
  214. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/simulator/update_simulator.py +0 -0
  215. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/simulator/update_simulator_status.py +0 -0
  216. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/simulator/update_tag.py +0 -0
  217. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/testcases/__init__.py +0 -0
  218. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/testcases/archive_organization_test_case_assignments.py +0 -0
  219. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/testcases/archive_organization_testcase.py +0 -0
  220. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/testcases/archive_testcase.py +0 -0
  221. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/testcases/assign_testcase_to_organizations.py +0 -0
  222. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/testcases/auto_verify_testcase.py +0 -0
  223. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/testcases/bulk_archive_testcases.py +0 -0
  224. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/testcases/convert_text_to_structured_data.py +0 -0
  225. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/testcases/create_testcase.py +0 -0
  226. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/testcases/create_testcase_set.py +0 -0
  227. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/testcases/delete_testcase_set.py +0 -0
  228. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/testcases/filter_human_recorder_testcases.py +0 -0
  229. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/testcases/generate_outcome_schema.py +0 -0
  230. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/testcases/generate_prediction.py +0 -0
  231. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/testcases/generate_prediction_from_steps.py +0 -0
  232. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/testcases/generate_scoring_config_from_sessions.py +0 -0
  233. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/testcases/generate_state_mutations_config_route.py +0 -0
  234. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/testcases/get_human_recorder_tab_counts.py +0 -0
  235. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/testcases/get_human_recorder_testcases.py +0 -0
  236. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/testcases/get_merged_mutations.py +0 -0
  237. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/testcases/get_mutation_groups_for_testcase.py +0 -0
  238. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/testcases/get_next_testcase_for_scoring.py +0 -0
  239. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/testcases/get_organization_test_case_assignments.py +0 -0
  240. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/testcases/get_testcase.py +0 -0
  241. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/testcases/get_testcase_metadata_for_scoring.py +0 -0
  242. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/testcases/get_testcase_sets.py +0 -0
  243. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/testcases/get_testcases.py +0 -0
  244. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/testcases/get_testcases_in_set.py +0 -0
  245. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/testcases/mark_organization_test_case_completed.py +0 -0
  246. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/testcases/update_testcase.py +0 -0
  247. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v1/testcases/version_bump_testcase.py +0 -0
  248. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v2/__init__.py +0 -0
  249. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v2/agents/__init__.py +0 -0
  250. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v2/agents/get_agent_ecr_token.py +0 -0
  251. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v2/agents/get_agent_schema.py +0 -0
  252. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v2/agents/get_agent_versions.py +0 -0
  253. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v2/agents/import_agent.py +0 -0
  254. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v2/agents/list_docker_agents.py +0 -0
  255. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v2/agents/lookup_agent_version.py +0 -0
  256. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v2/agents/register_docker_agent.py +0 -0
  257. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v2/artifacts/__init__.py +0 -0
  258. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v2/artifacts/get_artifact.py +0 -0
  259. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v2/chronos/__init__.py +0 -0
  260. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v2/chronos/launch_job.py +0 -0
  261. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v2/chronos_packages/__init__.py +0 -0
  262. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v2/chronos_packages/get_package_versions.py +0 -0
  263. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v2/chronos_packages/list_chronos_packages.py +0 -0
  264. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v2/chronos_packages/lookup_package_version.py +0 -0
  265. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v2/chronos_packages/register_chronos_package.py +0 -0
  266. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v2/chronos_packages/upload_chronos_package.py +0 -0
  267. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v2/cluster/__init__.py +0 -0
  268. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v2/cluster/get_node_config.py +0 -0
  269. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v2/jobs/__init__.py +0 -0
  270. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v2/jobs/checkpoint.py +0 -0
  271. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v2/jobs/close.py +0 -0
  272. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v2/jobs/connect_routing_info.py +0 -0
  273. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v2/jobs/connect_url.py +0 -0
  274. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v2/jobs/disk_snapshot.py +0 -0
  275. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v2/jobs/execute.py +0 -0
  276. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v2/jobs/get_flows.py +0 -0
  277. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v2/jobs/get_plato_config.py +0 -0
  278. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v2/jobs/log_for_job.py +0 -0
  279. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v2/jobs/make.py +0 -0
  280. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v2/jobs/public_url.py +0 -0
  281. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v2/jobs/reset.py +0 -0
  282. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v2/jobs/set_date.py +0 -0
  283. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v2/jobs/setup_sandbox.py +0 -0
  284. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v2/jobs/snapshot.py +0 -0
  285. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v2/jobs/snapshot_store.py +0 -0
  286. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v2/jobs/state.py +0 -0
  287. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v2/jobs/wait_for_ready.py +0 -0
  288. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v2/pypi/__init__.py +0 -0
  289. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v2/pypi/download_package.py +0 -0
  290. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v2/pypi/get_package_schema.py +0 -0
  291. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v2/pypi/package_index.py +0 -0
  292. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v2/pypi/simple_index.py +0 -0
  293. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v2/pypi/upload_package.py +0 -0
  294. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v2/releases/__init__.py +0 -0
  295. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v2/releases/create.py +0 -0
  296. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v2/releases/deploy.py +0 -0
  297. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v2/releases/get.py +0 -0
  298. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v2/releases/handle_get_existing_public_ids.py +0 -0
  299. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v2/releases/handle_import.py +0 -0
  300. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v2/releases/list_releases.py +0 -0
  301. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v2/releases/prep_release_assigned_testcases.py +0 -0
  302. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v2/releases/update.py +0 -0
  303. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v2/sessions/__init__.py +0 -0
  304. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v2/sessions/checkpoint.py +0 -0
  305. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v2/sessions/close.py +0 -0
  306. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v2/sessions/disk_snapshot.py +0 -0
  307. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v2/sessions/evaluate.py +0 -0
  308. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v2/sessions/execute.py +0 -0
  309. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v2/sessions/get_connect_url.py +0 -0
  310. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v2/sessions/get_presigned_url.py +0 -0
  311. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v2/sessions/get_public_url.py +0 -0
  312. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v2/sessions/get_s3_content.py +0 -0
  313. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v2/sessions/get_session_details.py +0 -0
  314. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v2/sessions/get_session_documents.py +0 -0
  315. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v2/sessions/get_session_flows.py +0 -0
  316. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v2/sessions/get_session_logs.py +0 -0
  317. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v2/sessions/get_session_plato_config.py +0 -0
  318. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v2/sessions/heartbeat.py +0 -0
  319. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v2/sessions/list_jobs.py +0 -0
  320. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v2/sessions/list_sessions.py +0 -0
  321. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v2/sessions/log_job_mutation.py +0 -0
  322. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v2/sessions/make.py +0 -0
  323. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v2/sessions/reset.py +0 -0
  324. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v2/sessions/set_date.py +0 -0
  325. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v2/sessions/setup_sandbox.py +0 -0
  326. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v2/sessions/snapshot.py +0 -0
  327. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v2/sessions/snapshot_store.py +0 -0
  328. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v2/sessions/state.py +0 -0
  329. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v2/sessions/upload_session_documents.py +0 -0
  330. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v2/sessions/wait_for_ready.py +0 -0
  331. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v2/user/__init__.py +0 -0
  332. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/v2/user/get_current_user.py +0 -0
  333. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/version/__init__.py +0 -0
  334. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/api/version/check.py +0 -0
  335. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/client.py +0 -0
  336. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/errors.py +0 -0
  337. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/models/__init__.py +0 -0
  338. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_generated/py.typed +0 -0
  339. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_sims_generator/__init__.py +0 -0
  340. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_sims_generator/cli.py +0 -0
  341. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_sims_generator/instruction.py +0 -0
  342. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_sims_generator/parser.py +0 -0
  343. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_sims_generator/python.py +0 -0
  344. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_sims_generator/templates/instruction/helpers.py.jinja +0 -0
  345. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_sims_generator/templates/instruction/init.py.jinja +0 -0
  346. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_sims_generator/templates/python/api_init.py.jinja +0 -0
  347. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_sims_generator/templates/python/client.py.jinja +0 -0
  348. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_sims_generator/templates/python/endpoint.py.jinja +0 -0
  349. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_sims_generator/templates/python/errors.py.jinja +0 -0
  350. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_sims_generator/templates/python/package_init.py.jinja +0 -0
  351. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_sims_generator/templates/python/tag_init.py.jinja +0 -0
  352. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/_sims_generator/templates/python/version_init.py.jinja +0 -0
  353. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/agents/__init__.py +0 -0
  354. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/agents/artifacts.py +0 -0
  355. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/agents/base.py +0 -0
  356. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/agents/build.py +0 -0
  357. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/agents/config.py +0 -0
  358. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/agents/trajectory.py +0 -0
  359. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/chronos/__init__.py +0 -0
  360. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/chronos/api/__init__.py +0 -0
  361. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/chronos/api/agents/__init__.py +0 -0
  362. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/chronos/api/agents/create_agent.py +0 -0
  363. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/chronos/api/agents/delete_agent.py +0 -0
  364. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/chronos/api/agents/get_agent.py +0 -0
  365. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/chronos/api/agents/get_agent_schema.py +0 -0
  366. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/chronos/api/agents/get_agent_versions.py +0 -0
  367. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/chronos/api/agents/list_agents.py +0 -0
  368. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/chronos/api/agents/lookup_agent.py +0 -0
  369. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/chronos/api/auth/__init__.py +0 -0
  370. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/chronos/api/auth/debug_auth_api_auth_debug_get.py +0 -0
  371. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/chronos/api/auth/get_auth_status_api_auth_status_get.py +0 -0
  372. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/chronos/api/auth/get_current_user_route_api_auth_me_get.py +0 -0
  373. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/chronos/api/default/__init__.py +0 -0
  374. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/chronos/api/default/health.py +0 -0
  375. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/chronos/api/jobs/__init__.py +0 -0
  376. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/chronos/api/jobs/launch_job.py +0 -0
  377. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/chronos/api/registry/__init__.py +0 -0
  378. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/chronos/api/registry/get_agent_schema_api_registry_agents__agent_name__schema_get.py +0 -0
  379. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/chronos/api/registry/get_agent_versions_api_registry_agents__agent_name__versions_get.py +0 -0
  380. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/chronos/api/registry/get_world_schema_api_registry_worlds__package_name__schema_get.py +0 -0
  381. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/chronos/api/registry/get_world_versions_api_registry_worlds__package_name__versions_get.py +0 -0
  382. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/chronos/api/registry/list_registry_agents_api_registry_agents_get.py +0 -0
  383. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/chronos/api/registry/list_registry_worlds_api_registry_worlds_get.py +0 -0
  384. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/chronos/api/runtimes/__init__.py +0 -0
  385. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/chronos/api/runtimes/create_runtime.py +0 -0
  386. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/chronos/api/runtimes/delete_runtime.py +0 -0
  387. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/chronos/api/runtimes/get_runtime.py +0 -0
  388. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/chronos/api/runtimes/list_runtimes.py +0 -0
  389. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/chronos/api/runtimes/test_runtime.py +0 -0
  390. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/chronos/api/secrets/__init__.py +0 -0
  391. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/chronos/api/secrets/create_secret.py +0 -0
  392. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/chronos/api/secrets/delete_secret.py +0 -0
  393. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/chronos/api/secrets/get_secret.py +0 -0
  394. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/chronos/api/secrets/list_secrets.py +0 -0
  395. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/chronos/api/secrets/update_secret.py +0 -0
  396. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/chronos/api/sessions/__init__.py +0 -0
  397. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/chronos/api/sessions/get_session.py +0 -0
  398. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/chronos/api/sessions/get_session_logs.py +0 -0
  399. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/chronos/api/sessions/get_session_logs_download.py +0 -0
  400. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/chronos/api/sessions/list_sessions.py +0 -0
  401. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/chronos/api/status/__init__.py +0 -0
  402. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/chronos/api/status/get_status_api_status_get.py +0 -0
  403. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/chronos/api/status/get_version_info_api_version_get.py +0 -0
  404. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/chronos/api/templates/__init__.py +0 -0
  405. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/chronos/api/templates/create_template.py +0 -0
  406. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/chronos/api/templates/delete_template.py +0 -0
  407. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/chronos/api/templates/get_template.py +0 -0
  408. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/chronos/api/templates/list_templates.py +0 -0
  409. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/chronos/api/templates/update_template.py +0 -0
  410. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/chronos/api/trajectories/__init__.py +0 -0
  411. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/chronos/api/trajectories/get_trajectory.py +0 -0
  412. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/chronos/api/trajectories/list_trajectories.py +0 -0
  413. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/chronos/api/worlds/__init__.py +0 -0
  414. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/chronos/api/worlds/create_world.py +0 -0
  415. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/chronos/api/worlds/delete_world.py +0 -0
  416. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/chronos/api/worlds/get_world.py +0 -0
  417. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/chronos/api/worlds/list_worlds.py +0 -0
  418. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/chronos/client.py +0 -0
  419. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/chronos/errors.py +0 -0
  420. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/chronos/py.typed +0 -0
  421. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/py.typed +0 -0
  422. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/sims/README.md +0 -0
  423. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/sims/__init__.py +0 -0
  424. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/sims/agent_helpers.py +0 -0
  425. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/sims/cli.py +0 -0
  426. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/sims/generate_clients.py +0 -0
  427. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/sims/registry.py +0 -0
  428. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/v1/__init__.py +0 -0
  429. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/v1/audit_ui.py +0 -0
  430. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/v1/cli/__init__.py +0 -0
  431. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/v1/cli/agent.py +0 -0
  432. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/v1/cli/pm.py +0 -0
  433. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/v1/cli/verify.py +0 -0
  434. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/v1/cli/world.py +0 -0
  435. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/v1/cli.py +0 -0
  436. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/v1/config.py +0 -0
  437. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/v1/examples/doordash_tasks.py +0 -0
  438. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/v1/examples/loadtest.py +0 -0
  439. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/v1/examples/test_env.py +0 -0
  440. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/v1/examples/test_env_custom_browser.py +0 -0
  441. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/v1/examples/test_env_sync.py +0 -0
  442. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/v1/examples/test_reuse_env.py +0 -0
  443. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/v1/examples/test_run.py +0 -0
  444. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/v1/exceptions.py +0 -0
  445. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/v1/extensions/envgen-recorder/README.md +0 -0
  446. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/v1/extensions/envgen-recorder/api-client.js +0 -0
  447. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/v1/extensions/envgen-recorder/background.js +0 -0
  448. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/v1/extensions/envgen-recorder/build-sdk.js +0 -0
  449. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/v1/extensions/envgen-recorder/content.js +0 -0
  450. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/v1/extensions/envgen-recorder/manifest.json +0 -0
  451. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/v1/extensions/envgen-recorder/offscreen.html +0 -0
  452. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/v1/extensions/envgen-recorder/offscreen.js +0 -0
  453. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/v1/extensions/envgen-recorder/options.html +0 -0
  454. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/v1/extensions/envgen-recorder/options.js +0 -0
  455. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/v1/extensions/envgen-recorder/package-lock.json +0 -0
  456. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/v1/extensions/envgen-recorder/package.json +0 -0
  457. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/v1/extensions/envgen-recorder/plato-sdk-bundle.js +0 -0
  458. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/v1/extensions/envgen-recorder/plato-sdk-bundle.js.map +0 -0
  459. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/v1/extensions/envgen-recorder/popup.html +0 -0
  460. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/v1/extensions/envgen-recorder/popup.js +0 -0
  461. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/v1/extensions/envgen-recorder/review-panel.html +0 -0
  462. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/v1/extensions/envgen-recorder/review-panel.js +0 -0
  463. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/v1/extensions/envgen-recorder/review-success.html +0 -0
  464. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/v1/extensions/envgen-recorder/review-success.js +0 -0
  465. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/v1/extensions/envgen-recorder/session-active.html +0 -0
  466. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/v1/extensions/envgen-recorder/session-active.js +0 -0
  467. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/v1/extensions/envgen-recorder/session-ended.html +0 -0
  468. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/v1/extensions/envgen-recorder/session-ended.js +0 -0
  469. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/v1/extensions/envgen-recorder/session-setup.html +0 -0
  470. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/v1/extensions/envgen-recorder/session-setup.js +0 -0
  471. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/v1/extensions/envgen-recorder/sessions.html +0 -0
  472. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/v1/extensions/envgen-recorder/sessions.js +0 -0
  473. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/v1/extensions/envgen-recorder/styles.css +0 -0
  474. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/v1/flow_executor.py +0 -0
  475. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/v1/models/__init__.py +0 -0
  476. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/v1/models/build_models.py +0 -0
  477. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/v1/models/env.py +0 -0
  478. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/v1/models/flow.py +0 -0
  479. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/v1/models/sandbox.py +0 -0
  480. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/v1/models/task.py +0 -0
  481. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/v1/sandbox_sdk.py +0 -0
  482. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/v1/sdk.py +0 -0
  483. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/v1/sync_env.py +0 -0
  484. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/v1/sync_flow_executor.py +0 -0
  485. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/v1/sync_sdk.py +0 -0
  486. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/v1/utils/proxytunnel.py +0 -0
  487. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/v2/__init__.py +0 -0
  488. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/v2/async_/__init__.py +0 -0
  489. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/v2/async_/artifact.py +0 -0
  490. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/v2/async_/client.py +0 -0
  491. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/v2/async_/environment.py +0 -0
  492. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/v2/async_/flow_executor.py +0 -0
  493. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/v2/async_/session.py +0 -0
  494. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/v2/models.py +0 -0
  495. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/v2/sync/__init__.py +0 -0
  496. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/v2/sync/artifact.py +0 -0
  497. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/v2/sync/client.py +0 -0
  498. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/v2/sync/environment.py +0 -0
  499. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/v2/sync/flow_executor.py +0 -0
  500. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/v2/sync/session.py +0 -0
  501. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/v2/types.py +0 -0
  502. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/v2/utils/__init__.py +0 -0
  503. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/v2/utils/db_cleanup.py +0 -0
  504. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/v2/utils/models.py +0 -0
  505. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/v2/utils/proxy_tunnel.py +0 -0
  506. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/worlds/README.md +0 -0
  507. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/worlds/__init__.py +0 -0
  508. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/worlds/build_hook.py +0 -0
  509. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/worlds/config.py +0 -0
  510. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/plato/worlds/runner.py +0 -0
  511. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/pyproject.toml +0 -0
  512. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/scripts/get_all_artifact_targets.py +0 -0
  513. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/tests/__init__.py +0 -0
  514. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/tests/integration/__init__.py +0 -0
  515. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/tests/integration/conftest.py +0 -0
  516. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/tests/integration/test_browser_agent.py +0 -0
  517. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/tests/integration/test_chronos_callback.py +0 -0
  518. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/tests/integration/test_cleanup_snapshot.py +0 -0
  519. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/tests/integration/test_code_world.py +0 -0
  520. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/tests/integration/test_harbor_agent_runner.py +0 -0
  521. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/tests/sims/__init__.py +0 -0
  522. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/tests/sims/conftest.py +0 -0
  523. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/tests/sims/test_agent_helpers.py +0 -0
  524. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/tests/test_heartbeat_keepalive.py +0 -0
  525. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/tests/test_session_serialization.py +0 -0
  526. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/tests/test_set_date.py +0 -0
  527. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/tests/test_v2_imports.py +0 -0
  528. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/tests/test_v2_multisim_integration.py +0 -0
  529. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/tests/test_v2_session.py +0 -0
  530. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/tests/test_version.py +0 -0
  531. {plato_sdk_v2-2.3.7 → plato_sdk_v2-2.3.10}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: plato-sdk-v2
3
- Version: 2.3.7
3
+ Version: 2.3.10
4
4
  Summary: Python SDK for the Plato API
5
5
  Author-email: Plato <support@plato.so>
6
6
  License-Expression: MIT
@@ -47,7 +47,6 @@ Description-Content-Type: text/markdown
47
47
 
48
48
  # Plato Python SDK
49
49
 
50
-
51
50
  Python SDK for the Plato platform. Uses [Harbor](https://harborframework.com) for agent execution.
52
51
 
53
52
  ## Installation
@@ -1,6 +1,5 @@
1
1
  # Plato Python SDK
2
2
 
3
-
4
3
  Python SDK for the Plato platform. Uses [Harbor](https://harborframework.com) for agent execution.
5
4
 
6
5
  ## Installation
@@ -0,0 +1 @@
1
+ 2.3.10
@@ -51,6 +51,8 @@ class OTelSpanLogHandler(logging.Handler):
51
51
  def emit(self, record: logging.LogRecord) -> None:
52
52
  """Emit a log record as an OTel span."""
53
53
  try:
54
+ # Debug: print that we're emitting a log span
55
+ print(f"[OTel] Emitting log span: {record.name} - {record.getMessage()[:100]}")
54
56
  # Create a span for the log message
55
57
  with self.tracer.start_as_current_span(f"log.{record.levelname.lower()}") as span:
56
58
  span.set_attribute("log.level", record.levelname)
@@ -137,13 +139,18 @@ def init_tracing(
137
139
  context_api.attach(ctx)
138
140
  print(f"[OTel] Using parent context: trace_id={parent_trace_id}, span_id={parent_span_id}")
139
141
 
140
- # Add OTel logging handler to capture world logs
142
+ # Add OTel logging handler to capture logs from plato SDK
141
143
  tracer = trace.get_tracer(service_name)
142
144
  _log_handler = OTelSpanLogHandler(tracer, level=logging.INFO)
143
145
 
144
- # Add handler to plato.worlds loggers
145
- plato_worlds_logger = logging.getLogger("plato.worlds")
146
- plato_worlds_logger.addHandler(_log_handler)
146
+ # Add handler to plato loggers (worlds and agents)
147
+ # Set level to INFO to ensure logs propagate from child loggers
148
+ plato_logger = logging.getLogger("plato")
149
+ plato_logger.setLevel(logging.INFO)
150
+ plato_logger.addHandler(_log_handler)
151
+ print(
152
+ f"[OTel] Added log handler to 'plato' logger (level={plato_logger.level}, handlers={len(plato_logger.handlers)})"
153
+ )
147
154
 
148
155
  _initialized = True
149
156
 
@@ -164,8 +171,8 @@ def shutdown_tracing() -> None:
164
171
  # Remove log handler
165
172
  if _log_handler:
166
173
  try:
167
- plato_worlds_logger = logging.getLogger("plato.worlds")
168
- plato_worlds_logger.removeHandler(_log_handler)
174
+ plato_logger = logging.getLogger("plato")
175
+ plato_logger.removeHandler(_log_handler)
169
176
  except Exception:
170
177
  pass
171
178
  _log_handler = None
@@ -222,8 +229,11 @@ def instrument(service_name: str = "plato-agent") -> Tracer:
222
229
  parent_trace_id = os.environ.get("OTEL_TRACE_ID")
223
230
  parent_span_id = os.environ.get("OTEL_PARENT_SPAN_ID")
224
231
 
232
+ print(f"[OTel] instrument() called: service={service_name}, endpoint={otel_endpoint}, session={session_id}")
233
+
225
234
  if not otel_endpoint:
226
235
  # Return default tracer (no-op if no provider configured)
236
+ print("[OTel] No OTEL_EXPORTER_OTLP_ENDPOINT set, returning no-op tracer")
227
237
  return trace.get_tracer(service_name)
228
238
 
229
239
  # Initialize tracing with parent context if provided
@@ -152,21 +152,34 @@ async def run_agent(
152
152
  docker_cmd.extend(["--instruction", instruction])
153
153
 
154
154
  # Run container - agents emit their own OTel spans
155
+ # Use large limit to handle agents that output long lines (e.g., JSON with file contents)
155
156
  process = await asyncio.create_subprocess_exec(
156
157
  *docker_cmd,
157
158
  stdout=asyncio.subprocess.PIPE,
158
159
  stderr=asyncio.subprocess.STDOUT,
160
+ limit=100 * 1024 * 1024, # 100MB buffer limit
159
161
  )
160
162
 
161
- # Capture output for error reporting
163
+ # Capture output for error reporting using chunked reads to handle large lines
162
164
  output_lines: list[str] = []
163
165
  assert process.stdout is not None
166
+ buffer = ""
164
167
  while True:
165
- line = await process.stdout.readline()
166
- if not line:
168
+ try:
169
+ chunk = await process.stdout.read(65536)
170
+ except Exception:
171
+ break
172
+ if not chunk:
167
173
  break
168
- decoded_line = line.decode().rstrip()
169
- output_lines.append(decoded_line)
174
+ buffer += chunk.decode(errors="replace")
175
+
176
+ while "\n" in buffer:
177
+ line, buffer = buffer.split("\n", 1)
178
+ output_lines.append(line)
179
+
180
+ # Handle any remaining content in buffer
181
+ if buffer.strip():
182
+ output_lines.append(buffer)
170
183
 
171
184
  await process.wait()
172
185
 
@@ -10,10 +10,18 @@ from pydantic import AwareDatetime, BaseModel, ConfigDict, Field
10
10
 
11
11
 
12
12
  class AgentConfig(BaseModel):
13
+ """Agent config - supports multiple formats.
14
+
15
+ New format: agent + version (version optional, defaults to latest)
16
+ Legacy format: agent_id (public_id)
17
+ """
18
+
13
19
  model_config = ConfigDict(
14
20
  extra="allow",
15
21
  )
16
- agent_id: Annotated[str, Field(title="Agent Id")]
22
+ agent: Annotated[str | None, Field(title="Agent")] = None
23
+ version: Annotated[str | None, Field(title="Version")] = None
24
+ agent_id: Annotated[str | None, Field(title="Agent Id")] = None # backwards compat
17
25
  config: Annotated[dict[str, Any] | None, Field(title="Config")] = {}
18
26
 
19
27
 
@@ -0,0 +1,219 @@
1
+ """Plato Chronos CLI - Launch and manage Chronos jobs."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import json
6
+ from pathlib import Path
7
+
8
+ import typer
9
+
10
+ from plato.v1.cli.utils import console
11
+
12
+ chronos_app = typer.Typer(help="Chronos job management commands.")
13
+
14
+
15
+ @chronos_app.command()
16
+ def launch(
17
+ config: Path = typer.Argument(
18
+ ...,
19
+ help="Path to job config JSON file",
20
+ exists=True,
21
+ readable=True,
22
+ ),
23
+ chronos_url: str = typer.Option(
24
+ None,
25
+ "--url",
26
+ "-u",
27
+ envvar="CHRONOS_URL",
28
+ help="Chronos API URL (default: https://chronos.plato.so)",
29
+ ),
30
+ api_key: str = typer.Option(
31
+ None,
32
+ "--api-key",
33
+ "-k",
34
+ envvar="PLATO_API_KEY",
35
+ help="Plato API key for authentication",
36
+ ),
37
+ wait: bool = typer.Option(
38
+ False,
39
+ "--wait",
40
+ "-w",
41
+ help="Wait for job completion and stream logs",
42
+ ),
43
+ ):
44
+ """
45
+ Launch a Chronos job from a config file.
46
+
47
+ The config file should be a JSON file with the following structure:
48
+
49
+ \b
50
+ {
51
+ "world_package": "plato-world-structured-execution",
52
+ "world_version": "0.1.13", // optional, uses latest if not specified
53
+ "world_config": { ... },
54
+ "agent_configs": {
55
+ "skill_runner": {
56
+ "agent_id": "claude-code:2.1.5",
57
+ "config": { ... }
58
+ }
59
+ },
60
+ "secret_ids": [1, 2, 3] // IDs of secrets from Chronos
61
+ }
62
+
63
+ Examples:
64
+ plato chronos launch config.json
65
+ plato chronos launch config.json --wait
66
+ plato chronos launch config.json --url https://chronos.example.com
67
+ """
68
+ import httpx
69
+
70
+ from plato.chronos.api.jobs import launch_job
71
+ from plato.chronos.models import AgentConfig, LaunchJobRequest
72
+
73
+ # Set defaults
74
+ if not chronos_url:
75
+ chronos_url = "https://chronos.plato.so"
76
+
77
+ if not api_key:
78
+ console.print("[red]❌ No API key provided[/red]")
79
+ console.print("Set PLATO_API_KEY environment variable or use --api-key")
80
+ raise typer.Exit(1)
81
+
82
+ # Load config
83
+ try:
84
+ with open(config) as f:
85
+ job_config = json.load(f)
86
+ except json.JSONDecodeError as e:
87
+ console.print(f"[red]❌ Invalid JSON in config file: {e}[/red]")
88
+ raise typer.Exit(1)
89
+
90
+ # Validate required fields
91
+ if "world_package" not in job_config:
92
+ console.print("[red]❌ Missing required field: world_package[/red]")
93
+ raise typer.Exit(1)
94
+
95
+ if "agent_configs" not in job_config:
96
+ console.print("[red]❌ Missing required field: agent_configs[/red]")
97
+ raise typer.Exit(1)
98
+
99
+ # Build agent configs - supports both formats:
100
+ # - {"agent": "claude-code", "version": "2.1.5"} (new)
101
+ # - {"agent_id": "ag_xxxxx"} (backwards compat)
102
+ agent_configs = {}
103
+ for slot_name, agent_cfg in job_config.get("agent_configs", {}).items():
104
+ if "agent" not in agent_cfg and "agent_id" not in agent_cfg:
105
+ console.print(f"[red]❌ Missing 'agent' or 'agent_id' for slot: {slot_name}[/red]")
106
+ raise typer.Exit(1)
107
+
108
+ config_kwargs = {"config": agent_cfg.get("config", {})}
109
+ if "agent" in agent_cfg:
110
+ config_kwargs["agent"] = agent_cfg["agent"]
111
+ config_kwargs["version"] = agent_cfg.get("version")
112
+ else:
113
+ config_kwargs["agent_id"] = agent_cfg["agent_id"]
114
+
115
+ agent_configs[slot_name] = AgentConfig(**config_kwargs)
116
+
117
+ # Build request
118
+ request = LaunchJobRequest(
119
+ world_package=job_config["world_package"],
120
+ world_version=job_config.get("world_version"),
121
+ world_config=job_config.get("world_config"),
122
+ agent_configs=agent_configs,
123
+ secret_ids=job_config.get("secret_ids"),
124
+ runtime_artifact_id=job_config.get("runtime_artifact_id"),
125
+ )
126
+
127
+ console.print("[blue]🚀 Launching job...[/blue]")
128
+ console.print(f" World: {request.world_package}")
129
+ if request.world_version:
130
+ console.print(f" Version: {request.world_version}")
131
+ console.print(f" Agents: {list(agent_configs.keys())}")
132
+
133
+ try:
134
+ with httpx.Client(base_url=chronos_url, timeout=60) as client:
135
+ response = launch_job.sync(client, request, x_api_key=api_key)
136
+
137
+ console.print("\n[green]✅ Job launched successfully![/green]")
138
+ console.print(f" Session ID: {response.session_id}")
139
+ console.print(f" Plato Session: {response.plato_session_id}")
140
+ console.print(f" Status: {response.status}")
141
+ console.print(f"\n[dim]View at: {chronos_url}/sessions/{response.session_id}[/dim]")
142
+
143
+ if wait:
144
+ console.print("\n[yellow]--wait not yet implemented[/yellow]")
145
+
146
+ except Exception as e:
147
+ console.print(f"[red]❌ Failed to launch job: {e}[/red]")
148
+ raise typer.Exit(1)
149
+
150
+
151
+ @chronos_app.command()
152
+ def example(
153
+ world: str = typer.Argument(
154
+ "structured-execution",
155
+ help="World to generate example config for",
156
+ ),
157
+ output: Path = typer.Option(
158
+ None,
159
+ "--output",
160
+ "-o",
161
+ help="Output file path (prints to stdout if not specified)",
162
+ ),
163
+ ):
164
+ """
165
+ Generate an example job config file.
166
+
167
+ Examples:
168
+ plato chronos example
169
+ plato chronos example structured-execution -o config.json
170
+ """
171
+ examples = {
172
+ "structured-execution": {
173
+ "world_package": "plato-world-structured-execution",
174
+ "world_version": "0.1.13",
175
+ "world_config": {
176
+ "sim_name": "my-sim",
177
+ "github_url": "https://github.com/example/repo",
178
+ "max_attempts": 3,
179
+ "use_backtrack": True,
180
+ "skill_runner": {
181
+ "image": "claude-code:2.1.5",
182
+ "config": {"model_name": "anthropic/claude-sonnet-4-20250514", "max_turns": 100},
183
+ },
184
+ },
185
+ "agent_configs": {
186
+ "skill_runner": {
187
+ "agent": "claude-code",
188
+ "version": "2.1.5",
189
+ "config": {"model_name": "anthropic/claude-sonnet-4-20250514", "max_turns": 100},
190
+ }
191
+ },
192
+ "secret_ids": [],
193
+ "_comment": "Add secret IDs from Chronos. Secrets should include: plato_api_key, anthropic_api_key (or claude_oauth_credentials for the agent)",
194
+ },
195
+ "code-world": {
196
+ "world_package": "plato-world-code",
197
+ "world_config": {"task": "Fix the bug in src/main.py", "repo_url": "https://github.com/example/repo"},
198
+ "agent_configs": {
199
+ "coder": {"agent": "claude-code", "config": {"model_name": "anthropic/claude-sonnet-4-20250514"}}
200
+ },
201
+ "secret_ids": [],
202
+ "_comment": "version is optional - uses latest if not specified",
203
+ },
204
+ }
205
+
206
+ if world not in examples:
207
+ console.print(f"[red]❌ Unknown world: {world}[/red]")
208
+ console.print(f"Available examples: {list(examples.keys())}")
209
+ raise typer.Exit(1)
210
+
211
+ example_config = examples[world]
212
+ json_output = json.dumps(example_config, indent=2)
213
+
214
+ if output:
215
+ with open(output, "w") as f:
216
+ f.write(json_output)
217
+ console.print(f"[green]✅ Example config written to {output}[/green]")
218
+ else:
219
+ console.print(json_output)
@@ -9,6 +9,7 @@ import typer
9
9
  from dotenv import load_dotenv
10
10
 
11
11
  from plato.v1.cli.agent import agent_app
12
+ from plato.v1.cli.chronos import chronos_app
12
13
  from plato.v1.cli.pm import pm_app
13
14
  from plato.v1.cli.sandbox import sandbox_app
14
15
  from plato.v1.cli.utils import console
@@ -71,6 +72,7 @@ app.add_typer(sandbox_app, name="sandbox")
71
72
  app.add_typer(pm_app, name="pm")
72
73
  app.add_typer(agent_app, name="agent")
73
74
  app.add_typer(world_app, name="world")
75
+ app.add_typer(chronos_app, name="chronos")
74
76
 
75
77
 
76
78
  # =============================================================================
@@ -131,6 +131,9 @@ def sandbox_start(
131
131
  timeout: int = typer.Option(1800, "--timeout", help="VM lifetime in seconds (default: 30 minutes)"),
132
132
  no_reset: bool = typer.Option(False, "--no-reset", help="Skip initial reset after ready"),
133
133
  json_output: bool = typer.Option(False, "--json", "-j", help="Output as JSON"),
134
+ working_dir: Path = typer.Option(
135
+ None, "--working-dir", "-w", help="Working directory for .sandbox.yaml and .plato/"
136
+ ),
134
137
  ):
135
138
  """
136
139
  Start a sandbox environment.
@@ -377,7 +380,7 @@ def sandbox_start(
377
380
  console.print("[cyan] Generating SSH key pair...[/cyan]")
378
381
 
379
382
  base_url = os.getenv("PLATO_BASE_URL", "https://plato.so")
380
- ssh_info = setup_ssh_for_sandbox(base_url, job_id, username=ssh_username)
383
+ ssh_info = setup_ssh_for_sandbox(base_url, job_id, username=ssh_username, working_dir=working_dir)
381
384
  ssh_host = ssh_info["ssh_host"]
382
385
  ssh_config_path = ssh_info["config_path"]
383
386
  ssh_private_key_path = ssh_info["private_key_path"]
@@ -489,7 +492,7 @@ def sandbox_start(
489
492
  # Add heartbeat PID
490
493
  if heartbeat_pid:
491
494
  state["heartbeat_pid"] = heartbeat_pid
492
- save_sandbox_state(state)
495
+ save_sandbox_state(state, working_dir)
493
496
 
494
497
  # Close the plato client (heartbeat process keeps session alive)
495
498
  plato.close()
@@ -9,21 +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:
12
+ def get_plato_dir(working_dir: Path | str | None = None) -> Path:
13
13
  """Get the directory for plato config/SSH files.
14
14
 
15
- Uses /workspace/.plato if /workspace exists (container environment),
16
- otherwise uses ~/.plato (local development).
15
+ Args:
16
+ working_dir: If provided, returns working_dir/.plato (for container/agent use).
17
+ If None, returns ~/.plato (local development).
17
18
  """
18
- workspace = Path("/workspace")
19
- if workspace.exists() and workspace.is_dir():
20
- return workspace / ".plato"
19
+ if working_dir is not None:
20
+ return Path(working_dir) / ".plato"
21
21
  return Path.home() / ".plato"
22
22
 
23
23
 
24
- def get_next_sandbox_number() -> int:
24
+ def get_next_sandbox_number(working_dir: Path | str | None = None) -> int:
25
25
  """Find next available sandbox number by checking existing config files."""
26
- plato_dir = get_plato_dir()
26
+ plato_dir = get_plato_dir(working_dir)
27
27
  if not plato_dir.exists():
28
28
  return 1
29
29
 
@@ -41,13 +41,13 @@ def get_next_sandbox_number() -> int:
41
41
  return max_num + 1
42
42
 
43
43
 
44
- def generate_ssh_key_pair(sandbox_num: int) -> tuple[str, str]:
44
+ def generate_ssh_key_pair(sandbox_num: int, working_dir: Path | str | None = None) -> tuple[str, str]:
45
45
  """
46
46
  Generate a new ed25519 SSH key pair for a specific sandbox.
47
47
 
48
48
  Returns (public_key_str, private_key_path).
49
49
  """
50
- plato_dir = get_plato_dir()
50
+ plato_dir = get_plato_dir(working_dir)
51
51
  plato_dir.mkdir(mode=0o700, exist_ok=True)
52
52
 
53
53
  private_key_path = plato_dir / f"ssh_{sandbox_num}_key"
@@ -136,6 +136,7 @@ def create_ssh_config(
136
136
  username: str,
137
137
  private_key_path: str,
138
138
  sandbox_num: int,
139
+ working_dir: Path | str | None = None,
139
140
  ) -> str:
140
141
  """
141
142
  Create a temporary SSH config file for a specific sandbox.
@@ -172,7 +173,7 @@ def create_ssh_config(
172
173
  TCPKeepAlive yes
173
174
  """
174
175
 
175
- plato_dir = get_plato_dir()
176
+ plato_dir = get_plato_dir(working_dir)
176
177
  plato_dir.mkdir(mode=0o700, exist_ok=True)
177
178
 
178
179
  config_path = plato_dir / f"ssh_{sandbox_num}.conf"
@@ -182,7 +183,12 @@ def create_ssh_config(
182
183
  return str(config_path)
183
184
 
184
185
 
185
- def setup_ssh_for_sandbox(base_url: str, job_public_id: str, username: str = "plato") -> dict:
186
+ def setup_ssh_for_sandbox(
187
+ base_url: str,
188
+ job_public_id: str,
189
+ username: str = "plato",
190
+ working_dir: Path | str | None = None,
191
+ ) -> dict:
186
192
  """
187
193
  Set up SSH access for a sandbox - generates keys and creates config.
188
194
 
@@ -190,14 +196,14 @@ def setup_ssh_for_sandbox(base_url: str, job_public_id: str, username: str = "pl
190
196
 
191
197
  Returns dict with: ssh_host, config_path, public_key, private_key_path
192
198
  """
193
- sandbox_num = get_next_sandbox_number()
199
+ sandbox_num = get_next_sandbox_number(working_dir)
194
200
  ssh_host = f"sandbox-{sandbox_num}"
195
201
 
196
202
  # Choose random port between 2200 and 2299
197
203
  local_port = random.randint(2200, 2299)
198
204
 
199
205
  # Generate SSH key pair
200
- public_key, private_key_path = generate_ssh_key_pair(sandbox_num)
206
+ public_key, private_key_path = generate_ssh_key_pair(sandbox_num, working_dir)
201
207
 
202
208
  # Create SSH config file
203
209
  config_path = create_ssh_config(
@@ -208,6 +214,7 @@ def setup_ssh_for_sandbox(base_url: str, job_public_id: str, username: str = "pl
208
214
  username=username,
209
215
  private_key_path=private_key_path,
210
216
  sandbox_num=sandbox_num,
217
+ working_dir=working_dir,
211
218
  )
212
219
 
213
220
  return {
@@ -15,32 +15,52 @@ console = Console()
15
15
  SANDBOX_FILE = ".sandbox.yaml"
16
16
 
17
17
 
18
- def get_sandbox_state() -> dict | None:
19
- """Read sandbox state from .sandbox.yaml in current directory."""
20
- sandbox_file = Path.cwd() / SANDBOX_FILE
18
+ def get_sandbox_state(working_dir: Path | str | None = None) -> dict | None:
19
+ """Read sandbox state from .sandbox.yaml.
20
+
21
+ Args:
22
+ working_dir: Directory containing .sandbox.yaml. If None, uses cwd.
23
+ """
24
+ base_dir = Path(working_dir) if working_dir else Path.cwd()
25
+ sandbox_file = base_dir / SANDBOX_FILE
21
26
  if not sandbox_file.exists():
22
27
  return None
23
28
  with open(sandbox_file) as f:
24
29
  return yaml.safe_load(f)
25
30
 
26
31
 
27
- def save_sandbox_state(state: dict) -> None:
28
- """Save sandbox state to .sandbox.yaml in current directory."""
29
- sandbox_file = Path.cwd() / SANDBOX_FILE
32
+ def save_sandbox_state(state: dict, working_dir: Path | str | None = None) -> None:
33
+ """Save sandbox state to .sandbox.yaml.
34
+
35
+ Args:
36
+ state: State dict to save.
37
+ working_dir: Directory to save .sandbox.yaml in. If None, uses cwd.
38
+ """
39
+ base_dir = Path(working_dir) if working_dir else Path.cwd()
40
+ sandbox_file = base_dir / SANDBOX_FILE
30
41
  with open(sandbox_file, "w") as f:
31
42
  yaml.dump(state, f, default_flow_style=False)
32
43
 
33
44
 
34
- def remove_sandbox_state() -> None:
35
- """Remove .sandbox.yaml from current directory."""
36
- sandbox_file = Path.cwd() / SANDBOX_FILE
45
+ def remove_sandbox_state(working_dir: Path | str | None = None) -> None:
46
+ """Remove .sandbox.yaml.
47
+
48
+ Args:
49
+ working_dir: Directory containing .sandbox.yaml. If None, uses cwd.
50
+ """
51
+ base_dir = Path(working_dir) if working_dir else Path.cwd()
52
+ sandbox_file = base_dir / SANDBOX_FILE
37
53
  if sandbox_file.exists():
38
54
  sandbox_file.unlink()
39
55
 
40
56
 
41
- def require_sandbox_state() -> dict:
42
- """Get sandbox state or exit with error."""
43
- state = get_sandbox_state()
57
+ def require_sandbox_state(working_dir: Path | str | None = None) -> dict:
58
+ """Get sandbox state or exit with error.
59
+
60
+ Args:
61
+ working_dir: Directory containing .sandbox.yaml. If None, uses cwd.
62
+ """
63
+ state = get_sandbox_state(working_dir)
44
64
  if not state:
45
65
  console.print("[red]No sandbox found in current directory[/red]")
46
66
  console.print("\n[yellow]Start a sandbox with:[/yellow]")
@@ -28,6 +28,17 @@ from plato.agents.otel import (
28
28
 
29
29
  logger = logging.getLogger(__name__)
30
30
 
31
+
32
+ def _get_plato_version() -> str:
33
+ """Get the installed plato SDK version."""
34
+ try:
35
+ from importlib.metadata import version
36
+
37
+ return version("plato")
38
+ except Exception:
39
+ return "unknown"
40
+
41
+
31
42
  # Global registry of worlds
32
43
  _WORLD_REGISTRY: dict[str, type[BaseWorld]] = {}
33
44
 
@@ -673,6 +684,11 @@ The following services are available for your use:
673
684
  else:
674
685
  logger.debug("No otel_url in config - OTel tracing disabled")
675
686
 
687
+ # Log version info (goes to OTel after init_tracing)
688
+ plato_version = _get_plato_version()
689
+ world_version = self.get_version()
690
+ self.logger.info(f"World version: {world_version}, Plato SDK version: {plato_version}")
691
+
676
692
  # Connect to Plato session if configured (for heartbeats)
677
693
  await self._connect_plato_session()
678
694
 
@@ -1 +0,0 @@
1
- 2.3.7
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes