plato-sdk-v2 2.3.2__tar.gz → 2.3.4__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.3.2 → plato_sdk_v2-2.3.4}/PKG-INFO +2 -1
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/README.md +1 -0
- plato_sdk_v2-2.3.4/VERSION +1 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/docs/SIMULATOR_LIFECYCLE.md +1 -2
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/docs/skills/SIM-CREATION-ARCHITECTURE.md +1 -9
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/docs/skills/sim-debugger/SKILL.md +1 -15
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/docs/skills/sim-sandbox-services/SKILL.md +0 -1
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/agents/runner.py +2 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/cli/main.py +0 -2
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/cli/sandbox.py +192 -50
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/cli/ssh.py +16 -4
- plato_sdk_v2-2.3.4/plato/v1/cli/verify.py +685 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/worlds/runner.py +36 -2
- plato_sdk_v2-2.3.2/VERSION +0 -1
- plato_sdk_v2-2.3.2/plato/v1/cli/sim.py +0 -11
- plato_sdk_v2-2.3.2/plato/v1/cli/verify.py +0 -1269
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/.claude/agents/sim-creator.md +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/.gitignore +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/.sandbox.yaml +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/BUILDING_SIMS.md +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/ci/CLAUDE.md +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/ci/deploy.sh +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/ci/lint.sh +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/ci/setup.sh +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/ci/version-bump.sh +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/docs/AGENT_SPEC.md +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/docs/CLI.md +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/docs/GENERATING_SIM_SDKS.md +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/docs/SIM_CREATOR.md +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/docs/cli/agent.md +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/docs/cli/flows.md +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/docs/cli/pm.md +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/docs/cli/sandbox.md +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/docs/cli/sims.md +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/docs/cli/world.md +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/docs/sim-creation-pipeline.md +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/docs/skill-restructure-plan.md +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/docs/skills/sim-config/SKILL.md +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/docs/skills/sim-creator/SKILL.md +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/docs/skills/sim-flow-audit/SKILL.md +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/docs/skills/sim-flow-clear/SKILL.md +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/docs/skills/sim-flow-mutations/SKILL.md +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/docs/skills/sim-flow-run/SKILL.md +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/docs/skills/sim-research/SKILL.md +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/docs/skills/sim-review/SKILL.md +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/docs/skills/sim-sandbox-login/SKILL.md +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/docs/skills/sim-sandbox-start/SKILL.md +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/docs/skills/sim-sandbox-worker/SKILL.md +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/docs/skills/sim-snapshot/SKILL.md +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/docs/skills/sim-submit/SKILL.md +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/docs/skills/sim-validate/SKILL.md +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/docs/testcommit +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/docs/unit.sh +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/__init__.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/__init__.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/__init__.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/__init__.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/agent_artifacts/__init__.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/agent_artifacts/archive_agent_artifact.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/agent_artifacts/create_agent_artifact.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/agent_artifacts/get_agent_artifact_by_public_id.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/agent_artifacts/get_agent_artifacts.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/cluster/__init__.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/cluster/cleanup_stale_vms.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/cluster/get_dispatchers.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/cluster/get_nodes_status.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/cluster/get_snapshot_lineage.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/cluster/get_snapshots_status.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/cluster/pause_resume_dispatchers.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/cluster/prefetch_snapshot.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/env/__init__.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/env/backup.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/env/cleanup.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/env/close.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/env/close_async.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/env/create.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/env/create_batch.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/env/create_simulator.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/env/evaluate_session.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/env/generate_mutations.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/env/generate_mutations_single.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/env/get_active_session.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/env/get_app_sim_worker_info.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/env/get_cdp_url.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/env/get_flows.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/env/get_interface_worker_info.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/env/get_job_info.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/env/get_job_status.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/env/get_job_worker_info.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/env/get_proxy_url.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/env/get_public_url.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/env/get_simulator_by_name.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/env/get_simulators.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/env/get_state.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/env/get_worker_ready.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/env/log_state_mutation.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/env/rescore_simulator_sessions.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/env/reset.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/env/score.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/env/send_heartbeat.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/env/update_simulator.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/evals/__init__.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/evals/create_test_case_review.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/evals/evaluate_python.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/evals/get_all_test_case_reviews.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/evals/get_scores_by_user.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/evals/get_scoring.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/evals/get_test_case_review.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/evals/human_in_the_loop_scoring.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/evals/start_eval_from_git.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/gitea/__init__.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/gitea/create_gitea_repository.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/gitea/create_simulator_repository.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/gitea/delete_gitea_repository.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/gitea/get_accessible_simulators.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/gitea/get_gitea_credentials.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/gitea/get_gitea_repository.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/gitea/get_my_gitea_info.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/gitea/get_my_repositories.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/gitea/get_repository_branches.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/gitea/get_repository_contents.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/gitea/get_simulator_file_content.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/gitea/get_simulator_repository.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/gitea/get_simulator_repository_branches.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/gitea/get_simulator_repository_contents.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/jobs/__init__.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/jobs/get_job_by_id.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/jobs/get_jobs_by_group_id.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/jobs/get_keepalive_jobs.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/jobs/list_jobs.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/jobs/update_job_status.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/organization/__init__.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/organization/create_annotator_assignment.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/organization/create_org_api_key.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/organization/create_org_policy.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/organization/delete_org_api_key.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/organization/delete_org_policy.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/organization/get_annotator_assignments.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/organization/get_org_api_key_policies.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/organization/get_org_api_keys.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/organization/get_org_policies.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/organization/get_organization_concurrency_status.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/organization/get_organization_members.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/organization/update_annotator_assignment_stage.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/organization/update_organization_concurrency_limit.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/queue/__init__.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/queue/get_queue_status.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/queue/get_vm_detail.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/queue/get_vms.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/queue/get_workers.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/sandbox/__init__.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/sandbox/checkpoint_vm.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/sandbox/close_vm.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/sandbox/create_vm.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/sandbox/execute_ssh_command.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/sandbox/get_operation_events.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/sandbox/healthy_services.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/sandbox/healthy_worker.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/sandbox/save_vm_snapshot.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/sandbox/setup_root_access.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/sandbox/setup_sandbox.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/sandbox/start_worker.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/session/__init__.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/session/analyze_labels.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/session/archive_session.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/session/archive_session_logs_endpoint.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/session/create_from_labels.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/session/create_session_from_browser.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/session/create_session_from_env_recording.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/session/create_session_from_har.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/session/get_env_recording.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/session/get_grouped_replay_sessions.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/session/get_logs_status.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/session/get_network_requests.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/session/get_next_session_for_annotator.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/session/get_public_benchmark_sessions.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/session/get_replay_score_data.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/session/get_rrweb_actions.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/session/get_rrweb_events.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/session/get_screen_recording.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/session/get_session.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/session/get_session_replays.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/session/get_sessions.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/session/get_sessions_for_archival.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/session/get_ui_events.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/session/restore_session_logs.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/session/score_session_with_config.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/session/search_sessions_by_ids.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/session/set_session_output.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/session/update_session_public.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/session/update_session_testcase.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/simulator/__init__.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/simulator/add_simulator_review.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/simulator/batch_create_test_cases.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/simulator/batch_get_artifact_metadata.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/simulator/get_all_simulators_info.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/simulator/get_db_config.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/simulator/get_env_flows.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/simulator/get_plato_config.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/simulator/get_sessions_batch_by_job_groups.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/simulator/get_sessions_by_job_group.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/simulator/get_simulator_by_name.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/simulator/get_simulator_id.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/simulator/get_simulator_info.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/simulator/get_simulator_version_details.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/simulator/get_simulator_versions.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/simulator/get_start_path.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/simulator/get_version_by_tag.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/simulator/list_simulators.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/simulator/list_simulators_by_org.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/simulator/list_simulators_status.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/simulator/register.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/simulator/update_simulator.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/simulator/update_simulator_status.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/simulator/update_tag.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/testcases/__init__.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/testcases/archive_organization_test_case_assignments.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/testcases/archive_organization_testcase.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/testcases/archive_testcase.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/testcases/assign_testcase_to_organizations.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/testcases/auto_verify_testcase.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/testcases/bulk_archive_testcases.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/testcases/convert_text_to_structured_data.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/testcases/create_testcase.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/testcases/create_testcase_set.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/testcases/delete_testcase_set.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/testcases/filter_human_recorder_testcases.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/testcases/generate_outcome_schema.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/testcases/generate_prediction.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/testcases/generate_prediction_from_steps.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/testcases/generate_scoring_config_from_sessions.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/testcases/generate_state_mutations_config_route.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/testcases/get_human_recorder_tab_counts.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/testcases/get_human_recorder_testcases.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/testcases/get_merged_mutations.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/testcases/get_mutation_groups_for_testcase.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/testcases/get_next_testcase_for_scoring.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/testcases/get_organization_test_case_assignments.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/testcases/get_testcase.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/testcases/get_testcase_metadata_for_scoring.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/testcases/get_testcase_sets.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/testcases/get_testcases.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/testcases/get_testcases_in_set.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/testcases/mark_organization_test_case_completed.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/testcases/update_testcase.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v1/testcases/version_bump_testcase.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/__init__.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/agents/__init__.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/agents/get_agent_ecr_token.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/agents/get_agent_schema.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/agents/get_agent_versions.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/agents/import_agent.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/agents/list_docker_agents.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/agents/lookup_agent_version.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/agents/register_docker_agent.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/artifacts/__init__.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/artifacts/get_artifact.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/chronos/__init__.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/chronos/launch_job.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/chronos_packages/__init__.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/chronos_packages/get_package_versions.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/chronos_packages/list_chronos_packages.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/chronos_packages/lookup_package_version.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/chronos_packages/register_chronos_package.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/chronos_packages/upload_chronos_package.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/cluster/__init__.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/cluster/get_node_config.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/jobs/__init__.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/jobs/checkpoint.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/jobs/close.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/jobs/connect_routing_info.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/jobs/connect_url.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/jobs/disk_snapshot.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/jobs/execute.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/jobs/get_flows.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/jobs/get_plato_config.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/jobs/log_for_job.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/jobs/make.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/jobs/public_url.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/jobs/reset.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/jobs/set_date.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/jobs/setup_sandbox.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/jobs/snapshot.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/jobs/snapshot_store.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/jobs/state.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/jobs/wait_for_ready.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/pypi/__init__.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/pypi/download_package.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/pypi/get_package_schema.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/pypi/package_index.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/pypi/simple_index.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/pypi/upload_package.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/releases/__init__.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/releases/create.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/releases/deploy.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/releases/get.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/releases/handle_get_existing_public_ids.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/releases/handle_import.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/releases/list_releases.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/releases/prep_release_assigned_testcases.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/releases/update.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/sessions/__init__.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/sessions/checkpoint.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/sessions/close.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/sessions/disk_snapshot.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/sessions/evaluate.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/sessions/execute.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/sessions/get_connect_url.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/sessions/get_presigned_url.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/sessions/get_public_url.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/sessions/get_s3_content.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/sessions/get_session_details.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/sessions/get_session_documents.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/sessions/get_session_flows.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/sessions/get_session_logs.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/sessions/get_session_plato_config.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/sessions/heartbeat.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/sessions/list_jobs.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/sessions/list_sessions.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/sessions/log_job_mutation.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/sessions/make.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/sessions/reset.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/sessions/set_date.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/sessions/setup_sandbox.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/sessions/snapshot.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/sessions/snapshot_store.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/sessions/state.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/sessions/upload_session_documents.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/sessions/wait_for_ready.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/user/__init__.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/v2/user/get_current_user.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/version/__init__.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/api/version/check.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/client.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/errors.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/models/__init__.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_generated/py.typed +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_sims_generator/__init__.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_sims_generator/cli.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_sims_generator/instruction.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_sims_generator/parser.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_sims_generator/python.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_sims_generator/templates/instruction/helpers.py.jinja +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_sims_generator/templates/instruction/init.py.jinja +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_sims_generator/templates/python/api_init.py.jinja +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_sims_generator/templates/python/client.py.jinja +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_sims_generator/templates/python/endpoint.py.jinja +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_sims_generator/templates/python/errors.py.jinja +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_sims_generator/templates/python/package_init.py.jinja +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_sims_generator/templates/python/tag_init.py.jinja +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/_sims_generator/templates/python/version_init.py.jinja +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/agents/__init__.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/agents/base.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/agents/build.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/agents/config.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/agents/logging.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/agents/trajectory.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/__init__.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/__init__.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/agents/__init__.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/agents/create_agent.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/agents/delete_agent.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/agents/get_agent.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/agents/get_agent_schema.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/agents/get_agent_versions.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/agents/list_agents.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/agents/lookup_agent.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/auth/__init__.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/auth/debug_auth_api_auth_debug_get.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/auth/get_auth_status_api_auth_status_get.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/auth/get_current_user_route_api_auth_me_get.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/callback/__init__.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/callback/push_agent_logs.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/callback/update_agent_status.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/callback/upload_artifacts.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/callback/upload_logs_zip.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/callback/upload_trajectory.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/default/__init__.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/default/health.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/jobs/__init__.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/jobs/launch_job.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/registry/__init__.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/registry/get_agent_schema_api_registry_agents__agent_name__schema_get.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/registry/get_agent_versions_api_registry_agents__agent_name__versions_get.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/registry/get_world_schema_api_registry_worlds__package_name__schema_get.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/registry/get_world_versions_api_registry_worlds__package_name__versions_get.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/registry/list_registry_agents_api_registry_agents_get.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/registry/list_registry_worlds_api_registry_worlds_get.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/runtimes/__init__.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/runtimes/create_runtime.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/runtimes/delete_runtime.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/runtimes/get_runtime.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/runtimes/list_runtimes.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/runtimes/test_runtime.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/secrets/__init__.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/secrets/create_secret.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/secrets/delete_secret.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/secrets/get_secret.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/secrets/list_secrets.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/secrets/update_secret.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/sessions/__init__.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/sessions/get_session.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/sessions/get_session_logs.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/sessions/get_session_logs_download.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/sessions/list_sessions.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/status/__init__.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/status/get_status_api_status_get.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/status/get_version_info_api_version_get.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/templates/__init__.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/templates/create_template.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/templates/delete_template.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/templates/get_template.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/templates/list_templates.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/templates/update_template.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/trajectories/__init__.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/trajectories/get_trajectory.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/trajectories/list_trajectories.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/worlds/__init__.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/worlds/create_world.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/worlds/delete_world.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/worlds/get_world.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/api/worlds/list_worlds.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/client.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/errors.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/models/__init__.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/chronos/py.typed +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/py.typed +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/sims/README.md +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/sims/__init__.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/sims/agent_helpers.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/sims/cli.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/sims/generate_clients.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/sims/registry.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/__init__.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/audit_ui.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/cli/__init__.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/cli/agent.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/cli/pm.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/cli/utils.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/cli/world.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/cli.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/config.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/examples/doordash_tasks.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/examples/loadtest.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/examples/test_env.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/examples/test_env_custom_browser.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/examples/test_env_sync.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/examples/test_reuse_env.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/examples/test_run.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/exceptions.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/extensions/envgen-recorder/README.md +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/extensions/envgen-recorder/api-client.js +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/extensions/envgen-recorder/background.js +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/extensions/envgen-recorder/build-sdk.js +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/extensions/envgen-recorder/content.js +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/extensions/envgen-recorder/manifest.json +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/extensions/envgen-recorder/offscreen.html +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/extensions/envgen-recorder/offscreen.js +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/extensions/envgen-recorder/options.html +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/extensions/envgen-recorder/options.js +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/extensions/envgen-recorder/package-lock.json +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/extensions/envgen-recorder/package.json +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/extensions/envgen-recorder/plato-sdk-bundle.js +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/extensions/envgen-recorder/plato-sdk-bundle.js.map +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/extensions/envgen-recorder/popup.html +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/extensions/envgen-recorder/popup.js +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/extensions/envgen-recorder/review-panel.html +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/extensions/envgen-recorder/review-panel.js +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/extensions/envgen-recorder/review-success.html +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/extensions/envgen-recorder/review-success.js +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/extensions/envgen-recorder/session-active.html +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/extensions/envgen-recorder/session-active.js +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/extensions/envgen-recorder/session-ended.html +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/extensions/envgen-recorder/session-ended.js +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/extensions/envgen-recorder/session-setup.html +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/extensions/envgen-recorder/session-setup.js +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/extensions/envgen-recorder/sessions.html +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/extensions/envgen-recorder/sessions.js +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/extensions/envgen-recorder/styles.css +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/flow_executor.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/models/__init__.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/models/build_models.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/models/env.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/models/flow.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/models/sandbox.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/models/task.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/sandbox_sdk.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/sdk.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/sync_env.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/sync_flow_executor.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/sync_sdk.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v1/utils/proxytunnel.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v2/__init__.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v2/async_/__init__.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v2/async_/artifact.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v2/async_/client.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v2/async_/environment.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v2/async_/flow_executor.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v2/async_/session.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v2/models.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v2/sync/__init__.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v2/sync/artifact.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v2/sync/client.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v2/sync/environment.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v2/sync/flow_executor.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v2/sync/session.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v2/types.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v2/utils/__init__.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v2/utils/db_cleanup.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v2/utils/models.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/v2/utils/proxy_tunnel.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/worlds/README.md +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/worlds/__init__.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/worlds/base.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/worlds/build_hook.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/plato/worlds/config.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/pyproject.toml +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/scripts/get_all_artifact_targets.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/tests/__init__.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/tests/integration/__init__.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/tests/integration/conftest.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/tests/integration/test_browser_agent.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/tests/integration/test_chronos_callback.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/tests/integration/test_cleanup_snapshot.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/tests/integration/test_code_world.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/tests/integration/test_harbor_agent_runner.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/tests/sims/__init__.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/tests/sims/conftest.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/tests/sims/test_agent_helpers.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/tests/test_heartbeat_keepalive.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/tests/test_session_serialization.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/tests/test_set_date.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/tests/test_v2_imports.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/tests/test_v2_multisim_integration.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/tests/test_v2_session.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/tests/test_version.py +0 -0
- {plato_sdk_v2-2.3.2 → plato_sdk_v2-2.3.4}/uv.lock +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: plato-sdk-v2
|
|
3
|
-
Version: 2.3.
|
|
3
|
+
Version: 2.3.4
|
|
4
4
|
Summary: Python SDK for the Plato API
|
|
5
5
|
Author-email: Plato <support@plato.so>
|
|
6
6
|
License-Expression: MIT
|
|
@@ -45,6 +45,7 @@ Description-Content-Type: text/markdown
|
|
|
45
45
|
# Plato Python SDK
|
|
46
46
|
|
|
47
47
|
|
|
48
|
+
|
|
48
49
|
Python SDK for the Plato platform. Uses [Harbor](https://harborframework.com) for agent execution.
|
|
49
50
|
|
|
50
51
|
## Installation
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
2.3.4
|
|
@@ -425,9 +425,8 @@ plato sandbox start --from-config # or --simulator
|
|
|
425
425
|
|
|
426
426
|
### Docker Compose Not Starting
|
|
427
427
|
|
|
428
|
-
Use the user docker socket:
|
|
429
428
|
```bash
|
|
430
|
-
|
|
429
|
+
docker compose up -d
|
|
431
430
|
```
|
|
432
431
|
|
|
433
432
|
### Login Flow Failing
|
|
@@ -343,16 +343,9 @@ ssh -F ~/.plato/ssh_42.conf sandbox-42
|
|
|
343
343
|
### CRITICAL: Two Docker Sockets on VM
|
|
344
344
|
|
|
345
345
|
```bash
|
|
346
|
-
#
|
|
347
|
-
docker ps # Shows only plato-worker
|
|
348
|
-
|
|
349
|
-
# App socket - has actual app containers (db, app, proxy)
|
|
350
|
-
export DOCKER_HOST=unix:///var/run/docker-user.sock
|
|
351
|
-
docker ps # Shows kimai-db, kimai-app, kimai-nginx, etc.
|
|
346
|
+
docker ps # Shows all containers including db, app, proxy
|
|
352
347
|
```
|
|
353
348
|
|
|
354
|
-
**Always use the app socket for debugging!**
|
|
355
|
-
|
|
356
349
|
### Code Path on VM
|
|
357
350
|
|
|
358
351
|
```
|
|
@@ -361,7 +354,6 @@ docker ps # Shows kimai-db, kimai-app, kimai-nginx, etc.
|
|
|
361
354
|
|
|
362
355
|
```bash
|
|
363
356
|
# On VM: iterate fast
|
|
364
|
-
export DOCKER_HOST=unix:///var/run/docker-user.sock
|
|
365
357
|
cd /home/plato/worktree/{sim_name}/base
|
|
366
358
|
docker compose down && docker compose up -d
|
|
367
359
|
docker compose logs -f
|
|
@@ -40,17 +40,6 @@ sim_path: "/path/to/sim"
|
|
|
40
40
|
|
|
41
41
|
### CRITICAL: Two Docker Sockets
|
|
42
42
|
|
|
43
|
-
The VM has **two Docker sockets**:
|
|
44
|
-
|
|
45
|
-
| Socket | Contains | When to Use |
|
|
46
|
-
|--------|----------|-------------|
|
|
47
|
-
| Default | `plato-worker` only | Never for debugging app |
|
|
48
|
-
| `/var/run/docker-user.sock` | App containers (db, app, proxy) | **Always use this** |
|
|
49
|
-
|
|
50
|
-
**Always export before running docker commands:**
|
|
51
|
-
```bash
|
|
52
|
-
export DOCKER_HOST=unix:///var/run/docker-user.sock
|
|
53
|
-
```
|
|
54
43
|
|
|
55
44
|
### CRITICAL: Code Path
|
|
56
45
|
|
|
@@ -69,10 +58,7 @@ Instead, iterate directly on the VM:
|
|
|
69
58
|
# 1. SSH into VM
|
|
70
59
|
ssh -F {ssh_config} sandbox-{id}
|
|
71
60
|
|
|
72
|
-
# 2.
|
|
73
|
-
export DOCKER_HOST=unix:///var/run/docker-user.sock
|
|
74
|
-
|
|
75
|
-
# 3. Go to code directory
|
|
61
|
+
# 2. Go to code directory
|
|
76
62
|
cd /home/plato/worktree/{sim_name}/base
|
|
77
63
|
|
|
78
64
|
# 4. Edit files directly
|
|
@@ -11,7 +11,6 @@ from dotenv import load_dotenv
|
|
|
11
11
|
from plato.v1.cli.agent import agent_app
|
|
12
12
|
from plato.v1.cli.pm import pm_app
|
|
13
13
|
from plato.v1.cli.sandbox import sandbox_app
|
|
14
|
-
from plato.v1.cli.sim import sim_app
|
|
15
14
|
from plato.v1.cli.utils import console
|
|
16
15
|
from plato.v1.cli.world import world_app
|
|
17
16
|
|
|
@@ -70,7 +69,6 @@ app = typer.Typer(help="[bold blue]Plato CLI[/bold blue] - Manage Plato environm
|
|
|
70
69
|
# Register sub-apps
|
|
71
70
|
app.add_typer(sandbox_app, name="sandbox")
|
|
72
71
|
app.add_typer(pm_app, name="pm")
|
|
73
|
-
app.add_typer(sim_app, name="sim")
|
|
74
72
|
app.add_typer(agent_app, name="agent")
|
|
75
73
|
app.add_typer(world_app, name="world")
|
|
76
74
|
|
|
@@ -516,7 +516,6 @@ def sandbox_start(
|
|
|
516
516
|
console.print(f" [cyan]Public URL:[/cyan] {display_url}")
|
|
517
517
|
if ssh_host and ssh_config_path:
|
|
518
518
|
console.print(f" [cyan]SSH:[/cyan] ssh -F {ssh_config_path} {ssh_host}")
|
|
519
|
-
console.print(" [cyan]Docker:[/cyan] export DOCKER_HOST=unix:///var/run/docker-user.sock")
|
|
520
519
|
console.print(f"\n[dim]State saved to {SANDBOX_FILE}[/dim]")
|
|
521
520
|
|
|
522
521
|
except Exception as e:
|
|
@@ -1737,6 +1736,148 @@ def sandbox_state_cmd(
|
|
|
1737
1736
|
raise typer.Exit(1)
|
|
1738
1737
|
|
|
1739
1738
|
|
|
1739
|
+
@sandbox_app.command(name="clear-audit")
|
|
1740
|
+
def sandbox_clear_audit(
|
|
1741
|
+
config_path: Path | None = typer.Option(None, "--config-path", help="Path to plato-config.yml"),
|
|
1742
|
+
dataset: str = typer.Option("base", "--dataset", "-d", help="Dataset name"),
|
|
1743
|
+
json_output: bool = typer.Option(False, "--json", "-j", help="Output as JSON"),
|
|
1744
|
+
):
|
|
1745
|
+
"""
|
|
1746
|
+
Clear the audit_log table(s) in the sandbox database.
|
|
1747
|
+
|
|
1748
|
+
Truncates all audit_log tables to reset mutation tracking. Use this after
|
|
1749
|
+
initial setup/login to clear any mutations before running a clean login flow.
|
|
1750
|
+
|
|
1751
|
+
REQUIRES:
|
|
1752
|
+
|
|
1753
|
+
.sandbox.yaml in current directory (created by 'plato sandbox start')
|
|
1754
|
+
plato-config.yml with database listener config
|
|
1755
|
+
|
|
1756
|
+
USAGE:
|
|
1757
|
+
|
|
1758
|
+
plato sandbox clear-audit # Uses plato-config.yml in cwd
|
|
1759
|
+
plato sandbox clear-audit -d base # Specify dataset
|
|
1760
|
+
plato sandbox clear-audit --json # JSON output
|
|
1761
|
+
|
|
1762
|
+
WORKFLOW POSITION:
|
|
1763
|
+
|
|
1764
|
+
1. plato sandbox start -c
|
|
1765
|
+
2. plato sandbox start-services
|
|
1766
|
+
3. plato sandbox start-worker --wait
|
|
1767
|
+
4. (agent does initial login/setup, generating mutations)
|
|
1768
|
+
5. plato sandbox clear-audit ← you are here
|
|
1769
|
+
6. plato sandbox flow ← clean login flow
|
|
1770
|
+
7. plato sandbox state --verify-no-mutations ← should pass now
|
|
1771
|
+
8. plato sandbox snapshot
|
|
1772
|
+
"""
|
|
1773
|
+
state = require_sandbox_state()
|
|
1774
|
+
|
|
1775
|
+
# Get SSH info
|
|
1776
|
+
ssh_host = state.get("ssh_host")
|
|
1777
|
+
ssh_config_path = state.get("ssh_config_path")
|
|
1778
|
+
|
|
1779
|
+
if not ssh_host or not ssh_config_path:
|
|
1780
|
+
console.print("[red]❌ SSH not configured. Missing ssh_host or ssh_config_path in .sandbox.yaml[/red]")
|
|
1781
|
+
raise typer.Exit(1)
|
|
1782
|
+
|
|
1783
|
+
# Find plato-config.yml
|
|
1784
|
+
if not config_path:
|
|
1785
|
+
config_path = Path.cwd() / "plato-config.yml"
|
|
1786
|
+
if not config_path.exists():
|
|
1787
|
+
config_path = Path.cwd() / "plato-config.yaml"
|
|
1788
|
+
if not config_path.exists():
|
|
1789
|
+
console.print("[red]❌ plato-config.yml not found[/red]")
|
|
1790
|
+
raise typer.Exit(1)
|
|
1791
|
+
|
|
1792
|
+
with open(config_path) as f:
|
|
1793
|
+
plato_config = yaml.safe_load(f)
|
|
1794
|
+
|
|
1795
|
+
# Get dataset config
|
|
1796
|
+
datasets = plato_config.get("datasets", {})
|
|
1797
|
+
if dataset not in datasets:
|
|
1798
|
+
console.print(f"[red]❌ Dataset '{dataset}' not found[/red]")
|
|
1799
|
+
raise typer.Exit(1)
|
|
1800
|
+
|
|
1801
|
+
dataset_config = datasets[dataset]
|
|
1802
|
+
listeners = dataset_config.get("listeners", {})
|
|
1803
|
+
|
|
1804
|
+
# Find DB listeners
|
|
1805
|
+
db_listeners = []
|
|
1806
|
+
for name, listener in listeners.items():
|
|
1807
|
+
if isinstance(listener, dict) and listener.get("type") == "db":
|
|
1808
|
+
db_listeners.append((name, listener))
|
|
1809
|
+
|
|
1810
|
+
if not db_listeners:
|
|
1811
|
+
console.print("[red]❌ No database listeners found in plato-config.yml[/red]")
|
|
1812
|
+
console.print("[yellow]Expected: datasets.<dataset>.listeners.<name>.type = 'db'[/yellow]")
|
|
1813
|
+
raise typer.Exit(1)
|
|
1814
|
+
|
|
1815
|
+
results = []
|
|
1816
|
+
|
|
1817
|
+
for name, db_config in db_listeners:
|
|
1818
|
+
db_type = db_config.get("db_type", "postgresql").lower()
|
|
1819
|
+
db_host = db_config.get("db_host", "127.0.0.1")
|
|
1820
|
+
db_port = db_config.get("db_port", 5432 if db_type == "postgresql" else 3306)
|
|
1821
|
+
db_user = db_config.get("db_user", "postgres" if db_type == "postgresql" else "root")
|
|
1822
|
+
db_password = db_config.get("db_password", "")
|
|
1823
|
+
db_database = db_config.get("db_database", "postgres")
|
|
1824
|
+
|
|
1825
|
+
if not json_output:
|
|
1826
|
+
console.print(f"[cyan]Clearing audit_log for listener '{name}' ({db_type})...[/cyan]")
|
|
1827
|
+
|
|
1828
|
+
# Build SQL command based on db_type
|
|
1829
|
+
if db_type == "postgresql":
|
|
1830
|
+
sql_cmd = f"PGPASSWORD='{db_password}' psql -h {db_host} -p {db_port} -U {db_user} -d {db_database} -c 'TRUNCATE TABLE audit_log RESTART IDENTITY CASCADE'"
|
|
1831
|
+
elif db_type in ("mysql", "mariadb"):
|
|
1832
|
+
sql_cmd = f"mysql -h {db_host} -P {db_port} -u {db_user} -p'{db_password}' {db_database} -e 'SET FOREIGN_KEY_CHECKS=0; DELETE FROM audit_log; SET FOREIGN_KEY_CHECKS=1;'"
|
|
1833
|
+
else:
|
|
1834
|
+
if not json_output:
|
|
1835
|
+
console.print(f"[yellow]⚠ Unsupported db_type '{db_type}' for listener '{name}'[/yellow]")
|
|
1836
|
+
results.append({"listener": name, "success": False, "error": f"Unsupported db_type: {db_type}"})
|
|
1837
|
+
continue
|
|
1838
|
+
|
|
1839
|
+
# Run via SSH
|
|
1840
|
+
ret, stdout, stderr = _run_ssh_command(ssh_config_path, ssh_host, sql_cmd)
|
|
1841
|
+
|
|
1842
|
+
if ret == 0:
|
|
1843
|
+
if not json_output:
|
|
1844
|
+
console.print(f"[green]✅ Cleared audit_log for '{name}'[/green]")
|
|
1845
|
+
results.append({"listener": name, "success": True})
|
|
1846
|
+
else:
|
|
1847
|
+
if not json_output:
|
|
1848
|
+
console.print(f"[red]❌ Failed to clear audit_log for '{name}': {stderr}[/red]")
|
|
1849
|
+
results.append({"listener": name, "success": False, "error": stderr})
|
|
1850
|
+
|
|
1851
|
+
# Call state API to refresh in-memory mutation cache
|
|
1852
|
+
session_id = state.get("session_id")
|
|
1853
|
+
api_key = require_api_key()
|
|
1854
|
+
if session_id:
|
|
1855
|
+
if not json_output:
|
|
1856
|
+
console.print("[dim]Refreshing state cache...[/dim]")
|
|
1857
|
+
try:
|
|
1858
|
+
with get_http_client() as client:
|
|
1859
|
+
sessions_state.sync(
|
|
1860
|
+
client=client,
|
|
1861
|
+
session_id=session_id,
|
|
1862
|
+
x_api_key=api_key,
|
|
1863
|
+
)
|
|
1864
|
+
except Exception as e:
|
|
1865
|
+
if not json_output:
|
|
1866
|
+
console.print(f"[yellow]⚠ Failed to refresh state cache: {e}[/yellow]")
|
|
1867
|
+
|
|
1868
|
+
if json_output:
|
|
1869
|
+
console.print(json.dumps({"results": results}))
|
|
1870
|
+
else:
|
|
1871
|
+
# Summary
|
|
1872
|
+
success_count = sum(1 for r in results if r["success"])
|
|
1873
|
+
total = len(results)
|
|
1874
|
+
if success_count == total:
|
|
1875
|
+
console.print(f"\n[green]✅ All {total} audit logs cleared successfully[/green]")
|
|
1876
|
+
else:
|
|
1877
|
+
console.print(f"\n[yellow]⚠ {success_count}/{total} audit logs cleared[/yellow]")
|
|
1878
|
+
raise typer.Exit(1)
|
|
1879
|
+
|
|
1880
|
+
|
|
1740
1881
|
@sandbox_app.command(name="audit-ui")
|
|
1741
1882
|
def sandbox_audit_ui():
|
|
1742
1883
|
"""
|
|
@@ -1786,31 +1927,24 @@ def sandbox_audit_ui():
|
|
|
1786
1927
|
|
|
1787
1928
|
|
|
1788
1929
|
def _copy_files_respecting_gitignore(src_dir: Path, dst_dir: Path) -> None:
|
|
1789
|
-
"""Copy files from src to dst
|
|
1790
|
-
|
|
1791
|
-
|
|
1792
|
-
|
|
1793
|
-
|
|
1794
|
-
|
|
1795
|
-
|
|
1796
|
-
|
|
1797
|
-
def
|
|
1798
|
-
"""Check if
|
|
1799
|
-
|
|
1800
|
-
# Skip .git
|
|
1801
|
-
if
|
|
1802
|
-
return
|
|
1803
|
-
#
|
|
1804
|
-
|
|
1805
|
-
result = subprocess.run(
|
|
1806
|
-
["git", "check-ignore", "-q", str(file_path)],
|
|
1807
|
-
cwd=src_dir,
|
|
1808
|
-
capture_output=True,
|
|
1809
|
-
)
|
|
1810
|
-
# git check-ignore returns 0 if path IS ignored, 1 if NOT ignored
|
|
1811
|
-
return result.returncode != 0
|
|
1812
|
-
except Exception:
|
|
1930
|
+
"""Copy files from src to dst, skipping .git/ and .plato-hub.json.
|
|
1931
|
+
|
|
1932
|
+
Note: This function intentionally does NOT respect .gitignore because
|
|
1933
|
+
start-services needs to copy all workspace files to the VM, including
|
|
1934
|
+
config files that might be gitignored locally (like docker-compose.yml
|
|
1935
|
+
in a 'base/' directory).
|
|
1936
|
+
"""
|
|
1937
|
+
|
|
1938
|
+
def should_skip(rel_path: Path) -> bool:
|
|
1939
|
+
"""Check if path should be skipped."""
|
|
1940
|
+
parts = rel_path.parts
|
|
1941
|
+
# Skip anything inside .git/ directory
|
|
1942
|
+
if ".git" in parts:
|
|
1943
|
+
return True
|
|
1944
|
+
# Skip .plato-hub.json
|
|
1945
|
+
if rel_path.name == ".plato-hub.json":
|
|
1813
1946
|
return True
|
|
1947
|
+
return False
|
|
1814
1948
|
|
|
1815
1949
|
# Walk through source directory
|
|
1816
1950
|
for src_path in src_dir.rglob("*"):
|
|
@@ -1820,8 +1954,8 @@ def _copy_files_respecting_gitignore(src_dir: Path, dst_dir: Path) -> None:
|
|
|
1820
1954
|
if str(rel_path) == ".":
|
|
1821
1955
|
continue
|
|
1822
1956
|
|
|
1823
|
-
# Check if should
|
|
1824
|
-
if
|
|
1957
|
+
# Check if should skip
|
|
1958
|
+
if should_skip(rel_path):
|
|
1825
1959
|
continue
|
|
1826
1960
|
|
|
1827
1961
|
dst_path = dst_dir / rel_path
|
|
@@ -2007,6 +2141,34 @@ def sandbox_start_services(
|
|
|
2007
2141
|
|
|
2008
2142
|
try:
|
|
2009
2143
|
with get_http_client() as client:
|
|
2144
|
+
|
|
2145
|
+
def start_services_on_vm(repo_dir: str) -> list[dict[str, str]]:
|
|
2146
|
+
"""Start docker compose services on the VM."""
|
|
2147
|
+
services_started: list[dict[str, str]] = []
|
|
2148
|
+
for svc_name, svc_config in services_config.items():
|
|
2149
|
+
svc_type = svc_config.get("type", "")
|
|
2150
|
+
if svc_type == "docker-compose":
|
|
2151
|
+
compose_file = svc_config.get("file", "docker-compose.yml")
|
|
2152
|
+
compose_cmd = f"cd {repo_dir} && docker compose -f {compose_file} up -d"
|
|
2153
|
+
|
|
2154
|
+
if not json_output:
|
|
2155
|
+
console.print(f"[cyan] Starting docker compose service: {svc_name}...[/cyan]")
|
|
2156
|
+
|
|
2157
|
+
ret, stdout, stderr = _run_ssh_command(ssh_config_path, ssh_host, compose_cmd)
|
|
2158
|
+
if ret != 0:
|
|
2159
|
+
console.print(f"[red]❌ Failed to start service '{svc_name}': {stderr}[/red]")
|
|
2160
|
+
raise typer.Exit(1)
|
|
2161
|
+
|
|
2162
|
+
services_started.append({"name": svc_name, "type": "docker-compose", "file": compose_file})
|
|
2163
|
+
if not json_output:
|
|
2164
|
+
console.print(f"[green] ✓ Started docker compose service: {svc_name}[/green]")
|
|
2165
|
+
else:
|
|
2166
|
+
if not json_output:
|
|
2167
|
+
console.print(
|
|
2168
|
+
f"[yellow] ⚠ Skipped service '{svc_name}' (unknown type: {svc_type})[/yellow]"
|
|
2169
|
+
)
|
|
2170
|
+
return services_started
|
|
2171
|
+
|
|
2010
2172
|
# Step 1: Get Gitea credentials
|
|
2011
2173
|
if not json_output:
|
|
2012
2174
|
console.print("[cyan]Step 1: Getting Gitea credentials...[/cyan]")
|
|
@@ -2064,6 +2226,8 @@ def sandbox_start_services(
|
|
|
2064
2226
|
if not json_output:
|
|
2065
2227
|
console.print("[cyan]Step 4: Pushing code to hub...[/cyan]")
|
|
2066
2228
|
|
|
2229
|
+
repo_dir = f"/home/plato/worktree/{service_name}"
|
|
2230
|
+
|
|
2067
2231
|
with tempfile.TemporaryDirectory(prefix="plato-hub-") as temp_dir:
|
|
2068
2232
|
temp_repo = Path(temp_dir) / "repo"
|
|
2069
2233
|
|
|
@@ -2148,8 +2312,6 @@ def sandbox_start_services(
|
|
|
2148
2312
|
if not json_output:
|
|
2149
2313
|
console.print("[cyan]Step 5: Cloning repo on VM...[/cyan]")
|
|
2150
2314
|
|
|
2151
|
-
repo_dir = f"/home/plato/worktree/{service_name}"
|
|
2152
|
-
|
|
2153
2315
|
# Create worktree directory
|
|
2154
2316
|
_run_ssh_command(ssh_config_path, ssh_host, "mkdir -p /home/plato/worktree")
|
|
2155
2317
|
|
|
@@ -2170,27 +2332,7 @@ def sandbox_start_services(
|
|
|
2170
2332
|
if not json_output:
|
|
2171
2333
|
console.print("[cyan]Step 6: Starting services...[/cyan]")
|
|
2172
2334
|
|
|
2173
|
-
services_started =
|
|
2174
|
-
for svc_name, svc_config in services_config.items():
|
|
2175
|
-
svc_type = svc_config.get("type", "")
|
|
2176
|
-
if svc_type == "docker-compose":
|
|
2177
|
-
compose_file = svc_config.get("file", "docker-compose.yml")
|
|
2178
|
-
compose_cmd = f"cd {repo_dir} && DOCKER_HOST=unix:///var/run/docker-user.sock docker compose -f {compose_file} up -d"
|
|
2179
|
-
|
|
2180
|
-
if not json_output:
|
|
2181
|
-
console.print(f"[cyan] Starting docker compose service: {svc_name}...[/cyan]")
|
|
2182
|
-
|
|
2183
|
-
ret, stdout, stderr = _run_ssh_command(ssh_config_path, ssh_host, compose_cmd)
|
|
2184
|
-
if ret != 0:
|
|
2185
|
-
console.print(f"[red]❌ Failed to start service '{svc_name}': {stderr}[/red]")
|
|
2186
|
-
raise typer.Exit(1)
|
|
2187
|
-
|
|
2188
|
-
services_started.append({"name": svc_name, "type": "docker-compose", "file": compose_file})
|
|
2189
|
-
if not json_output:
|
|
2190
|
-
console.print(f"[green] ✓ Started docker compose service: {svc_name}[/green]")
|
|
2191
|
-
else:
|
|
2192
|
-
if not json_output:
|
|
2193
|
-
console.print(f"[yellow] ⚠ Skipped service '{svc_name}' (unknown type: {svc_type})[/yellow]")
|
|
2335
|
+
services_started = start_services_on_vm(repo_dir)
|
|
2194
2336
|
|
|
2195
2337
|
# Output results
|
|
2196
2338
|
if json_output:
|
|
@@ -9,9 +9,21 @@ from cryptography.hazmat.primitives import serialization
|
|
|
9
9
|
from cryptography.hazmat.primitives.asymmetric import ed25519
|
|
10
10
|
|
|
11
11
|
|
|
12
|
+
def get_plato_dir() -> Path:
|
|
13
|
+
"""Get the directory for plato config/SSH files.
|
|
14
|
+
|
|
15
|
+
Uses /workspace/.plato if /workspace exists (container environment),
|
|
16
|
+
otherwise uses ~/.plato (local development).
|
|
17
|
+
"""
|
|
18
|
+
workspace = Path("/workspace")
|
|
19
|
+
if workspace.exists() and workspace.is_dir():
|
|
20
|
+
return workspace / ".plato"
|
|
21
|
+
return Path.home() / ".plato"
|
|
22
|
+
|
|
23
|
+
|
|
12
24
|
def get_next_sandbox_number() -> int:
|
|
13
|
-
"""Find next available sandbox number by checking existing config files
|
|
14
|
-
plato_dir =
|
|
25
|
+
"""Find next available sandbox number by checking existing config files."""
|
|
26
|
+
plato_dir = get_plato_dir()
|
|
15
27
|
if not plato_dir.exists():
|
|
16
28
|
return 1
|
|
17
29
|
|
|
@@ -35,7 +47,7 @@ def generate_ssh_key_pair(sandbox_num: int) -> tuple[str, str]:
|
|
|
35
47
|
|
|
36
48
|
Returns (public_key_str, private_key_path).
|
|
37
49
|
"""
|
|
38
|
-
plato_dir =
|
|
50
|
+
plato_dir = get_plato_dir()
|
|
39
51
|
plato_dir.mkdir(mode=0o700, exist_ok=True)
|
|
40
52
|
|
|
41
53
|
private_key_path = plato_dir / f"ssh_{sandbox_num}_key"
|
|
@@ -160,7 +172,7 @@ def create_ssh_config(
|
|
|
160
172
|
TCPKeepAlive yes
|
|
161
173
|
"""
|
|
162
174
|
|
|
163
|
-
plato_dir =
|
|
175
|
+
plato_dir = get_plato_dir()
|
|
164
176
|
plato_dir.mkdir(mode=0o700, exist_ok=True)
|
|
165
177
|
|
|
166
178
|
config_path = plato_dir / f"ssh_{sandbox_num}.conf"
|