sequence-base 0.3.0__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.
- sequence_base/__init__.py +134 -0
- sequence_base/auth.py +35 -0
- sequence_base/codec/__init__.py +25 -0
- sequence_base/codec/image.py +136 -0
- sequence_base/codec/resize.py +147 -0
- sequence_base/constants/__init__.py +0 -0
- sequence_base/constants/env.py +14 -0
- sequence_base/constants/headers.py +5 -0
- sequence_base/constants/version.py +9 -0
- sequence_base/contract/__init__.py +111 -0
- sequence_base/contract/accounts.py +93 -0
- sequence_base/contract/act.py +89 -0
- sequence_base/contract/benchmarks.py +130 -0
- sequence_base/contract/connect.py +53 -0
- sequence_base/contract/deployments.py +197 -0
- sequence_base/contract/errors.py +45 -0
- sequence_base/contract/eval.py +201 -0
- sequence_base/contract/flags.py +92 -0
- sequence_base/contract/policy.py +172 -0
- sequence_base/errors/__init__.py +0 -0
- sequence_base/errors/transport.py +36 -0
- sequence_base/obs/__init__.py +0 -0
- sequence_base/obs/log.py +57 -0
- sequence_base/obs/rid.py +31 -0
- sequence_base/schema_export.py +238 -0
- sequence_base/schemas/ActionChunk.json +102 -0
- sequence_base/schemas/ActionContract.json +43 -0
- sequence_base/schemas/ActionStep.json +23 -0
- sequence_base/schemas/AdapterTransform.json +42 -0
- sequence_base/schemas/Autoscaler.json +43 -0
- sequence_base/schemas/BenchmarkRegisterRequest.json +302 -0
- sequence_base/schemas/BenchmarkSpec.json +401 -0
- sequence_base/schemas/BootstrapResponse.json +76 -0
- sequence_base/schemas/ClampInfo.json +27 -0
- sequence_base/schemas/CodeBundle.json +27 -0
- sequence_base/schemas/Concurrency.json +21 -0
- sequence_base/schemas/Conditions.json +59 -0
- sequence_base/schemas/ConnectRequest.json +16 -0
- sequence_base/schemas/ConnectResponse.json +81 -0
- sequence_base/schemas/DeploymentAccepted.json +22 -0
- sequence_base/schemas/DeploymentPolicy.json +101 -0
- sequence_base/schemas/DeploymentRequest.json +467 -0
- sequence_base/schemas/DeploymentStatusResponse.json +45 -0
- sequence_base/schemas/ErrorBody.json +32 -0
- sequence_base/schemas/Estimate.json +25 -0
- sequence_base/schemas/EvalDryRunResponse.json +41 -0
- sequence_base/schemas/EvalReport.json +179 -0
- sequence_base/schemas/EvalRequest.json +111 -0
- sequence_base/schemas/EvalResponse.json +88 -0
- sequence_base/schemas/ImageFrame.json +36 -0
- sequence_base/schemas/ImageSpec.json +123 -0
- sequence_base/schemas/ImageStepApt.json +18 -0
- sequence_base/schemas/ImageStepEnv.json +18 -0
- sequence_base/schemas/ImageStepRun.json +18 -0
- sequence_base/schemas/ImageStepUvPip.json +18 -0
- sequence_base/schemas/Lease.json +28 -0
- sequence_base/schemas/LossyTransform.json +21 -0
- sequence_base/schemas/MetricAgg.json +87 -0
- sequence_base/schemas/Observation.json +133 -0
- sequence_base/schemas/PolicyRegistration.json +438 -0
- sequence_base/schemas/PolicySpec.json +346 -0
- sequence_base/schemas/Proprioception.json +67 -0
- sequence_base/schemas/RenderSpec.json +22 -0
- sequence_base/schemas/Resources.json +29 -0
- sequence_base/schemas/RolloutResult.json +59 -0
- sequence_base/schemas/SecretCreateRequest.json +25 -0
- sequence_base/schemas/SecretInfo.json +44 -0
- sequence_base/schemas/SecretRef.json +16 -0
- sequence_base/schemas/SeqFlags.json +33 -0
- sequence_base/schemas/Step.json +68 -0
- sequence_base/schemas/SuiteAgg.json +26 -0
- sequence_base/schemas/TaskAgg.json +26 -0
- sequence_base/schemas/Timeouts.json +20 -0
- sequence_base/schemas/UsageReport.json +38 -0
- sequence_base/schemas/Variant.json +24 -0
- sequence_base/schemas/VolumeAttach.json +26 -0
- sequence_base/schemas/VolumeMount.json +21 -0
- sequence_base/schemas/VolumeRef.json +28 -0
- sequence_base/schemas/WarmingError.json +50 -0
- sequence_base/telemetry/__init__.py +13 -0
- sequence_base/telemetry/events.py +101 -0
- sequence_base-0.3.0.dist-info/METADATA +12 -0
- sequence_base-0.3.0.dist-info/RECORD +84 -0
- sequence_base-0.3.0.dist-info/WHEEL +4 -0
|
@@ -0,0 +1,467 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$defs": {
|
|
3
|
+
"ActionContract": {
|
|
4
|
+
"additionalProperties": false,
|
|
5
|
+
"description": "The fixed obs→ActionChunk contract a policy promises. Every field required; `action_space` reuses\ncontract 4's enum (not a free string). Each ActionChunk echoes exactly these invariants back.",
|
|
6
|
+
"properties": {
|
|
7
|
+
"action_dim": {
|
|
8
|
+
"title": "Action Dim",
|
|
9
|
+
"type": "integer"
|
|
10
|
+
},
|
|
11
|
+
"action_space": {
|
|
12
|
+
"$ref": "#/$defs/ActionSpace"
|
|
13
|
+
},
|
|
14
|
+
"control_frequency_hz": {
|
|
15
|
+
"title": "Control Frequency Hz",
|
|
16
|
+
"type": "number"
|
|
17
|
+
},
|
|
18
|
+
"robot": {
|
|
19
|
+
"title": "Robot",
|
|
20
|
+
"type": "string"
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
"required": [
|
|
24
|
+
"robot",
|
|
25
|
+
"action_space",
|
|
26
|
+
"action_dim",
|
|
27
|
+
"control_frequency_hz"
|
|
28
|
+
],
|
|
29
|
+
"title": "ActionContract",
|
|
30
|
+
"type": "object"
|
|
31
|
+
},
|
|
32
|
+
"ActionSpace": {
|
|
33
|
+
"description": "Must be explicit: the same floats mean opposite things across spaces — executing an absolute\njoint position as a delta flings the arm into its limit stops. {schema.py:124}",
|
|
34
|
+
"enum": [
|
|
35
|
+
"joint_absolute",
|
|
36
|
+
"joint_delta",
|
|
37
|
+
"ee_absolute",
|
|
38
|
+
"ee_delta"
|
|
39
|
+
],
|
|
40
|
+
"title": "ActionSpace",
|
|
41
|
+
"type": "string"
|
|
42
|
+
},
|
|
43
|
+
"Autoscaler": {
|
|
44
|
+
"additionalProperties": false,
|
|
45
|
+
"description": "= Modal AutoscalerSettings. Defaults mirror PolicySpec so an omitted block scale-to-zeroes.",
|
|
46
|
+
"properties": {
|
|
47
|
+
"buffer_containers": {
|
|
48
|
+
"anyOf": [
|
|
49
|
+
{
|
|
50
|
+
"type": "integer"
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"type": "null"
|
|
54
|
+
}
|
|
55
|
+
],
|
|
56
|
+
"default": null,
|
|
57
|
+
"title": "Buffer Containers"
|
|
58
|
+
},
|
|
59
|
+
"max_containers": {
|
|
60
|
+
"anyOf": [
|
|
61
|
+
{
|
|
62
|
+
"type": "integer"
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"type": "null"
|
|
66
|
+
}
|
|
67
|
+
],
|
|
68
|
+
"default": null,
|
|
69
|
+
"title": "Max Containers"
|
|
70
|
+
},
|
|
71
|
+
"min_containers": {
|
|
72
|
+
"default": 0,
|
|
73
|
+
"title": "Min Containers",
|
|
74
|
+
"type": "integer"
|
|
75
|
+
},
|
|
76
|
+
"scaledown_window": {
|
|
77
|
+
"default": 600,
|
|
78
|
+
"title": "Scaledown Window",
|
|
79
|
+
"type": "integer"
|
|
80
|
+
}
|
|
81
|
+
},
|
|
82
|
+
"title": "Autoscaler",
|
|
83
|
+
"type": "object"
|
|
84
|
+
},
|
|
85
|
+
"CodeBundle": {
|
|
86
|
+
"additionalProperties": false,
|
|
87
|
+
"description": "The policy's own source, shipped with the deploy so the worker can import `policy.handler_ref`\n(what Modal's automount does for the entrypoint module). A gzip'd tar of the handler's top-level module\nor package, base64 on the wire, with the sha256 of the decoded bytes so a truncated or altered upload\nis refused at the edge instead of failing as an ImportError on a GPU.",
|
|
88
|
+
"properties": {
|
|
89
|
+
"data": {
|
|
90
|
+
"title": "Data",
|
|
91
|
+
"type": "string"
|
|
92
|
+
},
|
|
93
|
+
"format": {
|
|
94
|
+
"const": "tar.gz",
|
|
95
|
+
"default": "tar.gz",
|
|
96
|
+
"title": "Format",
|
|
97
|
+
"type": "string"
|
|
98
|
+
},
|
|
99
|
+
"sha256": {
|
|
100
|
+
"title": "Sha256",
|
|
101
|
+
"type": "string"
|
|
102
|
+
}
|
|
103
|
+
},
|
|
104
|
+
"required": [
|
|
105
|
+
"data",
|
|
106
|
+
"sha256"
|
|
107
|
+
],
|
|
108
|
+
"title": "CodeBundle",
|
|
109
|
+
"type": "object"
|
|
110
|
+
},
|
|
111
|
+
"Concurrency": {
|
|
112
|
+
"additionalProperties": false,
|
|
113
|
+
"description": "= Modal max/target_concurrent_inputs. Both required.",
|
|
114
|
+
"properties": {
|
|
115
|
+
"max_inputs": {
|
|
116
|
+
"title": "Max Inputs",
|
|
117
|
+
"type": "integer"
|
|
118
|
+
},
|
|
119
|
+
"target_inputs": {
|
|
120
|
+
"title": "Target Inputs",
|
|
121
|
+
"type": "integer"
|
|
122
|
+
}
|
|
123
|
+
},
|
|
124
|
+
"required": [
|
|
125
|
+
"max_inputs",
|
|
126
|
+
"target_inputs"
|
|
127
|
+
],
|
|
128
|
+
"title": "Concurrency",
|
|
129
|
+
"type": "object"
|
|
130
|
+
},
|
|
131
|
+
"DeploymentPolicy": {
|
|
132
|
+
"additionalProperties": false,
|
|
133
|
+
"description": "The policy block of the deployments body. `handler_ref` and `action` are required; `action` is the\nfixed obs→ActionChunk contract, not a bare dict.\n\n`secrets` carries the policy's declared secret BUNDLES BY NAME ONLY (list[SecretRef]) — the gateway\nvalidates each name exists and belongs to the deployer at submit time (accounts ⑦ / S3 goal 14), and the\nworker bootstrap fetches the matching env group by name. A secret VALUE never travels here: SecretRef is\nname-only, so this field cannot carry one (S3 goal 15). Defaults to `[]` so a policy with no secrets is\nunaffected.",
|
|
134
|
+
"properties": {
|
|
135
|
+
"action": {
|
|
136
|
+
"$ref": "#/$defs/ActionContract"
|
|
137
|
+
},
|
|
138
|
+
"frames_per_chunk": {
|
|
139
|
+
"anyOf": [
|
|
140
|
+
{
|
|
141
|
+
"type": "integer"
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
"type": "null"
|
|
145
|
+
}
|
|
146
|
+
],
|
|
147
|
+
"default": null,
|
|
148
|
+
"title": "Frames Per Chunk"
|
|
149
|
+
},
|
|
150
|
+
"handler_ref": {
|
|
151
|
+
"title": "Handler Ref",
|
|
152
|
+
"type": "string"
|
|
153
|
+
},
|
|
154
|
+
"secrets": {
|
|
155
|
+
"items": {
|
|
156
|
+
"$ref": "#/$defs/SecretRef"
|
|
157
|
+
},
|
|
158
|
+
"title": "Secrets",
|
|
159
|
+
"type": "array"
|
|
160
|
+
},
|
|
161
|
+
"streaming": {
|
|
162
|
+
"default": false,
|
|
163
|
+
"title": "Streaming",
|
|
164
|
+
"type": "boolean"
|
|
165
|
+
}
|
|
166
|
+
},
|
|
167
|
+
"required": [
|
|
168
|
+
"handler_ref",
|
|
169
|
+
"action"
|
|
170
|
+
],
|
|
171
|
+
"title": "DeploymentPolicy",
|
|
172
|
+
"type": "object"
|
|
173
|
+
},
|
|
174
|
+
"ImageSpec": {
|
|
175
|
+
"additionalProperties": false,
|
|
176
|
+
"description": "Declarative image (gateway builds it via Cloud Build) — = Modal `Image` message. Exactly one of\n`base` (a pullable registry ref) or `dockerfile` (inline Dockerfile source) is set — the Dockerfile\nis its OWN component, never smuggled into the `base` string (S2 goal 4), so the gateway can tell a\nregistry build from a Dockerfile build. `steps` is an ordered list of the four-variant union above\n(a bare list[dict] is refused), extending whichever base was chosen.",
|
|
177
|
+
"properties": {
|
|
178
|
+
"base": {
|
|
179
|
+
"anyOf": [
|
|
180
|
+
{
|
|
181
|
+
"type": "string"
|
|
182
|
+
},
|
|
183
|
+
{
|
|
184
|
+
"type": "null"
|
|
185
|
+
}
|
|
186
|
+
],
|
|
187
|
+
"default": null,
|
|
188
|
+
"title": "Base"
|
|
189
|
+
},
|
|
190
|
+
"dockerfile": {
|
|
191
|
+
"anyOf": [
|
|
192
|
+
{
|
|
193
|
+
"type": "string"
|
|
194
|
+
},
|
|
195
|
+
{
|
|
196
|
+
"type": "null"
|
|
197
|
+
}
|
|
198
|
+
],
|
|
199
|
+
"default": null,
|
|
200
|
+
"title": "Dockerfile"
|
|
201
|
+
},
|
|
202
|
+
"steps": {
|
|
203
|
+
"items": {
|
|
204
|
+
"anyOf": [
|
|
205
|
+
{
|
|
206
|
+
"$ref": "#/$defs/ImageStepUvPip"
|
|
207
|
+
},
|
|
208
|
+
{
|
|
209
|
+
"$ref": "#/$defs/ImageStepApt"
|
|
210
|
+
},
|
|
211
|
+
{
|
|
212
|
+
"$ref": "#/$defs/ImageStepEnv"
|
|
213
|
+
},
|
|
214
|
+
{
|
|
215
|
+
"$ref": "#/$defs/ImageStepRun"
|
|
216
|
+
}
|
|
217
|
+
]
|
|
218
|
+
},
|
|
219
|
+
"title": "Steps",
|
|
220
|
+
"type": "array"
|
|
221
|
+
}
|
|
222
|
+
},
|
|
223
|
+
"title": "ImageSpec",
|
|
224
|
+
"type": "object"
|
|
225
|
+
},
|
|
226
|
+
"ImageStepApt": {
|
|
227
|
+
"additionalProperties": false,
|
|
228
|
+
"properties": {
|
|
229
|
+
"apt_install": {
|
|
230
|
+
"items": {
|
|
231
|
+
"type": "string"
|
|
232
|
+
},
|
|
233
|
+
"title": "Apt Install",
|
|
234
|
+
"type": "array"
|
|
235
|
+
}
|
|
236
|
+
},
|
|
237
|
+
"required": [
|
|
238
|
+
"apt_install"
|
|
239
|
+
],
|
|
240
|
+
"title": "ImageStepApt",
|
|
241
|
+
"type": "object"
|
|
242
|
+
},
|
|
243
|
+
"ImageStepEnv": {
|
|
244
|
+
"additionalProperties": false,
|
|
245
|
+
"properties": {
|
|
246
|
+
"env": {
|
|
247
|
+
"additionalProperties": {
|
|
248
|
+
"type": "string"
|
|
249
|
+
},
|
|
250
|
+
"title": "Env",
|
|
251
|
+
"type": "object"
|
|
252
|
+
}
|
|
253
|
+
},
|
|
254
|
+
"required": [
|
|
255
|
+
"env"
|
|
256
|
+
],
|
|
257
|
+
"title": "ImageStepEnv",
|
|
258
|
+
"type": "object"
|
|
259
|
+
},
|
|
260
|
+
"ImageStepRun": {
|
|
261
|
+
"additionalProperties": false,
|
|
262
|
+
"properties": {
|
|
263
|
+
"run_commands": {
|
|
264
|
+
"items": {
|
|
265
|
+
"type": "string"
|
|
266
|
+
},
|
|
267
|
+
"title": "Run Commands",
|
|
268
|
+
"type": "array"
|
|
269
|
+
}
|
|
270
|
+
},
|
|
271
|
+
"required": [
|
|
272
|
+
"run_commands"
|
|
273
|
+
],
|
|
274
|
+
"title": "ImageStepRun",
|
|
275
|
+
"type": "object"
|
|
276
|
+
},
|
|
277
|
+
"ImageStepUvPip": {
|
|
278
|
+
"additionalProperties": false,
|
|
279
|
+
"properties": {
|
|
280
|
+
"uv_pip_install": {
|
|
281
|
+
"items": {
|
|
282
|
+
"type": "string"
|
|
283
|
+
},
|
|
284
|
+
"title": "Uv Pip Install",
|
|
285
|
+
"type": "array"
|
|
286
|
+
}
|
|
287
|
+
},
|
|
288
|
+
"required": [
|
|
289
|
+
"uv_pip_install"
|
|
290
|
+
],
|
|
291
|
+
"title": "ImageStepUvPip",
|
|
292
|
+
"type": "object"
|
|
293
|
+
},
|
|
294
|
+
"Resources": {
|
|
295
|
+
"additionalProperties": false,
|
|
296
|
+
"description": "= Modal Resources + GPUConfig. `gpu` is list[str] (the PolicySpec `str | list[str]` normalized).",
|
|
297
|
+
"properties": {
|
|
298
|
+
"cpu": {
|
|
299
|
+
"title": "Cpu",
|
|
300
|
+
"type": "integer"
|
|
301
|
+
},
|
|
302
|
+
"gpu": {
|
|
303
|
+
"items": {
|
|
304
|
+
"type": "string"
|
|
305
|
+
},
|
|
306
|
+
"title": "Gpu",
|
|
307
|
+
"type": "array"
|
|
308
|
+
},
|
|
309
|
+
"memory_gb": {
|
|
310
|
+
"title": "Memory Gb",
|
|
311
|
+
"type": "integer"
|
|
312
|
+
}
|
|
313
|
+
},
|
|
314
|
+
"required": [
|
|
315
|
+
"gpu",
|
|
316
|
+
"cpu",
|
|
317
|
+
"memory_gb"
|
|
318
|
+
],
|
|
319
|
+
"title": "Resources",
|
|
320
|
+
"type": "object"
|
|
321
|
+
},
|
|
322
|
+
"SecretRef": {
|
|
323
|
+
"additionalProperties": false,
|
|
324
|
+
"description": "A by-name reference to a secret (PolicySpec.secrets / BenchmarkSpec.secrets). Name only — the\nvalue lives in Secret Manager and is injected at worker bootstrap. Never carries a value.",
|
|
325
|
+
"properties": {
|
|
326
|
+
"name": {
|
|
327
|
+
"title": "Name",
|
|
328
|
+
"type": "string"
|
|
329
|
+
}
|
|
330
|
+
},
|
|
331
|
+
"required": [
|
|
332
|
+
"name"
|
|
333
|
+
],
|
|
334
|
+
"title": "SecretRef",
|
|
335
|
+
"type": "object"
|
|
336
|
+
},
|
|
337
|
+
"Timeouts": {
|
|
338
|
+
"additionalProperties": false,
|
|
339
|
+
"properties": {
|
|
340
|
+
"request": {
|
|
341
|
+
"title": "Request",
|
|
342
|
+
"type": "integer"
|
|
343
|
+
},
|
|
344
|
+
"startup": {
|
|
345
|
+
"title": "Startup",
|
|
346
|
+
"type": "integer"
|
|
347
|
+
}
|
|
348
|
+
},
|
|
349
|
+
"required": [
|
|
350
|
+
"request",
|
|
351
|
+
"startup"
|
|
352
|
+
],
|
|
353
|
+
"title": "Timeouts",
|
|
354
|
+
"type": "object"
|
|
355
|
+
},
|
|
356
|
+
"VolumeAttach": {
|
|
357
|
+
"additionalProperties": false,
|
|
358
|
+
"description": "A non-weights volume mount in the deploy body (goal 7). Distinct from `weights` (a `VolumeMount`,\na provisioned pull at the reserved `/data`): an explicit `volumes=` attachment names a persistent\nvolume by `vol://<name>` ref, pins its container `mount`, and carries the `create_if_missing`\nprovisioning intent so the gateway either binds an existing volume or creates it — the semantic the\nwire `VolumeMount` deliberately does not carry. Not reused/extended from `VolumeMount` because\n`create_if_missing` is meaningless for the weights pull.",
|
|
359
|
+
"properties": {
|
|
360
|
+
"create_if_missing": {
|
|
361
|
+
"title": "Create If Missing",
|
|
362
|
+
"type": "boolean"
|
|
363
|
+
},
|
|
364
|
+
"mount": {
|
|
365
|
+
"title": "Mount",
|
|
366
|
+
"type": "string"
|
|
367
|
+
},
|
|
368
|
+
"uri": {
|
|
369
|
+
"title": "Uri",
|
|
370
|
+
"type": "string"
|
|
371
|
+
}
|
|
372
|
+
},
|
|
373
|
+
"required": [
|
|
374
|
+
"uri",
|
|
375
|
+
"mount",
|
|
376
|
+
"create_if_missing"
|
|
377
|
+
],
|
|
378
|
+
"title": "VolumeAttach",
|
|
379
|
+
"type": "object"
|
|
380
|
+
},
|
|
381
|
+
"VolumeMount": {
|
|
382
|
+
"additionalProperties": false,
|
|
383
|
+
"description": "A concrete mount: where the data lives and where it lands in the container. Both required.",
|
|
384
|
+
"properties": {
|
|
385
|
+
"mount": {
|
|
386
|
+
"title": "Mount",
|
|
387
|
+
"type": "string"
|
|
388
|
+
},
|
|
389
|
+
"uri": {
|
|
390
|
+
"title": "Uri",
|
|
391
|
+
"type": "string"
|
|
392
|
+
}
|
|
393
|
+
},
|
|
394
|
+
"required": [
|
|
395
|
+
"uri",
|
|
396
|
+
"mount"
|
|
397
|
+
],
|
|
398
|
+
"title": "VolumeMount",
|
|
399
|
+
"type": "object"
|
|
400
|
+
}
|
|
401
|
+
},
|
|
402
|
+
"additionalProperties": false,
|
|
403
|
+
"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.",
|
|
404
|
+
"properties": {
|
|
405
|
+
"autoscaler": {
|
|
406
|
+
"$ref": "#/$defs/Autoscaler"
|
|
407
|
+
},
|
|
408
|
+
"code": {
|
|
409
|
+
"anyOf": [
|
|
410
|
+
{
|
|
411
|
+
"$ref": "#/$defs/CodeBundle"
|
|
412
|
+
},
|
|
413
|
+
{
|
|
414
|
+
"type": "null"
|
|
415
|
+
}
|
|
416
|
+
],
|
|
417
|
+
"default": null
|
|
418
|
+
},
|
|
419
|
+
"concurrency": {
|
|
420
|
+
"$ref": "#/$defs/Concurrency"
|
|
421
|
+
},
|
|
422
|
+
"image": {
|
|
423
|
+
"$ref": "#/$defs/ImageSpec"
|
|
424
|
+
},
|
|
425
|
+
"name": {
|
|
426
|
+
"title": "Name",
|
|
427
|
+
"type": "string"
|
|
428
|
+
},
|
|
429
|
+
"policy": {
|
|
430
|
+
"$ref": "#/$defs/DeploymentPolicy"
|
|
431
|
+
},
|
|
432
|
+
"resources": {
|
|
433
|
+
"$ref": "#/$defs/Resources"
|
|
434
|
+
},
|
|
435
|
+
"timeouts": {
|
|
436
|
+
"anyOf": [
|
|
437
|
+
{
|
|
438
|
+
"$ref": "#/$defs/Timeouts"
|
|
439
|
+
},
|
|
440
|
+
{
|
|
441
|
+
"type": "null"
|
|
442
|
+
}
|
|
443
|
+
],
|
|
444
|
+
"default": null
|
|
445
|
+
},
|
|
446
|
+
"volumes": {
|
|
447
|
+
"items": {
|
|
448
|
+
"$ref": "#/$defs/VolumeAttach"
|
|
449
|
+
},
|
|
450
|
+
"title": "Volumes",
|
|
451
|
+
"type": "array"
|
|
452
|
+
},
|
|
453
|
+
"weights": {
|
|
454
|
+
"$ref": "#/$defs/VolumeMount"
|
|
455
|
+
}
|
|
456
|
+
},
|
|
457
|
+
"required": [
|
|
458
|
+
"name",
|
|
459
|
+
"image",
|
|
460
|
+
"weights",
|
|
461
|
+
"resources",
|
|
462
|
+
"policy"
|
|
463
|
+
],
|
|
464
|
+
"title": "DeploymentRequest",
|
|
465
|
+
"type": "object",
|
|
466
|
+
"x-contract-version": "0.4.1"
|
|
467
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$defs": {
|
|
3
|
+
"DeploymentState": {
|
|
4
|
+
"description": "GET status — a restricted enum, not a free string (same discipline as EvalStatus).",
|
|
5
|
+
"enum": [
|
|
6
|
+
"building",
|
|
7
|
+
"ready",
|
|
8
|
+
"failed"
|
|
9
|
+
],
|
|
10
|
+
"title": "DeploymentState",
|
|
11
|
+
"type": "string"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"additionalProperties": false,
|
|
15
|
+
"description": "GET /v1/deployments/{id}. `error` carries the build-failure reason when status is FAILED —\nthe failure channel the spec and the old goal both lacked (goal 8).",
|
|
16
|
+
"properties": {
|
|
17
|
+
"error": {
|
|
18
|
+
"anyOf": [
|
|
19
|
+
{
|
|
20
|
+
"type": "string"
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"type": "null"
|
|
24
|
+
}
|
|
25
|
+
],
|
|
26
|
+
"default": null,
|
|
27
|
+
"description": "Build-failure reason; set only when FAILED",
|
|
28
|
+
"title": "Error"
|
|
29
|
+
},
|
|
30
|
+
"model": {
|
|
31
|
+
"title": "Model",
|
|
32
|
+
"type": "string"
|
|
33
|
+
},
|
|
34
|
+
"status": {
|
|
35
|
+
"$ref": "#/$defs/DeploymentState"
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
"required": [
|
|
39
|
+
"status",
|
|
40
|
+
"model"
|
|
41
|
+
],
|
|
42
|
+
"title": "DeploymentStatusResponse",
|
|
43
|
+
"type": "object",
|
|
44
|
+
"x-contract-version": "0.4.1"
|
|
45
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$defs": {
|
|
3
|
+
"ErrorCode": {
|
|
4
|
+
"description": "Restricted set — a client switches on this, so it is an enum, not a free string.",
|
|
5
|
+
"enum": [
|
|
6
|
+
"out_of_credit",
|
|
7
|
+
"unauthorized",
|
|
8
|
+
"warming"
|
|
9
|
+
],
|
|
10
|
+
"title": "ErrorCode",
|
|
11
|
+
"type": "string"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"additionalProperties": false,
|
|
15
|
+
"description": "The base error body (402 / 401): a machine-readable `code` plus a human `message`.",
|
|
16
|
+
"properties": {
|
|
17
|
+
"code": {
|
|
18
|
+
"$ref": "#/$defs/ErrorCode"
|
|
19
|
+
},
|
|
20
|
+
"message": {
|
|
21
|
+
"title": "Message",
|
|
22
|
+
"type": "string"
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
"required": [
|
|
26
|
+
"code",
|
|
27
|
+
"message"
|
|
28
|
+
],
|
|
29
|
+
"title": "ErrorBody",
|
|
30
|
+
"type": "object",
|
|
31
|
+
"x-contract-version": "0.4.1"
|
|
32
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"additionalProperties": false,
|
|
3
|
+
"properties": {
|
|
4
|
+
"cost_usd": {
|
|
5
|
+
"title": "Cost Usd",
|
|
6
|
+
"type": "number"
|
|
7
|
+
},
|
|
8
|
+
"vlm_calls": {
|
|
9
|
+
"title": "Vlm Calls",
|
|
10
|
+
"type": "integer"
|
|
11
|
+
},
|
|
12
|
+
"wall_clock_s": {
|
|
13
|
+
"title": "Wall Clock S",
|
|
14
|
+
"type": "number"
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
"required": [
|
|
18
|
+
"wall_clock_s",
|
|
19
|
+
"cost_usd",
|
|
20
|
+
"vlm_calls"
|
|
21
|
+
],
|
|
22
|
+
"title": "Estimate",
|
|
23
|
+
"type": "object",
|
|
24
|
+
"x-contract-version": "0.4.1"
|
|
25
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$defs": {
|
|
3
|
+
"Estimate": {
|
|
4
|
+
"additionalProperties": false,
|
|
5
|
+
"properties": {
|
|
6
|
+
"cost_usd": {
|
|
7
|
+
"title": "Cost Usd",
|
|
8
|
+
"type": "number"
|
|
9
|
+
},
|
|
10
|
+
"vlm_calls": {
|
|
11
|
+
"title": "Vlm Calls",
|
|
12
|
+
"type": "integer"
|
|
13
|
+
},
|
|
14
|
+
"wall_clock_s": {
|
|
15
|
+
"title": "Wall Clock S",
|
|
16
|
+
"type": "number"
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
"required": [
|
|
20
|
+
"wall_clock_s",
|
|
21
|
+
"cost_usd",
|
|
22
|
+
"vlm_calls"
|
|
23
|
+
],
|
|
24
|
+
"title": "Estimate",
|
|
25
|
+
"type": "object"
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
"additionalProperties": false,
|
|
29
|
+
"description": "`dry_run=true` — estimate only. No eval_id, no gpus_granted: nothing was built, nothing to GET.",
|
|
30
|
+
"properties": {
|
|
31
|
+
"estimate": {
|
|
32
|
+
"$ref": "#/$defs/Estimate"
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
"required": [
|
|
36
|
+
"estimate"
|
|
37
|
+
],
|
|
38
|
+
"title": "EvalDryRunResponse",
|
|
39
|
+
"type": "object",
|
|
40
|
+
"x-contract-version": "0.4.1"
|
|
41
|
+
}
|