plato-sdk-v2 2.8.8__tar.gz → 2.9.1__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.
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/PKG-INFO +1 -1
- plato_sdk_v2-2.9.1/VERSION +1 -0
- plato_sdk_v2-2.9.1/ci/tests/unit.sh +7 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/__init__.py +1 -1
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/testcases/get_testcases.py +21 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/models/__init__.py +11 -3
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/agents/base.py +3 -9
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/agents/config.py +7 -64
- plato_sdk_v2-2.9.1/plato/agents/markers.py +18 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/agents/otel.py +22 -60
- plato_sdk_v2-2.9.1/plato/agents/schema.py +96 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/chronos/models/__init__.py +27 -27
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/cli/chronos.py +2 -100
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/worlds/__init__.py +2 -6
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/worlds/base.py +44 -130
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/worlds/config.py +5 -166
- plato_sdk_v2-2.9.1/plato/worlds/markers.py +63 -0
- plato_sdk_v2-2.9.1/plato/worlds/models.py +23 -0
- plato_sdk_v2-2.9.1/plato/worlds/schema.py +154 -0
- plato_sdk_v2-2.9.1/tests/test_agents.py +293 -0
- plato_sdk_v2-2.9.1/tests/test_worlds.py +416 -0
- plato_sdk_v2-2.8.8/VERSION +0 -1
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/.claude/agents/sim-creator.md +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/.gitignore +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/BUILDING_SIMS.md +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/README.md +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/ci/CLAUDE.md +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/ci/deploy.sh +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/ci/lint.sh +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/ci/setup.sh +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/ci/version-bump.sh +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/docs/AGENT_SPEC.md +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/docs/CLI.md +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/docs/GENERATING_SIM_SDKS.md +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/docs/SIMULATOR_LIFECYCLE.md +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/docs/SIM_CREATOR.md +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/docs/cli/agent.md +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/docs/cli/flows.md +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/docs/cli/pm.md +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/docs/cli/sandbox.md +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/docs/cli/sims.md +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/docs/cli/world.md +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/docs/sim-creation-pipeline.md +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/docs/skill-restructure-plan.md +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/docs/skills/SIM-CREATION-ARCHITECTURE.md +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/docs/skills/sim-config/SKILL.md +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/docs/skills/sim-creator/SKILL.md +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/docs/skills/sim-debugger/SKILL.md +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/docs/skills/sim-flow-audit/SKILL.md +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/docs/skills/sim-flow-clear/SKILL.md +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/docs/skills/sim-flow-mutations/SKILL.md +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/docs/skills/sim-flow-run/SKILL.md +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/docs/skills/sim-research/SKILL.md +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/docs/skills/sim-review/SKILL.md +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/docs/skills/sim-sandbox-login/SKILL.md +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/docs/skills/sim-sandbox-services/SKILL.md +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/docs/skills/sim-sandbox-start/SKILL.md +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/docs/skills/sim-sandbox-worker/SKILL.md +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/docs/skills/sim-snapshot/SKILL.md +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/docs/skills/sim-submit/SKILL.md +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/docs/skills/sim-validate/SKILL.md +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/docs/skills/trajectory-analysis/SKILL.md +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/docs/testcommit +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/docs/unit.sh +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/examples/preview_local_dev.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/examples/snapshot_docker_image.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/examples/snapshot_local_dev.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/examples/test_session_isolation.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/examples/test_session_network.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/__init__.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/__init__.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/__init__.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/agent_artifacts/__init__.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/agent_artifacts/archive_agent_artifact.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/agent_artifacts/create_agent_artifact.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/agent_artifacts/get_agent_artifact_by_public_id.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/agent_artifacts/get_agent_artifacts.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/cluster/__init__.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/cluster/cleanup_stale_vms.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/cluster/get_dispatchers.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/cluster/get_nodes_status.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/cluster/get_snapshot_lineage.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/cluster/get_snapshots_status.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/cluster/pause_resume_dispatchers.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/cluster/prefetch_snapshot.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/env/__init__.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/env/backup.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/env/cleanup.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/env/close.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/env/close_async.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/env/create.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/env/create_batch.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/env/create_simulator.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/env/evaluate_session.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/env/generate_mutations.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/env/generate_mutations_single.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/env/get_active_session.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/env/get_app_sim_worker_info.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/env/get_cdp_url.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/env/get_flows.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/env/get_interface_worker_info.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/env/get_job_info.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/env/get_job_status.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/env/get_job_worker_info.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/env/get_proxy_url.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/env/get_public_url.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/env/get_simulator_by_name.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/env/get_simulators.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/env/get_state.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/env/get_worker_ready.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/env/log_state_mutation.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/env/rescore_simulator_sessions.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/env/reset.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/env/score.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/env/send_heartbeat.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/env/update_simulator.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/evals/__init__.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/evals/create_test_case_review.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/evals/evaluate_python.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/evals/get_all_test_case_reviews.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/evals/get_scores_by_user.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/evals/get_scoring.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/evals/get_test_case_review.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/evals/human_in_the_loop_scoring.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/evals/start_eval_from_git.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/gitea/__init__.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/gitea/create_gitea_repository.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/gitea/create_simulator_repository.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/gitea/delete_gitea_repository.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/gitea/get_accessible_simulators.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/gitea/get_gitea_credentials.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/gitea/get_gitea_repository.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/gitea/get_my_gitea_info.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/gitea/get_my_repositories.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/gitea/get_repository_branches.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/gitea/get_repository_contents.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/gitea/get_simulator_file_content.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/gitea/get_simulator_repository.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/gitea/get_simulator_repository_branches.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/gitea/get_simulator_repository_contents.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/jobs/__init__.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/jobs/get_job_by_id.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/jobs/get_jobs_by_group_id.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/jobs/get_keepalive_jobs.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/jobs/list_jobs.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/jobs/update_job_status.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/organization/__init__.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/organization/create_annotator_assignment.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/organization/create_org_api_key.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/organization/create_org_policy.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/organization/delete_org_api_key.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/organization/delete_org_policy.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/organization/get_annotator_assignments.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/organization/get_org_api_key_policies.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/organization/get_org_api_keys.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/organization/get_org_policies.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/organization/get_organization_concurrency_status.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/organization/get_organization_members.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/organization/update_annotator_assignment_stage.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/organization/update_organization_concurrency_limit.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/queue/__init__.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/queue/get_queue_status.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/queue/get_vm_detail.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/queue/get_vms.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/queue/get_workers.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/sandbox/__init__.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/sandbox/checkpoint_vm.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/sandbox/close_vm.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/sandbox/create_vm.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/sandbox/execute_ssh_command.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/sandbox/get_operation_events.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/sandbox/healthy_services.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/sandbox/healthy_worker.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/sandbox/save_vm_snapshot.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/sandbox/setup_root_access.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/sandbox/setup_sandbox.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/sandbox/start_worker.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/session/__init__.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/session/analyze_labels.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/session/archive_session.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/session/archive_session_logs_endpoint.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/session/create_from_labels.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/session/create_session_from_browser.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/session/create_session_from_env_recording.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/session/create_session_from_har.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/session/get_env_recording.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/session/get_grouped_replay_sessions.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/session/get_logs_status.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/session/get_network_requests.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/session/get_next_session_for_annotator.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/session/get_public_benchmark_sessions.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/session/get_replay_score_data.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/session/get_rrweb_actions.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/session/get_rrweb_events.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/session/get_screen_recording.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/session/get_session.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/session/get_session_replays.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/session/get_sessions.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/session/get_sessions_for_archival.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/session/get_ui_events.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/session/restore_session_logs.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/session/score_session_with_config.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/session/search_sessions_by_ids.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/session/set_session_output.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/session/update_session_public.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/session/update_session_testcase.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/session/upload_review_screenshot.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/simulator/__init__.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/simulator/add_simulator_review.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/simulator/batch_create_test_cases.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/simulator/batch_get_artifact_metadata.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/simulator/get_all_simulators_info.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/simulator/get_db_config.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/simulator/get_env_flows.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/simulator/get_plato_config.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/simulator/get_sessions_batch_by_job_groups.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/simulator/get_sessions_by_job_group.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/simulator/get_simulator_by_name.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/simulator/get_simulator_id.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/simulator/get_simulator_info.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/simulator/get_simulator_version_details.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/simulator/get_simulator_versions.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/simulator/get_start_path.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/simulator/get_version_by_tag.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/simulator/list_simulators.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/simulator/list_simulators_by_org.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/simulator/list_simulators_status.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/simulator/register.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/simulator/update_simulator.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/simulator/update_simulator_status.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/simulator/update_tag.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/testcases/__init__.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/testcases/archive_organization_test_case_assignments.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/testcases/archive_organization_testcase.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/testcases/archive_testcase.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/testcases/assign_testcase_to_organizations.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/testcases/assign_testcases_to_work_order_item.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/testcases/auto_verify_testcase.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/testcases/bulk_archive_testcases.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/testcases/convert_text_to_structured_data.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/testcases/create_testcase.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/testcases/create_testcase_set.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/testcases/delete_testcase_set.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/testcases/filter_human_recorder_testcases.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/testcases/generate_outcome_schema.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/testcases/generate_prediction.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/testcases/generate_prediction_from_steps.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/testcases/generate_scoring_config_from_sessions.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/testcases/generate_state_mutations_config_route.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/testcases/get_human_recorder_tab_counts.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/testcases/get_human_recorder_testcases.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/testcases/get_merged_mutations.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/testcases/get_mutation_groups_for_testcase.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/testcases/get_next_testcase_for_scoring.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/testcases/get_organization_test_case_assignments.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/testcases/get_testcase.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/testcases/get_testcase_metadata_for_scoring.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/testcases/get_testcase_sets.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/testcases/get_testcases_in_set.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/testcases/mark_organization_test_case_completed.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/testcases/update_testcase.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/testcases/version_bump_testcase.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/__init__.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/admin/__init__.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/admin/cache/__init__.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/admin/cache/clear_all.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/admin/cache/clear_single_cache.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/admin/cache/delete_key.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/admin/cache/get_stats.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/admin/cache/list_cache_names.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/agents/__init__.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/agents/get_agent_ecr_token.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/agents/get_agent_schema.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/agents/get_agent_versions.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/agents/import_agent.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/agents/list_docker_agents.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/agents/lookup_agent_version.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/agents/register_docker_agent.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/artifacts/__init__.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/artifacts/get_artifact.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/chronos/__init__.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/chronos/launch_job.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/chronos_packages/__init__.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/chronos_packages/get_package_versions.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/chronos_packages/list_chronos_packages.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/chronos_packages/lookup_package_version.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/chronos_packages/register_chronos_package.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/chronos_packages/upload_chronos_package.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/cluster/__init__.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/cluster/get_node_config.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/jobs/__init__.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/jobs/checkpoint.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/jobs/close.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/jobs/connect_routing_info.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/jobs/connect_url.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/jobs/disk_snapshot.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/jobs/execute.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/jobs/get_flows.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/jobs/get_plato_config.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/jobs/heartbeat.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/jobs/log_for_job.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/jobs/make.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/jobs/public_url.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/jobs/rdp_url.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/jobs/reset.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/jobs/set_date.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/jobs/setup_sandbox.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/jobs/snapshot.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/jobs/snapshot_store.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/jobs/state.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/jobs/wait_for_ready.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/networks/__init__.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/networks/add_member.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/networks/create_network.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/networks/delete_network.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/networks/get_network.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/networks/list_members.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/networks/list_networks.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/networks/remove_member.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/networks/update_member.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/pypi/__init__.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/pypi/download_package.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/pypi/get_package_schema.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/pypi/package_index.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/pypi/simple_index.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/pypi/upload_package.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/releases/__init__.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/releases/create.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/releases/deploy.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/releases/get.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/releases/handle_get_existing_public_ids.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/releases/handle_import.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/releases/list_releases.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/releases/prep_release_assigned_testcases.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/releases/prep_release_from_work_order.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/releases/update.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/sessions/__init__.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/sessions/add_job.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/sessions/add_ssh_key.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/sessions/checkpoint.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/sessions/close.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/sessions/connect_network.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/sessions/disk_snapshot.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/sessions/evaluate.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/sessions/execute.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/sessions/get_connect_url.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/sessions/get_presigned_url.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/sessions/get_public_url.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/sessions/get_rdp_url.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/sessions/get_s3_content.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/sessions/get_session_details.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/sessions/get_session_documents.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/sessions/get_session_flows.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/sessions/get_session_logs.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/sessions/get_session_plato_config.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/sessions/heartbeat.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/sessions/list_jobs.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/sessions/list_sessions.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/sessions/log_job_mutation.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/sessions/make.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/sessions/remove_job.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/sessions/reset.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/sessions/set_date.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/sessions/setup_sandbox.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/sessions/snapshot.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/sessions/snapshot_store.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/sessions/state.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/sessions/upload_session_documents.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/sessions/wait_for_ready.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/user/__init__.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/user/get_current_user.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/work_orders/__init__.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/work_orders/archive_work_order.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/work_orders/archive_work_order_item.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/work_orders/create_work_order.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/work_orders/create_work_order_item.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/work_orders/get_work_order.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v2/work_orders/list_work_orders.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/version/__init__.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/version/check.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/client.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/errors.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/py.typed +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_sims_generator/__init__.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_sims_generator/cli.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_sims_generator/instruction.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_sims_generator/parser.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_sims_generator/python.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_sims_generator/templates/instruction/helpers.py.jinja +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_sims_generator/templates/instruction/init.py.jinja +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_sims_generator/templates/python/api_init.py.jinja +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_sims_generator/templates/python/client.py.jinja +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_sims_generator/templates/python/endpoint.py.jinja +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_sims_generator/templates/python/errors.py.jinja +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_sims_generator/templates/python/package_init.py.jinja +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_sims_generator/templates/python/tag_init.py.jinja +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_sims_generator/templates/python/version_init.py.jinja +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/agents/__init__.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/agents/artifacts.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/agents/build.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/agents/runner.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/agents/trajectory.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/chronos/__init__.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/chronos/api/__init__.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/chronos/api/admin/__init__.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/chronos/api/admin/clear_database_api_admin_clear_db_post.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/chronos/api/admin/sync_agents_api_admin_sync_agents_post.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/chronos/api/admin/sync_all_api_admin_sync_all_post.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/chronos/api/admin/sync_runtimes_api_admin_sync_runtimes_post.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/chronos/api/admin/sync_worlds_api_admin_sync_worlds_post.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/chronos/api/agents/__init__.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/chronos/api/agents/create_agent.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/chronos/api/agents/delete_agent.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/chronos/api/agents/get_agent.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/chronos/api/agents/get_agent_schema.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/chronos/api/agents/get_agent_versions.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/chronos/api/agents/list_agents.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/chronos/api/agents/lookup_agent.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/chronos/api/auth/__init__.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/chronos/api/auth/debug_auth_api_auth_debug_get.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/chronos/api/auth/get_auth_status_api_auth_status_get.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/chronos/api/auth/get_current_user_route_api_auth_me_get.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/chronos/api/checkpoints/__init__.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/chronos/api/checkpoints/list_checkpoints.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/chronos/api/checkpoints/preview_checkpoint.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/chronos/api/default/__init__.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/chronos/api/default/health.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/chronos/api/events/__init__.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/chronos/api/events/get_session_event.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/chronos/api/events/list_session_events.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/chronos/api/jobs/__init__.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/chronos/api/jobs/launch_job.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/chronos/api/otel/__init__.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/chronos/api/otel/get_session_traces_api_otel_sessions__session_id__traces_get.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/chronos/api/otel/receive_traces_api_otel_v1_traces_post.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/chronos/api/registry/__init__.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/chronos/api/registry/get_agent_schema_api_registry_agents__agent_name__schema_get.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/chronos/api/registry/get_agent_versions_api_registry_agents__agent_name__versions_get.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/chronos/api/registry/get_world_schema_api_registry_worlds__package_name__schema_get.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/chronos/api/registry/get_world_versions_api_registry_worlds__package_name__versions_get.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/chronos/api/registry/list_registry_agents_api_registry_agents_get.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/chronos/api/registry/list_registry_worlds_api_registry_worlds_get.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/chronos/api/runtimes/__init__.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/chronos/api/runtimes/create_runtime.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/chronos/api/runtimes/delete_runtime.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/chronos/api/runtimes/get_runtime.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/chronos/api/runtimes/get_runtime_logs.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/chronos/api/runtimes/list_runtimes.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/chronos/api/runtimes/test_runtime.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/chronos/api/secrets/__init__.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/chronos/api/secrets/create_secret.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/chronos/api/secrets/delete_secret.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/chronos/api/secrets/get_secret.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/chronos/api/secrets/list_secrets.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/chronos/api/secrets/update_secret.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/chronos/api/sessions/__init__.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/chronos/api/sessions/close_session.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/chronos/api/sessions/complete_session.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/chronos/api/sessions/create_session.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/chronos/api/sessions/get_session.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/chronos/api/sessions/get_session_bash_logs_download.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/chronos/api/sessions/get_session_envs.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/chronos/api/sessions/get_session_live_logs.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/chronos/api/sessions/get_session_logs.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/chronos/api/sessions/get_session_logs_download.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/chronos/api/sessions/get_session_status.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/chronos/api/sessions/list_session_creators.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/chronos/api/sessions/list_sessions.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/chronos/api/sessions/list_tags.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/chronos/api/sessions/update_session_tags.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/chronos/api/status/__init__.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/chronos/api/status/get_status_api_status_get.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/chronos/api/status/get_version_info_api_version_get.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/chronos/api/templates/__init__.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/chronos/api/templates/create_template.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/chronos/api/templates/delete_template.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/chronos/api/templates/get_template.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/chronos/api/templates/list_templates.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/chronos/api/templates/update_template.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/chronos/api/trajectories/__init__.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/chronos/api/trajectories/get_trajectory.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/chronos/api/trajectories/list_trajectories.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/chronos/api/worlds/__init__.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/chronos/api/worlds/create_world.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/chronos/api/worlds/delete_world.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/chronos/api/worlds/get_world.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/chronos/api/worlds/list_worlds.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/chronos/client.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/chronos/errors.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/chronos/py.typed +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/cli/__init__.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/cli/agent.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/cli/audit_ui.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/cli/compose.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/cli/main.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/cli/pm.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/cli/proxy.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/cli/sandbox.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/cli/session.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/cli/utils.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/cli/verify.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/cli/world.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/py.typed +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/sims/README.md +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/sims/__init__.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/sims/agent_helpers.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/sims/cli.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/sims/generate_clients.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/sims/registry.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/v1/__init__.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/v1/audit_ui.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/v1/cli/__init__.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/v1/cli/agent.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/v1/cli/chronos.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/v1/cli/main.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/v1/cli/pm.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/v1/cli/proxy.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/v1/cli/sandbox.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/v1/cli/ssh.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/v1/cli/templates/world-runner.Dockerfile +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/v1/cli/utils.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/v1/cli/verify.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/v1/cli/world.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/v1/cli.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/v1/config.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/v1/examples/doordash_tasks.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/v1/examples/loadtest.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/v1/examples/test_env.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/v1/examples/test_env_custom_browser.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/v1/examples/test_env_sync.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/v1/examples/test_reuse_env.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/v1/examples/test_run.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/v1/exceptions.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/v1/extensions/envgen-recorder/README.md +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/v1/extensions/envgen-recorder/api-client.js +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/v1/extensions/envgen-recorder/background.js +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/v1/extensions/envgen-recorder/build-sdk.js +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/v1/extensions/envgen-recorder/content.js +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/v1/extensions/envgen-recorder/manifest.json +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/v1/extensions/envgen-recorder/offscreen.html +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/v1/extensions/envgen-recorder/offscreen.js +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/v1/extensions/envgen-recorder/options.html +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/v1/extensions/envgen-recorder/options.js +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/v1/extensions/envgen-recorder/package-lock.json +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/v1/extensions/envgen-recorder/package.json +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/v1/extensions/envgen-recorder/plato-sdk-bundle.js +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/v1/extensions/envgen-recorder/plato-sdk-bundle.js.map +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/v1/extensions/envgen-recorder/popup.html +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/v1/extensions/envgen-recorder/popup.js +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/v1/extensions/envgen-recorder/review-panel.html +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/v1/extensions/envgen-recorder/review-panel.js +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/v1/extensions/envgen-recorder/review-success.html +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/v1/extensions/envgen-recorder/review-success.js +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/v1/extensions/envgen-recorder/session-active.html +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/v1/extensions/envgen-recorder/session-active.js +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/v1/extensions/envgen-recorder/session-ended.html +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/v1/extensions/envgen-recorder/session-ended.js +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/v1/extensions/envgen-recorder/session-setup.html +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/v1/extensions/envgen-recorder/session-setup.js +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/v1/extensions/envgen-recorder/sessions.html +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/v1/extensions/envgen-recorder/sessions.js +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/v1/extensions/envgen-recorder/styles.css +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/v1/flow_executor.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/v1/models/__init__.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/v1/models/build_models.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/v1/models/env.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/v1/models/flow.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/v1/models/sandbox.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/v1/models/task.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/v1/sandbox_sdk.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/v1/sdk.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/v1/sync_env.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/v1/sync_flow_executor.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/v1/sync_sdk.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/v1/utils/proxytunnel.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/v2/__init__.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/v2/async_/__init__.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/v2/async_/artifact.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/v2/async_/chronos.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/v2/async_/client.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/v2/async_/environment.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/v2/async_/flow_executor.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/v2/async_/session.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/v2/models.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/v2/sync/__init__.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/v2/sync/artifact.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/v2/sync/chronos.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/v2/sync/client.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/v2/sync/environment.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/v2/sync/flow_executor.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/v2/sync/sandbox.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/v2/sync/session.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/v2/types.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/v2/utils/__init__.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/v2/utils/db_cleanup.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/v2/utils/gateway_tunnel.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/v2/utils/models.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/v2/utils/proxy_tunnel.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/worlds/README.md +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/worlds/build_hook.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/worlds/runner.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/pyproject.toml +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/scripts/get_all_artifact_targets.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/tests/__init__.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/tests/integration/__init__.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/tests/integration/conftest.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/tests/integration/test_browser_agent.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/tests/integration/test_chronos_callback.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/tests/integration/test_cleanup_snapshot.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/tests/integration/test_code_world.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/tests/integration/test_harbor_agent_runner.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/tests/sims/__init__.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/tests/sims/conftest.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/tests/sims/test_agent_helpers.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/tests/test_heartbeat_keepalive.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/tests/test_session_serialization.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/tests/test_set_date.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/tests/test_v2_imports.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/tests/test_v2_multisim_integration.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/tests/test_v2_session.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/tests/test_version.py +0 -0
- {plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/uv.lock +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
2.9.1
|
|
@@ -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"
|
{plato_sdk_v2-2.8.8 → plato_sdk_v2-2.9.1}/plato/_generated/api/v1/testcases/get_testcases.py
RENAMED
|
@@ -27,6 +27,9 @@ def _build_request_args(
|
|
|
27
27
|
exclude_assigned_to_annotators: bool | None = None,
|
|
28
28
|
workorder: str | None = None,
|
|
29
29
|
infeasible: bool | None = None,
|
|
30
|
+
testcase_statuses: str | None = None,
|
|
31
|
+
work_order_item_id: str | None = None,
|
|
32
|
+
status: str | None = None,
|
|
30
33
|
authorization: str | None = None,
|
|
31
34
|
x_api_key: str | None = None,
|
|
32
35
|
) -> dict[str, Any]:
|
|
@@ -68,6 +71,12 @@ def _build_request_args(
|
|
|
68
71
|
params["workorder"] = workorder
|
|
69
72
|
if infeasible is not None:
|
|
70
73
|
params["infeasible"] = infeasible
|
|
74
|
+
if testcase_statuses is not None:
|
|
75
|
+
params["testcase_statuses"] = testcase_statuses
|
|
76
|
+
if work_order_item_id is not None:
|
|
77
|
+
params["work_order_item_id"] = work_order_item_id
|
|
78
|
+
if status is not None:
|
|
79
|
+
params["status"] = status
|
|
71
80
|
|
|
72
81
|
headers: dict[str, str] = {}
|
|
73
82
|
if authorization is not None:
|
|
@@ -102,6 +111,9 @@ def sync(
|
|
|
102
111
|
exclude_assigned_to_annotators: bool | None = None,
|
|
103
112
|
workorder: str | None = None,
|
|
104
113
|
infeasible: bool | None = None,
|
|
114
|
+
testcase_statuses: str | None = None,
|
|
115
|
+
work_order_item_id: str | None = None,
|
|
116
|
+
status: str | None = None,
|
|
105
117
|
authorization: str | None = None,
|
|
106
118
|
x_api_key: str | None = None,
|
|
107
119
|
) -> Any:
|
|
@@ -125,6 +137,9 @@ def sync(
|
|
|
125
137
|
exclude_assigned_to_annotators=exclude_assigned_to_annotators,
|
|
126
138
|
workorder=workorder,
|
|
127
139
|
infeasible=infeasible,
|
|
140
|
+
testcase_statuses=testcase_statuses,
|
|
141
|
+
work_order_item_id=work_order_item_id,
|
|
142
|
+
status=status,
|
|
128
143
|
authorization=authorization,
|
|
129
144
|
x_api_key=x_api_key,
|
|
130
145
|
)
|
|
@@ -153,6 +168,9 @@ async def asyncio(
|
|
|
153
168
|
exclude_assigned_to_annotators: bool | None = None,
|
|
154
169
|
workorder: str | None = None,
|
|
155
170
|
infeasible: bool | None = None,
|
|
171
|
+
testcase_statuses: str | None = None,
|
|
172
|
+
work_order_item_id: str | None = None,
|
|
173
|
+
status: str | None = None,
|
|
156
174
|
authorization: str | None = None,
|
|
157
175
|
x_api_key: str | None = None,
|
|
158
176
|
) -> Any:
|
|
@@ -176,6 +194,9 @@ async def asyncio(
|
|
|
176
194
|
exclude_assigned_to_annotators=exclude_assigned_to_annotators,
|
|
177
195
|
workorder=workorder,
|
|
178
196
|
infeasible=infeasible,
|
|
197
|
+
testcase_statuses=testcase_statuses,
|
|
198
|
+
work_order_item_id=work_order_item_id,
|
|
199
|
+
status=status,
|
|
179
200
|
authorization=authorization,
|
|
180
201
|
x_api_key=x_api_key,
|
|
181
202
|
)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# generated by datamodel-codegen:
|
|
2
|
-
# filename:
|
|
3
|
-
# timestamp: 2026-02-
|
|
2
|
+
# filename: tmp914w7h7j.json
|
|
3
|
+
# timestamp: 2026-02-03T22:34:51+00:00
|
|
4
4
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
@@ -1239,6 +1239,10 @@ class EnvFromSimulator(BaseModel):
|
|
|
1239
1239
|
"""
|
|
1240
1240
|
Custom name for this environment
|
|
1241
1241
|
"""
|
|
1242
|
+
restore_memory: Annotated[bool | None, Field(title="Restore Memory")] = True
|
|
1243
|
+
"""
|
|
1244
|
+
If True (default), resume from memory snapshot. If False, do a fresh boot with disk state only.
|
|
1245
|
+
"""
|
|
1242
1246
|
|
|
1243
1247
|
|
|
1244
1248
|
class EnvInfo(BaseModel):
|
|
@@ -2110,7 +2114,7 @@ class NodeSnapshotStoreConfig(BaseModel):
|
|
|
2110
2114
|
"""
|
|
2111
2115
|
cache_mb: Annotated[int | None, Field(title="Cache Mb")] = 10240
|
|
2112
2116
|
"""
|
|
2113
|
-
|
|
2117
|
+
Only used for snapshot-store (not blockdiff). Userspace decompressed page cache size in MB (0 to disable). This cache deduplicates pages by content hash across all manifests. For memory mounts (mount-mem): direct_io is disabled by default, so the kernel page cache already handles caching and deduplication for mmap'd files. Multiple VMs restoring from the same snapshot share kernel-cached pages automatically. The userspace cache is less beneficial here but can still help. For disk mounts (mount-tree): direct_io is enabled by default for overlay write coherency, bypassing the kernel cache. The userspace cache is important here for read-heavy workloads (Docker builds, package installs, etc.) that read many base image pages. Without caching, every read goes through FUSE decompression. Recommendation: 512MB for most deployments, increase for heavy disk I/O workloads.
|
|
2114
2118
|
"""
|
|
2115
2119
|
compression_workers: Annotated[int | None, Field(title="Compression Workers")] = 1
|
|
2116
2120
|
"""
|
|
@@ -3376,6 +3380,7 @@ class TestCaseSetCreateRequest(BaseModel):
|
|
|
3376
3380
|
class TestCaseStatusEnum(Enum):
|
|
3377
3381
|
uploaded = "uploaded"
|
|
3378
3382
|
qa_in_progress = "qa_in_progress"
|
|
3383
|
+
requires_recordings = "requires_recordings"
|
|
3379
3384
|
self_rejected = "self_rejected"
|
|
3380
3385
|
self_approved = "self_approved"
|
|
3381
3386
|
submitted = "submitted"
|
|
@@ -4947,6 +4952,9 @@ class SimReview(BaseModel):
|
|
|
4947
4952
|
review_type: Annotated[ReviewType, Field(title="Review Type")]
|
|
4948
4953
|
outcome: Annotated[Outcome, Field(title="Outcome")]
|
|
4949
4954
|
artifact_id: Annotated[str, Field(title="Artifact Id")]
|
|
4955
|
+
video_s3_path: Annotated[str | None, Field(title="Video S3 Path")] = None
|
|
4956
|
+
events_s3_path: Annotated[str | None, Field(title="Events S3 Path")] = None
|
|
4957
|
+
comments: Annotated[str | None, Field(title="Comments")] = None
|
|
4950
4958
|
reviewer_user_id: Annotated[int | None, Field(title="Reviewer User Id")] = None
|
|
4951
4959
|
sim_comments: Annotated[list[SimReviewComment] | None, Field(title="Sim Comments")] = None
|
|
4952
4960
|
|
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
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
|
-
|
|
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
|
-
|
|
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),
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
164
|
+
logger.debug("Tracing shutdown complete")
|
|
196
165
|
except Exception as e:
|
|
197
|
-
|
|
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
|
-
|
|
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
|
+
}
|