plato-sdk-v2 2.2.4__tar.gz → 2.3.11__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 (543) hide show
  1. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/PKG-INFO +4 -1
  2. plato_sdk_v2-2.3.11/VERSION +1 -0
  3. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/docs/SIMULATOR_LIFECYCLE.md +1 -2
  4. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/docs/skills/SIM-CREATION-ARCHITECTURE.md +1 -9
  5. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/docs/skills/sim-debugger/SKILL.md +1 -15
  6. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/docs/skills/sim-sandbox-services/SKILL.md +0 -1
  7. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/agents/__init__.py +25 -13
  8. plato_sdk_v2-2.3.11/plato/agents/artifacts.py +108 -0
  9. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/agents/config.py +2 -7
  10. plato_sdk_v2-2.3.11/plato/agents/otel.py +248 -0
  11. plato_sdk_v2-2.3.11/plato/agents/runner.py +196 -0
  12. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/chronos/models/__init__.py +9 -1
  13. plato_sdk_v2-2.3.11/plato/v1/cli/chronos.py +219 -0
  14. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/v1/cli/main.py +2 -2
  15. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/v1/cli/pm.py +3 -3
  16. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/v1/cli/sandbox.py +200 -52
  17. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/v1/cli/ssh.py +28 -9
  18. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/v1/cli/utils.py +32 -12
  19. plato_sdk_v2-2.3.11/plato/v1/cli/verify.py +685 -0
  20. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/v2/async_/environment.py +31 -0
  21. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/v2/async_/session.py +33 -0
  22. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/v2/sync/environment.py +31 -0
  23. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/v2/sync/session.py +33 -0
  24. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/worlds/README.md +2 -1
  25. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/worlds/__init__.py +3 -1
  26. plato_sdk_v2-2.3.11/plato/worlds/base.py +766 -0
  27. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/worlds/config.py +42 -3
  28. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/worlds/runner.py +171 -52
  29. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/pyproject.toml +4 -0
  30. plato_sdk_v2-2.3.11/tests/integration/test_chronos_callback.py +182 -0
  31. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/uv.lock +1696 -1575
  32. plato_sdk_v2-2.2.4/.sandbox.yaml +0 -11
  33. plato_sdk_v2-2.2.4/VERSION +0 -1
  34. plato_sdk_v2-2.2.4/plato/agents/logging.py +0 -401
  35. plato_sdk_v2-2.2.4/plato/agents/runner.py +0 -161
  36. plato_sdk_v2-2.2.4/plato/chronos/api/callback/__init__.py +0 -11
  37. plato_sdk_v2-2.2.4/plato/chronos/api/callback/push_agent_logs.py +0 -61
  38. plato_sdk_v2-2.2.4/plato/chronos/api/callback/update_agent_status.py +0 -57
  39. plato_sdk_v2-2.2.4/plato/chronos/api/callback/upload_artifacts.py +0 -59
  40. plato_sdk_v2-2.2.4/plato/chronos/api/callback/upload_logs_zip.py +0 -57
  41. plato_sdk_v2-2.2.4/plato/chronos/api/callback/upload_trajectory.py +0 -57
  42. plato_sdk_v2-2.2.4/plato/v1/cli/sim.py +0 -11
  43. plato_sdk_v2-2.2.4/plato/v1/cli/verify.py +0 -1269
  44. plato_sdk_v2-2.2.4/plato/worlds/base.py +0 -436
  45. plato_sdk_v2-2.2.4/tests/integration/test_chronos_callback.py +0 -409
  46. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/.claude/agents/sim-creator.md +0 -0
  47. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/.gitignore +0 -0
  48. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/BUILDING_SIMS.md +0 -0
  49. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/README.md +0 -0
  50. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/ci/CLAUDE.md +0 -0
  51. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/ci/deploy.sh +0 -0
  52. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/ci/lint.sh +0 -0
  53. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/ci/setup.sh +0 -0
  54. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/ci/version-bump.sh +0 -0
  55. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/docs/AGENT_SPEC.md +0 -0
  56. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/docs/CLI.md +0 -0
  57. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/docs/GENERATING_SIM_SDKS.md +0 -0
  58. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/docs/SIM_CREATOR.md +0 -0
  59. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/docs/cli/agent.md +0 -0
  60. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/docs/cli/flows.md +0 -0
  61. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/docs/cli/pm.md +0 -0
  62. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/docs/cli/sandbox.md +0 -0
  63. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/docs/cli/sims.md +0 -0
  64. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/docs/cli/world.md +0 -0
  65. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/docs/sim-creation-pipeline.md +0 -0
  66. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/docs/skill-restructure-plan.md +0 -0
  67. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/docs/skills/sim-config/SKILL.md +0 -0
  68. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/docs/skills/sim-creator/SKILL.md +0 -0
  69. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/docs/skills/sim-flow-audit/SKILL.md +0 -0
  70. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/docs/skills/sim-flow-clear/SKILL.md +0 -0
  71. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/docs/skills/sim-flow-mutations/SKILL.md +0 -0
  72. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/docs/skills/sim-flow-run/SKILL.md +0 -0
  73. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/docs/skills/sim-research/SKILL.md +0 -0
  74. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/docs/skills/sim-review/SKILL.md +0 -0
  75. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/docs/skills/sim-sandbox-login/SKILL.md +0 -0
  76. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/docs/skills/sim-sandbox-start/SKILL.md +0 -0
  77. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/docs/skills/sim-sandbox-worker/SKILL.md +0 -0
  78. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/docs/skills/sim-snapshot/SKILL.md +0 -0
  79. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/docs/skills/sim-submit/SKILL.md +0 -0
  80. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/docs/skills/sim-validate/SKILL.md +0 -0
  81. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/docs/testcommit +0 -0
  82. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/docs/unit.sh +0 -0
  83. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/__init__.py +0 -0
  84. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/__init__.py +0 -0
  85. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/__init__.py +0 -0
  86. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/__init__.py +0 -0
  87. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/agent_artifacts/__init__.py +0 -0
  88. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/agent_artifacts/archive_agent_artifact.py +0 -0
  89. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/agent_artifacts/create_agent_artifact.py +0 -0
  90. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/agent_artifacts/get_agent_artifact_by_public_id.py +0 -0
  91. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/agent_artifacts/get_agent_artifacts.py +0 -0
  92. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/cluster/__init__.py +0 -0
  93. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/cluster/cleanup_stale_vms.py +0 -0
  94. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/cluster/get_dispatchers.py +0 -0
  95. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/cluster/get_nodes_status.py +0 -0
  96. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/cluster/get_snapshot_lineage.py +0 -0
  97. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/cluster/get_snapshots_status.py +0 -0
  98. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/cluster/pause_resume_dispatchers.py +0 -0
  99. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/cluster/prefetch_snapshot.py +0 -0
  100. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/env/__init__.py +0 -0
  101. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/env/backup.py +0 -0
  102. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/env/cleanup.py +0 -0
  103. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/env/close.py +0 -0
  104. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/env/close_async.py +0 -0
  105. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/env/create.py +0 -0
  106. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/env/create_batch.py +0 -0
  107. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/env/create_simulator.py +0 -0
  108. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/env/evaluate_session.py +0 -0
  109. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/env/generate_mutations.py +0 -0
  110. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/env/generate_mutations_single.py +0 -0
  111. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/env/get_active_session.py +0 -0
  112. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/env/get_app_sim_worker_info.py +0 -0
  113. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/env/get_cdp_url.py +0 -0
  114. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/env/get_flows.py +0 -0
  115. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/env/get_interface_worker_info.py +0 -0
  116. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/env/get_job_info.py +0 -0
  117. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/env/get_job_status.py +0 -0
  118. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/env/get_job_worker_info.py +0 -0
  119. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/env/get_proxy_url.py +0 -0
  120. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/env/get_public_url.py +0 -0
  121. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/env/get_simulator_by_name.py +0 -0
  122. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/env/get_simulators.py +0 -0
  123. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/env/get_state.py +0 -0
  124. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/env/get_worker_ready.py +0 -0
  125. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/env/log_state_mutation.py +0 -0
  126. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/env/rescore_simulator_sessions.py +0 -0
  127. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/env/reset.py +0 -0
  128. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/env/score.py +0 -0
  129. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/env/send_heartbeat.py +0 -0
  130. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/env/update_simulator.py +0 -0
  131. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/evals/__init__.py +0 -0
  132. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/evals/create_test_case_review.py +0 -0
  133. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/evals/evaluate_python.py +0 -0
  134. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/evals/get_all_test_case_reviews.py +0 -0
  135. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/evals/get_scores_by_user.py +0 -0
  136. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/evals/get_scoring.py +0 -0
  137. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/evals/get_test_case_review.py +0 -0
  138. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/evals/human_in_the_loop_scoring.py +0 -0
  139. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/evals/start_eval_from_git.py +0 -0
  140. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/gitea/__init__.py +0 -0
  141. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/gitea/create_gitea_repository.py +0 -0
  142. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/gitea/create_simulator_repository.py +0 -0
  143. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/gitea/delete_gitea_repository.py +0 -0
  144. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/gitea/get_accessible_simulators.py +0 -0
  145. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/gitea/get_gitea_credentials.py +0 -0
  146. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/gitea/get_gitea_repository.py +0 -0
  147. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/gitea/get_my_gitea_info.py +0 -0
  148. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/gitea/get_my_repositories.py +0 -0
  149. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/gitea/get_repository_branches.py +0 -0
  150. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/gitea/get_repository_contents.py +0 -0
  151. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/gitea/get_simulator_file_content.py +0 -0
  152. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/gitea/get_simulator_repository.py +0 -0
  153. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/gitea/get_simulator_repository_branches.py +0 -0
  154. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/gitea/get_simulator_repository_contents.py +0 -0
  155. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/jobs/__init__.py +0 -0
  156. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/jobs/get_job_by_id.py +0 -0
  157. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/jobs/get_jobs_by_group_id.py +0 -0
  158. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/jobs/get_keepalive_jobs.py +0 -0
  159. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/jobs/list_jobs.py +0 -0
  160. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/jobs/update_job_status.py +0 -0
  161. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/organization/__init__.py +0 -0
  162. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/organization/create_annotator_assignment.py +0 -0
  163. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/organization/create_org_api_key.py +0 -0
  164. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/organization/create_org_policy.py +0 -0
  165. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/organization/delete_org_api_key.py +0 -0
  166. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/organization/delete_org_policy.py +0 -0
  167. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/organization/get_annotator_assignments.py +0 -0
  168. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/organization/get_org_api_key_policies.py +0 -0
  169. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/organization/get_org_api_keys.py +0 -0
  170. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/organization/get_org_policies.py +0 -0
  171. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/organization/get_organization_concurrency_status.py +0 -0
  172. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/organization/get_organization_members.py +0 -0
  173. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/organization/update_annotator_assignment_stage.py +0 -0
  174. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/organization/update_organization_concurrency_limit.py +0 -0
  175. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/queue/__init__.py +0 -0
  176. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/queue/get_queue_status.py +0 -0
  177. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/queue/get_vm_detail.py +0 -0
  178. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/queue/get_vms.py +0 -0
  179. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/queue/get_workers.py +0 -0
  180. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/sandbox/__init__.py +0 -0
  181. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/sandbox/checkpoint_vm.py +0 -0
  182. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/sandbox/close_vm.py +0 -0
  183. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/sandbox/create_vm.py +0 -0
  184. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/sandbox/execute_ssh_command.py +0 -0
  185. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/sandbox/get_operation_events.py +0 -0
  186. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/sandbox/healthy_services.py +0 -0
  187. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/sandbox/healthy_worker.py +0 -0
  188. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/sandbox/save_vm_snapshot.py +0 -0
  189. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/sandbox/setup_root_access.py +0 -0
  190. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/sandbox/setup_sandbox.py +0 -0
  191. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/sandbox/start_worker.py +0 -0
  192. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/session/__init__.py +0 -0
  193. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/session/analyze_labels.py +0 -0
  194. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/session/archive_session.py +0 -0
  195. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/session/archive_session_logs_endpoint.py +0 -0
  196. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/session/create_from_labels.py +0 -0
  197. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/session/create_session_from_browser.py +0 -0
  198. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/session/create_session_from_env_recording.py +0 -0
  199. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/session/create_session_from_har.py +0 -0
  200. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/session/get_env_recording.py +0 -0
  201. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/session/get_grouped_replay_sessions.py +0 -0
  202. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/session/get_logs_status.py +0 -0
  203. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/session/get_network_requests.py +0 -0
  204. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/session/get_next_session_for_annotator.py +0 -0
  205. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/session/get_public_benchmark_sessions.py +0 -0
  206. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/session/get_replay_score_data.py +0 -0
  207. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/session/get_rrweb_actions.py +0 -0
  208. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/session/get_rrweb_events.py +0 -0
  209. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/session/get_screen_recording.py +0 -0
  210. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/session/get_session.py +0 -0
  211. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/session/get_session_replays.py +0 -0
  212. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/session/get_sessions.py +0 -0
  213. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/session/get_sessions_for_archival.py +0 -0
  214. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/session/get_ui_events.py +0 -0
  215. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/session/restore_session_logs.py +0 -0
  216. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/session/score_session_with_config.py +0 -0
  217. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/session/search_sessions_by_ids.py +0 -0
  218. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/session/set_session_output.py +0 -0
  219. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/session/update_session_public.py +0 -0
  220. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/session/update_session_testcase.py +0 -0
  221. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/simulator/__init__.py +0 -0
  222. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/simulator/add_simulator_review.py +0 -0
  223. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/simulator/batch_create_test_cases.py +0 -0
  224. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/simulator/batch_get_artifact_metadata.py +0 -0
  225. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/simulator/get_all_simulators_info.py +0 -0
  226. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/simulator/get_db_config.py +0 -0
  227. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/simulator/get_env_flows.py +0 -0
  228. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/simulator/get_plato_config.py +0 -0
  229. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/simulator/get_sessions_batch_by_job_groups.py +0 -0
  230. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/simulator/get_sessions_by_job_group.py +0 -0
  231. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/simulator/get_simulator_by_name.py +0 -0
  232. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/simulator/get_simulator_id.py +0 -0
  233. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/simulator/get_simulator_info.py +0 -0
  234. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/simulator/get_simulator_version_details.py +0 -0
  235. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/simulator/get_simulator_versions.py +0 -0
  236. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/simulator/get_start_path.py +0 -0
  237. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/simulator/get_version_by_tag.py +0 -0
  238. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/simulator/list_simulators.py +0 -0
  239. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/simulator/list_simulators_by_org.py +0 -0
  240. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/simulator/list_simulators_status.py +0 -0
  241. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/simulator/register.py +0 -0
  242. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/simulator/update_simulator.py +0 -0
  243. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/simulator/update_simulator_status.py +0 -0
  244. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/simulator/update_tag.py +0 -0
  245. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/testcases/__init__.py +0 -0
  246. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/testcases/archive_organization_test_case_assignments.py +0 -0
  247. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/testcases/archive_organization_testcase.py +0 -0
  248. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/testcases/archive_testcase.py +0 -0
  249. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/testcases/assign_testcase_to_organizations.py +0 -0
  250. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/testcases/auto_verify_testcase.py +0 -0
  251. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/testcases/bulk_archive_testcases.py +0 -0
  252. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/testcases/convert_text_to_structured_data.py +0 -0
  253. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/testcases/create_testcase.py +0 -0
  254. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/testcases/create_testcase_set.py +0 -0
  255. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/testcases/delete_testcase_set.py +0 -0
  256. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/testcases/filter_human_recorder_testcases.py +0 -0
  257. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/testcases/generate_outcome_schema.py +0 -0
  258. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/testcases/generate_prediction.py +0 -0
  259. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/testcases/generate_prediction_from_steps.py +0 -0
  260. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/testcases/generate_scoring_config_from_sessions.py +0 -0
  261. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/testcases/generate_state_mutations_config_route.py +0 -0
  262. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/testcases/get_human_recorder_tab_counts.py +0 -0
  263. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/testcases/get_human_recorder_testcases.py +0 -0
  264. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/testcases/get_merged_mutations.py +0 -0
  265. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/testcases/get_mutation_groups_for_testcase.py +0 -0
  266. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/testcases/get_next_testcase_for_scoring.py +0 -0
  267. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/testcases/get_organization_test_case_assignments.py +0 -0
  268. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/testcases/get_testcase.py +0 -0
  269. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/testcases/get_testcase_metadata_for_scoring.py +0 -0
  270. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/testcases/get_testcase_sets.py +0 -0
  271. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/testcases/get_testcases.py +0 -0
  272. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/testcases/get_testcases_in_set.py +0 -0
  273. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/testcases/mark_organization_test_case_completed.py +0 -0
  274. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/testcases/update_testcase.py +0 -0
  275. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v1/testcases/version_bump_testcase.py +0 -0
  276. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v2/__init__.py +0 -0
  277. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v2/agents/__init__.py +0 -0
  278. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v2/agents/get_agent_ecr_token.py +0 -0
  279. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v2/agents/get_agent_schema.py +0 -0
  280. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v2/agents/get_agent_versions.py +0 -0
  281. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v2/agents/import_agent.py +0 -0
  282. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v2/agents/list_docker_agents.py +0 -0
  283. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v2/agents/lookup_agent_version.py +0 -0
  284. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v2/agents/register_docker_agent.py +0 -0
  285. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v2/artifacts/__init__.py +0 -0
  286. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v2/artifacts/get_artifact.py +0 -0
  287. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v2/chronos/__init__.py +0 -0
  288. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v2/chronos/launch_job.py +0 -0
  289. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v2/chronos_packages/__init__.py +0 -0
  290. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v2/chronos_packages/get_package_versions.py +0 -0
  291. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v2/chronos_packages/list_chronos_packages.py +0 -0
  292. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v2/chronos_packages/lookup_package_version.py +0 -0
  293. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v2/chronos_packages/register_chronos_package.py +0 -0
  294. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v2/chronos_packages/upload_chronos_package.py +0 -0
  295. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v2/cluster/__init__.py +0 -0
  296. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v2/cluster/get_node_config.py +0 -0
  297. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v2/jobs/__init__.py +0 -0
  298. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v2/jobs/checkpoint.py +0 -0
  299. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v2/jobs/close.py +0 -0
  300. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v2/jobs/connect_routing_info.py +0 -0
  301. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v2/jobs/connect_url.py +0 -0
  302. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v2/jobs/disk_snapshot.py +0 -0
  303. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v2/jobs/execute.py +0 -0
  304. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v2/jobs/get_flows.py +0 -0
  305. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v2/jobs/get_plato_config.py +0 -0
  306. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v2/jobs/log_for_job.py +0 -0
  307. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v2/jobs/make.py +0 -0
  308. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v2/jobs/public_url.py +0 -0
  309. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v2/jobs/reset.py +0 -0
  310. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v2/jobs/set_date.py +0 -0
  311. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v2/jobs/setup_sandbox.py +0 -0
  312. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v2/jobs/snapshot.py +0 -0
  313. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v2/jobs/snapshot_store.py +0 -0
  314. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v2/jobs/state.py +0 -0
  315. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v2/jobs/wait_for_ready.py +0 -0
  316. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v2/pypi/__init__.py +0 -0
  317. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v2/pypi/download_package.py +0 -0
  318. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v2/pypi/get_package_schema.py +0 -0
  319. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v2/pypi/package_index.py +0 -0
  320. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v2/pypi/simple_index.py +0 -0
  321. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v2/pypi/upload_package.py +0 -0
  322. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v2/releases/__init__.py +0 -0
  323. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v2/releases/create.py +0 -0
  324. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v2/releases/deploy.py +0 -0
  325. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v2/releases/get.py +0 -0
  326. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v2/releases/handle_get_existing_public_ids.py +0 -0
  327. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v2/releases/handle_import.py +0 -0
  328. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v2/releases/list_releases.py +0 -0
  329. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v2/releases/prep_release_assigned_testcases.py +0 -0
  330. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v2/releases/update.py +0 -0
  331. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v2/sessions/__init__.py +0 -0
  332. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v2/sessions/checkpoint.py +0 -0
  333. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v2/sessions/close.py +0 -0
  334. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v2/sessions/disk_snapshot.py +0 -0
  335. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v2/sessions/evaluate.py +0 -0
  336. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v2/sessions/execute.py +0 -0
  337. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v2/sessions/get_connect_url.py +0 -0
  338. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v2/sessions/get_presigned_url.py +0 -0
  339. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v2/sessions/get_public_url.py +0 -0
  340. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v2/sessions/get_s3_content.py +0 -0
  341. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v2/sessions/get_session_details.py +0 -0
  342. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v2/sessions/get_session_documents.py +0 -0
  343. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v2/sessions/get_session_flows.py +0 -0
  344. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v2/sessions/get_session_logs.py +0 -0
  345. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v2/sessions/get_session_plato_config.py +0 -0
  346. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v2/sessions/heartbeat.py +0 -0
  347. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v2/sessions/list_jobs.py +0 -0
  348. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v2/sessions/list_sessions.py +0 -0
  349. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v2/sessions/log_job_mutation.py +0 -0
  350. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v2/sessions/make.py +0 -0
  351. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v2/sessions/reset.py +0 -0
  352. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v2/sessions/set_date.py +0 -0
  353. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v2/sessions/setup_sandbox.py +0 -0
  354. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v2/sessions/snapshot.py +0 -0
  355. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v2/sessions/snapshot_store.py +0 -0
  356. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v2/sessions/state.py +0 -0
  357. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v2/sessions/upload_session_documents.py +0 -0
  358. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v2/sessions/wait_for_ready.py +0 -0
  359. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v2/user/__init__.py +0 -0
  360. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/v2/user/get_current_user.py +0 -0
  361. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/version/__init__.py +0 -0
  362. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/api/version/check.py +0 -0
  363. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/client.py +0 -0
  364. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/errors.py +0 -0
  365. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/models/__init__.py +0 -0
  366. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_generated/py.typed +0 -0
  367. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_sims_generator/__init__.py +0 -0
  368. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_sims_generator/cli.py +0 -0
  369. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_sims_generator/instruction.py +0 -0
  370. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_sims_generator/parser.py +0 -0
  371. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_sims_generator/python.py +0 -0
  372. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_sims_generator/templates/instruction/helpers.py.jinja +0 -0
  373. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_sims_generator/templates/instruction/init.py.jinja +0 -0
  374. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_sims_generator/templates/python/api_init.py.jinja +0 -0
  375. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_sims_generator/templates/python/client.py.jinja +0 -0
  376. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_sims_generator/templates/python/endpoint.py.jinja +0 -0
  377. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_sims_generator/templates/python/errors.py.jinja +0 -0
  378. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_sims_generator/templates/python/package_init.py.jinja +0 -0
  379. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_sims_generator/templates/python/tag_init.py.jinja +0 -0
  380. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/_sims_generator/templates/python/version_init.py.jinja +0 -0
  381. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/agents/base.py +0 -0
  382. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/agents/build.py +0 -0
  383. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/agents/trajectory.py +0 -0
  384. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/chronos/__init__.py +0 -0
  385. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/chronos/api/__init__.py +0 -0
  386. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/chronos/api/agents/__init__.py +0 -0
  387. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/chronos/api/agents/create_agent.py +0 -0
  388. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/chronos/api/agents/delete_agent.py +0 -0
  389. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/chronos/api/agents/get_agent.py +0 -0
  390. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/chronos/api/agents/get_agent_schema.py +0 -0
  391. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/chronos/api/agents/get_agent_versions.py +0 -0
  392. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/chronos/api/agents/list_agents.py +0 -0
  393. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/chronos/api/agents/lookup_agent.py +0 -0
  394. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/chronos/api/auth/__init__.py +0 -0
  395. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/chronos/api/auth/debug_auth_api_auth_debug_get.py +0 -0
  396. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/chronos/api/auth/get_auth_status_api_auth_status_get.py +0 -0
  397. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/chronos/api/auth/get_current_user_route_api_auth_me_get.py +0 -0
  398. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/chronos/api/default/__init__.py +0 -0
  399. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/chronos/api/default/health.py +0 -0
  400. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/chronos/api/jobs/__init__.py +0 -0
  401. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/chronos/api/jobs/launch_job.py +0 -0
  402. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/chronos/api/registry/__init__.py +0 -0
  403. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/chronos/api/registry/get_agent_schema_api_registry_agents__agent_name__schema_get.py +0 -0
  404. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/chronos/api/registry/get_agent_versions_api_registry_agents__agent_name__versions_get.py +0 -0
  405. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/chronos/api/registry/get_world_schema_api_registry_worlds__package_name__schema_get.py +0 -0
  406. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/chronos/api/registry/get_world_versions_api_registry_worlds__package_name__versions_get.py +0 -0
  407. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/chronos/api/registry/list_registry_agents_api_registry_agents_get.py +0 -0
  408. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/chronos/api/registry/list_registry_worlds_api_registry_worlds_get.py +0 -0
  409. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/chronos/api/runtimes/__init__.py +0 -0
  410. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/chronos/api/runtimes/create_runtime.py +0 -0
  411. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/chronos/api/runtimes/delete_runtime.py +0 -0
  412. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/chronos/api/runtimes/get_runtime.py +0 -0
  413. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/chronos/api/runtimes/list_runtimes.py +0 -0
  414. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/chronos/api/runtimes/test_runtime.py +0 -0
  415. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/chronos/api/secrets/__init__.py +0 -0
  416. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/chronos/api/secrets/create_secret.py +0 -0
  417. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/chronos/api/secrets/delete_secret.py +0 -0
  418. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/chronos/api/secrets/get_secret.py +0 -0
  419. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/chronos/api/secrets/list_secrets.py +0 -0
  420. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/chronos/api/secrets/update_secret.py +0 -0
  421. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/chronos/api/sessions/__init__.py +0 -0
  422. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/chronos/api/sessions/get_session.py +0 -0
  423. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/chronos/api/sessions/get_session_logs.py +0 -0
  424. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/chronos/api/sessions/get_session_logs_download.py +0 -0
  425. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/chronos/api/sessions/list_sessions.py +0 -0
  426. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/chronos/api/status/__init__.py +0 -0
  427. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/chronos/api/status/get_status_api_status_get.py +0 -0
  428. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/chronos/api/status/get_version_info_api_version_get.py +0 -0
  429. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/chronos/api/templates/__init__.py +0 -0
  430. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/chronos/api/templates/create_template.py +0 -0
  431. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/chronos/api/templates/delete_template.py +0 -0
  432. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/chronos/api/templates/get_template.py +0 -0
  433. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/chronos/api/templates/list_templates.py +0 -0
  434. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/chronos/api/templates/update_template.py +0 -0
  435. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/chronos/api/trajectories/__init__.py +0 -0
  436. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/chronos/api/trajectories/get_trajectory.py +0 -0
  437. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/chronos/api/trajectories/list_trajectories.py +0 -0
  438. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/chronos/api/worlds/__init__.py +0 -0
  439. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/chronos/api/worlds/create_world.py +0 -0
  440. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/chronos/api/worlds/delete_world.py +0 -0
  441. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/chronos/api/worlds/get_world.py +0 -0
  442. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/chronos/api/worlds/list_worlds.py +0 -0
  443. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/chronos/client.py +0 -0
  444. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/chronos/errors.py +0 -0
  445. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/chronos/py.typed +0 -0
  446. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/py.typed +0 -0
  447. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/sims/README.md +0 -0
  448. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/sims/__init__.py +0 -0
  449. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/sims/agent_helpers.py +0 -0
  450. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/sims/cli.py +0 -0
  451. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/sims/generate_clients.py +0 -0
  452. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/sims/registry.py +0 -0
  453. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/v1/__init__.py +0 -0
  454. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/v1/audit_ui.py +0 -0
  455. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/v1/cli/__init__.py +0 -0
  456. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/v1/cli/agent.py +0 -0
  457. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/v1/cli/world.py +0 -0
  458. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/v1/cli.py +0 -0
  459. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/v1/config.py +0 -0
  460. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/v1/examples/doordash_tasks.py +0 -0
  461. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/v1/examples/loadtest.py +0 -0
  462. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/v1/examples/test_env.py +0 -0
  463. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/v1/examples/test_env_custom_browser.py +0 -0
  464. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/v1/examples/test_env_sync.py +0 -0
  465. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/v1/examples/test_reuse_env.py +0 -0
  466. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/v1/examples/test_run.py +0 -0
  467. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/v1/exceptions.py +0 -0
  468. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/v1/extensions/envgen-recorder/README.md +0 -0
  469. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/v1/extensions/envgen-recorder/api-client.js +0 -0
  470. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/v1/extensions/envgen-recorder/background.js +0 -0
  471. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/v1/extensions/envgen-recorder/build-sdk.js +0 -0
  472. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/v1/extensions/envgen-recorder/content.js +0 -0
  473. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/v1/extensions/envgen-recorder/manifest.json +0 -0
  474. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/v1/extensions/envgen-recorder/offscreen.html +0 -0
  475. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/v1/extensions/envgen-recorder/offscreen.js +0 -0
  476. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/v1/extensions/envgen-recorder/options.html +0 -0
  477. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/v1/extensions/envgen-recorder/options.js +0 -0
  478. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/v1/extensions/envgen-recorder/package-lock.json +0 -0
  479. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/v1/extensions/envgen-recorder/package.json +0 -0
  480. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/v1/extensions/envgen-recorder/plato-sdk-bundle.js +0 -0
  481. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/v1/extensions/envgen-recorder/plato-sdk-bundle.js.map +0 -0
  482. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/v1/extensions/envgen-recorder/popup.html +0 -0
  483. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/v1/extensions/envgen-recorder/popup.js +0 -0
  484. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/v1/extensions/envgen-recorder/review-panel.html +0 -0
  485. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/v1/extensions/envgen-recorder/review-panel.js +0 -0
  486. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/v1/extensions/envgen-recorder/review-success.html +0 -0
  487. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/v1/extensions/envgen-recorder/review-success.js +0 -0
  488. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/v1/extensions/envgen-recorder/session-active.html +0 -0
  489. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/v1/extensions/envgen-recorder/session-active.js +0 -0
  490. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/v1/extensions/envgen-recorder/session-ended.html +0 -0
  491. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/v1/extensions/envgen-recorder/session-ended.js +0 -0
  492. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/v1/extensions/envgen-recorder/session-setup.html +0 -0
  493. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/v1/extensions/envgen-recorder/session-setup.js +0 -0
  494. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/v1/extensions/envgen-recorder/sessions.html +0 -0
  495. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/v1/extensions/envgen-recorder/sessions.js +0 -0
  496. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/v1/extensions/envgen-recorder/styles.css +0 -0
  497. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/v1/flow_executor.py +0 -0
  498. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/v1/models/__init__.py +0 -0
  499. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/v1/models/build_models.py +0 -0
  500. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/v1/models/env.py +0 -0
  501. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/v1/models/flow.py +0 -0
  502. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/v1/models/sandbox.py +0 -0
  503. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/v1/models/task.py +0 -0
  504. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/v1/sandbox_sdk.py +0 -0
  505. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/v1/sdk.py +0 -0
  506. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/v1/sync_env.py +0 -0
  507. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/v1/sync_flow_executor.py +0 -0
  508. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/v1/sync_sdk.py +0 -0
  509. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/v1/utils/proxytunnel.py +0 -0
  510. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/v2/__init__.py +0 -0
  511. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/v2/async_/__init__.py +0 -0
  512. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/v2/async_/artifact.py +0 -0
  513. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/v2/async_/client.py +0 -0
  514. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/v2/async_/flow_executor.py +0 -0
  515. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/v2/models.py +0 -0
  516. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/v2/sync/__init__.py +0 -0
  517. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/v2/sync/artifact.py +0 -0
  518. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/v2/sync/client.py +0 -0
  519. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/v2/sync/flow_executor.py +0 -0
  520. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/v2/types.py +0 -0
  521. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/v2/utils/__init__.py +0 -0
  522. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/v2/utils/db_cleanup.py +0 -0
  523. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/v2/utils/models.py +0 -0
  524. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/v2/utils/proxy_tunnel.py +0 -0
  525. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/plato/worlds/build_hook.py +0 -0
  526. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/scripts/get_all_artifact_targets.py +0 -0
  527. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/tests/__init__.py +0 -0
  528. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/tests/integration/__init__.py +0 -0
  529. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/tests/integration/conftest.py +0 -0
  530. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/tests/integration/test_browser_agent.py +0 -0
  531. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/tests/integration/test_cleanup_snapshot.py +0 -0
  532. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/tests/integration/test_code_world.py +0 -0
  533. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/tests/integration/test_harbor_agent_runner.py +0 -0
  534. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/tests/sims/__init__.py +0 -0
  535. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/tests/sims/conftest.py +0 -0
  536. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/tests/sims/test_agent_helpers.py +0 -0
  537. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/tests/test_heartbeat_keepalive.py +0 -0
  538. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/tests/test_session_serialization.py +0 -0
  539. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/tests/test_set_date.py +0 -0
  540. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/tests/test_v2_imports.py +0 -0
  541. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/tests/test_v2_multisim_integration.py +0 -0
  542. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/tests/test_v2_session.py +0 -0
  543. {plato_sdk_v2-2.2.4 → plato_sdk_v2-2.3.11}/tests/test_version.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: plato-sdk-v2
3
- Version: 2.2.4
3
+ Version: 2.3.11
4
4
  Summary: Python SDK for the Plato API
5
5
  Author-email: Plato <support@plato.so>
6
6
  License-Expression: MIT
@@ -21,6 +21,9 @@ Requires-Dist: google-genai>=1.0.0
21
21
  Requires-Dist: httpx>=0.25.0
22
22
  Requires-Dist: jinja2>=3.1.0
23
23
  Requires-Dist: openapi-pydantic>=0.5.1
24
+ Requires-Dist: opentelemetry-api>=1.20.0
25
+ Requires-Dist: opentelemetry-exporter-otlp-proto-http>=1.20.0
26
+ Requires-Dist: opentelemetry-sdk>=1.20.0
24
27
  Requires-Dist: pydantic-settings>=2.12.0
25
28
  Requires-Dist: pydantic>=2.0.0
26
29
  Requires-Dist: python-dotenv>=1.2.1
@@ -0,0 +1 @@
1
+ 2.3.11
@@ -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
- DOCKER_HOST=unix:///var/run/docker-user.sock docker compose up -d
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
- # Default socket - ONLY has plato-worker
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. IMPORTANT: Use the correct Docker socket
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
@@ -93,7 +93,6 @@ Proceed to: **sim-sandbox-login**
93
93
  ```bash
94
94
  # SSH into sandbox and check logs
95
95
  ssh -F {ssh_config} {ssh_host}
96
- export DOCKER_HOST=unix:///var/run/docker-user.sock
97
96
  docker compose logs -f
98
97
  ```
99
98
 
@@ -20,8 +20,9 @@ Trajectory (ATIF):
20
20
  - Trajectory: ATIF trajectory model
21
21
  - Step, Agent, ToolCall, etc.: ATIF components
22
22
 
23
- Callback:
24
- - ChronosCallback: Utility for Chronos communication
23
+ OTel Tracing:
24
+ - instrument: Initialize OTel tracing from environment
25
+ - get_tracer: Get a tracer for creating spans
25
26
 
26
27
  Example (direct execution):
27
28
  from plato.agents import BaseAgent, AgentConfig, Secret, register_agent
@@ -80,14 +81,25 @@ __all__ = [
80
81
  "Metrics",
81
82
  "FinalMetrics",
82
83
  "SCHEMA_VERSION",
83
- # Logging
84
- "init_logging",
85
- "span",
86
- "log_event",
84
+ # Artifacts
85
+ "zip_directory",
87
86
  "upload_artifacts",
88
- "reset_logging",
87
+ "upload_artifact",
88
+ "upload_to_s3",
89
+ # OTel tracing
90
+ "init_tracing",
91
+ "instrument",
92
+ "shutdown_tracing",
93
+ "get_tracer",
94
+ "is_initialized",
89
95
  ]
90
96
 
97
+ from plato.agents.artifacts import (
98
+ upload_artifact,
99
+ upload_artifacts,
100
+ upload_to_s3,
101
+ zip_directory,
102
+ )
91
103
  from plato.agents.base import (
92
104
  BaseAgent,
93
105
  ConfigT,
@@ -97,12 +109,12 @@ from plato.agents.base import (
97
109
  )
98
110
  from plato.agents.build import BuildConfig, load_build_config
99
111
  from plato.agents.config import AgentConfig, Secret
100
- from plato.agents.logging import (
101
- init_logging,
102
- log_event,
103
- reset_logging,
104
- span,
105
- upload_artifacts,
112
+ from plato.agents.otel import (
113
+ get_tracer,
114
+ init_tracing,
115
+ instrument,
116
+ is_initialized,
117
+ shutdown_tracing,
106
118
  )
107
119
  from plato.agents.runner import run_agent
108
120
  from plato.agents.trajectory import (
@@ -0,0 +1,108 @@
1
+ """Artifact upload utilities for Plato agents and worlds.
2
+
3
+ These functions upload artifacts directly to S3 using presigned URLs.
4
+ """
5
+
6
+ from __future__ import annotations
7
+
8
+ import io
9
+ import logging
10
+ import zipfile
11
+ from pathlib import Path
12
+
13
+ import httpx
14
+
15
+ logger = logging.getLogger(__name__)
16
+
17
+
18
+ def zip_directory(dir_path: str) -> bytes:
19
+ """Zip an entire directory.
20
+
21
+ Args:
22
+ dir_path: Path to the directory
23
+
24
+ Returns:
25
+ Zip file contents as bytes.
26
+ """
27
+ path = Path(dir_path)
28
+ buffer = io.BytesIO()
29
+
30
+ with zipfile.ZipFile(buffer, "w", zipfile.ZIP_DEFLATED) as zf:
31
+ for file_path in path.rglob("*"):
32
+ if file_path.is_file():
33
+ arcname = file_path.relative_to(path)
34
+ zf.write(file_path, arcname)
35
+
36
+ buffer.seek(0)
37
+ return buffer.read()
38
+
39
+
40
+ async def upload_to_s3(upload_url: str, data: bytes, content_type: str = "application/octet-stream") -> bool:
41
+ """Upload data directly to S3 using a presigned URL.
42
+
43
+ Args:
44
+ upload_url: Presigned S3 PUT URL
45
+ data: Raw bytes to upload
46
+ content_type: MIME type of the content
47
+
48
+ Returns:
49
+ True if successful, False otherwise
50
+ """
51
+ if not upload_url:
52
+ logger.warning("No upload URL provided")
53
+ return False
54
+
55
+ try:
56
+ async with httpx.AsyncClient(timeout=120.0) as client:
57
+ response = await client.put(
58
+ upload_url,
59
+ content=data,
60
+ headers={"Content-Type": content_type},
61
+ )
62
+ if response.status_code in (200, 201, 204):
63
+ logger.info(f"Uploaded {len(data)} bytes to S3")
64
+ return True
65
+ else:
66
+ logger.warning(f"S3 upload failed: {response.status_code} {response.text}")
67
+ return False
68
+ except Exception as e:
69
+ logger.warning(f"Failed to upload to S3: {e}")
70
+ return False
71
+
72
+
73
+ async def upload_artifacts(upload_url: str, dir_path: str) -> bool:
74
+ """Upload a directory as a zip directly to S3.
75
+
76
+ Args:
77
+ upload_url: Presigned S3 PUT URL
78
+ dir_path: Path to the directory to upload
79
+
80
+ Returns:
81
+ True if successful, False otherwise
82
+ """
83
+ try:
84
+ zip_data = zip_directory(dir_path)
85
+ logger.info(f"Zipped directory: {len(zip_data)} bytes")
86
+ except Exception as e:
87
+ logger.warning(f"Failed to zip directory: {e}")
88
+ return False
89
+
90
+ return await upload_to_s3(upload_url, zip_data, "application/zip")
91
+
92
+
93
+ async def upload_artifact(
94
+ upload_url: str,
95
+ data: bytes,
96
+ content_type: str = "application/octet-stream",
97
+ ) -> bool:
98
+ """Upload an artifact directly to S3.
99
+
100
+ Args:
101
+ upload_url: Presigned S3 PUT URL
102
+ data: Raw bytes of the artifact
103
+ content_type: MIME type of the content
104
+
105
+ Returns:
106
+ True if successful, False otherwise
107
+ """
108
+ return await upload_to_s3(upload_url, data, content_type)
@@ -21,7 +21,6 @@ import json
21
21
  from pathlib import Path
22
22
  from typing import Any
23
23
 
24
- from pydantic import Field
25
24
  from pydantic_settings import BaseSettings, SettingsConfigDict
26
25
 
27
26
 
@@ -57,8 +56,6 @@ class AgentConfig(BaseSettings):
57
56
 
58
57
  Attributes:
59
58
  logs_dir: Directory for agent logs and trajectory output.
60
- checkpoint_paths: Directories to watch for checkpoint triggers (for workspace tracking).
61
- checkpoint_debounce_ms: Debounce interval for checkpoints.
62
59
  """
63
60
 
64
61
  model_config = SettingsConfigDict(
@@ -68,8 +65,6 @@ class AgentConfig(BaseSettings):
68
65
  )
69
66
 
70
67
  logs_dir: str = "/logs"
71
- checkpoint_paths: list[str] = Field(default_factory=list)
72
- checkpoint_debounce_ms: int = 500
73
68
 
74
69
  @classmethod
75
70
  def get_field_secrets(cls) -> dict[str, Secret]:
@@ -97,7 +92,7 @@ class AgentConfig(BaseSettings):
97
92
  secrets = []
98
93
 
99
94
  # Skip internal fields
100
- internal_fields = {"logs_dir", "checkpoint_paths", "checkpoint_debounce_ms"}
95
+ internal_fields = {"logs_dir"}
101
96
 
102
97
  for field_name, prop_schema in properties.items():
103
98
  if field_name in internal_fields:
@@ -140,7 +135,7 @@ class AgentConfig(BaseSettings):
140
135
  def get_config_dict(self) -> dict[str, Any]:
141
136
  """Extract non-secret config values as a dict."""
142
137
  secrets_map = self.get_field_secrets()
143
- internal_fields = {"logs_dir", "checkpoint_paths", "checkpoint_debounce_ms"}
138
+ internal_fields = {"logs_dir"}
144
139
 
145
140
  result: dict[str, Any] = {}
146
141
  for field_name in self.model_fields:
@@ -0,0 +1,248 @@
1
+ """OpenTelemetry integration for Plato agents and worlds.
2
+
3
+ Provides tracing utilities using OpenTelemetry SDK. Traces are sent directly
4
+ to the Chronos OTLP endpoint.
5
+
6
+ Usage:
7
+ from plato.agents.otel import init_tracing, get_tracer, shutdown_tracing
8
+
9
+ # Initialize tracing (sends to Chronos OTLP endpoint)
10
+ init_tracing(
11
+ service_name="my-world",
12
+ session_id="session-123",
13
+ otlp_endpoint="http://chronos/api/otel",
14
+ )
15
+
16
+ # Create spans
17
+ tracer = get_tracer()
18
+ with tracer.start_as_current_span("my-operation") as span:
19
+ span.set_attribute("key", "value")
20
+ # ... do work ...
21
+
22
+ # Cleanup
23
+ shutdown_tracing()
24
+ """
25
+
26
+ from __future__ import annotations
27
+
28
+ import logging
29
+
30
+ from opentelemetry import trace
31
+ from opentelemetry.trace import Tracer
32
+
33
+ _module_logger = logging.getLogger(__name__)
34
+
35
+ # Global state
36
+ _tracer_provider = None
37
+ _initialized = False
38
+ _log_handler = None
39
+
40
+
41
+ class OTelSpanLogHandler(logging.Handler):
42
+ """Logging handler that creates OTel spans for log messages.
43
+
44
+ Converts Python log records to OTel spans with log attributes.
45
+ """
46
+
47
+ def __init__(self, tracer: Tracer, level: int = logging.INFO):
48
+ super().__init__(level)
49
+ self.tracer = tracer
50
+
51
+ def emit(self, record: logging.LogRecord) -> None:
52
+ """Emit a log record as an OTel span."""
53
+ try:
54
+ # Debug: print that we're emitting a log span
55
+ print(f"[OTel] Emitting log span: {record.name} - {record.getMessage()[:100]}")
56
+ # Create a span for the log message
57
+ with self.tracer.start_as_current_span(f"log.{record.levelname.lower()}") as span:
58
+ span.set_attribute("log.level", record.levelname)
59
+ span.set_attribute("log.message", record.getMessage())
60
+ span.set_attribute("log.logger", record.name)
61
+ span.set_attribute("source", "world")
62
+ span.set_attribute("content", record.getMessage()[:1000])
63
+
64
+ if record.funcName:
65
+ span.set_attribute("log.function", record.funcName)
66
+ if record.lineno:
67
+ span.set_attribute("log.lineno", record.lineno)
68
+
69
+ # Mark errors
70
+ if record.levelno >= logging.ERROR:
71
+ span.set_attribute("error", True)
72
+
73
+ except Exception:
74
+ # Don't let logging errors crash the application
75
+ pass
76
+
77
+
78
+ def init_tracing(
79
+ service_name: str,
80
+ session_id: str,
81
+ otlp_endpoint: str,
82
+ parent_trace_id: str | None = None,
83
+ parent_span_id: str | None = None,
84
+ ) -> None:
85
+ """Initialize OpenTelemetry tracing.
86
+
87
+ Args:
88
+ service_name: Name of the service (e.g., world name or agent name)
89
+ session_id: Chronos session ID (added as resource attribute)
90
+ otlp_endpoint: Chronos OTLP endpoint (e.g., http://chronos/api/otel)
91
+ parent_trace_id: Optional parent trace ID for linking (hex string)
92
+ parent_span_id: Optional parent span ID for linking (hex string)
93
+ """
94
+ global _tracer_provider, _initialized, _log_handler
95
+
96
+ if _initialized:
97
+ _module_logger.debug("Tracing already initialized")
98
+ return
99
+
100
+ try:
101
+ from opentelemetry import context as context_api
102
+ from opentelemetry.exporter.otlp.proto.http.trace_exporter import (
103
+ OTLPSpanExporter,
104
+ )
105
+ from opentelemetry.sdk.resources import Resource
106
+ from opentelemetry.sdk.trace import TracerProvider
107
+ from opentelemetry.sdk.trace.export import SimpleSpanProcessor
108
+ from opentelemetry.trace import NonRecordingSpan, SpanContext, TraceFlags
109
+
110
+ # Create resource with session ID
111
+ resource = Resource.create(
112
+ {
113
+ "service.name": service_name,
114
+ "plato.session.id": session_id,
115
+ }
116
+ )
117
+
118
+ # Create tracer provider
119
+ _tracer_provider = TracerProvider(resource=resource)
120
+
121
+ # Add OTLP exporter pointing to Chronos (use SimpleSpanProcessor for immediate export)
122
+ otlp_exporter = OTLPSpanExporter(endpoint=f"{otlp_endpoint.rstrip('/')}/v1/traces")
123
+ _tracer_provider.add_span_processor(SimpleSpanProcessor(otlp_exporter))
124
+
125
+ # Set as global tracer provider
126
+ trace.set_tracer_provider(_tracer_provider)
127
+
128
+ # If parent context is provided, set it as the current context
129
+ # This allows new spans to automatically link to the parent
130
+ if parent_trace_id and parent_span_id:
131
+ parent_context = SpanContext(
132
+ trace_id=int(parent_trace_id, 16),
133
+ span_id=int(parent_span_id, 16),
134
+ is_remote=True,
135
+ trace_flags=TraceFlags(0x01), # Sampled
136
+ )
137
+ parent_span = NonRecordingSpan(parent_context)
138
+ ctx = trace.set_span_in_context(parent_span)
139
+ context_api.attach(ctx)
140
+ print(f"[OTel] Using parent context: trace_id={parent_trace_id}, span_id={parent_span_id}")
141
+
142
+ # Add OTel logging handler to capture logs from plato SDK
143
+ tracer = trace.get_tracer(service_name)
144
+ _log_handler = OTelSpanLogHandler(tracer, level=logging.INFO)
145
+
146
+ # Add handler to plato loggers (worlds and agents)
147
+ # Set level to INFO to ensure logs propagate from child loggers
148
+ plato_logger = logging.getLogger("plato")
149
+ plato_logger.setLevel(logging.INFO)
150
+ plato_logger.addHandler(_log_handler)
151
+ print(
152
+ f"[OTel] Added log handler to 'plato' logger (level={plato_logger.level}, handlers={len(plato_logger.handlers)})"
153
+ )
154
+
155
+ _initialized = True
156
+
157
+ print(f"[OTel] Tracing initialized: service={service_name}, session={session_id}, endpoint={otlp_endpoint}")
158
+
159
+ except ImportError as e:
160
+ print(f"[OTel] OpenTelemetry SDK not installed: {e}")
161
+ _module_logger.warning(f"OpenTelemetry SDK not installed: {e}")
162
+ except Exception as e:
163
+ print(f"[OTel] Failed to initialize tracing: {e}")
164
+ _module_logger.error(f"Failed to initialize tracing: {e}")
165
+
166
+
167
+ def shutdown_tracing() -> None:
168
+ """Shutdown the tracer provider and flush spans."""
169
+ global _tracer_provider, _initialized, _log_handler
170
+
171
+ # Remove log handler
172
+ if _log_handler:
173
+ try:
174
+ plato_logger = logging.getLogger("plato")
175
+ plato_logger.removeHandler(_log_handler)
176
+ except Exception:
177
+ pass
178
+ _log_handler = None
179
+
180
+ if _tracer_provider:
181
+ try:
182
+ _tracer_provider.shutdown()
183
+ _module_logger.info("OTel tracing shutdown complete")
184
+ except Exception as e:
185
+ _module_logger.warning(f"Error shutting down tracer: {e}")
186
+
187
+ _tracer_provider = None
188
+ _initialized = False
189
+
190
+
191
+ def get_tracer(name: str = "plato") -> Tracer:
192
+ """Get a tracer instance.
193
+
194
+ Args:
195
+ name: Tracer name (default: "plato")
196
+
197
+ Returns:
198
+ OpenTelemetry Tracer
199
+ """
200
+ return trace.get_tracer(name)
201
+
202
+
203
+ def is_initialized() -> bool:
204
+ """Check if OTel tracing is initialized."""
205
+ return _initialized
206
+
207
+
208
+ def instrument(service_name: str = "plato-agent") -> Tracer:
209
+ """Initialize OTel tracing from environment variables.
210
+
211
+ Reads the following env vars:
212
+ - OTEL_EXPORTER_OTLP_ENDPOINT: Chronos OTLP endpoint (required for tracing)
213
+ - SESSION_ID: Chronos session ID (default: "local")
214
+ - OTEL_TRACE_ID: Parent trace ID for linking spans (optional)
215
+ - OTEL_PARENT_SPAN_ID: Parent span ID for linking spans (optional)
216
+
217
+ If OTEL_EXPORTER_OTLP_ENDPOINT is not set, returns a no-op tracer.
218
+
219
+ Args:
220
+ service_name: Name of the service for traces
221
+
222
+ Returns:
223
+ OpenTelemetry Tracer
224
+ """
225
+ import os
226
+
227
+ otel_endpoint = os.environ.get("OTEL_EXPORTER_OTLP_ENDPOINT")
228
+ session_id = os.environ.get("SESSION_ID", "local")
229
+ parent_trace_id = os.environ.get("OTEL_TRACE_ID")
230
+ parent_span_id = os.environ.get("OTEL_PARENT_SPAN_ID")
231
+
232
+ print(f"[OTel] instrument() called: service={service_name}, endpoint={otel_endpoint}, session={session_id}")
233
+
234
+ if not otel_endpoint:
235
+ # Return default tracer (no-op if no provider configured)
236
+ print("[OTel] No OTEL_EXPORTER_OTLP_ENDPOINT set, returning no-op tracer")
237
+ return trace.get_tracer(service_name)
238
+
239
+ # Initialize tracing with parent context if provided
240
+ init_tracing(
241
+ service_name=service_name,
242
+ session_id=session_id,
243
+ otlp_endpoint=otel_endpoint,
244
+ parent_trace_id=parent_trace_id,
245
+ parent_span_id=parent_span_id,
246
+ )
247
+
248
+ return trace.get_tracer(service_name)