@nexural/schema 0.1.0

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.
@@ -0,0 +1,389 @@
1
+ {
2
+ "$ref": "#/definitions/recipe-manifest",
3
+ "definitions": {
4
+ "recipe-manifest": {
5
+ "type": "object",
6
+ "properties": {
7
+ "schema_version": {
8
+ "type": "number",
9
+ "const": 1
10
+ },
11
+ "name": {
12
+ "type": "string",
13
+ "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$"
14
+ },
15
+ "version": {
16
+ "type": "string",
17
+ "pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$"
18
+ },
19
+ "description": {
20
+ "type": "string",
21
+ "minLength": 20,
22
+ "maxLength": 500
23
+ },
24
+ "extends": {
25
+ "type": "string",
26
+ "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$"
27
+ },
28
+ "composes": {
29
+ "type": "array",
30
+ "items": {
31
+ "type": "string",
32
+ "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$"
33
+ },
34
+ "default": []
35
+ },
36
+ "inputs_schema": {
37
+ "type": "string"
38
+ },
39
+ "warehouses": {
40
+ "type": "array",
41
+ "items": {
42
+ "type": "string",
43
+ "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$"
44
+ },
45
+ "minItems": 1
46
+ },
47
+ "services": {
48
+ "type": "array",
49
+ "items": {
50
+ "anyOf": [
51
+ {
52
+ "type": "object",
53
+ "properties": {
54
+ "id": {
55
+ "type": "string",
56
+ "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$"
57
+ },
58
+ "runtime": {
59
+ "type": "string",
60
+ "const": "nextjs"
61
+ },
62
+ "language": {
63
+ "type": "string",
64
+ "const": "typescript"
65
+ },
66
+ "host": {
67
+ "type": "string",
68
+ "enum": [
69
+ "vercel",
70
+ "cloudflare-pages"
71
+ ]
72
+ }
73
+ },
74
+ "required": [
75
+ "id",
76
+ "runtime",
77
+ "language",
78
+ "host"
79
+ ],
80
+ "additionalProperties": false
81
+ },
82
+ {
83
+ "type": "object",
84
+ "properties": {
85
+ "id": {
86
+ "type": "string",
87
+ "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$"
88
+ },
89
+ "runtime": {
90
+ "type": "string",
91
+ "const": "modal"
92
+ },
93
+ "language": {
94
+ "type": "string",
95
+ "const": "python"
96
+ },
97
+ "python_version": {
98
+ "type": "string",
99
+ "enum": [
100
+ "3.11",
101
+ "3.12"
102
+ ]
103
+ },
104
+ "deps": {
105
+ "type": "string"
106
+ },
107
+ "host": {
108
+ "type": "string",
109
+ "const": "modal"
110
+ },
111
+ "contract": {
112
+ "type": "string"
113
+ },
114
+ "gpu": {
115
+ "type": "string",
116
+ "enum": [
117
+ "none",
118
+ "t4",
119
+ "a10g",
120
+ "a100"
121
+ ],
122
+ "default": "none"
123
+ }
124
+ },
125
+ "required": [
126
+ "id",
127
+ "runtime",
128
+ "language",
129
+ "python_version",
130
+ "deps",
131
+ "host",
132
+ "contract"
133
+ ],
134
+ "additionalProperties": false
135
+ },
136
+ {
137
+ "type": "object",
138
+ "properties": {
139
+ "id": {
140
+ "type": "string",
141
+ "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$"
142
+ },
143
+ "runtime": {
144
+ "type": "string",
145
+ "const": "railway"
146
+ },
147
+ "language": {
148
+ "type": "string",
149
+ "enum": [
150
+ "python",
151
+ "node"
152
+ ]
153
+ },
154
+ "deps": {
155
+ "type": "string"
156
+ },
157
+ "host": {
158
+ "type": "string",
159
+ "const": "railway"
160
+ },
161
+ "contract": {
162
+ "type": "string"
163
+ }
164
+ },
165
+ "required": [
166
+ "id",
167
+ "runtime",
168
+ "language",
169
+ "deps",
170
+ "host",
171
+ "contract"
172
+ ],
173
+ "additionalProperties": false
174
+ },
175
+ {
176
+ "type": "object",
177
+ "properties": {
178
+ "id": {
179
+ "type": "string",
180
+ "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$"
181
+ },
182
+ "runtime": {
183
+ "type": "string",
184
+ "const": "cloudflare-worker"
185
+ },
186
+ "language": {
187
+ "type": "string",
188
+ "const": "typescript"
189
+ },
190
+ "host": {
191
+ "type": "string",
192
+ "const": "cloudflare"
193
+ },
194
+ "contract": {
195
+ "type": "string"
196
+ }
197
+ },
198
+ "required": [
199
+ "id",
200
+ "runtime",
201
+ "language",
202
+ "host"
203
+ ],
204
+ "additionalProperties": false
205
+ }
206
+ ]
207
+ },
208
+ "default": []
209
+ },
210
+ "qa_profile": {
211
+ "type": "string",
212
+ "enum": [
213
+ "fast",
214
+ "standard",
215
+ "thorough",
216
+ "deep"
217
+ ],
218
+ "default": "standard"
219
+ },
220
+ "cost_envelope": {
221
+ "type": "object",
222
+ "properties": {
223
+ "per_request_p50_usd": {
224
+ "type": "number",
225
+ "minimum": 0
226
+ },
227
+ "per_request_p99_usd": {
228
+ "type": "number",
229
+ "minimum": 0
230
+ },
231
+ "monthly_baseline_usd": {
232
+ "type": "number",
233
+ "minimum": 0
234
+ },
235
+ "hard_caps": {
236
+ "type": "object",
237
+ "properties": {
238
+ "per_request_usd": {
239
+ "type": "number",
240
+ "exclusiveMinimum": 0
241
+ },
242
+ "per_user_per_day_usd": {
243
+ "type": "number",
244
+ "exclusiveMinimum": 0
245
+ },
246
+ "per_app_per_day_usd": {
247
+ "type": "number",
248
+ "exclusiveMinimum": 0
249
+ }
250
+ },
251
+ "required": [
252
+ "per_request_usd",
253
+ "per_user_per_day_usd",
254
+ "per_app_per_day_usd"
255
+ ],
256
+ "additionalProperties": false
257
+ }
258
+ },
259
+ "required": [
260
+ "per_request_p50_usd",
261
+ "per_request_p99_usd",
262
+ "monthly_baseline_usd",
263
+ "hard_caps"
264
+ ],
265
+ "additionalProperties": false
266
+ },
267
+ "model_families": {
268
+ "type": "array",
269
+ "items": {
270
+ "type": "string",
271
+ "pattern": "^[a-z0-9-]+:[a-z0-9-]+$"
272
+ },
273
+ "default": []
274
+ },
275
+ "output_license": {
276
+ "type": "string",
277
+ "enum": [
278
+ "MIT",
279
+ "Apache-2.0",
280
+ "ISC"
281
+ ]
282
+ },
283
+ "commercial_restricted_ok": {
284
+ "type": "boolean",
285
+ "default": false
286
+ },
287
+ "secrets_required": {
288
+ "type": "array",
289
+ "items": {
290
+ "type": "object",
291
+ "properties": {
292
+ "logical_name": {
293
+ "type": "string",
294
+ "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$"
295
+ },
296
+ "op_path": {
297
+ "type": "string",
298
+ "pattern": "^op:\\/\\/"
299
+ },
300
+ "target_file": {
301
+ "type": "string"
302
+ },
303
+ "target_var": {
304
+ "type": "string",
305
+ "pattern": "^[A-Z_][A-Z0-9_]*$"
306
+ }
307
+ },
308
+ "required": [
309
+ "logical_name",
310
+ "op_path",
311
+ "target_file",
312
+ "target_var"
313
+ ],
314
+ "additionalProperties": false
315
+ },
316
+ "default": []
317
+ },
318
+ "emit": {
319
+ "type": "object",
320
+ "properties": {
321
+ "template_path": {
322
+ "type": "string"
323
+ },
324
+ "pre_emit_hooks": {
325
+ "type": "array",
326
+ "items": {
327
+ "type": "string"
328
+ },
329
+ "default": []
330
+ },
331
+ "post_emit_hooks": {
332
+ "type": "array",
333
+ "items": {
334
+ "type": "string"
335
+ },
336
+ "default": []
337
+ }
338
+ },
339
+ "required": [
340
+ "template_path"
341
+ ],
342
+ "additionalProperties": false
343
+ },
344
+ "threat_model_path": {
345
+ "type": "string"
346
+ },
347
+ "decisions_path": {
348
+ "type": "string"
349
+ },
350
+ "forge_sandbox": {
351
+ "type": "object",
352
+ "properties": {
353
+ "ignore_scripts": {
354
+ "type": "boolean",
355
+ "default": true
356
+ },
357
+ "allowed_postinstalls": {
358
+ "type": "array",
359
+ "items": {
360
+ "type": "string"
361
+ },
362
+ "default": []
363
+ }
364
+ },
365
+ "additionalProperties": false,
366
+ "default": {
367
+ "ignore_scripts": true,
368
+ "allowed_postinstalls": []
369
+ }
370
+ }
371
+ },
372
+ "required": [
373
+ "schema_version",
374
+ "name",
375
+ "version",
376
+ "description",
377
+ "inputs_schema",
378
+ "warehouses",
379
+ "cost_envelope",
380
+ "output_license",
381
+ "emit",
382
+ "threat_model_path",
383
+ "decisions_path"
384
+ ],
385
+ "additionalProperties": false
386
+ }
387
+ },
388
+ "$schema": "http://json-schema.org/draft-07/schema#"
389
+ }
@@ -0,0 +1,95 @@
1
+ {
2
+ "$ref": "#/definitions/registry",
3
+ "definitions": {
4
+ "registry": {
5
+ "type": "object",
6
+ "properties": {
7
+ "schema_version": {
8
+ "type": "number",
9
+ "const": 1
10
+ },
11
+ "federation": {
12
+ "type": "string",
13
+ "enum": [
14
+ "factory",
15
+ "lifeops"
16
+ ]
17
+ },
18
+ "generated_at": {
19
+ "type": "string",
20
+ "format": "date-time"
21
+ },
22
+ "warehouses": {
23
+ "type": "array",
24
+ "items": {
25
+ "type": "object",
26
+ "properties": {
27
+ "name": {
28
+ "type": "string",
29
+ "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$"
30
+ },
31
+ "tier": {
32
+ "type": "string",
33
+ "enum": [
34
+ "public",
35
+ "internal",
36
+ "private-encrypted"
37
+ ]
38
+ },
39
+ "status": {
40
+ "type": "string",
41
+ "enum": [
42
+ "active",
43
+ "seeded",
44
+ "archived",
45
+ "deprecated",
46
+ "merged"
47
+ ]
48
+ },
49
+ "repo": {
50
+ "type": "string",
51
+ "format": "uri",
52
+ "pattern": "^https:\\/\\/github\\.com\\/"
53
+ },
54
+ "last_reviewed": {
55
+ "type": "string",
56
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
57
+ },
58
+ "decay_rate_days": {
59
+ "type": "integer",
60
+ "exclusiveMinimum": 0,
61
+ "maximum": 3650
62
+ },
63
+ "discovered_via": {
64
+ "type": "string",
65
+ "enum": [
66
+ "github-topic",
67
+ "explicit-list",
68
+ "manual-add"
69
+ ]
70
+ }
71
+ },
72
+ "required": [
73
+ "name",
74
+ "tier",
75
+ "status",
76
+ "repo",
77
+ "last_reviewed",
78
+ "decay_rate_days",
79
+ "discovered_via"
80
+ ],
81
+ "additionalProperties": false
82
+ }
83
+ }
84
+ },
85
+ "required": [
86
+ "schema_version",
87
+ "federation",
88
+ "generated_at",
89
+ "warehouses"
90
+ ],
91
+ "additionalProperties": false
92
+ }
93
+ },
94
+ "$schema": "http://json-schema.org/draft-07/schema#"
95
+ }
@@ -0,0 +1,43 @@
1
+ {
2
+ "$ref": "#/definitions/revoked-recipe-entry",
3
+ "definitions": {
4
+ "revoked-recipe-entry": {
5
+ "type": "object",
6
+ "properties": {
7
+ "recipe_name": {
8
+ "type": "string",
9
+ "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$"
10
+ },
11
+ "recipe_version": {
12
+ "type": "string",
13
+ "pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$"
14
+ },
15
+ "revoked_at": {
16
+ "type": "string",
17
+ "format": "date-time"
18
+ },
19
+ "reason": {
20
+ "type": "string",
21
+ "minLength": 10
22
+ },
23
+ "ticket": {
24
+ "type": "string",
25
+ "format": "uri"
26
+ },
27
+ "signature": {
28
+ "type": "string",
29
+ "minLength": 1
30
+ }
31
+ },
32
+ "required": [
33
+ "recipe_name",
34
+ "recipe_version",
35
+ "revoked_at",
36
+ "reason",
37
+ "signature"
38
+ ],
39
+ "additionalProperties": false
40
+ }
41
+ },
42
+ "$schema": "http://json-schema.org/draft-07/schema#"
43
+ }
@@ -0,0 +1,65 @@
1
+ {
2
+ "$ref": "#/definitions/revoked-recipes-list",
3
+ "definitions": {
4
+ "revoked-recipes-list": {
5
+ "type": "object",
6
+ "properties": {
7
+ "schema_version": {
8
+ "type": "number",
9
+ "const": 1
10
+ },
11
+ "generated_at": {
12
+ "type": "string",
13
+ "format": "date-time"
14
+ },
15
+ "entries": {
16
+ "type": "array",
17
+ "items": {
18
+ "type": "object",
19
+ "properties": {
20
+ "recipe_name": {
21
+ "type": "string",
22
+ "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$"
23
+ },
24
+ "recipe_version": {
25
+ "type": "string",
26
+ "pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$"
27
+ },
28
+ "revoked_at": {
29
+ "type": "string",
30
+ "format": "date-time"
31
+ },
32
+ "reason": {
33
+ "type": "string",
34
+ "minLength": 10
35
+ },
36
+ "ticket": {
37
+ "type": "string",
38
+ "format": "uri"
39
+ },
40
+ "signature": {
41
+ "type": "string",
42
+ "minLength": 1
43
+ }
44
+ },
45
+ "required": [
46
+ "recipe_name",
47
+ "recipe_version",
48
+ "revoked_at",
49
+ "reason",
50
+ "signature"
51
+ ],
52
+ "additionalProperties": false
53
+ }
54
+ }
55
+ },
56
+ "required": [
57
+ "schema_version",
58
+ "generated_at",
59
+ "entries"
60
+ ],
61
+ "additionalProperties": false
62
+ }
63
+ },
64
+ "$schema": "http://json-schema.org/draft-07/schema#"
65
+ }