sequence-base 0.3.7__tar.gz → 0.3.9__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.
- {sequence_base-0.3.7 → sequence_base-0.3.9}/PKG-INFO +1 -1
- {sequence_base-0.3.7 → sequence_base-0.3.9}/pyproject.toml +1 -1
- {sequence_base-0.3.7 → sequence_base-0.3.9}/sequence_base/constants/version.py +3 -1
- {sequence_base-0.3.7 → sequence_base-0.3.9}/sequence_base/contract/benchmarks.py +2 -0
- {sequence_base-0.3.7 → sequence_base-0.3.9}/sequence_base/contract/deployments.py +6 -0
- {sequence_base-0.3.7 → sequence_base-0.3.9}/sequence_base/contract/io.py +26 -2
- {sequence_base-0.3.7 → sequence_base-0.3.9}/sequence_base/contract/policy.py +6 -0
- {sequence_base-0.3.7 → sequence_base-0.3.9}/sequence_base/schemas/ActionChunk.json +1 -1
- {sequence_base-0.3.7 → sequence_base-0.3.9}/sequence_base/schemas/ActionContract.json +61 -1
- {sequence_base-0.3.7 → sequence_base-0.3.9}/sequence_base/schemas/ActionStep.json +1 -1
- {sequence_base-0.3.7 → sequence_base-0.3.9}/sequence_base/schemas/AdapterTransform.json +1 -1
- {sequence_base-0.3.7 → sequence_base-0.3.9}/sequence_base/schemas/Autoscaler.json +1 -1
- {sequence_base-0.3.7 → sequence_base-0.3.9}/sequence_base/schemas/BenchmarkConditionSpec.json +1 -1
- {sequence_base-0.3.7 → sequence_base-0.3.9}/sequence_base/schemas/BenchmarkRegisterRequest.json +100 -1
- {sequence_base-0.3.7 → sequence_base-0.3.9}/sequence_base/schemas/BenchmarkSpec.json +30 -2
- {sequence_base-0.3.7 → sequence_base-0.3.9}/sequence_base/schemas/BenchmarkStatusResponse.json +1 -1
- {sequence_base-0.3.7 → sequence_base-0.3.9}/sequence_base/schemas/BootstrapResponse.json +1 -1
- {sequence_base-0.3.7 → sequence_base-0.3.9}/sequence_base/schemas/Camera.json +1 -1
- {sequence_base-0.3.7 → sequence_base-0.3.9}/sequence_base/schemas/ClampInfo.json +1 -1
- {sequence_base-0.3.7 → sequence_base-0.3.9}/sequence_base/schemas/CodeBundle.json +1 -1
- {sequence_base-0.3.7 → sequence_base-0.3.9}/sequence_base/schemas/Concurrency.json +1 -1
- {sequence_base-0.3.7 → sequence_base-0.3.9}/sequence_base/schemas/Conditions.json +1 -1
- {sequence_base-0.3.7 → sequence_base-0.3.9}/sequence_base/schemas/ConnectRequest.json +1 -1
- {sequence_base-0.3.7 → sequence_base-0.3.9}/sequence_base/schemas/ConnectResponse.json +61 -1
- {sequence_base-0.3.7 → sequence_base-0.3.9}/sequence_base/schemas/DeploymentAccepted.json +1 -1
- {sequence_base-0.3.7 → sequence_base-0.3.9}/sequence_base/schemas/DeploymentPolicy.json +61 -1
- {sequence_base-0.3.7 → sequence_base-0.3.9}/sequence_base/schemas/DeploymentRequest.json +113 -1
- {sequence_base-0.3.7 → sequence_base-0.3.9}/sequence_base/schemas/DeploymentStatusResponse.json +1 -1
- {sequence_base-0.3.7 → sequence_base-0.3.9}/sequence_base/schemas/Embodiment.json +61 -1
- {sequence_base-0.3.7 → sequence_base-0.3.9}/sequence_base/schemas/ErrorBody.json +1 -1
- {sequence_base-0.3.7 → sequence_base-0.3.9}/sequence_base/schemas/Estimate.json +1 -1
- {sequence_base-0.3.7 → sequence_base-0.3.9}/sequence_base/schemas/EvalDryRunResponse.json +1 -1
- {sequence_base-0.3.7 → sequence_base-0.3.9}/sequence_base/schemas/EvalReport.json +1 -1
- {sequence_base-0.3.7 → sequence_base-0.3.9}/sequence_base/schemas/EvalRequest.json +1 -1
- {sequence_base-0.3.7 → sequence_base-0.3.9}/sequence_base/schemas/EvalResponse.json +1 -1
- {sequence_base-0.3.7 → sequence_base-0.3.9}/sequence_base/schemas/ImageFrame.json +1 -1
- {sequence_base-0.3.7 → sequence_base-0.3.9}/sequence_base/schemas/ImageSpec.json +44 -1
- {sequence_base-0.3.7 → sequence_base-0.3.9}/sequence_base/schemas/ImageStepApt.json +1 -1
- {sequence_base-0.3.7 → sequence_base-0.3.9}/sequence_base/schemas/ImageStepEnv.json +1 -1
- sequence_base-0.3.9/sequence_base/schemas/ImageStepRun.json +50 -0
- {sequence_base-0.3.7 → sequence_base-0.3.9}/sequence_base/schemas/ImageStepUvPip.json +1 -1
- {sequence_base-0.3.7 → sequence_base-0.3.9}/sequence_base/schemas/InferParam.json +1 -1
- {sequence_base-0.3.7 → sequence_base-0.3.9}/sequence_base/schemas/Lease.json +1 -1
- {sequence_base-0.3.7 → sequence_base-0.3.9}/sequence_base/schemas/LossyTransform.json +1 -1
- {sequence_base-0.3.7 → sequence_base-0.3.9}/sequence_base/schemas/MetricAgg.json +1 -1
- {sequence_base-0.3.7 → sequence_base-0.3.9}/sequence_base/schemas/Observation.json +1 -1
- {sequence_base-0.3.7 → sequence_base-0.3.9}/sequence_base/schemas/ObservationContract.json +1 -1
- {sequence_base-0.3.7 → sequence_base-0.3.9}/sequence_base/schemas/PolicyRegistration.json +90 -2
- {sequence_base-0.3.7 → sequence_base-0.3.9}/sequence_base/schemas/PolicySpec.json +89 -1
- {sequence_base-0.3.7 → sequence_base-0.3.9}/sequence_base/schemas/Proprioception.json +1 -1
- {sequence_base-0.3.7 → sequence_base-0.3.9}/sequence_base/schemas/RenderSpec.json +1 -1
- {sequence_base-0.3.7 → sequence_base-0.3.9}/sequence_base/schemas/Resources.json +14 -1
- {sequence_base-0.3.7 → sequence_base-0.3.9}/sequence_base/schemas/RolloutResult.json +1 -1
- {sequence_base-0.3.7 → sequence_base-0.3.9}/sequence_base/schemas/SecretCreateRequest.json +1 -1
- {sequence_base-0.3.7 → sequence_base-0.3.9}/sequence_base/schemas/SecretInfo.json +1 -1
- {sequence_base-0.3.7 → sequence_base-0.3.9}/sequence_base/schemas/SecretRef.json +1 -1
- {sequence_base-0.3.7 → sequence_base-0.3.9}/sequence_base/schemas/SeqFlags.json +1 -1
- {sequence_base-0.3.7 → sequence_base-0.3.9}/sequence_base/schemas/Step.json +1 -1
- {sequence_base-0.3.7 → sequence_base-0.3.9}/sequence_base/schemas/SuiteAgg.json +1 -1
- {sequence_base-0.3.7 → sequence_base-0.3.9}/sequence_base/schemas/TaskAgg.json +1 -1
- {sequence_base-0.3.7 → sequence_base-0.3.9}/sequence_base/schemas/Timeouts.json +1 -1
- {sequence_base-0.3.7 → sequence_base-0.3.9}/sequence_base/schemas/UploadTarget.json +1 -1
- {sequence_base-0.3.7 → sequence_base-0.3.9}/sequence_base/schemas/UsageReport.json +1 -1
- {sequence_base-0.3.7 → sequence_base-0.3.9}/sequence_base/schemas/Variant.json +1 -1
- {sequence_base-0.3.7 → sequence_base-0.3.9}/sequence_base/schemas/VolumeAttach.json +1 -1
- {sequence_base-0.3.7 → sequence_base-0.3.9}/sequence_base/schemas/VolumeFile.json +1 -1
- {sequence_base-0.3.7 → sequence_base-0.3.9}/sequence_base/schemas/VolumeInfo.json +1 -1
- {sequence_base-0.3.7 → sequence_base-0.3.9}/sequence_base/schemas/VolumeMount.json +1 -1
- {sequence_base-0.3.7 → sequence_base-0.3.9}/sequence_base/schemas/VolumeRef.json +1 -1
- {sequence_base-0.3.7 → sequence_base-0.3.9}/sequence_base/schemas/VolumeUploadRequest.json +1 -1
- {sequence_base-0.3.7 → sequence_base-0.3.9}/sequence_base/schemas/VolumeUploadResponse.json +1 -1
- {sequence_base-0.3.7 → sequence_base-0.3.9}/sequence_base/schemas/WarmingError.json +1 -1
- {sequence_base-0.3.7 → sequence_base-0.3.9}/tests/test_contracts.py +37 -0
- sequence_base-0.3.7/sequence_base/schemas/ImageStepRun.json +0 -18
- {sequence_base-0.3.7 → sequence_base-0.3.9}/.github/workflows/ci.yml +0 -0
- {sequence_base-0.3.7 → sequence_base-0.3.9}/.gitignore +0 -0
- {sequence_base-0.3.7 → sequence_base-0.3.9}/README.md +0 -0
- {sequence_base-0.3.7 → sequence_base-0.3.9}/docs/platform/README.md +0 -0
- {sequence_base-0.3.7 → sequence_base-0.3.9}/docs/platform/REVIEW.md +0 -0
- {sequence_base-0.3.7 → sequence_base-0.3.9}/docs/platform/START.md +0 -0
- {sequence_base-0.3.7 → sequence_base-0.3.9}/docs/platform/accounts.md +0 -0
- {sequence_base-0.3.7 → sequence_base-0.3.9}/docs/platform/billing.md +0 -0
- {sequence_base-0.3.7 → sequence_base-0.3.9}/docs/platform/build/BUILD_LOG.md +0 -0
- {sequence_base-0.3.7 → sequence_base-0.3.9}/docs/platform/build/goal_sha256.json +0 -0
- {sequence_base-0.3.7 → sequence_base-0.3.9}/docs/platform/build/gs-build-wave.js +0 -0
- {sequence_base-0.3.7 → sequence_base-0.3.9}/docs/platform/build/gs-spec-goals.js +0 -0
- {sequence_base-0.3.7 → sequence_base-0.3.9}/docs/platform/container.md +0 -0
- {sequence_base-0.3.7 → sequence_base-0.3.9}/docs/platform/contracts.md +0 -0
- {sequence_base-0.3.7 → sequence_base-0.3.9}/docs/platform/deploy/PLAN.md +0 -0
- {sequence_base-0.3.7 → sequence_base-0.3.9}/docs/platform/deploy/PROD_REORG.md +0 -0
- {sequence_base-0.3.7 → sequence_base-0.3.9}/docs/platform/deploy/SCHEMA_COMPAT.md +0 -0
- {sequence_base-0.3.7 → sequence_base-0.3.9}/docs/platform/deploy/archive/sequences-gw.genseq-506918.20261001.yaml +0 -0
- {sequence_base-0.3.7 → sequence_base-0.3.9}/docs/platform/eval.md +0 -0
- {sequence_base-0.3.7 → sequence_base-0.3.9}/docs/platform/gateway.md +0 -0
- {sequence_base-0.3.7 → sequence_base-0.3.9}/docs/platform/goals/A1.yaml +0 -0
- {sequence_base-0.3.7 → sequence_base-0.3.9}/docs/platform/goals/A2.yaml +0 -0
- {sequence_base-0.3.7 → sequence_base-0.3.9}/docs/platform/goals/A3.yaml +0 -0
- {sequence_base-0.3.7 → sequence_base-0.3.9}/docs/platform/goals/C1.yaml +0 -0
- {sequence_base-0.3.7 → sequence_base-0.3.9}/docs/platform/goals/C2.yaml +0 -0
- {sequence_base-0.3.7 → sequence_base-0.3.9}/docs/platform/goals/C3.yaml +0 -0
- {sequence_base-0.3.7 → sequence_base-0.3.9}/docs/platform/goals/C4.yaml +0 -0
- {sequence_base-0.3.7 → sequence_base-0.3.9}/docs/platform/goals/C5.yaml +0 -0
- {sequence_base-0.3.7 → sequence_base-0.3.9}/docs/platform/goals/G1.yaml +0 -0
- {sequence_base-0.3.7 → sequence_base-0.3.9}/docs/platform/goals/G2.yaml +0 -0
- {sequence_base-0.3.7 → sequence_base-0.3.9}/docs/platform/goals/G3.yaml +0 -0
- {sequence_base-0.3.7 → sequence_base-0.3.9}/docs/platform/goals/G4.yaml +0 -0
- {sequence_base-0.3.7 → sequence_base-0.3.9}/docs/platform/goals/G5.yaml +0 -0
- {sequence_base-0.3.7 → sequence_base-0.3.9}/docs/platform/goals/O1.yaml +0 -0
- {sequence_base-0.3.7 → sequence_base-0.3.9}/docs/platform/goals/O2.yaml +0 -0
- {sequence_base-0.3.7 → sequence_base-0.3.9}/docs/platform/goals/O3.yaml +0 -0
- {sequence_base-0.3.7 → sequence_base-0.3.9}/docs/platform/goals/O4.yaml +0 -0
- {sequence_base-0.3.7 → sequence_base-0.3.9}/docs/platform/goals/O5.yaml +0 -0
- {sequence_base-0.3.7 → sequence_base-0.3.9}/docs/platform/goals/R1.yaml +0 -0
- {sequence_base-0.3.7 → sequence_base-0.3.9}/docs/platform/goals/R2.yaml +0 -0
- {sequence_base-0.3.7 → sequence_base-0.3.9}/docs/platform/goals/R3.yaml +0 -0
- {sequence_base-0.3.7 → sequence_base-0.3.9}/docs/platform/goals/S1.yaml +0 -0
- {sequence_base-0.3.7 → sequence_base-0.3.9}/docs/platform/goals/S2.yaml +0 -0
- {sequence_base-0.3.7 → sequence_base-0.3.9}/docs/platform/goals/S3.yaml +0 -0
- {sequence_base-0.3.7 → sequence_base-0.3.9}/docs/platform/goals/S4.yaml +0 -0
- {sequence_base-0.3.7 → sequence_base-0.3.9}/docs/platform/goals/S5.yaml +0 -0
- {sequence_base-0.3.7 → sequence_base-0.3.9}/docs/platform/goals/S6.yaml +0 -0
- {sequence_base-0.3.7 → sequence_base-0.3.9}/docs/platform/goals/V1-storage.md +0 -0
- {sequence_base-0.3.7 → sequence_base-0.3.9}/docs/platform/goals/V2-user-quotas.md +0 -0
- {sequence_base-0.3.7 → sequence_base-0.3.9}/docs/platform/goals/W0.1.yaml +0 -0
- {sequence_base-0.3.7 → sequence_base-0.3.9}/docs/platform/goals/W0.2.yaml +0 -0
- {sequence_base-0.3.7 → sequence_base-0.3.9}/docs/platform/modal/README.md +0 -0
- {sequence_base-0.3.7 → sequence_base-0.3.9}/docs/platform/modal/architecture.md +0 -0
- {sequence_base-0.3.7 → sequence_base-0.3.9}/docs/platform/modal/connect.md +0 -0
- {sequence_base-0.3.7 → sequence_base-0.3.9}/docs/platform/modal/cost.md +0 -0
- {sequence_base-0.3.7 → sequence_base-0.3.9}/docs/platform/modal/custom-domain.md +0 -0
- {sequence_base-0.3.7 → sequence_base-0.3.9}/docs/platform/modal/debugging.md +0 -0
- {sequence_base-0.3.7 → sequence_base-0.3.9}/docs/platform/modal/goals.md +0 -0
- {sequence_base-0.3.7 → sequence_base-0.3.9}/docs/platform/modal/limits.md +0 -0
- {sequence_base-0.3.7 → sequence_base-0.3.9}/docs/platform/modal/plan.md +0 -0
- {sequence_base-0.3.7 → sequence_base-0.3.9}/docs/platform/modal/white-label.md +0 -0
- {sequence_base-0.3.7 → sequence_base-0.3.9}/docs/platform/modal/wiring.md +0 -0
- {sequence_base-0.3.7 → sequence_base-0.3.9}/docs/platform/observability.md +0 -0
- {sequence_base-0.3.7 → sequence_base-0.3.9}/docs/platform/references.md +0 -0
- {sequence_base-0.3.7 → sequence_base-0.3.9}/docs/platform/sdk.md +0 -0
- {sequence_base-0.3.7 → sequence_base-0.3.9}/sequence_base/__init__.py +0 -0
- {sequence_base-0.3.7 → sequence_base-0.3.9}/sequence_base/auth.py +0 -0
- {sequence_base-0.3.7 → sequence_base-0.3.9}/sequence_base/codec/__init__.py +0 -0
- {sequence_base-0.3.7 → sequence_base-0.3.9}/sequence_base/codec/image.py +0 -0
- {sequence_base-0.3.7 → sequence_base-0.3.9}/sequence_base/codec/resize.py +0 -0
- {sequence_base-0.3.7 → sequence_base-0.3.9}/sequence_base/constants/__init__.py +0 -0
- {sequence_base-0.3.7 → sequence_base-0.3.9}/sequence_base/constants/env.py +0 -0
- {sequence_base-0.3.7 → sequence_base-0.3.9}/sequence_base/constants/headers.py +0 -0
- {sequence_base-0.3.7 → sequence_base-0.3.9}/sequence_base/contract/__init__.py +0 -0
- {sequence_base-0.3.7 → sequence_base-0.3.9}/sequence_base/contract/accounts.py +0 -0
- {sequence_base-0.3.7 → sequence_base-0.3.9}/sequence_base/contract/act.py +0 -0
- {sequence_base-0.3.7 → sequence_base-0.3.9}/sequence_base/contract/connect.py +0 -0
- {sequence_base-0.3.7 → sequence_base-0.3.9}/sequence_base/contract/errors.py +0 -0
- {sequence_base-0.3.7 → sequence_base-0.3.9}/sequence_base/contract/eval.py +0 -0
- {sequence_base-0.3.7 → sequence_base-0.3.9}/sequence_base/contract/flags.py +0 -0
- {sequence_base-0.3.7 → sequence_base-0.3.9}/sequence_base/contract/volumes.py +0 -0
- {sequence_base-0.3.7 → sequence_base-0.3.9}/sequence_base/errors/__init__.py +0 -0
- {sequence_base-0.3.7 → sequence_base-0.3.9}/sequence_base/errors/transport.py +0 -0
- {sequence_base-0.3.7 → sequence_base-0.3.9}/sequence_base/obs/__init__.py +0 -0
- {sequence_base-0.3.7 → sequence_base-0.3.9}/sequence_base/obs/log.py +0 -0
- {sequence_base-0.3.7 → sequence_base-0.3.9}/sequence_base/obs/rid.py +0 -0
- {sequence_base-0.3.7 → sequence_base-0.3.9}/sequence_base/schema_export.py +0 -0
- {sequence_base-0.3.7 → sequence_base-0.3.9}/sequence_base/telemetry/__init__.py +0 -0
- {sequence_base-0.3.7 → sequence_base-0.3.9}/sequence_base/telemetry/events.py +0 -0
- {sequence_base-0.3.7 → sequence_base-0.3.9}/tests/test_codec_roundtrip.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: sequence-base
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.9
|
|
4
4
|
Summary: Shared foundation for the Sequences platform — wire contract, correlation, error taxonomy, constants. Used by the robot SDK, gateway, and container harness.
|
|
5
5
|
Requires-Python: >=3.11
|
|
6
6
|
Requires-Dist: pydantic>=2.0
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "sequence-base"
|
|
3
|
-
version = "0.3.
|
|
3
|
+
version = "0.3.9"
|
|
4
4
|
description = "Shared foundation for the Sequences platform — wire contract, correlation, error taxonomy, constants. Used by the robot SDK, gateway, and container harness."
|
|
5
5
|
requires-python = ">=3.11"
|
|
6
6
|
dependencies = ["pydantic>=2.0"]
|
|
@@ -6,7 +6,9 @@ PROTOCOL_VERSION = "1"
|
|
|
6
6
|
# across deployments / repos can tell which version of a shape it is validating against. MUST change
|
|
7
7
|
# whenever any shared wire shape changes (a field added / removed / retyped) — that is what makes
|
|
8
8
|
# contract evolution mechanically detectable instead of eyeballed. Bump on any shape change.
|
|
9
|
-
CONTRACT_VERSION = "0.4.
|
|
9
|
+
CONTRACT_VERSION = "0.4.8" # 0.4.7 -> 0.4.8: ImageSpec.python, ImageStepRun.secrets, Resources.region, DeploymentRequest/BenchmarkRegisterRequest.image_context
|
|
10
|
+
# previous: 0.4.7 # 0.4.6 -> 0.4.7: ActionContract.bounds / max_delta / on_violation (action limits)
|
|
11
|
+
# previous: 0.4.6 # 0.4.5 -> 0.4.6: InferParam + DeploymentPolicy.params; EvalRequest.params / variants / record; BenchmarkRegisterRequest.gpu
|
|
10
12
|
# previous: 0.4.5 # 0.4.4 -> 0.4.5: BenchmarkRegisterRequest.condition_list / timeout_s / default_adapter_ref (+ BenchmarkConditionSpec); EvalRequest.tasks / max_usd / rerun_of
|
|
11
13
|
# previous: 0.4.4 # 0.4.3 -> 0.4.4: BenchmarkRegisterRequest.secrets (by name) + score (has @seq.score)
|
|
12
14
|
# previous: 0.4.3 # 0.4.2 -> 0.4.3: I/O contract — ObservationContract/Camera/Embodiment on PolicySpec + DeploymentPolicy, Observation.state, ConnectRequest.embodiment, ConnectResponse.action/observation/embodiment
|
|
@@ -168,6 +168,8 @@ class BenchmarkRegisterRequest(BaseModel):
|
|
|
168
168
|
default_adapter_ref: str | None = None
|
|
169
169
|
# A GPU for each sim sandbox (a renderer or a GPU physics engine): a card name the platform offers. None: CPU.
|
|
170
170
|
gpu: str | None = Field(default=None, max_length=32)
|
|
171
|
+
# The Dockerfile's build context, as for a deployment.
|
|
172
|
+
image_context: CodeBundle | None = None
|
|
171
173
|
|
|
172
174
|
|
|
173
175
|
class BenchmarkStatusResponse(BaseModel):
|
|
@@ -53,6 +53,9 @@ class Resources(BaseModel):
|
|
|
53
53
|
gpu: list[str]
|
|
54
54
|
cpu: int
|
|
55
55
|
memory_gb: int
|
|
56
|
+
# Where the workers run (near the robots): one of the regions the platform offers. None: the platform picks.
|
|
57
|
+
# {gs-plans/customization/policy.md "区域"}
|
|
58
|
+
region: str | None = Field(default=None, max_length=32)
|
|
56
59
|
|
|
57
60
|
|
|
58
61
|
class Autoscaler(BaseModel):
|
|
@@ -190,6 +193,9 @@ class DeploymentRequest(BaseModel):
|
|
|
190
193
|
# The handler's source. None only when `handler_ref` is importable from the image itself (a package the
|
|
191
194
|
# ImageSpec installs); otherwise the worker has nothing to import and the build fails.
|
|
192
195
|
code: CodeBundle | None = None
|
|
196
|
+
# The Dockerfile's build context (the directory its COPY / ADD read), shipped like the code. Only with
|
|
197
|
+
# image.dockerfile. {gs-plans/customization/policy.md "DOCKERFILE 的 BUILD CONTEXT"}
|
|
198
|
+
image_context: CodeBundle | None = None
|
|
193
199
|
# Non-weights volumes the policy declares (goal 7). List, not dict, so a mount is never duplicated as
|
|
194
200
|
# both key and value; the gateway only stores the dump, no consumer needs dict lookup.
|
|
195
201
|
volumes: list[VolumeAttach] = Field(default_factory=list)
|
|
@@ -11,9 +11,9 @@ policy → accounts → connect would otherwise import back into policy.
|
|
|
11
11
|
"""
|
|
12
12
|
from __future__ import annotations
|
|
13
13
|
|
|
14
|
-
from typing import Any
|
|
14
|
+
from typing import Any, Literal
|
|
15
15
|
|
|
16
|
-
from pydantic import BaseModel, ConfigDict, Field, field_validator
|
|
16
|
+
from pydantic import BaseModel, ConfigDict, Field, field_validator, model_validator
|
|
17
17
|
|
|
18
18
|
from sequence_base.contract.act import ActionSpace
|
|
19
19
|
|
|
@@ -28,6 +28,30 @@ class ActionContract(BaseModel):
|
|
|
28
28
|
action_space: ActionSpace
|
|
29
29
|
action_dim: int
|
|
30
30
|
control_frequency_hz: float
|
|
31
|
+
# Safety limits, enforced by the worker on every chunk before it leaves and by the robot client again before it
|
|
32
|
+
# executes: each dimension's [low, high], and the largest change between consecutive steps (one number for every
|
|
33
|
+
# dimension, or one per dimension). None: unchecked. {gs-plans/customization/deployment.md "五、安全:动作限位"}
|
|
34
|
+
bounds: list[tuple[float, float]] | None = Field(default=None, max_length=256)
|
|
35
|
+
max_delta: float | list[float] | None = None
|
|
36
|
+
# What a chunk outside them gets: "clip" (the default when None) — clipped into them, each clipped step and
|
|
37
|
+
# dimension named in the response's warnings — or "refuse": the worker answers 500 bounds_violation instead.
|
|
38
|
+
on_violation: Literal["clip", "refuse"] | None = None
|
|
39
|
+
|
|
40
|
+
@model_validator(mode="after")
|
|
41
|
+
def _limits_fit(self) -> "ActionContract":
|
|
42
|
+
if self.bounds is not None:
|
|
43
|
+
if len(self.bounds) != self.action_dim:
|
|
44
|
+
raise ValueError(f"bounds has {len(self.bounds)} [low, high] pairs; action_dim is {self.action_dim}")
|
|
45
|
+
for i, (low, high) in enumerate(self.bounds):
|
|
46
|
+
if low > high:
|
|
47
|
+
raise ValueError(f"bounds[{i}] has low {low} above high {high}")
|
|
48
|
+
if self.max_delta is not None:
|
|
49
|
+
deltas = self.max_delta if isinstance(self.max_delta, list) else [self.max_delta]
|
|
50
|
+
if isinstance(self.max_delta, list) and len(deltas) != self.action_dim:
|
|
51
|
+
raise ValueError(f"max_delta has {len(deltas)} values; action_dim is {self.action_dim}")
|
|
52
|
+
if any(d <= 0 for d in deltas):
|
|
53
|
+
raise ValueError("max_delta must be positive")
|
|
54
|
+
return self
|
|
31
55
|
|
|
32
56
|
|
|
33
57
|
# The proprioception fields an observation contract may require, with the wire field each one names.
|
|
@@ -62,6 +62,9 @@ class ImageStepEnv(BaseModel):
|
|
|
62
62
|
class ImageStepRun(BaseModel):
|
|
63
63
|
model_config = ConfigDict(extra="forbid")
|
|
64
64
|
run_commands: list[str]
|
|
65
|
+
# Credentials only these commands see while the image builds (a private git or package index), by name; they
|
|
66
|
+
# are not left in any image layer. {gs-plans/customization/policy.md "私有依赖 … BUILD SECRETS"}
|
|
67
|
+
secrets: list[SecretRef] | None = None
|
|
65
68
|
|
|
66
69
|
|
|
67
70
|
ImageStep = ImageStepUvPip | ImageStepApt | ImageStepEnv | ImageStepRun
|
|
@@ -79,6 +82,9 @@ class ImageSpec(BaseModel):
|
|
|
79
82
|
base: str | None = None
|
|
80
83
|
dockerfile: str | None = None
|
|
81
84
|
steps: list[ImageStep] = Field(default_factory=list)
|
|
85
|
+
# The Python the image runs: "3.11" … "3.13" (the worker runs on 3.11 or later), or "image" to use the one the
|
|
86
|
+
# base image already has. None: the platform's default (3.11). {gs-plans/customization/policy.md "PYTHON 版本"}
|
|
87
|
+
python: str | None = Field(default=None, pattern=r"^(3\.(11|12|13)|image)$")
|
|
82
88
|
|
|
83
89
|
@model_validator(mode="after")
|
|
84
90
|
def _base_xor_dockerfile(self) -> "ImageSpec":
|
|
@@ -22,10 +22,70 @@
|
|
|
22
22
|
"action_space": {
|
|
23
23
|
"$ref": "#/$defs/ActionSpace"
|
|
24
24
|
},
|
|
25
|
+
"bounds": {
|
|
26
|
+
"anyOf": [
|
|
27
|
+
{
|
|
28
|
+
"items": {
|
|
29
|
+
"maxItems": 2,
|
|
30
|
+
"minItems": 2,
|
|
31
|
+
"prefixItems": [
|
|
32
|
+
{
|
|
33
|
+
"type": "number"
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"type": "number"
|
|
37
|
+
}
|
|
38
|
+
],
|
|
39
|
+
"type": "array"
|
|
40
|
+
},
|
|
41
|
+
"maxItems": 256,
|
|
42
|
+
"type": "array"
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"type": "null"
|
|
46
|
+
}
|
|
47
|
+
],
|
|
48
|
+
"default": null,
|
|
49
|
+
"title": "Bounds"
|
|
50
|
+
},
|
|
25
51
|
"control_frequency_hz": {
|
|
26
52
|
"title": "Control Frequency Hz",
|
|
27
53
|
"type": "number"
|
|
28
54
|
},
|
|
55
|
+
"max_delta": {
|
|
56
|
+
"anyOf": [
|
|
57
|
+
{
|
|
58
|
+
"type": "number"
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"items": {
|
|
62
|
+
"type": "number"
|
|
63
|
+
},
|
|
64
|
+
"type": "array"
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
"type": "null"
|
|
68
|
+
}
|
|
69
|
+
],
|
|
70
|
+
"default": null,
|
|
71
|
+
"title": "Max Delta"
|
|
72
|
+
},
|
|
73
|
+
"on_violation": {
|
|
74
|
+
"anyOf": [
|
|
75
|
+
{
|
|
76
|
+
"enum": [
|
|
77
|
+
"clip",
|
|
78
|
+
"refuse"
|
|
79
|
+
],
|
|
80
|
+
"type": "string"
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
"type": "null"
|
|
84
|
+
}
|
|
85
|
+
],
|
|
86
|
+
"default": null,
|
|
87
|
+
"title": "On Violation"
|
|
88
|
+
},
|
|
29
89
|
"robot": {
|
|
30
90
|
"title": "Robot",
|
|
31
91
|
"type": "string"
|
|
@@ -39,5 +99,5 @@
|
|
|
39
99
|
],
|
|
40
100
|
"title": "ActionContract",
|
|
41
101
|
"type": "object",
|
|
42
|
-
"x-contract-version": "0.4.
|
|
102
|
+
"x-contract-version": "0.4.8"
|
|
43
103
|
}
|
{sequence_base-0.3.7 → sequence_base-0.3.9}/sequence_base/schemas/BenchmarkRegisterRequest.json
RENAMED
|
@@ -11,10 +11,70 @@
|
|
|
11
11
|
"action_space": {
|
|
12
12
|
"$ref": "#/$defs/ActionSpace"
|
|
13
13
|
},
|
|
14
|
+
"bounds": {
|
|
15
|
+
"anyOf": [
|
|
16
|
+
{
|
|
17
|
+
"items": {
|
|
18
|
+
"maxItems": 2,
|
|
19
|
+
"minItems": 2,
|
|
20
|
+
"prefixItems": [
|
|
21
|
+
{
|
|
22
|
+
"type": "number"
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"type": "number"
|
|
26
|
+
}
|
|
27
|
+
],
|
|
28
|
+
"type": "array"
|
|
29
|
+
},
|
|
30
|
+
"maxItems": 256,
|
|
31
|
+
"type": "array"
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"type": "null"
|
|
35
|
+
}
|
|
36
|
+
],
|
|
37
|
+
"default": null,
|
|
38
|
+
"title": "Bounds"
|
|
39
|
+
},
|
|
14
40
|
"control_frequency_hz": {
|
|
15
41
|
"title": "Control Frequency Hz",
|
|
16
42
|
"type": "number"
|
|
17
43
|
},
|
|
44
|
+
"max_delta": {
|
|
45
|
+
"anyOf": [
|
|
46
|
+
{
|
|
47
|
+
"type": "number"
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
"items": {
|
|
51
|
+
"type": "number"
|
|
52
|
+
},
|
|
53
|
+
"type": "array"
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
"type": "null"
|
|
57
|
+
}
|
|
58
|
+
],
|
|
59
|
+
"default": null,
|
|
60
|
+
"title": "Max Delta"
|
|
61
|
+
},
|
|
62
|
+
"on_violation": {
|
|
63
|
+
"anyOf": [
|
|
64
|
+
{
|
|
65
|
+
"enum": [
|
|
66
|
+
"clip",
|
|
67
|
+
"refuse"
|
|
68
|
+
],
|
|
69
|
+
"type": "string"
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
"type": "null"
|
|
73
|
+
}
|
|
74
|
+
],
|
|
75
|
+
"default": null,
|
|
76
|
+
"title": "On Violation"
|
|
77
|
+
},
|
|
18
78
|
"robot": {
|
|
19
79
|
"title": "Robot",
|
|
20
80
|
"type": "string"
|
|
@@ -192,6 +252,19 @@
|
|
|
192
252
|
"default": null,
|
|
193
253
|
"title": "Dockerfile"
|
|
194
254
|
},
|
|
255
|
+
"python": {
|
|
256
|
+
"anyOf": [
|
|
257
|
+
{
|
|
258
|
+
"pattern": "^(3\\.(11|12|13)|image)$",
|
|
259
|
+
"type": "string"
|
|
260
|
+
},
|
|
261
|
+
{
|
|
262
|
+
"type": "null"
|
|
263
|
+
}
|
|
264
|
+
],
|
|
265
|
+
"default": null,
|
|
266
|
+
"title": "Python"
|
|
267
|
+
},
|
|
195
268
|
"steps": {
|
|
196
269
|
"items": {
|
|
197
270
|
"anyOf": [
|
|
@@ -259,6 +332,21 @@
|
|
|
259
332
|
},
|
|
260
333
|
"title": "Run Commands",
|
|
261
334
|
"type": "array"
|
|
335
|
+
},
|
|
336
|
+
"secrets": {
|
|
337
|
+
"anyOf": [
|
|
338
|
+
{
|
|
339
|
+
"items": {
|
|
340
|
+
"$ref": "#/$defs/SecretRef"
|
|
341
|
+
},
|
|
342
|
+
"type": "array"
|
|
343
|
+
},
|
|
344
|
+
{
|
|
345
|
+
"type": "null"
|
|
346
|
+
}
|
|
347
|
+
],
|
|
348
|
+
"default": null,
|
|
349
|
+
"title": "Secrets"
|
|
262
350
|
}
|
|
263
351
|
},
|
|
264
352
|
"required": [
|
|
@@ -466,6 +554,17 @@
|
|
|
466
554
|
"image": {
|
|
467
555
|
"$ref": "#/$defs/ImageSpec"
|
|
468
556
|
},
|
|
557
|
+
"image_context": {
|
|
558
|
+
"anyOf": [
|
|
559
|
+
{
|
|
560
|
+
"$ref": "#/$defs/CodeBundle"
|
|
561
|
+
},
|
|
562
|
+
{
|
|
563
|
+
"type": "null"
|
|
564
|
+
}
|
|
565
|
+
],
|
|
566
|
+
"default": null
|
|
567
|
+
},
|
|
469
568
|
"max_steps": {
|
|
470
569
|
"title": "Max Steps",
|
|
471
570
|
"type": "integer"
|
|
@@ -539,5 +638,5 @@
|
|
|
539
638
|
],
|
|
540
639
|
"title": "BenchmarkRegisterRequest",
|
|
541
640
|
"type": "object",
|
|
542
|
-
"x-contract-version": "0.4.
|
|
641
|
+
"x-contract-version": "0.4.8"
|
|
543
642
|
}
|
|
@@ -61,6 +61,19 @@
|
|
|
61
61
|
"default": null,
|
|
62
62
|
"title": "Dockerfile"
|
|
63
63
|
},
|
|
64
|
+
"python": {
|
|
65
|
+
"anyOf": [
|
|
66
|
+
{
|
|
67
|
+
"pattern": "^(3\\.(11|12|13)|image)$",
|
|
68
|
+
"type": "string"
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
"type": "null"
|
|
72
|
+
}
|
|
73
|
+
],
|
|
74
|
+
"default": null,
|
|
75
|
+
"title": "Python"
|
|
76
|
+
},
|
|
64
77
|
"steps": {
|
|
65
78
|
"items": {
|
|
66
79
|
"anyOf": [
|
|
@@ -128,6 +141,21 @@
|
|
|
128
141
|
},
|
|
129
142
|
"title": "Run Commands",
|
|
130
143
|
"type": "array"
|
|
144
|
+
},
|
|
145
|
+
"secrets": {
|
|
146
|
+
"anyOf": [
|
|
147
|
+
{
|
|
148
|
+
"items": {
|
|
149
|
+
"$ref": "#/$defs/SecretRef"
|
|
150
|
+
},
|
|
151
|
+
"type": "array"
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
"type": "null"
|
|
155
|
+
}
|
|
156
|
+
],
|
|
157
|
+
"default": null,
|
|
158
|
+
"title": "Secrets"
|
|
131
159
|
}
|
|
132
160
|
},
|
|
133
161
|
"required": [
|
|
@@ -207,7 +235,7 @@
|
|
|
207
235
|
],
|
|
208
236
|
"title": "SeqFlags",
|
|
209
237
|
"type": "integer",
|
|
210
|
-
"x-contract-version": "0.4.
|
|
238
|
+
"x-contract-version": "0.4.8",
|
|
211
239
|
"x-flag-names": {
|
|
212
240
|
"CHECK": 65536,
|
|
213
241
|
"INFER": 16,
|
|
@@ -397,5 +425,5 @@
|
|
|
397
425
|
],
|
|
398
426
|
"title": "BenchmarkSpec",
|
|
399
427
|
"type": "object",
|
|
400
|
-
"x-contract-version": "0.4.
|
|
428
|
+
"x-contract-version": "0.4.8"
|
|
401
429
|
}
|
|
@@ -11,10 +11,70 @@
|
|
|
11
11
|
"action_space": {
|
|
12
12
|
"$ref": "#/$defs/ActionSpace"
|
|
13
13
|
},
|
|
14
|
+
"bounds": {
|
|
15
|
+
"anyOf": [
|
|
16
|
+
{
|
|
17
|
+
"items": {
|
|
18
|
+
"maxItems": 2,
|
|
19
|
+
"minItems": 2,
|
|
20
|
+
"prefixItems": [
|
|
21
|
+
{
|
|
22
|
+
"type": "number"
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"type": "number"
|
|
26
|
+
}
|
|
27
|
+
],
|
|
28
|
+
"type": "array"
|
|
29
|
+
},
|
|
30
|
+
"maxItems": 256,
|
|
31
|
+
"type": "array"
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"type": "null"
|
|
35
|
+
}
|
|
36
|
+
],
|
|
37
|
+
"default": null,
|
|
38
|
+
"title": "Bounds"
|
|
39
|
+
},
|
|
14
40
|
"control_frequency_hz": {
|
|
15
41
|
"title": "Control Frequency Hz",
|
|
16
42
|
"type": "number"
|
|
17
43
|
},
|
|
44
|
+
"max_delta": {
|
|
45
|
+
"anyOf": [
|
|
46
|
+
{
|
|
47
|
+
"type": "number"
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
"items": {
|
|
51
|
+
"type": "number"
|
|
52
|
+
},
|
|
53
|
+
"type": "array"
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
"type": "null"
|
|
57
|
+
}
|
|
58
|
+
],
|
|
59
|
+
"default": null,
|
|
60
|
+
"title": "Max Delta"
|
|
61
|
+
},
|
|
62
|
+
"on_violation": {
|
|
63
|
+
"anyOf": [
|
|
64
|
+
{
|
|
65
|
+
"enum": [
|
|
66
|
+
"clip",
|
|
67
|
+
"refuse"
|
|
68
|
+
],
|
|
69
|
+
"type": "string"
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
"type": "null"
|
|
73
|
+
}
|
|
74
|
+
],
|
|
75
|
+
"default": null,
|
|
76
|
+
"title": "On Violation"
|
|
77
|
+
},
|
|
18
78
|
"robot": {
|
|
19
79
|
"title": "Robot",
|
|
20
80
|
"type": "string"
|
|
@@ -221,5 +281,5 @@
|
|
|
221
281
|
],
|
|
222
282
|
"title": "ConnectResponse",
|
|
223
283
|
"type": "object",
|
|
224
|
-
"x-contract-version": "0.4.
|
|
284
|
+
"x-contract-version": "0.4.8"
|
|
225
285
|
}
|
|
@@ -11,10 +11,70 @@
|
|
|
11
11
|
"action_space": {
|
|
12
12
|
"$ref": "#/$defs/ActionSpace"
|
|
13
13
|
},
|
|
14
|
+
"bounds": {
|
|
15
|
+
"anyOf": [
|
|
16
|
+
{
|
|
17
|
+
"items": {
|
|
18
|
+
"maxItems": 2,
|
|
19
|
+
"minItems": 2,
|
|
20
|
+
"prefixItems": [
|
|
21
|
+
{
|
|
22
|
+
"type": "number"
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"type": "number"
|
|
26
|
+
}
|
|
27
|
+
],
|
|
28
|
+
"type": "array"
|
|
29
|
+
},
|
|
30
|
+
"maxItems": 256,
|
|
31
|
+
"type": "array"
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"type": "null"
|
|
35
|
+
}
|
|
36
|
+
],
|
|
37
|
+
"default": null,
|
|
38
|
+
"title": "Bounds"
|
|
39
|
+
},
|
|
14
40
|
"control_frequency_hz": {
|
|
15
41
|
"title": "Control Frequency Hz",
|
|
16
42
|
"type": "number"
|
|
17
43
|
},
|
|
44
|
+
"max_delta": {
|
|
45
|
+
"anyOf": [
|
|
46
|
+
{
|
|
47
|
+
"type": "number"
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
"items": {
|
|
51
|
+
"type": "number"
|
|
52
|
+
},
|
|
53
|
+
"type": "array"
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
"type": "null"
|
|
57
|
+
}
|
|
58
|
+
],
|
|
59
|
+
"default": null,
|
|
60
|
+
"title": "Max Delta"
|
|
61
|
+
},
|
|
62
|
+
"on_violation": {
|
|
63
|
+
"anyOf": [
|
|
64
|
+
{
|
|
65
|
+
"enum": [
|
|
66
|
+
"clip",
|
|
67
|
+
"refuse"
|
|
68
|
+
],
|
|
69
|
+
"type": "string"
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
"type": "null"
|
|
73
|
+
}
|
|
74
|
+
],
|
|
75
|
+
"default": null,
|
|
76
|
+
"title": "On Violation"
|
|
77
|
+
},
|
|
18
78
|
"robot": {
|
|
19
79
|
"title": "Robot",
|
|
20
80
|
"type": "string"
|
|
@@ -293,5 +353,5 @@
|
|
|
293
353
|
],
|
|
294
354
|
"title": "DeploymentPolicy",
|
|
295
355
|
"type": "object",
|
|
296
|
-
"x-contract-version": "0.4.
|
|
356
|
+
"x-contract-version": "0.4.8"
|
|
297
357
|
}
|