plato-sdk-v2 2.8.1__tar.gz → 2.8.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/PKG-INFO +1 -1
- plato_sdk_v2-2.8.2/VERSION +1 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/cli/pm.py +143 -152
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/cli/sandbox.py +3 -2
- plato_sdk_v2-2.8.2/plato/v1/cli/pm.py +14 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v2/sync/sandbox.py +47 -30
- plato_sdk_v2-2.8.1/VERSION +0 -1
- plato_sdk_v2-2.8.1/plato/v1/cli/pm.py +0 -1256
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/.claude/agents/sim-creator.md +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/.gitignore +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/BUILDING_SIMS.md +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/README.md +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/ci/CLAUDE.md +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/ci/deploy.sh +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/ci/lint.sh +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/ci/setup.sh +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/ci/version-bump.sh +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/docs/AGENT_SPEC.md +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/docs/CLI.md +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/docs/GENERATING_SIM_SDKS.md +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/docs/SIMULATOR_LIFECYCLE.md +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/docs/SIM_CREATOR.md +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/docs/cli/agent.md +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/docs/cli/flows.md +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/docs/cli/pm.md +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/docs/cli/sandbox.md +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/docs/cli/sims.md +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/docs/cli/world.md +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/docs/sim-creation-pipeline.md +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/docs/skill-restructure-plan.md +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/docs/skills/SIM-CREATION-ARCHITECTURE.md +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/docs/skills/sim-config/SKILL.md +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/docs/skills/sim-creator/SKILL.md +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/docs/skills/sim-debugger/SKILL.md +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/docs/skills/sim-flow-audit/SKILL.md +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/docs/skills/sim-flow-clear/SKILL.md +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/docs/skills/sim-flow-mutations/SKILL.md +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/docs/skills/sim-flow-run/SKILL.md +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/docs/skills/sim-research/SKILL.md +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/docs/skills/sim-review/SKILL.md +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/docs/skills/sim-sandbox-login/SKILL.md +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/docs/skills/sim-sandbox-services/SKILL.md +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/docs/skills/sim-sandbox-start/SKILL.md +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/docs/skills/sim-sandbox-worker/SKILL.md +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/docs/skills/sim-snapshot/SKILL.md +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/docs/skills/sim-submit/SKILL.md +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/docs/skills/sim-validate/SKILL.md +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/docs/skills/trajectory-analysis/SKILL.md +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/docs/testcommit +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/docs/unit.sh +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/examples/test_session_isolation.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/examples/test_session_network.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/__init__.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/__init__.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/__init__.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/__init__.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/agent_artifacts/__init__.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/agent_artifacts/archive_agent_artifact.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/agent_artifacts/create_agent_artifact.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/agent_artifacts/get_agent_artifact_by_public_id.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/agent_artifacts/get_agent_artifacts.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/cluster/__init__.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/cluster/cleanup_stale_vms.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/cluster/get_dispatchers.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/cluster/get_nodes_status.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/cluster/get_snapshot_lineage.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/cluster/get_snapshots_status.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/cluster/pause_resume_dispatchers.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/cluster/prefetch_snapshot.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/env/__init__.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/env/backup.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/env/cleanup.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/env/close.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/env/close_async.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/env/create.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/env/create_batch.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/env/create_simulator.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/env/evaluate_session.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/env/generate_mutations.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/env/generate_mutations_single.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/env/get_active_session.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/env/get_app_sim_worker_info.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/env/get_cdp_url.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/env/get_flows.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/env/get_interface_worker_info.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/env/get_job_info.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/env/get_job_status.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/env/get_job_worker_info.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/env/get_proxy_url.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/env/get_public_url.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/env/get_simulator_by_name.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/env/get_simulators.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/env/get_state.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/env/get_worker_ready.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/env/log_state_mutation.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/env/rescore_simulator_sessions.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/env/reset.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/env/score.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/env/send_heartbeat.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/env/update_simulator.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/evals/__init__.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/evals/create_test_case_review.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/evals/evaluate_python.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/evals/get_all_test_case_reviews.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/evals/get_scores_by_user.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/evals/get_scoring.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/evals/get_test_case_review.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/evals/human_in_the_loop_scoring.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/evals/start_eval_from_git.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/gitea/__init__.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/gitea/create_gitea_repository.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/gitea/create_simulator_repository.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/gitea/delete_gitea_repository.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/gitea/get_accessible_simulators.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/gitea/get_gitea_credentials.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/gitea/get_gitea_repository.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/gitea/get_my_gitea_info.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/gitea/get_my_repositories.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/gitea/get_repository_branches.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/gitea/get_repository_contents.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/gitea/get_simulator_file_content.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/gitea/get_simulator_repository.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/gitea/get_simulator_repository_branches.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/gitea/get_simulator_repository_contents.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/jobs/__init__.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/jobs/get_job_by_id.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/jobs/get_jobs_by_group_id.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/jobs/get_keepalive_jobs.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/jobs/list_jobs.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/jobs/update_job_status.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/organization/__init__.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/organization/create_annotator_assignment.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/organization/create_org_api_key.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/organization/create_org_policy.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/organization/delete_org_api_key.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/organization/delete_org_policy.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/organization/get_annotator_assignments.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/organization/get_org_api_key_policies.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/organization/get_org_api_keys.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/organization/get_org_policies.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/organization/get_organization_concurrency_status.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/organization/get_organization_members.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/organization/update_annotator_assignment_stage.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/organization/update_organization_concurrency_limit.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/queue/__init__.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/queue/get_queue_status.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/queue/get_vm_detail.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/queue/get_vms.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/queue/get_workers.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/sandbox/__init__.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/sandbox/checkpoint_vm.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/sandbox/close_vm.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/sandbox/create_vm.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/sandbox/execute_ssh_command.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/sandbox/get_operation_events.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/sandbox/healthy_services.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/sandbox/healthy_worker.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/sandbox/save_vm_snapshot.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/sandbox/setup_root_access.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/sandbox/setup_sandbox.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/sandbox/start_worker.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/session/__init__.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/session/analyze_labels.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/session/archive_session.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/session/archive_session_logs_endpoint.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/session/create_from_labels.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/session/create_session_from_browser.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/session/create_session_from_env_recording.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/session/create_session_from_har.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/session/get_env_recording.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/session/get_grouped_replay_sessions.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/session/get_logs_status.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/session/get_network_requests.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/session/get_next_session_for_annotator.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/session/get_public_benchmark_sessions.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/session/get_replay_score_data.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/session/get_rrweb_actions.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/session/get_rrweb_events.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/session/get_screen_recording.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/session/get_session.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/session/get_session_replays.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/session/get_sessions.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/session/get_sessions_for_archival.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/session/get_ui_events.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/session/restore_session_logs.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/session/score_session_with_config.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/session/search_sessions_by_ids.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/session/set_session_output.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/session/update_session_public.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/session/update_session_testcase.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/simulator/__init__.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/simulator/add_simulator_review.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/simulator/batch_create_test_cases.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/simulator/batch_get_artifact_metadata.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/simulator/get_all_simulators_info.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/simulator/get_db_config.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/simulator/get_env_flows.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/simulator/get_plato_config.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/simulator/get_sessions_batch_by_job_groups.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/simulator/get_sessions_by_job_group.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/simulator/get_simulator_by_name.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/simulator/get_simulator_id.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/simulator/get_simulator_info.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/simulator/get_simulator_version_details.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/simulator/get_simulator_versions.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/simulator/get_start_path.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/simulator/get_version_by_tag.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/simulator/list_simulators.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/simulator/list_simulators_by_org.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/simulator/list_simulators_status.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/simulator/register.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/simulator/update_simulator.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/simulator/update_simulator_status.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/simulator/update_tag.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/testcases/__init__.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/testcases/archive_organization_test_case_assignments.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/testcases/archive_organization_testcase.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/testcases/archive_testcase.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/testcases/assign_testcase_to_organizations.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/testcases/auto_verify_testcase.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/testcases/bulk_archive_testcases.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/testcases/convert_text_to_structured_data.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/testcases/create_testcase.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/testcases/create_testcase_set.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/testcases/delete_testcase_set.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/testcases/filter_human_recorder_testcases.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/testcases/generate_outcome_schema.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/testcases/generate_prediction.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/testcases/generate_prediction_from_steps.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/testcases/generate_scoring_config_from_sessions.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/testcases/generate_state_mutations_config_route.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/testcases/get_human_recorder_tab_counts.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/testcases/get_human_recorder_testcases.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/testcases/get_merged_mutations.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/testcases/get_mutation_groups_for_testcase.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/testcases/get_next_testcase_for_scoring.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/testcases/get_organization_test_case_assignments.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/testcases/get_testcase.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/testcases/get_testcase_metadata_for_scoring.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/testcases/get_testcase_sets.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/testcases/get_testcases.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/testcases/get_testcases_in_set.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/testcases/mark_organization_test_case_completed.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/testcases/update_testcase.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v1/testcases/version_bump_testcase.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/__init__.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/admin/__init__.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/admin/cache/__init__.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/admin/cache/clear_all.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/admin/cache/clear_single_cache.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/admin/cache/delete_key.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/admin/cache/get_stats.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/admin/cache/list_cache_names.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/agents/__init__.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/agents/get_agent_ecr_token.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/agents/get_agent_schema.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/agents/get_agent_versions.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/agents/import_agent.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/agents/list_docker_agents.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/agents/lookup_agent_version.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/agents/register_docker_agent.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/artifacts/__init__.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/artifacts/get_artifact.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/chronos/__init__.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/chronos/launch_job.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/chronos_packages/__init__.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/chronos_packages/get_package_versions.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/chronos_packages/list_chronos_packages.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/chronos_packages/lookup_package_version.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/chronos_packages/register_chronos_package.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/chronos_packages/upload_chronos_package.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/cluster/__init__.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/cluster/get_node_config.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/jobs/__init__.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/jobs/checkpoint.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/jobs/close.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/jobs/connect_routing_info.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/jobs/connect_url.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/jobs/disk_snapshot.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/jobs/execute.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/jobs/get_flows.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/jobs/get_plato_config.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/jobs/log_for_job.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/jobs/make.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/jobs/public_url.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/jobs/reset.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/jobs/set_date.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/jobs/setup_sandbox.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/jobs/snapshot.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/jobs/snapshot_store.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/jobs/state.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/jobs/wait_for_ready.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/networks/__init__.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/networks/add_member.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/networks/create_network.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/networks/delete_network.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/networks/get_network.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/networks/list_members.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/networks/list_networks.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/networks/remove_member.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/networks/update_member.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/pypi/__init__.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/pypi/download_package.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/pypi/get_package_schema.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/pypi/package_index.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/pypi/simple_index.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/pypi/upload_package.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/releases/__init__.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/releases/create.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/releases/deploy.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/releases/get.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/releases/handle_get_existing_public_ids.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/releases/handle_import.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/releases/list_releases.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/releases/prep_release_assigned_testcases.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/releases/update.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/sessions/__init__.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/sessions/add_job.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/sessions/add_ssh_key.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/sessions/checkpoint.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/sessions/close.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/sessions/connect_network.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/sessions/disk_snapshot.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/sessions/evaluate.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/sessions/execute.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/sessions/get_connect_url.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/sessions/get_presigned_url.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/sessions/get_public_url.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/sessions/get_s3_content.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/sessions/get_session_details.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/sessions/get_session_documents.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/sessions/get_session_flows.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/sessions/get_session_logs.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/sessions/get_session_plato_config.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/sessions/heartbeat.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/sessions/list_jobs.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/sessions/list_sessions.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/sessions/log_job_mutation.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/sessions/make.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/sessions/remove_job.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/sessions/reset.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/sessions/set_date.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/sessions/setup_sandbox.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/sessions/snapshot.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/sessions/snapshot_store.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/sessions/state.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/sessions/upload_session_documents.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/sessions/wait_for_ready.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/user/__init__.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/v2/user/get_current_user.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/version/__init__.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/api/version/check.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/client.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/errors.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/models/__init__.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_generated/py.typed +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_sims_generator/__init__.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_sims_generator/cli.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_sims_generator/instruction.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_sims_generator/parser.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_sims_generator/python.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_sims_generator/templates/instruction/helpers.py.jinja +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_sims_generator/templates/instruction/init.py.jinja +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_sims_generator/templates/python/api_init.py.jinja +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_sims_generator/templates/python/client.py.jinja +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_sims_generator/templates/python/endpoint.py.jinja +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_sims_generator/templates/python/errors.py.jinja +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_sims_generator/templates/python/package_init.py.jinja +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_sims_generator/templates/python/tag_init.py.jinja +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/_sims_generator/templates/python/version_init.py.jinja +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/agents/__init__.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/agents/artifacts.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/agents/base.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/agents/build.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/agents/config.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/agents/otel.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/agents/runner.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/agents/trajectory.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/__init__.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/__init__.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/admin/__init__.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/admin/clear_database_api_admin_clear_db_post.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/admin/sync_agents_api_admin_sync_agents_post.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/admin/sync_all_api_admin_sync_all_post.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/admin/sync_runtimes_api_admin_sync_runtimes_post.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/admin/sync_worlds_api_admin_sync_worlds_post.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/agents/__init__.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/agents/create_agent.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/agents/delete_agent.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/agents/get_agent.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/agents/get_agent_schema.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/agents/get_agent_versions.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/agents/list_agents.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/agents/lookup_agent.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/auth/__init__.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/auth/debug_auth_api_auth_debug_get.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/auth/get_auth_status_api_auth_status_get.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/auth/get_current_user_route_api_auth_me_get.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/checkpoints/__init__.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/checkpoints/list_checkpoints.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/checkpoints/preview_checkpoint.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/default/__init__.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/default/health.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/events/__init__.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/events/get_session_event.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/events/list_session_events.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/jobs/__init__.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/jobs/launch_job.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/otel/__init__.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/otel/get_session_traces_api_otel_sessions__session_id__traces_get.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/otel/receive_traces_api_otel_v1_traces_post.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/registry/__init__.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/registry/get_agent_schema_api_registry_agents__agent_name__schema_get.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/registry/get_agent_versions_api_registry_agents__agent_name__versions_get.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/registry/get_world_schema_api_registry_worlds__package_name__schema_get.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/registry/get_world_versions_api_registry_worlds__package_name__versions_get.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/registry/list_registry_agents_api_registry_agents_get.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/registry/list_registry_worlds_api_registry_worlds_get.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/runtimes/__init__.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/runtimes/create_runtime.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/runtimes/delete_runtime.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/runtimes/get_runtime.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/runtimes/get_runtime_logs.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/runtimes/list_runtimes.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/runtimes/test_runtime.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/secrets/__init__.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/secrets/create_secret.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/secrets/delete_secret.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/secrets/get_secret.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/secrets/list_secrets.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/secrets/update_secret.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/sessions/__init__.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/sessions/close_session.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/sessions/complete_session.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/sessions/create_session.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/sessions/get_session.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/sessions/get_session_bash_logs_download.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/sessions/get_session_envs.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/sessions/get_session_live_logs.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/sessions/get_session_logs.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/sessions/get_session_logs_download.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/sessions/get_session_status.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/sessions/list_session_creators.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/sessions/list_sessions.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/sessions/list_tags.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/sessions/update_session_tags.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/status/__init__.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/status/get_status_api_status_get.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/status/get_version_info_api_version_get.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/templates/__init__.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/templates/create_template.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/templates/delete_template.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/templates/get_template.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/templates/list_templates.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/templates/update_template.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/trajectories/__init__.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/trajectories/get_trajectory.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/trajectories/list_trajectories.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/worlds/__init__.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/worlds/create_world.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/worlds/delete_world.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/worlds/get_world.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/api/worlds/list_worlds.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/client.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/errors.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/models/__init__.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/chronos/py.typed +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/cli/__init__.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/cli/agent.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/cli/audit_ui.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/cli/chronos.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/cli/main.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/cli/proxy.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/cli/utils.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/cli/verify.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/cli/world.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/py.typed +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/sims/README.md +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/sims/__init__.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/sims/agent_helpers.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/sims/cli.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/sims/generate_clients.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/sims/registry.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/__init__.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/audit_ui.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/cli/__init__.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/cli/agent.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/cli/chronos.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/cli/main.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/cli/proxy.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/cli/sandbox.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/cli/ssh.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/cli/templates/world-runner.Dockerfile +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/cli/utils.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/cli/verify.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/cli/world.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/cli.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/config.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/examples/doordash_tasks.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/examples/loadtest.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/examples/test_env.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/examples/test_env_custom_browser.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/examples/test_env_sync.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/examples/test_reuse_env.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/examples/test_run.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/exceptions.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/extensions/envgen-recorder/README.md +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/extensions/envgen-recorder/api-client.js +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/extensions/envgen-recorder/background.js +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/extensions/envgen-recorder/build-sdk.js +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/extensions/envgen-recorder/content.js +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/extensions/envgen-recorder/manifest.json +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/extensions/envgen-recorder/offscreen.html +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/extensions/envgen-recorder/offscreen.js +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/extensions/envgen-recorder/options.html +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/extensions/envgen-recorder/options.js +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/extensions/envgen-recorder/package-lock.json +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/extensions/envgen-recorder/package.json +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/extensions/envgen-recorder/plato-sdk-bundle.js +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/extensions/envgen-recorder/plato-sdk-bundle.js.map +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/extensions/envgen-recorder/popup.html +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/extensions/envgen-recorder/popup.js +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/extensions/envgen-recorder/review-panel.html +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/extensions/envgen-recorder/review-panel.js +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/extensions/envgen-recorder/review-success.html +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/extensions/envgen-recorder/review-success.js +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/extensions/envgen-recorder/session-active.html +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/extensions/envgen-recorder/session-active.js +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/extensions/envgen-recorder/session-ended.html +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/extensions/envgen-recorder/session-ended.js +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/extensions/envgen-recorder/session-setup.html +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/extensions/envgen-recorder/session-setup.js +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/extensions/envgen-recorder/sessions.html +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/extensions/envgen-recorder/sessions.js +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/extensions/envgen-recorder/styles.css +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/flow_executor.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/models/__init__.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/models/build_models.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/models/env.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/models/flow.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/models/sandbox.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/models/task.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/sandbox_sdk.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/sdk.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/sync_env.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/sync_flow_executor.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/sync_sdk.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v1/utils/proxytunnel.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v2/__init__.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v2/async_/__init__.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v2/async_/artifact.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v2/async_/chronos.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v2/async_/client.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v2/async_/environment.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v2/async_/flow_executor.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v2/async_/session.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v2/models.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v2/sync/__init__.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v2/sync/artifact.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v2/sync/chronos.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v2/sync/client.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v2/sync/environment.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v2/sync/flow_executor.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v2/sync/session.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v2/types.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v2/utils/__init__.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v2/utils/db_cleanup.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v2/utils/gateway_tunnel.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v2/utils/models.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/v2/utils/proxy_tunnel.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/worlds/README.md +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/worlds/__init__.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/worlds/base.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/worlds/build_hook.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/worlds/config.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/plato/worlds/runner.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/pyproject.toml +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/scripts/get_all_artifact_targets.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/tests/__init__.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/tests/integration/__init__.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/tests/integration/conftest.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/tests/integration/test_browser_agent.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/tests/integration/test_chronos_callback.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/tests/integration/test_cleanup_snapshot.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/tests/integration/test_code_world.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/tests/integration/test_harbor_agent_runner.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/tests/sims/__init__.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/tests/sims/conftest.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/tests/sims/test_agent_helpers.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/tests/test_heartbeat_keepalive.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/tests/test_session_serialization.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/tests/test_set_date.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/tests/test_v2_imports.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/tests/test_v2_multisim_integration.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/tests/test_v2_session.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/tests/test_version.py +0 -0
- {plato_sdk_v2-2.8.1 → plato_sdk_v2-2.8.2}/uv.lock +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
2.8.2
|
|
@@ -22,12 +22,10 @@ from plato._generated.api.v1.simulator import (
|
|
|
22
22
|
update_simulator_status,
|
|
23
23
|
update_tag,
|
|
24
24
|
)
|
|
25
|
-
from plato._generated.api.v2.sessions import state as sessions_state
|
|
26
25
|
from plato._generated.models import (
|
|
27
26
|
AddReviewRequest,
|
|
28
27
|
AppApiV1SimulatorRoutesUpdateSimulatorRequest,
|
|
29
28
|
Authentication,
|
|
30
|
-
Flow,
|
|
31
29
|
Outcome,
|
|
32
30
|
ReviewType,
|
|
33
31
|
UpdateStatusRequest,
|
|
@@ -42,9 +40,9 @@ from plato.cli.utils import (
|
|
|
42
40
|
require_sandbox_field,
|
|
43
41
|
require_sandbox_state,
|
|
44
42
|
)
|
|
45
|
-
from plato.
|
|
46
|
-
from plato.
|
|
47
|
-
from plato.
|
|
43
|
+
from plato.v1.flow_executor import FlowExecutor
|
|
44
|
+
from plato.v1.models.flow import Flow
|
|
45
|
+
from plato.v1.sdk import Plato
|
|
48
46
|
|
|
49
47
|
# =============================================================================
|
|
50
48
|
# CONSTANTS
|
|
@@ -318,25 +316,30 @@ def review_base(
|
|
|
318
316
|
)
|
|
319
317
|
|
|
320
318
|
async def _review_base():
|
|
319
|
+
import warnings
|
|
320
|
+
|
|
321
321
|
base_url = _get_base_url()
|
|
322
|
-
|
|
323
|
-
|
|
322
|
+
# v1 SDK expects base_url to include /api suffix
|
|
323
|
+
v1_base_url = f"{base_url}/api"
|
|
324
|
+
# Suppress the deprecation warning from v1 Plato
|
|
325
|
+
with warnings.catch_warnings():
|
|
326
|
+
warnings.simplefilter("ignore", DeprecationWarning)
|
|
327
|
+
plato = Plato(api_key=api_key, base_url=v1_base_url)
|
|
328
|
+
env = None
|
|
324
329
|
playwright = None
|
|
325
330
|
browser = None
|
|
326
|
-
login_result = None
|
|
327
331
|
|
|
328
332
|
try:
|
|
329
|
-
http_client = plato._http
|
|
330
|
-
|
|
331
333
|
# simulator_name is guaranteed set by parse_simulator_artifact (or we exit)
|
|
332
334
|
assert simulator_name is not None, "simulator_name must be set"
|
|
333
335
|
|
|
334
|
-
# Get simulator by name
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
336
|
+
# Get simulator by name using httpx for API calls
|
|
337
|
+
async with httpx.AsyncClient(base_url=base_url, timeout=60.0) as http_client:
|
|
338
|
+
sim = await get_simulator_by_name.asyncio(
|
|
339
|
+
client=http_client,
|
|
340
|
+
name=simulator_name,
|
|
341
|
+
x_api_key=api_key,
|
|
342
|
+
)
|
|
340
343
|
simulator_id = sim.id
|
|
341
344
|
current_config = sim.config or {}
|
|
342
345
|
current_status = current_config.get("status", "not_started")
|
|
@@ -357,26 +360,27 @@ def review_base(
|
|
|
357
360
|
|
|
358
361
|
console.print(f"[cyan]Using artifact:[/cyan] {artifact_id}")
|
|
359
362
|
|
|
360
|
-
# Try to create
|
|
363
|
+
# Try to create environment from artifact using v1 API
|
|
361
364
|
try:
|
|
362
365
|
console.print(f"[cyan]Creating {simulator_name} environment with artifact {artifact_id}...[/cyan]")
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
+
env = await plato.make_environment(
|
|
367
|
+
env_id=simulator_name,
|
|
368
|
+
artifact_id=artifact_id,
|
|
366
369
|
)
|
|
367
|
-
console.print(f"[green]✅
|
|
370
|
+
console.print(f"[green]✅ Environment created: {env.id}[/green]")
|
|
371
|
+
|
|
372
|
+
# Wait for environment to be ready
|
|
373
|
+
console.print("[cyan]Waiting for environment to be ready...[/cyan]")
|
|
374
|
+
await env.wait_for_ready(timeout=300)
|
|
375
|
+
console.print("[green]✅ Environment ready![/green]")
|
|
368
376
|
|
|
369
377
|
# Reset
|
|
370
378
|
console.print("[cyan]Resetting environment...[/cyan]")
|
|
371
|
-
await
|
|
379
|
+
await env.reset()
|
|
372
380
|
console.print("[green]✅ Environment reset complete![/green]")
|
|
373
381
|
|
|
374
|
-
# Get public URL
|
|
375
|
-
|
|
376
|
-
first_alias = session.envs[0].alias if session.envs else None
|
|
377
|
-
public_url = public_urls.get(first_alias) if first_alias else None
|
|
378
|
-
if not public_url and public_urls:
|
|
379
|
-
public_url = list(public_urls.values())[0]
|
|
382
|
+
# Get public URL (v1 returns string directly)
|
|
383
|
+
public_url = await env.get_public_url()
|
|
380
384
|
console.print(f"[cyan]Public URL:[/cyan] {public_url}")
|
|
381
385
|
|
|
382
386
|
# Launch Playwright browser and login
|
|
@@ -452,70 +456,66 @@ def review_base(
|
|
|
452
456
|
except Exception as e:
|
|
453
457
|
console.print(f"[yellow]⚠️ Flow execution error: {e}[/yellow]")
|
|
454
458
|
else:
|
|
455
|
-
# Use default login via
|
|
459
|
+
# Use default login via env.login() (v1 API takes Page, not Browser)
|
|
456
460
|
if fake_time:
|
|
457
461
|
console.print("[yellow]⚠️ --clock with default login may not work correctly.[/yellow]")
|
|
458
462
|
console.print("[yellow] Use --local with a flow file for reliable clock testing.[/yellow]")
|
|
459
463
|
try:
|
|
460
|
-
|
|
461
|
-
page = list(login_result.pages.values())[0] if login_result.pages else None
|
|
462
|
-
console.print("[green]✅ Logged into environment[/green]")
|
|
463
|
-
except Exception as e:
|
|
464
|
-
console.print(f"[yellow]⚠️ Login error: {e}[/yellow]")
|
|
464
|
+
# Create page and navigate to public URL first
|
|
465
465
|
page = await browser.new_page()
|
|
466
|
-
# Install fake clock on fallback page
|
|
467
466
|
if fake_time:
|
|
468
467
|
await page.clock.install(time=fake_time)
|
|
469
468
|
console.print(f"[green]✅ Fake clock installed: {fake_time.isoformat()}[/green]")
|
|
470
469
|
if public_url:
|
|
471
470
|
await page.goto(public_url)
|
|
471
|
+
# v1 login takes a Page and uses from_api=True to fetch flows from server
|
|
472
|
+
await env.login(page, dataset="base", from_api=True)
|
|
473
|
+
console.print("[green]✅ Logged into environment[/green]")
|
|
474
|
+
except Exception as e:
|
|
475
|
+
console.print(f"[yellow]⚠️ Login error: {e}[/yellow]")
|
|
476
|
+
# Page already created above, just navigate if not already done
|
|
477
|
+
if public_url and page:
|
|
478
|
+
try:
|
|
479
|
+
await page.goto(public_url)
|
|
480
|
+
except Exception:
|
|
481
|
+
pass
|
|
472
482
|
|
|
473
483
|
# ALWAYS check state after login to verify no mutations
|
|
474
484
|
console.print("\n[cyan]Checking environment state after login...[/cyan]")
|
|
475
485
|
has_mutations = False
|
|
476
486
|
has_errors = False
|
|
477
487
|
try:
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
console.print(f"
|
|
488
|
-
|
|
489
|
-
if isinstance(state_data, dict):
|
|
490
|
-
# Check for error in state response
|
|
491
|
-
if "error" in state_data:
|
|
492
|
-
has_errors = True
|
|
493
|
-
console.print("\n[bold red]❌ State API Error:[/bold red]")
|
|
494
|
-
console.print(f"[red]{state_data['error']}[/red]")
|
|
495
|
-
continue
|
|
496
|
-
|
|
497
|
-
mutations = state_data.pop("mutations", [])
|
|
498
|
-
console.print("\n[bold]State:[/bold]")
|
|
499
|
-
console.print(json.dumps(state_data, indent=2, default=str))
|
|
500
|
-
if mutations:
|
|
501
|
-
has_mutations = True
|
|
502
|
-
console.print(f"\n[bold red]Mutations ({len(mutations)}):[/bold red]")
|
|
503
|
-
console.print(json.dumps(mutations, indent=2, default=str))
|
|
504
|
-
else:
|
|
505
|
-
console.print("\n[green]No mutations recorded[/green]")
|
|
506
|
-
else:
|
|
507
|
-
console.print(f"[yellow]Unexpected state format: {type(state_data)}[/yellow]")
|
|
508
|
-
|
|
509
|
-
if has_errors:
|
|
510
|
-
console.print("\n[bold red]❌ State check failed due to errors![/bold red]")
|
|
511
|
-
console.print("[yellow]The worker may not be properly connected.[/yellow]")
|
|
512
|
-
elif has_mutations:
|
|
513
|
-
console.print("\n[bold red]⚠️ WARNING: Login flow created mutations![/bold red]")
|
|
514
|
-
console.print("[yellow]The login flow should NOT modify database state.[/yellow]")
|
|
488
|
+
# v1 API: env.get_state() returns state dict directly
|
|
489
|
+
state_data = await env.get_state(merge_mutations=True)
|
|
490
|
+
console.print(f"\n[bold cyan]Environment {env.id}:[/bold cyan]")
|
|
491
|
+
|
|
492
|
+
if isinstance(state_data, dict):
|
|
493
|
+
# Check for error in state response (only if error has a truthy value)
|
|
494
|
+
if state_data.get("error"):
|
|
495
|
+
has_errors = True
|
|
496
|
+
console.print("\n[bold red]❌ State API Error:[/bold red]")
|
|
497
|
+
console.print(f"[red]{state_data['error']}[/red]")
|
|
515
498
|
else:
|
|
516
|
-
|
|
499
|
+
mutations = state_data.pop("mutations", [])
|
|
500
|
+
console.print("\n[bold]State:[/bold]")
|
|
501
|
+
console.print(json.dumps(state_data, indent=2, default=str))
|
|
502
|
+
if mutations:
|
|
503
|
+
has_mutations = True
|
|
504
|
+
console.print(f"\n[bold red]Mutations ({len(mutations)}):[/bold red]")
|
|
505
|
+
console.print(json.dumps(mutations, indent=2, default=str))
|
|
506
|
+
else:
|
|
507
|
+
console.print("\n[green]No mutations recorded[/green]")
|
|
517
508
|
else:
|
|
518
|
-
console.print("[yellow]
|
|
509
|
+
console.print(f"[yellow]Unexpected state format: {type(state_data)}[/yellow]")
|
|
510
|
+
|
|
511
|
+
if has_errors:
|
|
512
|
+
console.print("\n[bold red]❌ State check failed due to errors![/bold red]")
|
|
513
|
+
console.print("[yellow]The worker may not be properly connected.[/yellow]")
|
|
514
|
+
elif has_mutations:
|
|
515
|
+
console.print("\n[bold red]⚠️ WARNING: Login flow created mutations![/bold red]")
|
|
516
|
+
console.print("[yellow]The login flow should NOT modify database state.[/yellow]")
|
|
517
|
+
else:
|
|
518
|
+
console.print("\n[bold green]✅ Login flow verified - no mutations created[/bold green]")
|
|
519
519
|
except Exception as e:
|
|
520
520
|
console.print(f"[red]❌ Error getting state: {e}[/red]")
|
|
521
521
|
|
|
@@ -562,37 +562,26 @@ def review_base(
|
|
|
562
562
|
elif command in ["state", "s"]:
|
|
563
563
|
console.print("\n[cyan]Getting environment state with mutations...[/cyan]")
|
|
564
564
|
try:
|
|
565
|
-
#
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
console.print(f"[red]{state_data['error']}[/red]")
|
|
582
|
-
continue
|
|
583
|
-
|
|
584
|
-
mutations = state_data.pop("mutations", [])
|
|
585
|
-
console.print("\n[bold]State:[/bold]")
|
|
586
|
-
console.print(json.dumps(state_data, indent=2, default=str))
|
|
587
|
-
if mutations:
|
|
588
|
-
console.print(f"\n[bold]Mutations ({len(mutations)}):[/bold]")
|
|
589
|
-
console.print(json.dumps(mutations, indent=2, default=str))
|
|
590
|
-
else:
|
|
591
|
-
console.print("\n[yellow]No mutations recorded[/yellow]")
|
|
565
|
+
# v1 API: env.get_state() returns state dict directly
|
|
566
|
+
state_data = await env.get_state(merge_mutations=True)
|
|
567
|
+
console.print(f"\n[bold cyan]Environment {env.id}:[/bold cyan]")
|
|
568
|
+
|
|
569
|
+
if isinstance(state_data, dict):
|
|
570
|
+
# Check for error in state response (only if error has a truthy value)
|
|
571
|
+
if state_data.get("error"):
|
|
572
|
+
console.print("\n[bold red]❌ State API Error:[/bold red]")
|
|
573
|
+
console.print(f"[red]{state_data['error']}[/red]")
|
|
574
|
+
else:
|
|
575
|
+
mutations = state_data.pop("mutations", [])
|
|
576
|
+
console.print("\n[bold]State:[/bold]")
|
|
577
|
+
console.print(json.dumps(state_data, indent=2, default=str))
|
|
578
|
+
if mutations:
|
|
579
|
+
console.print(f"\n[bold]Mutations ({len(mutations)}):[/bold]")
|
|
580
|
+
console.print(json.dumps(mutations, indent=2, default=str))
|
|
592
581
|
else:
|
|
593
|
-
console.print(
|
|
582
|
+
console.print("\n[yellow]No mutations recorded[/yellow]")
|
|
594
583
|
else:
|
|
595
|
-
console.print(
|
|
584
|
+
console.print(json.dumps(state_data, indent=2, default=str))
|
|
596
585
|
console.print()
|
|
597
586
|
except Exception as e:
|
|
598
587
|
console.print(f"[red]❌ Error getting state: {e}[/red]")
|
|
@@ -633,56 +622,60 @@ def review_base(
|
|
|
633
622
|
validate_status_transition(current_status, "env_review_requested", "review base reject")
|
|
634
623
|
new_status = "env_in_progress"
|
|
635
624
|
|
|
636
|
-
#
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
x_api_key=api_key,
|
|
642
|
-
)
|
|
643
|
-
|
|
644
|
-
# Add review if rejecting
|
|
645
|
-
if outcome == "reject":
|
|
646
|
-
comments = ""
|
|
647
|
-
while not comments:
|
|
648
|
-
comments = typer.prompt("Comments (required for reject)").strip()
|
|
649
|
-
if not comments:
|
|
650
|
-
console.print("[yellow]Comments are required when rejecting. Please provide feedback.[/yellow]")
|
|
651
|
-
|
|
652
|
-
await add_simulator_review.asyncio(
|
|
653
|
-
client=http_client,
|
|
625
|
+
# Create httpx client for API calls
|
|
626
|
+
async with httpx.AsyncClient(base_url=base_url, timeout=60.0) as api_client:
|
|
627
|
+
# Update status
|
|
628
|
+
await update_simulator_status.asyncio(
|
|
629
|
+
client=api_client,
|
|
654
630
|
simulator_id=simulator_id,
|
|
655
|
-
body=
|
|
656
|
-
review_type=ReviewType.env,
|
|
657
|
-
outcome=Outcome.reject,
|
|
658
|
-
artifact_id=artifact_id,
|
|
659
|
-
comments=comments,
|
|
660
|
-
),
|
|
631
|
+
body=UpdateStatusRequest(status=new_status),
|
|
661
632
|
x_api_key=api_key,
|
|
662
633
|
)
|
|
663
634
|
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
635
|
+
# Add review if rejecting
|
|
636
|
+
if outcome == "reject":
|
|
637
|
+
comments = ""
|
|
638
|
+
while not comments:
|
|
639
|
+
comments = typer.prompt("Comments (required for reject)").strip()
|
|
640
|
+
if not comments:
|
|
641
|
+
console.print(
|
|
642
|
+
"[yellow]Comments are required when rejecting. Please provide feedback.[/yellow]"
|
|
643
|
+
)
|
|
644
|
+
|
|
645
|
+
await add_simulator_review.asyncio(
|
|
646
|
+
client=api_client,
|
|
647
|
+
simulator_id=simulator_id,
|
|
648
|
+
body=AddReviewRequest(
|
|
649
|
+
review_type=ReviewType.env,
|
|
650
|
+
outcome=Outcome.reject,
|
|
677
651
|
artifact_id=artifact_id,
|
|
678
|
-
|
|
679
|
-
dataset="base",
|
|
652
|
+
comments=comments,
|
|
680
653
|
),
|
|
681
654
|
x_api_key=api_key,
|
|
682
655
|
)
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
656
|
+
|
|
657
|
+
console.print(f"[green]✅ Review submitted: {outcome}[/green]")
|
|
658
|
+
console.print(f"[cyan]Status:[/cyan] {current_status} → {new_status}")
|
|
659
|
+
|
|
660
|
+
# If passed, automatically tag artifact as prod-latest
|
|
661
|
+
if outcome == "pass" and artifact_id:
|
|
662
|
+
console.print("\n[cyan]Tagging artifact as prod-latest...[/cyan]")
|
|
663
|
+
try:
|
|
664
|
+
# simulator_name and artifact_id are guaranteed to be set at this point
|
|
665
|
+
assert simulator_name is not None
|
|
666
|
+
await update_tag.asyncio(
|
|
667
|
+
client=api_client,
|
|
668
|
+
body=UpdateTagRequest(
|
|
669
|
+
simulator_name=simulator_name,
|
|
670
|
+
artifact_id=artifact_id,
|
|
671
|
+
tag_name="prod-latest",
|
|
672
|
+
dataset="base",
|
|
673
|
+
),
|
|
674
|
+
x_api_key=api_key,
|
|
675
|
+
)
|
|
676
|
+
console.print(f"[green]✅ Tagged {artifact_id[:8]}... as prod-latest[/green]")
|
|
677
|
+
except Exception as e:
|
|
678
|
+
console.print(f"[yellow]⚠️ Could not tag as prod-latest: {e}[/yellow]")
|
|
686
679
|
|
|
687
680
|
except typer.Exit:
|
|
688
681
|
raise
|
|
@@ -693,8 +686,6 @@ def review_base(
|
|
|
693
686
|
finally:
|
|
694
687
|
# Cleanup
|
|
695
688
|
try:
|
|
696
|
-
if login_result and login_result.context:
|
|
697
|
-
await login_result.context.close()
|
|
698
689
|
if browser:
|
|
699
690
|
await browser.close()
|
|
700
691
|
if playwright:
|
|
@@ -702,13 +693,13 @@ def review_base(
|
|
|
702
693
|
except Exception as e:
|
|
703
694
|
console.print(f"[yellow]⚠️ Browser cleanup error: {e}[/yellow]")
|
|
704
695
|
|
|
705
|
-
if
|
|
696
|
+
if env:
|
|
706
697
|
try:
|
|
707
|
-
console.print("[cyan]Shutting down
|
|
708
|
-
await
|
|
709
|
-
console.print("[green]✅
|
|
698
|
+
console.print("[cyan]Shutting down environment...[/cyan]")
|
|
699
|
+
await env.close()
|
|
700
|
+
console.print("[green]✅ Environment shut down[/green]")
|
|
710
701
|
except Exception as e:
|
|
711
|
-
console.print(f"[yellow]⚠️
|
|
702
|
+
console.print(f"[yellow]⚠️ Environment cleanup error: {e}[/yellow]")
|
|
712
703
|
|
|
713
704
|
try:
|
|
714
705
|
await plato.close()
|
|
@@ -407,8 +407,9 @@ def sandbox_snapshot(
|
|
|
407
407
|
|
|
408
408
|
Captures VM state and database for later restoration.
|
|
409
409
|
|
|
410
|
-
|
|
411
|
-
plato sandbox snapshot
|
|
410
|
+
Examples:
|
|
411
|
+
plato sandbox snapshot # Uses mode from state.json
|
|
412
|
+
plato sandbox snapshot --mode config # Override to pass local plato-config.yml and flows to artifact
|
|
412
413
|
"""
|
|
413
414
|
with sandbox_context(working_dir, json_output, verbose) as (client, out):
|
|
414
415
|
out.console.print("Creating snapshot...")
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"""Project Management CLI commands for Plato simulator workflow.
|
|
2
|
+
|
|
3
|
+
This module re-exports from plato.cli.pm for backwards compatibility.
|
|
4
|
+
"""
|
|
5
|
+
|
|
6
|
+
# Re-export from main CLI for backwards compatibility
|
|
7
|
+
from plato.cli.pm import (
|
|
8
|
+
list_app,
|
|
9
|
+
pm_app,
|
|
10
|
+
review_app,
|
|
11
|
+
submit_app,
|
|
12
|
+
)
|
|
13
|
+
|
|
14
|
+
__all__ = ["pm_app", "list_app", "review_app", "submit_app"]
|
|
@@ -622,6 +622,28 @@ class SandboxClient:
|
|
|
622
622
|
raise ValueError("No job ID found")
|
|
623
623
|
self.console.print(f"job_id: {job_id}")
|
|
624
624
|
|
|
625
|
+
# For artifact mode, we need to get simulator_name from session details BEFORE generating public URL
|
|
626
|
+
# Note: get_session_details returns a dict, not a Pydantic model
|
|
627
|
+
if not simulator_name:
|
|
628
|
+
session_details = get_session_details.sync(
|
|
629
|
+
client=self._http,
|
|
630
|
+
session_id=session_id,
|
|
631
|
+
x_api_key=self.api_key,
|
|
632
|
+
)
|
|
633
|
+
jobs = (
|
|
634
|
+
session_details.get("jobs")
|
|
635
|
+
if isinstance(session_details, dict)
|
|
636
|
+
else getattr(session_details, "jobs", None)
|
|
637
|
+
)
|
|
638
|
+
if jobs:
|
|
639
|
+
for j in jobs:
|
|
640
|
+
service = j.get("service") if isinstance(j, dict) else getattr(j, "service", None)
|
|
641
|
+
if service:
|
|
642
|
+
simulator_name = service
|
|
643
|
+
break
|
|
644
|
+
if not simulator_name:
|
|
645
|
+
raise ValueError(f"No simulator name found in session details for job ID {job_id}")
|
|
646
|
+
|
|
625
647
|
# Get public URL with router target formatting (logic inlined)
|
|
626
648
|
public_url = None
|
|
627
649
|
try:
|
|
@@ -635,7 +657,7 @@ class SandboxClient:
|
|
|
635
657
|
url = result.url if hasattr(result, "url") else str(result)
|
|
636
658
|
if not url:
|
|
637
659
|
raise ValueError(f"No public URL found in result dict for job ID {job_id}")
|
|
638
|
-
if "_plato_router_target=" not in url:
|
|
660
|
+
if "_plato_router_target=" not in url and simulator_name:
|
|
639
661
|
target_param = f"_plato_router_target={simulator_name}.web.plato.so"
|
|
640
662
|
if "?" in url:
|
|
641
663
|
url = f"{url}&{target_param}"
|
|
@@ -667,24 +689,6 @@ class SandboxClient:
|
|
|
667
689
|
heartbeat_pid = None
|
|
668
690
|
heartbeat_pid = _start_heartbeat_process(session_id, self.api_key)
|
|
669
691
|
|
|
670
|
-
# Parse out the simulator_name from service field in jobs in session details.
|
|
671
|
-
session_details = get_session_details.sync(
|
|
672
|
-
client=self._http,
|
|
673
|
-
session_id=session_id,
|
|
674
|
-
x_api_key=self.api_key,
|
|
675
|
-
)
|
|
676
|
-
if hasattr(session_details, "jobs"):
|
|
677
|
-
# session_details["jobs"] if dict, or session_details.jobs if object
|
|
678
|
-
jobs = (
|
|
679
|
-
session_details["jobs"] if isinstance(session_details, dict) else getattr(session_details, "jobs", None)
|
|
680
|
-
)
|
|
681
|
-
if jobs:
|
|
682
|
-
for j in jobs:
|
|
683
|
-
service = j.get("service") if isinstance(j, dict) else getattr(j, "service", None)
|
|
684
|
-
if service:
|
|
685
|
-
simulator_name = service
|
|
686
|
-
break
|
|
687
|
-
|
|
688
692
|
# Convert absolute paths to relative for state storage
|
|
689
693
|
def _to_relative(abs_path: str | None) -> str | None:
|
|
690
694
|
if not abs_path or not self.working_dir:
|
|
@@ -759,26 +763,39 @@ class SandboxClient:
|
|
|
759
763
|
checkpoint_request = CreateCheckpointRequest()
|
|
760
764
|
|
|
761
765
|
if mode == "config":
|
|
762
|
-
# read plato-config.yml
|
|
766
|
+
# read plato-config.yml - need parsed for extracting values
|
|
763
767
|
plato_config_path = self.working_dir / "plato-config.yml"
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
checkpoint_request.plato_config = plato_config
|
|
768
|
+
plato_config_raw = plato_config_path.read_text()
|
|
769
|
+
plato_config = yaml.safe_load(plato_config_raw)
|
|
767
770
|
|
|
768
|
-
#
|
|
771
|
+
# New format - extract just the dataset portion
|
|
769
772
|
plato_config_model = PlatoConfig.model_validate(plato_config)
|
|
770
|
-
|
|
773
|
+
dataset_config = plato_config_model.datasets[dataset]
|
|
774
|
+
# Convert dataset config back to dict for YAML serialization
|
|
775
|
+
dataset_dict = dataset_config.model_dump(exclude_none=True, by_alias=True)
|
|
776
|
+
checkpoint_request.plato_config = yaml.dump(dataset_dict, default_flow_style=False)
|
|
777
|
+
|
|
778
|
+
dataset_compute = dataset_config.compute
|
|
771
779
|
if not dataset_compute:
|
|
772
780
|
raise ValueError(f"Compute configuration is required for dataset '{dataset}'")
|
|
773
781
|
checkpoint_request.internal_app_port = dataset_compute.app_port
|
|
774
782
|
checkpoint_request.messaging_port = dataset_compute.plato_messaging_port
|
|
775
783
|
# we dont set target
|
|
776
784
|
|
|
777
|
-
#
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
785
|
+
# Read flows from the path specified in plato-config metadata
|
|
786
|
+
# API expects YAML string, not parsed dict
|
|
787
|
+
# Only set flows if file exists AND has content, otherwise leave as None to inherit from parent
|
|
788
|
+
dataset_metadata = dataset_config.metadata
|
|
789
|
+
flows_file_path = dataset_metadata.flows_path if dataset_metadata else None
|
|
790
|
+
if flows_file_path:
|
|
791
|
+
# flows_path is relative to working_dir
|
|
792
|
+
flows_path = self.working_dir / flows_file_path
|
|
793
|
+
if flows_path.exists():
|
|
794
|
+
flows_content = flows_path.read_text().strip()
|
|
795
|
+
if flows_content:
|
|
796
|
+
checkpoint_request.flows = flows_content
|
|
797
|
+
else:
|
|
798
|
+
self.console.print(f"[yellow]Warning: flows file not found at {flows_path}[/yellow]")
|
|
782
799
|
|
|
783
800
|
return sessions_snapshot.sync(
|
|
784
801
|
client=self._http,
|
plato_sdk_v2-2.8.1/VERSION
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
2.8.1
|