plato-sdk-v2 2.2.2__tar.gz → 2.2.3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (537) hide show
  1. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/PKG-INFO +1 -1
  2. plato_sdk_v2-2.2.3/VERSION +1 -0
  3. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/agents/runner.py +26 -15
  4. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/worlds/base.py +1 -0
  5. plato_sdk_v2-2.2.3/plato/worlds/runner.py +480 -0
  6. plato_sdk_v2-2.2.2/VERSION +0 -1
  7. plato_sdk_v2-2.2.2/plato/worlds/runner.py +0 -261
  8. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/.claude/agents/sim-creator.md +0 -0
  9. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/.gitignore +0 -0
  10. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/.sandbox.yaml +0 -0
  11. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/BUILDING_SIMS.md +0 -0
  12. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/README.md +0 -0
  13. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/ci/CLAUDE.md +0 -0
  14. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/ci/deploy.sh +0 -0
  15. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/ci/lint.sh +0 -0
  16. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/ci/setup.sh +0 -0
  17. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/ci/version-bump.sh +0 -0
  18. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/docs/AGENT_SPEC.md +0 -0
  19. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/docs/CLI.md +0 -0
  20. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/docs/GENERATING_SIM_SDKS.md +0 -0
  21. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/docs/SIMULATOR_LIFECYCLE.md +0 -0
  22. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/docs/SIM_CREATOR.md +0 -0
  23. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/docs/cli/agent.md +0 -0
  24. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/docs/cli/flows.md +0 -0
  25. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/docs/cli/pm.md +0 -0
  26. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/docs/cli/sandbox.md +0 -0
  27. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/docs/cli/sims.md +0 -0
  28. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/docs/cli/world.md +0 -0
  29. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/docs/sim-creation-pipeline.md +0 -0
  30. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/docs/skill-restructure-plan.md +0 -0
  31. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/docs/skills/SIM-CREATION-ARCHITECTURE.md +0 -0
  32. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/docs/skills/sim-config/SKILL.md +0 -0
  33. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/docs/skills/sim-creator/SKILL.md +0 -0
  34. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/docs/skills/sim-debugger/SKILL.md +0 -0
  35. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/docs/skills/sim-flow-audit/SKILL.md +0 -0
  36. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/docs/skills/sim-flow-clear/SKILL.md +0 -0
  37. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/docs/skills/sim-flow-mutations/SKILL.md +0 -0
  38. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/docs/skills/sim-flow-run/SKILL.md +0 -0
  39. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/docs/skills/sim-research/SKILL.md +0 -0
  40. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/docs/skills/sim-review/SKILL.md +0 -0
  41. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/docs/skills/sim-sandbox-login/SKILL.md +0 -0
  42. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/docs/skills/sim-sandbox-services/SKILL.md +0 -0
  43. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/docs/skills/sim-sandbox-start/SKILL.md +0 -0
  44. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/docs/skills/sim-sandbox-worker/SKILL.md +0 -0
  45. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/docs/skills/sim-snapshot/SKILL.md +0 -0
  46. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/docs/skills/sim-submit/SKILL.md +0 -0
  47. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/docs/skills/sim-validate/SKILL.md +0 -0
  48. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/docs/testcommit +0 -0
  49. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/docs/unit.sh +0 -0
  50. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/__init__.py +0 -0
  51. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/__init__.py +0 -0
  52. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/__init__.py +0 -0
  53. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/__init__.py +0 -0
  54. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/agent_artifacts/__init__.py +0 -0
  55. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/agent_artifacts/archive_agent_artifact.py +0 -0
  56. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/agent_artifacts/create_agent_artifact.py +0 -0
  57. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/agent_artifacts/get_agent_artifact_by_public_id.py +0 -0
  58. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/agent_artifacts/get_agent_artifacts.py +0 -0
  59. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/cluster/__init__.py +0 -0
  60. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/cluster/cleanup_stale_vms.py +0 -0
  61. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/cluster/get_dispatchers.py +0 -0
  62. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/cluster/get_nodes_status.py +0 -0
  63. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/cluster/get_snapshot_lineage.py +0 -0
  64. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/cluster/get_snapshots_status.py +0 -0
  65. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/cluster/pause_resume_dispatchers.py +0 -0
  66. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/cluster/prefetch_snapshot.py +0 -0
  67. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/env/__init__.py +0 -0
  68. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/env/backup.py +0 -0
  69. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/env/cleanup.py +0 -0
  70. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/env/close.py +0 -0
  71. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/env/close_async.py +0 -0
  72. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/env/create.py +0 -0
  73. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/env/create_batch.py +0 -0
  74. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/env/create_simulator.py +0 -0
  75. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/env/evaluate_session.py +0 -0
  76. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/env/generate_mutations.py +0 -0
  77. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/env/generate_mutations_single.py +0 -0
  78. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/env/get_active_session.py +0 -0
  79. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/env/get_app_sim_worker_info.py +0 -0
  80. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/env/get_cdp_url.py +0 -0
  81. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/env/get_flows.py +0 -0
  82. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/env/get_interface_worker_info.py +0 -0
  83. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/env/get_job_info.py +0 -0
  84. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/env/get_job_status.py +0 -0
  85. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/env/get_job_worker_info.py +0 -0
  86. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/env/get_proxy_url.py +0 -0
  87. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/env/get_public_url.py +0 -0
  88. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/env/get_simulator_by_name.py +0 -0
  89. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/env/get_simulators.py +0 -0
  90. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/env/get_state.py +0 -0
  91. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/env/get_worker_ready.py +0 -0
  92. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/env/log_state_mutation.py +0 -0
  93. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/env/rescore_simulator_sessions.py +0 -0
  94. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/env/reset.py +0 -0
  95. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/env/score.py +0 -0
  96. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/env/send_heartbeat.py +0 -0
  97. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/env/update_simulator.py +0 -0
  98. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/evals/__init__.py +0 -0
  99. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/evals/create_test_case_review.py +0 -0
  100. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/evals/evaluate_python.py +0 -0
  101. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/evals/get_all_test_case_reviews.py +0 -0
  102. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/evals/get_scores_by_user.py +0 -0
  103. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/evals/get_scoring.py +0 -0
  104. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/evals/get_test_case_review.py +0 -0
  105. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/evals/human_in_the_loop_scoring.py +0 -0
  106. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/evals/start_eval_from_git.py +0 -0
  107. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/gitea/__init__.py +0 -0
  108. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/gitea/create_gitea_repository.py +0 -0
  109. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/gitea/create_simulator_repository.py +0 -0
  110. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/gitea/delete_gitea_repository.py +0 -0
  111. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/gitea/get_accessible_simulators.py +0 -0
  112. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/gitea/get_gitea_credentials.py +0 -0
  113. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/gitea/get_gitea_repository.py +0 -0
  114. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/gitea/get_my_gitea_info.py +0 -0
  115. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/gitea/get_my_repositories.py +0 -0
  116. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/gitea/get_repository_branches.py +0 -0
  117. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/gitea/get_repository_contents.py +0 -0
  118. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/gitea/get_simulator_file_content.py +0 -0
  119. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/gitea/get_simulator_repository.py +0 -0
  120. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/gitea/get_simulator_repository_branches.py +0 -0
  121. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/gitea/get_simulator_repository_contents.py +0 -0
  122. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/jobs/__init__.py +0 -0
  123. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/jobs/get_job_by_id.py +0 -0
  124. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/jobs/get_jobs_by_group_id.py +0 -0
  125. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/jobs/get_keepalive_jobs.py +0 -0
  126. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/jobs/list_jobs.py +0 -0
  127. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/jobs/update_job_status.py +0 -0
  128. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/organization/__init__.py +0 -0
  129. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/organization/create_annotator_assignment.py +0 -0
  130. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/organization/create_org_api_key.py +0 -0
  131. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/organization/create_org_policy.py +0 -0
  132. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/organization/delete_org_api_key.py +0 -0
  133. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/organization/delete_org_policy.py +0 -0
  134. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/organization/get_annotator_assignments.py +0 -0
  135. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/organization/get_org_api_key_policies.py +0 -0
  136. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/organization/get_org_api_keys.py +0 -0
  137. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/organization/get_org_policies.py +0 -0
  138. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/organization/get_organization_concurrency_status.py +0 -0
  139. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/organization/get_organization_members.py +0 -0
  140. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/organization/update_annotator_assignment_stage.py +0 -0
  141. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/organization/update_organization_concurrency_limit.py +0 -0
  142. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/queue/__init__.py +0 -0
  143. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/queue/get_queue_status.py +0 -0
  144. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/queue/get_vm_detail.py +0 -0
  145. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/queue/get_vms.py +0 -0
  146. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/queue/get_workers.py +0 -0
  147. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/sandbox/__init__.py +0 -0
  148. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/sandbox/checkpoint_vm.py +0 -0
  149. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/sandbox/close_vm.py +0 -0
  150. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/sandbox/create_vm.py +0 -0
  151. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/sandbox/execute_ssh_command.py +0 -0
  152. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/sandbox/get_operation_events.py +0 -0
  153. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/sandbox/healthy_services.py +0 -0
  154. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/sandbox/healthy_worker.py +0 -0
  155. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/sandbox/save_vm_snapshot.py +0 -0
  156. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/sandbox/setup_root_access.py +0 -0
  157. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/sandbox/setup_sandbox.py +0 -0
  158. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/sandbox/start_worker.py +0 -0
  159. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/session/__init__.py +0 -0
  160. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/session/analyze_labels.py +0 -0
  161. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/session/archive_session.py +0 -0
  162. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/session/archive_session_logs_endpoint.py +0 -0
  163. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/session/create_from_labels.py +0 -0
  164. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/session/create_session_from_browser.py +0 -0
  165. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/session/create_session_from_env_recording.py +0 -0
  166. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/session/create_session_from_har.py +0 -0
  167. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/session/get_env_recording.py +0 -0
  168. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/session/get_grouped_replay_sessions.py +0 -0
  169. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/session/get_logs_status.py +0 -0
  170. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/session/get_network_requests.py +0 -0
  171. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/session/get_next_session_for_annotator.py +0 -0
  172. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/session/get_public_benchmark_sessions.py +0 -0
  173. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/session/get_replay_score_data.py +0 -0
  174. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/session/get_rrweb_actions.py +0 -0
  175. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/session/get_rrweb_events.py +0 -0
  176. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/session/get_screen_recording.py +0 -0
  177. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/session/get_session.py +0 -0
  178. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/session/get_session_replays.py +0 -0
  179. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/session/get_sessions.py +0 -0
  180. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/session/get_sessions_for_archival.py +0 -0
  181. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/session/get_ui_events.py +0 -0
  182. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/session/restore_session_logs.py +0 -0
  183. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/session/score_session_with_config.py +0 -0
  184. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/session/search_sessions_by_ids.py +0 -0
  185. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/session/set_session_output.py +0 -0
  186. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/session/update_session_public.py +0 -0
  187. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/session/update_session_testcase.py +0 -0
  188. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/simulator/__init__.py +0 -0
  189. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/simulator/add_simulator_review.py +0 -0
  190. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/simulator/batch_create_test_cases.py +0 -0
  191. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/simulator/batch_get_artifact_metadata.py +0 -0
  192. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/simulator/get_all_simulators_info.py +0 -0
  193. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/simulator/get_db_config.py +0 -0
  194. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/simulator/get_env_flows.py +0 -0
  195. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/simulator/get_plato_config.py +0 -0
  196. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/simulator/get_sessions_batch_by_job_groups.py +0 -0
  197. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/simulator/get_sessions_by_job_group.py +0 -0
  198. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/simulator/get_simulator_by_name.py +0 -0
  199. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/simulator/get_simulator_id.py +0 -0
  200. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/simulator/get_simulator_info.py +0 -0
  201. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/simulator/get_simulator_version_details.py +0 -0
  202. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/simulator/get_simulator_versions.py +0 -0
  203. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/simulator/get_start_path.py +0 -0
  204. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/simulator/get_version_by_tag.py +0 -0
  205. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/simulator/list_simulators.py +0 -0
  206. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/simulator/list_simulators_by_org.py +0 -0
  207. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/simulator/list_simulators_status.py +0 -0
  208. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/simulator/register.py +0 -0
  209. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/simulator/update_simulator.py +0 -0
  210. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/simulator/update_simulator_status.py +0 -0
  211. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/simulator/update_tag.py +0 -0
  212. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/testcases/__init__.py +0 -0
  213. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/testcases/archive_organization_test_case_assignments.py +0 -0
  214. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/testcases/archive_organization_testcase.py +0 -0
  215. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/testcases/archive_testcase.py +0 -0
  216. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/testcases/assign_testcase_to_organizations.py +0 -0
  217. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/testcases/auto_verify_testcase.py +0 -0
  218. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/testcases/bulk_archive_testcases.py +0 -0
  219. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/testcases/convert_text_to_structured_data.py +0 -0
  220. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/testcases/create_testcase.py +0 -0
  221. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/testcases/create_testcase_set.py +0 -0
  222. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/testcases/delete_testcase_set.py +0 -0
  223. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/testcases/filter_human_recorder_testcases.py +0 -0
  224. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/testcases/generate_outcome_schema.py +0 -0
  225. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/testcases/generate_prediction.py +0 -0
  226. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/testcases/generate_prediction_from_steps.py +0 -0
  227. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/testcases/generate_scoring_config_from_sessions.py +0 -0
  228. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/testcases/generate_state_mutations_config_route.py +0 -0
  229. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/testcases/get_human_recorder_tab_counts.py +0 -0
  230. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/testcases/get_human_recorder_testcases.py +0 -0
  231. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/testcases/get_merged_mutations.py +0 -0
  232. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/testcases/get_mutation_groups_for_testcase.py +0 -0
  233. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/testcases/get_next_testcase_for_scoring.py +0 -0
  234. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/testcases/get_organization_test_case_assignments.py +0 -0
  235. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/testcases/get_testcase.py +0 -0
  236. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/testcases/get_testcase_metadata_for_scoring.py +0 -0
  237. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/testcases/get_testcase_sets.py +0 -0
  238. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/testcases/get_testcases.py +0 -0
  239. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/testcases/get_testcases_in_set.py +0 -0
  240. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/testcases/mark_organization_test_case_completed.py +0 -0
  241. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/testcases/update_testcase.py +0 -0
  242. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v1/testcases/version_bump_testcase.py +0 -0
  243. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v2/__init__.py +0 -0
  244. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v2/agents/__init__.py +0 -0
  245. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v2/agents/get_agent_ecr_token.py +0 -0
  246. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v2/agents/get_agent_schema.py +0 -0
  247. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v2/agents/get_agent_versions.py +0 -0
  248. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v2/agents/import_agent.py +0 -0
  249. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v2/agents/list_docker_agents.py +0 -0
  250. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v2/agents/lookup_agent_version.py +0 -0
  251. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v2/agents/register_docker_agent.py +0 -0
  252. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v2/artifacts/__init__.py +0 -0
  253. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v2/artifacts/get_artifact.py +0 -0
  254. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v2/chronos/__init__.py +0 -0
  255. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v2/chronos/launch_job.py +0 -0
  256. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v2/chronos_packages/__init__.py +0 -0
  257. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v2/chronos_packages/get_package_versions.py +0 -0
  258. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v2/chronos_packages/list_chronos_packages.py +0 -0
  259. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v2/chronos_packages/lookup_package_version.py +0 -0
  260. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v2/chronos_packages/register_chronos_package.py +0 -0
  261. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v2/chronos_packages/upload_chronos_package.py +0 -0
  262. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v2/cluster/__init__.py +0 -0
  263. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v2/cluster/get_node_config.py +0 -0
  264. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v2/jobs/__init__.py +0 -0
  265. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v2/jobs/checkpoint.py +0 -0
  266. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v2/jobs/close.py +0 -0
  267. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v2/jobs/connect_routing_info.py +0 -0
  268. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v2/jobs/connect_url.py +0 -0
  269. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v2/jobs/disk_snapshot.py +0 -0
  270. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v2/jobs/execute.py +0 -0
  271. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v2/jobs/get_flows.py +0 -0
  272. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v2/jobs/get_plato_config.py +0 -0
  273. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v2/jobs/log_for_job.py +0 -0
  274. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v2/jobs/make.py +0 -0
  275. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v2/jobs/public_url.py +0 -0
  276. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v2/jobs/reset.py +0 -0
  277. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v2/jobs/set_date.py +0 -0
  278. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v2/jobs/setup_sandbox.py +0 -0
  279. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v2/jobs/snapshot.py +0 -0
  280. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v2/jobs/snapshot_store.py +0 -0
  281. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v2/jobs/state.py +0 -0
  282. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v2/jobs/wait_for_ready.py +0 -0
  283. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v2/pypi/__init__.py +0 -0
  284. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v2/pypi/download_package.py +0 -0
  285. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v2/pypi/get_package_schema.py +0 -0
  286. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v2/pypi/package_index.py +0 -0
  287. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v2/pypi/simple_index.py +0 -0
  288. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v2/pypi/upload_package.py +0 -0
  289. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v2/releases/__init__.py +0 -0
  290. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v2/releases/create.py +0 -0
  291. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v2/releases/deploy.py +0 -0
  292. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v2/releases/get.py +0 -0
  293. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v2/releases/handle_get_existing_public_ids.py +0 -0
  294. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v2/releases/handle_import.py +0 -0
  295. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v2/releases/list_releases.py +0 -0
  296. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v2/releases/prep_release_assigned_testcases.py +0 -0
  297. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v2/releases/update.py +0 -0
  298. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v2/sessions/__init__.py +0 -0
  299. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v2/sessions/checkpoint.py +0 -0
  300. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v2/sessions/close.py +0 -0
  301. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v2/sessions/disk_snapshot.py +0 -0
  302. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v2/sessions/evaluate.py +0 -0
  303. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v2/sessions/execute.py +0 -0
  304. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v2/sessions/get_connect_url.py +0 -0
  305. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v2/sessions/get_presigned_url.py +0 -0
  306. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v2/sessions/get_public_url.py +0 -0
  307. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v2/sessions/get_s3_content.py +0 -0
  308. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v2/sessions/get_session_details.py +0 -0
  309. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v2/sessions/get_session_documents.py +0 -0
  310. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v2/sessions/get_session_flows.py +0 -0
  311. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v2/sessions/get_session_logs.py +0 -0
  312. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v2/sessions/get_session_plato_config.py +0 -0
  313. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v2/sessions/heartbeat.py +0 -0
  314. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v2/sessions/list_jobs.py +0 -0
  315. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v2/sessions/list_sessions.py +0 -0
  316. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v2/sessions/log_job_mutation.py +0 -0
  317. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v2/sessions/make.py +0 -0
  318. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v2/sessions/reset.py +0 -0
  319. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v2/sessions/set_date.py +0 -0
  320. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v2/sessions/setup_sandbox.py +0 -0
  321. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v2/sessions/snapshot.py +0 -0
  322. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v2/sessions/snapshot_store.py +0 -0
  323. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v2/sessions/state.py +0 -0
  324. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v2/sessions/upload_session_documents.py +0 -0
  325. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v2/sessions/wait_for_ready.py +0 -0
  326. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v2/user/__init__.py +0 -0
  327. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/v2/user/get_current_user.py +0 -0
  328. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/version/__init__.py +0 -0
  329. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/api/version/check.py +0 -0
  330. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/client.py +0 -0
  331. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/errors.py +0 -0
  332. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/models/__init__.py +0 -0
  333. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_generated/py.typed +0 -0
  334. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_sims_generator/__init__.py +0 -0
  335. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_sims_generator/cli.py +0 -0
  336. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_sims_generator/instruction.py +0 -0
  337. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_sims_generator/parser.py +0 -0
  338. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_sims_generator/python.py +0 -0
  339. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_sims_generator/templates/instruction/helpers.py.jinja +0 -0
  340. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_sims_generator/templates/instruction/init.py.jinja +0 -0
  341. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_sims_generator/templates/python/api_init.py.jinja +0 -0
  342. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_sims_generator/templates/python/client.py.jinja +0 -0
  343. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_sims_generator/templates/python/endpoint.py.jinja +0 -0
  344. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_sims_generator/templates/python/errors.py.jinja +0 -0
  345. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_sims_generator/templates/python/package_init.py.jinja +0 -0
  346. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_sims_generator/templates/python/tag_init.py.jinja +0 -0
  347. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/_sims_generator/templates/python/version_init.py.jinja +0 -0
  348. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/agents/__init__.py +0 -0
  349. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/agents/base.py +0 -0
  350. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/agents/build.py +0 -0
  351. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/agents/config.py +0 -0
  352. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/agents/logging.py +0 -0
  353. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/agents/trajectory.py +0 -0
  354. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/chronos/__init__.py +0 -0
  355. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/chronos/api/__init__.py +0 -0
  356. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/chronos/api/agents/__init__.py +0 -0
  357. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/chronos/api/agents/create_agent.py +0 -0
  358. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/chronos/api/agents/delete_agent.py +0 -0
  359. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/chronos/api/agents/get_agent.py +0 -0
  360. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/chronos/api/agents/get_agent_schema.py +0 -0
  361. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/chronos/api/agents/get_agent_versions.py +0 -0
  362. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/chronos/api/agents/list_agents.py +0 -0
  363. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/chronos/api/agents/lookup_agent.py +0 -0
  364. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/chronos/api/auth/__init__.py +0 -0
  365. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/chronos/api/auth/debug_auth_api_auth_debug_get.py +0 -0
  366. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/chronos/api/auth/get_auth_status_api_auth_status_get.py +0 -0
  367. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/chronos/api/auth/get_current_user_route_api_auth_me_get.py +0 -0
  368. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/chronos/api/callback/__init__.py +0 -0
  369. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/chronos/api/callback/push_agent_logs.py +0 -0
  370. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/chronos/api/callback/update_agent_status.py +0 -0
  371. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/chronos/api/callback/upload_artifacts.py +0 -0
  372. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/chronos/api/callback/upload_logs_zip.py +0 -0
  373. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/chronos/api/callback/upload_trajectory.py +0 -0
  374. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/chronos/api/default/__init__.py +0 -0
  375. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/chronos/api/default/health.py +0 -0
  376. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/chronos/api/jobs/__init__.py +0 -0
  377. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/chronos/api/jobs/launch_job.py +0 -0
  378. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/chronos/api/registry/__init__.py +0 -0
  379. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/chronos/api/registry/get_agent_schema_api_registry_agents__agent_name__schema_get.py +0 -0
  380. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/chronos/api/registry/get_agent_versions_api_registry_agents__agent_name__versions_get.py +0 -0
  381. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/chronos/api/registry/get_world_schema_api_registry_worlds__package_name__schema_get.py +0 -0
  382. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/chronos/api/registry/get_world_versions_api_registry_worlds__package_name__versions_get.py +0 -0
  383. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/chronos/api/registry/list_registry_agents_api_registry_agents_get.py +0 -0
  384. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/chronos/api/registry/list_registry_worlds_api_registry_worlds_get.py +0 -0
  385. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/chronos/api/runtimes/__init__.py +0 -0
  386. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/chronos/api/runtimes/create_runtime.py +0 -0
  387. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/chronos/api/runtimes/delete_runtime.py +0 -0
  388. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/chronos/api/runtimes/get_runtime.py +0 -0
  389. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/chronos/api/runtimes/list_runtimes.py +0 -0
  390. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/chronos/api/runtimes/test_runtime.py +0 -0
  391. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/chronos/api/secrets/__init__.py +0 -0
  392. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/chronos/api/secrets/create_secret.py +0 -0
  393. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/chronos/api/secrets/delete_secret.py +0 -0
  394. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/chronos/api/secrets/get_secret.py +0 -0
  395. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/chronos/api/secrets/list_secrets.py +0 -0
  396. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/chronos/api/secrets/update_secret.py +0 -0
  397. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/chronos/api/sessions/__init__.py +0 -0
  398. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/chronos/api/sessions/get_session.py +0 -0
  399. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/chronos/api/sessions/get_session_logs.py +0 -0
  400. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/chronos/api/sessions/get_session_logs_download.py +0 -0
  401. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/chronos/api/sessions/list_sessions.py +0 -0
  402. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/chronos/api/status/__init__.py +0 -0
  403. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/chronos/api/status/get_status_api_status_get.py +0 -0
  404. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/chronos/api/status/get_version_info_api_version_get.py +0 -0
  405. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/chronos/api/templates/__init__.py +0 -0
  406. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/chronos/api/templates/create_template.py +0 -0
  407. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/chronos/api/templates/delete_template.py +0 -0
  408. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/chronos/api/templates/get_template.py +0 -0
  409. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/chronos/api/templates/list_templates.py +0 -0
  410. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/chronos/api/templates/update_template.py +0 -0
  411. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/chronos/api/trajectories/__init__.py +0 -0
  412. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/chronos/api/trajectories/get_trajectory.py +0 -0
  413. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/chronos/api/trajectories/list_trajectories.py +0 -0
  414. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/chronos/api/worlds/__init__.py +0 -0
  415. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/chronos/api/worlds/create_world.py +0 -0
  416. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/chronos/api/worlds/delete_world.py +0 -0
  417. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/chronos/api/worlds/get_world.py +0 -0
  418. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/chronos/api/worlds/list_worlds.py +0 -0
  419. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/chronos/client.py +0 -0
  420. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/chronos/errors.py +0 -0
  421. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/chronos/models/__init__.py +0 -0
  422. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/chronos/py.typed +0 -0
  423. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/py.typed +0 -0
  424. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/sims/README.md +0 -0
  425. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/sims/__init__.py +0 -0
  426. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/sims/agent_helpers.py +0 -0
  427. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/sims/cli.py +0 -0
  428. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/sims/generate_clients.py +0 -0
  429. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/sims/registry.py +0 -0
  430. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/v1/__init__.py +0 -0
  431. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/v1/audit_ui.py +0 -0
  432. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/v1/cli/__init__.py +0 -0
  433. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/v1/cli/agent.py +0 -0
  434. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/v1/cli/main.py +0 -0
  435. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/v1/cli/pm.py +0 -0
  436. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/v1/cli/sandbox.py +0 -0
  437. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/v1/cli/sim.py +0 -0
  438. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/v1/cli/ssh.py +0 -0
  439. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/v1/cli/utils.py +0 -0
  440. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/v1/cli/verify.py +0 -0
  441. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/v1/cli/world.py +0 -0
  442. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/v1/cli.py +0 -0
  443. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/v1/config.py +0 -0
  444. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/v1/examples/doordash_tasks.py +0 -0
  445. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/v1/examples/loadtest.py +0 -0
  446. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/v1/examples/test_env.py +0 -0
  447. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/v1/examples/test_env_custom_browser.py +0 -0
  448. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/v1/examples/test_env_sync.py +0 -0
  449. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/v1/examples/test_reuse_env.py +0 -0
  450. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/v1/examples/test_run.py +0 -0
  451. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/v1/exceptions.py +0 -0
  452. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/v1/extensions/envgen-recorder/README.md +0 -0
  453. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/v1/extensions/envgen-recorder/api-client.js +0 -0
  454. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/v1/extensions/envgen-recorder/background.js +0 -0
  455. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/v1/extensions/envgen-recorder/build-sdk.js +0 -0
  456. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/v1/extensions/envgen-recorder/content.js +0 -0
  457. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/v1/extensions/envgen-recorder/manifest.json +0 -0
  458. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/v1/extensions/envgen-recorder/offscreen.html +0 -0
  459. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/v1/extensions/envgen-recorder/offscreen.js +0 -0
  460. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/v1/extensions/envgen-recorder/options.html +0 -0
  461. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/v1/extensions/envgen-recorder/options.js +0 -0
  462. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/v1/extensions/envgen-recorder/package-lock.json +0 -0
  463. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/v1/extensions/envgen-recorder/package.json +0 -0
  464. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/v1/extensions/envgen-recorder/plato-sdk-bundle.js +0 -0
  465. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/v1/extensions/envgen-recorder/plato-sdk-bundle.js.map +0 -0
  466. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/v1/extensions/envgen-recorder/popup.html +0 -0
  467. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/v1/extensions/envgen-recorder/popup.js +0 -0
  468. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/v1/extensions/envgen-recorder/review-panel.html +0 -0
  469. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/v1/extensions/envgen-recorder/review-panel.js +0 -0
  470. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/v1/extensions/envgen-recorder/review-success.html +0 -0
  471. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/v1/extensions/envgen-recorder/review-success.js +0 -0
  472. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/v1/extensions/envgen-recorder/session-active.html +0 -0
  473. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/v1/extensions/envgen-recorder/session-active.js +0 -0
  474. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/v1/extensions/envgen-recorder/session-ended.html +0 -0
  475. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/v1/extensions/envgen-recorder/session-ended.js +0 -0
  476. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/v1/extensions/envgen-recorder/session-setup.html +0 -0
  477. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/v1/extensions/envgen-recorder/session-setup.js +0 -0
  478. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/v1/extensions/envgen-recorder/sessions.html +0 -0
  479. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/v1/extensions/envgen-recorder/sessions.js +0 -0
  480. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/v1/extensions/envgen-recorder/styles.css +0 -0
  481. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/v1/flow_executor.py +0 -0
  482. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/v1/models/__init__.py +0 -0
  483. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/v1/models/build_models.py +0 -0
  484. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/v1/models/env.py +0 -0
  485. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/v1/models/flow.py +0 -0
  486. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/v1/models/sandbox.py +0 -0
  487. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/v1/models/task.py +0 -0
  488. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/v1/sandbox_sdk.py +0 -0
  489. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/v1/sdk.py +0 -0
  490. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/v1/sync_env.py +0 -0
  491. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/v1/sync_flow_executor.py +0 -0
  492. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/v1/sync_sdk.py +0 -0
  493. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/v1/utils/proxytunnel.py +0 -0
  494. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/v2/__init__.py +0 -0
  495. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/v2/async_/__init__.py +0 -0
  496. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/v2/async_/artifact.py +0 -0
  497. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/v2/async_/client.py +0 -0
  498. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/v2/async_/environment.py +0 -0
  499. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/v2/async_/flow_executor.py +0 -0
  500. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/v2/async_/session.py +0 -0
  501. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/v2/models.py +0 -0
  502. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/v2/sync/__init__.py +0 -0
  503. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/v2/sync/artifact.py +0 -0
  504. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/v2/sync/client.py +0 -0
  505. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/v2/sync/environment.py +0 -0
  506. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/v2/sync/flow_executor.py +0 -0
  507. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/v2/sync/session.py +0 -0
  508. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/v2/types.py +0 -0
  509. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/v2/utils/__init__.py +0 -0
  510. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/v2/utils/db_cleanup.py +0 -0
  511. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/v2/utils/models.py +0 -0
  512. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/v2/utils/proxy_tunnel.py +0 -0
  513. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/worlds/README.md +0 -0
  514. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/worlds/__init__.py +0 -0
  515. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/worlds/build_hook.py +0 -0
  516. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/plato/worlds/config.py +0 -0
  517. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/pyproject.toml +0 -0
  518. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/scripts/get_all_artifact_targets.py +0 -0
  519. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/tests/__init__.py +0 -0
  520. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/tests/integration/__init__.py +0 -0
  521. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/tests/integration/conftest.py +0 -0
  522. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/tests/integration/test_browser_agent.py +0 -0
  523. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/tests/integration/test_chronos_callback.py +0 -0
  524. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/tests/integration/test_cleanup_snapshot.py +0 -0
  525. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/tests/integration/test_code_world.py +0 -0
  526. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/tests/integration/test_harbor_agent_runner.py +0 -0
  527. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/tests/sims/__init__.py +0 -0
  528. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/tests/sims/conftest.py +0 -0
  529. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/tests/sims/test_agent_helpers.py +0 -0
  530. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/tests/test_heartbeat_keepalive.py +0 -0
  531. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/tests/test_session_serialization.py +0 -0
  532. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/tests/test_set_date.py +0 -0
  533. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/tests/test_v2_imports.py +0 -0
  534. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/tests/test_v2_multisim_integration.py +0 -0
  535. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/tests/test_v2_session.py +0 -0
  536. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/tests/test_version.py +0 -0
  537. {plato_sdk_v2-2.2.2 → plato_sdk_v2-2.2.3}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: plato-sdk-v2
3
- Version: 2.2.2
3
+ Version: 2.2.3
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.2.3
@@ -6,6 +6,7 @@ import asyncio
6
6
  import json
7
7
  import logging
8
8
  import os
9
+ import platform
9
10
  import tempfile
10
11
  from pathlib import Path
11
12
 
@@ -62,21 +63,29 @@ async def run_agent(
62
63
  # Build docker command
63
64
  docker_cmd = ["docker", "run", "--rm"]
64
65
 
65
- # Check if iptables is available for network isolation
66
- try:
67
- proc = await asyncio.create_subprocess_exec(
68
- "iptables",
69
- "-L",
70
- "-n",
71
- stdout=asyncio.subprocess.DEVNULL,
72
- stderr=asyncio.subprocess.DEVNULL,
73
- )
74
- await proc.wait()
75
- has_iptables = proc.returncode == 0
76
- except (FileNotFoundError, PermissionError):
77
- has_iptables = False
78
-
79
- if not has_iptables:
66
+ # Determine if we need host networking:
67
+ # - Required on Linux without iptables for connectivity
68
+ # - Skip on macOS where --network=host doesn't work properly
69
+ use_host_network = False
70
+ is_macos = platform.system() == "Darwin"
71
+
72
+ if not is_macos:
73
+ try:
74
+ proc = await asyncio.create_subprocess_exec(
75
+ "iptables",
76
+ "-L",
77
+ "-n",
78
+ stdout=asyncio.subprocess.DEVNULL,
79
+ stderr=asyncio.subprocess.DEVNULL,
80
+ )
81
+ await proc.wait()
82
+ has_iptables = proc.returncode == 0
83
+ except (FileNotFoundError, PermissionError):
84
+ has_iptables = False
85
+
86
+ use_host_network = not has_iptables
87
+
88
+ if use_host_network:
80
89
  docker_cmd.extend(["--network=host", "--add-host=localhost:127.0.0.1"])
81
90
 
82
91
  docker_cmd.extend(
@@ -96,6 +105,8 @@ async def run_agent(
96
105
  docker_cmd.extend(["-e", f"{key.upper()}={value}"])
97
106
 
98
107
  docker_cmd.append(image)
108
+
109
+ # Pass instruction via CLI arg (agents expect --instruction flag)
99
110
  docker_cmd.extend(["--instruction", instruction])
100
111
 
101
112
  # Run container and stream output
@@ -145,6 +145,7 @@ class BaseWorld(ABC, Generic[ConfigT]):
145
145
  "required": schema.get("required", []),
146
146
  "agents": schema.get("agents", []),
147
147
  "secrets": schema.get("secrets", []),
148
+ "envs": schema.get("envs", []),
148
149
  }
149
150
 
150
151
  @abstractmethod
@@ -0,0 +1,480 @@
1
+ """World runner - discovers and runs Plato worlds."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import asyncio
6
+ import json
7
+ import logging
8
+ import os
9
+ import platform
10
+ from pathlib import Path
11
+ from typing import Annotated
12
+
13
+ import typer
14
+
15
+ from plato.worlds.config import EnvConfig, RunConfig
16
+
17
+ app = typer.Typer(
18
+ name="plato-world-runner",
19
+ help="Run Plato worlds",
20
+ no_args_is_help=True,
21
+ )
22
+
23
+ logger = logging.getLogger(__name__)
24
+
25
+
26
+ def discover_worlds() -> None:
27
+ """Discover and load installed world packages via entry points.
28
+
29
+ World packages declare entry points in pyproject.toml:
30
+ [project.entry-points."plato.worlds"]
31
+ code = "code_world:CodeWorld"
32
+
33
+ This function loads all such entry points, triggering registration.
34
+ """
35
+ import importlib.metadata
36
+
37
+ try:
38
+ eps = importlib.metadata.entry_points(group="plato.worlds")
39
+ except TypeError:
40
+ # Python < 3.10 compatibility
41
+ eps = importlib.metadata.entry_points().get("plato.worlds", [])
42
+
43
+ for ep in eps:
44
+ try:
45
+ ep.load()
46
+ logger.debug(f"Loaded world: {ep.name}")
47
+ except Exception as e:
48
+ logger.warning(f"Failed to load world '{ep.name}': {e}")
49
+
50
+
51
+ async def run_world(world_name: str, config: RunConfig) -> None:
52
+ """Run a world by name with the given configuration.
53
+
54
+ Args:
55
+ world_name: Name of the world to run
56
+ config: Run configuration (should be the world's typed config class)
57
+
58
+ Raises:
59
+ ValueError: If world not found
60
+ """
61
+ discover_worlds()
62
+
63
+ from plato.worlds.base import get_registered_worlds, get_world
64
+
65
+ world_cls = get_world(world_name)
66
+ if world_cls is None:
67
+ available = list(get_registered_worlds().keys())
68
+ raise ValueError(f"World '{world_name}' not found. Available: {available}")
69
+
70
+ world = world_cls()
71
+ await world.run(config)
72
+
73
+
74
+ @app.command()
75
+ def run(
76
+ world: Annotated[str, typer.Option("--world", "-w", help="World name to run")],
77
+ config: Annotated[Path, typer.Option("--config", "-c", help="Path to config JSON file")],
78
+ verbose: Annotated[bool, typer.Option("--verbose", "-v", help="Enable verbose logging")] = False,
79
+ ) -> None:
80
+ """Run a world with the given configuration."""
81
+ # Setup logging
82
+ log_level = logging.DEBUG if verbose else logging.INFO
83
+ logging.basicConfig(
84
+ level=log_level,
85
+ format="%(asctime)s [%(levelname)s] %(name)s: %(message)s",
86
+ )
87
+
88
+ if not config.exists():
89
+ typer.echo(f"Error: Config file not found: {config}", err=True)
90
+ raise typer.Exit(1)
91
+
92
+ # Discover worlds first to get config class
93
+ discover_worlds()
94
+
95
+ from plato.worlds.base import get_registered_worlds, get_world
96
+
97
+ world_cls = get_world(world)
98
+ if world_cls is None:
99
+ available = list(get_registered_worlds().keys())
100
+ typer.echo(f"Error: World '{world}' not found. Available: {available}", err=True)
101
+ raise typer.Exit(1)
102
+
103
+ # Load config using the world's typed config class
104
+ config_class = world_cls.get_config_class()
105
+ run_config = config_class.from_file(config)
106
+
107
+ try:
108
+ world_instance = world_cls()
109
+ asyncio.run(world_instance.run(run_config))
110
+ except Exception as e:
111
+ logger.exception(f"World execution failed: {e}")
112
+ raise typer.Exit(1)
113
+
114
+
115
+ @app.command("list")
116
+ def list_worlds(
117
+ verbose: Annotated[bool, typer.Option("--verbose", "-v", help="Enable verbose logging")] = False,
118
+ ) -> None:
119
+ """List available worlds."""
120
+ if verbose:
121
+ logging.basicConfig(level=logging.DEBUG)
122
+
123
+ discover_worlds()
124
+
125
+ from plato.worlds.base import get_registered_worlds
126
+
127
+ worlds = get_registered_worlds()
128
+ if not worlds:
129
+ typer.echo("No worlds found.")
130
+ return
131
+
132
+ typer.echo("Available worlds:")
133
+ for name, cls in worlds.items():
134
+ desc = getattr(cls, "description", "") or ""
135
+ version = cls.get_version()
136
+ typer.echo(f" {name} (v{version}): {desc}")
137
+
138
+
139
+ async def _build_agent_image(
140
+ agent_name: str,
141
+ agents_dir: Path,
142
+ plato_client_root: Path | None = None,
143
+ ) -> bool:
144
+ """Build a local agent Docker image.
145
+
146
+ Args:
147
+ agent_name: Name of the agent (e.g., "openhands")
148
+ agents_dir: Directory containing agent subdirectories
149
+ plato_client_root: Root of plato-client repo (for dev builds), or None for prod builds
150
+
151
+ Returns:
152
+ True if build succeeded, False otherwise
153
+ """
154
+ import subprocess
155
+
156
+ # Resolve paths to absolute
157
+ agents_dir = agents_dir.expanduser().resolve()
158
+ agent_path = agents_dir / agent_name
159
+ dockerfile_path = agent_path / "Dockerfile"
160
+
161
+ if not dockerfile_path.exists():
162
+ logger.warning(f"No Dockerfile found for agent '{agent_name}' at {dockerfile_path}")
163
+ return False
164
+
165
+ image_tag = f"{agent_name}:latest"
166
+
167
+ # Determine build context and target
168
+ if plato_client_root:
169
+ plato_client_root = plato_client_root.expanduser().resolve()
170
+
171
+ if plato_client_root and plato_client_root.exists():
172
+ # Dev build from plato-client root (includes local python-sdk)
173
+ build_context = str(plato_client_root)
174
+ dockerfile_abs = str(dockerfile_path)
175
+ target = "dev"
176
+ logger.info(f"Building {image_tag} (dev mode from {build_context})...")
177
+ else:
178
+ # Prod build from agent directory
179
+ build_context = str(agent_path)
180
+ dockerfile_abs = str(dockerfile_path)
181
+ target = "prod"
182
+ logger.info(f"Building {image_tag} (prod mode from {build_context})...")
183
+
184
+ cmd = [
185
+ "docker",
186
+ "build",
187
+ "--target",
188
+ target,
189
+ "-t",
190
+ image_tag,
191
+ "-f",
192
+ dockerfile_abs,
193
+ ]
194
+
195
+ # Use native platform for local dev on ARM Macs (avoids slow emulation)
196
+ if platform.machine() == "arm64":
197
+ cmd.extend(["--build-arg", "PLATFORM=linux/arm64"])
198
+
199
+ cmd.append(build_context)
200
+
201
+ logger.debug(f"Build command: {' '.join(cmd)}")
202
+
203
+ result = subprocess.run(cmd, capture_output=True, text=True)
204
+
205
+ if result.returncode != 0:
206
+ logger.error(f"Failed to build {image_tag}:\n{result.stderr}")
207
+ return False
208
+
209
+ logger.info(f"Successfully built {image_tag}")
210
+ return True
211
+
212
+
213
+ def _extract_agent_images_from_config(config_data: dict) -> list[str]:
214
+ """Extract agent image names from config data.
215
+
216
+ Args:
217
+ config_data: Raw config dictionary
218
+
219
+ Returns:
220
+ List of image names (without tags) that are local (not from a registry)
221
+ """
222
+ images = []
223
+
224
+ # Check agents section
225
+ agents = config_data.get("agents", {})
226
+ for agent_config in agents.values():
227
+ if isinstance(agent_config, dict):
228
+ image = agent_config.get("image", "")
229
+ # Only include local images (no registry prefix like ghcr.io/)
230
+ if image and "/" not in image.split(":")[0]:
231
+ # Extract name without tag
232
+ name = image.split(":")[0]
233
+ if name not in images:
234
+ images.append(name)
235
+
236
+ # Also check direct coder/verifier fields
237
+ for field in ["coder", "verifier"]:
238
+ agent_config = config_data.get(field, {})
239
+ if isinstance(agent_config, dict):
240
+ image = agent_config.get("image", "")
241
+ if image and "/" not in image.split(":")[0]:
242
+ name = image.split(":")[0]
243
+ if name not in images:
244
+ images.append(name)
245
+
246
+ return images
247
+
248
+
249
+ async def _run_dev(
250
+ world_name: str,
251
+ config_path: Path,
252
+ env_timeout: int = 600,
253
+ chronos_url: str | None = None,
254
+ api_key: str | None = None,
255
+ agents_dir: Path | None = None,
256
+ ) -> None:
257
+ """Run a world locally with automatic environment creation.
258
+
259
+ This mimics what Chronos does but runs locally for debugging:
260
+ 1. Load and parse the config
261
+ 2. Build local agent images if --agents-dir is provided
262
+ 3. Create Plato session with all environments
263
+ 4. Optionally initialize Chronos logging for callbacks
264
+ 5. Run the world with the session attached
265
+
266
+ Args:
267
+ world_name: Name of the world to run
268
+ config_path: Path to the config JSON file
269
+ env_timeout: Timeout for environment creation (seconds)
270
+ chronos_url: Optional Chronos base URL for sending log events
271
+ api_key: Optional Plato API key (used for Chronos session creation)
272
+ agents_dir: Optional directory containing agent source code
273
+ """
274
+ from uuid import uuid4
275
+
276
+ from plato.v2 import AsyncPlato
277
+ from plato.worlds.base import get_world
278
+
279
+ discover_worlds()
280
+
281
+ world_cls = get_world(world_name)
282
+ if world_cls is None:
283
+ from plato.worlds.base import get_registered_worlds
284
+
285
+ available = list(get_registered_worlds().keys())
286
+ raise ValueError(f"World '{world_name}' not found. Available: {available}")
287
+
288
+ # Load config
289
+ config_class = world_cls.get_config_class()
290
+ with open(config_path) as f:
291
+ config_data = json.load(f)
292
+
293
+ # Parse the config to get typed access
294
+ run_config = config_class._from_dict(config_data.copy())
295
+
296
+ # Build local agent images if agents_dir is provided
297
+ if agents_dir:
298
+ # Resolve agents_dir to absolute path
299
+ agents_dir = agents_dir.expanduser().resolve()
300
+ agent_images = _extract_agent_images_from_config(config_data)
301
+ if agent_images:
302
+ logger.info(f"Building local agent images: {agent_images}")
303
+ # Determine if we're in a plato-client repo for dev builds
304
+ # (agents_dir is something like /path/to/plato-client/agents)
305
+ plato_client_root = agents_dir.parent if agents_dir.name == "agents" else None
306
+ for agent_name in agent_images:
307
+ success = await _build_agent_image(agent_name, agents_dir, plato_client_root)
308
+ if not success:
309
+ raise RuntimeError(f"Failed to build agent image: {agent_name}")
310
+ else:
311
+ logger.info("No local agent images found in config")
312
+
313
+ # Get environment configs from the parsed config
314
+ env_configs: list[EnvConfig] = run_config.get_envs()
315
+
316
+ # Create Plato client
317
+ plato = AsyncPlato()
318
+ session = None
319
+
320
+ # Initialize Chronos logging if URL provided
321
+ chronos_session_id: str | None = None
322
+ if chronos_url:
323
+ from plato.agents import init_logging
324
+
325
+ chronos_session_id = f"dev-{uuid4().hex[:8]}"
326
+ callback_url = f"{chronos_url.rstrip('/')}/api/v1/callback"
327
+ init_logging(
328
+ callback_url=callback_url,
329
+ session_id=chronos_session_id,
330
+ )
331
+ logger.info(f"Chronos logging enabled: {callback_url} (session: {chronos_session_id})")
332
+
333
+ # Update run_config with session info for agents
334
+ run_config.session_id = chronos_session_id
335
+ run_config.callback_url = callback_url
336
+
337
+ try:
338
+ if env_configs:
339
+ logger.info(f"Creating {len(env_configs)} environments...")
340
+ session = await plato.sessions.create(envs=env_configs, timeout=env_timeout)
341
+ logger.info(f"Created Plato session: {session.session_id}")
342
+ logger.info(f"Environments: {[e.alias for e in session.envs]}")
343
+
344
+ # Serialize and add to config
345
+ serialized = session.dump()
346
+ run_config.plato_session = serialized
347
+ else:
348
+ logger.info("No environments defined for this world")
349
+
350
+ # Run the world
351
+ logger.info(f"Starting world '{world_name}'...")
352
+ world_instance = world_cls()
353
+ await world_instance.run(run_config)
354
+
355
+ finally:
356
+ # Cleanup
357
+ if session:
358
+ logger.info("Closing Plato session...")
359
+ await session.close()
360
+ await plato.close()
361
+
362
+ # Reset logging
363
+ if chronos_url:
364
+ from plato.agents import reset_logging
365
+
366
+ reset_logging()
367
+
368
+
369
+ def _setup_colored_logging(verbose: bool = False) -> None:
370
+ """Setup colored logging with filtered noisy loggers."""
371
+ log_level = logging.DEBUG if verbose else logging.INFO
372
+
373
+ # Define colors for different log levels
374
+ colors = {
375
+ "DEBUG": "\033[36m", # Cyan
376
+ "INFO": "\033[32m", # Green
377
+ "WARNING": "\033[33m", # Yellow
378
+ "ERROR": "\033[31m", # Red
379
+ "CRITICAL": "\033[35m", # Magenta
380
+ }
381
+ reset = "\033[0m"
382
+
383
+ class ColoredFormatter(logging.Formatter):
384
+ def format(self, record: logging.LogRecord) -> str:
385
+ color = colors.get(record.levelname, "")
386
+ record.levelname = f"{color}{record.levelname}{reset}"
387
+ record.name = f"\033[34m{record.name}{reset}" # Blue for logger name
388
+ return super().format(record)
389
+
390
+ # Create handler with colored formatter
391
+ handler = logging.StreamHandler()
392
+ handler.setFormatter(
393
+ ColoredFormatter(
394
+ "%(asctime)s [%(levelname)s] %(name)s: %(message)s",
395
+ datefmt="%H:%M:%S",
396
+ )
397
+ )
398
+
399
+ # Configure root logger
400
+ root_logger = logging.getLogger()
401
+ root_logger.setLevel(log_level)
402
+ root_logger.handlers = [handler]
403
+
404
+ # Silence noisy HTTP loggers
405
+ for noisy_logger in ["httpcore", "httpx", "urllib3", "hpack"]:
406
+ logging.getLogger(noisy_logger).setLevel(logging.WARNING)
407
+
408
+
409
+ @app.command("dev")
410
+ def dev(
411
+ world: Annotated[str, typer.Option("--world", "-w", help="World name to run")],
412
+ config: Annotated[Path, typer.Option("--config", "-c", help="Path to config JSON file")],
413
+ env_timeout: Annotated[int, typer.Option("--env-timeout", help="Timeout for environment creation (seconds)")] = 600,
414
+ chronos_url: Annotated[
415
+ str | None, typer.Option("--chronos-url", help="Chronos base URL for log events (e.g., http://localhost:8000)")
416
+ ] = None,
417
+ api_key: Annotated[str | None, typer.Option("--api-key", help="Plato API key for Chronos authentication")] = None,
418
+ agents_dir: Annotated[
419
+ Path | None,
420
+ typer.Option("--agents-dir", "-a", help="Directory containing agent source code (builds local images)"),
421
+ ] = None,
422
+ verbose: Annotated[bool, typer.Option("--verbose", "-v", help="Enable verbose logging")] = False,
423
+ ) -> None:
424
+ """Run a world locally for development/debugging.
425
+
426
+ This creates Plato environments automatically (like Chronos does)
427
+ and runs the world with the session attached.
428
+
429
+ Optionally sends log events to a Chronos server for real-time monitoring.
430
+
431
+ Example config.json:
432
+ {
433
+ "instruction": "Create a git repo and upload files to S3",
434
+ "coder": {
435
+ "image": "openhands:latest",
436
+ "config": {"model_name": "gemini/gemini-3-flash-preview"}
437
+ },
438
+ "secrets": {
439
+ "gemini_api_key": "..."
440
+ }
441
+ }
442
+
443
+ Environment variables:
444
+ PLATO_API_KEY: API key for Plato (required)
445
+
446
+ Examples:
447
+ # Basic usage
448
+ plato-world-runner dev -w code -c config.json
449
+
450
+ # With local agent builds (from plato-client repo)
451
+ plato-world-runner dev -w code -c config.json --agents-dir ~/plato-client/agents
452
+
453
+ # With Chronos logging
454
+ plato-world-runner dev -w code -c config.json --chronos-url http://localhost:8000
455
+ """
456
+ # Setup colored logging with filtered noisy loggers
457
+ _setup_colored_logging(verbose)
458
+
459
+ if not config.exists():
460
+ typer.echo(f"Error: Config file not found: {config}", err=True)
461
+ raise typer.Exit(1)
462
+
463
+ if not os.environ.get("PLATO_API_KEY"):
464
+ typer.echo("Error: PLATO_API_KEY environment variable required", err=True)
465
+ raise typer.Exit(1)
466
+
467
+ try:
468
+ asyncio.run(_run_dev(world, config, env_timeout, chronos_url, api_key, agents_dir))
469
+ except Exception as e:
470
+ logger.exception(f"World execution failed: {e}")
471
+ raise typer.Exit(1)
472
+
473
+
474
+ def main() -> None:
475
+ """CLI entry point."""
476
+ app()
477
+
478
+
479
+ if __name__ == "__main__":
480
+ main()
@@ -1 +0,0 @@
1
- 2.2.2