plato-sdk-v2 2.7.3__py3-none-any.whl → 2.7.5__py3-none-any.whl

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 (32) hide show
  1. plato/_generated/__init__.py +1 -1
  2. plato/_generated/api/v1/testcases/get_testcase_metadata_for_scoring.py +6 -6
  3. plato/_generated/api/v2/__init__.py +14 -2
  4. plato/_generated/api/v2/admin/__init__.py +3 -0
  5. plato/_generated/api/v2/admin/cache/__init__.py +11 -0
  6. plato/_generated/api/v2/admin/cache/clear_all.py +74 -0
  7. plato/_generated/api/v2/admin/cache/clear_single_cache.py +79 -0
  8. plato/_generated/api/v2/admin/cache/delete_key.py +84 -0
  9. plato/_generated/api/v2/admin/cache/get_stats.py +70 -0
  10. plato/_generated/api/v2/admin/cache/list_cache_names.py +67 -0
  11. plato/_generated/api/v2/sessions/__init__.py +3 -1
  12. plato/_generated/api/v2/sessions/add_job.py +97 -0
  13. plato/_generated/api/v2/sessions/connect_network.py +2 -17
  14. plato/_generated/models/__init__.py +208 -109
  15. plato/chronos/api/agents/get_agent_schema.py +5 -5
  16. plato/chronos/api/agents/get_agent_versions.py +5 -5
  17. plato/chronos/api/agents/list_agents.py +5 -5
  18. plato/chronos/api/registry/get_agent_schema_api_registry_agents__agent_name__schema_get.py +5 -5
  19. plato/chronos/api/registry/get_agent_versions_api_registry_agents__agent_name__versions_get.py +5 -5
  20. plato/chronos/api/registry/list_registry_agents_api_registry_agents_get.py +5 -5
  21. plato/chronos/api/sessions/__init__.py +2 -0
  22. plato/chronos/api/sessions/complete_session.py +4 -2
  23. plato/chronos/api/sessions/list_session_creators.py +57 -0
  24. plato/chronos/api/sessions/list_sessions.py +30 -2
  25. plato/chronos/models/__init__.py +39 -19
  26. plato/v1/cli/sandbox.py +0 -6
  27. plato/v2/async_/session.py +1 -20
  28. plato/v2/sync/session.py +1 -20
  29. {plato_sdk_v2-2.7.3.dist-info → plato_sdk_v2-2.7.5.dist-info}/METADATA +1 -1
  30. {plato_sdk_v2-2.7.3.dist-info → plato_sdk_v2-2.7.5.dist-info}/RECORD +32 -23
  31. {plato_sdk_v2-2.7.3.dist-info → plato_sdk_v2-2.7.5.dist-info}/WHEEL +0 -0
  32. {plato_sdk_v2-2.7.3.dist-info → plato_sdk_v2-2.7.5.dist-info}/entry_points.txt +0 -0
@@ -11,6 +11,7 @@ from . import (
11
11
  get_session_logs,
12
12
  get_session_logs_download,
13
13
  get_session_status,
14
+ list_session_creators,
14
15
  list_sessions,
15
16
  list_tags,
16
17
  update_session_tags,
@@ -20,6 +21,7 @@ __all__ = [
20
21
  "list_sessions",
21
22
  "create_session",
22
23
  "list_tags",
24
+ "list_session_creators",
23
25
  "get_session",
24
26
  "get_session_status",
25
27
  "update_session_tags",
@@ -39,7 +39,8 @@ def sync(
39
39
  """Mark a session as completed or failed.
40
40
 
41
41
  Called by the bootstrap script when the world runner finishes.
42
- Uses API key auth (no org check) since it's called from the VM."""
42
+ Uses API key auth (no org check) since it's called from the VM.
43
+ Also closes the Plato session to release VM resources."""
43
44
 
44
45
  request_args = _build_request_args(
45
46
  public_id=public_id,
@@ -61,7 +62,8 @@ async def asyncio(
61
62
  """Mark a session as completed or failed.
62
63
 
63
64
  Called by the bootstrap script when the world runner finishes.
64
- Uses API key auth (no org check) since it's called from the VM."""
65
+ Uses API key auth (no org check) since it's called from the VM.
66
+ Also closes the Plato session to release VM resources."""
65
67
 
66
68
  request_args = _build_request_args(
67
69
  public_id=public_id,
@@ -0,0 +1,57 @@
1
+ """List Session Creators"""
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing import Any
6
+
7
+ import httpx
8
+
9
+ from plato.chronos.errors import raise_for_status
10
+ from plato.chronos.models import CreatorsListResponse
11
+
12
+
13
+ def _build_request_args(
14
+ x_api_key: str | None = None,
15
+ ) -> dict[str, Any]:
16
+ """Build request arguments."""
17
+ url = "/api/sessions/creators"
18
+
19
+ headers: dict[str, str] = {}
20
+ if x_api_key is not None:
21
+ headers["X-API-Key"] = x_api_key
22
+
23
+ return {
24
+ "method": "GET",
25
+ "url": url,
26
+ "headers": headers,
27
+ }
28
+
29
+
30
+ def sync(
31
+ client: httpx.Client,
32
+ x_api_key: str | None = None,
33
+ ) -> CreatorsListResponse:
34
+ """List distinct users who have created sessions in this org."""
35
+
36
+ request_args = _build_request_args(
37
+ x_api_key=x_api_key,
38
+ )
39
+
40
+ response = client.request(**request_args)
41
+ raise_for_status(response)
42
+ return CreatorsListResponse.model_validate(response.json())
43
+
44
+
45
+ async def asyncio(
46
+ client: httpx.AsyncClient,
47
+ x_api_key: str | None = None,
48
+ ) -> CreatorsListResponse:
49
+ """List distinct users who have created sessions in this org."""
50
+
51
+ request_args = _build_request_args(
52
+ x_api_key=x_api_key,
53
+ )
54
+
55
+ response = await client.request(**request_args)
56
+ raise_for_status(response)
57
+ return CreatorsListResponse.model_validate(response.json())
@@ -12,6 +12,10 @@ from plato.chronos.models import SessionListResponse
12
12
 
13
13
  def _build_request_args(
14
14
  tag: str | None = None,
15
+ created_by: str | None = None,
16
+ limit: int | None = 50,
17
+ offset: int | None = None,
18
+ status: str | None = None,
15
19
  x_api_key: str | None = None,
16
20
  ) -> dict[str, Any]:
17
21
  """Build request arguments."""
@@ -20,6 +24,14 @@ def _build_request_args(
20
24
  params: dict[str, Any] = {}
21
25
  if tag is not None:
22
26
  params["tag"] = tag
27
+ if created_by is not None:
28
+ params["created_by"] = created_by
29
+ if limit is not None:
30
+ params["limit"] = limit
31
+ if offset is not None:
32
+ params["offset"] = offset
33
+ if status is not None:
34
+ params["status"] = status
23
35
 
24
36
  headers: dict[str, str] = {}
25
37
  if x_api_key is not None:
@@ -36,9 +48,13 @@ def _build_request_args(
36
48
  def sync(
37
49
  client: httpx.Client,
38
50
  tag: str | None = None,
51
+ created_by: str | None = None,
52
+ limit: int | None = 50,
53
+ offset: int | None = None,
54
+ status: str | None = None,
39
55
  x_api_key: str | None = None,
40
56
  ) -> SessionListResponse:
41
- """List all sessions for the org, optionally filtered by tag.
57
+ """List sessions for the org with pagination and filtering.
42
58
 
43
59
  Tag filtering uses ltree for hierarchical matching:
44
60
  - 'project' matches 'project', 'project.foo', 'project.foo.bar'
@@ -46,6 +62,10 @@ def sync(
46
62
 
47
63
  request_args = _build_request_args(
48
64
  tag=tag,
65
+ created_by=created_by,
66
+ limit=limit,
67
+ offset=offset,
68
+ status=status,
49
69
  x_api_key=x_api_key,
50
70
  )
51
71
 
@@ -57,9 +77,13 @@ def sync(
57
77
  async def asyncio(
58
78
  client: httpx.AsyncClient,
59
79
  tag: str | None = None,
80
+ created_by: str | None = None,
81
+ limit: int | None = 50,
82
+ offset: int | None = None,
83
+ status: str | None = None,
60
84
  x_api_key: str | None = None,
61
85
  ) -> SessionListResponse:
62
- """List all sessions for the org, optionally filtered by tag.
86
+ """List sessions for the org with pagination and filtering.
63
87
 
64
88
  Tag filtering uses ltree for hierarchical matching:
65
89
  - 'project' matches 'project', 'project.foo', 'project.foo.bar'
@@ -67,6 +91,10 @@ async def asyncio(
67
91
 
68
92
  request_args = _build_request_args(
69
93
  tag=tag,
94
+ created_by=created_by,
95
+ limit=limit,
96
+ offset=offset,
97
+ status=status,
70
98
  x_api_key=x_api_key,
71
99
  )
72
100
 
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
- # filename: tmpxmdo22xa.json
3
- # timestamp: 2026-01-23T22:08:21+00:00
2
+ # filename: tmp9iosw1i3.json
3
+ # timestamp: 2026-01-29T20:31:32+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -30,13 +30,6 @@ class AgentInfo(BaseModel):
30
30
  image_uri: Annotated[str, Field(title="Image Uri")]
31
31
 
32
32
 
33
- class AgentListResponse(BaseModel):
34
- model_config = ConfigDict(
35
- extra="allow",
36
- )
37
- agents: Annotated[list[AgentInfo], Field(title="Agents")]
38
-
39
-
40
33
  class AgentLookupResponse(BaseModel):
41
34
  model_config = ConfigDict(
42
35
  extra="allow",
@@ -68,8 +61,6 @@ class AgentSchemaResponse(BaseModel):
68
61
  name: Annotated[str, Field(title="Name")]
69
62
  version: Annotated[str, Field(title="Version")]
70
63
  config_schema: Annotated[dict[str, Any] | None, Field(title="Config Schema")] = None
71
- secrets_schema: Annotated[dict[str, Any] | None, Field(title="Secrets Schema")] = None
72
- template_variables: Annotated[dict[str, Any] | None, Field(title="Template Variables")] = None
73
64
 
74
65
 
75
66
  class AgentVersionInfo(BaseModel):
@@ -77,7 +68,7 @@ class AgentVersionInfo(BaseModel):
77
68
  extra="allow",
78
69
  )
79
70
  version: Annotated[str, Field(title="Version")]
80
- created_at: Annotated[str | None, Field(title="Created At")] = None
71
+ created_at: Annotated[AwareDatetime, Field(title="Created At")]
81
72
 
82
73
 
83
74
  class AgentVersionsResponse(BaseModel):
@@ -167,6 +158,10 @@ class CreateSessionRequest(BaseModel):
167
158
  """
168
159
  Plato session ID if already created
169
160
  """
161
+ tags: Annotated[list[str] | None, Field(title="Tags")] = None
162
+ """
163
+ Tags for the session
164
+ """
170
165
 
171
166
 
172
167
  class CreateSessionResponse(BaseModel):
@@ -406,6 +401,15 @@ class ServiceStatuses(BaseModel):
406
401
  plato: Annotated[str, Field(title="Plato")]
407
402
 
408
403
 
404
+ class SessionCreator(BaseModel):
405
+ model_config = ConfigDict(
406
+ extra="allow",
407
+ )
408
+ public_id: Annotated[str, Field(title="Public Id")]
409
+ name: Annotated[str | None, Field(title="Name")] = None
410
+ email: Annotated[str | None, Field(title="Email")] = None
411
+
412
+
409
413
  class SessionEnvsResponse(BaseModel):
410
414
  model_config = ConfigDict(
411
415
  extra="allow",
@@ -562,36 +566,38 @@ class WorldVersionsResponse(BaseModel):
562
566
  versions: Annotated[list[str], Field(title="Versions")]
563
567
 
564
568
 
565
- class ChronosModelsAgentAgentListResponse(BaseModel):
569
+ class ChronosApiRegistryAgentListResponse(BaseModel):
566
570
  model_config = ConfigDict(
567
571
  extra="allow",
568
572
  )
569
- agents: Annotated[list[AgentResponse], Field(title="Agents")]
573
+ agents: Annotated[list[AgentInfo], Field(title="Agents")]
570
574
 
571
575
 
572
- class ChronosModelsAgentAgentSchemaResponse(BaseModel):
576
+ class ChronosApiRegistryAgentSchemaResponse(BaseModel):
573
577
  model_config = ConfigDict(
574
578
  extra="allow",
575
579
  )
576
580
  name: Annotated[str, Field(title="Name")]
577
581
  version: Annotated[str, Field(title="Version")]
578
582
  config_schema: Annotated[dict[str, Any] | None, Field(title="Config Schema")] = None
583
+ secrets_schema: Annotated[dict[str, Any] | None, Field(title="Secrets Schema")] = None
584
+ template_variables: Annotated[dict[str, Any] | None, Field(title="Template Variables")] = None
579
585
 
580
586
 
581
- class ChronosModelsAgentAgentVersionInfo(BaseModel):
587
+ class ChronosApiRegistryAgentVersionInfo(BaseModel):
582
588
  model_config = ConfigDict(
583
589
  extra="allow",
584
590
  )
585
591
  version: Annotated[str, Field(title="Version")]
586
- created_at: Annotated[AwareDatetime, Field(title="Created At")]
592
+ created_at: Annotated[str | None, Field(title="Created At")] = None
587
593
 
588
594
 
589
- class ChronosModelsAgentAgentVersionsResponse(BaseModel):
595
+ class ChronosApiRegistryAgentVersionsResponse(BaseModel):
590
596
  model_config = ConfigDict(
591
597
  extra="allow",
592
598
  )
593
599
  name: Annotated[str, Field(title="Name")]
594
- versions: Annotated[list[ChronosModelsAgentAgentVersionInfo], Field(title="Versions")]
600
+ versions: Annotated[list[ChronosApiRegistryAgentVersionInfo], Field(title="Versions")]
595
601
 
596
602
 
597
603
  class ChronosModelsSessionWorldInfo(BaseModel):
@@ -604,6 +610,20 @@ class ChronosModelsSessionWorldInfo(BaseModel):
604
610
  config_schema: Annotated[dict[str, Any] | None, Field(title="Config Schema")] = None
605
611
 
606
612
 
613
+ class AgentListResponse(BaseModel):
614
+ model_config = ConfigDict(
615
+ extra="allow",
616
+ )
617
+ agents: Annotated[list[AgentResponse], Field(title="Agents")]
618
+
619
+
620
+ class CreatorsListResponse(BaseModel):
621
+ model_config = ConfigDict(
622
+ extra="allow",
623
+ )
624
+ creators: Annotated[list[SessionCreator], Field(title="Creators")]
625
+
626
+
607
627
  class EnvSecretListResponse(BaseModel):
608
628
  model_config = ConfigDict(
609
629
  extra="allow",
plato/v1/cli/sandbox.py CHANGED
@@ -59,7 +59,6 @@ from plato._generated.models import (
59
59
  AppSchemasBuildModelsSimConfigCompute,
60
60
  AppSchemasBuildModelsSimConfigDataset,
61
61
  AppSchemasBuildModelsSimConfigMetadata,
62
- ConnectNetworkRequest,
63
62
  CreateCheckpointRequest,
64
63
  ExecuteCommandRequest,
65
64
  Flow,
@@ -498,10 +497,6 @@ def sandbox_start(
498
497
  console.print(f" [cyan]Public URL:[/cyan] {display_url}")
499
498
  if ssh_private_key_path:
500
499
  console.print(" [cyan]SSH:[/cyan] plato sandbox ssh")
501
- # Warn if using host-only routing (no VM-to-VM mesh)
502
- if connect_network and hasattr(session, "network_host_only") and session.network_host_only:
503
- console.print("\n[yellow]Warning: WireGuard not available in VM - using host-only routing[/yellow]")
504
- console.print("[yellow] SSH from outside works, but VM-to-VM networking is disabled[/yellow]")
505
500
  console.print(f"\n[dim]State saved to {SANDBOX_FILE}[/dim]")
506
501
 
507
502
  except Exception as e:
@@ -732,7 +727,6 @@ def sandbox_connect_network(
732
727
  result = sessions_connect_network.sync(
733
728
  client=client,
734
729
  session_id=session_id,
735
- body=ConnectNetworkRequest(),
736
730
  x_api_key=api_key,
737
731
  )
738
732
 
@@ -45,7 +45,6 @@ from plato._generated.models import (
45
45
  AppApiV2SchemasSessionHeartbeatResponse,
46
46
  AppApiV2SchemasSessionSetupSandboxRequest,
47
47
  AppApiV2SchemasSessionSetupSandboxResponse,
48
- ConnectNetworkRequest,
49
48
  CreateDiskSnapshotRequest,
50
49
  CreateDiskSnapshotResponse,
51
50
  CreateSessionFromEnvs,
@@ -148,15 +147,6 @@ class Session:
148
147
  self._heartbeat_task: asyncio.Task | None = None
149
148
  self._heartbeat_interval = 30
150
149
  self._envs: list[Environment] | None = None
151
- self._network_host_only: bool = False # True if WireGuard not available (no VM-to-VM mesh)
152
-
153
- @property
154
- def network_host_only(self) -> bool:
155
- """True if network is using host-only routing (WireGuard not available in VM).
156
-
157
- When True, external SSH access works but VM-to-VM mesh networking does not.
158
- """
159
- return self._network_host_only
160
150
 
161
151
  @property
162
152
  def session_id(self) -> str:
@@ -762,18 +752,13 @@ class Session:
762
752
 
763
753
  return urls
764
754
 
765
- async def connect_network(self, host_only: bool = False) -> dict:
755
+ async def connect_network(self) -> dict:
766
756
  """Connect all VMs in this session to a WireGuard network.
767
757
 
768
758
  Creates a full mesh WireGuard network between all VMs in the session.
769
759
  Must be called after all environments are ready. This method is idempotent -
770
760
  calling it multiple times will not reconnect already-connected VMs.
771
761
 
772
- Args:
773
- host_only: If True, force WireGuard to run on the worker instead of
774
- inside the VM. Useful for VMs without WireGuard tools or
775
- for testing worker-side WireGuard.
776
-
777
762
  Returns:
778
763
  Dict with:
779
764
  - success: bool - True if all VMs connected successfully
@@ -790,13 +775,9 @@ class Session:
790
775
  result = await sessions_connect_network.asyncio(
791
776
  client=self._http,
792
777
  session_id=self.session_id,
793
- body=ConnectNetworkRequest(host_only=host_only),
794
778
  x_api_key=self._api_key,
795
779
  )
796
780
 
797
- # Track if any VMs are using host-only routing (no VM-to-VM mesh)
798
- self._network_host_only = result.get("host_only", False)
799
-
800
781
  return result
801
782
 
802
783
  async def cleanup_databases(self) -> SessionCleanupResult:
plato/v2/sync/session.py CHANGED
@@ -43,7 +43,6 @@ from plato._generated.models import (
43
43
  AppApiV2SchemasSessionHeartbeatResponse,
44
44
  AppApiV2SchemasSessionSetupSandboxRequest,
45
45
  AppApiV2SchemasSessionSetupSandboxResponse,
46
- ConnectNetworkRequest,
47
46
  CreateDiskSnapshotRequest,
48
47
  CreateDiskSnapshotResponse,
49
48
  CreateSessionFromEnvs,
@@ -127,15 +126,6 @@ class Session:
127
126
  self._heartbeat_stop = threading.Event()
128
127
  self._heartbeat_interval = 30
129
128
  self._envs: list[Environment] | None = None
130
- self._network_host_only: bool = False # True if WireGuard not available (no VM-to-VM mesh)
131
-
132
- @property
133
- def network_host_only(self) -> bool:
134
- """True if network is using host-only routing (WireGuard not available in VM).
135
-
136
- When True, external SSH access works but VM-to-VM mesh networking does not.
137
- """
138
- return self._network_host_only
139
129
 
140
130
  @property
141
131
  def session_id(self) -> str:
@@ -672,18 +662,13 @@ class Session:
672
662
  x_api_key=self._api_key,
673
663
  )
674
664
 
675
- def connect_network(self, host_only: bool = False) -> dict:
665
+ def connect_network(self) -> dict:
676
666
  """Connect all VMs in this session to a WireGuard network.
677
667
 
678
668
  Creates a full mesh WireGuard network between all VMs in the session.
679
669
  Must be called after all environments are ready. This method is idempotent -
680
670
  calling it multiple times will not reconnect already-connected VMs.
681
671
 
682
- Args:
683
- host_only: If True, force WireGuard to run on the worker instead of
684
- inside the VM. Useful for VMs without WireGuard tools or
685
- for testing worker-side WireGuard.
686
-
687
672
  Returns:
688
673
  Dict with:
689
674
  - success: bool - True if all VMs connected successfully
@@ -700,13 +685,9 @@ class Session:
700
685
  result = sessions_connect_network.sync(
701
686
  client=self._http,
702
687
  session_id=self.session_id,
703
- body=ConnectNetworkRequest(host_only=host_only),
704
688
  x_api_key=self._api_key,
705
689
  )
706
690
 
707
- # Track if any VMs are using host-only routing (no VM-to-VM mesh)
708
- self._network_host_only = result.get("host_only", False)
709
-
710
691
  return result
711
692
 
712
693
  def login(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: plato-sdk-v2
3
- Version: 2.7.3
3
+ Version: 2.7.5
4
4
  Summary: Python SDK for the Plato API
5
5
  Author-email: Plato <support@plato.so>
6
6
  License-Expression: MIT
@@ -1,6 +1,6 @@
1
1
  plato/__init__.py,sha256=a9E0KS1602GWHHStnf7wDEuvPCvh2GpPh0Sf8oKZx5Q,1795
2
2
  plato/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
- plato/_generated/__init__.py,sha256=ArsWKBXOUO2pG4Aw-LwyGEbT7Ho0xuFvEQtiQeT1FSw,738
3
+ plato/_generated/__init__.py,sha256=zXYgJRnbMsHl1DQEYcj-B1c4a6OLQ6wyHeBSDL2vds8,738
4
4
  plato/_generated/client.py,sha256=_oMKXyAShQVddCaIKnfB2zPkRsDlCwLp-N3RFoKq_v8,5489
5
5
  plato/_generated/errors.py,sha256=goTGrZ4rrujGZ-BoOonoyaGwdGDkGO6GyeubIkQVv9E,4197
6
6
  plato/_generated/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -188,14 +188,21 @@ plato/_generated/api/v1/testcases/get_mutation_groups_for_testcase.py,sha256=JHx
188
188
  plato/_generated/api/v1/testcases/get_next_testcase_for_scoring.py,sha256=4gF9MENkbO6YY8VfV-nq5wMTNtrr6OfdZ5jGGg_CxXk,2896
189
189
  plato/_generated/api/v1/testcases/get_organization_test_case_assignments.py,sha256=4sSsnvyPXddGguWs3GaPGmBsewENWrjsTW2lfAttVVU,2685
190
190
  plato/_generated/api/v1/testcases/get_testcase.py,sha256=EydIk-2zdS6XT9-btLWCE5i-N2lT7AlAe5amQQJNn-c,866
191
- plato/_generated/api/v1/testcases/get_testcase_metadata_for_scoring.py,sha256=pkrFamV66L_pDj6e7UDf0dDgqA1_Zf8Dz8Jki-ajLtI,1974
191
+ plato/_generated/api/v1/testcases/get_testcase_metadata_for_scoring.py,sha256=i4xUaUisTUKsKnaV8sv2B-H1lgyBd9vKxR1TpOtvbcw,1948
192
192
  plato/_generated/api/v1/testcases/get_testcase_sets.py,sha256=NSqnYWvj_G3ivnuuV797g85NGzHXi3z-UlvvRoFMwRM,1375
193
193
  plato/_generated/api/v1/testcases/get_testcases.py,sha256=AjsC2aw1VJOtGEe-Km36uVktdxR6IRahhbHCjeAUxcY,5756
194
194
  plato/_generated/api/v1/testcases/get_testcases_in_set.py,sha256=TJK2KHmGC5lNmBPoAXbZ6FktUael9v8Ecl4M8XAhceg,1501
195
195
  plato/_generated/api/v1/testcases/mark_organization_test_case_completed.py,sha256=bbtE5PWIA9X0EkyrSXE8YN0gp6x6sfno0rc02AK_-l0,1521
196
196
  plato/_generated/api/v1/testcases/update_testcase.py,sha256=-kTW31ioDzQvr2AmOv9gHL7jN6K9qhGyjnJfNHETwhA,1699
197
197
  plato/_generated/api/v1/testcases/version_bump_testcase.py,sha256=r3qz7DibOQTKmoG0CrPWX_WItgDyOoh5B2H4degsRcU,1719
198
- plato/_generated/api/v2/__init__.py,sha256=G_S71KQf7zyaDyhtoptxywAVH-2vYrqAw0qRMYzkV8I,327
198
+ plato/_generated/api/v2/__init__.py,sha256=3w2-N8-XYfIGeOq1hs6WWYVvDlGk8hSgbBtr4FsJAeY,501
199
+ plato/_generated/api/v2/admin/__init__.py,sha256=eCNSn0z66IkETwXlLDrUUhNewPAyXoXj5MSQu0DA_z8,40
200
+ plato/_generated/api/v2/admin/cache/__init__.py,sha256=J4n6hcl447_EGGwT4aNNqNt7BnkJgIPwykgBeWrBWSA,224
201
+ plato/_generated/api/v2/admin/cache/clear_all.py,sha256=ylnoqQpxJkiOgcAKn2N3e8bRaPCUx22ghmPDsMFGBo4,1883
202
+ plato/_generated/api/v2/admin/cache/clear_single_cache.py,sha256=uf5cRmvch5KyEKR92k4c5VnBUcXYGbFwGZgjI08wYDc,2059
203
+ plato/_generated/api/v2/admin/cache/delete_key.py,sha256=x8OcKTiwDdH8G3-XZHpJMNelwoMdW4bAXax67_Ufyh4,2181
204
+ plato/_generated/api/v2/admin/cache/get_stats.py,sha256=zFMp7qaS-IigblblwH6VJTHU3o4dGETtPg0GwrMUwtk,1779
205
+ plato/_generated/api/v2/admin/cache/list_cache_names.py,sha256=6_aX1GU9K7GWeIvl5KyYXv8tipr78n-movv1AAIgP3Q,1549
199
206
  plato/_generated/api/v2/agents/__init__.py,sha256=rPyICBqm0_7PzGQYry5Kl9UzeFsLrt4Nu6gjIkpu_EA,401
200
207
  plato/_generated/api/v2/agents/get_agent_ecr_token.py,sha256=bV36MuyEmgCoFaggPYWxyOuhydSV3Adcq7Z4nUHvrxs,2058
201
208
  plato/_generated/api/v2/agents/get_agent_schema.py,sha256=Ax1bKnq5rXvrfGi-lY5GG2GCr0l7nVD1HNUFmMjuh2s,2453
@@ -259,11 +266,12 @@ plato/_generated/api/v2/releases/handle_import.py,sha256=ByBl6tHDKMXD0Ic_C4jpokx
259
266
  plato/_generated/api/v2/releases/list_releases.py,sha256=ebNZc45ooGrKT-1lZ6mIjruTO8zwngz5G9edS6DB7lc,2149
260
267
  plato/_generated/api/v2/releases/prep_release_assigned_testcases.py,sha256=B171O7xqXZm1AEXGhSfPNobBsqQRINxX4gYBU-TTwEg,2668
261
268
  plato/_generated/api/v2/releases/update.py,sha256=aEz9dbnvRg5pAp1jkTZpwUjKxpOOn-xXktPeNVKpruI,1956
262
- plato/_generated/api/v2/sessions/__init__.py,sha256=zH6GgESh7WyjauJh1FVHCeTZXeLJJUxmSNkd3PTT570,1197
269
+ plato/_generated/api/v2/sessions/__init__.py,sha256=DIDigu6vbUeREZGAmAhctkjjtBoC9G3NBs-ukWpJd5o,1225
270
+ plato/_generated/api/v2/sessions/add_job.py,sha256=PqnYCPuOFkqJjaK5jg7O4v92La4In2pSiCI1A_OoJRQ,2792
263
271
  plato/_generated/api/v2/sessions/add_ssh_key.py,sha256=JDaw5B1hHodH43DUoZ7FrO1_ECWacjinia4-DbU0jGo,2198
264
272
  plato/_generated/api/v2/sessions/checkpoint.py,sha256=Kd8NSIeuC41cRB4Y3j_L0yNIU_WVRjkBIL72pRqoRTc,2933
265
273
  plato/_generated/api/v2/sessions/close.py,sha256=cPA4HhPULg9EEKdBcMjRJ64NUI474BcztHPCGk8W3Z0,1718
266
- plato/_generated/api/v2/sessions/connect_network.py,sha256=CorUkSBoDOgUelYmt2ohrDjXLksiDR5u0n1BKqVFHOY,2489
274
+ plato/_generated/api/v2/sessions/connect_network.py,sha256=Z3D5dh_A_Q-QJw_fvyrC8lHS889OMHYeObLcFsUTyX0,1901
267
275
  plato/_generated/api/v2/sessions/disk_snapshot.py,sha256=nHMXEPctQgiCqziXlvhw2FxgPKOC6VVvKEPXzVGWk5Y,2875
268
276
  plato/_generated/api/v2/sessions/evaluate.py,sha256=X1JU1m4MLbHXk_2kjQ_QezBol63o80zKIb0OlDaNkmI,2077
269
277
  plato/_generated/api/v2/sessions/execute.py,sha256=_jHXYeSsuYnOItZLdCeJ5Fxx5YNEAA7jWRcrXndA880,1979
@@ -293,7 +301,7 @@ plato/_generated/api/v2/user/__init__.py,sha256=yMh1Gn9VpKHQMQCmJdpeDPA9Ek9PBgP0
293
301
  plato/_generated/api/v2/user/get_current_user.py,sha256=tvamtbWTEkeeNUBLSPqZIcCGqKVadQM3DVcezsWP22U,1814
294
302
  plato/_generated/api/version/__init__.py,sha256=dQXTYrXjD1RZcvWwnlqXWAZ-eAV-V-6JSNuY7uaca7o,70
295
303
  plato/_generated/api/version/check.py,sha256=HTVNw0oi9gbvX4pOVoH4y4JywCxdl1pJTCk2PjJFwJ4,778
296
- plato/_generated/models/__init__.py,sha256=r3iq2AruILqV7k_okJt2JHBRYKKRByLsFOaKuJB91VQ,159482
304
+ plato/_generated/models/__init__.py,sha256=7Wma97R1YCb2Mnmi3lSu1M6nYN9xR8jZ8bRbfUHqUYs,162101
297
305
  plato/_sims_generator/__init__.py,sha256=Km4QOl9wxjQ5dgpdhk9QnBFJFFc9eq3rPbMWIQRjIn0,1602
298
306
  plato/_sims_generator/cli.py,sha256=mzolN-dxfMkVAdA-vC0esnai-cGg-i4ozOw8dACefV4,2709
299
307
  plato/_sims_generator/instruction.py,sha256=Na9M-jIdBPhp_fLuBPTicoFnWriRyi8YiZ-eQBj64HI,6644
@@ -331,9 +339,9 @@ plato/chronos/api/agents/__init__.py,sha256=IaeIt8ge51rKVkR0wQzW6m0xJE74hFPxeoth
331
339
  plato/chronos/api/agents/create_agent.py,sha256=G8LR1KlWOCfmZ71Sl0seo7aRYmG7_nokZKoIRV6ysnw,1418
332
340
  plato/chronos/api/agents/delete_agent.py,sha256=fuL8Ip8veUXpOhSYxX_74S0zM_kZsTX61KosiFyhRWo,1241
333
341
  plato/chronos/api/agents/get_agent.py,sha256=o61fxCyYpTe6-3SC2RAebp3kW8rgEOWSN_NCph_iMUc,1358
334
- plato/chronos/api/agents/get_agent_schema.py,sha256=t66UCalfuHExr3MmUcZdE_inGvfFerE8MC7iR14edsY,1769
335
- plato/chronos/api/agents/get_agent_versions.py,sha256=mVLFvOrAwoyR9Jnu4F26EhNv08zGbXywiohr6hojxMY,1496
336
- plato/chronos/api/agents/list_agents.py,sha256=OcycIUUc8yTGAhmpr2qhU2-2qIbvAtKko6l7cgmcKes,1343
342
+ plato/chronos/api/agents/get_agent_schema.py,sha256=O-N1h0vQJIXM2uonYCgXa_FFr54C4_n0Spu-MdRy2U0,1679
343
+ plato/chronos/api/agents/get_agent_versions.py,sha256=h8f_DQyX4OM0oDNA4iZ-Zm6j7iemNgRf7nuze_3bdXc,1406
344
+ plato/chronos/api/agents/list_agents.py,sha256=jtzD0wFmlHPDFqrChCLCG5m6LkLuxNlZk4EboRpcAYA,1253
337
345
  plato/chronos/api/agents/lookup_agent.py,sha256=DOGfrOK6Lh6ULMqRmf4zRQHlDXMhYenidx8wcZx4caY,1766
338
346
  plato/chronos/api/auth/__init__.py,sha256=6qao3xT8yw9-WTpUlv4tVtpWhL2EycQd3I2WKQ5p9Lk,284
339
347
  plato/chronos/api/auth/debug_auth_api_auth_debug_get.py,sha256=L1RWyQ1w7V8dyhOAU2VQlT9x0jkeng3eIvZDOv9Gl2w,881
@@ -353,11 +361,11 @@ plato/chronos/api/otel/__init__.py,sha256=w_DyYdNLj6xHi260C-HK9TJcZau0PJLOqey3qV
353
361
  plato/chronos/api/otel/get_session_traces_api_otel_sessions__session_id__traces_get.py,sha256=s7xGuLD-TEYsUx56icdoBNiACaCo4Pcm8QDSuc74vSA,1294
354
362
  plato/chronos/api/otel/receive_traces_api_otel_v1_traces_post.py,sha256=XvEe6XBB672qZ_d9IkD9dhxehK-H07yGxqKPaZG-EXA,1074
355
363
  plato/chronos/api/registry/__init__.py,sha256=gPN-3oENHUrwaiacYt1_jI7HQ6gGe9i-34-Smb-0KHg,819
356
- plato/chronos/api/registry/get_agent_schema_api_registry_agents__agent_name__schema_get.py,sha256=FOtVolBNmRuhgaCmL_d3cGvx81lVoz0WXQRP_-qArHM,1443
357
- plato/chronos/api/registry/get_agent_versions_api_registry_agents__agent_name__versions_get.py,sha256=TjYCZcIc6Bc0iS1E2MMPAK-yDUX_zijT8g7We7dNcQI,1176
364
+ plato/chronos/api/registry/get_agent_schema_api_registry_agents__agent_name__schema_get.py,sha256=gkM9RY6yO_I4A2152BkaBzGyjAmWg0mm25s-c8QixwY,1533
365
+ plato/chronos/api/registry/get_agent_versions_api_registry_agents__agent_name__versions_get.py,sha256=f1YtvnT9HMkPxP3hLpIRx1K0KidEV9WmUA_bhBXCtiY,1266
358
366
  plato/chronos/api/registry/get_world_schema_api_registry_worlds__package_name__schema_get.py,sha256=RM-1MDYaG8B9iRl93KBG4tVjWJAHA08X6lSwjzk8fkw,1697
359
367
  plato/chronos/api/registry/get_world_versions_api_registry_worlds__package_name__versions_get.py,sha256=07MKXi5-d8Qk8cKRdVW2AZoeeksX7OpTgFR9bkJni0Y,1206
360
- plato/chronos/api/registry/list_registry_agents_api_registry_agents_get.py,sha256=3rACHpvv2P7gooHcNH4sU82pCSPIWH0f17lmQyGdEyU,1031
368
+ plato/chronos/api/registry/list_registry_agents_api_registry_agents_get.py,sha256=gzRRPfHGzhczL1Xi274cg-oLwUzqdS2B7JkzhHNZKEw,1121
361
369
  plato/chronos/api/registry/list_registry_worlds_api_registry_worlds_get.py,sha256=g9KHZ2ZLJnhS5uCb55K7ez5plpfGL88o-pcdLMDgrRg,1010
362
370
  plato/chronos/api/runtimes/__init__.py,sha256=_887oqgAfMazmoU-tTbOQ4k-k6E0PW004bdFxTM117M,270
363
371
  plato/chronos/api/runtimes/create_runtime.py,sha256=D37d2nMqyTxT8r_9faPWI-E18pAVjLlh0hCgBf0L6wQ,1524
@@ -372,9 +380,9 @@ plato/chronos/api/secrets/delete_secret.py,sha256=LWzJ78lT9C5NNhlaq8JJ4HcKzCVoj5
372
380
  plato/chronos/api/secrets/get_secret.py,sha256=c4WzODFGHINAmdz8EWejECdlY9ezkWraUGWrwVuTPRA,1356
373
381
  plato/chronos/api/secrets/list_secrets.py,sha256=_FT1VNok1STthEbjjGWmyGxjkRDvvDD_awU3xkjC1ak,1301
374
382
  plato/chronos/api/secrets/update_secret.py,sha256=049iqznfUWpZVHVsw5y1c06KddX5Ou4keYiADyuLqjg,1550
375
- plato/chronos/api/sessions/__init__.py,sha256=hKnXWZFpuB6yTkgkBlN_BMp0cdDqsFWTPLeXIZxd1eY,679
383
+ plato/chronos/api/sessions/__init__.py,sha256=-5EzHNcBKQD1wniQBwlWSZ8JhxajdSkBsQOc5Nm_y2U,735
376
384
  plato/chronos/api/sessions/close_session.py,sha256=lGmWkSfh-9ul1nVzYSn0Ymck3ntm0UG0m4Jm0d1lU1A,1552
377
- plato/chronos/api/sessions/complete_session.py,sha256=F_iYyBAj_iin-492vHAVA0CCSz-lwtpmU0hPVBNc9Gw,1912
385
+ plato/chronos/api/sessions/complete_session.py,sha256=Vhiqnz_kd2Qu3DaVHZPSDzkZtKrRJWbIGaK9w0K5pcU,2030
378
386
  plato/chronos/api/sessions/create_session.py,sha256=p0PaUQLnWzhsekKUnQM5KiU8b68vldjR90Z8fn17gUo,1812
379
387
  plato/chronos/api/sessions/get_session.py,sha256=_7TR8g1oFyKPQc0n94BmFScXQDkmXvP5mWRW94jMvm8,1961
380
388
  plato/chronos/api/sessions/get_session_bash_logs_download.py,sha256=0WMxNC5XFVtMuCbIZxtEiUUQW9B4BihwSHkWUTD2YhU,1325
@@ -383,7 +391,8 @@ plato/chronos/api/sessions/get_session_live_logs.py,sha256=3H5MHwYBr5mzQxBNEx54U
383
391
  plato/chronos/api/sessions/get_session_logs.py,sha256=mH9EZ2dD22U4KPEMwCp6RRbJ8k-ZhmSOF9bx8XgWVMc,1662
384
392
  plato/chronos/api/sessions/get_session_logs_download.py,sha256=u1VKN9_ya5HviQvuj47Bjxb8TdTRrVjGZ-xhh34j5JE,1491
385
393
  plato/chronos/api/sessions/get_session_status.py,sha256=pka9CNYW1DwfB5xxo8ffbfJ3sDQBhxOnNL7-J0pCyVY,1476
386
- plato/chronos/api/sessions/list_sessions.py,sha256=xYZq1Iz0gi81vZbTyuLvxK0yoW0FAhRG9OG6g43AY60,1928
394
+ plato/chronos/api/sessions/list_session_creators.py,sha256=eHm3XvuKc2ebAENPk04nE66jkRb3TxeSQ3hWGLbhYrU,1349
395
+ plato/chronos/api/sessions/list_sessions.py,sha256=MNT8RTaQU8RoYVSEiNtjzMMeBmuwkK0VwePnHF_rRAk,2748
387
396
  plato/chronos/api/sessions/list_tags.py,sha256=zMIHZhCH5o0Mspz9Z9eX_dUEwBRsQs2rhlhQLGZUuCM,2002
388
397
  plato/chronos/api/sessions/update_session_tags.py,sha256=mJuhBoqK6bIvtGI2KAgEt_wq1s5Yv4WYu29m1JNjq_w,1596
389
398
  plato/chronos/api/status/__init__.py,sha256=LUmI3D_ynVMsnkWJI-6rm5ZuWjZypULrBKQDfh2uq-Y,184
@@ -403,7 +412,7 @@ plato/chronos/api/worlds/create_world.py,sha256=H6yl5QIazNXgryOR5rvscSIMf8Y9kjc6
403
412
  plato/chronos/api/worlds/delete_world.py,sha256=UETu3Zk0e2VkDdAyMilv1ev-0g_j-oujH1Dc8DBqQOc,1239
404
413
  plato/chronos/api/worlds/get_world.py,sha256=eHTM1U5JiNTaZwYLh7x4QVBoRQeI5kaJ9o6xSi4-nos,1356
405
414
  plato/chronos/api/worlds/list_worlds.py,sha256=hBAuGb69tlasyn-kV_LNr9x6Rr7SHhST5hXJn1uqMf8,1253
406
- plato/chronos/models/__init__.py,sha256=9eWjOOgT7WULPFpO_b_qCP-k_vMdest-Y2-JsBF7KS4,22646
415
+ plato/chronos/models/__init__.py,sha256=d_L57okr2l6WIqAD-VLFQ9njrbovP2CCdvsEV50jMn4,23198
407
416
  plato/sims/README.md,sha256=FIbJhNVNAV-SO6dq_cXX3Rg0C7HdQCfEY9YxGlkCmsM,6902
408
417
  plato/sims/__init__.py,sha256=tnoCGKZwNx6h22tEWLujdpLv6K4PpFU2RnDOhL1o-Uc,1494
409
418
  plato/sims/agent_helpers.py,sha256=kITvQywoTCS8mGhro3jZWuPJHDlje-UZujhjoahqhd0,10291
@@ -427,7 +436,7 @@ plato/v1/cli/chronos.py,sha256=lzFY0nomP1AY14i8oc8OvWOdq9ydCiE3dN2XrSupvA4,27827
427
436
  plato/v1/cli/main.py,sha256=Yqy1vn4sGyAWKNpDVcLl9pbzkMn89tYVBIxFU30ZtPk,6905
428
437
  plato/v1/cli/pm.py,sha256=Q6HFTb8ZO_aB0EtAO6-OOsnVv3SoC8hL7UHpawBz46Y,55520
429
438
  plato/v1/cli/proxy.py,sha256=WmCt0R9Gos1q0FZTQSsbloNC3-Cnx6Yb60RZF1BzC18,12178
430
- plato/v1/cli/sandbox.py,sha256=SQb5XCdYvTHEyZxOv9ECtafTdkxpjfq45pYd-m1z7k0,101506
439
+ plato/v1/cli/sandbox.py,sha256=3TkXBTdYNV45XvnG4F4QzETz908i3vuSswTVCaBY-WU,101035
431
440
  plato/v1/cli/ssh.py,sha256=9ypjn5kQuaTcVjsWMDIUDyehXRH9fauk_z-C3mXzYJ8,2381
432
441
  plato/v1/cli/utils.py,sha256=ba7Crv4OjDmgCv4SeB8UeZDin-iOdQw_3N6fd-g5XVk,4572
433
442
  plato/v1/cli/verify.py,sha256=D-hyiCBPL_G_9uTIEugUsq_B9y6mRVAUWILpfUx4YAo,22814
@@ -485,14 +494,14 @@ plato/v2/async_/chronos.py,sha256=WeqYF3HIKs7hV9LNZb2GlDS1yP6b422DZKtNuPxdL34,12
485
494
  plato/v2/async_/client.py,sha256=IhiEiwbLNPBr9JJilw4uz7MLKXY_rUZpYGYC1dX-UfA,5186
486
495
  plato/v2/async_/environment.py,sha256=M5IeWYLwREOIyuS2zqgBSqHE_x66_OZXrevA9Rkc8Is,5825
487
496
  plato/v2/async_/flow_executor.py,sha256=Tl4nRu1ZPWJFNNxyTGy-PxvebZEUD18ZDaz8T2chtzU,14188
488
- plato/v2/async_/session.py,sha256=sXNmHXU9MU9H4_eNd-pRfBjEZh96SOWREPJh5JpyB84,38775
497
+ plato/v2/async_/session.py,sha256=0zErrTEm9-xxIz6pzp_y2stzn498KXVle7n51HVhyhc,37910
489
498
  plato/v2/sync/__init__.py,sha256=6Hzc5k34WnHTUMPWrIefnL4P5YEoJMRLOmYDO7LxGg8,405
490
499
  plato/v2/sync/artifact.py,sha256=wTLC-tugG128wLvh-JqNPb0zsw5FXEJlZNahurSWink,1169
491
500
  plato/v2/sync/chronos.py,sha256=ChXpasjRzAZjoYTimpPqYydnwEk-IgdxR0SDXDOZbUM,12078
492
501
  plato/v2/sync/client.py,sha256=cA2ifI8BMlB-WAOog6G0BxuFEnDqnEXi5CIUJXEHBnE,4829
493
502
  plato/v2/sync/environment.py,sha256=WnDzbyEHpwCSEP8XnfNSjIYS7rt7lYR4HGJjzprZmTQ,5066
494
503
  plato/v2/sync/flow_executor.py,sha256=N41-WCWIJVcCR2UmPUEiK7roNacYoeONkRXpR7lUgT8,13941
495
- plato/v2/sync/session.py,sha256=okXqF-CjMmA82WRy2zPXaGidbovgjAENSqiuvE4_jKE,30420
504
+ plato/v2/sync/session.py,sha256=NL_qEXnXjZfAsuFgpq72pVmHa9ouo8W3HkJ5vYaNSQU,29555
496
505
  plato/v2/utils/__init__.py,sha256=XLeFFsjXkm9g2raMmo7Wt4QN4hhCrNZDJKnpffJ4LtM,38
497
506
  plato/v2/utils/db_cleanup.py,sha256=JMzAAJz0ZnoUXtd8F4jpQmBpJpos2__RkgN_cuEearg,8692
498
507
  plato/v2/utils/gateway_tunnel.py,sha256=eWgwf4VV8-jx6iCuHFgCISsAOVmNOOjCB56EuZLsnOA,7171
@@ -504,7 +513,7 @@ plato/worlds/base.py,sha256=-RR71bSxEFI5yydtrtq-AAbuw98CIjvmrbztqzB9oIc,31041
504
513
  plato/worlds/build_hook.py,sha256=KSoW0kqa5b7NyZ7MYOw2qsZ_2FkWuz0M3Ru7AKOP7Qw,3486
505
514
  plato/worlds/config.py,sha256=O1lUXzxp-Z_M7izslT8naXgE6XujjzwYFFrDDzUOueI,12736
506
515
  plato/worlds/runner.py,sha256=r9B2BxBae8_dM7y5cJf9xhThp_I1Qvf_tlPq2rs8qC8,4013
507
- plato_sdk_v2-2.7.3.dist-info/METADATA,sha256=XmAi4ZSPth7U15myiaNzNL98AIPMnCJjtkTsWWXMUjI,8652
508
- plato_sdk_v2-2.7.3.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
509
- plato_sdk_v2-2.7.3.dist-info/entry_points.txt,sha256=upGMbJCx6YWUTKrPoYvYUYfFCqYr75nHDwhA-45m6p8,136
510
- plato_sdk_v2-2.7.3.dist-info/RECORD,,
516
+ plato_sdk_v2-2.7.5.dist-info/METADATA,sha256=UryuMNFYUMIQb8k_-wWTmCm4EHX0Z__B92H_NpRr8O4,8652
517
+ plato_sdk_v2-2.7.5.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
518
+ plato_sdk_v2-2.7.5.dist-info/entry_points.txt,sha256=upGMbJCx6YWUTKrPoYvYUYfFCqYr75nHDwhA-45m6p8,136
519
+ plato_sdk_v2-2.7.5.dist-info/RECORD,,