plato-sdk-v2 2.8.8__tar.gz → 2.9.0__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 (622) hide show
  1. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/PKG-INFO +1 -1
  2. plato_sdk_v2-2.9.0/VERSION +1 -0
  3. plato_sdk_v2-2.9.0/ci/tests/unit.sh +7 -0
  4. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/agents/base.py +3 -9
  5. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/agents/config.py +7 -64
  6. plato_sdk_v2-2.9.0/plato/agents/markers.py +18 -0
  7. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/agents/otel.py +22 -60
  8. plato_sdk_v2-2.9.0/plato/agents/schema.py +96 -0
  9. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/cli/chronos.py +2 -100
  10. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/worlds/__init__.py +2 -6
  11. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/worlds/base.py +44 -130
  12. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/worlds/config.py +5 -166
  13. plato_sdk_v2-2.9.0/plato/worlds/markers.py +63 -0
  14. plato_sdk_v2-2.9.0/plato/worlds/models.py +23 -0
  15. plato_sdk_v2-2.9.0/plato/worlds/schema.py +154 -0
  16. plato_sdk_v2-2.9.0/tests/test_agents.py +293 -0
  17. plato_sdk_v2-2.9.0/tests/test_worlds.py +416 -0
  18. plato_sdk_v2-2.8.8/VERSION +0 -1
  19. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/.claude/agents/sim-creator.md +0 -0
  20. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/.gitignore +0 -0
  21. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/BUILDING_SIMS.md +0 -0
  22. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/README.md +0 -0
  23. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/ci/CLAUDE.md +0 -0
  24. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/ci/deploy.sh +0 -0
  25. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/ci/lint.sh +0 -0
  26. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/ci/setup.sh +0 -0
  27. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/ci/version-bump.sh +0 -0
  28. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/docs/AGENT_SPEC.md +0 -0
  29. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/docs/CLI.md +0 -0
  30. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/docs/GENERATING_SIM_SDKS.md +0 -0
  31. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/docs/SIMULATOR_LIFECYCLE.md +0 -0
  32. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/docs/SIM_CREATOR.md +0 -0
  33. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/docs/cli/agent.md +0 -0
  34. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/docs/cli/flows.md +0 -0
  35. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/docs/cli/pm.md +0 -0
  36. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/docs/cli/sandbox.md +0 -0
  37. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/docs/cli/sims.md +0 -0
  38. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/docs/cli/world.md +0 -0
  39. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/docs/sim-creation-pipeline.md +0 -0
  40. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/docs/skill-restructure-plan.md +0 -0
  41. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/docs/skills/SIM-CREATION-ARCHITECTURE.md +0 -0
  42. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/docs/skills/sim-config/SKILL.md +0 -0
  43. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/docs/skills/sim-creator/SKILL.md +0 -0
  44. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/docs/skills/sim-debugger/SKILL.md +0 -0
  45. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/docs/skills/sim-flow-audit/SKILL.md +0 -0
  46. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/docs/skills/sim-flow-clear/SKILL.md +0 -0
  47. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/docs/skills/sim-flow-mutations/SKILL.md +0 -0
  48. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/docs/skills/sim-flow-run/SKILL.md +0 -0
  49. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/docs/skills/sim-research/SKILL.md +0 -0
  50. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/docs/skills/sim-review/SKILL.md +0 -0
  51. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/docs/skills/sim-sandbox-login/SKILL.md +0 -0
  52. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/docs/skills/sim-sandbox-services/SKILL.md +0 -0
  53. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/docs/skills/sim-sandbox-start/SKILL.md +0 -0
  54. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/docs/skills/sim-sandbox-worker/SKILL.md +0 -0
  55. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/docs/skills/sim-snapshot/SKILL.md +0 -0
  56. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/docs/skills/sim-submit/SKILL.md +0 -0
  57. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/docs/skills/sim-validate/SKILL.md +0 -0
  58. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/docs/skills/trajectory-analysis/SKILL.md +0 -0
  59. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/docs/testcommit +0 -0
  60. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/docs/unit.sh +0 -0
  61. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/examples/preview_local_dev.py +0 -0
  62. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/examples/snapshot_docker_image.py +0 -0
  63. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/examples/snapshot_local_dev.py +0 -0
  64. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/examples/test_session_isolation.py +0 -0
  65. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/examples/test_session_network.py +0 -0
  66. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/__init__.py +0 -0
  67. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/__init__.py +0 -0
  68. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/__init__.py +0 -0
  69. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/__init__.py +0 -0
  70. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/agent_artifacts/__init__.py +0 -0
  71. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/agent_artifacts/archive_agent_artifact.py +0 -0
  72. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/agent_artifacts/create_agent_artifact.py +0 -0
  73. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/agent_artifacts/get_agent_artifact_by_public_id.py +0 -0
  74. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/agent_artifacts/get_agent_artifacts.py +0 -0
  75. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/cluster/__init__.py +0 -0
  76. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/cluster/cleanup_stale_vms.py +0 -0
  77. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/cluster/get_dispatchers.py +0 -0
  78. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/cluster/get_nodes_status.py +0 -0
  79. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/cluster/get_snapshot_lineage.py +0 -0
  80. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/cluster/get_snapshots_status.py +0 -0
  81. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/cluster/pause_resume_dispatchers.py +0 -0
  82. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/cluster/prefetch_snapshot.py +0 -0
  83. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/env/__init__.py +0 -0
  84. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/env/backup.py +0 -0
  85. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/env/cleanup.py +0 -0
  86. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/env/close.py +0 -0
  87. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/env/close_async.py +0 -0
  88. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/env/create.py +0 -0
  89. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/env/create_batch.py +0 -0
  90. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/env/create_simulator.py +0 -0
  91. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/env/evaluate_session.py +0 -0
  92. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/env/generate_mutations.py +0 -0
  93. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/env/generate_mutations_single.py +0 -0
  94. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/env/get_active_session.py +0 -0
  95. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/env/get_app_sim_worker_info.py +0 -0
  96. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/env/get_cdp_url.py +0 -0
  97. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/env/get_flows.py +0 -0
  98. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/env/get_interface_worker_info.py +0 -0
  99. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/env/get_job_info.py +0 -0
  100. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/env/get_job_status.py +0 -0
  101. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/env/get_job_worker_info.py +0 -0
  102. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/env/get_proxy_url.py +0 -0
  103. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/env/get_public_url.py +0 -0
  104. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/env/get_simulator_by_name.py +0 -0
  105. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/env/get_simulators.py +0 -0
  106. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/env/get_state.py +0 -0
  107. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/env/get_worker_ready.py +0 -0
  108. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/env/log_state_mutation.py +0 -0
  109. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/env/rescore_simulator_sessions.py +0 -0
  110. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/env/reset.py +0 -0
  111. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/env/score.py +0 -0
  112. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/env/send_heartbeat.py +0 -0
  113. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/env/update_simulator.py +0 -0
  114. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/evals/__init__.py +0 -0
  115. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/evals/create_test_case_review.py +0 -0
  116. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/evals/evaluate_python.py +0 -0
  117. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/evals/get_all_test_case_reviews.py +0 -0
  118. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/evals/get_scores_by_user.py +0 -0
  119. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/evals/get_scoring.py +0 -0
  120. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/evals/get_test_case_review.py +0 -0
  121. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/evals/human_in_the_loop_scoring.py +0 -0
  122. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/evals/start_eval_from_git.py +0 -0
  123. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/gitea/__init__.py +0 -0
  124. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/gitea/create_gitea_repository.py +0 -0
  125. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/gitea/create_simulator_repository.py +0 -0
  126. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/gitea/delete_gitea_repository.py +0 -0
  127. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/gitea/get_accessible_simulators.py +0 -0
  128. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/gitea/get_gitea_credentials.py +0 -0
  129. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/gitea/get_gitea_repository.py +0 -0
  130. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/gitea/get_my_gitea_info.py +0 -0
  131. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/gitea/get_my_repositories.py +0 -0
  132. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/gitea/get_repository_branches.py +0 -0
  133. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/gitea/get_repository_contents.py +0 -0
  134. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/gitea/get_simulator_file_content.py +0 -0
  135. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/gitea/get_simulator_repository.py +0 -0
  136. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/gitea/get_simulator_repository_branches.py +0 -0
  137. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/gitea/get_simulator_repository_contents.py +0 -0
  138. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/jobs/__init__.py +0 -0
  139. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/jobs/get_job_by_id.py +0 -0
  140. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/jobs/get_jobs_by_group_id.py +0 -0
  141. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/jobs/get_keepalive_jobs.py +0 -0
  142. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/jobs/list_jobs.py +0 -0
  143. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/jobs/update_job_status.py +0 -0
  144. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/organization/__init__.py +0 -0
  145. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/organization/create_annotator_assignment.py +0 -0
  146. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/organization/create_org_api_key.py +0 -0
  147. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/organization/create_org_policy.py +0 -0
  148. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/organization/delete_org_api_key.py +0 -0
  149. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/organization/delete_org_policy.py +0 -0
  150. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/organization/get_annotator_assignments.py +0 -0
  151. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/organization/get_org_api_key_policies.py +0 -0
  152. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/organization/get_org_api_keys.py +0 -0
  153. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/organization/get_org_policies.py +0 -0
  154. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/organization/get_organization_concurrency_status.py +0 -0
  155. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/organization/get_organization_members.py +0 -0
  156. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/organization/update_annotator_assignment_stage.py +0 -0
  157. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/organization/update_organization_concurrency_limit.py +0 -0
  158. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/queue/__init__.py +0 -0
  159. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/queue/get_queue_status.py +0 -0
  160. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/queue/get_vm_detail.py +0 -0
  161. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/queue/get_vms.py +0 -0
  162. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/queue/get_workers.py +0 -0
  163. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/sandbox/__init__.py +0 -0
  164. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/sandbox/checkpoint_vm.py +0 -0
  165. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/sandbox/close_vm.py +0 -0
  166. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/sandbox/create_vm.py +0 -0
  167. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/sandbox/execute_ssh_command.py +0 -0
  168. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/sandbox/get_operation_events.py +0 -0
  169. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/sandbox/healthy_services.py +0 -0
  170. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/sandbox/healthy_worker.py +0 -0
  171. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/sandbox/save_vm_snapshot.py +0 -0
  172. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/sandbox/setup_root_access.py +0 -0
  173. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/sandbox/setup_sandbox.py +0 -0
  174. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/sandbox/start_worker.py +0 -0
  175. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/session/__init__.py +0 -0
  176. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/session/analyze_labels.py +0 -0
  177. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/session/archive_session.py +0 -0
  178. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/session/archive_session_logs_endpoint.py +0 -0
  179. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/session/create_from_labels.py +0 -0
  180. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/session/create_session_from_browser.py +0 -0
  181. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/session/create_session_from_env_recording.py +0 -0
  182. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/session/create_session_from_har.py +0 -0
  183. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/session/get_env_recording.py +0 -0
  184. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/session/get_grouped_replay_sessions.py +0 -0
  185. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/session/get_logs_status.py +0 -0
  186. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/session/get_network_requests.py +0 -0
  187. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/session/get_next_session_for_annotator.py +0 -0
  188. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/session/get_public_benchmark_sessions.py +0 -0
  189. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/session/get_replay_score_data.py +0 -0
  190. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/session/get_rrweb_actions.py +0 -0
  191. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/session/get_rrweb_events.py +0 -0
  192. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/session/get_screen_recording.py +0 -0
  193. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/session/get_session.py +0 -0
  194. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/session/get_session_replays.py +0 -0
  195. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/session/get_sessions.py +0 -0
  196. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/session/get_sessions_for_archival.py +0 -0
  197. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/session/get_ui_events.py +0 -0
  198. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/session/restore_session_logs.py +0 -0
  199. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/session/score_session_with_config.py +0 -0
  200. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/session/search_sessions_by_ids.py +0 -0
  201. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/session/set_session_output.py +0 -0
  202. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/session/update_session_public.py +0 -0
  203. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/session/update_session_testcase.py +0 -0
  204. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/session/upload_review_screenshot.py +0 -0
  205. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/simulator/__init__.py +0 -0
  206. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/simulator/add_simulator_review.py +0 -0
  207. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/simulator/batch_create_test_cases.py +0 -0
  208. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/simulator/batch_get_artifact_metadata.py +0 -0
  209. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/simulator/get_all_simulators_info.py +0 -0
  210. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/simulator/get_db_config.py +0 -0
  211. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/simulator/get_env_flows.py +0 -0
  212. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/simulator/get_plato_config.py +0 -0
  213. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/simulator/get_sessions_batch_by_job_groups.py +0 -0
  214. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/simulator/get_sessions_by_job_group.py +0 -0
  215. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/simulator/get_simulator_by_name.py +0 -0
  216. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/simulator/get_simulator_id.py +0 -0
  217. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/simulator/get_simulator_info.py +0 -0
  218. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/simulator/get_simulator_version_details.py +0 -0
  219. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/simulator/get_simulator_versions.py +0 -0
  220. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/simulator/get_start_path.py +0 -0
  221. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/simulator/get_version_by_tag.py +0 -0
  222. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/simulator/list_simulators.py +0 -0
  223. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/simulator/list_simulators_by_org.py +0 -0
  224. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/simulator/list_simulators_status.py +0 -0
  225. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/simulator/register.py +0 -0
  226. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/simulator/update_simulator.py +0 -0
  227. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/simulator/update_simulator_status.py +0 -0
  228. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/simulator/update_tag.py +0 -0
  229. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/testcases/__init__.py +0 -0
  230. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/testcases/archive_organization_test_case_assignments.py +0 -0
  231. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/testcases/archive_organization_testcase.py +0 -0
  232. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/testcases/archive_testcase.py +0 -0
  233. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/testcases/assign_testcase_to_organizations.py +0 -0
  234. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/testcases/assign_testcases_to_work_order_item.py +0 -0
  235. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/testcases/auto_verify_testcase.py +0 -0
  236. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/testcases/bulk_archive_testcases.py +0 -0
  237. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/testcases/convert_text_to_structured_data.py +0 -0
  238. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/testcases/create_testcase.py +0 -0
  239. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/testcases/create_testcase_set.py +0 -0
  240. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/testcases/delete_testcase_set.py +0 -0
  241. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/testcases/filter_human_recorder_testcases.py +0 -0
  242. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/testcases/generate_outcome_schema.py +0 -0
  243. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/testcases/generate_prediction.py +0 -0
  244. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/testcases/generate_prediction_from_steps.py +0 -0
  245. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/testcases/generate_scoring_config_from_sessions.py +0 -0
  246. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/testcases/generate_state_mutations_config_route.py +0 -0
  247. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/testcases/get_human_recorder_tab_counts.py +0 -0
  248. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/testcases/get_human_recorder_testcases.py +0 -0
  249. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/testcases/get_merged_mutations.py +0 -0
  250. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/testcases/get_mutation_groups_for_testcase.py +0 -0
  251. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/testcases/get_next_testcase_for_scoring.py +0 -0
  252. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/testcases/get_organization_test_case_assignments.py +0 -0
  253. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/testcases/get_testcase.py +0 -0
  254. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/testcases/get_testcase_metadata_for_scoring.py +0 -0
  255. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/testcases/get_testcase_sets.py +0 -0
  256. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/testcases/get_testcases.py +0 -0
  257. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/testcases/get_testcases_in_set.py +0 -0
  258. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/testcases/mark_organization_test_case_completed.py +0 -0
  259. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/testcases/update_testcase.py +0 -0
  260. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v1/testcases/version_bump_testcase.py +0 -0
  261. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/__init__.py +0 -0
  262. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/admin/__init__.py +0 -0
  263. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/admin/cache/__init__.py +0 -0
  264. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/admin/cache/clear_all.py +0 -0
  265. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/admin/cache/clear_single_cache.py +0 -0
  266. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/admin/cache/delete_key.py +0 -0
  267. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/admin/cache/get_stats.py +0 -0
  268. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/admin/cache/list_cache_names.py +0 -0
  269. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/agents/__init__.py +0 -0
  270. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/agents/get_agent_ecr_token.py +0 -0
  271. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/agents/get_agent_schema.py +0 -0
  272. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/agents/get_agent_versions.py +0 -0
  273. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/agents/import_agent.py +0 -0
  274. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/agents/list_docker_agents.py +0 -0
  275. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/agents/lookup_agent_version.py +0 -0
  276. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/agents/register_docker_agent.py +0 -0
  277. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/artifacts/__init__.py +0 -0
  278. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/artifacts/get_artifact.py +0 -0
  279. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/chronos/__init__.py +0 -0
  280. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/chronos/launch_job.py +0 -0
  281. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/chronos_packages/__init__.py +0 -0
  282. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/chronos_packages/get_package_versions.py +0 -0
  283. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/chronos_packages/list_chronos_packages.py +0 -0
  284. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/chronos_packages/lookup_package_version.py +0 -0
  285. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/chronos_packages/register_chronos_package.py +0 -0
  286. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/chronos_packages/upload_chronos_package.py +0 -0
  287. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/cluster/__init__.py +0 -0
  288. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/cluster/get_node_config.py +0 -0
  289. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/jobs/__init__.py +0 -0
  290. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/jobs/checkpoint.py +0 -0
  291. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/jobs/close.py +0 -0
  292. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/jobs/connect_routing_info.py +0 -0
  293. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/jobs/connect_url.py +0 -0
  294. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/jobs/disk_snapshot.py +0 -0
  295. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/jobs/execute.py +0 -0
  296. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/jobs/get_flows.py +0 -0
  297. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/jobs/get_plato_config.py +0 -0
  298. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/jobs/heartbeat.py +0 -0
  299. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/jobs/log_for_job.py +0 -0
  300. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/jobs/make.py +0 -0
  301. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/jobs/public_url.py +0 -0
  302. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/jobs/rdp_url.py +0 -0
  303. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/jobs/reset.py +0 -0
  304. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/jobs/set_date.py +0 -0
  305. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/jobs/setup_sandbox.py +0 -0
  306. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/jobs/snapshot.py +0 -0
  307. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/jobs/snapshot_store.py +0 -0
  308. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/jobs/state.py +0 -0
  309. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/jobs/wait_for_ready.py +0 -0
  310. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/networks/__init__.py +0 -0
  311. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/networks/add_member.py +0 -0
  312. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/networks/create_network.py +0 -0
  313. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/networks/delete_network.py +0 -0
  314. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/networks/get_network.py +0 -0
  315. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/networks/list_members.py +0 -0
  316. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/networks/list_networks.py +0 -0
  317. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/networks/remove_member.py +0 -0
  318. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/networks/update_member.py +0 -0
  319. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/pypi/__init__.py +0 -0
  320. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/pypi/download_package.py +0 -0
  321. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/pypi/get_package_schema.py +0 -0
  322. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/pypi/package_index.py +0 -0
  323. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/pypi/simple_index.py +0 -0
  324. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/pypi/upload_package.py +0 -0
  325. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/releases/__init__.py +0 -0
  326. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/releases/create.py +0 -0
  327. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/releases/deploy.py +0 -0
  328. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/releases/get.py +0 -0
  329. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/releases/handle_get_existing_public_ids.py +0 -0
  330. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/releases/handle_import.py +0 -0
  331. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/releases/list_releases.py +0 -0
  332. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/releases/prep_release_assigned_testcases.py +0 -0
  333. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/releases/prep_release_from_work_order.py +0 -0
  334. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/releases/update.py +0 -0
  335. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/sessions/__init__.py +0 -0
  336. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/sessions/add_job.py +0 -0
  337. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/sessions/add_ssh_key.py +0 -0
  338. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/sessions/checkpoint.py +0 -0
  339. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/sessions/close.py +0 -0
  340. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/sessions/connect_network.py +0 -0
  341. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/sessions/disk_snapshot.py +0 -0
  342. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/sessions/evaluate.py +0 -0
  343. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/sessions/execute.py +0 -0
  344. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/sessions/get_connect_url.py +0 -0
  345. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/sessions/get_presigned_url.py +0 -0
  346. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/sessions/get_public_url.py +0 -0
  347. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/sessions/get_rdp_url.py +0 -0
  348. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/sessions/get_s3_content.py +0 -0
  349. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/sessions/get_session_details.py +0 -0
  350. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/sessions/get_session_documents.py +0 -0
  351. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/sessions/get_session_flows.py +0 -0
  352. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/sessions/get_session_logs.py +0 -0
  353. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/sessions/get_session_plato_config.py +0 -0
  354. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/sessions/heartbeat.py +0 -0
  355. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/sessions/list_jobs.py +0 -0
  356. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/sessions/list_sessions.py +0 -0
  357. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/sessions/log_job_mutation.py +0 -0
  358. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/sessions/make.py +0 -0
  359. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/sessions/remove_job.py +0 -0
  360. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/sessions/reset.py +0 -0
  361. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/sessions/set_date.py +0 -0
  362. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/sessions/setup_sandbox.py +0 -0
  363. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/sessions/snapshot.py +0 -0
  364. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/sessions/snapshot_store.py +0 -0
  365. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/sessions/state.py +0 -0
  366. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/sessions/upload_session_documents.py +0 -0
  367. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/sessions/wait_for_ready.py +0 -0
  368. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/user/__init__.py +0 -0
  369. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/user/get_current_user.py +0 -0
  370. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/work_orders/__init__.py +0 -0
  371. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/work_orders/archive_work_order.py +0 -0
  372. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/work_orders/archive_work_order_item.py +0 -0
  373. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/work_orders/create_work_order.py +0 -0
  374. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/work_orders/create_work_order_item.py +0 -0
  375. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/work_orders/get_work_order.py +0 -0
  376. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/v2/work_orders/list_work_orders.py +0 -0
  377. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/version/__init__.py +0 -0
  378. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/api/version/check.py +0 -0
  379. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/client.py +0 -0
  380. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/errors.py +0 -0
  381. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/models/__init__.py +0 -0
  382. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_generated/py.typed +0 -0
  383. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_sims_generator/__init__.py +0 -0
  384. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_sims_generator/cli.py +0 -0
  385. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_sims_generator/instruction.py +0 -0
  386. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_sims_generator/parser.py +0 -0
  387. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_sims_generator/python.py +0 -0
  388. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_sims_generator/templates/instruction/helpers.py.jinja +0 -0
  389. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_sims_generator/templates/instruction/init.py.jinja +0 -0
  390. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_sims_generator/templates/python/api_init.py.jinja +0 -0
  391. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_sims_generator/templates/python/client.py.jinja +0 -0
  392. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_sims_generator/templates/python/endpoint.py.jinja +0 -0
  393. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_sims_generator/templates/python/errors.py.jinja +0 -0
  394. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_sims_generator/templates/python/package_init.py.jinja +0 -0
  395. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_sims_generator/templates/python/tag_init.py.jinja +0 -0
  396. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/_sims_generator/templates/python/version_init.py.jinja +0 -0
  397. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/agents/__init__.py +0 -0
  398. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/agents/artifacts.py +0 -0
  399. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/agents/build.py +0 -0
  400. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/agents/runner.py +0 -0
  401. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/agents/trajectory.py +0 -0
  402. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/chronos/__init__.py +0 -0
  403. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/chronos/api/__init__.py +0 -0
  404. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/chronos/api/admin/__init__.py +0 -0
  405. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/chronos/api/admin/clear_database_api_admin_clear_db_post.py +0 -0
  406. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/chronos/api/admin/sync_agents_api_admin_sync_agents_post.py +0 -0
  407. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/chronos/api/admin/sync_all_api_admin_sync_all_post.py +0 -0
  408. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/chronos/api/admin/sync_runtimes_api_admin_sync_runtimes_post.py +0 -0
  409. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/chronos/api/admin/sync_worlds_api_admin_sync_worlds_post.py +0 -0
  410. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/chronos/api/agents/__init__.py +0 -0
  411. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/chronos/api/agents/create_agent.py +0 -0
  412. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/chronos/api/agents/delete_agent.py +0 -0
  413. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/chronos/api/agents/get_agent.py +0 -0
  414. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/chronos/api/agents/get_agent_schema.py +0 -0
  415. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/chronos/api/agents/get_agent_versions.py +0 -0
  416. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/chronos/api/agents/list_agents.py +0 -0
  417. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/chronos/api/agents/lookup_agent.py +0 -0
  418. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/chronos/api/auth/__init__.py +0 -0
  419. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/chronos/api/auth/debug_auth_api_auth_debug_get.py +0 -0
  420. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/chronos/api/auth/get_auth_status_api_auth_status_get.py +0 -0
  421. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/chronos/api/auth/get_current_user_route_api_auth_me_get.py +0 -0
  422. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/chronos/api/checkpoints/__init__.py +0 -0
  423. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/chronos/api/checkpoints/list_checkpoints.py +0 -0
  424. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/chronos/api/checkpoints/preview_checkpoint.py +0 -0
  425. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/chronos/api/default/__init__.py +0 -0
  426. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/chronos/api/default/health.py +0 -0
  427. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/chronos/api/events/__init__.py +0 -0
  428. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/chronos/api/events/get_session_event.py +0 -0
  429. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/chronos/api/events/list_session_events.py +0 -0
  430. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/chronos/api/jobs/__init__.py +0 -0
  431. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/chronos/api/jobs/launch_job.py +0 -0
  432. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/chronos/api/otel/__init__.py +0 -0
  433. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/chronos/api/otel/get_session_traces_api_otel_sessions__session_id__traces_get.py +0 -0
  434. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/chronos/api/otel/receive_traces_api_otel_v1_traces_post.py +0 -0
  435. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/chronos/api/registry/__init__.py +0 -0
  436. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/chronos/api/registry/get_agent_schema_api_registry_agents__agent_name__schema_get.py +0 -0
  437. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/chronos/api/registry/get_agent_versions_api_registry_agents__agent_name__versions_get.py +0 -0
  438. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/chronos/api/registry/get_world_schema_api_registry_worlds__package_name__schema_get.py +0 -0
  439. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/chronos/api/registry/get_world_versions_api_registry_worlds__package_name__versions_get.py +0 -0
  440. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/chronos/api/registry/list_registry_agents_api_registry_agents_get.py +0 -0
  441. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/chronos/api/registry/list_registry_worlds_api_registry_worlds_get.py +0 -0
  442. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/chronos/api/runtimes/__init__.py +0 -0
  443. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/chronos/api/runtimes/create_runtime.py +0 -0
  444. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/chronos/api/runtimes/delete_runtime.py +0 -0
  445. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/chronos/api/runtimes/get_runtime.py +0 -0
  446. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/chronos/api/runtimes/get_runtime_logs.py +0 -0
  447. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/chronos/api/runtimes/list_runtimes.py +0 -0
  448. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/chronos/api/runtimes/test_runtime.py +0 -0
  449. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/chronos/api/secrets/__init__.py +0 -0
  450. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/chronos/api/secrets/create_secret.py +0 -0
  451. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/chronos/api/secrets/delete_secret.py +0 -0
  452. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/chronos/api/secrets/get_secret.py +0 -0
  453. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/chronos/api/secrets/list_secrets.py +0 -0
  454. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/chronos/api/secrets/update_secret.py +0 -0
  455. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/chronos/api/sessions/__init__.py +0 -0
  456. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/chronos/api/sessions/close_session.py +0 -0
  457. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/chronos/api/sessions/complete_session.py +0 -0
  458. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/chronos/api/sessions/create_session.py +0 -0
  459. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/chronos/api/sessions/get_session.py +0 -0
  460. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/chronos/api/sessions/get_session_bash_logs_download.py +0 -0
  461. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/chronos/api/sessions/get_session_envs.py +0 -0
  462. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/chronos/api/sessions/get_session_live_logs.py +0 -0
  463. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/chronos/api/sessions/get_session_logs.py +0 -0
  464. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/chronos/api/sessions/get_session_logs_download.py +0 -0
  465. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/chronos/api/sessions/get_session_status.py +0 -0
  466. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/chronos/api/sessions/list_session_creators.py +0 -0
  467. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/chronos/api/sessions/list_sessions.py +0 -0
  468. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/chronos/api/sessions/list_tags.py +0 -0
  469. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/chronos/api/sessions/update_session_tags.py +0 -0
  470. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/chronos/api/status/__init__.py +0 -0
  471. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/chronos/api/status/get_status_api_status_get.py +0 -0
  472. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/chronos/api/status/get_version_info_api_version_get.py +0 -0
  473. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/chronos/api/templates/__init__.py +0 -0
  474. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/chronos/api/templates/create_template.py +0 -0
  475. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/chronos/api/templates/delete_template.py +0 -0
  476. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/chronos/api/templates/get_template.py +0 -0
  477. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/chronos/api/templates/list_templates.py +0 -0
  478. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/chronos/api/templates/update_template.py +0 -0
  479. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/chronos/api/trajectories/__init__.py +0 -0
  480. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/chronos/api/trajectories/get_trajectory.py +0 -0
  481. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/chronos/api/trajectories/list_trajectories.py +0 -0
  482. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/chronos/api/worlds/__init__.py +0 -0
  483. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/chronos/api/worlds/create_world.py +0 -0
  484. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/chronos/api/worlds/delete_world.py +0 -0
  485. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/chronos/api/worlds/get_world.py +0 -0
  486. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/chronos/api/worlds/list_worlds.py +0 -0
  487. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/chronos/client.py +0 -0
  488. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/chronos/errors.py +0 -0
  489. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/chronos/models/__init__.py +0 -0
  490. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/chronos/py.typed +0 -0
  491. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/cli/__init__.py +0 -0
  492. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/cli/agent.py +0 -0
  493. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/cli/audit_ui.py +0 -0
  494. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/cli/compose.py +0 -0
  495. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/cli/main.py +0 -0
  496. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/cli/pm.py +0 -0
  497. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/cli/proxy.py +0 -0
  498. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/cli/sandbox.py +0 -0
  499. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/cli/session.py +0 -0
  500. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/cli/utils.py +0 -0
  501. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/cli/verify.py +0 -0
  502. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/cli/world.py +0 -0
  503. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/py.typed +0 -0
  504. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/sims/README.md +0 -0
  505. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/sims/__init__.py +0 -0
  506. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/sims/agent_helpers.py +0 -0
  507. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/sims/cli.py +0 -0
  508. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/sims/generate_clients.py +0 -0
  509. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/sims/registry.py +0 -0
  510. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/v1/__init__.py +0 -0
  511. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/v1/audit_ui.py +0 -0
  512. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/v1/cli/__init__.py +0 -0
  513. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/v1/cli/agent.py +0 -0
  514. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/v1/cli/chronos.py +0 -0
  515. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/v1/cli/main.py +0 -0
  516. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/v1/cli/pm.py +0 -0
  517. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/v1/cli/proxy.py +0 -0
  518. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/v1/cli/sandbox.py +0 -0
  519. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/v1/cli/ssh.py +0 -0
  520. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/v1/cli/templates/world-runner.Dockerfile +0 -0
  521. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/v1/cli/utils.py +0 -0
  522. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/v1/cli/verify.py +0 -0
  523. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/v1/cli/world.py +0 -0
  524. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/v1/cli.py +0 -0
  525. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/v1/config.py +0 -0
  526. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/v1/examples/doordash_tasks.py +0 -0
  527. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/v1/examples/loadtest.py +0 -0
  528. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/v1/examples/test_env.py +0 -0
  529. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/v1/examples/test_env_custom_browser.py +0 -0
  530. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/v1/examples/test_env_sync.py +0 -0
  531. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/v1/examples/test_reuse_env.py +0 -0
  532. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/v1/examples/test_run.py +0 -0
  533. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/v1/exceptions.py +0 -0
  534. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/v1/extensions/envgen-recorder/README.md +0 -0
  535. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/v1/extensions/envgen-recorder/api-client.js +0 -0
  536. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/v1/extensions/envgen-recorder/background.js +0 -0
  537. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/v1/extensions/envgen-recorder/build-sdk.js +0 -0
  538. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/v1/extensions/envgen-recorder/content.js +0 -0
  539. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/v1/extensions/envgen-recorder/manifest.json +0 -0
  540. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/v1/extensions/envgen-recorder/offscreen.html +0 -0
  541. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/v1/extensions/envgen-recorder/offscreen.js +0 -0
  542. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/v1/extensions/envgen-recorder/options.html +0 -0
  543. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/v1/extensions/envgen-recorder/options.js +0 -0
  544. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/v1/extensions/envgen-recorder/package-lock.json +0 -0
  545. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/v1/extensions/envgen-recorder/package.json +0 -0
  546. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/v1/extensions/envgen-recorder/plato-sdk-bundle.js +0 -0
  547. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/v1/extensions/envgen-recorder/plato-sdk-bundle.js.map +0 -0
  548. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/v1/extensions/envgen-recorder/popup.html +0 -0
  549. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/v1/extensions/envgen-recorder/popup.js +0 -0
  550. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/v1/extensions/envgen-recorder/review-panel.html +0 -0
  551. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/v1/extensions/envgen-recorder/review-panel.js +0 -0
  552. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/v1/extensions/envgen-recorder/review-success.html +0 -0
  553. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/v1/extensions/envgen-recorder/review-success.js +0 -0
  554. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/v1/extensions/envgen-recorder/session-active.html +0 -0
  555. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/v1/extensions/envgen-recorder/session-active.js +0 -0
  556. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/v1/extensions/envgen-recorder/session-ended.html +0 -0
  557. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/v1/extensions/envgen-recorder/session-ended.js +0 -0
  558. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/v1/extensions/envgen-recorder/session-setup.html +0 -0
  559. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/v1/extensions/envgen-recorder/session-setup.js +0 -0
  560. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/v1/extensions/envgen-recorder/sessions.html +0 -0
  561. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/v1/extensions/envgen-recorder/sessions.js +0 -0
  562. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/v1/extensions/envgen-recorder/styles.css +0 -0
  563. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/v1/flow_executor.py +0 -0
  564. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/v1/models/__init__.py +0 -0
  565. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/v1/models/build_models.py +0 -0
  566. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/v1/models/env.py +0 -0
  567. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/v1/models/flow.py +0 -0
  568. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/v1/models/sandbox.py +0 -0
  569. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/v1/models/task.py +0 -0
  570. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/v1/sandbox_sdk.py +0 -0
  571. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/v1/sdk.py +0 -0
  572. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/v1/sync_env.py +0 -0
  573. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/v1/sync_flow_executor.py +0 -0
  574. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/v1/sync_sdk.py +0 -0
  575. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/v1/utils/proxytunnel.py +0 -0
  576. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/v2/__init__.py +0 -0
  577. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/v2/async_/__init__.py +0 -0
  578. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/v2/async_/artifact.py +0 -0
  579. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/v2/async_/chronos.py +0 -0
  580. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/v2/async_/client.py +0 -0
  581. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/v2/async_/environment.py +0 -0
  582. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/v2/async_/flow_executor.py +0 -0
  583. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/v2/async_/session.py +0 -0
  584. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/v2/models.py +0 -0
  585. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/v2/sync/__init__.py +0 -0
  586. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/v2/sync/artifact.py +0 -0
  587. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/v2/sync/chronos.py +0 -0
  588. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/v2/sync/client.py +0 -0
  589. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/v2/sync/environment.py +0 -0
  590. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/v2/sync/flow_executor.py +0 -0
  591. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/v2/sync/sandbox.py +0 -0
  592. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/v2/sync/session.py +0 -0
  593. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/v2/types.py +0 -0
  594. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/v2/utils/__init__.py +0 -0
  595. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/v2/utils/db_cleanup.py +0 -0
  596. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/v2/utils/gateway_tunnel.py +0 -0
  597. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/v2/utils/models.py +0 -0
  598. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/v2/utils/proxy_tunnel.py +0 -0
  599. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/worlds/README.md +0 -0
  600. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/worlds/build_hook.py +0 -0
  601. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/plato/worlds/runner.py +0 -0
  602. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/pyproject.toml +0 -0
  603. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/scripts/get_all_artifact_targets.py +0 -0
  604. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/tests/__init__.py +0 -0
  605. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/tests/integration/__init__.py +0 -0
  606. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/tests/integration/conftest.py +0 -0
  607. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/tests/integration/test_browser_agent.py +0 -0
  608. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/tests/integration/test_chronos_callback.py +0 -0
  609. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/tests/integration/test_cleanup_snapshot.py +0 -0
  610. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/tests/integration/test_code_world.py +0 -0
  611. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/tests/integration/test_harbor_agent_runner.py +0 -0
  612. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/tests/sims/__init__.py +0 -0
  613. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/tests/sims/conftest.py +0 -0
  614. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/tests/sims/test_agent_helpers.py +0 -0
  615. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/tests/test_heartbeat_keepalive.py +0 -0
  616. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/tests/test_session_serialization.py +0 -0
  617. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/tests/test_set_date.py +0 -0
  618. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/tests/test_v2_imports.py +0 -0
  619. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/tests/test_v2_multisim_integration.py +0 -0
  620. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/tests/test_v2_session.py +0 -0
  621. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/tests/test_version.py +0 -0
  622. {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.0}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: plato-sdk-v2
3
- Version: 2.8.8
3
+ Version: 2.9.0
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.9.0
@@ -0,0 +1,7 @@
1
+ #!/bin/bash
2
+ set -e
3
+ export PATH="$HOME/.local/bin:$PATH"
4
+ cd "$(dirname "$0")/../.."
5
+
6
+ echo "Running unit tests..."
7
+ uv run --frozen pytest tests/test_agents.py tests/test_worlds.py tests/test_v2_imports.py -v --tb=short --ignore-glob="**/test_chronos*" -k "not ChronosCallback"
@@ -2,6 +2,7 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
+ import importlib.metadata
5
6
  import json
6
7
  import logging
7
8
  from abc import ABC, abstractmethod
@@ -9,6 +10,7 @@ from pathlib import Path
9
10
  from typing import Any, ClassVar, Generic, TypeVar, get_args, get_origin
10
11
 
11
12
  from plato.agents.config import AgentConfig
13
+ from plato.agents.schema import get_agent_schema
12
14
 
13
15
  logger = logging.getLogger(__name__)
14
16
 
@@ -91,8 +93,6 @@ class BaseAgent(ABC, Generic[ConfigT]):
91
93
  @classmethod
92
94
  def get_version(cls) -> str:
93
95
  """Get version from package metadata."""
94
- import importlib.metadata
95
-
96
96
  for pkg_name in [cls.__module__.split(".")[0], f"plato-agent-{cls.name}"]:
97
97
  try:
98
98
  return importlib.metadata.version(pkg_name)
@@ -103,13 +103,7 @@ class BaseAgent(ABC, Generic[ConfigT]):
103
103
  @classmethod
104
104
  def get_schema(cls) -> dict:
105
105
  """Get full schema for the agent including config and build schemas."""
106
- from plato.agents.build import BuildConfig
107
-
108
- config_class = cls.get_config_class()
109
- return {
110
- "config": config_class.get_json_schema(),
111
- "build": BuildConfig.get_json_schema(),
112
- }
106
+ return get_agent_schema(cls)
113
107
 
114
108
  @abstractmethod
115
109
  async def run(self, instruction: str) -> None:
@@ -17,25 +17,15 @@ Example:
17
17
 
18
18
  from __future__ import annotations
19
19
 
20
+ import base64
20
21
  import json
22
+ import os
21
23
  from typing import Any
22
24
 
23
25
  from pydantic_settings import BaseSettings, SettingsConfigDict
24
26
 
25
-
26
- class Secret:
27
- """Annotation marker for secret fields.
28
-
29
- Fields annotated with Secret are automatically loaded from environment variables.
30
- The env var name is the uppercase version of the field name (e.g., api_key -> API_KEY).
31
-
32
- Usage:
33
- api_key: Annotated[str, Secret(description="API key")]
34
- """
35
-
36
- def __init__(self, description: str = "", required: bool = False):
37
- self.description = description
38
- self.required = required
27
+ from plato.agents.markers import Secret
28
+ from plato.agents.schema import get_agent_config_schema, get_field_secrets
39
29
 
40
30
 
41
31
  class AgentConfig(BaseSettings):
@@ -68,56 +58,12 @@ class AgentConfig(BaseSettings):
68
58
  @classmethod
69
59
  def get_field_secrets(cls) -> dict[str, Secret]:
70
60
  """Get Secret annotations for each field."""
71
- result: dict[str, Secret] = {}
72
-
73
- for field_name, field_info in cls.model_fields.items():
74
- for meta in field_info.metadata:
75
- if isinstance(meta, Secret):
76
- result[field_name] = meta
77
- break
78
-
79
- return result
61
+ return get_field_secrets(cls)
80
62
 
81
63
  @classmethod
82
64
  def get_json_schema(cls) -> dict:
83
65
  """Get JSON schema with secrets separated."""
84
- full_schema = cls.model_json_schema()
85
- full_schema.pop("title", None)
86
-
87
- secrets_map = cls.get_field_secrets()
88
- properties = full_schema.get("properties", {})
89
-
90
- config_properties = {}
91
- secrets = []
92
-
93
- # Skip internal fields
94
- internal_fields = {"logs_dir"}
95
-
96
- for field_name, prop_schema in properties.items():
97
- if field_name in internal_fields:
98
- continue
99
-
100
- if field_name in secrets_map:
101
- secret = secrets_map[field_name]
102
- secrets.append(
103
- {
104
- "name": field_name,
105
- "description": secret.description,
106
- "required": secret.required,
107
- }
108
- )
109
- else:
110
- config_properties[field_name] = prop_schema
111
-
112
- required = [r for r in full_schema.get("required", []) if r not in internal_fields and r not in secrets_map]
113
-
114
- return {
115
- "$schema": "https://json-schema.org/draft/2020-12/schema",
116
- "type": "object",
117
- "properties": config_properties,
118
- "required": required,
119
- "secrets": secrets,
120
- }
66
+ return get_agent_config_schema(cls)
121
67
 
122
68
  def get_secrets_dict(self) -> dict[str, str]:
123
69
  """Extract secret values as a dict for environment variables."""
@@ -137,7 +83,7 @@ class AgentConfig(BaseSettings):
137
83
  internal_fields = {"logs_dir"}
138
84
 
139
85
  result: dict[str, Any] = {}
140
- for field_name in self.model_fields:
86
+ for field_name in self.__class__.model_fields:
141
87
  if field_name not in secrets_map and field_name not in internal_fields:
142
88
  value = getattr(self, field_name, None)
143
89
  if value is not None:
@@ -152,9 +98,6 @@ class AgentConfig(BaseSettings):
152
98
  The runner passes config as base64-encoded JSON in the
153
99
  AGENT_CONFIG_B64 environment variable.
154
100
  """
155
- import base64
156
- import os
157
-
158
101
  config_b64 = os.environ.get("AGENT_CONFIG_B64")
159
102
  if not config_b64:
160
103
  raise ValueError("AGENT_CONFIG_B64 environment variable not set")
@@ -0,0 +1,18 @@
1
+ """Annotation markers for Plato agent configurations."""
2
+
3
+ from __future__ import annotations
4
+
5
+
6
+ class Secret:
7
+ """Annotation marker for secret fields.
8
+
9
+ Fields annotated with Secret are automatically loaded from environment variables.
10
+ The env var name is the uppercase version of the field name (e.g., api_key -> API_KEY).
11
+
12
+ Usage:
13
+ api_key: Annotated[str, Secret(description="API key")]
14
+ """
15
+
16
+ def __init__(self, description: str = "", required: bool = False):
17
+ self.description = description
18
+ self.required = required
@@ -26,11 +26,19 @@ Usage:
26
26
  from __future__ import annotations
27
27
 
28
28
  import logging
29
+ import os
29
30
 
31
+ from opentelemetry import context as context_api
30
32
  from opentelemetry import trace
31
- from opentelemetry.trace import Tracer
33
+ from opentelemetry.exporter.otlp.proto.http.trace_exporter import (
34
+ OTLPSpanExporter,
35
+ )
36
+ from opentelemetry.sdk.resources import Resource
37
+ from opentelemetry.sdk.trace import TracerProvider
38
+ from opentelemetry.sdk.trace.export import SimpleSpanProcessor
39
+ from opentelemetry.trace import NonRecordingSpan, SpanContext, TraceFlags, Tracer
32
40
 
33
- _module_logger = logging.getLogger(__name__)
41
+ logger = logging.getLogger(__name__)
34
42
 
35
43
  # Global state
36
44
  _tracer_provider = None
@@ -39,10 +47,7 @@ _log_handler = None
39
47
 
40
48
 
41
49
  class OTelSpanLogHandler(logging.Handler):
42
- """Logging handler that creates OTel spans for log messages.
43
-
44
- Converts Python log records to OTel spans with log attributes.
45
- """
50
+ """Logging handler that creates OTel spans for log messages."""
46
51
 
47
52
  def __init__(self, tracer: Tracer, level: int = logging.INFO):
48
53
  super().__init__(level)
@@ -51,9 +56,6 @@ class OTelSpanLogHandler(logging.Handler):
51
56
  def emit(self, record: logging.LogRecord) -> None:
52
57
  """Emit a log record as an OTel span."""
53
58
  try:
54
- # Debug: print that we're emitting a log span
55
- print(f"[OTel] Emitting log span: {record.name} - {record.getMessage()[:100]}")
56
- # Create a span for the log message
57
59
  with self.tracer.start_as_current_span(f"log.{record.levelname.lower()}") as span:
58
60
  span.set_attribute("log.level", record.levelname)
59
61
  span.set_attribute("log.message", record.getMessage())
@@ -66,12 +68,9 @@ class OTelSpanLogHandler(logging.Handler):
66
68
  if record.lineno:
67
69
  span.set_attribute("log.lineno", record.lineno)
68
70
 
69
- # Mark errors
70
71
  if record.levelno >= logging.ERROR:
71
72
  span.set_attribute("error", True)
72
-
73
73
  except Exception:
74
- # Don't let logging errors crash the application
75
74
  pass
76
75
 
77
76
 
@@ -94,20 +93,10 @@ def init_tracing(
94
93
  global _tracer_provider, _initialized, _log_handler
95
94
 
96
95
  if _initialized:
97
- _module_logger.debug("Tracing already initialized")
96
+ logger.debug("Tracing already initialized")
98
97
  return
99
98
 
100
99
  try:
101
- from opentelemetry import context as context_api
102
- from opentelemetry.exporter.otlp.proto.http.trace_exporter import (
103
- OTLPSpanExporter,
104
- )
105
- from opentelemetry.sdk.resources import Resource
106
- from opentelemetry.sdk.trace import TracerProvider
107
- from opentelemetry.sdk.trace.export import SimpleSpanProcessor
108
- from opentelemetry.trace import NonRecordingSpan, SpanContext, TraceFlags
109
-
110
- # Create resource with session ID
111
100
  resource = Resource.create(
112
101
  {
113
102
  "service.name": service_name,
@@ -115,53 +104,39 @@ def init_tracing(
115
104
  }
116
105
  )
117
106
 
118
- # Create tracer provider
119
107
  _tracer_provider = TracerProvider(resource=resource)
120
108
 
121
- # Add OTLP exporter pointing to Chronos (use SimpleSpanProcessor for immediate export)
122
109
  otlp_exporter = OTLPSpanExporter(endpoint=f"{otlp_endpoint.rstrip('/')}/v1/traces")
123
110
  _tracer_provider.add_span_processor(SimpleSpanProcessor(otlp_exporter))
124
111
 
125
- # Set as global tracer provider
126
112
  trace.set_tracer_provider(_tracer_provider)
127
113
 
128
- # If parent context is provided, set it as the current context
129
- # This allows new spans to automatically link to the parent
130
114
  if parent_trace_id and parent_span_id:
131
115
  parent_context = SpanContext(
132
116
  trace_id=int(parent_trace_id, 16),
133
117
  span_id=int(parent_span_id, 16),
134
118
  is_remote=True,
135
- trace_flags=TraceFlags(0x01), # Sampled
119
+ trace_flags=TraceFlags(0x01),
136
120
  )
137
121
  parent_span = NonRecordingSpan(parent_context)
138
122
  ctx = trace.set_span_in_context(parent_span)
139
123
  context_api.attach(ctx)
140
- print(f"[OTel] Using parent context: trace_id={parent_trace_id}, span_id={parent_span_id}")
124
+ logger.debug(f"Using parent context: trace_id={parent_trace_id}, span_id={parent_span_id}")
141
125
 
142
- # Add OTel logging handler to capture logs from plato SDK
143
126
  tracer = trace.get_tracer(service_name)
144
127
  _log_handler = OTelSpanLogHandler(tracer, level=logging.INFO)
145
128
 
146
- # Add handler to plato loggers (worlds and agents)
147
- # Set level to INFO to ensure logs propagate from child loggers
148
129
  plato_logger = logging.getLogger("plato")
149
130
  plato_logger.setLevel(logging.INFO)
150
131
  plato_logger.addHandler(_log_handler)
151
- print(
152
- f"[OTel] Added log handler to 'plato' logger (level={plato_logger.level}, handlers={len(plato_logger.handlers)})"
153
- )
154
132
 
155
133
  _initialized = True
156
-
157
- print(f"[OTel] Tracing initialized: service={service_name}, session={session_id}, endpoint={otlp_endpoint}")
134
+ logger.debug(f"Tracing initialized: service={service_name}, session={session_id}")
158
135
 
159
136
  except ImportError as e:
160
- print(f"[OTel] OpenTelemetry SDK not installed: {e}")
161
- _module_logger.warning(f"OpenTelemetry SDK not installed: {e}")
137
+ logger.warning(f"OpenTelemetry SDK not installed: {e}")
162
138
  except Exception as e:
163
- print(f"[OTel] Failed to initialize tracing: {e}")
164
- _module_logger.error(f"Failed to initialize tracing: {e}")
139
+ logger.error(f"Failed to initialize tracing: {e}")
165
140
 
166
141
 
167
142
  def shutdown_tracing(timeout_millis: int = 30000) -> None:
@@ -172,7 +147,6 @@ def shutdown_tracing(timeout_millis: int = 30000) -> None:
172
147
  """
173
148
  global _tracer_provider, _initialized, _log_handler
174
149
 
175
- # Remove log handler
176
150
  if _log_handler:
177
151
  try:
178
152
  plato_logger = logging.getLogger("plato")
@@ -183,19 +157,13 @@ def shutdown_tracing(timeout_millis: int = 30000) -> None:
183
157
 
184
158
  if _tracer_provider:
185
159
  try:
186
- # Force flush all pending spans before shutdown
187
- print(f"[OTel] Flushing spans (timeout={timeout_millis}ms)...")
188
160
  flush_success = _tracer_provider.force_flush(timeout_millis=timeout_millis)
189
- if flush_success:
190
- print("[OTel] Span flush completed successfully")
191
- else:
192
- print("[OTel] Span flush timed out or failed")
193
-
161
+ if not flush_success:
162
+ logger.warning("Span flush timed out")
194
163
  _tracer_provider.shutdown()
195
- print("[OTel] Tracing shutdown complete")
164
+ logger.debug("Tracing shutdown complete")
196
165
  except Exception as e:
197
- print(f"[OTel] Error shutting down tracer: {e}")
198
- _module_logger.warning(f"Error shutting down tracer: {e}")
166
+ logger.warning(f"Error shutting down tracer: {e}")
199
167
 
200
168
  _tracer_provider = None
201
169
  _initialized = False
@@ -235,21 +203,15 @@ def instrument(service_name: str = "plato-agent") -> Tracer:
235
203
  Returns:
236
204
  OpenTelemetry Tracer
237
205
  """
238
- import os
239
-
240
206
  otel_endpoint = os.environ.get("OTEL_EXPORTER_OTLP_ENDPOINT")
241
207
  session_id = os.environ.get("SESSION_ID", "local")
242
208
  parent_trace_id = os.environ.get("OTEL_TRACE_ID")
243
209
  parent_span_id = os.environ.get("OTEL_PARENT_SPAN_ID")
244
210
 
245
- print(f"[OTel] instrument() called: service={service_name}, endpoint={otel_endpoint}, session={session_id}")
246
-
247
211
  if not otel_endpoint:
248
- # Return default tracer (no-op if no provider configured)
249
- print("[OTel] No OTEL_EXPORTER_OTLP_ENDPOINT set, returning no-op tracer")
212
+ logger.debug("No OTEL_EXPORTER_OTLP_ENDPOINT set, using no-op tracer")
250
213
  return trace.get_tracer(service_name)
251
214
 
252
- # Initialize tracing with parent context if provided
253
215
  init_tracing(
254
216
  service_name=service_name,
255
217
  session_id=session_id,
@@ -0,0 +1,96 @@
1
+ """JSON schema generation for Plato agent configurations."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing import TYPE_CHECKING, Any
6
+
7
+ from plato.agents.markers import Secret
8
+
9
+ if TYPE_CHECKING:
10
+ from plato.agents.config import AgentConfig
11
+
12
+
13
+ def get_field_secrets(config_cls: type[AgentConfig]) -> dict[str, Secret]:
14
+ """Get Secret annotations for each field.
15
+
16
+ Args:
17
+ config_cls: The AgentConfig subclass to inspect
18
+
19
+ Returns:
20
+ Dict mapping field name to Secret annotation
21
+ """
22
+ result: dict[str, Secret] = {}
23
+
24
+ for field_name, field_info in config_cls.model_fields.items():
25
+ for meta in field_info.metadata:
26
+ if isinstance(meta, Secret):
27
+ result[field_name] = meta
28
+ break
29
+
30
+ return result
31
+
32
+
33
+ def get_agent_config_schema(config_cls: type[AgentConfig]) -> dict[str, Any]:
34
+ """Get JSON schema for an agent config with secrets separated.
35
+
36
+ Args:
37
+ config_cls: The AgentConfig subclass to generate schema for
38
+
39
+ Returns:
40
+ JSON schema dict with properties, required, and secrets fields
41
+ """
42
+ full_schema = config_cls.model_json_schema()
43
+ full_schema.pop("title", None)
44
+
45
+ secrets_map = get_field_secrets(config_cls)
46
+ properties = full_schema.get("properties", {})
47
+
48
+ config_properties: dict[str, Any] = {}
49
+ secrets: list[dict[str, Any]] = []
50
+
51
+ # Skip internal fields
52
+ internal_fields = {"logs_dir"}
53
+
54
+ for field_name, prop_schema in properties.items():
55
+ if field_name in internal_fields:
56
+ continue
57
+
58
+ if field_name in secrets_map:
59
+ secret = secrets_map[field_name]
60
+ secrets.append(
61
+ {
62
+ "name": field_name,
63
+ "description": secret.description,
64
+ "required": secret.required,
65
+ }
66
+ )
67
+ else:
68
+ config_properties[field_name] = prop_schema
69
+
70
+ required = [r for r in full_schema.get("required", []) if r not in internal_fields and r not in secrets_map]
71
+
72
+ return {
73
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
74
+ "type": "object",
75
+ "properties": config_properties,
76
+ "required": required,
77
+ "secrets": secrets,
78
+ }
79
+
80
+
81
+ def get_agent_schema(agent_cls: type) -> dict[str, Any]:
82
+ """Get full schema for an agent including config and build schemas.
83
+
84
+ Args:
85
+ agent_cls: The BaseAgent subclass to generate schema for
86
+
87
+ Returns:
88
+ Dict with config and build schema sections
89
+ """
90
+ from plato.agents.build import BuildConfig
91
+
92
+ config_class = agent_cls.get_config_class()
93
+ return {
94
+ "config": get_agent_config_schema(config_class),
95
+ "build": BuildConfig.get_json_schema(),
96
+ }
@@ -6,11 +6,13 @@ import asyncio
6
6
  import json
7
7
  import logging
8
8
  import os
9
+ import platform as plat
9
10
  import subprocess
10
11
  import tempfile
11
12
  from pathlib import Path
12
13
  from typing import Annotated
13
14
 
15
+ import httpx
14
16
  import typer
15
17
 
16
18
  from plato.cli.utils import console
@@ -64,8 +66,6 @@ def launch(
64
66
  The config file should contain world.package (required) and optionally world.config,
65
67
  runtime.artifact_id, and tags.
66
68
  """
67
- import httpx
68
-
69
69
  # Set defaults
70
70
  if not chronos_url:
71
71
  chronos_url = "https://chronos.plato.so"
@@ -126,80 +126,6 @@ def launch(
126
126
  raise typer.Exit(1)
127
127
 
128
128
 
129
- @chronos_app.command()
130
- def example(
131
- world: str = typer.Argument(
132
- "structured-execution",
133
- help="World to generate example config for",
134
- ),
135
- output: Path = typer.Option(
136
- None,
137
- "--output",
138
- "-o",
139
- help="Output file path (prints to stdout if not specified)",
140
- ),
141
- ):
142
- """Generate an example job config file.
143
-
144
- Creates a sample JSON configuration for launching Chronos jobs, which can be
145
- customized for your use case.
146
-
147
- Arguments:
148
- world: World type to generate example for (default: "structured-execution")
149
-
150
- Options:
151
- -o, --output: Output file path. If not specified, prints to stdout.
152
-
153
- Available worlds: structured-execution, code-world
154
- """
155
- examples = {
156
- "structured-execution": {
157
- "world_package": "plato-world-structured-execution",
158
- "world_version": "latest",
159
- "world_config": {
160
- "sim_name": "my-sim",
161
- "github_url": "https://github.com/example/repo",
162
- "max_attempts": 3,
163
- "use_backtrack": True,
164
- "skill_runner": {
165
- "image": "claude-code:2.1.5",
166
- "config": {"model_name": "anthropic/claude-sonnet-4-20250514", "max_turns": 100},
167
- },
168
- "plato_api_key": "pk_xxx",
169
- "anthropic_api_key": "sk-ant-xxx",
170
- },
171
- "_comment": "Agents and secrets are embedded directly in world_config",
172
- },
173
- "code-world": {
174
- "world_package": "plato-world-code",
175
- "world_config": {
176
- "task": "Fix the bug in src/main.py",
177
- "repo_url": "https://github.com/example/repo",
178
- "coder": {
179
- "image": "claude-code:latest",
180
- "config": {"model_name": "anthropic/claude-sonnet-4-20250514"},
181
- },
182
- },
183
- "_comment": "world_version is optional - uses latest if not specified",
184
- },
185
- }
186
-
187
- if world not in examples:
188
- console.print(f"[red]❌ Unknown world: {world}[/red]")
189
- console.print(f"Available examples: {list(examples.keys())}")
190
- raise typer.Exit(1)
191
-
192
- example_config = examples[world]
193
- json_output = json.dumps(example_config, indent=2)
194
-
195
- if output:
196
- with open(output, "w") as f:
197
- f.write(json_output)
198
- console.print(f"[green]✅ Example config written to {output}[/green]")
199
- else:
200
- console.print(json_output)
201
-
202
-
203
129
  def _get_world_runner_dockerfile() -> Path:
204
130
  """Get the path to the world runner Dockerfile template."""
205
131
  return Path(__file__).parent.parent / "v1" / "cli" / "templates" / "world-runner.Dockerfile"
@@ -253,8 +179,6 @@ def _get_docker_platform(override: str | None = None) -> str:
253
179
  if override:
254
180
  return override
255
181
 
256
- import platform as plat
257
-
258
182
  system = plat.system()
259
183
  machine = plat.machine().lower()
260
184
 
@@ -424,8 +348,6 @@ async def _create_chronos_session(
424
348
  tags: list[str] | None = None,
425
349
  ) -> dict:
426
350
  """Create a session in Chronos."""
427
- import httpx
428
-
429
351
  url = f"{chronos_url.rstrip('/')}/api/sessions"
430
352
 
431
353
  async with httpx.AsyncClient(timeout=30.0) as client:
@@ -443,25 +365,6 @@ async def _create_chronos_session(
443
365
  return response.json()
444
366
 
445
367
 
446
- async def _close_chronos_session(
447
- chronos_url: str,
448
- api_key: str,
449
- session_id: str,
450
- ) -> None:
451
- """Close a Chronos session."""
452
- import httpx
453
-
454
- url = f"{chronos_url.rstrip('/')}/api/sessions/{session_id}/close"
455
-
456
- try:
457
- async with httpx.AsyncClient(timeout=30.0) as client:
458
- response = await client.post(url, headers={"x-api-key": api_key})
459
- response.raise_for_status()
460
- logger.info(f"Closed Chronos session: {session_id}")
461
- except Exception as e:
462
- logger.warning(f"Failed to close Chronos session: {e}")
463
-
464
-
465
368
  async def _complete_chronos_session(
466
369
  chronos_url: str,
467
370
  api_key: str,
@@ -471,7 +374,6 @@ async def _complete_chronos_session(
471
374
  error_message: str | None = None,
472
375
  ) -> None:
473
376
  """Complete a Chronos session with final status."""
474
- import httpx
475
377
 
476
378
  url = f"{chronos_url.rstrip('/')}/api/sessions/{session_id}/complete"
477
379
 
@@ -46,23 +46,19 @@ from plato._generated.models import (
46
46
  from plato.worlds.base import (
47
47
  BaseWorld,
48
48
  ConfigT,
49
- Observation,
50
- StepResult,
51
49
  get_registered_worlds,
52
50
  get_world,
53
51
  register_world,
54
52
  )
55
53
  from plato.worlds.config import (
56
- Agent,
57
54
  AgentConfig,
58
55
  CheckpointConfig,
59
- Env,
60
56
  EnvConfig,
61
- EnvList,
62
57
  RunConfig,
63
- Secret,
64
58
  StateConfig,
65
59
  )
60
+ from plato.worlds.markers import Agent, Env, EnvList, Secret
61
+ from plato.worlds.models import Observation, StepResult
66
62
  from plato.worlds.runner import run_world
67
63
 
68
64
  __all__ = [