plato-sdk-v2 2.3.6__tar.gz → 2.3.7__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (531) hide show
  1. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/PKG-INFO +1 -1
  2. plato_sdk_v2-2.3.7/VERSION +1 -0
  3. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/agents/otel.py +67 -87
  4. plato_sdk_v2-2.3.7/plato/agents/runner.py +183 -0
  5. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/worlds/base.py +87 -92
  6. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/worlds/runner.py +33 -15
  7. plato_sdk_v2-2.3.6/VERSION +0 -1
  8. plato_sdk_v2-2.3.6/plato/agents/runner.py +0 -346
  9. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/.claude/agents/sim-creator.md +0 -0
  10. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/.gitignore +0 -0
  11. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/.sandbox.yaml +0 -0
  12. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/BUILDING_SIMS.md +0 -0
  13. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/README.md +0 -0
  14. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/ci/CLAUDE.md +0 -0
  15. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/ci/deploy.sh +0 -0
  16. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/ci/lint.sh +0 -0
  17. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/ci/setup.sh +0 -0
  18. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/ci/version-bump.sh +0 -0
  19. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/docs/AGENT_SPEC.md +0 -0
  20. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/docs/CLI.md +0 -0
  21. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/docs/GENERATING_SIM_SDKS.md +0 -0
  22. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/docs/SIMULATOR_LIFECYCLE.md +0 -0
  23. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/docs/SIM_CREATOR.md +0 -0
  24. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/docs/cli/agent.md +0 -0
  25. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/docs/cli/flows.md +0 -0
  26. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/docs/cli/pm.md +0 -0
  27. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/docs/cli/sandbox.md +0 -0
  28. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/docs/cli/sims.md +0 -0
  29. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/docs/cli/world.md +0 -0
  30. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/docs/sim-creation-pipeline.md +0 -0
  31. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/docs/skill-restructure-plan.md +0 -0
  32. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/docs/skills/SIM-CREATION-ARCHITECTURE.md +0 -0
  33. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/docs/skills/sim-config/SKILL.md +0 -0
  34. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/docs/skills/sim-creator/SKILL.md +0 -0
  35. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/docs/skills/sim-debugger/SKILL.md +0 -0
  36. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/docs/skills/sim-flow-audit/SKILL.md +0 -0
  37. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/docs/skills/sim-flow-clear/SKILL.md +0 -0
  38. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/docs/skills/sim-flow-mutations/SKILL.md +0 -0
  39. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/docs/skills/sim-flow-run/SKILL.md +0 -0
  40. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/docs/skills/sim-research/SKILL.md +0 -0
  41. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/docs/skills/sim-review/SKILL.md +0 -0
  42. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/docs/skills/sim-sandbox-login/SKILL.md +0 -0
  43. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/docs/skills/sim-sandbox-services/SKILL.md +0 -0
  44. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/docs/skills/sim-sandbox-start/SKILL.md +0 -0
  45. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/docs/skills/sim-sandbox-worker/SKILL.md +0 -0
  46. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/docs/skills/sim-snapshot/SKILL.md +0 -0
  47. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/docs/skills/sim-submit/SKILL.md +0 -0
  48. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/docs/skills/sim-validate/SKILL.md +0 -0
  49. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/docs/testcommit +0 -0
  50. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/docs/unit.sh +0 -0
  51. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/__init__.py +0 -0
  52. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/__init__.py +0 -0
  53. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/__init__.py +0 -0
  54. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/__init__.py +0 -0
  55. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/agent_artifacts/__init__.py +0 -0
  56. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/agent_artifacts/archive_agent_artifact.py +0 -0
  57. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/agent_artifacts/create_agent_artifact.py +0 -0
  58. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/agent_artifacts/get_agent_artifact_by_public_id.py +0 -0
  59. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/agent_artifacts/get_agent_artifacts.py +0 -0
  60. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/cluster/__init__.py +0 -0
  61. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/cluster/cleanup_stale_vms.py +0 -0
  62. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/cluster/get_dispatchers.py +0 -0
  63. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/cluster/get_nodes_status.py +0 -0
  64. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/cluster/get_snapshot_lineage.py +0 -0
  65. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/cluster/get_snapshots_status.py +0 -0
  66. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/cluster/pause_resume_dispatchers.py +0 -0
  67. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/cluster/prefetch_snapshot.py +0 -0
  68. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/env/__init__.py +0 -0
  69. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/env/backup.py +0 -0
  70. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/env/cleanup.py +0 -0
  71. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/env/close.py +0 -0
  72. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/env/close_async.py +0 -0
  73. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/env/create.py +0 -0
  74. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/env/create_batch.py +0 -0
  75. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/env/create_simulator.py +0 -0
  76. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/env/evaluate_session.py +0 -0
  77. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/env/generate_mutations.py +0 -0
  78. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/env/generate_mutations_single.py +0 -0
  79. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/env/get_active_session.py +0 -0
  80. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/env/get_app_sim_worker_info.py +0 -0
  81. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/env/get_cdp_url.py +0 -0
  82. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/env/get_flows.py +0 -0
  83. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/env/get_interface_worker_info.py +0 -0
  84. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/env/get_job_info.py +0 -0
  85. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/env/get_job_status.py +0 -0
  86. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/env/get_job_worker_info.py +0 -0
  87. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/env/get_proxy_url.py +0 -0
  88. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/env/get_public_url.py +0 -0
  89. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/env/get_simulator_by_name.py +0 -0
  90. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/env/get_simulators.py +0 -0
  91. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/env/get_state.py +0 -0
  92. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/env/get_worker_ready.py +0 -0
  93. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/env/log_state_mutation.py +0 -0
  94. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/env/rescore_simulator_sessions.py +0 -0
  95. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/env/reset.py +0 -0
  96. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/env/score.py +0 -0
  97. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/env/send_heartbeat.py +0 -0
  98. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/env/update_simulator.py +0 -0
  99. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/evals/__init__.py +0 -0
  100. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/evals/create_test_case_review.py +0 -0
  101. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/evals/evaluate_python.py +0 -0
  102. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/evals/get_all_test_case_reviews.py +0 -0
  103. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/evals/get_scores_by_user.py +0 -0
  104. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/evals/get_scoring.py +0 -0
  105. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/evals/get_test_case_review.py +0 -0
  106. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/evals/human_in_the_loop_scoring.py +0 -0
  107. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/evals/start_eval_from_git.py +0 -0
  108. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/gitea/__init__.py +0 -0
  109. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/gitea/create_gitea_repository.py +0 -0
  110. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/gitea/create_simulator_repository.py +0 -0
  111. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/gitea/delete_gitea_repository.py +0 -0
  112. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/gitea/get_accessible_simulators.py +0 -0
  113. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/gitea/get_gitea_credentials.py +0 -0
  114. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/gitea/get_gitea_repository.py +0 -0
  115. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/gitea/get_my_gitea_info.py +0 -0
  116. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/gitea/get_my_repositories.py +0 -0
  117. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/gitea/get_repository_branches.py +0 -0
  118. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/gitea/get_repository_contents.py +0 -0
  119. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/gitea/get_simulator_file_content.py +0 -0
  120. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/gitea/get_simulator_repository.py +0 -0
  121. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/gitea/get_simulator_repository_branches.py +0 -0
  122. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/gitea/get_simulator_repository_contents.py +0 -0
  123. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/jobs/__init__.py +0 -0
  124. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/jobs/get_job_by_id.py +0 -0
  125. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/jobs/get_jobs_by_group_id.py +0 -0
  126. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/jobs/get_keepalive_jobs.py +0 -0
  127. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/jobs/list_jobs.py +0 -0
  128. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/jobs/update_job_status.py +0 -0
  129. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/organization/__init__.py +0 -0
  130. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/organization/create_annotator_assignment.py +0 -0
  131. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/organization/create_org_api_key.py +0 -0
  132. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/organization/create_org_policy.py +0 -0
  133. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/organization/delete_org_api_key.py +0 -0
  134. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/organization/delete_org_policy.py +0 -0
  135. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/organization/get_annotator_assignments.py +0 -0
  136. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/organization/get_org_api_key_policies.py +0 -0
  137. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/organization/get_org_api_keys.py +0 -0
  138. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/organization/get_org_policies.py +0 -0
  139. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/organization/get_organization_concurrency_status.py +0 -0
  140. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/organization/get_organization_members.py +0 -0
  141. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/organization/update_annotator_assignment_stage.py +0 -0
  142. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/organization/update_organization_concurrency_limit.py +0 -0
  143. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/queue/__init__.py +0 -0
  144. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/queue/get_queue_status.py +0 -0
  145. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/queue/get_vm_detail.py +0 -0
  146. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/queue/get_vms.py +0 -0
  147. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/queue/get_workers.py +0 -0
  148. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/sandbox/__init__.py +0 -0
  149. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/sandbox/checkpoint_vm.py +0 -0
  150. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/sandbox/close_vm.py +0 -0
  151. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/sandbox/create_vm.py +0 -0
  152. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/sandbox/execute_ssh_command.py +0 -0
  153. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/sandbox/get_operation_events.py +0 -0
  154. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/sandbox/healthy_services.py +0 -0
  155. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/sandbox/healthy_worker.py +0 -0
  156. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/sandbox/save_vm_snapshot.py +0 -0
  157. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/sandbox/setup_root_access.py +0 -0
  158. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/sandbox/setup_sandbox.py +0 -0
  159. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/sandbox/start_worker.py +0 -0
  160. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/session/__init__.py +0 -0
  161. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/session/analyze_labels.py +0 -0
  162. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/session/archive_session.py +0 -0
  163. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/session/archive_session_logs_endpoint.py +0 -0
  164. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/session/create_from_labels.py +0 -0
  165. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/session/create_session_from_browser.py +0 -0
  166. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/session/create_session_from_env_recording.py +0 -0
  167. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/session/create_session_from_har.py +0 -0
  168. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/session/get_env_recording.py +0 -0
  169. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/session/get_grouped_replay_sessions.py +0 -0
  170. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/session/get_logs_status.py +0 -0
  171. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/session/get_network_requests.py +0 -0
  172. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/session/get_next_session_for_annotator.py +0 -0
  173. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/session/get_public_benchmark_sessions.py +0 -0
  174. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/session/get_replay_score_data.py +0 -0
  175. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/session/get_rrweb_actions.py +0 -0
  176. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/session/get_rrweb_events.py +0 -0
  177. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/session/get_screen_recording.py +0 -0
  178. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/session/get_session.py +0 -0
  179. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/session/get_session_replays.py +0 -0
  180. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/session/get_sessions.py +0 -0
  181. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/session/get_sessions_for_archival.py +0 -0
  182. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/session/get_ui_events.py +0 -0
  183. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/session/restore_session_logs.py +0 -0
  184. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/session/score_session_with_config.py +0 -0
  185. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/session/search_sessions_by_ids.py +0 -0
  186. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/session/set_session_output.py +0 -0
  187. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/session/update_session_public.py +0 -0
  188. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/session/update_session_testcase.py +0 -0
  189. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/simulator/__init__.py +0 -0
  190. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/simulator/add_simulator_review.py +0 -0
  191. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/simulator/batch_create_test_cases.py +0 -0
  192. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/simulator/batch_get_artifact_metadata.py +0 -0
  193. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/simulator/get_all_simulators_info.py +0 -0
  194. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/simulator/get_db_config.py +0 -0
  195. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/simulator/get_env_flows.py +0 -0
  196. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/simulator/get_plato_config.py +0 -0
  197. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/simulator/get_sessions_batch_by_job_groups.py +0 -0
  198. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/simulator/get_sessions_by_job_group.py +0 -0
  199. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/simulator/get_simulator_by_name.py +0 -0
  200. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/simulator/get_simulator_id.py +0 -0
  201. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/simulator/get_simulator_info.py +0 -0
  202. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/simulator/get_simulator_version_details.py +0 -0
  203. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/simulator/get_simulator_versions.py +0 -0
  204. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/simulator/get_start_path.py +0 -0
  205. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/simulator/get_version_by_tag.py +0 -0
  206. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/simulator/list_simulators.py +0 -0
  207. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/simulator/list_simulators_by_org.py +0 -0
  208. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/simulator/list_simulators_status.py +0 -0
  209. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/simulator/register.py +0 -0
  210. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/simulator/update_simulator.py +0 -0
  211. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/simulator/update_simulator_status.py +0 -0
  212. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/simulator/update_tag.py +0 -0
  213. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/testcases/__init__.py +0 -0
  214. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/testcases/archive_organization_test_case_assignments.py +0 -0
  215. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/testcases/archive_organization_testcase.py +0 -0
  216. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/testcases/archive_testcase.py +0 -0
  217. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/testcases/assign_testcase_to_organizations.py +0 -0
  218. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/testcases/auto_verify_testcase.py +0 -0
  219. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/testcases/bulk_archive_testcases.py +0 -0
  220. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/testcases/convert_text_to_structured_data.py +0 -0
  221. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/testcases/create_testcase.py +0 -0
  222. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/testcases/create_testcase_set.py +0 -0
  223. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/testcases/delete_testcase_set.py +0 -0
  224. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/testcases/filter_human_recorder_testcases.py +0 -0
  225. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/testcases/generate_outcome_schema.py +0 -0
  226. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/testcases/generate_prediction.py +0 -0
  227. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/testcases/generate_prediction_from_steps.py +0 -0
  228. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/testcases/generate_scoring_config_from_sessions.py +0 -0
  229. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/testcases/generate_state_mutations_config_route.py +0 -0
  230. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/testcases/get_human_recorder_tab_counts.py +0 -0
  231. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/testcases/get_human_recorder_testcases.py +0 -0
  232. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/testcases/get_merged_mutations.py +0 -0
  233. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/testcases/get_mutation_groups_for_testcase.py +0 -0
  234. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/testcases/get_next_testcase_for_scoring.py +0 -0
  235. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/testcases/get_organization_test_case_assignments.py +0 -0
  236. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/testcases/get_testcase.py +0 -0
  237. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/testcases/get_testcase_metadata_for_scoring.py +0 -0
  238. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/testcases/get_testcase_sets.py +0 -0
  239. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/testcases/get_testcases.py +0 -0
  240. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/testcases/get_testcases_in_set.py +0 -0
  241. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/testcases/mark_organization_test_case_completed.py +0 -0
  242. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/testcases/update_testcase.py +0 -0
  243. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v1/testcases/version_bump_testcase.py +0 -0
  244. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v2/__init__.py +0 -0
  245. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v2/agents/__init__.py +0 -0
  246. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v2/agents/get_agent_ecr_token.py +0 -0
  247. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v2/agents/get_agent_schema.py +0 -0
  248. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v2/agents/get_agent_versions.py +0 -0
  249. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v2/agents/import_agent.py +0 -0
  250. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v2/agents/list_docker_agents.py +0 -0
  251. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v2/agents/lookup_agent_version.py +0 -0
  252. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v2/agents/register_docker_agent.py +0 -0
  253. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v2/artifacts/__init__.py +0 -0
  254. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v2/artifacts/get_artifact.py +0 -0
  255. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v2/chronos/__init__.py +0 -0
  256. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v2/chronos/launch_job.py +0 -0
  257. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v2/chronos_packages/__init__.py +0 -0
  258. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v2/chronos_packages/get_package_versions.py +0 -0
  259. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v2/chronos_packages/list_chronos_packages.py +0 -0
  260. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v2/chronos_packages/lookup_package_version.py +0 -0
  261. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v2/chronos_packages/register_chronos_package.py +0 -0
  262. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v2/chronos_packages/upload_chronos_package.py +0 -0
  263. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v2/cluster/__init__.py +0 -0
  264. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v2/cluster/get_node_config.py +0 -0
  265. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v2/jobs/__init__.py +0 -0
  266. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v2/jobs/checkpoint.py +0 -0
  267. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v2/jobs/close.py +0 -0
  268. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v2/jobs/connect_routing_info.py +0 -0
  269. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v2/jobs/connect_url.py +0 -0
  270. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v2/jobs/disk_snapshot.py +0 -0
  271. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v2/jobs/execute.py +0 -0
  272. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v2/jobs/get_flows.py +0 -0
  273. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v2/jobs/get_plato_config.py +0 -0
  274. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v2/jobs/log_for_job.py +0 -0
  275. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v2/jobs/make.py +0 -0
  276. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v2/jobs/public_url.py +0 -0
  277. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v2/jobs/reset.py +0 -0
  278. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v2/jobs/set_date.py +0 -0
  279. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v2/jobs/setup_sandbox.py +0 -0
  280. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v2/jobs/snapshot.py +0 -0
  281. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v2/jobs/snapshot_store.py +0 -0
  282. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v2/jobs/state.py +0 -0
  283. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v2/jobs/wait_for_ready.py +0 -0
  284. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v2/pypi/__init__.py +0 -0
  285. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v2/pypi/download_package.py +0 -0
  286. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v2/pypi/get_package_schema.py +0 -0
  287. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v2/pypi/package_index.py +0 -0
  288. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v2/pypi/simple_index.py +0 -0
  289. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v2/pypi/upload_package.py +0 -0
  290. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v2/releases/__init__.py +0 -0
  291. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v2/releases/create.py +0 -0
  292. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v2/releases/deploy.py +0 -0
  293. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v2/releases/get.py +0 -0
  294. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v2/releases/handle_get_existing_public_ids.py +0 -0
  295. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v2/releases/handle_import.py +0 -0
  296. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v2/releases/list_releases.py +0 -0
  297. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v2/releases/prep_release_assigned_testcases.py +0 -0
  298. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v2/releases/update.py +0 -0
  299. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v2/sessions/__init__.py +0 -0
  300. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v2/sessions/checkpoint.py +0 -0
  301. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v2/sessions/close.py +0 -0
  302. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v2/sessions/disk_snapshot.py +0 -0
  303. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v2/sessions/evaluate.py +0 -0
  304. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v2/sessions/execute.py +0 -0
  305. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v2/sessions/get_connect_url.py +0 -0
  306. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v2/sessions/get_presigned_url.py +0 -0
  307. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v2/sessions/get_public_url.py +0 -0
  308. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v2/sessions/get_s3_content.py +0 -0
  309. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v2/sessions/get_session_details.py +0 -0
  310. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v2/sessions/get_session_documents.py +0 -0
  311. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v2/sessions/get_session_flows.py +0 -0
  312. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v2/sessions/get_session_logs.py +0 -0
  313. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v2/sessions/get_session_plato_config.py +0 -0
  314. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v2/sessions/heartbeat.py +0 -0
  315. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v2/sessions/list_jobs.py +0 -0
  316. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v2/sessions/list_sessions.py +0 -0
  317. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v2/sessions/log_job_mutation.py +0 -0
  318. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v2/sessions/make.py +0 -0
  319. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v2/sessions/reset.py +0 -0
  320. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v2/sessions/set_date.py +0 -0
  321. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v2/sessions/setup_sandbox.py +0 -0
  322. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v2/sessions/snapshot.py +0 -0
  323. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v2/sessions/snapshot_store.py +0 -0
  324. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v2/sessions/state.py +0 -0
  325. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v2/sessions/upload_session_documents.py +0 -0
  326. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v2/sessions/wait_for_ready.py +0 -0
  327. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v2/user/__init__.py +0 -0
  328. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/v2/user/get_current_user.py +0 -0
  329. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/version/__init__.py +0 -0
  330. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/api/version/check.py +0 -0
  331. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/client.py +0 -0
  332. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/errors.py +0 -0
  333. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/models/__init__.py +0 -0
  334. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_generated/py.typed +0 -0
  335. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_sims_generator/__init__.py +0 -0
  336. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_sims_generator/cli.py +0 -0
  337. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_sims_generator/instruction.py +0 -0
  338. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_sims_generator/parser.py +0 -0
  339. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_sims_generator/python.py +0 -0
  340. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_sims_generator/templates/instruction/helpers.py.jinja +0 -0
  341. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_sims_generator/templates/instruction/init.py.jinja +0 -0
  342. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_sims_generator/templates/python/api_init.py.jinja +0 -0
  343. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_sims_generator/templates/python/client.py.jinja +0 -0
  344. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_sims_generator/templates/python/endpoint.py.jinja +0 -0
  345. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_sims_generator/templates/python/errors.py.jinja +0 -0
  346. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_sims_generator/templates/python/package_init.py.jinja +0 -0
  347. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_sims_generator/templates/python/tag_init.py.jinja +0 -0
  348. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/_sims_generator/templates/python/version_init.py.jinja +0 -0
  349. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/agents/__init__.py +0 -0
  350. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/agents/artifacts.py +0 -0
  351. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/agents/base.py +0 -0
  352. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/agents/build.py +0 -0
  353. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/agents/config.py +0 -0
  354. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/agents/trajectory.py +0 -0
  355. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/chronos/__init__.py +0 -0
  356. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/chronos/api/__init__.py +0 -0
  357. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/chronos/api/agents/__init__.py +0 -0
  358. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/chronos/api/agents/create_agent.py +0 -0
  359. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/chronos/api/agents/delete_agent.py +0 -0
  360. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/chronos/api/agents/get_agent.py +0 -0
  361. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/chronos/api/agents/get_agent_schema.py +0 -0
  362. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/chronos/api/agents/get_agent_versions.py +0 -0
  363. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/chronos/api/agents/list_agents.py +0 -0
  364. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/chronos/api/agents/lookup_agent.py +0 -0
  365. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/chronos/api/auth/__init__.py +0 -0
  366. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/chronos/api/auth/debug_auth_api_auth_debug_get.py +0 -0
  367. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/chronos/api/auth/get_auth_status_api_auth_status_get.py +0 -0
  368. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/chronos/api/auth/get_current_user_route_api_auth_me_get.py +0 -0
  369. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/chronos/api/default/__init__.py +0 -0
  370. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/chronos/api/default/health.py +0 -0
  371. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/chronos/api/jobs/__init__.py +0 -0
  372. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/chronos/api/jobs/launch_job.py +0 -0
  373. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/chronos/api/registry/__init__.py +0 -0
  374. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/chronos/api/registry/get_agent_schema_api_registry_agents__agent_name__schema_get.py +0 -0
  375. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/chronos/api/registry/get_agent_versions_api_registry_agents__agent_name__versions_get.py +0 -0
  376. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/chronos/api/registry/get_world_schema_api_registry_worlds__package_name__schema_get.py +0 -0
  377. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/chronos/api/registry/get_world_versions_api_registry_worlds__package_name__versions_get.py +0 -0
  378. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/chronos/api/registry/list_registry_agents_api_registry_agents_get.py +0 -0
  379. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/chronos/api/registry/list_registry_worlds_api_registry_worlds_get.py +0 -0
  380. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/chronos/api/runtimes/__init__.py +0 -0
  381. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/chronos/api/runtimes/create_runtime.py +0 -0
  382. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/chronos/api/runtimes/delete_runtime.py +0 -0
  383. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/chronos/api/runtimes/get_runtime.py +0 -0
  384. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/chronos/api/runtimes/list_runtimes.py +0 -0
  385. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/chronos/api/runtimes/test_runtime.py +0 -0
  386. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/chronos/api/secrets/__init__.py +0 -0
  387. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/chronos/api/secrets/create_secret.py +0 -0
  388. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/chronos/api/secrets/delete_secret.py +0 -0
  389. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/chronos/api/secrets/get_secret.py +0 -0
  390. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/chronos/api/secrets/list_secrets.py +0 -0
  391. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/chronos/api/secrets/update_secret.py +0 -0
  392. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/chronos/api/sessions/__init__.py +0 -0
  393. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/chronos/api/sessions/get_session.py +0 -0
  394. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/chronos/api/sessions/get_session_logs.py +0 -0
  395. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/chronos/api/sessions/get_session_logs_download.py +0 -0
  396. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/chronos/api/sessions/list_sessions.py +0 -0
  397. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/chronos/api/status/__init__.py +0 -0
  398. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/chronos/api/status/get_status_api_status_get.py +0 -0
  399. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/chronos/api/status/get_version_info_api_version_get.py +0 -0
  400. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/chronos/api/templates/__init__.py +0 -0
  401. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/chronos/api/templates/create_template.py +0 -0
  402. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/chronos/api/templates/delete_template.py +0 -0
  403. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/chronos/api/templates/get_template.py +0 -0
  404. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/chronos/api/templates/list_templates.py +0 -0
  405. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/chronos/api/templates/update_template.py +0 -0
  406. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/chronos/api/trajectories/__init__.py +0 -0
  407. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/chronos/api/trajectories/get_trajectory.py +0 -0
  408. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/chronos/api/trajectories/list_trajectories.py +0 -0
  409. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/chronos/api/worlds/__init__.py +0 -0
  410. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/chronos/api/worlds/create_world.py +0 -0
  411. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/chronos/api/worlds/delete_world.py +0 -0
  412. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/chronos/api/worlds/get_world.py +0 -0
  413. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/chronos/api/worlds/list_worlds.py +0 -0
  414. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/chronos/client.py +0 -0
  415. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/chronos/errors.py +0 -0
  416. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/chronos/models/__init__.py +0 -0
  417. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/chronos/py.typed +0 -0
  418. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/py.typed +0 -0
  419. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/sims/README.md +0 -0
  420. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/sims/__init__.py +0 -0
  421. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/sims/agent_helpers.py +0 -0
  422. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/sims/cli.py +0 -0
  423. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/sims/generate_clients.py +0 -0
  424. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/sims/registry.py +0 -0
  425. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/v1/__init__.py +0 -0
  426. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/v1/audit_ui.py +0 -0
  427. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/v1/cli/__init__.py +0 -0
  428. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/v1/cli/agent.py +0 -0
  429. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/v1/cli/main.py +0 -0
  430. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/v1/cli/pm.py +0 -0
  431. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/v1/cli/sandbox.py +0 -0
  432. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/v1/cli/ssh.py +0 -0
  433. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/v1/cli/utils.py +0 -0
  434. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/v1/cli/verify.py +0 -0
  435. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/v1/cli/world.py +0 -0
  436. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/v1/cli.py +0 -0
  437. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/v1/config.py +0 -0
  438. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/v1/examples/doordash_tasks.py +0 -0
  439. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/v1/examples/loadtest.py +0 -0
  440. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/v1/examples/test_env.py +0 -0
  441. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/v1/examples/test_env_custom_browser.py +0 -0
  442. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/v1/examples/test_env_sync.py +0 -0
  443. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/v1/examples/test_reuse_env.py +0 -0
  444. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/v1/examples/test_run.py +0 -0
  445. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/v1/exceptions.py +0 -0
  446. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/v1/extensions/envgen-recorder/README.md +0 -0
  447. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/v1/extensions/envgen-recorder/api-client.js +0 -0
  448. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/v1/extensions/envgen-recorder/background.js +0 -0
  449. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/v1/extensions/envgen-recorder/build-sdk.js +0 -0
  450. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/v1/extensions/envgen-recorder/content.js +0 -0
  451. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/v1/extensions/envgen-recorder/manifest.json +0 -0
  452. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/v1/extensions/envgen-recorder/offscreen.html +0 -0
  453. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/v1/extensions/envgen-recorder/offscreen.js +0 -0
  454. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/v1/extensions/envgen-recorder/options.html +0 -0
  455. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/v1/extensions/envgen-recorder/options.js +0 -0
  456. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/v1/extensions/envgen-recorder/package-lock.json +0 -0
  457. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/v1/extensions/envgen-recorder/package.json +0 -0
  458. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/v1/extensions/envgen-recorder/plato-sdk-bundle.js +0 -0
  459. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/v1/extensions/envgen-recorder/plato-sdk-bundle.js.map +0 -0
  460. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/v1/extensions/envgen-recorder/popup.html +0 -0
  461. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/v1/extensions/envgen-recorder/popup.js +0 -0
  462. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/v1/extensions/envgen-recorder/review-panel.html +0 -0
  463. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/v1/extensions/envgen-recorder/review-panel.js +0 -0
  464. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/v1/extensions/envgen-recorder/review-success.html +0 -0
  465. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/v1/extensions/envgen-recorder/review-success.js +0 -0
  466. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/v1/extensions/envgen-recorder/session-active.html +0 -0
  467. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/v1/extensions/envgen-recorder/session-active.js +0 -0
  468. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/v1/extensions/envgen-recorder/session-ended.html +0 -0
  469. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/v1/extensions/envgen-recorder/session-ended.js +0 -0
  470. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/v1/extensions/envgen-recorder/session-setup.html +0 -0
  471. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/v1/extensions/envgen-recorder/session-setup.js +0 -0
  472. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/v1/extensions/envgen-recorder/sessions.html +0 -0
  473. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/v1/extensions/envgen-recorder/sessions.js +0 -0
  474. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/v1/extensions/envgen-recorder/styles.css +0 -0
  475. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/v1/flow_executor.py +0 -0
  476. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/v1/models/__init__.py +0 -0
  477. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/v1/models/build_models.py +0 -0
  478. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/v1/models/env.py +0 -0
  479. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/v1/models/flow.py +0 -0
  480. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/v1/models/sandbox.py +0 -0
  481. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/v1/models/task.py +0 -0
  482. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/v1/sandbox_sdk.py +0 -0
  483. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/v1/sdk.py +0 -0
  484. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/v1/sync_env.py +0 -0
  485. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/v1/sync_flow_executor.py +0 -0
  486. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/v1/sync_sdk.py +0 -0
  487. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/v1/utils/proxytunnel.py +0 -0
  488. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/v2/__init__.py +0 -0
  489. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/v2/async_/__init__.py +0 -0
  490. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/v2/async_/artifact.py +0 -0
  491. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/v2/async_/client.py +0 -0
  492. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/v2/async_/environment.py +0 -0
  493. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/v2/async_/flow_executor.py +0 -0
  494. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/v2/async_/session.py +0 -0
  495. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/v2/models.py +0 -0
  496. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/v2/sync/__init__.py +0 -0
  497. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/v2/sync/artifact.py +0 -0
  498. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/v2/sync/client.py +0 -0
  499. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/v2/sync/environment.py +0 -0
  500. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/v2/sync/flow_executor.py +0 -0
  501. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/v2/sync/session.py +0 -0
  502. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/v2/types.py +0 -0
  503. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/v2/utils/__init__.py +0 -0
  504. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/v2/utils/db_cleanup.py +0 -0
  505. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/v2/utils/models.py +0 -0
  506. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/v2/utils/proxy_tunnel.py +0 -0
  507. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/worlds/README.md +0 -0
  508. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/worlds/__init__.py +0 -0
  509. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/worlds/build_hook.py +0 -0
  510. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/plato/worlds/config.py +0 -0
  511. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/pyproject.toml +0 -0
  512. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/scripts/get_all_artifact_targets.py +0 -0
  513. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/tests/__init__.py +0 -0
  514. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/tests/integration/__init__.py +0 -0
  515. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/tests/integration/conftest.py +0 -0
  516. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/tests/integration/test_browser_agent.py +0 -0
  517. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/tests/integration/test_chronos_callback.py +0 -0
  518. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/tests/integration/test_cleanup_snapshot.py +0 -0
  519. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/tests/integration/test_code_world.py +0 -0
  520. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/tests/integration/test_harbor_agent_runner.py +0 -0
  521. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/tests/sims/__init__.py +0 -0
  522. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/tests/sims/conftest.py +0 -0
  523. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/tests/sims/test_agent_helpers.py +0 -0
  524. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/tests/test_heartbeat_keepalive.py +0 -0
  525. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/tests/test_session_serialization.py +0 -0
  526. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/tests/test_set_date.py +0 -0
  527. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/tests/test_v2_imports.py +0 -0
  528. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/tests/test_v2_multisim_integration.py +0 -0
  529. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/tests/test_v2_session.py +0 -0
  530. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/tests/test_version.py +0 -0
  531. {plato_sdk_v2-2.3.6 → plato_sdk_v2-2.3.7}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: plato-sdk-v2
3
- Version: 2.3.6
3
+ Version: 2.3.7
4
4
  Summary: Python SDK for the Plato API
5
5
  Author-email: Plato <support@plato.so>
6
6
  License-Expression: MIT
@@ -0,0 +1 @@
1
+ 2.3.7
@@ -1,7 +1,7 @@
1
1
  """OpenTelemetry integration for Plato agents and worlds.
2
2
 
3
- Provides tracing and logging utilities using OpenTelemetry SDK. Traces and logs
4
- are sent directly to the Chronos OTLP endpoint.
3
+ Provides tracing utilities using OpenTelemetry SDK. Traces are sent directly
4
+ to the Chronos OTLP endpoint.
5
5
 
6
6
  Usage:
7
7
  from plato.agents.otel import init_tracing, get_tracer, shutdown_tracing
@@ -19,11 +19,6 @@ Usage:
19
19
  span.set_attribute("key", "value")
20
20
  # ... do work ...
21
21
 
22
- # All Python logging is automatically sent to Chronos
23
- import logging
24
- logger = logging.getLogger(__name__)
25
- logger.info("This will appear in the trajectory viewer!")
26
-
27
22
  # Cleanup
28
23
  shutdown_tracing()
29
24
  """
@@ -39,74 +34,42 @@ _module_logger = logging.getLogger(__name__)
39
34
 
40
35
  # Global state
41
36
  _tracer_provider = None
42
- _logging_handler = None
43
37
  _initialized = False
38
+ _log_handler = None
44
39
 
45
40
 
46
- class OTelLoggingHandler(logging.Handler):
47
- """Logging handler that emits OTel spans for log messages.
41
+ class OTelSpanLogHandler(logging.Handler):
42
+ """Logging handler that creates OTel spans for log messages.
48
43
 
49
- Each log message becomes a span with:
50
- - span.type: "log"
51
- - log.level: DEBUG/INFO/WARNING/ERROR/CRITICAL
52
- - content: the log message
53
- - source: the logger name
44
+ Converts Python log records to OTel spans with log attributes.
54
45
  """
55
46
 
56
- def __init__(self, tracer_name: str = "plato.logging"):
57
- super().__init__()
58
- self._tracer_name = tracer_name
59
- # Filter out noisy loggers
60
- self._ignored_loggers = {
61
- "httpx",
62
- "httpcore",
63
- "urllib3",
64
- "asyncio",
65
- "opentelemetry",
66
- "plato.agents.otel", # Avoid recursion
67
- }
47
+ def __init__(self, tracer: Tracer, level: int = logging.INFO):
48
+ super().__init__(level)
49
+ self.tracer = tracer
68
50
 
69
51
  def emit(self, record: logging.LogRecord) -> None:
70
52
  """Emit a log record as an OTel span."""
71
- # Skip ignored loggers
72
- logger_name = record.name
73
- for ignored in self._ignored_loggers:
74
- if logger_name.startswith(ignored):
75
- return
76
-
77
53
  try:
78
- tracer = trace.get_tracer(self._tracer_name)
79
-
80
- # Format the message
81
- try:
82
- msg = self.format(record)
83
- except Exception:
84
- msg = record.getMessage()
85
-
86
54
  # Create a span for the log message
87
- with tracer.start_as_current_span(
88
- f"log.{record.levelname.lower()}",
89
- end_on_exit=True,
90
- ) as span:
91
- span.set_attribute("span.type", "log")
55
+ with self.tracer.start_as_current_span(f"log.{record.levelname.lower()}") as span:
92
56
  span.set_attribute("log.level", record.levelname)
93
- span.set_attribute("content", msg)
94
- span.set_attribute("source", logger_name)
57
+ span.set_attribute("log.message", record.getMessage())
58
+ span.set_attribute("log.logger", record.name)
59
+ span.set_attribute("source", "world")
60
+ span.set_attribute("content", record.getMessage()[:1000])
95
61
 
96
- # Add extra context if available
97
62
  if record.funcName:
98
63
  span.set_attribute("log.function", record.funcName)
99
- if record.pathname:
100
- span.set_attribute("log.file", record.pathname)
101
64
  if record.lineno:
102
- span.set_attribute("log.line", record.lineno)
65
+ span.set_attribute("log.lineno", record.lineno)
103
66
 
104
- # If there's an exception, record it
105
- if record.exc_info and record.exc_info[1]:
106
- span.record_exception(record.exc_info[1])
67
+ # Mark errors
68
+ if record.levelno >= logging.ERROR:
69
+ span.set_attribute("error", True)
107
70
 
108
71
  except Exception:
109
- # Don't let logging failures break the application
72
+ # Don't let logging errors crash the application
110
73
  pass
111
74
 
112
75
 
@@ -114,66 +77,77 @@ def init_tracing(
114
77
  service_name: str,
115
78
  session_id: str,
116
79
  otlp_endpoint: str,
117
- capture_logging: bool = True,
118
- log_level: int = logging.INFO,
80
+ parent_trace_id: str | None = None,
81
+ parent_span_id: str | None = None,
119
82
  ) -> None:
120
- """Initialize OpenTelemetry tracing and optionally capture Python logging.
83
+ """Initialize OpenTelemetry tracing.
121
84
 
122
85
  Args:
123
86
  service_name: Name of the service (e.g., world name or agent name)
124
87
  session_id: Chronos session ID (added as resource attribute)
125
88
  otlp_endpoint: Chronos OTLP endpoint (e.g., http://chronos/api/otel)
126
- capture_logging: If True, install handler to capture Python logs as OTel spans
127
- log_level: Minimum log level to capture (default: INFO)
89
+ parent_trace_id: Optional parent trace ID for linking (hex string)
90
+ parent_span_id: Optional parent span ID for linking (hex string)
128
91
  """
129
- global _tracer_provider, _logging_handler, _initialized
92
+ global _tracer_provider, _initialized, _log_handler
130
93
 
131
94
  if _initialized:
132
95
  _module_logger.debug("Tracing already initialized")
133
96
  return
134
97
 
135
98
  try:
99
+ from opentelemetry import context as context_api
136
100
  from opentelemetry.exporter.otlp.proto.http.trace_exporter import (
137
101
  OTLPSpanExporter,
138
102
  )
139
103
  from opentelemetry.sdk.resources import Resource
140
104
  from opentelemetry.sdk.trace import TracerProvider
141
- from opentelemetry.sdk.trace.export import BatchSpanProcessor
105
+ from opentelemetry.sdk.trace.export import SimpleSpanProcessor
106
+ from opentelemetry.trace import NonRecordingSpan, SpanContext, TraceFlags
142
107
 
143
108
  # Create resource with session ID
144
109
  resource = Resource.create(
145
110
  {
146
111
  "service.name": service_name,
147
- "session.id": session_id,
112
+ "plato.session.id": session_id,
148
113
  }
149
114
  )
150
115
 
151
116
  # Create tracer provider
152
117
  _tracer_provider = TracerProvider(resource=resource)
153
118
 
154
- # Add OTLP exporter pointing to Chronos
119
+ # Add OTLP exporter pointing to Chronos (use SimpleSpanProcessor for immediate export)
155
120
  otlp_exporter = OTLPSpanExporter(endpoint=f"{otlp_endpoint.rstrip('/')}/v1/traces")
156
- _tracer_provider.add_span_processor(BatchSpanProcessor(otlp_exporter))
121
+ _tracer_provider.add_span_processor(SimpleSpanProcessor(otlp_exporter))
157
122
 
158
123
  # Set as global tracer provider
159
124
  trace.set_tracer_provider(_tracer_provider)
160
125
 
161
- _initialized = True
126
+ # If parent context is provided, set it as the current context
127
+ # This allows new spans to automatically link to the parent
128
+ if parent_trace_id and parent_span_id:
129
+ parent_context = SpanContext(
130
+ trace_id=int(parent_trace_id, 16),
131
+ span_id=int(parent_span_id, 16),
132
+ is_remote=True,
133
+ trace_flags=TraceFlags(0x01), # Sampled
134
+ )
135
+ parent_span = NonRecordingSpan(parent_context)
136
+ ctx = trace.set_span_in_context(parent_span)
137
+ context_api.attach(ctx)
138
+ print(f"[OTel] Using parent context: trace_id={parent_trace_id}, span_id={parent_span_id}")
139
+
140
+ # Add OTel logging handler to capture world logs
141
+ tracer = trace.get_tracer(service_name)
142
+ _log_handler = OTelSpanLogHandler(tracer, level=logging.INFO)
143
+
144
+ # Add handler to plato.worlds loggers
145
+ plato_worlds_logger = logging.getLogger("plato.worlds")
146
+ plato_worlds_logger.addHandler(_log_handler)
162
147
 
163
- # Install logging handler to capture Python logs
164
- if capture_logging:
165
- _logging_handler = OTelLoggingHandler()
166
- _logging_handler.setLevel(log_level)
167
- # Add to root logger to capture all logs
168
- logging.getLogger().addHandler(_logging_handler)
148
+ _initialized = True
169
149
 
170
- # Use print to ensure this shows regardless of logging config
171
150
  print(f"[OTel] Tracing initialized: service={service_name}, session={session_id}, endpoint={otlp_endpoint}")
172
- _module_logger.info(
173
- f"OTel tracing initialized: service={service_name}, "
174
- f"session={session_id}, endpoint={otlp_endpoint}, "
175
- f"capture_logging={capture_logging}"
176
- )
177
151
 
178
152
  except ImportError as e:
179
153
  print(f"[OTel] OpenTelemetry SDK not installed: {e}")
@@ -184,16 +158,17 @@ def init_tracing(
184
158
 
185
159
 
186
160
  def shutdown_tracing() -> None:
187
- """Shutdown the tracer provider, flush spans, and remove logging handler."""
188
- global _tracer_provider, _logging_handler, _initialized
161
+ """Shutdown the tracer provider and flush spans."""
162
+ global _tracer_provider, _initialized, _log_handler
189
163
 
190
- # Remove logging handler first
191
- if _logging_handler:
164
+ # Remove log handler
165
+ if _log_handler:
192
166
  try:
193
- logging.getLogger().removeHandler(_logging_handler)
167
+ plato_worlds_logger = logging.getLogger("plato.worlds")
168
+ plato_worlds_logger.removeHandler(_log_handler)
194
169
  except Exception:
195
170
  pass
196
- _logging_handler = None
171
+ _log_handler = None
197
172
 
198
173
  if _tracer_provider:
199
174
  try:
@@ -229,6 +204,8 @@ def instrument(service_name: str = "plato-agent") -> Tracer:
229
204
  Reads the following env vars:
230
205
  - OTEL_EXPORTER_OTLP_ENDPOINT: Chronos OTLP endpoint (required for tracing)
231
206
  - SESSION_ID: Chronos session ID (default: "local")
207
+ - OTEL_TRACE_ID: Parent trace ID for linking spans (optional)
208
+ - OTEL_PARENT_SPAN_ID: Parent span ID for linking spans (optional)
232
209
 
233
210
  If OTEL_EXPORTER_OTLP_ENDPOINT is not set, returns a no-op tracer.
234
211
 
@@ -242,17 +219,20 @@ def instrument(service_name: str = "plato-agent") -> Tracer:
242
219
 
243
220
  otel_endpoint = os.environ.get("OTEL_EXPORTER_OTLP_ENDPOINT")
244
221
  session_id = os.environ.get("SESSION_ID", "local")
222
+ parent_trace_id = os.environ.get("OTEL_TRACE_ID")
223
+ parent_span_id = os.environ.get("OTEL_PARENT_SPAN_ID")
245
224
 
246
225
  if not otel_endpoint:
247
226
  # Return default tracer (no-op if no provider configured)
248
227
  return trace.get_tracer(service_name)
249
228
 
250
- # Initialize tracing
229
+ # Initialize tracing with parent context if provided
251
230
  init_tracing(
252
231
  service_name=service_name,
253
232
  session_id=session_id,
254
233
  otlp_endpoint=otel_endpoint,
255
- capture_logging=True,
234
+ parent_trace_id=parent_trace_id,
235
+ parent_span_id=parent_span_id,
256
236
  )
257
237
 
258
238
  return trace.get_tracer(service_name)
@@ -0,0 +1,183 @@
1
+ """Agent runner - run agents in Docker containers.
2
+
3
+ Agents emit their own OTel spans for trajectory events. This runner:
4
+ 1. Runs agents in Docker containers
5
+ 2. Streams stdout/stderr for logging
6
+ 3. Passes OTel environment variables for trace context propagation
7
+ 4. Uploads artifacts to S3 when complete
8
+ """
9
+
10
+ from __future__ import annotations
11
+
12
+ import asyncio
13
+ import json
14
+ import logging
15
+ import os
16
+ import platform
17
+ import tempfile
18
+
19
+ from opentelemetry import trace
20
+
21
+ from plato.agents.artifacts import upload_artifacts
22
+
23
+ logger = logging.getLogger(__name__)
24
+
25
+
26
+ async def run_agent(
27
+ image: str,
28
+ config: dict,
29
+ secrets: dict[str, str],
30
+ instruction: str,
31
+ workspace: str,
32
+ logs_dir: str | None = None,
33
+ pull: bool = True,
34
+ ) -> None:
35
+ """Run an agent in a Docker container.
36
+
37
+ Args:
38
+ image: Docker image URI
39
+ config: Agent configuration dict
40
+ secrets: Secret values (API keys, etc.)
41
+ instruction: Task instruction for the agent
42
+ workspace: Host directory to mount as /workspace
43
+ logs_dir: Host directory for logs (temp dir if None)
44
+ pull: Whether to pull the image first
45
+
46
+ Note: Agents handle their own OTel tracing. This runner only passes
47
+ the trace context (TRACEPARENT) so agent spans link to the parent step.
48
+ """
49
+ logs_dir = logs_dir or tempfile.mkdtemp(prefix="agent_logs_")
50
+
51
+ # Get session info from environment variables
52
+ session_id = os.environ.get("SESSION_ID")
53
+ otel_url = os.environ.get("OTEL_EXPORTER_OTLP_ENDPOINT")
54
+ upload_url = os.environ.get("UPLOAD_URL")
55
+
56
+ # Pull image if requested
57
+ if pull:
58
+ pull_proc = await asyncio.create_subprocess_exec(
59
+ "docker",
60
+ "pull",
61
+ image,
62
+ stdout=asyncio.subprocess.PIPE,
63
+ stderr=asyncio.subprocess.STDOUT,
64
+ )
65
+ await pull_proc.wait()
66
+
67
+ # Setup
68
+ os.makedirs(os.path.join(logs_dir, "agent"), exist_ok=True)
69
+ config_file = tempfile.NamedTemporaryFile(mode="w", suffix=".json", delete=False)
70
+ json.dump(config, config_file)
71
+ config_file.close()
72
+
73
+ try:
74
+ # Build docker command
75
+ docker_cmd = ["docker", "run", "--rm", "--privileged"]
76
+
77
+ # Determine if we need host networking
78
+ use_host_network = False
79
+ is_macos = platform.system() == "Darwin"
80
+
81
+ if not is_macos:
82
+ try:
83
+ proc = await asyncio.create_subprocess_exec(
84
+ "iptables",
85
+ "-L",
86
+ "-n",
87
+ stdout=asyncio.subprocess.DEVNULL,
88
+ stderr=asyncio.subprocess.DEVNULL,
89
+ )
90
+ await proc.wait()
91
+ has_iptables = proc.returncode == 0
92
+ except (FileNotFoundError, PermissionError):
93
+ has_iptables = False
94
+
95
+ use_host_network = not has_iptables
96
+
97
+ if use_host_network:
98
+ docker_cmd.extend(["--network=host", "--add-host=localhost:127.0.0.1"])
99
+
100
+ docker_cmd.extend(
101
+ [
102
+ "-v",
103
+ f"{workspace}:/workspace",
104
+ "-v",
105
+ f"{logs_dir}:/logs",
106
+ "-v",
107
+ f"{config_file.name}:/config.json:ro",
108
+ "-v",
109
+ "/var/run/docker.sock:/var/run/docker.sock",
110
+ "-w",
111
+ "/workspace",
112
+ ]
113
+ )
114
+
115
+ # Pass session info to agent
116
+ if otel_url:
117
+ traces_endpoint = f"{otel_url.rstrip('/')}/v1/traces"
118
+ docker_cmd.extend(["-e", f"OTEL_EXPORTER_OTLP_ENDPOINT={otel_url}"])
119
+ docker_cmd.extend(["-e", f"OTEL_EXPORTER_OTLP_TRACES_ENDPOINT={traces_endpoint}"])
120
+ docker_cmd.extend(["-e", "OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf"])
121
+ if session_id:
122
+ docker_cmd.extend(["-e", f"SESSION_ID={session_id}"])
123
+ if upload_url:
124
+ docker_cmd.extend(["-e", f"UPLOAD_URL={upload_url}"])
125
+
126
+ # Pass trace context to agent for parent linking
127
+ # Agent spans will be children of the current step span
128
+ current_span = trace.get_current_span()
129
+ span_context = current_span.get_span_context()
130
+ if span_context.is_valid:
131
+ trace_id = format(span_context.trace_id, "032x")
132
+ span_id = format(span_context.span_id, "016x")
133
+ # W3C Trace Context format for TRACEPARENT
134
+ traceparent = f"00-{trace_id}-{span_id}-01"
135
+ docker_cmd.extend(
136
+ [
137
+ "-e",
138
+ f"TRACEPARENT={traceparent}",
139
+ "-e",
140
+ f"OTEL_TRACE_ID={trace_id}",
141
+ "-e",
142
+ f"OTEL_PARENT_SPAN_ID={span_id}",
143
+ ]
144
+ )
145
+
146
+ for key, value in secrets.items():
147
+ docker_cmd.extend(["-e", f"{key.upper()}={value}"])
148
+
149
+ docker_cmd.append(image)
150
+
151
+ # Pass instruction via CLI arg
152
+ docker_cmd.extend(["--instruction", instruction])
153
+
154
+ # Run container - agents emit their own OTel spans
155
+ process = await asyncio.create_subprocess_exec(
156
+ *docker_cmd,
157
+ stdout=asyncio.subprocess.PIPE,
158
+ stderr=asyncio.subprocess.STDOUT,
159
+ )
160
+
161
+ # Capture output for error reporting
162
+ output_lines: list[str] = []
163
+ assert process.stdout is not None
164
+ while True:
165
+ line = await process.stdout.readline()
166
+ if not line:
167
+ break
168
+ decoded_line = line.decode().rstrip()
169
+ output_lines.append(decoded_line)
170
+
171
+ await process.wait()
172
+
173
+ exit_code = process.returncode or 0
174
+ if exit_code != 0:
175
+ error_context = "\n".join(output_lines[-50:]) if output_lines else "No output captured"
176
+ raise RuntimeError(f"Agent failed with exit code {exit_code}\n\nAgent output:\n{error_context}")
177
+
178
+ finally:
179
+ os.unlink(config_file.name)
180
+
181
+ # Upload artifacts if we have upload URL configured
182
+ if upload_url:
183
+ await upload_artifacts(upload_url, logs_dir)