sequence-base 0.3.19__tar.gz → 0.3.22__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (106) hide show
  1. {sequence_base-0.3.19 → sequence_base-0.3.22}/PKG-INFO +1 -1
  2. {sequence_base-0.3.19 → sequence_base-0.3.22}/pyproject.toml +1 -1
  3. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/constants/version.py +4 -1
  4. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/contract/accounts.py +2 -1
  5. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/contract/benchmarks.py +9 -0
  6. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/contract/deployments.py +19 -3
  7. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/contract/policy.py +7 -4
  8. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/schemas/ActRequest.json +1 -1
  9. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/schemas/ActResponse.json +1 -1
  10. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/schemas/ActionChunk.json +1 -1
  11. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/schemas/ActionContract.json +1 -1
  12. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/schemas/ActionStep.json +1 -1
  13. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/schemas/AdapterTransform.json +1 -1
  14. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/schemas/AddLocal.json +1 -1
  15. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/schemas/Autoscaler.json +1 -1
  16. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/schemas/BenchmarkConditionSpec.json +1 -1
  17. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/schemas/BenchmarkRegisterRequest.json +19 -1
  18. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/schemas/BenchmarkSpec.json +20 -2
  19. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/schemas/BenchmarkStatusResponse.json +1 -1
  20. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/schemas/BootstrapResponse.json +11 -4
  21. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/schemas/Camera.json +1 -1
  22. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/schemas/ClampInfo.json +1 -1
  23. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/schemas/CodeBundle.json +1 -1
  24. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/schemas/Concurrency.json +1 -1
  25. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/schemas/Conditions.json +1 -1
  26. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/schemas/ConnectRequest.json +1 -1
  27. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/schemas/ConnectResponse.json +1 -1
  28. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/schemas/DeploymentAccepted.json +1 -1
  29. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/schemas/DeploymentPolicy.json +17 -1
  30. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/schemas/DeploymentRequest.json +27 -4
  31. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/schemas/DeploymentStatusResponse.json +1 -1
  32. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/schemas/Embodiment.json +1 -1
  33. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/schemas/ErrorBody.json +1 -1
  34. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/schemas/ErrorCodes.json +1 -1
  35. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/schemas/Estimate.json +1 -1
  36. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/schemas/EvalDryRunResponse.json +1 -1
  37. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/schemas/EvalReport.json +1 -1
  38. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/schemas/EvalRequest.json +1 -1
  39. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/schemas/EvalResponse.json +1 -1
  40. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/schemas/ImageFrame.json +1 -1
  41. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/schemas/ImageSpec.json +1 -1
  42. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/schemas/ImageStepAddLocal.json +1 -1
  43. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/schemas/ImageStepApt.json +1 -1
  44. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/schemas/ImageStepEnv.json +1 -1
  45. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/schemas/ImageStepRun.json +1 -1
  46. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/schemas/ImageStepUvPip.json +1 -1
  47. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/schemas/InferParam.json +1 -1
  48. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/schemas/Lease.json +1 -1
  49. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/schemas/LossyTransform.json +1 -1
  50. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/schemas/MetricAgg.json +1 -1
  51. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/schemas/Observation.json +1 -1
  52. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/schemas/ObservationContract.json +1 -1
  53. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/schemas/PolicyRegistration.json +14 -7
  54. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/schemas/PolicySpec.json +13 -6
  55. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/schemas/Proprioception.json +1 -1
  56. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/schemas/RenderSpec.json +19 -1
  57. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/schemas/Resources.json +1 -1
  58. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/schemas/RolloutResult.json +1 -1
  59. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/schemas/SecretCreateRequest.json +1 -1
  60. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/schemas/SecretInfo.json +1 -1
  61. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/schemas/SecretRef.json +1 -1
  62. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/schemas/SeqFlags.json +1 -1
  63. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/schemas/Step.json +19 -1
  64. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/schemas/SuiteAgg.json +1 -1
  65. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/schemas/TaskAgg.json +1 -1
  66. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/schemas/Timeouts.json +1 -1
  67. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/schemas/UploadTarget.json +1 -1
  68. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/schemas/UsageReport.json +1 -1
  69. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/schemas/Variant.json +1 -1
  70. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/schemas/VolumeAttach.json +1 -1
  71. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/schemas/VolumeFile.json +1 -1
  72. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/schemas/VolumeInfo.json +1 -1
  73. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/schemas/VolumeMount.json +1 -1
  74. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/schemas/VolumeRef.json +1 -1
  75. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/schemas/VolumeUploadRequest.json +1 -1
  76. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/schemas/VolumeUploadResponse.json +1 -1
  77. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/schemas/WarmingError.json +1 -1
  78. {sequence_base-0.3.19 → sequence_base-0.3.22}/.gitignore +0 -0
  79. {sequence_base-0.3.19 → sequence_base-0.3.22}/README.md +0 -0
  80. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/__init__.py +0 -0
  81. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/auth.py +0 -0
  82. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/codec/__init__.py +0 -0
  83. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/codec/image.py +0 -0
  84. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/constants/__init__.py +0 -0
  85. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/constants/env.py +0 -0
  86. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/constants/headers.py +0 -0
  87. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/contract/__init__.py +0 -0
  88. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/contract/act.py +0 -0
  89. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/contract/connect.py +0 -0
  90. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/contract/errors.py +0 -0
  91. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/contract/eval.py +0 -0
  92. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/contract/flags.py +0 -0
  93. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/contract/io.py +0 -0
  94. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/contract/templates.py +0 -0
  95. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/contract/volumes.py +0 -0
  96. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/contract/wire.py +0 -0
  97. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/errors/__init__.py +0 -0
  98. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/errors/transport.py +0 -0
  99. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/obs/__init__.py +0 -0
  100. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/obs/log.py +0 -0
  101. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/obs/rid.py +0 -0
  102. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/presets/__init__.py +0 -0
  103. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/presets/robot_arm.py +0 -0
  104. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/schema_export.py +0 -0
  105. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/telemetry/__init__.py +0 -0
  106. {sequence_base-0.3.19 → sequence_base-0.3.22}/sequence_base/telemetry/events.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: sequence-base
3
- Version: 0.3.19
3
+ Version: 0.3.22
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.10
6
6
  Requires-Dist: pydantic>=2.0
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "sequence-base"
3
- version = "0.3.19"
3
+ version = "0.3.22"
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
  # 3.10, not 3.11: `seq` (which imports this) must run on ROS 2 Humble's Python 3.10, and nothing here needs 3.11.
6
6
  # {2026-10-03 the full suite on CPython 3.10.20: "147 PASSED"; vermin --eval-annotations: "MINIMUM REQUIRED VERSIONS: 3.9"}
@@ -4,7 +4,10 @@
4
4
  # across deployments / repos can tell which version of a shape it is validating against. MUST change
5
5
  # whenever any shared wire shape changes (a field added / removed / retyped) — that is what makes
6
6
  # contract evolution mechanically detectable instead of eyeballed. Bump on any shape change.
7
- CONTRACT_VERSION = "0.4.16" # 0.4.15 -> 0.4.16: batched benchmarks — SeqFlags.OBSERVE / STEP, BenchmarkSpec / BenchmarkRegisterRequest.envs and .batched; per-arm eval reports — EvalReport.arms / paired / timing / stop_reason, EvalStatus.CANCELED, Estimate.breakdown / default_timing, EvalResponse.arms, EvalDryRunResponse.layout / notes
7
+ CONTRACT_VERSION = "0.4.19" # 0.4.18 -> 0.4.19: RenderSpec.flip — how the platform turns a recorded camera's frames before encoding ("vertical" / "horizontal" / "both"; None, left off the wire, as drawn), declared once by the benchmark's author (seq.Record(flip=...)); gs-plans benchmarks
8
+ # previous: 0.4.18 # 0.4.17 -> 0.4.18: DeploymentPolicy.models — the platform models a policy calls while it runs (catalogue ids), which the act key driving it may call on /v1/chat and /v1/decide (gs-plans models-api/11)
9
+ # previous: 0.4.17 # 0.4.16 -> 0.4.17: weights optional — PolicySpec.weights, DeploymentRequest.weights and BootstrapResponse.weights_uri may be None, for a policy without a checkpoint (nothing copied or mounted; gs-plans storage T13)
10
+ # previous: 0.4.16 # 0.4.15 -> 0.4.16: batched benchmarks — SeqFlags.OBSERVE / STEP, BenchmarkSpec / BenchmarkRegisterRequest.envs and .batched; per-arm eval reports — EvalReport.arms / paired / timing / stop_reason, EvalStatus.CANCELED, Estimate.breakdown / default_timing, EvalResponse.arms, EvalDryRunResponse.layout / notes
8
11
  # previous: 0.4.15 # 0.4.14 -> 0.4.15: limits count GPUs and CPU/memory are billed like Modal — Resources.cpu / memory_gb optional floats + cpu_limit / memory_limit_gb; Autoscaler.max_gpus / on_full / queue_timeout_s replace max_containers; Concurrency fields optional + replicas_per_gpu / gpus_per_replica; DeploymentStatusResponse.reason; EvalRequest.policy_instances / policy_gpu / benchmark_instances / benchmark_gpu / envs replace gpus / envs_per_gpu; EvalStatus.QUEUED; EvalCards / EvalQueue
9
12
  # previous: 0.4.14 # 0.4.13 -> 0.4.14: the /act wire is opaque (ActRequest.inputs / ActResponse.outputs); action / observation contracts optional + DeploymentPolicy/PolicySpec/ConnectResponse .io; the robot-arm types live in sequence_base.presets.robot_arm (contract.act / contract.io re-export them); ImageStepAddLocal (seq.Image.add_local_*); ActionSpace.JOINT_VELOCITY (pi0.5 DROID's joint velocities + gripper position)
10
13
  # previous: 0.4.13 # 0.4.12 -> 0.4.13: template://<name>[@v<n>] — official template weights (parse_template); gs:// / s3:// / https:// still accepted until their removal
@@ -76,7 +76,8 @@ class BootstrapResponse(BaseModel):
76
76
  tls_key: str = Field(..., description="Self-signed TLS private key (down-direction platform secret)")
77
77
  tls_cert: str = Field(..., description="Self-signed TLS certificate (public)")
78
78
  env: dict[str, str] = Field(..., description="Policy's user secrets, expanded ENV_KEY → value")
79
- weights_uri: str
79
+ # None: a policy without a checkpoint — nothing was copied or mounted. {gs-plans/storage T13}
80
+ weights_uri: str | None = None
80
81
  lease: Lease
81
82
 
82
83
 
@@ -12,6 +12,8 @@ benchmark per-step result — a different type from ImageSpec's build `ImageStep
12
12
  """
13
13
  from __future__ import annotations
14
14
 
15
+ from typing import Literal
16
+
15
17
  from pydantic import BaseModel, ConfigDict, Field, model_validator
16
18
 
17
19
  from sequence_base.contract.accounts import SecretRef
@@ -58,6 +60,13 @@ class RenderSpec(BaseModel):
58
60
 
59
61
  camera: str = Field(..., description="Which camera to pull frames from, e.g. 'wrist' / 'agentview'")
60
62
  fps: int = 30
63
+ # How the platform turns each frame before encoding it. Whether a camera's picture is upside down is a property of
64
+ # the renderer (OpenGL's glReadPixels returns the bottom row first: LIBERO / robosuite), so its author says it once
65
+ # here instead of everyone who runs an eval passing it. {gs-plans inbox "LIBERO 风格的相机录出来是倒的"}
66
+ # None (as drawn) is left off the wire, so a recording that is not turned registers on any platform version.
67
+ flip: Literal["vertical", "horizontal", "both"] | None = Field(
68
+ None, description="'vertical': rows reversed (upside down); 'horizontal': mirrored; 'both': turned 180°; "
69
+ "None: as drawn")
61
70
 
62
71
 
63
72
  class Step(BaseModel):
@@ -157,12 +157,23 @@ class DeploymentPolicy(BaseModel):
157
157
  # The inference parameters @seq.infer takes beyond the observation (name -> type, default). None: an older
158
158
  # SDK that did not look; {}: the policy declares none.
159
159
  params: dict[str, InferParam] | None = Field(default=None, max_length=32)
160
+ # The platform models the policy calls while it runs (`@seq.policy(models=[...])`), by full catalogue id
161
+ # (accounts/sequences/models/<name>): the act key that drives this deployment may call exactly these on /v1/chat
162
+ # and /v1/decide, and nothing else it could spend on. None: the policy calls none (and an older SDK never sent it).
163
+ # {gs-plans models-api/11, user 2026-10-04 "act key should have ability to call any model involved in the policy"}
164
+ models: list[str] | None = Field(default=None, max_length=16)
160
165
 
161
166
  @model_validator(mode="after")
162
167
  def _param_names(self) -> "DeploymentPolicy":
163
168
  for name in self.params or {}:
164
169
  if not name.isidentifier() or name.startswith("_"):
165
170
  raise ValueError(f"inference parameter {name!r} is not a public Python identifier")
171
+ # A declared model is a catalogue id: no blanks, no duplicates (the gateway checks each one exists).
172
+ for model in self.models or []:
173
+ if not model or model != model.strip() or "/" not in model:
174
+ raise ValueError(f"policy model {model!r} is not a catalogue id (accounts/sequences/models/<name>)")
175
+ if self.models and len(set(self.models)) != len(self.models):
176
+ raise ValueError("policy models lists a model twice")
166
177
  return self
167
178
 
168
179
 
@@ -206,14 +217,15 @@ class CodeBundle(BaseModel):
206
217
 
207
218
 
208
219
  class DeploymentRequest(BaseModel):
209
- """The full `POST /v1/deployments` body. Required: name, image, weights, resources, policy (goal 18).
210
- autoscaler / concurrency / timeouts are typed optional knobs with sane defaults."""
220
+ """The full `POST /v1/deployments` body. Required: name, image, resources, policy (goal 18); weights unless the
221
+ policy has no checkpoint. autoscaler / concurrency / timeouts are typed optional knobs with sane defaults."""
211
222
 
212
223
  model_config = ConfigDict(extra="forbid")
213
224
 
214
225
  name: str
215
226
  image: ImageSpec
216
- weights: VolumeMount
227
+ # None: a policy without a checkpoint — no weights volume is made, copied or mounted. {gs-plans/storage T13}
228
+ weights: VolumeMount | None = None
217
229
  resources: Resources
218
230
  policy: DeploymentPolicy
219
231
  # The handler's source. None only when `handler_ref` is importable from the image itself (a package the
@@ -252,6 +264,10 @@ class DeploymentRequest(BaseModel):
252
264
  and, until they are removed, a gs:// or s3:// prefix or an https:// file — never empty. PolicySpec already enforces this for SDK-authored deploys; this holds it for any POSTed body."""
253
265
  from sequence_base.contract.policy import check_weights_parts
254
266
 
267
+ if self.weights is None:
268
+ if self.weights_name or self.extra_weights:
269
+ raise ValueError("weights parts need weights: name the first part's origin too")
270
+ return self
255
271
  check_weights_parts(self.weights_name, dict(self.extra_weights or {}))
256
272
  for what, ref in [("weights.uri", self.weights)] + [(f"extra_weights[{n!r}].uri", r)
257
273
  for n, r in (self.extra_weights or {}).items()]:
@@ -185,8 +185,9 @@ class PolicySpec(BaseModel):
185
185
  name: str
186
186
  gpu: str | list[str] = Field(..., description="A GPU type, or a list = cross-provider fallback")
187
187
  image: ImageSpec
188
- weights: str = Field(..., description="Weights URI: template:// (an official template), hf:// or vol:// (an "
189
- "uploaded volume)")
188
+ # None: the policy has no checkpoint (a closed-form controller); nothing is copied or mounted for it.
189
+ weights: str | None = Field(None, description="Weights URI: template:// (an official template), hf:// or vol:// "
190
+ "(an uploaded volume); none for a policy without a checkpoint")
190
191
  volumes: dict[str, VolumeRef] = Field(default_factory=dict)
191
192
  secrets: list[SecretRef] = Field(default_factory=list)
192
193
  min_containers: int = 0
@@ -217,11 +218,13 @@ class PolicySpec(BaseModel):
217
218
 
218
219
  @field_validator("weights")
219
220
  @classmethod
220
- def _weights_scheme(cls, v: str) -> str:
221
- return check_weights_uri(v, "weights")
221
+ def _weights_scheme(cls, v: str | None) -> str | None:
222
+ return None if v is None else check_weights_uri(v, "weights")
222
223
 
223
224
  @model_validator(mode="after")
224
225
  def _weights_parts(self) -> "PolicySpec":
226
+ if self.weights is None and (self.weights_name or self.extra_weights):
227
+ raise ValueError("weights parts need weights: name the first part's origin too")
225
228
  check_weights_parts(self.weights_name, {k: v for k, v in (self.extra_weights or {}).items()})
226
229
  for name, uri in (self.extra_weights or {}).items():
227
230
  check_weights_uri(uri, f"weights[{name!r}]")
@@ -65,5 +65,5 @@
65
65
  ],
66
66
  "title": "ActRequest",
67
67
  "type": "object",
68
- "x-contract-version": "0.4.16"
68
+ "x-contract-version": "0.4.19"
69
69
  }
@@ -75,5 +75,5 @@
75
75
  ],
76
76
  "title": "ActResponse",
77
77
  "type": "object",
78
- "x-contract-version": "0.4.16"
78
+ "x-contract-version": "0.4.19"
79
79
  }
@@ -99,5 +99,5 @@
99
99
  ],
100
100
  "title": "ActionChunk",
101
101
  "type": "object",
102
- "x-contract-version": "0.4.16"
102
+ "x-contract-version": "0.4.19"
103
103
  }
@@ -100,5 +100,5 @@
100
100
  ],
101
101
  "title": "ActionContract",
102
102
  "type": "object",
103
- "x-contract-version": "0.4.16"
103
+ "x-contract-version": "0.4.19"
104
104
  }
@@ -19,5 +19,5 @@
19
19
  ],
20
20
  "title": "ActionStep",
21
21
  "type": "object",
22
- "x-contract-version": "0.4.16"
22
+ "x-contract-version": "0.4.19"
23
23
  }
@@ -38,5 +38,5 @@
38
38
  ],
39
39
  "title": "AdapterTransform",
40
40
  "type": "object",
41
- "x-contract-version": "0.4.16"
41
+ "x-contract-version": "0.4.19"
42
42
  }
@@ -23,5 +23,5 @@
23
23
  ],
24
24
  "title": "AddLocal",
25
25
  "type": "object",
26
- "x-contract-version": "0.4.16"
26
+ "x-contract-version": "0.4.19"
27
27
  }
@@ -69,5 +69,5 @@
69
69
  },
70
70
  "title": "Autoscaler",
71
71
  "type": "object",
72
- "x-contract-version": "0.4.16"
72
+ "x-contract-version": "0.4.19"
73
73
  }
@@ -62,5 +62,5 @@
62
62
  ],
63
63
  "title": "BenchmarkConditionSpec",
64
64
  "type": "object",
65
- "x-contract-version": "0.4.16"
65
+ "x-contract-version": "0.4.19"
66
66
  }
@@ -424,6 +424,24 @@
424
424
  "title": "Camera",
425
425
  "type": "string"
426
426
  },
427
+ "flip": {
428
+ "anyOf": [
429
+ {
430
+ "enum": [
431
+ "vertical",
432
+ "horizontal",
433
+ "both"
434
+ ],
435
+ "type": "string"
436
+ },
437
+ {
438
+ "type": "null"
439
+ }
440
+ ],
441
+ "default": null,
442
+ "description": "'vertical': rows reversed (upside down); 'horizontal': mirrored; 'both': turned 180°; None: as drawn",
443
+ "title": "Flip"
444
+ },
427
445
  "fps": {
428
446
  "default": 30,
429
447
  "title": "Fps",
@@ -700,5 +718,5 @@
700
718
  ],
701
719
  "title": "BenchmarkRegisterRequest",
702
720
  "type": "object",
703
- "x-contract-version": "0.4.16"
721
+ "x-contract-version": "0.4.19"
704
722
  }
@@ -232,6 +232,24 @@
232
232
  "title": "Camera",
233
233
  "type": "string"
234
234
  },
235
+ "flip": {
236
+ "anyOf": [
237
+ {
238
+ "enum": [
239
+ "vertical",
240
+ "horizontal",
241
+ "both"
242
+ ],
243
+ "type": "string"
244
+ },
245
+ {
246
+ "type": "null"
247
+ }
248
+ ],
249
+ "default": null,
250
+ "description": "'vertical': rows reversed (upside down); 'horizontal': mirrored; 'both': turned 180°; None: as drawn",
251
+ "title": "Flip"
252
+ },
235
253
  "fps": {
236
254
  "default": 30,
237
255
  "title": "Fps",
@@ -279,7 +297,7 @@
279
297
  ],
280
298
  "title": "SeqFlags",
281
299
  "type": "integer",
282
- "x-contract-version": "0.4.16",
300
+ "x-contract-version": "0.4.19",
283
301
  "x-flag-names": {
284
302
  "CHECK": 65536,
285
303
  "INFER": 16,
@@ -487,5 +505,5 @@
487
505
  ],
488
506
  "title": "BenchmarkSpec",
489
507
  "type": "object",
490
- "x-contract-version": "0.4.16"
508
+ "x-contract-version": "0.4.19"
491
509
  }
@@ -40,5 +40,5 @@
40
40
  ],
41
41
  "title": "BenchmarkStatusResponse",
42
42
  "type": "object",
43
- "x-contract-version": "0.4.16"
43
+ "x-contract-version": "0.4.19"
44
44
  }
@@ -58,8 +58,16 @@
58
58
  "type": "string"
59
59
  },
60
60
  "weights_uri": {
61
- "title": "Weights Uri",
62
- "type": "string"
61
+ "anyOf": [
62
+ {
63
+ "type": "string"
64
+ },
65
+ {
66
+ "type": "null"
67
+ }
68
+ ],
69
+ "default": null,
70
+ "title": "Weights Uri"
63
71
  }
64
72
  },
65
73
  "required": [
@@ -67,10 +75,9 @@
67
75
  "tls_key",
68
76
  "tls_cert",
69
77
  "env",
70
- "weights_uri",
71
78
  "lease"
72
79
  ],
73
80
  "title": "BootstrapResponse",
74
81
  "type": "object",
75
- "x-contract-version": "0.4.16"
82
+ "x-contract-version": "0.4.19"
76
83
  }
@@ -34,5 +34,5 @@
34
34
  ],
35
35
  "title": "Camera",
36
36
  "type": "object",
37
- "x-contract-version": "0.4.16"
37
+ "x-contract-version": "0.4.19"
38
38
  }
@@ -23,5 +23,5 @@
23
23
  ],
24
24
  "title": "ClampInfo",
25
25
  "type": "object",
26
- "x-contract-version": "0.4.16"
26
+ "x-contract-version": "0.4.19"
27
27
  }
@@ -23,5 +23,5 @@
23
23
  ],
24
24
  "title": "CodeBundle",
25
25
  "type": "object",
26
- "x-contract-version": "0.4.16"
26
+ "x-contract-version": "0.4.19"
27
27
  }
@@ -61,5 +61,5 @@
61
61
  },
62
62
  "title": "Concurrency",
63
63
  "type": "object",
64
- "x-contract-version": "0.4.16"
64
+ "x-contract-version": "0.4.19"
65
65
  }
@@ -55,5 +55,5 @@
55
55
  ],
56
56
  "title": "Conditions",
57
57
  "type": "object",
58
- "x-contract-version": "0.4.16"
58
+ "x-contract-version": "0.4.19"
59
59
  }
@@ -25,5 +25,5 @@
25
25
  ],
26
26
  "title": "ConnectRequest",
27
27
  "type": "object",
28
- "x-contract-version": "0.4.16"
28
+ "x-contract-version": "0.4.19"
29
29
  }
@@ -307,5 +307,5 @@
307
307
  ],
308
308
  "title": "ConnectResponse",
309
309
  "type": "object",
310
- "x-contract-version": "0.4.16"
310
+ "x-contract-version": "0.4.19"
311
311
  }
@@ -18,5 +18,5 @@
18
18
  ],
19
19
  "title": "DeploymentAccepted",
20
20
  "type": "object",
21
- "x-contract-version": "0.4.16"
21
+ "x-contract-version": "0.4.19"
22
22
  }
@@ -342,6 +342,22 @@
342
342
  "default": null,
343
343
  "title": "Io"
344
344
  },
345
+ "models": {
346
+ "anyOf": [
347
+ {
348
+ "items": {
349
+ "type": "string"
350
+ },
351
+ "maxItems": 16,
352
+ "type": "array"
353
+ },
354
+ {
355
+ "type": "null"
356
+ }
357
+ ],
358
+ "default": null,
359
+ "title": "Models"
360
+ },
345
361
  "observation": {
346
362
  "anyOf": [
347
363
  {
@@ -387,5 +403,5 @@
387
403
  ],
388
404
  "title": "DeploymentPolicy",
389
405
  "type": "object",
390
- "x-contract-version": "0.4.16"
406
+ "x-contract-version": "0.4.19"
391
407
  }
@@ -397,6 +397,22 @@
397
397
  "default": null,
398
398
  "title": "Io"
399
399
  },
400
+ "models": {
401
+ "anyOf": [
402
+ {
403
+ "items": {
404
+ "type": "string"
405
+ },
406
+ "maxItems": 16,
407
+ "type": "array"
408
+ },
409
+ {
410
+ "type": "null"
411
+ }
412
+ ],
413
+ "default": null,
414
+ "title": "Models"
415
+ },
400
416
  "observation": {
401
417
  "anyOf": [
402
418
  {
@@ -893,7 +909,7 @@
893
909
  }
894
910
  },
895
911
  "additionalProperties": false,
896
- "description": "The full `POST /v1/deployments` body. Required: name, image, weights, resources, policy (goal 18).\nautoscaler / concurrency / timeouts are typed optional knobs with sane defaults.",
912
+ "description": "The full `POST /v1/deployments` body. Required: name, image, resources, policy (goal 18); weights unless the\npolicy has no checkpoint. autoscaler / concurrency / timeouts are typed optional knobs with sane defaults.",
897
913
  "properties": {
898
914
  "autoscaler": {
899
915
  "$ref": "#/$defs/Autoscaler"
@@ -970,7 +986,15 @@
970
986
  "type": "array"
971
987
  },
972
988
  "weights": {
973
- "$ref": "#/$defs/VolumeMount"
989
+ "anyOf": [
990
+ {
991
+ "$ref": "#/$defs/VolumeMount"
992
+ },
993
+ {
994
+ "type": "null"
995
+ }
996
+ ],
997
+ "default": null
974
998
  },
975
999
  "weights_name": {
976
1000
  "anyOf": [
@@ -988,11 +1012,10 @@
988
1012
  "required": [
989
1013
  "name",
990
1014
  "image",
991
- "weights",
992
1015
  "resources",
993
1016
  "policy"
994
1017
  ],
995
1018
  "title": "DeploymentRequest",
996
1019
  "type": "object",
997
- "x-contract-version": "0.4.16"
1020
+ "x-contract-version": "0.4.19"
998
1021
  }
@@ -58,5 +58,5 @@
58
58
  ],
59
59
  "title": "DeploymentStatusResponse",
60
60
  "type": "object",
61
- "x-contract-version": "0.4.16"
61
+ "x-contract-version": "0.4.19"
62
62
  }
@@ -213,5 +213,5 @@
213
213
  ],
214
214
  "title": "Embodiment",
215
215
  "type": "object",
216
- "x-contract-version": "0.4.16"
216
+ "x-contract-version": "0.4.19"
217
217
  }
@@ -94,5 +94,5 @@
94
94
  ],
95
95
  "title": "ErrorBody",
96
96
  "type": "object",
97
- "x-contract-version": "0.4.16"
97
+ "x-contract-version": "0.4.19"
98
98
  }
@@ -22,7 +22,7 @@
22
22
  ],
23
23
  "title": "ErrorCode",
24
24
  "type": "string",
25
- "x-contract-version": "0.4.16",
25
+ "x-contract-version": "0.4.19",
26
26
  "x-errors": {
27
27
  "budget_exhausted": {
28
28
  "exit_code": 6,
@@ -48,5 +48,5 @@
48
48
  ],
49
49
  "title": "Estimate",
50
50
  "type": "object",
51
- "x-contract-version": "0.4.16"
51
+ "x-contract-version": "0.4.19"
52
52
  }
@@ -228,5 +228,5 @@
228
228
  ],
229
229
  "title": "EvalDryRunResponse",
230
230
  "type": "object",
231
- "x-contract-version": "0.4.16"
231
+ "x-contract-version": "0.4.19"
232
232
  }
@@ -397,5 +397,5 @@
397
397
  ],
398
398
  "title": "EvalReport",
399
399
  "type": "object",
400
- "x-contract-version": "0.4.16"
400
+ "x-contract-version": "0.4.19"
401
401
  }
@@ -281,5 +281,5 @@
281
281
  ],
282
282
  "title": "EvalRequest",
283
283
  "type": "object",
284
- "x-contract-version": "0.4.16"
284
+ "x-contract-version": "0.4.19"
285
285
  }
@@ -178,5 +178,5 @@
178
178
  ],
179
179
  "title": "EvalResponse",
180
180
  "type": "object",
181
- "x-contract-version": "0.4.16"
181
+ "x-contract-version": "0.4.19"
182
182
  }
@@ -49,5 +49,5 @@
49
49
  ],
50
50
  "title": "ImageFrame",
51
51
  "type": "object",
52
- "x-contract-version": "0.4.16"
52
+ "x-contract-version": "0.4.19"
53
53
  }
@@ -204,5 +204,5 @@
204
204
  },
205
205
  "title": "ImageSpec",
206
206
  "type": "object",
207
- "x-contract-version": "0.4.16"
207
+ "x-contract-version": "0.4.19"
208
208
  }
@@ -38,5 +38,5 @@
38
38
  ],
39
39
  "title": "ImageStepAddLocal",
40
40
  "type": "object",
41
- "x-contract-version": "0.4.16"
41
+ "x-contract-version": "0.4.19"
42
42
  }
@@ -14,5 +14,5 @@
14
14
  ],
15
15
  "title": "ImageStepApt",
16
16
  "type": "object",
17
- "x-contract-version": "0.4.16"
17
+ "x-contract-version": "0.4.19"
18
18
  }
@@ -14,5 +14,5 @@
14
14
  ],
15
15
  "title": "ImageStepEnv",
16
16
  "type": "object",
17
- "x-contract-version": "0.4.16"
17
+ "x-contract-version": "0.4.19"
18
18
  }
@@ -46,5 +46,5 @@
46
46
  ],
47
47
  "title": "ImageStepRun",
48
48
  "type": "object",
49
- "x-contract-version": "0.4.16"
49
+ "x-contract-version": "0.4.19"
50
50
  }
@@ -14,5 +14,5 @@
14
14
  ],
15
15
  "title": "ImageStepUvPip",
16
16
  "type": "object",
17
- "x-contract-version": "0.4.16"
17
+ "x-contract-version": "0.4.19"
18
18
  }
@@ -39,5 +39,5 @@
39
39
  ],
40
40
  "title": "InferParam",
41
41
  "type": "object",
42
- "x-contract-version": "0.4.16"
42
+ "x-contract-version": "0.4.19"
43
43
  }
@@ -24,5 +24,5 @@
24
24
  ],
25
25
  "title": "Lease",
26
26
  "type": "object",
27
- "x-contract-version": "0.4.16"
27
+ "x-contract-version": "0.4.19"
28
28
  }
@@ -17,5 +17,5 @@
17
17
  ],
18
18
  "title": "LossyTransform",
19
19
  "type": "object",
20
- "x-contract-version": "0.4.16"
20
+ "x-contract-version": "0.4.19"
21
21
  }
@@ -83,5 +83,5 @@
83
83
  ],
84
84
  "title": "MetricAgg",
85
85
  "type": "object",
86
- "x-contract-version": "0.4.16"
86
+ "x-contract-version": "0.4.19"
87
87
  }
@@ -164,5 +164,5 @@
164
164
  ],
165
165
  "title": "Observation",
166
166
  "type": "object",
167
- "x-contract-version": "0.4.16"
167
+ "x-contract-version": "0.4.19"
168
168
  }
@@ -82,5 +82,5 @@
82
82
  },
83
83
  "title": "ObservationContract",
84
84
  "type": "object",
85
- "x-contract-version": "0.4.16"
85
+ "x-contract-version": "0.4.19"
86
86
  }
@@ -666,9 +666,17 @@
666
666
  "type": "object"
667
667
  },
668
668
  "weights": {
669
- "description": "Weights URI: template:// (an official template), hf:// or vol:// (an uploaded volume)",
670
- "title": "Weights",
671
- "type": "string"
669
+ "anyOf": [
670
+ {
671
+ "type": "string"
672
+ },
673
+ {
674
+ "type": "null"
675
+ }
676
+ ],
677
+ "default": null,
678
+ "description": "Weights URI: template:// (an official template), hf:// or vol:// (an uploaded volume); none for a policy without a checkpoint",
679
+ "title": "Weights"
672
680
  },
673
681
  "weights_name": {
674
682
  "anyOf": [
@@ -686,8 +694,7 @@
686
694
  "required": [
687
695
  "name",
688
696
  "gpu",
689
- "image",
690
- "weights"
697
+ "image"
691
698
  ],
692
699
  "title": "PolicySpec",
693
700
  "type": "object"
@@ -727,7 +734,7 @@
727
734
  ],
728
735
  "title": "SeqFlags",
729
736
  "type": "integer",
730
- "x-contract-version": "0.4.16",
737
+ "x-contract-version": "0.4.19",
731
738
  "x-flag-names": {
732
739
  "CHECK": 65536,
733
740
  "INFER": 16,
@@ -831,5 +838,5 @@
831
838
  ],
832
839
  "title": "PolicyRegistration",
833
840
  "type": "object",
834
- "x-contract-version": "0.4.16"
841
+ "x-contract-version": "0.4.19"
835
842
  }
@@ -708,9 +708,17 @@
708
708
  "type": "object"
709
709
  },
710
710
  "weights": {
711
- "description": "Weights URI: template:// (an official template), hf:// or vol:// (an uploaded volume)",
712
- "title": "Weights",
713
- "type": "string"
711
+ "anyOf": [
712
+ {
713
+ "type": "string"
714
+ },
715
+ {
716
+ "type": "null"
717
+ }
718
+ ],
719
+ "default": null,
720
+ "description": "Weights URI: template:// (an official template), hf:// or vol:// (an uploaded volume); none for a policy without a checkpoint",
721
+ "title": "Weights"
714
722
  },
715
723
  "weights_name": {
716
724
  "anyOf": [
@@ -728,10 +736,9 @@
728
736
  "required": [
729
737
  "name",
730
738
  "gpu",
731
- "image",
732
- "weights"
739
+ "image"
733
740
  ],
734
741
  "title": "PolicySpec",
735
742
  "type": "object",
736
- "x-contract-version": "0.4.16"
743
+ "x-contract-version": "0.4.19"
737
744
  }
@@ -63,5 +63,5 @@
63
63
  ],
64
64
  "title": "Proprioception",
65
65
  "type": "object",
66
- "x-contract-version": "0.4.16"
66
+ "x-contract-version": "0.4.19"
67
67
  }
@@ -7,6 +7,24 @@
7
7
  "title": "Camera",
8
8
  "type": "string"
9
9
  },
10
+ "flip": {
11
+ "anyOf": [
12
+ {
13
+ "enum": [
14
+ "vertical",
15
+ "horizontal",
16
+ "both"
17
+ ],
18
+ "type": "string"
19
+ },
20
+ {
21
+ "type": "null"
22
+ }
23
+ ],
24
+ "default": null,
25
+ "description": "'vertical': rows reversed (upside down); 'horizontal': mirrored; 'both': turned 180°; None: as drawn",
26
+ "title": "Flip"
27
+ },
10
28
  "fps": {
11
29
  "default": 30,
12
30
  "title": "Fps",
@@ -18,5 +36,5 @@
18
36
  ],
19
37
  "title": "RenderSpec",
20
38
  "type": "object",
21
- "x-contract-version": "0.4.16"
39
+ "x-contract-version": "0.4.19"
22
40
  }
@@ -84,5 +84,5 @@
84
84
  ],
85
85
  "title": "Resources",
86
86
  "type": "object",
87
- "x-contract-version": "0.4.16"
87
+ "x-contract-version": "0.4.19"
88
88
  }
@@ -55,5 +55,5 @@
55
55
  ],
56
56
  "title": "RolloutResult",
57
57
  "type": "object",
58
- "x-contract-version": "0.4.16"
58
+ "x-contract-version": "0.4.19"
59
59
  }
@@ -21,5 +21,5 @@
21
21
  ],
22
22
  "title": "SecretCreateRequest",
23
23
  "type": "object",
24
- "x-contract-version": "0.4.16"
24
+ "x-contract-version": "0.4.19"
25
25
  }
@@ -40,5 +40,5 @@
40
40
  ],
41
41
  "title": "SecretInfo",
42
42
  "type": "object",
43
- "x-contract-version": "0.4.16"
43
+ "x-contract-version": "0.4.19"
44
44
  }
@@ -12,5 +12,5 @@
12
12
  ],
13
13
  "title": "SecretRef",
14
14
  "type": "object",
15
- "x-contract-version": "0.4.16"
15
+ "x-contract-version": "0.4.19"
16
16
  }
@@ -18,7 +18,7 @@
18
18
  ],
19
19
  "title": "SeqFlags",
20
20
  "type": "integer",
21
- "x-contract-version": "0.4.16",
21
+ "x-contract-version": "0.4.19",
22
22
  "x-flag-names": {
23
23
  "CHECK": 65536,
24
24
  "INFER": 16,
@@ -9,6 +9,24 @@
9
9
  "title": "Camera",
10
10
  "type": "string"
11
11
  },
12
+ "flip": {
13
+ "anyOf": [
14
+ {
15
+ "enum": [
16
+ "vertical",
17
+ "horizontal",
18
+ "both"
19
+ ],
20
+ "type": "string"
21
+ },
22
+ {
23
+ "type": "null"
24
+ }
25
+ ],
26
+ "default": null,
27
+ "description": "'vertical': rows reversed (upside down); 'horizontal': mirrored; 'both': turned 180°; None: as drawn",
28
+ "title": "Flip"
29
+ },
12
30
  "fps": {
13
31
  "default": 30,
14
32
  "title": "Fps",
@@ -64,5 +82,5 @@
64
82
  ],
65
83
  "title": "Step",
66
84
  "type": "object",
67
- "x-contract-version": "0.4.16"
85
+ "x-contract-version": "0.4.19"
68
86
  }
@@ -22,5 +22,5 @@
22
22
  ],
23
23
  "title": "SuiteAgg",
24
24
  "type": "object",
25
- "x-contract-version": "0.4.16"
25
+ "x-contract-version": "0.4.19"
26
26
  }
@@ -22,5 +22,5 @@
22
22
  ],
23
23
  "title": "TaskAgg",
24
24
  "type": "object",
25
- "x-contract-version": "0.4.16"
25
+ "x-contract-version": "0.4.19"
26
26
  }
@@ -16,5 +16,5 @@
16
16
  ],
17
17
  "title": "Timeouts",
18
18
  "type": "object",
19
- "x-contract-version": "0.4.16"
19
+ "x-contract-version": "0.4.19"
20
20
  }
@@ -24,5 +24,5 @@
24
24
  ],
25
25
  "title": "UploadTarget",
26
26
  "type": "object",
27
- "x-contract-version": "0.4.16"
27
+ "x-contract-version": "0.4.19"
28
28
  }
@@ -34,5 +34,5 @@
34
34
  ],
35
35
  "title": "UsageReport",
36
36
  "type": "object",
37
- "x-contract-version": "0.4.16"
37
+ "x-contract-version": "0.4.19"
38
38
  }
@@ -20,5 +20,5 @@
20
20
  ],
21
21
  "title": "Variant",
22
22
  "type": "object",
23
- "x-contract-version": "0.4.16"
23
+ "x-contract-version": "0.4.19"
24
24
  }
@@ -22,5 +22,5 @@
22
22
  ],
23
23
  "title": "VolumeAttach",
24
24
  "type": "object",
25
- "x-contract-version": "0.4.16"
25
+ "x-contract-version": "0.4.19"
26
26
  }
@@ -25,5 +25,5 @@
25
25
  ],
26
26
  "title": "VolumeFile",
27
27
  "type": "object",
28
- "x-contract-version": "0.4.16"
28
+ "x-contract-version": "0.4.19"
29
29
  }
@@ -68,5 +68,5 @@
68
68
  ],
69
69
  "title": "VolumeInfo",
70
70
  "type": "object",
71
- "x-contract-version": "0.4.16"
71
+ "x-contract-version": "0.4.19"
72
72
  }
@@ -17,5 +17,5 @@
17
17
  ],
18
18
  "title": "VolumeMount",
19
19
  "type": "object",
20
- "x-contract-version": "0.4.16"
20
+ "x-contract-version": "0.4.19"
21
21
  }
@@ -24,5 +24,5 @@
24
24
  ],
25
25
  "title": "VolumeRef",
26
26
  "type": "object",
27
- "x-contract-version": "0.4.16"
27
+ "x-contract-version": "0.4.19"
28
28
  }
@@ -56,5 +56,5 @@
56
56
  ],
57
57
  "title": "VolumeUploadRequest",
58
58
  "type": "object",
59
- "x-contract-version": "0.4.16"
59
+ "x-contract-version": "0.4.19"
60
60
  }
@@ -65,5 +65,5 @@
65
65
  ],
66
66
  "title": "VolumeUploadResponse",
67
67
  "type": "object",
68
- "x-contract-version": "0.4.16"
68
+ "x-contract-version": "0.4.19"
69
69
  }
@@ -86,5 +86,5 @@
86
86
  ],
87
87
  "title": "WarmingError",
88
88
  "type": "object",
89
- "x-contract-version": "0.4.16"
89
+ "x-contract-version": "0.4.19"
90
90
  }
File without changes