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,179 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$defs": {
|
|
3
|
+
"EvalStatus": {
|
|
4
|
+
"description": "Restricted enum — same discipline as DeploymentState (not a free string).",
|
|
5
|
+
"enum": [
|
|
6
|
+
"pending",
|
|
7
|
+
"running",
|
|
8
|
+
"completed",
|
|
9
|
+
"failed"
|
|
10
|
+
],
|
|
11
|
+
"title": "EvalStatus",
|
|
12
|
+
"type": "string"
|
|
13
|
+
},
|
|
14
|
+
"LossyTransform": {
|
|
15
|
+
"additionalProperties": false,
|
|
16
|
+
"description": "A lossy adapter transform recorded in the report. Shape aligns with the lossy element of\nAdapterTransform (both {transform, reason}).",
|
|
17
|
+
"properties": {
|
|
18
|
+
"reason": {
|
|
19
|
+
"title": "Reason",
|
|
20
|
+
"type": "string"
|
|
21
|
+
},
|
|
22
|
+
"transform": {
|
|
23
|
+
"title": "Transform",
|
|
24
|
+
"type": "string"
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
"required": [
|
|
28
|
+
"transform",
|
|
29
|
+
"reason"
|
|
30
|
+
],
|
|
31
|
+
"title": "LossyTransform",
|
|
32
|
+
"type": "object"
|
|
33
|
+
},
|
|
34
|
+
"MetricAgg": {
|
|
35
|
+
"additionalProperties": false,
|
|
36
|
+
"description": "The aggregate of one user-named metric key across the eval — overall plus per-suite / per-task\nbreakdowns and the sample count. The platform aggregates whatever the user returned in `Step.metrics`;\nit neither defines nor injects `success_rate` (success is just one key the user may or may not name).",
|
|
37
|
+
"properties": {
|
|
38
|
+
"n": {
|
|
39
|
+
"title": "N",
|
|
40
|
+
"type": "integer"
|
|
41
|
+
},
|
|
42
|
+
"overall": {
|
|
43
|
+
"title": "Overall",
|
|
44
|
+
"type": "number"
|
|
45
|
+
},
|
|
46
|
+
"per_suite": {
|
|
47
|
+
"items": {
|
|
48
|
+
"$ref": "#/$defs/SuiteAgg"
|
|
49
|
+
},
|
|
50
|
+
"title": "Per Suite",
|
|
51
|
+
"type": "array"
|
|
52
|
+
},
|
|
53
|
+
"per_task": {
|
|
54
|
+
"items": {
|
|
55
|
+
"$ref": "#/$defs/TaskAgg"
|
|
56
|
+
},
|
|
57
|
+
"title": "Per Task",
|
|
58
|
+
"type": "array"
|
|
59
|
+
}
|
|
60
|
+
},
|
|
61
|
+
"required": [
|
|
62
|
+
"overall",
|
|
63
|
+
"n"
|
|
64
|
+
],
|
|
65
|
+
"title": "MetricAgg",
|
|
66
|
+
"type": "object"
|
|
67
|
+
},
|
|
68
|
+
"SuiteAgg": {
|
|
69
|
+
"additionalProperties": false,
|
|
70
|
+
"description": "Per-suite aggregate of ONE user-named metric — structured detail, not a bare dict. `value` is the\nmetric aggregated over that suite; the platform does not name or interpret the metric.",
|
|
71
|
+
"properties": {
|
|
72
|
+
"n": {
|
|
73
|
+
"title": "N",
|
|
74
|
+
"type": "integer"
|
|
75
|
+
},
|
|
76
|
+
"suite": {
|
|
77
|
+
"title": "Suite",
|
|
78
|
+
"type": "string"
|
|
79
|
+
},
|
|
80
|
+
"value": {
|
|
81
|
+
"title": "Value",
|
|
82
|
+
"type": "number"
|
|
83
|
+
}
|
|
84
|
+
},
|
|
85
|
+
"required": [
|
|
86
|
+
"suite",
|
|
87
|
+
"value",
|
|
88
|
+
"n"
|
|
89
|
+
],
|
|
90
|
+
"title": "SuiteAgg",
|
|
91
|
+
"type": "object"
|
|
92
|
+
},
|
|
93
|
+
"TaskAgg": {
|
|
94
|
+
"additionalProperties": false,
|
|
95
|
+
"description": "Per-task aggregate of ONE user-named metric — structured detail, not a bare dict.",
|
|
96
|
+
"properties": {
|
|
97
|
+
"n": {
|
|
98
|
+
"title": "N",
|
|
99
|
+
"type": "integer"
|
|
100
|
+
},
|
|
101
|
+
"task": {
|
|
102
|
+
"title": "Task",
|
|
103
|
+
"type": "string"
|
|
104
|
+
},
|
|
105
|
+
"value": {
|
|
106
|
+
"title": "Value",
|
|
107
|
+
"type": "number"
|
|
108
|
+
}
|
|
109
|
+
},
|
|
110
|
+
"required": [
|
|
111
|
+
"task",
|
|
112
|
+
"value",
|
|
113
|
+
"n"
|
|
114
|
+
],
|
|
115
|
+
"title": "TaskAgg",
|
|
116
|
+
"type": "object"
|
|
117
|
+
}
|
|
118
|
+
},
|
|
119
|
+
"additionalProperties": false,
|
|
120
|
+
"description": "GET /v1/eval/{id} (eval-raw revision). NO hard-coded `overall_sr` / `success_rate` top-level field —\n`metrics` is a passthrough dict keyed by the user's metric names (from `@seq.check`'s `Step.metrics`),\neach value a `MetricAgg`. The platform aggregates per key and invents nothing. `videos` carries the mp4\npointers the platform tool produced; `incomplete` flags that some condition did not finish (never pass a\nsubset off as the whole).",
|
|
121
|
+
"properties": {
|
|
122
|
+
"adapter_lossy": {
|
|
123
|
+
"items": {
|
|
124
|
+
"$ref": "#/$defs/LossyTransform"
|
|
125
|
+
},
|
|
126
|
+
"title": "Adapter Lossy",
|
|
127
|
+
"type": "array"
|
|
128
|
+
},
|
|
129
|
+
"cost_usd": {
|
|
130
|
+
"title": "Cost Usd",
|
|
131
|
+
"type": "number"
|
|
132
|
+
},
|
|
133
|
+
"dashboard_url": {
|
|
134
|
+
"title": "Dashboard Url",
|
|
135
|
+
"type": "string"
|
|
136
|
+
},
|
|
137
|
+
"incomplete": {
|
|
138
|
+
"anyOf": [
|
|
139
|
+
{
|
|
140
|
+
"type": "boolean"
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
"type": "null"
|
|
144
|
+
}
|
|
145
|
+
],
|
|
146
|
+
"default": null,
|
|
147
|
+
"title": "Incomplete"
|
|
148
|
+
},
|
|
149
|
+
"metrics": {
|
|
150
|
+
"additionalProperties": {
|
|
151
|
+
"$ref": "#/$defs/MetricAgg"
|
|
152
|
+
},
|
|
153
|
+
"description": "User-named metric key → its aggregate; platform does not name the keys",
|
|
154
|
+
"title": "Metrics",
|
|
155
|
+
"type": "object"
|
|
156
|
+
},
|
|
157
|
+
"status": {
|
|
158
|
+
"$ref": "#/$defs/EvalStatus"
|
|
159
|
+
},
|
|
160
|
+
"videos": {
|
|
161
|
+
"description": "mp4 pointers from the platform tool",
|
|
162
|
+
"items": {
|
|
163
|
+
"type": "string"
|
|
164
|
+
},
|
|
165
|
+
"title": "Videos",
|
|
166
|
+
"type": "array"
|
|
167
|
+
}
|
|
168
|
+
},
|
|
169
|
+
"required": [
|
|
170
|
+
"status",
|
|
171
|
+
"metrics",
|
|
172
|
+
"cost_usd",
|
|
173
|
+
"dashboard_url",
|
|
174
|
+
"adapter_lossy"
|
|
175
|
+
],
|
|
176
|
+
"title": "EvalReport",
|
|
177
|
+
"type": "object",
|
|
178
|
+
"x-contract-version": "0.4.1"
|
|
179
|
+
}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
{
|
|
2
|
+
"additionalProperties": false,
|
|
3
|
+
"description": "`model` and `benchmark` required; the rest are optional knobs. `dry_run` selects the estimate-only\nresponse shape below.",
|
|
4
|
+
"properties": {
|
|
5
|
+
"adapter": {
|
|
6
|
+
"anyOf": [
|
|
7
|
+
{
|
|
8
|
+
"type": "string"
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
"type": "null"
|
|
12
|
+
}
|
|
13
|
+
],
|
|
14
|
+
"default": null,
|
|
15
|
+
"title": "Adapter"
|
|
16
|
+
},
|
|
17
|
+
"benchmark": {
|
|
18
|
+
"title": "Benchmark",
|
|
19
|
+
"type": "string"
|
|
20
|
+
},
|
|
21
|
+
"compare": {
|
|
22
|
+
"anyOf": [
|
|
23
|
+
{
|
|
24
|
+
"type": "string"
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"type": "null"
|
|
28
|
+
}
|
|
29
|
+
],
|
|
30
|
+
"default": null,
|
|
31
|
+
"description": "Another model id to compare against",
|
|
32
|
+
"title": "Compare"
|
|
33
|
+
},
|
|
34
|
+
"dry_run": {
|
|
35
|
+
"default": false,
|
|
36
|
+
"title": "Dry Run",
|
|
37
|
+
"type": "boolean"
|
|
38
|
+
},
|
|
39
|
+
"envs_per_gpu": {
|
|
40
|
+
"anyOf": [
|
|
41
|
+
{
|
|
42
|
+
"type": "integer"
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"type": "null"
|
|
46
|
+
}
|
|
47
|
+
],
|
|
48
|
+
"default": null,
|
|
49
|
+
"title": "Envs Per Gpu"
|
|
50
|
+
},
|
|
51
|
+
"gpus": {
|
|
52
|
+
"anyOf": [
|
|
53
|
+
{
|
|
54
|
+
"type": "integer"
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"type": "null"
|
|
58
|
+
}
|
|
59
|
+
],
|
|
60
|
+
"default": null,
|
|
61
|
+
"title": "Gpus"
|
|
62
|
+
},
|
|
63
|
+
"model": {
|
|
64
|
+
"title": "Model",
|
|
65
|
+
"type": "string"
|
|
66
|
+
},
|
|
67
|
+
"suite": {
|
|
68
|
+
"anyOf": [
|
|
69
|
+
{
|
|
70
|
+
"type": "string"
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
"type": "null"
|
|
74
|
+
}
|
|
75
|
+
],
|
|
76
|
+
"default": null,
|
|
77
|
+
"title": "Suite"
|
|
78
|
+
},
|
|
79
|
+
"trials": {
|
|
80
|
+
"anyOf": [
|
|
81
|
+
{
|
|
82
|
+
"type": "integer"
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
"type": "null"
|
|
86
|
+
}
|
|
87
|
+
],
|
|
88
|
+
"default": null,
|
|
89
|
+
"title": "Trials"
|
|
90
|
+
},
|
|
91
|
+
"vlm_max_concurrency": {
|
|
92
|
+
"anyOf": [
|
|
93
|
+
{
|
|
94
|
+
"type": "integer"
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
"type": "null"
|
|
98
|
+
}
|
|
99
|
+
],
|
|
100
|
+
"default": null,
|
|
101
|
+
"title": "Vlm Max Concurrency"
|
|
102
|
+
}
|
|
103
|
+
},
|
|
104
|
+
"required": [
|
|
105
|
+
"model",
|
|
106
|
+
"benchmark"
|
|
107
|
+
],
|
|
108
|
+
"title": "EvalRequest",
|
|
109
|
+
"type": "object",
|
|
110
|
+
"x-contract-version": "0.4.1"
|
|
111
|
+
}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$defs": {
|
|
3
|
+
"ClampInfo": {
|
|
4
|
+
"additionalProperties": false,
|
|
5
|
+
"description": "Why the granted GPU count was clamped below the request — structured, not a bare value.",
|
|
6
|
+
"properties": {
|
|
7
|
+
"granted": {
|
|
8
|
+
"title": "Granted",
|
|
9
|
+
"type": "integer"
|
|
10
|
+
},
|
|
11
|
+
"limit": {
|
|
12
|
+
"description": "Which limit bound it, e.g. 'account_quota'",
|
|
13
|
+
"title": "Limit",
|
|
14
|
+
"type": "string"
|
|
15
|
+
},
|
|
16
|
+
"requested": {
|
|
17
|
+
"title": "Requested",
|
|
18
|
+
"type": "integer"
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
"required": [
|
|
22
|
+
"limit",
|
|
23
|
+
"requested",
|
|
24
|
+
"granted"
|
|
25
|
+
],
|
|
26
|
+
"title": "ClampInfo",
|
|
27
|
+
"type": "object"
|
|
28
|
+
},
|
|
29
|
+
"Estimate": {
|
|
30
|
+
"additionalProperties": false,
|
|
31
|
+
"properties": {
|
|
32
|
+
"cost_usd": {
|
|
33
|
+
"title": "Cost Usd",
|
|
34
|
+
"type": "number"
|
|
35
|
+
},
|
|
36
|
+
"vlm_calls": {
|
|
37
|
+
"title": "Vlm Calls",
|
|
38
|
+
"type": "integer"
|
|
39
|
+
},
|
|
40
|
+
"wall_clock_s": {
|
|
41
|
+
"title": "Wall Clock S",
|
|
42
|
+
"type": "number"
|
|
43
|
+
}
|
|
44
|
+
},
|
|
45
|
+
"required": [
|
|
46
|
+
"wall_clock_s",
|
|
47
|
+
"cost_usd",
|
|
48
|
+
"vlm_calls"
|
|
49
|
+
],
|
|
50
|
+
"title": "Estimate",
|
|
51
|
+
"type": "object"
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
"additionalProperties": false,
|
|
55
|
+
"description": "A real run — carries the built-machine artifacts (eval_id to GET, gpus_granted actually reserved).",
|
|
56
|
+
"properties": {
|
|
57
|
+
"clamped_by": {
|
|
58
|
+
"anyOf": [
|
|
59
|
+
{
|
|
60
|
+
"$ref": "#/$defs/ClampInfo"
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
"type": "null"
|
|
64
|
+
}
|
|
65
|
+
],
|
|
66
|
+
"default": null
|
|
67
|
+
},
|
|
68
|
+
"estimate": {
|
|
69
|
+
"$ref": "#/$defs/Estimate"
|
|
70
|
+
},
|
|
71
|
+
"eval_id": {
|
|
72
|
+
"title": "Eval Id",
|
|
73
|
+
"type": "string"
|
|
74
|
+
},
|
|
75
|
+
"gpus_granted": {
|
|
76
|
+
"title": "Gpus Granted",
|
|
77
|
+
"type": "integer"
|
|
78
|
+
}
|
|
79
|
+
},
|
|
80
|
+
"required": [
|
|
81
|
+
"eval_id",
|
|
82
|
+
"gpus_granted",
|
|
83
|
+
"estimate"
|
|
84
|
+
],
|
|
85
|
+
"title": "EvalResponse",
|
|
86
|
+
"type": "object",
|
|
87
|
+
"x-contract-version": "0.4.1"
|
|
88
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
{
|
|
2
|
+
"additionalProperties": false,
|
|
3
|
+
"description": "One camera frame at one instant. Repeat a `view` (ordered by timestamp_ms) for a series.",
|
|
4
|
+
"properties": {
|
|
5
|
+
"data": {
|
|
6
|
+
"description": "Base64-encoded image (PNG or JPEG). URLs are not fetched.",
|
|
7
|
+
"title": "Data",
|
|
8
|
+
"type": "string"
|
|
9
|
+
},
|
|
10
|
+
"timestamp_ms": {
|
|
11
|
+
"anyOf": [
|
|
12
|
+
{
|
|
13
|
+
"type": "integer"
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"type": "null"
|
|
17
|
+
}
|
|
18
|
+
],
|
|
19
|
+
"default": null,
|
|
20
|
+
"description": "Orders multiple frames of a view; array order used when omitted",
|
|
21
|
+
"title": "Timestamp Ms"
|
|
22
|
+
},
|
|
23
|
+
"view": {
|
|
24
|
+
"description": "Logical view name, e.g. top / wrist_left / exterior_1. May appear more than once to express a time series",
|
|
25
|
+
"title": "View",
|
|
26
|
+
"type": "string"
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
"required": [
|
|
30
|
+
"view",
|
|
31
|
+
"data"
|
|
32
|
+
],
|
|
33
|
+
"title": "ImageFrame",
|
|
34
|
+
"type": "object",
|
|
35
|
+
"x-contract-version": "0.4.1"
|
|
36
|
+
}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$defs": {
|
|
3
|
+
"ImageStepApt": {
|
|
4
|
+
"additionalProperties": false,
|
|
5
|
+
"properties": {
|
|
6
|
+
"apt_install": {
|
|
7
|
+
"items": {
|
|
8
|
+
"type": "string"
|
|
9
|
+
},
|
|
10
|
+
"title": "Apt Install",
|
|
11
|
+
"type": "array"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"required": [
|
|
15
|
+
"apt_install"
|
|
16
|
+
],
|
|
17
|
+
"title": "ImageStepApt",
|
|
18
|
+
"type": "object"
|
|
19
|
+
},
|
|
20
|
+
"ImageStepEnv": {
|
|
21
|
+
"additionalProperties": false,
|
|
22
|
+
"properties": {
|
|
23
|
+
"env": {
|
|
24
|
+
"additionalProperties": {
|
|
25
|
+
"type": "string"
|
|
26
|
+
},
|
|
27
|
+
"title": "Env",
|
|
28
|
+
"type": "object"
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
"required": [
|
|
32
|
+
"env"
|
|
33
|
+
],
|
|
34
|
+
"title": "ImageStepEnv",
|
|
35
|
+
"type": "object"
|
|
36
|
+
},
|
|
37
|
+
"ImageStepRun": {
|
|
38
|
+
"additionalProperties": false,
|
|
39
|
+
"properties": {
|
|
40
|
+
"run_commands": {
|
|
41
|
+
"items": {
|
|
42
|
+
"type": "string"
|
|
43
|
+
},
|
|
44
|
+
"title": "Run Commands",
|
|
45
|
+
"type": "array"
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
"required": [
|
|
49
|
+
"run_commands"
|
|
50
|
+
],
|
|
51
|
+
"title": "ImageStepRun",
|
|
52
|
+
"type": "object"
|
|
53
|
+
},
|
|
54
|
+
"ImageStepUvPip": {
|
|
55
|
+
"additionalProperties": false,
|
|
56
|
+
"properties": {
|
|
57
|
+
"uv_pip_install": {
|
|
58
|
+
"items": {
|
|
59
|
+
"type": "string"
|
|
60
|
+
},
|
|
61
|
+
"title": "Uv Pip Install",
|
|
62
|
+
"type": "array"
|
|
63
|
+
}
|
|
64
|
+
},
|
|
65
|
+
"required": [
|
|
66
|
+
"uv_pip_install"
|
|
67
|
+
],
|
|
68
|
+
"title": "ImageStepUvPip",
|
|
69
|
+
"type": "object"
|
|
70
|
+
}
|
|
71
|
+
},
|
|
72
|
+
"additionalProperties": false,
|
|
73
|
+
"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.",
|
|
74
|
+
"properties": {
|
|
75
|
+
"base": {
|
|
76
|
+
"anyOf": [
|
|
77
|
+
{
|
|
78
|
+
"type": "string"
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
"type": "null"
|
|
82
|
+
}
|
|
83
|
+
],
|
|
84
|
+
"default": null,
|
|
85
|
+
"title": "Base"
|
|
86
|
+
},
|
|
87
|
+
"dockerfile": {
|
|
88
|
+
"anyOf": [
|
|
89
|
+
{
|
|
90
|
+
"type": "string"
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
"type": "null"
|
|
94
|
+
}
|
|
95
|
+
],
|
|
96
|
+
"default": null,
|
|
97
|
+
"title": "Dockerfile"
|
|
98
|
+
},
|
|
99
|
+
"steps": {
|
|
100
|
+
"items": {
|
|
101
|
+
"anyOf": [
|
|
102
|
+
{
|
|
103
|
+
"$ref": "#/$defs/ImageStepUvPip"
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
"$ref": "#/$defs/ImageStepApt"
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
"$ref": "#/$defs/ImageStepEnv"
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
"$ref": "#/$defs/ImageStepRun"
|
|
113
|
+
}
|
|
114
|
+
]
|
|
115
|
+
},
|
|
116
|
+
"title": "Steps",
|
|
117
|
+
"type": "array"
|
|
118
|
+
}
|
|
119
|
+
},
|
|
120
|
+
"title": "ImageSpec",
|
|
121
|
+
"type": "object",
|
|
122
|
+
"x-contract-version": "0.4.1"
|
|
123
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"additionalProperties": false,
|
|
3
|
+
"properties": {
|
|
4
|
+
"apt_install": {
|
|
5
|
+
"items": {
|
|
6
|
+
"type": "string"
|
|
7
|
+
},
|
|
8
|
+
"title": "Apt Install",
|
|
9
|
+
"type": "array"
|
|
10
|
+
}
|
|
11
|
+
},
|
|
12
|
+
"required": [
|
|
13
|
+
"apt_install"
|
|
14
|
+
],
|
|
15
|
+
"title": "ImageStepApt",
|
|
16
|
+
"type": "object",
|
|
17
|
+
"x-contract-version": "0.4.1"
|
|
18
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"additionalProperties": false,
|
|
3
|
+
"properties": {
|
|
4
|
+
"env": {
|
|
5
|
+
"additionalProperties": {
|
|
6
|
+
"type": "string"
|
|
7
|
+
},
|
|
8
|
+
"title": "Env",
|
|
9
|
+
"type": "object"
|
|
10
|
+
}
|
|
11
|
+
},
|
|
12
|
+
"required": [
|
|
13
|
+
"env"
|
|
14
|
+
],
|
|
15
|
+
"title": "ImageStepEnv",
|
|
16
|
+
"type": "object",
|
|
17
|
+
"x-contract-version": "0.4.1"
|
|
18
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"additionalProperties": false,
|
|
3
|
+
"properties": {
|
|
4
|
+
"run_commands": {
|
|
5
|
+
"items": {
|
|
6
|
+
"type": "string"
|
|
7
|
+
},
|
|
8
|
+
"title": "Run Commands",
|
|
9
|
+
"type": "array"
|
|
10
|
+
}
|
|
11
|
+
},
|
|
12
|
+
"required": [
|
|
13
|
+
"run_commands"
|
|
14
|
+
],
|
|
15
|
+
"title": "ImageStepRun",
|
|
16
|
+
"type": "object",
|
|
17
|
+
"x-contract-version": "0.4.1"
|
|
18
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"additionalProperties": false,
|
|
3
|
+
"properties": {
|
|
4
|
+
"uv_pip_install": {
|
|
5
|
+
"items": {
|
|
6
|
+
"type": "string"
|
|
7
|
+
},
|
|
8
|
+
"title": "Uv Pip Install",
|
|
9
|
+
"type": "array"
|
|
10
|
+
}
|
|
11
|
+
},
|
|
12
|
+
"required": [
|
|
13
|
+
"uv_pip_install"
|
|
14
|
+
],
|
|
15
|
+
"title": "ImageStepUvPip",
|
|
16
|
+
"type": "object",
|
|
17
|
+
"x-contract-version": "0.4.1"
|
|
18
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"additionalProperties": false,
|
|
3
|
+
"description": "A time-boxed grant of the direct coordinates. Renewed before `expires_at`; `epoch` is the\nworker/secret generation — a client holding a stale epoch against a new worker gets 401 and must\nre-connect.",
|
|
4
|
+
"properties": {
|
|
5
|
+
"epoch": {
|
|
6
|
+
"description": "Worker/secret generation counter; rolls on worker change",
|
|
7
|
+
"title": "Epoch",
|
|
8
|
+
"type": "integer"
|
|
9
|
+
},
|
|
10
|
+
"expires_at": {
|
|
11
|
+
"format": "date-time",
|
|
12
|
+
"title": "Expires At",
|
|
13
|
+
"type": "string"
|
|
14
|
+
},
|
|
15
|
+
"ttl_s": {
|
|
16
|
+
"title": "Ttl S",
|
|
17
|
+
"type": "integer"
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
"required": [
|
|
21
|
+
"ttl_s",
|
|
22
|
+
"expires_at",
|
|
23
|
+
"epoch"
|
|
24
|
+
],
|
|
25
|
+
"title": "Lease",
|
|
26
|
+
"type": "object",
|
|
27
|
+
"x-contract-version": "0.4.1"
|
|
28
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"additionalProperties": false,
|
|
3
|
+
"description": "A lossy adapter transform recorded in the report. Shape aligns with the lossy element of\nAdapterTransform (both {transform, reason}).",
|
|
4
|
+
"properties": {
|
|
5
|
+
"reason": {
|
|
6
|
+
"title": "Reason",
|
|
7
|
+
"type": "string"
|
|
8
|
+
},
|
|
9
|
+
"transform": {
|
|
10
|
+
"title": "Transform",
|
|
11
|
+
"type": "string"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"required": [
|
|
15
|
+
"transform",
|
|
16
|
+
"reason"
|
|
17
|
+
],
|
|
18
|
+
"title": "LossyTransform",
|
|
19
|
+
"type": "object",
|
|
20
|
+
"x-contract-version": "0.4.1"
|
|
21
|
+
}
|