plato-sdk-v2 2.7.7__py3-none-any.whl → 2.7.9__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.
@@ -1,4 +1,4 @@
1
- """Plato API SDK - v0.47.0"""
1
+ """Plato API SDK - v0.48.2"""
2
2
 
3
3
  from . import api, errors, models
4
4
  from .client import AsyncClient, Client
@@ -23,6 +23,7 @@ from . import (
23
23
  list_sessions,
24
24
  log_job_mutation,
25
25
  make,
26
+ remove_job,
26
27
  reset,
27
28
  set_date,
28
29
  setup_sandbox,
@@ -37,6 +38,7 @@ __all__ = [
37
38
  "make",
38
39
  "list_jobs",
39
40
  "add_job",
41
+ "remove_job",
40
42
  "reset",
41
43
  "heartbeat",
42
44
  "connect_network",
@@ -0,0 +1,89 @@
1
+ """Remove Job"""
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing import Any
6
+
7
+ import httpx
8
+
9
+ from plato._generated.errors import raise_for_status
10
+ from plato._generated.models import RemoveJobRequest, RemoveJobResponse
11
+
12
+
13
+ def _build_request_args(
14
+ session_id: str,
15
+ body: RemoveJobRequest,
16
+ authorization: str | None = None,
17
+ x_api_key: str | None = None,
18
+ ) -> dict[str, Any]:
19
+ """Build request arguments."""
20
+ url = f"/api/v2/sessions/{session_id}/remove-job"
21
+
22
+ headers: dict[str, str] = {}
23
+ if authorization is not None:
24
+ headers["authorization"] = authorization
25
+ if x_api_key is not None:
26
+ headers["X-API-Key"] = x_api_key
27
+
28
+ return {
29
+ "method": "POST",
30
+ "url": url,
31
+ "json": body.model_dump(mode="json", exclude_none=True),
32
+ "headers": headers,
33
+ }
34
+
35
+
36
+ def sync(
37
+ client: httpx.Client,
38
+ session_id: str,
39
+ body: RemoveJobRequest,
40
+ authorization: str | None = None,
41
+ x_api_key: str | None = None,
42
+ ) -> RemoveJobResponse:
43
+ """Remove a job from a session.
44
+
45
+ This will:
46
+ 1. Remove the job from the session's network (if connected)
47
+ 2. Shut down the VM associated with the job
48
+ 3. Cancel the job in the system
49
+
50
+ Use this to clean up individual jobs without closing the entire session."""
51
+
52
+ request_args = _build_request_args(
53
+ session_id=session_id,
54
+ body=body,
55
+ authorization=authorization,
56
+ x_api_key=x_api_key,
57
+ )
58
+
59
+ response = client.request(**request_args)
60
+ raise_for_status(response)
61
+ return RemoveJobResponse.model_validate(response.json())
62
+
63
+
64
+ async def asyncio(
65
+ client: httpx.AsyncClient,
66
+ session_id: str,
67
+ body: RemoveJobRequest,
68
+ authorization: str | None = None,
69
+ x_api_key: str | None = None,
70
+ ) -> RemoveJobResponse:
71
+ """Remove a job from a session.
72
+
73
+ This will:
74
+ 1. Remove the job from the session's network (if connected)
75
+ 2. Shut down the VM associated with the job
76
+ 3. Cancel the job in the system
77
+
78
+ Use this to clean up individual jobs without closing the entire session."""
79
+
80
+ request_args = _build_request_args(
81
+ session_id=session_id,
82
+ body=body,
83
+ authorization=authorization,
84
+ x_api_key=x_api_key,
85
+ )
86
+
87
+ response = await client.request(**request_args)
88
+ raise_for_status(response)
89
+ return RemoveJobResponse.model_validate(response.json())
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
- # filename: tmpy5rfux2_.json
3
- # timestamp: 2026-01-29T20:47:53+00:00
2
+ # filename: tmp2hcn27e0.json
3
+ # timestamp: 2026-01-29T22:45:52+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1158,6 +1158,14 @@ class EnvFromArtifact(BaseModel):
1158
1158
  """
1159
1159
 
1160
1160
 
1161
+ class RootfsStorageBackend(Enum):
1162
+ sparse_s3 = "sparse-s3"
1163
+ blockdiff = "blockdiff"
1164
+ blockdiff_checkpoint = "blockdiff_checkpoint"
1165
+ blockdiff_disk = "blockdiff_disk"
1166
+ snapshot_store = "snapshot-store"
1167
+
1168
+
1161
1169
  class EnvFromSimulator(BaseModel):
1162
1170
  model_config = ConfigDict(
1163
1171
  extra="allow",
@@ -1929,6 +1937,11 @@ class NodeSessionNetworkConfig(BaseModel):
1929
1937
  """
1930
1938
 
1931
1939
 
1940
+ class DefaultRootfsStorageBackend(Enum):
1941
+ sparse_s3 = "sparse-s3"
1942
+ snapshot_store = "snapshot-store"
1943
+
1944
+
1932
1945
  class NodeSnapshotStoreConfig(BaseModel):
1933
1946
  model_config = ConfigDict(
1934
1947
  extra="allow",
@@ -1977,9 +1990,12 @@ class NodeSnapshotStoreConfig(BaseModel):
1977
1990
  """
1978
1991
  Local storage root for snapshot-store data.
1979
1992
  """
1980
- dedup_rootfs: Annotated[bool | None, Field(title="Dedup Rootfs")] = False
1993
+ default_rootfs_storage_backend: Annotated[
1994
+ DefaultRootfsStorageBackend | None,
1995
+ Field(title="Default Rootfs Storage Backend"),
1996
+ ] = DefaultRootfsStorageBackend.sparse_s3
1981
1997
  """
1982
- Enable rootfs-level dedup via snapshot-store FUSE mount instead of file copy.
1998
+ Default rootfs storage backend. 'sparse-s3' uses S3 archives, 'snapshot-store' uses FUSE-based dedup.
1983
1999
  """
1984
2000
 
1985
2001
 
@@ -2334,6 +2350,38 @@ class ReleaseStatus(Enum):
2334
2350
  failed = "failed"
2335
2351
 
2336
2352
 
2353
+ class RemoveJobRequest(BaseModel):
2354
+ model_config = ConfigDict(
2355
+ extra="allow",
2356
+ )
2357
+ job_id: Annotated[str, Field(title="Job Id")]
2358
+ """
2359
+ Job ID to remove from the session
2360
+ """
2361
+
2362
+
2363
+ class RemoveJobResponse(BaseModel):
2364
+ model_config = ConfigDict(
2365
+ extra="allow",
2366
+ )
2367
+ session_id: Annotated[str, Field(title="Session Id")]
2368
+ """
2369
+ Session ID the job was removed from
2370
+ """
2371
+ job_id: Annotated[str, Field(title="Job Id")]
2372
+ """
2373
+ Job ID that was removed
2374
+ """
2375
+ success: Annotated[bool, Field(title="Success")]
2376
+ """
2377
+ Whether the removal was successful
2378
+ """
2379
+ message: Annotated[str | None, Field(title="Message")] = None
2380
+ """
2381
+ Status message or error details
2382
+ """
2383
+
2384
+
2337
2385
  class RepositoryResponse(BaseModel):
2338
2386
  model_config = ConfigDict(
2339
2387
  extra="allow",
@@ -4324,6 +4372,18 @@ class EnvFromResource(BaseModel):
4324
4372
  """
4325
4373
  Custom name for this environment
4326
4374
  """
4375
+ docker_image_url: Annotated[str | None, Field(title="Docker Image Url")] = None
4376
+ """
4377
+ Custom Docker image URL (ECR). If not set, uses default from settings.
4378
+ """
4379
+ rootfs_storage_backend: Annotated[RootfsStorageBackend | None, Field(title="Rootfs Storage Backend")] = None
4380
+ """
4381
+ Storage backend for rootfs ('sparse-s3' or 'snapshot-store'). If not set, uses default.
4382
+ """
4383
+ upload_rootfs: Annotated[bool | None, Field(title="Upload Rootfs")] = True
4384
+ """
4385
+ Upload rootfs to S3/snapshot-store if not already cached. Set to False for one-off VMs.
4386
+ """
4327
4387
 
4328
4388
 
4329
4389
  class ExecuteCommandResponse(BaseModel):
@@ -7,7 +7,7 @@ from typing import Any
7
7
  import httpx
8
8
 
9
9
  from plato.chronos.errors import raise_for_status
10
- from plato.chronos.models import AgentVersionsResponse
10
+ from plato.chronos.models import ChronosModelsAgentAgentVersionsResponse
11
11
 
12
12
 
13
13
  def _build_request_args(
@@ -32,7 +32,7 @@ def sync(
32
32
  client: httpx.Client,
33
33
  name: str,
34
34
  x_api_key: str | None = None,
35
- ) -> AgentVersionsResponse:
35
+ ) -> ChronosModelsAgentAgentVersionsResponse:
36
36
  """Get all versions of an agent by name."""
37
37
 
38
38
  request_args = _build_request_args(
@@ -42,14 +42,14 @@ def sync(
42
42
 
43
43
  response = client.request(**request_args)
44
44
  raise_for_status(response)
45
- return AgentVersionsResponse.model_validate(response.json())
45
+ return ChronosModelsAgentAgentVersionsResponse.model_validate(response.json())
46
46
 
47
47
 
48
48
  async def asyncio(
49
49
  client: httpx.AsyncClient,
50
50
  name: str,
51
51
  x_api_key: str | None = None,
52
- ) -> AgentVersionsResponse:
52
+ ) -> ChronosModelsAgentAgentVersionsResponse:
53
53
  """Get all versions of an agent by name."""
54
54
 
55
55
  request_args = _build_request_args(
@@ -59,4 +59,4 @@ async def asyncio(
59
59
 
60
60
  response = await client.request(**request_args)
61
61
  raise_for_status(response)
62
- return AgentVersionsResponse.model_validate(response.json())
62
+ return ChronosModelsAgentAgentVersionsResponse.model_validate(response.json())
@@ -7,7 +7,7 @@ from typing import Any
7
7
  import httpx
8
8
 
9
9
  from plato.chronos.errors import raise_for_status
10
- from plato.chronos.models import AgentListResponse
10
+ from plato.chronos.models import ChronosModelsAgentAgentListResponse
11
11
 
12
12
 
13
13
  def _build_request_args(
@@ -30,7 +30,7 @@ def _build_request_args(
30
30
  def sync(
31
31
  client: httpx.Client,
32
32
  x_api_key: str | None = None,
33
- ) -> AgentListResponse:
33
+ ) -> ChronosModelsAgentAgentListResponse:
34
34
  """List all agents for the org."""
35
35
 
36
36
  request_args = _build_request_args(
@@ -39,13 +39,13 @@ def sync(
39
39
 
40
40
  response = client.request(**request_args)
41
41
  raise_for_status(response)
42
- return AgentListResponse.model_validate(response.json())
42
+ return ChronosModelsAgentAgentListResponse.model_validate(response.json())
43
43
 
44
44
 
45
45
  async def asyncio(
46
46
  client: httpx.AsyncClient,
47
47
  x_api_key: str | None = None,
48
- ) -> AgentListResponse:
48
+ ) -> ChronosModelsAgentAgentListResponse:
49
49
  """List all agents for the org."""
50
50
 
51
51
  request_args = _build_request_args(
@@ -54,4 +54,4 @@ async def asyncio(
54
54
 
55
55
  response = await client.request(**request_args)
56
56
  raise_for_status(response)
57
- return AgentListResponse.model_validate(response.json())
57
+ return ChronosModelsAgentAgentListResponse.model_validate(response.json())
@@ -7,7 +7,7 @@ from typing import Any
7
7
  import httpx
8
8
 
9
9
  from plato.chronos.errors import raise_for_status
10
- from plato.chronos.models import ChronosApiRegistryAgentVersionsResponse
10
+ from plato.chronos.models import AgentVersionsResponse
11
11
 
12
12
 
13
13
  def _build_request_args(
@@ -25,7 +25,7 @@ def _build_request_args(
25
25
  def sync(
26
26
  client: httpx.Client,
27
27
  agent_name: str,
28
- ) -> ChronosApiRegistryAgentVersionsResponse:
28
+ ) -> AgentVersionsResponse:
29
29
  """Get versions for an agent from the registry."""
30
30
 
31
31
  request_args = _build_request_args(
@@ -34,13 +34,13 @@ def sync(
34
34
 
35
35
  response = client.request(**request_args)
36
36
  raise_for_status(response)
37
- return ChronosApiRegistryAgentVersionsResponse.model_validate(response.json())
37
+ return AgentVersionsResponse.model_validate(response.json())
38
38
 
39
39
 
40
40
  async def asyncio(
41
41
  client: httpx.AsyncClient,
42
42
  agent_name: str,
43
- ) -> ChronosApiRegistryAgentVersionsResponse:
43
+ ) -> AgentVersionsResponse:
44
44
  """Get versions for an agent from the registry."""
45
45
 
46
46
  request_args = _build_request_args(
@@ -49,4 +49,4 @@ async def asyncio(
49
49
 
50
50
  response = await client.request(**request_args)
51
51
  raise_for_status(response)
52
- return ChronosApiRegistryAgentVersionsResponse.model_validate(response.json())
52
+ return AgentVersionsResponse.model_validate(response.json())
@@ -7,7 +7,7 @@ from typing import Any
7
7
  import httpx
8
8
 
9
9
  from plato.chronos.errors import raise_for_status
10
- from plato.chronos.models import ChronosApiRegistryAgentListResponse
10
+ from plato.chronos.models import AgentListResponse
11
11
 
12
12
 
13
13
  def _build_request_args() -> dict[str, Any]:
@@ -22,23 +22,23 @@ def _build_request_args() -> dict[str, Any]:
22
22
 
23
23
  def sync(
24
24
  client: httpx.Client,
25
- ) -> ChronosApiRegistryAgentListResponse:
25
+ ) -> AgentListResponse:
26
26
  """List all agents from the registry with their ECR image URIs."""
27
27
 
28
28
  request_args = _build_request_args()
29
29
 
30
30
  response = client.request(**request_args)
31
31
  raise_for_status(response)
32
- return ChronosApiRegistryAgentListResponse.model_validate(response.json())
32
+ return AgentListResponse.model_validate(response.json())
33
33
 
34
34
 
35
35
  async def asyncio(
36
36
  client: httpx.AsyncClient,
37
- ) -> ChronosApiRegistryAgentListResponse:
37
+ ) -> AgentListResponse:
38
38
  """List all agents from the registry with their ECR image URIs."""
39
39
 
40
40
  request_args = _build_request_args()
41
41
 
42
42
  response = await client.request(**request_args)
43
43
  raise_for_status(response)
44
- return ChronosApiRegistryAgentListResponse.model_validate(response.json())
44
+ return AgentListResponse.model_validate(response.json())
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
- # filename: tmp9iosw1i3.json
3
- # timestamp: 2026-01-29T20:31:32+00:00
2
+ # filename: tmpi9d4hw2u.json
3
+ # timestamp: 2026-01-29T22:45:54+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -30,6 +30,13 @@ 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
+
33
40
  class AgentLookupResponse(BaseModel):
34
41
  model_config = ConfigDict(
35
42
  extra="allow",
@@ -71,14 +78,6 @@ class AgentVersionInfo(BaseModel):
71
78
  created_at: Annotated[AwareDatetime, Field(title="Created At")]
72
79
 
73
80
 
74
- class AgentVersionsResponse(BaseModel):
75
- model_config = ConfigDict(
76
- extra="allow",
77
- )
78
- name: Annotated[str, Field(title="Name")]
79
- versions: Annotated[list[AgentVersionInfo], Field(title="Versions")]
80
-
81
-
82
81
  class AuthStatusResponse(BaseModel):
83
82
  model_config = ConfigDict(
84
83
  extra="allow",
@@ -566,13 +565,6 @@ class WorldVersionsResponse(BaseModel):
566
565
  versions: Annotated[list[str], Field(title="Versions")]
567
566
 
568
567
 
569
- class ChronosApiRegistryAgentListResponse(BaseModel):
570
- model_config = ConfigDict(
571
- extra="allow",
572
- )
573
- agents: Annotated[list[AgentInfo], Field(title="Agents")]
574
-
575
-
576
568
  class ChronosApiRegistryAgentSchemaResponse(BaseModel):
577
569
  model_config = ConfigDict(
578
570
  extra="allow",
@@ -592,12 +584,19 @@ class ChronosApiRegistryAgentVersionInfo(BaseModel):
592
584
  created_at: Annotated[str | None, Field(title="Created At")] = None
593
585
 
594
586
 
595
- class ChronosApiRegistryAgentVersionsResponse(BaseModel):
587
+ class ChronosModelsAgentAgentListResponse(BaseModel):
588
+ model_config = ConfigDict(
589
+ extra="allow",
590
+ )
591
+ agents: Annotated[list[AgentResponse], Field(title="Agents")]
592
+
593
+
594
+ class ChronosModelsAgentAgentVersionsResponse(BaseModel):
596
595
  model_config = ConfigDict(
597
596
  extra="allow",
598
597
  )
599
598
  name: Annotated[str, Field(title="Name")]
600
- versions: Annotated[list[ChronosApiRegistryAgentVersionInfo], Field(title="Versions")]
599
+ versions: Annotated[list[AgentVersionInfo], Field(title="Versions")]
601
600
 
602
601
 
603
602
  class ChronosModelsSessionWorldInfo(BaseModel):
@@ -610,11 +609,12 @@ class ChronosModelsSessionWorldInfo(BaseModel):
610
609
  config_schema: Annotated[dict[str, Any] | None, Field(title="Config Schema")] = None
611
610
 
612
611
 
613
- class AgentListResponse(BaseModel):
612
+ class AgentVersionsResponse(BaseModel):
614
613
  model_config = ConfigDict(
615
614
  extra="allow",
616
615
  )
617
- agents: Annotated[list[AgentResponse], Field(title="Agents")]
616
+ name: Annotated[str, Field(title="Name")]
617
+ versions: Annotated[list[ChronosApiRegistryAgentVersionInfo], Field(title="Versions")]
618
618
 
619
619
 
620
620
  class CreatorsListResponse(BaseModel):
plato/cli/pm.py CHANGED
@@ -42,7 +42,6 @@ from plato.cli.utils import (
42
42
  require_sandbox_field,
43
43
  require_sandbox_state,
44
44
  )
45
- from plato.cli.verify import pm_verify_app
46
45
  from plato.v2.async_.client import AsyncPlato
47
46
  from plato.v2.async_.flow_executor import FlowExecutor
48
47
  from plato.v2.types import Env
@@ -66,7 +65,6 @@ submit_app = typer.Typer(help="Submit simulator artifacts for review")
66
65
  pm_app.add_typer(list_app, name="list")
67
66
  pm_app.add_typer(review_app, name="review")
68
67
  pm_app.add_typer(submit_app, name="submit")
69
- pm_app.add_typer(pm_verify_app, name="verify")
70
68
 
71
69
 
72
70
  # =============================================================================
plato/v2/sync/sandbox.py CHANGED
@@ -20,7 +20,6 @@ from urllib.parse import quote
20
20
 
21
21
  import httpx
22
22
  import yaml
23
- from playwright.async_api import async_playwright
24
23
  from pydantic import BaseModel
25
24
  from rich.console import Console
26
25
 
@@ -1128,6 +1127,8 @@ class SandboxClient:
1128
1127
 
1129
1128
  # Run the flow with Playwright
1130
1129
  async def _run_flow():
1130
+ from playwright.async_api import async_playwright
1131
+
1131
1132
  async with async_playwright() as p:
1132
1133
  browser = await p.chromium.launch(headless=False)
1133
1134
  try:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: plato-sdk-v2
3
- Version: 2.7.7
3
+ Version: 2.7.9
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=brhuFWbKg8Opk2yHAz61gRXPfpKEzNfdwTkft1lRx7w,738
3
+ plato/_generated/__init__.py,sha256=finH7i7IrCbUnu4ussJ7wY_duPHgclocRcijeXEUVi8,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
@@ -266,7 +266,7 @@ plato/_generated/api/v2/releases/handle_import.py,sha256=ByBl6tHDKMXD0Ic_C4jpokx
266
266
  plato/_generated/api/v2/releases/list_releases.py,sha256=ebNZc45ooGrKT-1lZ6mIjruTO8zwngz5G9edS6DB7lc,2149
267
267
  plato/_generated/api/v2/releases/prep_release_assigned_testcases.py,sha256=B171O7xqXZm1AEXGhSfPNobBsqQRINxX4gYBU-TTwEg,2668
268
268
  plato/_generated/api/v2/releases/update.py,sha256=aEz9dbnvRg5pAp1jkTZpwUjKxpOOn-xXktPeNVKpruI,1956
269
- plato/_generated/api/v2/sessions/__init__.py,sha256=DIDigu6vbUeREZGAmAhctkjjtBoC9G3NBs-ukWpJd5o,1225
269
+ plato/_generated/api/v2/sessions/__init__.py,sha256=AC6xIczdSAW34kxj7aRUG1aWMPOwK93zHA0F_bcJ4Eo,1259
270
270
  plato/_generated/api/v2/sessions/add_job.py,sha256=PqnYCPuOFkqJjaK5jg7O4v92La4In2pSiCI1A_OoJRQ,2792
271
271
  plato/_generated/api/v2/sessions/add_ssh_key.py,sha256=JDaw5B1hHodH43DUoZ7FrO1_ECWacjinia4-DbU0jGo,2198
272
272
  plato/_generated/api/v2/sessions/checkpoint.py,sha256=Kd8NSIeuC41cRB4Y3j_L0yNIU_WVRjkBIL72pRqoRTc,2933
@@ -289,6 +289,7 @@ plato/_generated/api/v2/sessions/list_jobs.py,sha256=FbfOqNLqvk0hq4tngFYvgA-kQkL
289
289
  plato/_generated/api/v2/sessions/list_sessions.py,sha256=GPm_nShD8DxJD86v3n64kjtBctBZ8iGX9sERAdWKk68,1929
290
290
  plato/_generated/api/v2/sessions/log_job_mutation.py,sha256=6x8rSFCbd3u3p3jms62X4k2BGk6eMuoUn04Ha3Pj1P8,1870
291
291
  plato/_generated/api/v2/sessions/make.py,sha256=1FP7rCbjT62T8Of9otByl6L0p-VwwsruoaK--vYUUx0,2081
292
+ plato/_generated/api/v2/sessions/remove_job.py,sha256=Lc3ERBR1cTFv-3u1Wbz5QDu5ksy5MqSke2GT6zgViiA,2374
292
293
  plato/_generated/api/v2/sessions/reset.py,sha256=L8s2E_8wMq0hkNGNKrCx8gHTm-1KXltlzfHVI5sY14U,1941
293
294
  plato/_generated/api/v2/sessions/set_date.py,sha256=jbw3KVBI5TngHGBMavFawjNudRutAC0eb8jEbsSJdkw,2278
294
295
  plato/_generated/api/v2/sessions/setup_sandbox.py,sha256=FtxC3NXFPpITupyBYlRtsMfP64vXYuKq23pwACT9v0U,3162
@@ -301,7 +302,7 @@ plato/_generated/api/v2/user/__init__.py,sha256=yMh1Gn9VpKHQMQCmJdpeDPA9Ek9PBgP0
301
302
  plato/_generated/api/v2/user/get_current_user.py,sha256=tvamtbWTEkeeNUBLSPqZIcCGqKVadQM3DVcezsWP22U,1814
302
303
  plato/_generated/api/version/__init__.py,sha256=dQXTYrXjD1RZcvWwnlqXWAZ-eAV-V-6JSNuY7uaca7o,70
303
304
  plato/_generated/api/version/check.py,sha256=HTVNw0oi9gbvX4pOVoH4y4JywCxdl1pJTCk2PjJFwJ4,778
304
- plato/_generated/models/__init__.py,sha256=UPFr8mItkDevaDF7ML28Ugqi0uudQIvWM_d629suqwA,162089
305
+ plato/_generated/models/__init__.py,sha256=597HUbpzjUUHGONUbaS5JE4W_gjcqn7_sJDmvHkvDnc,163870
305
306
  plato/_sims_generator/__init__.py,sha256=Km4QOl9wxjQ5dgpdhk9QnBFJFFc9eq3rPbMWIQRjIn0,1602
306
307
  plato/_sims_generator/cli.py,sha256=mzolN-dxfMkVAdA-vC0esnai-cGg-i4ozOw8dACefV4,2709
307
308
  plato/_sims_generator/instruction.py,sha256=Na9M-jIdBPhp_fLuBPTicoFnWriRyi8YiZ-eQBj64HI,6644
@@ -340,8 +341,8 @@ plato/chronos/api/agents/create_agent.py,sha256=G8LR1KlWOCfmZ71Sl0seo7aRYmG7_nok
340
341
  plato/chronos/api/agents/delete_agent.py,sha256=fuL8Ip8veUXpOhSYxX_74S0zM_kZsTX61KosiFyhRWo,1241
341
342
  plato/chronos/api/agents/get_agent.py,sha256=o61fxCyYpTe6-3SC2RAebp3kW8rgEOWSN_NCph_iMUc,1358
342
343
  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
344
+ plato/chronos/api/agents/get_agent_versions.py,sha256=mVLFvOrAwoyR9Jnu4F26EhNv08zGbXywiohr6hojxMY,1496
345
+ plato/chronos/api/agents/list_agents.py,sha256=OcycIUUc8yTGAhmpr2qhU2-2qIbvAtKko6l7cgmcKes,1343
345
346
  plato/chronos/api/agents/lookup_agent.py,sha256=DOGfrOK6Lh6ULMqRmf4zRQHlDXMhYenidx8wcZx4caY,1766
346
347
  plato/chronos/api/auth/__init__.py,sha256=6qao3xT8yw9-WTpUlv4tVtpWhL2EycQd3I2WKQ5p9Lk,284
347
348
  plato/chronos/api/auth/debug_auth_api_auth_debug_get.py,sha256=L1RWyQ1w7V8dyhOAU2VQlT9x0jkeng3eIvZDOv9Gl2w,881
@@ -362,10 +363,10 @@ plato/chronos/api/otel/get_session_traces_api_otel_sessions__session_id__traces_
362
363
  plato/chronos/api/otel/receive_traces_api_otel_v1_traces_post.py,sha256=XvEe6XBB672qZ_d9IkD9dhxehK-H07yGxqKPaZG-EXA,1074
363
364
  plato/chronos/api/registry/__init__.py,sha256=gPN-3oENHUrwaiacYt1_jI7HQ6gGe9i-34-Smb-0KHg,819
364
365
  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
366
+ plato/chronos/api/registry/get_agent_versions_api_registry_agents__agent_name__versions_get.py,sha256=TjYCZcIc6Bc0iS1E2MMPAK-yDUX_zijT8g7We7dNcQI,1176
366
367
  plato/chronos/api/registry/get_world_schema_api_registry_worlds__package_name__schema_get.py,sha256=RM-1MDYaG8B9iRl93KBG4tVjWJAHA08X6lSwjzk8fkw,1697
367
368
  plato/chronos/api/registry/get_world_versions_api_registry_worlds__package_name__versions_get.py,sha256=07MKXi5-d8Qk8cKRdVW2AZoeeksX7OpTgFR9bkJni0Y,1206
368
- plato/chronos/api/registry/list_registry_agents_api_registry_agents_get.py,sha256=gzRRPfHGzhczL1Xi274cg-oLwUzqdS2B7JkzhHNZKEw,1121
369
+ plato/chronos/api/registry/list_registry_agents_api_registry_agents_get.py,sha256=3rACHpvv2P7gooHcNH4sU82pCSPIWH0f17lmQyGdEyU,1031
369
370
  plato/chronos/api/registry/list_registry_worlds_api_registry_worlds_get.py,sha256=g9KHZ2ZLJnhS5uCb55K7ez5plpfGL88o-pcdLMDgrRg,1010
370
371
  plato/chronos/api/runtimes/__init__.py,sha256=_887oqgAfMazmoU-tTbOQ4k-k6E0PW004bdFxTM117M,270
371
372
  plato/chronos/api/runtimes/create_runtime.py,sha256=D37d2nMqyTxT8r_9faPWI-E18pAVjLlh0hCgBf0L6wQ,1524
@@ -412,13 +413,13 @@ plato/chronos/api/worlds/create_world.py,sha256=H6yl5QIazNXgryOR5rvscSIMf8Y9kjc6
412
413
  plato/chronos/api/worlds/delete_world.py,sha256=UETu3Zk0e2VkDdAyMilv1ev-0g_j-oujH1Dc8DBqQOc,1239
413
414
  plato/chronos/api/worlds/get_world.py,sha256=eHTM1U5JiNTaZwYLh7x4QVBoRQeI5kaJ9o6xSi4-nos,1356
414
415
  plato/chronos/api/worlds/list_worlds.py,sha256=hBAuGb69tlasyn-kV_LNr9x6Rr7SHhST5hXJn1uqMf8,1253
415
- plato/chronos/models/__init__.py,sha256=d_L57okr2l6WIqAD-VLFQ9njrbovP2CCdvsEV50jMn4,23198
416
+ plato/chronos/models/__init__.py,sha256=M2dV42UmYgsNC4M76jOO4vILgzNvM6m3BGpf6McfFwE,23198
416
417
  plato/cli/__init__.py,sha256=UsKj-69eWKuAlk-Fiwlrz0GJiBfuOmcf-ZLmZJb21Vo,102
417
418
  plato/cli/agent.py,sha256=5qA0T1n0H0JQ5ZB-fAVKm3Nw-y_M-GiSQx1OTcKgkrI,44050
418
419
  plato/cli/audit_ui.py,sha256=AfnC3wngGV3ujg9POHNYQhal2S6Hr0ZhcXrAAxtVfMg,12307
419
420
  plato/cli/chronos.py,sha256=OTS-xcmH0U99sMHrABqtJMOdOEhHil5hv_yO3YNgrS8,27824
420
421
  plato/cli/main.py,sha256=f-L_Q6MWA8ylGrOcEsJU5HRK1JaDUeh6ONWSaKwag10,6800
421
- plato/cli/pm.py,sha256=X9dqSiumyGwxUk0SdQUWWH1mezkN8iK7EHSUZnlJZLs,53135
422
+ plato/cli/pm.py,sha256=RMZdxIYi1YV4T35soYuYgLqg65ja4sPDw8K9zx3ZLBU,53045
422
423
  plato/cli/proxy.py,sha256=c1t1ljZvArTnFba-NprCj2tma4XneEqRDQCbwzQ9GD4,6803
423
424
  plato/cli/sandbox.py,sha256=B9QPHvtXaiUlGa0zY5kYd9-TvE4YbC8kYO1WNgLqFcM,26250
424
425
  plato/cli/utils.py,sha256=PIZnJYuhojbARoRA2Tk3KfB5Tycg1uwlPLhut5Es0ew,6900
@@ -512,7 +513,7 @@ plato/v2/sync/chronos.py,sha256=ChXpasjRzAZjoYTimpPqYydnwEk-IgdxR0SDXDOZbUM,1207
512
513
  plato/v2/sync/client.py,sha256=rsrU7_RhE-syf3FMNw5LaxmF7rYw2GBzC_TPpd-6thk,4986
513
514
  plato/v2/sync/environment.py,sha256=WnDzbyEHpwCSEP8XnfNSjIYS7rt7lYR4HGJjzprZmTQ,5066
514
515
  plato/v2/sync/flow_executor.py,sha256=N41-WCWIJVcCR2UmPUEiK7roNacYoeONkRXpR7lUgT8,13941
515
- plato/v2/sync/sandbox.py,sha256=M5kkhCKhwxz0t5v6ZnoYLcVuR047GQD65IGNBXmsEak,53721
516
+ plato/v2/sync/sandbox.py,sha256=yRwkms1_qsHjhbLZQ7FiaLgFme2tMw8YM2xg2-ZZS04,53734
516
517
  plato/v2/sync/session.py,sha256=NL_qEXnXjZfAsuFgpq72pVmHa9ouo8W3HkJ5vYaNSQU,29555
517
518
  plato/v2/utils/__init__.py,sha256=XLeFFsjXkm9g2raMmo7Wt4QN4hhCrNZDJKnpffJ4LtM,38
518
519
  plato/v2/utils/db_cleanup.py,sha256=JMzAAJz0ZnoUXtd8F4jpQmBpJpos2__RkgN_cuEearg,8692
@@ -525,7 +526,7 @@ plato/worlds/base.py,sha256=-RR71bSxEFI5yydtrtq-AAbuw98CIjvmrbztqzB9oIc,31041
525
526
  plato/worlds/build_hook.py,sha256=KSoW0kqa5b7NyZ7MYOw2qsZ_2FkWuz0M3Ru7AKOP7Qw,3486
526
527
  plato/worlds/config.py,sha256=O1lUXzxp-Z_M7izslT8naXgE6XujjzwYFFrDDzUOueI,12736
527
528
  plato/worlds/runner.py,sha256=r9B2BxBae8_dM7y5cJf9xhThp_I1Qvf_tlPq2rs8qC8,4013
528
- plato_sdk_v2-2.7.7.dist-info/METADATA,sha256=WIbqCcPLxLkLMHbWVtA7SMWU1oWG7T6NKDoBrYrqqQc,8652
529
- plato_sdk_v2-2.7.7.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
530
- plato_sdk_v2-2.7.7.dist-info/entry_points.txt,sha256=iynJvTkU7E4MZNtSozVF0Wh083yPm6cuKV362Ol_ez8,133
531
- plato_sdk_v2-2.7.7.dist-info/RECORD,,
529
+ plato_sdk_v2-2.7.9.dist-info/METADATA,sha256=kEHstjuAW3N6cxIjGfaXdAHMfwfVzugWzZFAHkoaVsg,8652
530
+ plato_sdk_v2-2.7.9.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
531
+ plato_sdk_v2-2.7.9.dist-info/entry_points.txt,sha256=iynJvTkU7E4MZNtSozVF0Wh083yPm6cuKV362Ol_ez8,133
532
+ plato_sdk_v2-2.7.9.dist-info/RECORD,,