plato-sdk-v2 2.8.1__tar.gz → 2.8.2__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 (597) hide show
  1. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/PKG-INFO +1 -1
  2. plato_sdk_v2-2.8.2/VERSION +1 -0
  3. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/cli/pm.py +143 -152
  4. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/cli/sandbox.py +3 -2
  5. plato_sdk_v2-2.8.2/plato/v1/cli/pm.py +14 -0
  6. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v2/sync/sandbox.py +47 -30
  7. plato_sdk_v2-2.8.1/VERSION +0 -1
  8. plato_sdk_v2-2.8.1/plato/v1/cli/pm.py +0 -1256
  9. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/.claude/agents/sim-creator.md +0 -0
  10. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/.gitignore +0 -0
  11. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/BUILDING_SIMS.md +0 -0
  12. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/README.md +0 -0
  13. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/ci/CLAUDE.md +0 -0
  14. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/ci/deploy.sh +0 -0
  15. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/ci/lint.sh +0 -0
  16. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/ci/setup.sh +0 -0
  17. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/ci/version-bump.sh +0 -0
  18. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/docs/AGENT_SPEC.md +0 -0
  19. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/docs/CLI.md +0 -0
  20. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/docs/GENERATING_SIM_SDKS.md +0 -0
  21. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/docs/SIMULATOR_LIFECYCLE.md +0 -0
  22. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/docs/SIM_CREATOR.md +0 -0
  23. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/docs/cli/agent.md +0 -0
  24. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/docs/cli/flows.md +0 -0
  25. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/docs/cli/pm.md +0 -0
  26. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/docs/cli/sandbox.md +0 -0
  27. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/docs/cli/sims.md +0 -0
  28. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/docs/cli/world.md +0 -0
  29. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/docs/sim-creation-pipeline.md +0 -0
  30. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/docs/skill-restructure-plan.md +0 -0
  31. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/docs/skills/SIM-CREATION-ARCHITECTURE.md +0 -0
  32. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/docs/skills/sim-config/SKILL.md +0 -0
  33. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/docs/skills/sim-creator/SKILL.md +0 -0
  34. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/docs/skills/sim-debugger/SKILL.md +0 -0
  35. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/docs/skills/sim-flow-audit/SKILL.md +0 -0
  36. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/docs/skills/sim-flow-clear/SKILL.md +0 -0
  37. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/docs/skills/sim-flow-mutations/SKILL.md +0 -0
  38. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/docs/skills/sim-flow-run/SKILL.md +0 -0
  39. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/docs/skills/sim-research/SKILL.md +0 -0
  40. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/docs/skills/sim-review/SKILL.md +0 -0
  41. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/docs/skills/sim-sandbox-login/SKILL.md +0 -0
  42. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/docs/skills/sim-sandbox-services/SKILL.md +0 -0
  43. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/docs/skills/sim-sandbox-start/SKILL.md +0 -0
  44. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/docs/skills/sim-sandbox-worker/SKILL.md +0 -0
  45. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/docs/skills/sim-snapshot/SKILL.md +0 -0
  46. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/docs/skills/sim-submit/SKILL.md +0 -0
  47. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/docs/skills/sim-validate/SKILL.md +0 -0
  48. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/docs/skills/trajectory-analysis/SKILL.md +0 -0
  49. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/docs/testcommit +0 -0
  50. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/docs/unit.sh +0 -0
  51. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/examples/test_session_isolation.py +0 -0
  52. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/examples/test_session_network.py +0 -0
  53. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/__init__.py +0 -0
  54. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/__init__.py +0 -0
  55. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/__init__.py +0 -0
  56. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/__init__.py +0 -0
  57. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/agent_artifacts/__init__.py +0 -0
  58. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/agent_artifacts/archive_agent_artifact.py +0 -0
  59. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/agent_artifacts/create_agent_artifact.py +0 -0
  60. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/agent_artifacts/get_agent_artifact_by_public_id.py +0 -0
  61. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/agent_artifacts/get_agent_artifacts.py +0 -0
  62. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/cluster/__init__.py +0 -0
  63. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/cluster/cleanup_stale_vms.py +0 -0
  64. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/cluster/get_dispatchers.py +0 -0
  65. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/cluster/get_nodes_status.py +0 -0
  66. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/cluster/get_snapshot_lineage.py +0 -0
  67. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/cluster/get_snapshots_status.py +0 -0
  68. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/cluster/pause_resume_dispatchers.py +0 -0
  69. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/cluster/prefetch_snapshot.py +0 -0
  70. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/env/__init__.py +0 -0
  71. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/env/backup.py +0 -0
  72. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/env/cleanup.py +0 -0
  73. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/env/close.py +0 -0
  74. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/env/close_async.py +0 -0
  75. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/env/create.py +0 -0
  76. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/env/create_batch.py +0 -0
  77. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/env/create_simulator.py +0 -0
  78. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/env/evaluate_session.py +0 -0
  79. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/env/generate_mutations.py +0 -0
  80. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/env/generate_mutations_single.py +0 -0
  81. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/env/get_active_session.py +0 -0
  82. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/env/get_app_sim_worker_info.py +0 -0
  83. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/env/get_cdp_url.py +0 -0
  84. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/env/get_flows.py +0 -0
  85. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/env/get_interface_worker_info.py +0 -0
  86. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/env/get_job_info.py +0 -0
  87. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/env/get_job_status.py +0 -0
  88. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/env/get_job_worker_info.py +0 -0
  89. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/env/get_proxy_url.py +0 -0
  90. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/env/get_public_url.py +0 -0
  91. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/env/get_simulator_by_name.py +0 -0
  92. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/env/get_simulators.py +0 -0
  93. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/env/get_state.py +0 -0
  94. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/env/get_worker_ready.py +0 -0
  95. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/env/log_state_mutation.py +0 -0
  96. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/env/rescore_simulator_sessions.py +0 -0
  97. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/env/reset.py +0 -0
  98. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/env/score.py +0 -0
  99. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/env/send_heartbeat.py +0 -0
  100. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/env/update_simulator.py +0 -0
  101. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/evals/__init__.py +0 -0
  102. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/evals/create_test_case_review.py +0 -0
  103. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/evals/evaluate_python.py +0 -0
  104. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/evals/get_all_test_case_reviews.py +0 -0
  105. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/evals/get_scores_by_user.py +0 -0
  106. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/evals/get_scoring.py +0 -0
  107. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/evals/get_test_case_review.py +0 -0
  108. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/evals/human_in_the_loop_scoring.py +0 -0
  109. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/evals/start_eval_from_git.py +0 -0
  110. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/gitea/__init__.py +0 -0
  111. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/gitea/create_gitea_repository.py +0 -0
  112. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/gitea/create_simulator_repository.py +0 -0
  113. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/gitea/delete_gitea_repository.py +0 -0
  114. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/gitea/get_accessible_simulators.py +0 -0
  115. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/gitea/get_gitea_credentials.py +0 -0
  116. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/gitea/get_gitea_repository.py +0 -0
  117. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/gitea/get_my_gitea_info.py +0 -0
  118. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/gitea/get_my_repositories.py +0 -0
  119. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/gitea/get_repository_branches.py +0 -0
  120. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/gitea/get_repository_contents.py +0 -0
  121. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/gitea/get_simulator_file_content.py +0 -0
  122. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/gitea/get_simulator_repository.py +0 -0
  123. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/gitea/get_simulator_repository_branches.py +0 -0
  124. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/gitea/get_simulator_repository_contents.py +0 -0
  125. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/jobs/__init__.py +0 -0
  126. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/jobs/get_job_by_id.py +0 -0
  127. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/jobs/get_jobs_by_group_id.py +0 -0
  128. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/jobs/get_keepalive_jobs.py +0 -0
  129. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/jobs/list_jobs.py +0 -0
  130. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/jobs/update_job_status.py +0 -0
  131. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/organization/__init__.py +0 -0
  132. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/organization/create_annotator_assignment.py +0 -0
  133. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/organization/create_org_api_key.py +0 -0
  134. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/organization/create_org_policy.py +0 -0
  135. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/organization/delete_org_api_key.py +0 -0
  136. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/organization/delete_org_policy.py +0 -0
  137. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/organization/get_annotator_assignments.py +0 -0
  138. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/organization/get_org_api_key_policies.py +0 -0
  139. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/organization/get_org_api_keys.py +0 -0
  140. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/organization/get_org_policies.py +0 -0
  141. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/organization/get_organization_concurrency_status.py +0 -0
  142. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/organization/get_organization_members.py +0 -0
  143. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/organization/update_annotator_assignment_stage.py +0 -0
  144. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/organization/update_organization_concurrency_limit.py +0 -0
  145. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/queue/__init__.py +0 -0
  146. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/queue/get_queue_status.py +0 -0
  147. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/queue/get_vm_detail.py +0 -0
  148. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/queue/get_vms.py +0 -0
  149. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/queue/get_workers.py +0 -0
  150. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/sandbox/__init__.py +0 -0
  151. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/sandbox/checkpoint_vm.py +0 -0
  152. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/sandbox/close_vm.py +0 -0
  153. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/sandbox/create_vm.py +0 -0
  154. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/sandbox/execute_ssh_command.py +0 -0
  155. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/sandbox/get_operation_events.py +0 -0
  156. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/sandbox/healthy_services.py +0 -0
  157. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/sandbox/healthy_worker.py +0 -0
  158. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/sandbox/save_vm_snapshot.py +0 -0
  159. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/sandbox/setup_root_access.py +0 -0
  160. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/sandbox/setup_sandbox.py +0 -0
  161. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/sandbox/start_worker.py +0 -0
  162. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/session/__init__.py +0 -0
  163. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/session/analyze_labels.py +0 -0
  164. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/session/archive_session.py +0 -0
  165. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/session/archive_session_logs_endpoint.py +0 -0
  166. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/session/create_from_labels.py +0 -0
  167. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/session/create_session_from_browser.py +0 -0
  168. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/session/create_session_from_env_recording.py +0 -0
  169. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/session/create_session_from_har.py +0 -0
  170. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/session/get_env_recording.py +0 -0
  171. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/session/get_grouped_replay_sessions.py +0 -0
  172. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/session/get_logs_status.py +0 -0
  173. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/session/get_network_requests.py +0 -0
  174. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/session/get_next_session_for_annotator.py +0 -0
  175. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/session/get_public_benchmark_sessions.py +0 -0
  176. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/session/get_replay_score_data.py +0 -0
  177. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/session/get_rrweb_actions.py +0 -0
  178. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/session/get_rrweb_events.py +0 -0
  179. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/session/get_screen_recording.py +0 -0
  180. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/session/get_session.py +0 -0
  181. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/session/get_session_replays.py +0 -0
  182. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/session/get_sessions.py +0 -0
  183. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/session/get_sessions_for_archival.py +0 -0
  184. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/session/get_ui_events.py +0 -0
  185. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/session/restore_session_logs.py +0 -0
  186. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/session/score_session_with_config.py +0 -0
  187. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/session/search_sessions_by_ids.py +0 -0
  188. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/session/set_session_output.py +0 -0
  189. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/session/update_session_public.py +0 -0
  190. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/session/update_session_testcase.py +0 -0
  191. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/simulator/__init__.py +0 -0
  192. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/simulator/add_simulator_review.py +0 -0
  193. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/simulator/batch_create_test_cases.py +0 -0
  194. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/simulator/batch_get_artifact_metadata.py +0 -0
  195. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/simulator/get_all_simulators_info.py +0 -0
  196. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/simulator/get_db_config.py +0 -0
  197. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/simulator/get_env_flows.py +0 -0
  198. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/simulator/get_plato_config.py +0 -0
  199. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/simulator/get_sessions_batch_by_job_groups.py +0 -0
  200. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/simulator/get_sessions_by_job_group.py +0 -0
  201. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/simulator/get_simulator_by_name.py +0 -0
  202. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/simulator/get_simulator_id.py +0 -0
  203. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/simulator/get_simulator_info.py +0 -0
  204. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/simulator/get_simulator_version_details.py +0 -0
  205. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/simulator/get_simulator_versions.py +0 -0
  206. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/simulator/get_start_path.py +0 -0
  207. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/simulator/get_version_by_tag.py +0 -0
  208. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/simulator/list_simulators.py +0 -0
  209. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/simulator/list_simulators_by_org.py +0 -0
  210. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/simulator/list_simulators_status.py +0 -0
  211. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/simulator/register.py +0 -0
  212. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/simulator/update_simulator.py +0 -0
  213. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/simulator/update_simulator_status.py +0 -0
  214. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/simulator/update_tag.py +0 -0
  215. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/testcases/__init__.py +0 -0
  216. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/testcases/archive_organization_test_case_assignments.py +0 -0
  217. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/testcases/archive_organization_testcase.py +0 -0
  218. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/testcases/archive_testcase.py +0 -0
  219. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/testcases/assign_testcase_to_organizations.py +0 -0
  220. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/testcases/auto_verify_testcase.py +0 -0
  221. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/testcases/bulk_archive_testcases.py +0 -0
  222. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/testcases/convert_text_to_structured_data.py +0 -0
  223. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/testcases/create_testcase.py +0 -0
  224. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/testcases/create_testcase_set.py +0 -0
  225. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/testcases/delete_testcase_set.py +0 -0
  226. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/testcases/filter_human_recorder_testcases.py +0 -0
  227. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/testcases/generate_outcome_schema.py +0 -0
  228. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/testcases/generate_prediction.py +0 -0
  229. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/testcases/generate_prediction_from_steps.py +0 -0
  230. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/testcases/generate_scoring_config_from_sessions.py +0 -0
  231. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/testcases/generate_state_mutations_config_route.py +0 -0
  232. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/testcases/get_human_recorder_tab_counts.py +0 -0
  233. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/testcases/get_human_recorder_testcases.py +0 -0
  234. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/testcases/get_merged_mutations.py +0 -0
  235. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/testcases/get_mutation_groups_for_testcase.py +0 -0
  236. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/testcases/get_next_testcase_for_scoring.py +0 -0
  237. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/testcases/get_organization_test_case_assignments.py +0 -0
  238. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/testcases/get_testcase.py +0 -0
  239. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/testcases/get_testcase_metadata_for_scoring.py +0 -0
  240. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/testcases/get_testcase_sets.py +0 -0
  241. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/testcases/get_testcases.py +0 -0
  242. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/testcases/get_testcases_in_set.py +0 -0
  243. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/testcases/mark_organization_test_case_completed.py +0 -0
  244. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/testcases/update_testcase.py +0 -0
  245. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/testcases/version_bump_testcase.py +0 -0
  246. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/__init__.py +0 -0
  247. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/admin/__init__.py +0 -0
  248. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/admin/cache/__init__.py +0 -0
  249. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/admin/cache/clear_all.py +0 -0
  250. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/admin/cache/clear_single_cache.py +0 -0
  251. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/admin/cache/delete_key.py +0 -0
  252. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/admin/cache/get_stats.py +0 -0
  253. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/admin/cache/list_cache_names.py +0 -0
  254. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/agents/__init__.py +0 -0
  255. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/agents/get_agent_ecr_token.py +0 -0
  256. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/agents/get_agent_schema.py +0 -0
  257. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/agents/get_agent_versions.py +0 -0
  258. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/agents/import_agent.py +0 -0
  259. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/agents/list_docker_agents.py +0 -0
  260. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/agents/lookup_agent_version.py +0 -0
  261. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/agents/register_docker_agent.py +0 -0
  262. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/artifacts/__init__.py +0 -0
  263. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/artifacts/get_artifact.py +0 -0
  264. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/chronos/__init__.py +0 -0
  265. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/chronos/launch_job.py +0 -0
  266. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/chronos_packages/__init__.py +0 -0
  267. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/chronos_packages/get_package_versions.py +0 -0
  268. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/chronos_packages/list_chronos_packages.py +0 -0
  269. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/chronos_packages/lookup_package_version.py +0 -0
  270. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/chronos_packages/register_chronos_package.py +0 -0
  271. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/chronos_packages/upload_chronos_package.py +0 -0
  272. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/cluster/__init__.py +0 -0
  273. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/cluster/get_node_config.py +0 -0
  274. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/jobs/__init__.py +0 -0
  275. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/jobs/checkpoint.py +0 -0
  276. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/jobs/close.py +0 -0
  277. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/jobs/connect_routing_info.py +0 -0
  278. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/jobs/connect_url.py +0 -0
  279. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/jobs/disk_snapshot.py +0 -0
  280. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/jobs/execute.py +0 -0
  281. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/jobs/get_flows.py +0 -0
  282. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/jobs/get_plato_config.py +0 -0
  283. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/jobs/log_for_job.py +0 -0
  284. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/jobs/make.py +0 -0
  285. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/jobs/public_url.py +0 -0
  286. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/jobs/reset.py +0 -0
  287. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/jobs/set_date.py +0 -0
  288. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/jobs/setup_sandbox.py +0 -0
  289. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/jobs/snapshot.py +0 -0
  290. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/jobs/snapshot_store.py +0 -0
  291. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/jobs/state.py +0 -0
  292. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/jobs/wait_for_ready.py +0 -0
  293. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/networks/__init__.py +0 -0
  294. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/networks/add_member.py +0 -0
  295. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/networks/create_network.py +0 -0
  296. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/networks/delete_network.py +0 -0
  297. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/networks/get_network.py +0 -0
  298. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/networks/list_members.py +0 -0
  299. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/networks/list_networks.py +0 -0
  300. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/networks/remove_member.py +0 -0
  301. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/networks/update_member.py +0 -0
  302. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/pypi/__init__.py +0 -0
  303. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/pypi/download_package.py +0 -0
  304. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/pypi/get_package_schema.py +0 -0
  305. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/pypi/package_index.py +0 -0
  306. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/pypi/simple_index.py +0 -0
  307. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/pypi/upload_package.py +0 -0
  308. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/releases/__init__.py +0 -0
  309. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/releases/create.py +0 -0
  310. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/releases/deploy.py +0 -0
  311. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/releases/get.py +0 -0
  312. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/releases/handle_get_existing_public_ids.py +0 -0
  313. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/releases/handle_import.py +0 -0
  314. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/releases/list_releases.py +0 -0
  315. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/releases/prep_release_assigned_testcases.py +0 -0
  316. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/releases/update.py +0 -0
  317. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/sessions/__init__.py +0 -0
  318. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/sessions/add_job.py +0 -0
  319. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/sessions/add_ssh_key.py +0 -0
  320. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/sessions/checkpoint.py +0 -0
  321. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/sessions/close.py +0 -0
  322. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/sessions/connect_network.py +0 -0
  323. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/sessions/disk_snapshot.py +0 -0
  324. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/sessions/evaluate.py +0 -0
  325. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/sessions/execute.py +0 -0
  326. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/sessions/get_connect_url.py +0 -0
  327. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/sessions/get_presigned_url.py +0 -0
  328. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/sessions/get_public_url.py +0 -0
  329. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/sessions/get_s3_content.py +0 -0
  330. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/sessions/get_session_details.py +0 -0
  331. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/sessions/get_session_documents.py +0 -0
  332. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/sessions/get_session_flows.py +0 -0
  333. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/sessions/get_session_logs.py +0 -0
  334. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/sessions/get_session_plato_config.py +0 -0
  335. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/sessions/heartbeat.py +0 -0
  336. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/sessions/list_jobs.py +0 -0
  337. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/sessions/list_sessions.py +0 -0
  338. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/sessions/log_job_mutation.py +0 -0
  339. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/sessions/make.py +0 -0
  340. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/sessions/remove_job.py +0 -0
  341. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/sessions/reset.py +0 -0
  342. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/sessions/set_date.py +0 -0
  343. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/sessions/setup_sandbox.py +0 -0
  344. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/sessions/snapshot.py +0 -0
  345. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/sessions/snapshot_store.py +0 -0
  346. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/sessions/state.py +0 -0
  347. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/sessions/upload_session_documents.py +0 -0
  348. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/sessions/wait_for_ready.py +0 -0
  349. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/user/__init__.py +0 -0
  350. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/user/get_current_user.py +0 -0
  351. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/version/__init__.py +0 -0
  352. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/version/check.py +0 -0
  353. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/client.py +0 -0
  354. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/errors.py +0 -0
  355. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/models/__init__.py +0 -0
  356. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/py.typed +0 -0
  357. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_sims_generator/__init__.py +0 -0
  358. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_sims_generator/cli.py +0 -0
  359. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_sims_generator/instruction.py +0 -0
  360. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_sims_generator/parser.py +0 -0
  361. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_sims_generator/python.py +0 -0
  362. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_sims_generator/templates/instruction/helpers.py.jinja +0 -0
  363. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_sims_generator/templates/instruction/init.py.jinja +0 -0
  364. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_sims_generator/templates/python/api_init.py.jinja +0 -0
  365. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_sims_generator/templates/python/client.py.jinja +0 -0
  366. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_sims_generator/templates/python/endpoint.py.jinja +0 -0
  367. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_sims_generator/templates/python/errors.py.jinja +0 -0
  368. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_sims_generator/templates/python/package_init.py.jinja +0 -0
  369. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_sims_generator/templates/python/tag_init.py.jinja +0 -0
  370. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_sims_generator/templates/python/version_init.py.jinja +0 -0
  371. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/agents/__init__.py +0 -0
  372. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/agents/artifacts.py +0 -0
  373. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/agents/base.py +0 -0
  374. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/agents/build.py +0 -0
  375. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/agents/config.py +0 -0
  376. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/agents/otel.py +0 -0
  377. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/agents/runner.py +0 -0
  378. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/agents/trajectory.py +0 -0
  379. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/__init__.py +0 -0
  380. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/__init__.py +0 -0
  381. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/admin/__init__.py +0 -0
  382. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/admin/clear_database_api_admin_clear_db_post.py +0 -0
  383. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/admin/sync_agents_api_admin_sync_agents_post.py +0 -0
  384. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/admin/sync_all_api_admin_sync_all_post.py +0 -0
  385. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/admin/sync_runtimes_api_admin_sync_runtimes_post.py +0 -0
  386. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/admin/sync_worlds_api_admin_sync_worlds_post.py +0 -0
  387. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/agents/__init__.py +0 -0
  388. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/agents/create_agent.py +0 -0
  389. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/agents/delete_agent.py +0 -0
  390. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/agents/get_agent.py +0 -0
  391. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/agents/get_agent_schema.py +0 -0
  392. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/agents/get_agent_versions.py +0 -0
  393. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/agents/list_agents.py +0 -0
  394. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/agents/lookup_agent.py +0 -0
  395. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/auth/__init__.py +0 -0
  396. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/auth/debug_auth_api_auth_debug_get.py +0 -0
  397. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/auth/get_auth_status_api_auth_status_get.py +0 -0
  398. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/auth/get_current_user_route_api_auth_me_get.py +0 -0
  399. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/checkpoints/__init__.py +0 -0
  400. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/checkpoints/list_checkpoints.py +0 -0
  401. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/checkpoints/preview_checkpoint.py +0 -0
  402. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/default/__init__.py +0 -0
  403. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/default/health.py +0 -0
  404. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/events/__init__.py +0 -0
  405. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/events/get_session_event.py +0 -0
  406. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/events/list_session_events.py +0 -0
  407. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/jobs/__init__.py +0 -0
  408. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/jobs/launch_job.py +0 -0
  409. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/otel/__init__.py +0 -0
  410. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/otel/get_session_traces_api_otel_sessions__session_id__traces_get.py +0 -0
  411. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/otel/receive_traces_api_otel_v1_traces_post.py +0 -0
  412. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/registry/__init__.py +0 -0
  413. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/registry/get_agent_schema_api_registry_agents__agent_name__schema_get.py +0 -0
  414. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/registry/get_agent_versions_api_registry_agents__agent_name__versions_get.py +0 -0
  415. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/registry/get_world_schema_api_registry_worlds__package_name__schema_get.py +0 -0
  416. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/registry/get_world_versions_api_registry_worlds__package_name__versions_get.py +0 -0
  417. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/registry/list_registry_agents_api_registry_agents_get.py +0 -0
  418. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/registry/list_registry_worlds_api_registry_worlds_get.py +0 -0
  419. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/runtimes/__init__.py +0 -0
  420. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/runtimes/create_runtime.py +0 -0
  421. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/runtimes/delete_runtime.py +0 -0
  422. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/runtimes/get_runtime.py +0 -0
  423. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/runtimes/get_runtime_logs.py +0 -0
  424. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/runtimes/list_runtimes.py +0 -0
  425. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/runtimes/test_runtime.py +0 -0
  426. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/secrets/__init__.py +0 -0
  427. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/secrets/create_secret.py +0 -0
  428. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/secrets/delete_secret.py +0 -0
  429. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/secrets/get_secret.py +0 -0
  430. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/secrets/list_secrets.py +0 -0
  431. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/secrets/update_secret.py +0 -0
  432. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/sessions/__init__.py +0 -0
  433. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/sessions/close_session.py +0 -0
  434. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/sessions/complete_session.py +0 -0
  435. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/sessions/create_session.py +0 -0
  436. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/sessions/get_session.py +0 -0
  437. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/sessions/get_session_bash_logs_download.py +0 -0
  438. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/sessions/get_session_envs.py +0 -0
  439. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/sessions/get_session_live_logs.py +0 -0
  440. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/sessions/get_session_logs.py +0 -0
  441. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/sessions/get_session_logs_download.py +0 -0
  442. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/sessions/get_session_status.py +0 -0
  443. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/sessions/list_session_creators.py +0 -0
  444. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/sessions/list_sessions.py +0 -0
  445. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/sessions/list_tags.py +0 -0
  446. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/sessions/update_session_tags.py +0 -0
  447. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/status/__init__.py +0 -0
  448. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/status/get_status_api_status_get.py +0 -0
  449. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/status/get_version_info_api_version_get.py +0 -0
  450. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/templates/__init__.py +0 -0
  451. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/templates/create_template.py +0 -0
  452. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/templates/delete_template.py +0 -0
  453. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/templates/get_template.py +0 -0
  454. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/templates/list_templates.py +0 -0
  455. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/templates/update_template.py +0 -0
  456. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/trajectories/__init__.py +0 -0
  457. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/trajectories/get_trajectory.py +0 -0
  458. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/trajectories/list_trajectories.py +0 -0
  459. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/worlds/__init__.py +0 -0
  460. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/worlds/create_world.py +0 -0
  461. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/worlds/delete_world.py +0 -0
  462. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/worlds/get_world.py +0 -0
  463. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/worlds/list_worlds.py +0 -0
  464. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/client.py +0 -0
  465. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/errors.py +0 -0
  466. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/models/__init__.py +0 -0
  467. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/py.typed +0 -0
  468. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/cli/__init__.py +0 -0
  469. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/cli/agent.py +0 -0
  470. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/cli/audit_ui.py +0 -0
  471. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/cli/chronos.py +0 -0
  472. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/cli/main.py +0 -0
  473. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/cli/proxy.py +0 -0
  474. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/cli/utils.py +0 -0
  475. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/cli/verify.py +0 -0
  476. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/cli/world.py +0 -0
  477. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/py.typed +0 -0
  478. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/sims/README.md +0 -0
  479. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/sims/__init__.py +0 -0
  480. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/sims/agent_helpers.py +0 -0
  481. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/sims/cli.py +0 -0
  482. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/sims/generate_clients.py +0 -0
  483. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/sims/registry.py +0 -0
  484. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/__init__.py +0 -0
  485. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/audit_ui.py +0 -0
  486. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/cli/__init__.py +0 -0
  487. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/cli/agent.py +0 -0
  488. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/cli/chronos.py +0 -0
  489. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/cli/main.py +0 -0
  490. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/cli/proxy.py +0 -0
  491. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/cli/sandbox.py +0 -0
  492. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/cli/ssh.py +0 -0
  493. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/cli/templates/world-runner.Dockerfile +0 -0
  494. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/cli/utils.py +0 -0
  495. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/cli/verify.py +0 -0
  496. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/cli/world.py +0 -0
  497. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/cli.py +0 -0
  498. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/config.py +0 -0
  499. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/examples/doordash_tasks.py +0 -0
  500. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/examples/loadtest.py +0 -0
  501. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/examples/test_env.py +0 -0
  502. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/examples/test_env_custom_browser.py +0 -0
  503. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/examples/test_env_sync.py +0 -0
  504. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/examples/test_reuse_env.py +0 -0
  505. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/examples/test_run.py +0 -0
  506. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/exceptions.py +0 -0
  507. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/extensions/envgen-recorder/README.md +0 -0
  508. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/extensions/envgen-recorder/api-client.js +0 -0
  509. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/extensions/envgen-recorder/background.js +0 -0
  510. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/extensions/envgen-recorder/build-sdk.js +0 -0
  511. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/extensions/envgen-recorder/content.js +0 -0
  512. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/extensions/envgen-recorder/manifest.json +0 -0
  513. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/extensions/envgen-recorder/offscreen.html +0 -0
  514. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/extensions/envgen-recorder/offscreen.js +0 -0
  515. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/extensions/envgen-recorder/options.html +0 -0
  516. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/extensions/envgen-recorder/options.js +0 -0
  517. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/extensions/envgen-recorder/package-lock.json +0 -0
  518. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/extensions/envgen-recorder/package.json +0 -0
  519. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/extensions/envgen-recorder/plato-sdk-bundle.js +0 -0
  520. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/extensions/envgen-recorder/plato-sdk-bundle.js.map +0 -0
  521. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/extensions/envgen-recorder/popup.html +0 -0
  522. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/extensions/envgen-recorder/popup.js +0 -0
  523. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/extensions/envgen-recorder/review-panel.html +0 -0
  524. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/extensions/envgen-recorder/review-panel.js +0 -0
  525. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/extensions/envgen-recorder/review-success.html +0 -0
  526. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/extensions/envgen-recorder/review-success.js +0 -0
  527. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/extensions/envgen-recorder/session-active.html +0 -0
  528. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/extensions/envgen-recorder/session-active.js +0 -0
  529. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/extensions/envgen-recorder/session-ended.html +0 -0
  530. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/extensions/envgen-recorder/session-ended.js +0 -0
  531. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/extensions/envgen-recorder/session-setup.html +0 -0
  532. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/extensions/envgen-recorder/session-setup.js +0 -0
  533. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/extensions/envgen-recorder/sessions.html +0 -0
  534. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/extensions/envgen-recorder/sessions.js +0 -0
  535. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/extensions/envgen-recorder/styles.css +0 -0
  536. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/flow_executor.py +0 -0
  537. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/models/__init__.py +0 -0
  538. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/models/build_models.py +0 -0
  539. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/models/env.py +0 -0
  540. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/models/flow.py +0 -0
  541. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/models/sandbox.py +0 -0
  542. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/models/task.py +0 -0
  543. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/sandbox_sdk.py +0 -0
  544. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/sdk.py +0 -0
  545. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/sync_env.py +0 -0
  546. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/sync_flow_executor.py +0 -0
  547. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/sync_sdk.py +0 -0
  548. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/utils/proxytunnel.py +0 -0
  549. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v2/__init__.py +0 -0
  550. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v2/async_/__init__.py +0 -0
  551. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v2/async_/artifact.py +0 -0
  552. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v2/async_/chronos.py +0 -0
  553. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v2/async_/client.py +0 -0
  554. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v2/async_/environment.py +0 -0
  555. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v2/async_/flow_executor.py +0 -0
  556. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v2/async_/session.py +0 -0
  557. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v2/models.py +0 -0
  558. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v2/sync/__init__.py +0 -0
  559. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v2/sync/artifact.py +0 -0
  560. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v2/sync/chronos.py +0 -0
  561. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v2/sync/client.py +0 -0
  562. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v2/sync/environment.py +0 -0
  563. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v2/sync/flow_executor.py +0 -0
  564. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v2/sync/session.py +0 -0
  565. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v2/types.py +0 -0
  566. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v2/utils/__init__.py +0 -0
  567. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v2/utils/db_cleanup.py +0 -0
  568. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v2/utils/gateway_tunnel.py +0 -0
  569. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v2/utils/models.py +0 -0
  570. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v2/utils/proxy_tunnel.py +0 -0
  571. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/worlds/README.md +0 -0
  572. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/worlds/__init__.py +0 -0
  573. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/worlds/base.py +0 -0
  574. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/worlds/build_hook.py +0 -0
  575. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/worlds/config.py +0 -0
  576. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/worlds/runner.py +0 -0
  577. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/pyproject.toml +0 -0
  578. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/scripts/get_all_artifact_targets.py +0 -0
  579. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/tests/__init__.py +0 -0
  580. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/tests/integration/__init__.py +0 -0
  581. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/tests/integration/conftest.py +0 -0
  582. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/tests/integration/test_browser_agent.py +0 -0
  583. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/tests/integration/test_chronos_callback.py +0 -0
  584. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/tests/integration/test_cleanup_snapshot.py +0 -0
  585. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/tests/integration/test_code_world.py +0 -0
  586. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/tests/integration/test_harbor_agent_runner.py +0 -0
  587. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/tests/sims/__init__.py +0 -0
  588. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/tests/sims/conftest.py +0 -0
  589. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/tests/sims/test_agent_helpers.py +0 -0
  590. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/tests/test_heartbeat_keepalive.py +0 -0
  591. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/tests/test_session_serialization.py +0 -0
  592. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/tests/test_set_date.py +0 -0
  593. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/tests/test_v2_imports.py +0 -0
  594. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/tests/test_v2_multisim_integration.py +0 -0
  595. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/tests/test_v2_session.py +0 -0
  596. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/tests/test_version.py +0 -0
  597. {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: plato-sdk-v2
3
- Version: 2.8.1
3
+ Version: 2.8.2
4
4
  Summary: Python SDK for the Plato API
5
5
  Author-email: Plato <support@plato.so>
6
6
  License-Expression: MIT
@@ -0,0 +1 @@
1
+ 2.8.2
@@ -22,12 +22,10 @@ from plato._generated.api.v1.simulator import (
22
22
  update_simulator_status,
23
23
  update_tag,
24
24
  )
25
- from plato._generated.api.v2.sessions import state as sessions_state
26
25
  from plato._generated.models import (
27
26
  AddReviewRequest,
28
27
  AppApiV1SimulatorRoutesUpdateSimulatorRequest,
29
28
  Authentication,
30
- Flow,
31
29
  Outcome,
32
30
  ReviewType,
33
31
  UpdateStatusRequest,
@@ -42,9 +40,9 @@ from plato.cli.utils import (
42
40
  require_sandbox_field,
43
41
  require_sandbox_state,
44
42
  )
45
- from plato.v2.async_.client import AsyncPlato
46
- from plato.v2.async_.flow_executor import FlowExecutor
47
- from plato.v2.types import Env
43
+ from plato.v1.flow_executor import FlowExecutor
44
+ from plato.v1.models.flow import Flow
45
+ from plato.v1.sdk import Plato
48
46
 
49
47
  # =============================================================================
50
48
  # CONSTANTS
@@ -318,25 +316,30 @@ def review_base(
318
316
  )
319
317
 
320
318
  async def _review_base():
319
+ import warnings
320
+
321
321
  base_url = _get_base_url()
322
- plato = AsyncPlato(api_key=api_key, base_url=base_url)
323
- session = None
322
+ # v1 SDK expects base_url to include /api suffix
323
+ v1_base_url = f"{base_url}/api"
324
+ # Suppress the deprecation warning from v1 Plato
325
+ with warnings.catch_warnings():
326
+ warnings.simplefilter("ignore", DeprecationWarning)
327
+ plato = Plato(api_key=api_key, base_url=v1_base_url)
328
+ env = None
324
329
  playwright = None
325
330
  browser = None
326
- login_result = None
327
331
 
328
332
  try:
329
- http_client = plato._http
330
-
331
333
  # simulator_name is guaranteed set by parse_simulator_artifact (or we exit)
332
334
  assert simulator_name is not None, "simulator_name must be set"
333
335
 
334
- # Get simulator by name
335
- sim = await get_simulator_by_name.asyncio(
336
- client=http_client,
337
- name=simulator_name,
338
- x_api_key=api_key,
339
- )
336
+ # Get simulator by name using httpx for API calls
337
+ async with httpx.AsyncClient(base_url=base_url, timeout=60.0) as http_client:
338
+ sim = await get_simulator_by_name.asyncio(
339
+ client=http_client,
340
+ name=simulator_name,
341
+ x_api_key=api_key,
342
+ )
340
343
  simulator_id = sim.id
341
344
  current_config = sim.config or {}
342
345
  current_status = current_config.get("status", "not_started")
@@ -357,26 +360,27 @@ def review_base(
357
360
 
358
361
  console.print(f"[cyan]Using artifact:[/cyan] {artifact_id}")
359
362
 
360
- # Try to create session with environment from artifact
363
+ # Try to create environment from artifact using v1 API
361
364
  try:
362
365
  console.print(f"[cyan]Creating {simulator_name} environment with artifact {artifact_id}...[/cyan]")
363
- session = await plato.sessions.create(
364
- envs=[Env.artifact(artifact_id)],
365
- timeout=300,
366
+ env = await plato.make_environment(
367
+ env_id=simulator_name,
368
+ artifact_id=artifact_id,
366
369
  )
367
- console.print(f"[green]✅ Session created: {session.session_id}[/green]")
370
+ console.print(f"[green]✅ Environment created: {env.id}[/green]")
371
+
372
+ # Wait for environment to be ready
373
+ console.print("[cyan]Waiting for environment to be ready...[/cyan]")
374
+ await env.wait_for_ready(timeout=300)
375
+ console.print("[green]✅ Environment ready![/green]")
368
376
 
369
377
  # Reset
370
378
  console.print("[cyan]Resetting environment...[/cyan]")
371
- await session.reset()
379
+ await env.reset()
372
380
  console.print("[green]✅ Environment reset complete![/green]")
373
381
 
374
- # Get public URL
375
- public_urls = await session.get_public_url()
376
- first_alias = session.envs[0].alias if session.envs else None
377
- public_url = public_urls.get(first_alias) if first_alias else None
378
- if not public_url and public_urls:
379
- public_url = list(public_urls.values())[0]
382
+ # Get public URL (v1 returns string directly)
383
+ public_url = await env.get_public_url()
380
384
  console.print(f"[cyan]Public URL:[/cyan] {public_url}")
381
385
 
382
386
  # Launch Playwright browser and login
@@ -452,70 +456,66 @@ def review_base(
452
456
  except Exception as e:
453
457
  console.print(f"[yellow]⚠️ Flow execution error: {e}[/yellow]")
454
458
  else:
455
- # Use default login via session.login()
459
+ # Use default login via env.login() (v1 API takes Page, not Browser)
456
460
  if fake_time:
457
461
  console.print("[yellow]⚠️ --clock with default login may not work correctly.[/yellow]")
458
462
  console.print("[yellow] Use --local with a flow file for reliable clock testing.[/yellow]")
459
463
  try:
460
- login_result = await session.login(browser, dataset="base")
461
- page = list(login_result.pages.values())[0] if login_result.pages else None
462
- console.print("[green]✅ Logged into environment[/green]")
463
- except Exception as e:
464
- console.print(f"[yellow]⚠️ Login error: {e}[/yellow]")
464
+ # Create page and navigate to public URL first
465
465
  page = await browser.new_page()
466
- # Install fake clock on fallback page
467
466
  if fake_time:
468
467
  await page.clock.install(time=fake_time)
469
468
  console.print(f"[green]✅ Fake clock installed: {fake_time.isoformat()}[/green]")
470
469
  if public_url:
471
470
  await page.goto(public_url)
471
+ # v1 login takes a Page and uses from_api=True to fetch flows from server
472
+ await env.login(page, dataset="base", from_api=True)
473
+ console.print("[green]✅ Logged into environment[/green]")
474
+ except Exception as e:
475
+ console.print(f"[yellow]⚠️ Login error: {e}[/yellow]")
476
+ # Page already created above, just navigate if not already done
477
+ if public_url and page:
478
+ try:
479
+ await page.goto(public_url)
480
+ except Exception:
481
+ pass
472
482
 
473
483
  # ALWAYS check state after login to verify no mutations
474
484
  console.print("\n[cyan]Checking environment state after login...[/cyan]")
475
485
  has_mutations = False
476
486
  has_errors = False
477
487
  try:
478
- state_response = await sessions_state.asyncio(
479
- client=http_client,
480
- session_id=session.session_id,
481
- merge_mutations=True,
482
- x_api_key=api_key,
483
- )
484
- if state_response and state_response.results:
485
- for jid, result in state_response.results.items():
486
- state_data = result.state if hasattr(result, "state") else result
487
- console.print(f"\n[bold cyan]Job {jid}:[/bold cyan]")
488
-
489
- if isinstance(state_data, dict):
490
- # Check for error in state response
491
- if "error" in state_data:
492
- has_errors = True
493
- console.print("\n[bold red]❌ State API Error:[/bold red]")
494
- console.print(f"[red]{state_data['error']}[/red]")
495
- continue
496
-
497
- mutations = state_data.pop("mutations", [])
498
- console.print("\n[bold]State:[/bold]")
499
- console.print(json.dumps(state_data, indent=2, default=str))
500
- if mutations:
501
- has_mutations = True
502
- console.print(f"\n[bold red]Mutations ({len(mutations)}):[/bold red]")
503
- console.print(json.dumps(mutations, indent=2, default=str))
504
- else:
505
- console.print("\n[green]No mutations recorded[/green]")
506
- else:
507
- console.print(f"[yellow]Unexpected state format: {type(state_data)}[/yellow]")
508
-
509
- if has_errors:
510
- console.print("\n[bold red]❌ State check failed due to errors![/bold red]")
511
- console.print("[yellow]The worker may not be properly connected.[/yellow]")
512
- elif has_mutations:
513
- console.print("\n[bold red]⚠️ WARNING: Login flow created mutations![/bold red]")
514
- console.print("[yellow]The login flow should NOT modify database state.[/yellow]")
488
+ # v1 API: env.get_state() returns state dict directly
489
+ state_data = await env.get_state(merge_mutations=True)
490
+ console.print(f"\n[bold cyan]Environment {env.id}:[/bold cyan]")
491
+
492
+ if isinstance(state_data, dict):
493
+ # Check for error in state response (only if error has a truthy value)
494
+ if state_data.get("error"):
495
+ has_errors = True
496
+ console.print("\n[bold red]❌ State API Error:[/bold red]")
497
+ console.print(f"[red]{state_data['error']}[/red]")
515
498
  else:
516
- console.print("\n[bold green]✅ Login flow verified - no mutations created[/bold green]")
499
+ mutations = state_data.pop("mutations", [])
500
+ console.print("\n[bold]State:[/bold]")
501
+ console.print(json.dumps(state_data, indent=2, default=str))
502
+ if mutations:
503
+ has_mutations = True
504
+ console.print(f"\n[bold red]Mutations ({len(mutations)}):[/bold red]")
505
+ console.print(json.dumps(mutations, indent=2, default=str))
506
+ else:
507
+ console.print("\n[green]No mutations recorded[/green]")
517
508
  else:
518
- console.print("[yellow]No state data available[/yellow]")
509
+ console.print(f"[yellow]Unexpected state format: {type(state_data)}[/yellow]")
510
+
511
+ if has_errors:
512
+ console.print("\n[bold red]❌ State check failed due to errors![/bold red]")
513
+ console.print("[yellow]The worker may not be properly connected.[/yellow]")
514
+ elif has_mutations:
515
+ console.print("\n[bold red]⚠️ WARNING: Login flow created mutations![/bold red]")
516
+ console.print("[yellow]The login flow should NOT modify database state.[/yellow]")
517
+ else:
518
+ console.print("\n[bold green]✅ Login flow verified - no mutations created[/bold green]")
519
519
  except Exception as e:
520
520
  console.print(f"[red]❌ Error getting state: {e}[/red]")
521
521
 
@@ -562,37 +562,26 @@ def review_base(
562
562
  elif command in ["state", "s"]:
563
563
  console.print("\n[cyan]Getting environment state with mutations...[/cyan]")
564
564
  try:
565
- # Call API directly with merge_mutations=True to include mutations
566
- state_response = await sessions_state.asyncio(
567
- client=http_client,
568
- session_id=session.session_id,
569
- merge_mutations=True,
570
- x_api_key=api_key,
571
- )
572
- if state_response and state_response.results:
573
- for jid, result in state_response.results.items():
574
- state_data = result.state if hasattr(result, "state") else result
575
- console.print(f"\n[bold cyan]Job {jid}:[/bold cyan]")
576
-
577
- if isinstance(state_data, dict):
578
- # Check for error in state response
579
- if "error" in state_data:
580
- console.print("\n[bold red]❌ State API Error:[/bold red]")
581
- console.print(f"[red]{state_data['error']}[/red]")
582
- continue
583
-
584
- mutations = state_data.pop("mutations", [])
585
- console.print("\n[bold]State:[/bold]")
586
- console.print(json.dumps(state_data, indent=2, default=str))
587
- if mutations:
588
- console.print(f"\n[bold]Mutations ({len(mutations)}):[/bold]")
589
- console.print(json.dumps(mutations, indent=2, default=str))
590
- else:
591
- console.print("\n[yellow]No mutations recorded[/yellow]")
565
+ # v1 API: env.get_state() returns state dict directly
566
+ state_data = await env.get_state(merge_mutations=True)
567
+ console.print(f"\n[bold cyan]Environment {env.id}:[/bold cyan]")
568
+
569
+ if isinstance(state_data, dict):
570
+ # Check for error in state response (only if error has a truthy value)
571
+ if state_data.get("error"):
572
+ console.print("\n[bold red]❌ State API Error:[/bold red]")
573
+ console.print(f"[red]{state_data['error']}[/red]")
574
+ else:
575
+ mutations = state_data.pop("mutations", [])
576
+ console.print("\n[bold]State:[/bold]")
577
+ console.print(json.dumps(state_data, indent=2, default=str))
578
+ if mutations:
579
+ console.print(f"\n[bold]Mutations ({len(mutations)}):[/bold]")
580
+ console.print(json.dumps(mutations, indent=2, default=str))
592
581
  else:
593
- console.print(json.dumps(state_data, indent=2, default=str))
582
+ console.print("\n[yellow]No mutations recorded[/yellow]")
594
583
  else:
595
- console.print("[yellow]No state data available[/yellow]")
584
+ console.print(json.dumps(state_data, indent=2, default=str))
596
585
  console.print()
597
586
  except Exception as e:
598
587
  console.print(f"[red]❌ Error getting state: {e}[/red]")
@@ -633,56 +622,60 @@ def review_base(
633
622
  validate_status_transition(current_status, "env_review_requested", "review base reject")
634
623
  new_status = "env_in_progress"
635
624
 
636
- # Update status
637
- await update_simulator_status.asyncio(
638
- client=http_client,
639
- simulator_id=simulator_id,
640
- body=UpdateStatusRequest(status=new_status),
641
- x_api_key=api_key,
642
- )
643
-
644
- # Add review if rejecting
645
- if outcome == "reject":
646
- comments = ""
647
- while not comments:
648
- comments = typer.prompt("Comments (required for reject)").strip()
649
- if not comments:
650
- console.print("[yellow]Comments are required when rejecting. Please provide feedback.[/yellow]")
651
-
652
- await add_simulator_review.asyncio(
653
- client=http_client,
625
+ # Create httpx client for API calls
626
+ async with httpx.AsyncClient(base_url=base_url, timeout=60.0) as api_client:
627
+ # Update status
628
+ await update_simulator_status.asyncio(
629
+ client=api_client,
654
630
  simulator_id=simulator_id,
655
- body=AddReviewRequest(
656
- review_type=ReviewType.env,
657
- outcome=Outcome.reject,
658
- artifact_id=artifact_id,
659
- comments=comments,
660
- ),
631
+ body=UpdateStatusRequest(status=new_status),
661
632
  x_api_key=api_key,
662
633
  )
663
634
 
664
- console.print(f"[green]✅ Review submitted: {outcome}[/green]")
665
- console.print(f"[cyan]Status:[/cyan] {current_status} {new_status}")
666
-
667
- # If passed, automatically tag artifact as prod-latest
668
- if outcome == "pass" and artifact_id:
669
- console.print("\n[cyan]Tagging artifact as prod-latest...[/cyan]")
670
- try:
671
- # simulator_name and artifact_id are guaranteed to be set at this point
672
- assert simulator_name is not None
673
- await update_tag.asyncio(
674
- client=http_client,
675
- body=UpdateTagRequest(
676
- simulator_name=simulator_name,
635
+ # Add review if rejecting
636
+ if outcome == "reject":
637
+ comments = ""
638
+ while not comments:
639
+ comments = typer.prompt("Comments (required for reject)").strip()
640
+ if not comments:
641
+ console.print(
642
+ "[yellow]Comments are required when rejecting. Please provide feedback.[/yellow]"
643
+ )
644
+
645
+ await add_simulator_review.asyncio(
646
+ client=api_client,
647
+ simulator_id=simulator_id,
648
+ body=AddReviewRequest(
649
+ review_type=ReviewType.env,
650
+ outcome=Outcome.reject,
677
651
  artifact_id=artifact_id,
678
- tag_name="prod-latest",
679
- dataset="base",
652
+ comments=comments,
680
653
  ),
681
654
  x_api_key=api_key,
682
655
  )
683
- console.print(f"[green]✅ Tagged {artifact_id[:8]}... as prod-latest[/green]")
684
- except Exception as e:
685
- console.print(f"[yellow]⚠️ Could not tag as prod-latest: {e}[/yellow]")
656
+
657
+ console.print(f"[green]✅ Review submitted: {outcome}[/green]")
658
+ console.print(f"[cyan]Status:[/cyan] {current_status} {new_status}")
659
+
660
+ # If passed, automatically tag artifact as prod-latest
661
+ if outcome == "pass" and artifact_id:
662
+ console.print("\n[cyan]Tagging artifact as prod-latest...[/cyan]")
663
+ try:
664
+ # simulator_name and artifact_id are guaranteed to be set at this point
665
+ assert simulator_name is not None
666
+ await update_tag.asyncio(
667
+ client=api_client,
668
+ body=UpdateTagRequest(
669
+ simulator_name=simulator_name,
670
+ artifact_id=artifact_id,
671
+ tag_name="prod-latest",
672
+ dataset="base",
673
+ ),
674
+ x_api_key=api_key,
675
+ )
676
+ console.print(f"[green]✅ Tagged {artifact_id[:8]}... as prod-latest[/green]")
677
+ except Exception as e:
678
+ console.print(f"[yellow]⚠️ Could not tag as prod-latest: {e}[/yellow]")
686
679
 
687
680
  except typer.Exit:
688
681
  raise
@@ -693,8 +686,6 @@ def review_base(
693
686
  finally:
694
687
  # Cleanup
695
688
  try:
696
- if login_result and login_result.context:
697
- await login_result.context.close()
698
689
  if browser:
699
690
  await browser.close()
700
691
  if playwright:
@@ -702,13 +693,13 @@ def review_base(
702
693
  except Exception as e:
703
694
  console.print(f"[yellow]⚠️ Browser cleanup error: {e}[/yellow]")
704
695
 
705
- if session:
696
+ if env:
706
697
  try:
707
- console.print("[cyan]Shutting down session...[/cyan]")
708
- await session.close()
709
- console.print("[green]✅ Session shut down[/green]")
698
+ console.print("[cyan]Shutting down environment...[/cyan]")
699
+ await env.close()
700
+ console.print("[green]✅ Environment shut down[/green]")
710
701
  except Exception as e:
711
- console.print(f"[yellow]⚠️ Session cleanup error: {e}[/yellow]")
702
+ console.print(f"[yellow]⚠️ Environment cleanup error: {e}[/yellow]")
712
703
 
713
704
  try:
714
705
  await plato.close()
@@ -407,8 +407,9 @@ def sandbox_snapshot(
407
407
 
408
408
  Captures VM state and database for later restoration.
409
409
 
410
- Example:
411
- plato sandbox snapshot
410
+ Examples:
411
+ plato sandbox snapshot # Uses mode from state.json
412
+ plato sandbox snapshot --mode config # Override to pass local plato-config.yml and flows to artifact
412
413
  """
413
414
  with sandbox_context(working_dir, json_output, verbose) as (client, out):
414
415
  out.console.print("Creating snapshot...")
@@ -0,0 +1,14 @@
1
+ """Project Management CLI commands for Plato simulator workflow.
2
+
3
+ This module re-exports from plato.cli.pm for backwards compatibility.
4
+ """
5
+
6
+ # Re-export from main CLI for backwards compatibility
7
+ from plato.cli.pm import (
8
+ list_app,
9
+ pm_app,
10
+ review_app,
11
+ submit_app,
12
+ )
13
+
14
+ __all__ = ["pm_app", "list_app", "review_app", "submit_app"]
@@ -622,6 +622,28 @@ class SandboxClient:
622
622
  raise ValueError("No job ID found")
623
623
  self.console.print(f"job_id: {job_id}")
624
624
 
625
+ # For artifact mode, we need to get simulator_name from session details BEFORE generating public URL
626
+ # Note: get_session_details returns a dict, not a Pydantic model
627
+ if not simulator_name:
628
+ session_details = get_session_details.sync(
629
+ client=self._http,
630
+ session_id=session_id,
631
+ x_api_key=self.api_key,
632
+ )
633
+ jobs = (
634
+ session_details.get("jobs")
635
+ if isinstance(session_details, dict)
636
+ else getattr(session_details, "jobs", None)
637
+ )
638
+ if jobs:
639
+ for j in jobs:
640
+ service = j.get("service") if isinstance(j, dict) else getattr(j, "service", None)
641
+ if service:
642
+ simulator_name = service
643
+ break
644
+ if not simulator_name:
645
+ raise ValueError(f"No simulator name found in session details for job ID {job_id}")
646
+
625
647
  # Get public URL with router target formatting (logic inlined)
626
648
  public_url = None
627
649
  try:
@@ -635,7 +657,7 @@ class SandboxClient:
635
657
  url = result.url if hasattr(result, "url") else str(result)
636
658
  if not url:
637
659
  raise ValueError(f"No public URL found in result dict for job ID {job_id}")
638
- if "_plato_router_target=" not in url:
660
+ if "_plato_router_target=" not in url and simulator_name:
639
661
  target_param = f"_plato_router_target={simulator_name}.web.plato.so"
640
662
  if "?" in url:
641
663
  url = f"{url}&{target_param}"
@@ -667,24 +689,6 @@ class SandboxClient:
667
689
  heartbeat_pid = None
668
690
  heartbeat_pid = _start_heartbeat_process(session_id, self.api_key)
669
691
 
670
- # Parse out the simulator_name from service field in jobs in session details.
671
- session_details = get_session_details.sync(
672
- client=self._http,
673
- session_id=session_id,
674
- x_api_key=self.api_key,
675
- )
676
- if hasattr(session_details, "jobs"):
677
- # session_details["jobs"] if dict, or session_details.jobs if object
678
- jobs = (
679
- session_details["jobs"] if isinstance(session_details, dict) else getattr(session_details, "jobs", None)
680
- )
681
- if jobs:
682
- for j in jobs:
683
- service = j.get("service") if isinstance(j, dict) else getattr(j, "service", None)
684
- if service:
685
- simulator_name = service
686
- break
687
-
688
692
  # Convert absolute paths to relative for state storage
689
693
  def _to_relative(abs_path: str | None) -> str | None:
690
694
  if not abs_path or not self.working_dir:
@@ -759,26 +763,39 @@ class SandboxClient:
759
763
  checkpoint_request = CreateCheckpointRequest()
760
764
 
761
765
  if mode == "config":
762
- # read plato-config.yml
766
+ # read plato-config.yml - need parsed for extracting values
763
767
  plato_config_path = self.working_dir / "plato-config.yml"
764
- with open(plato_config_path, "rb") as f:
765
- plato_config = yaml.safe_load(f)
766
- checkpoint_request.plato_config = plato_config
768
+ plato_config_raw = plato_config_path.read_text()
769
+ plato_config = yaml.safe_load(plato_config_raw)
767
770
 
768
- # convert plato-config to pydantic model
771
+ # New format - extract just the dataset portion
769
772
  plato_config_model = PlatoConfig.model_validate(plato_config)
770
- dataset_compute = plato_config_model.datasets[dataset].compute
773
+ dataset_config = plato_config_model.datasets[dataset]
774
+ # Convert dataset config back to dict for YAML serialization
775
+ dataset_dict = dataset_config.model_dump(exclude_none=True, by_alias=True)
776
+ checkpoint_request.plato_config = yaml.dump(dataset_dict, default_flow_style=False)
777
+
778
+ dataset_compute = dataset_config.compute
771
779
  if not dataset_compute:
772
780
  raise ValueError(f"Compute configuration is required for dataset '{dataset}'")
773
781
  checkpoint_request.internal_app_port = dataset_compute.app_port
774
782
  checkpoint_request.messaging_port = dataset_compute.plato_messaging_port
775
783
  # we dont set target
776
784
 
777
- # read flows.yml
778
- flows_path = self.working_dir / "flows.yml"
779
- with open(flows_path, "rb") as f:
780
- flows = yaml.safe_load(f)
781
- checkpoint_request.flows = flows
785
+ # Read flows from the path specified in plato-config metadata
786
+ # API expects YAML string, not parsed dict
787
+ # Only set flows if file exists AND has content, otherwise leave as None to inherit from parent
788
+ dataset_metadata = dataset_config.metadata
789
+ flows_file_path = dataset_metadata.flows_path if dataset_metadata else None
790
+ if flows_file_path:
791
+ # flows_path is relative to working_dir
792
+ flows_path = self.working_dir / flows_file_path
793
+ if flows_path.exists():
794
+ flows_content = flows_path.read_text().strip()
795
+ if flows_content:
796
+ checkpoint_request.flows = flows_content
797
+ else:
798
+ self.console.print(f"[yellow]Warning: flows file not found at {flows_path}[/yellow]")
782
799
 
783
800
  return sessions_snapshot.sync(
784
801
  client=self._http,
@@ -1 +0,0 @@
1
- 2.8.1