@ue-shed/protocol 0.6.0 → 0.7.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.
Files changed (33) hide show
  1. package/contracts/cameras/map-tile/v1/README.md +7 -0
  2. package/contracts/cameras/map-tile/v1/capture-response.schema.json +97 -25
  3. package/contracts/cameras/map-tile/v1/manifest.schema.json +136 -37
  4. package/contracts/cameras/map-tile/v1/plan.schema.json +132 -36
  5. package/contracts/cameras/map-tile/v1/release-result.schema.json +12 -0
  6. package/contracts/cameras/render/v1/README.md +33 -0
  7. package/contracts/cameras/render/v1/begin-result.schema.json +712 -0
  8. package/contracts/cameras/render/v1/capabilities.schema.json +201 -0
  9. package/contracts/cameras/render/v1/end-result.schema.json +185 -0
  10. package/contracts/cameras/render/v1/fixtures/frame-orthographic.json +31 -0
  11. package/contracts/cameras/render/v1/fixtures/frame-perspective.json +31 -0
  12. package/contracts/cameras/render/v1/fixtures/invalid-frame-mixed-projection.json +32 -0
  13. package/contracts/cameras/render/v1/fixtures/invalid-frame-size.json +31 -0
  14. package/contracts/cameras/render/v1/fixtures/invalid-session-backend-fields.json +40 -0
  15. package/contracts/cameras/render/v1/fixtures/invalid-session-budget.json +39 -0
  16. package/contracts/cameras/render/v1/fixtures/invalid-session-future.json +39 -0
  17. package/contracts/cameras/render/v1/fixtures/session-camera-regions.json +51 -0
  18. package/contracts/cameras/render/v1/fixtures/session-editor-viewport.json +40 -0
  19. package/contracts/cameras/render/v1/fixtures/session-scene-capture.json +39 -0
  20. package/contracts/cameras/render/v1/frame-evidence.schema.json +771 -0
  21. package/contracts/cameras/render/v1/frame-request.schema.json +219 -0
  22. package/contracts/cameras/render/v1/frame-status.schema.json +1076 -0
  23. package/contracts/cameras/render/v1/policy.schema.json +510 -0
  24. package/contracts/cameras/render/v1/preflight.schema.json +68 -0
  25. package/contracts/cameras/render/v1/review-inspection-request.schema.json +342 -0
  26. package/contracts/cameras/render/v1/review-inspection-result.schema.json +2030 -0
  27. package/contracts/cameras/render/v1/review-realization-request.schema.json +417 -0
  28. package/contracts/cameras/render/v1/review-realization-result.schema.json +454 -0
  29. package/contracts/cameras/render/v1/session-request.schema.json +617 -0
  30. package/contracts/cameras/review/v1/README.md +7 -0
  31. package/contracts/cameras/review/v1/capture-request.schema.json +247 -61
  32. package/contracts/cameras/review/v1/capture-response.schema.json +820 -192
  33. package/package.json +1 -1
@@ -0,0 +1,617 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://ue-shed.dev/contracts/cameras/render/v1/session-request.schema.json",
4
+ "type": "object",
5
+ "properties": {
6
+ "contract": {
7
+ "type": "object",
8
+ "properties": {
9
+ "name": {
10
+ "type": "string",
11
+ "enum": ["ue-shed-camera-render"]
12
+ },
13
+ "version": {
14
+ "type": "object",
15
+ "properties": {
16
+ "major": {
17
+ "type": "number",
18
+ "enum": [1]
19
+ },
20
+ "minor": {
21
+ "type": "number",
22
+ "enum": [0]
23
+ }
24
+ },
25
+ "required": ["major", "minor"],
26
+ "additionalProperties": false
27
+ }
28
+ },
29
+ "required": ["name", "version"],
30
+ "additionalProperties": false
31
+ },
32
+ "sessionId": {
33
+ "type": "string",
34
+ "allOf": [
35
+ {
36
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$"
37
+ }
38
+ ]
39
+ },
40
+ "expectedMapPath": {
41
+ "type": "string",
42
+ "allOf": [
43
+ {
44
+ "pattern": "^\\/[A-Za-z0-9_./-]+$"
45
+ },
46
+ {
47
+ "maxLength": 1024
48
+ }
49
+ ]
50
+ },
51
+ "expectedProjectName": {
52
+ "type": "string",
53
+ "allOf": [
54
+ {
55
+ "minLength": 1
56
+ },
57
+ {
58
+ "maxLength": 1024
59
+ }
60
+ ]
61
+ },
62
+ "policy": {
63
+ "type": "object",
64
+ "properties": {
65
+ "renderer": {
66
+ "anyOf": [
67
+ {
68
+ "type": "object",
69
+ "properties": {
70
+ "kind": {
71
+ "type": "string",
72
+ "enum": ["editor_viewport"]
73
+ },
74
+ "strategy": {
75
+ "type": "string",
76
+ "enum": ["high_resolution_screenshot"]
77
+ },
78
+ "profile": {
79
+ "type": "string",
80
+ "enum": ["lit", "observation"]
81
+ },
82
+ "vignette": {
83
+ "type": "string",
84
+ "enum": ["project", "disabled"]
85
+ },
86
+ "fog": {
87
+ "type": "boolean"
88
+ },
89
+ "volumetricFog": {
90
+ "type": "boolean"
91
+ }
92
+ },
93
+ "required": [
94
+ "kind",
95
+ "strategy",
96
+ "profile",
97
+ "vignette",
98
+ "fog",
99
+ "volumetricFog"
100
+ ],
101
+ "additionalProperties": false
102
+ },
103
+ {
104
+ "type": "object",
105
+ "properties": {
106
+ "kind": {
107
+ "type": "string",
108
+ "enum": ["scene_capture"]
109
+ },
110
+ "profile": {
111
+ "type": "string",
112
+ "enum": [
113
+ "full_fidelity",
114
+ "seam_stable",
115
+ "scene_capture_defaults",
116
+ "observation"
117
+ ]
118
+ },
119
+ "lodDistanceScale": {
120
+ "type": "number",
121
+ "allOf": [
122
+ {
123
+ "minimum": 0.1,
124
+ "maximum": 100
125
+ }
126
+ ]
127
+ },
128
+ "fog": {
129
+ "type": "boolean"
130
+ },
131
+ "volumetricFog": {
132
+ "type": "boolean"
133
+ }
134
+ },
135
+ "required": [
136
+ "kind",
137
+ "profile",
138
+ "lodDistanceScale",
139
+ "fog",
140
+ "volumetricFog"
141
+ ],
142
+ "additionalProperties": false
143
+ }
144
+ ]
145
+ },
146
+ "exposure": {
147
+ "anyOf": [
148
+ {
149
+ "type": "object",
150
+ "properties": {
151
+ "mode": {
152
+ "type": "string",
153
+ "enum": ["project_auto"]
154
+ }
155
+ },
156
+ "required": ["mode"],
157
+ "additionalProperties": false
158
+ },
159
+ {
160
+ "type": "object",
161
+ "properties": {
162
+ "mode": {
163
+ "type": "string",
164
+ "enum": ["fixed_ev100"]
165
+ },
166
+ "ev100": {
167
+ "type": "number",
168
+ "allOf": [
169
+ {
170
+ "minimum": -20,
171
+ "maximum": 30
172
+ }
173
+ ]
174
+ },
175
+ "compensation": {
176
+ "type": "string",
177
+ "enum": ["project"]
178
+ }
179
+ },
180
+ "required": ["mode", "ev100", "compensation"],
181
+ "additionalProperties": false
182
+ },
183
+ {
184
+ "type": "object",
185
+ "properties": {
186
+ "mode": {
187
+ "type": "string",
188
+ "enum": ["meter_once"]
189
+ },
190
+ "referenceCamera": {
191
+ "type": "object",
192
+ "properties": {
193
+ "location": {
194
+ "type": "object",
195
+ "properties": {
196
+ "x": {
197
+ "type": "number"
198
+ },
199
+ "y": {
200
+ "type": "number"
201
+ },
202
+ "z": {
203
+ "type": "number"
204
+ }
205
+ },
206
+ "required": ["x", "y", "z"],
207
+ "additionalProperties": false
208
+ },
209
+ "rotation": {
210
+ "type": "object",
211
+ "properties": {
212
+ "pitch": {
213
+ "type": "number"
214
+ },
215
+ "roll": {
216
+ "type": "number"
217
+ },
218
+ "yaw": {
219
+ "type": "number"
220
+ }
221
+ },
222
+ "required": ["pitch", "roll", "yaw"],
223
+ "additionalProperties": false
224
+ },
225
+ "projection": {
226
+ "anyOf": [
227
+ {
228
+ "type": "object",
229
+ "properties": {
230
+ "kind": {
231
+ "type": "string",
232
+ "enum": ["perspective"]
233
+ },
234
+ "horizontalFieldOfView": {
235
+ "type": "number",
236
+ "allOf": [
237
+ {
238
+ "minimum": 5,
239
+ "maximum": 170
240
+ }
241
+ ]
242
+ }
243
+ },
244
+ "required": ["kind", "horizontalFieldOfView"],
245
+ "additionalProperties": false
246
+ },
247
+ {
248
+ "type": "object",
249
+ "properties": {
250
+ "kind": {
251
+ "type": "string",
252
+ "enum": ["orthographic"]
253
+ },
254
+ "width": {
255
+ "type": "number",
256
+ "allOf": [
257
+ {
258
+ "exclusiveMinimum": 0
259
+ },
260
+ {
261
+ "maximum": 1000000000
262
+ }
263
+ ]
264
+ }
265
+ },
266
+ "required": ["kind", "width"],
267
+ "additionalProperties": false
268
+ }
269
+ ]
270
+ }
271
+ },
272
+ "required": ["location", "rotation", "projection"],
273
+ "additionalProperties": false
274
+ },
275
+ "referenceSize": {
276
+ "type": "object",
277
+ "properties": {
278
+ "width": {
279
+ "type": "integer",
280
+ "allOf": [
281
+ {
282
+ "minimum": 16,
283
+ "maximum": 16384
284
+ }
285
+ ]
286
+ },
287
+ "height": {
288
+ "type": "integer",
289
+ "allOf": [
290
+ {
291
+ "minimum": 16,
292
+ "maximum": 16384
293
+ }
294
+ ]
295
+ }
296
+ },
297
+ "required": ["width", "height"],
298
+ "additionalProperties": false
299
+ },
300
+ "minimumFrames": {
301
+ "type": "integer",
302
+ "allOf": [
303
+ {
304
+ "minimum": 1,
305
+ "maximum": 4096
306
+ }
307
+ ]
308
+ }
309
+ },
310
+ "required": [
311
+ "mode",
312
+ "referenceCamera",
313
+ "referenceSize",
314
+ "minimumFrames"
315
+ ],
316
+ "additionalProperties": false
317
+ }
318
+ ]
319
+ },
320
+ "settling": {
321
+ "type": "object",
322
+ "properties": {
323
+ "minimumFrames": {
324
+ "type": "integer",
325
+ "allOf": [
326
+ {
327
+ "minimum": 1,
328
+ "maximum": 4096
329
+ }
330
+ ]
331
+ },
332
+ "timeoutMs": {
333
+ "type": "integer",
334
+ "allOf": [
335
+ {
336
+ "minimum": 1000,
337
+ "maximum": 900000
338
+ }
339
+ ]
340
+ },
341
+ "initialView": {
342
+ "type": "object",
343
+ "properties": {
344
+ "camera": {
345
+ "type": "object",
346
+ "properties": {
347
+ "location": {
348
+ "type": "object",
349
+ "properties": {
350
+ "x": {
351
+ "type": "number"
352
+ },
353
+ "y": {
354
+ "type": "number"
355
+ },
356
+ "z": {
357
+ "type": "number"
358
+ }
359
+ },
360
+ "required": ["x", "y", "z"],
361
+ "additionalProperties": false
362
+ },
363
+ "rotation": {
364
+ "type": "object",
365
+ "properties": {
366
+ "pitch": {
367
+ "type": "number"
368
+ },
369
+ "roll": {
370
+ "type": "number"
371
+ },
372
+ "yaw": {
373
+ "type": "number"
374
+ }
375
+ },
376
+ "required": ["pitch", "roll", "yaw"],
377
+ "additionalProperties": false
378
+ },
379
+ "projection": {
380
+ "anyOf": [
381
+ {
382
+ "type": "object",
383
+ "properties": {
384
+ "kind": {
385
+ "type": "string",
386
+ "enum": ["perspective"]
387
+ },
388
+ "horizontalFieldOfView": {
389
+ "type": "number",
390
+ "allOf": [
391
+ {
392
+ "minimum": 5,
393
+ "maximum": 170
394
+ }
395
+ ]
396
+ }
397
+ },
398
+ "required": ["kind", "horizontalFieldOfView"],
399
+ "additionalProperties": false
400
+ },
401
+ {
402
+ "type": "object",
403
+ "properties": {
404
+ "kind": {
405
+ "type": "string",
406
+ "enum": ["orthographic"]
407
+ },
408
+ "width": {
409
+ "type": "number",
410
+ "allOf": [
411
+ {
412
+ "exclusiveMinimum": 0
413
+ },
414
+ {
415
+ "maximum": 1000000000
416
+ }
417
+ ]
418
+ }
419
+ },
420
+ "required": ["kind", "width"],
421
+ "additionalProperties": false
422
+ }
423
+ ]
424
+ }
425
+ },
426
+ "required": ["location", "rotation", "projection"],
427
+ "additionalProperties": false
428
+ },
429
+ "size": {
430
+ "type": "object",
431
+ "properties": {
432
+ "width": {
433
+ "type": "integer",
434
+ "allOf": [
435
+ {
436
+ "minimum": 16,
437
+ "maximum": 16384
438
+ }
439
+ ]
440
+ },
441
+ "height": {
442
+ "type": "integer",
443
+ "allOf": [
444
+ {
445
+ "minimum": 16,
446
+ "maximum": 16384
447
+ }
448
+ ]
449
+ }
450
+ },
451
+ "required": ["width", "height"],
452
+ "additionalProperties": false
453
+ },
454
+ "minimumFrames": {
455
+ "type": "integer",
456
+ "allOf": [
457
+ {
458
+ "minimum": 1,
459
+ "maximum": 4096
460
+ }
461
+ ]
462
+ }
463
+ },
464
+ "required": ["camera", "size", "minimumFrames"],
465
+ "additionalProperties": false
466
+ }
467
+ },
468
+ "required": ["minimumFrames", "timeoutMs"],
469
+ "additionalProperties": false
470
+ },
471
+ "time": {
472
+ "type": "string",
473
+ "enum": ["live_editor", "freeze_materials_and_ticks"]
474
+ },
475
+ "preparation": {
476
+ "type": "object",
477
+ "properties": {
478
+ "geometry": {
479
+ "anyOf": [
480
+ {
481
+ "type": "object",
482
+ "properties": {
483
+ "mode": {
484
+ "type": "string",
485
+ "enum": ["preserve_loading"]
486
+ }
487
+ },
488
+ "required": ["mode"],
489
+ "additionalProperties": false
490
+ },
491
+ {
492
+ "type": "object",
493
+ "properties": {
494
+ "mode": {
495
+ "type": "string",
496
+ "enum": ["camera_regions"]
497
+ },
498
+ "maximumRegions": {
499
+ "type": "integer",
500
+ "allOf": [
501
+ {
502
+ "minimum": 1,
503
+ "maximum": 64
504
+ }
505
+ ]
506
+ },
507
+ "extent": {
508
+ "type": "object",
509
+ "properties": {
510
+ "x": {
511
+ "type": "number",
512
+ "allOf": [
513
+ {
514
+ "minimum": 0,
515
+ "maximum": 10000000
516
+ }
517
+ ]
518
+ },
519
+ "y": {
520
+ "type": "number",
521
+ "allOf": [
522
+ {
523
+ "minimum": 0,
524
+ "maximum": 10000000
525
+ }
526
+ ]
527
+ },
528
+ "z": {
529
+ "type": "number",
530
+ "allOf": [
531
+ {
532
+ "minimum": 0,
533
+ "maximum": 10000000
534
+ }
535
+ ]
536
+ }
537
+ },
538
+ "required": ["x", "y", "z"],
539
+ "additionalProperties": false
540
+ }
541
+ },
542
+ "required": ["mode", "maximumRegions", "extent"],
543
+ "additionalProperties": false
544
+ }
545
+ ]
546
+ },
547
+ "dataLayers": {
548
+ "type": "array",
549
+ "items": {
550
+ "type": "object",
551
+ "properties": {
552
+ "assetPath": {
553
+ "type": "string",
554
+ "allOf": [
555
+ {
556
+ "pattern": "^\\/[A-Za-z0-9_./-]+$"
557
+ },
558
+ {
559
+ "maxLength": 1024
560
+ }
561
+ ]
562
+ },
563
+ "loaded": {
564
+ "type": "boolean"
565
+ },
566
+ "visible": {
567
+ "type": "boolean"
568
+ }
569
+ },
570
+ "required": ["assetPath", "loaded", "visible"],
571
+ "additionalProperties": false
572
+ },
573
+ "allOf": [
574
+ {
575
+ "maxItems": 64
576
+ }
577
+ ]
578
+ }
579
+ },
580
+ "required": ["geometry", "dataLayers"],
581
+ "additionalProperties": false
582
+ }
583
+ },
584
+ "required": ["renderer", "exposure", "settling", "time", "preparation"],
585
+ "additionalProperties": false
586
+ },
587
+ "leaseMs": {
588
+ "type": "integer",
589
+ "allOf": [
590
+ {
591
+ "minimum": 1000,
592
+ "maximum": 120000
593
+ }
594
+ ]
595
+ },
596
+ "maximumFrames": {
597
+ "type": "integer",
598
+ "allOf": [
599
+ {
600
+ "minimum": 1,
601
+ "maximum": 1000000
602
+ }
603
+ ]
604
+ }
605
+ },
606
+ "required": [
607
+ "contract",
608
+ "sessionId",
609
+ "expectedMapPath",
610
+ "expectedProjectName",
611
+ "policy",
612
+ "leaseMs",
613
+ "maximumFrames"
614
+ ],
615
+ "additionalProperties": false,
616
+ "$defs": {}
617
+ }
@@ -9,6 +9,13 @@ Portable Review Set / Capture Run documents and Workbench IPC remain TypeScript-
9
9
  in `@ue-shed/cameras`. They are deliberately outside this JSON authority while Map Review authoring
10
10
  recovery, live preview, and World Scout streaming plans remain active.
11
11
 
12
+ Minor version 6 requires an explicit shared `renderPolicy` and records `renderEvidence`. Fixed
13
+ world-space cameras can return `unresolved_actor` provenance without a projection when their subject
14
+ is unavailable. Actor-relative requests still require realization. The first-party adapter uses
15
+ the separate realization/render/inspection contracts under `cameras/render/v1`; the legacy native
16
+ CaptureReviewView method also delegates rendering to that lifecycle. Older wire minors retain their
17
+ subject/projection requirements. No renderer fallback is implied by a minor-version upgrade.
18
+
12
19
  Minor versions 0–1 accept the original actor plus approved-world-pose request. Minor version 2 adds
13
20
  actor or oriented-bounds subjects, world-fixed or actor-relative viewpoints, and a requested
14
21
  visibility-assessment method. Minor version 3 keeps those inputs but makes the editor response a raw