@ue-shed/protocol 0.1.0-rc.4 → 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.
Files changed (83) hide show
  1. package/README.md +1 -1
  2. package/contracts/cameras/provisioning/v1/README.md +12 -0
  3. package/contracts/cameras/provisioning/v1/fixtures/provision-request-valid.json +14 -0
  4. package/contracts/cameras/provisioning/v1/provision-request.schema.json +90 -0
  5. package/contracts/cameras/review/v1/README.md +39 -10
  6. package/contracts/cameras/review/v1/assessment-capabilities.schema.json +86 -0
  7. package/contracts/cameras/review/v1/capture-request.schema.json +173 -19
  8. package/contracts/cameras/review/v1/capture-response.schema.json +576 -1
  9. package/contracts/cameras/review/v1/fixtures/assessment-capabilities.json +36 -0
  10. package/contracts/cameras/review/v1/fixtures/capture-area.json +42 -0
  11. package/contracts/cameras/review/v1/fixtures/capture-assessed-v2.json +56 -0
  12. package/contracts/cameras/review/v1/fixtures/capture-assessed.json +55 -0
  13. package/contracts/cameras/review/v1/fixtures/capture-clear-failed.json +62 -0
  14. package/contracts/cameras/review/v1/fixtures/capture-clear.json +72 -0
  15. package/contracts/cameras/review/v1/fixtures/capture-request-area-valid.json +29 -0
  16. package/contracts/cameras/review/v1/fixtures/capture-request-clear-valid.json +30 -0
  17. package/contracts/cameras/review/v1/fixtures/capture-request-relative-valid.json +29 -0
  18. package/contracts/cameras/review/v1/fixtures/invalid-assessment-capabilities-supported-without-effective-method.json +14 -0
  19. package/contracts/scenarios/live/v1/README.md +9 -0
  20. package/contracts/scenarios/live/v1/fixtures/cancel-accepted.json +8 -0
  21. package/contracts/scenarios/live/v1/fixtures/execution-request.json +44 -0
  22. package/contracts/scenarios/live/v1/fixtures/prepare-prepared.json +9 -0
  23. package/contracts/scenarios/live/v1/fixtures/start-accepted.json +10 -0
  24. package/contracts/scenarios/live/v1/fixtures/status-active.json +11 -0
  25. package/contracts/scenarios/live/v1/fixtures/status-rejected-stale.json +10 -0
  26. package/contracts/scenarios/live/v1/fixtures/status-terminal-cancelled.json +33 -0
  27. package/contracts/scenarios/live/v1/fixtures/status-terminal-missing-divergence.json +54 -0
  28. package/contracts/uasset-io/v1/README.md +34 -0
  29. package/contracts/uasset-io/v1/event.schema.json +6779 -0
  30. package/contracts/uasset-io/v1/fixtures/invalid/event-result-unknown-kind.json +7 -0
  31. package/contracts/uasset-io/v1/fixtures/invalid/event-unknown-kind.json +6 -0
  32. package/contracts/uasset-io/v1/fixtures/invalid/project-index-page-unbounded.json +7196 -0
  33. package/contracts/uasset-io/v1/fixtures/invalid/project-index-query-oversize-limit.json +15 -0
  34. package/contracts/uasset-io/v1/fixtures/invalid/request-wrong-major.json +6 -0
  35. package/contracts/uasset-io/v1/fixtures/valid/accepted-event.json +7 -0
  36. package/contracts/uasset-io/v1/fixtures/valid/authoring-result-event.json +26 -0
  37. package/contracts/uasset-io/v1/fixtures/valid/extract-text-occurrence-result-event.json +26 -0
  38. package/contracts/uasset-io/v1/fixtures/valid/extract-text-result-event.json +23 -0
  39. package/contracts/uasset-io/v1/fixtures/valid/extract-text-summary-result-event.json +23 -0
  40. package/contracts/uasset-io/v1/fixtures/valid/extract-texture-record-result-event.json +29 -0
  41. package/contracts/uasset-io/v1/fixtures/valid/inspect-result-event.json +29 -0
  42. package/contracts/uasset-io/v1/fixtures/valid/partial-completed-event.json +7 -0
  43. package/contracts/uasset-io/v1/fixtures/valid/project-index-accepted-event.json +7 -0
  44. package/contracts/uasset-io/v1/fixtures/valid/project-index-page-result-event.json +28 -0
  45. package/contracts/uasset-io/v1/fixtures/valid/project-index-progress-event.json +9 -0
  46. package/contracts/uasset-io/v1/fixtures/valid/project-index-query-request.json +19 -0
  47. package/contracts/uasset-io/v1/fixtures/valid/project-index-rebuild-request.json +13 -0
  48. package/contracts/uasset-io/v1/fixtures/valid/project-index-refresh-request.json +13 -0
  49. package/contracts/uasset-io/v1/fixtures/valid/project-index-stale-generation-failed-event.json +11 -0
  50. package/contracts/uasset-io/v1/fixtures/valid/project-index-status-request.json +13 -0
  51. package/contracts/uasset-io/v1/fixtures/valid/project-index-status-result-event.json +22 -0
  52. package/contracts/uasset-io/v1/fixtures/valid/project-index-summary-result-event.json +25 -0
  53. package/contracts/uasset-io/v1/fixtures/valid/saved-world-result-event.json +27 -0
  54. package/contracts/uasset-io/v1/fixtures/valid/scan-asset-result-event.json +47 -0
  55. package/contracts/uasset-io/v1/fixtures/valid/scan-inventory-result-event.json +15 -0
  56. package/contracts/uasset-io/v1/fixtures/valid/scan-request.json +17 -0
  57. package/contracts/uasset-io/v1/fixtures/valid/scan-summary-result-event.json +24 -0
  58. package/contracts/uasset-io/v1/request.schema.json +512 -0
  59. package/dist/companion.d.ts +16 -0
  60. package/dist/companion.d.ts.map +1 -1
  61. package/dist/companion.js +8 -0
  62. package/dist/companion.js.map +1 -1
  63. package/dist/editor-asset-navigation.d.ts +63 -0
  64. package/dist/editor-asset-navigation.d.ts.map +1 -0
  65. package/dist/editor-asset-navigation.js +32 -0
  66. package/dist/editor-asset-navigation.js.map +1 -0
  67. package/dist/index.d.ts +4 -0
  68. package/dist/index.d.ts.map +1 -1
  69. package/dist/index.js +4 -0
  70. package/dist/index.js.map +1 -1
  71. package/dist/saved-world.d.ts +223 -0
  72. package/dist/saved-world.d.ts.map +1 -0
  73. package/dist/saved-world.js +82 -0
  74. package/dist/saved-world.js.map +1 -0
  75. package/dist/uasset-inspection.d.ts +1037 -0
  76. package/dist/uasset-inspection.d.ts.map +1 -0
  77. package/dist/uasset-inspection.js +446 -0
  78. package/dist/uasset-inspection.js.map +1 -0
  79. package/dist/uasset-io.d.ts +2602 -0
  80. package/dist/uasset-io.d.ts.map +1 -0
  81. package/dist/uasset-io.js +306 -0
  82. package/dist/uasset-io.js.map +1 -0
  83. package/package.json +3 -2
@@ -3,6 +3,127 @@
3
3
  "$id": "https://ue-shed.dev/contracts/cameras/review/v1/capture-response.schema.json",
4
4
  "title": "UE Shed Map Review capture response v1",
5
5
  "oneOf": [
6
+ {
7
+ "type": "object",
8
+ "additionalProperties": false,
9
+ "required": [
10
+ "contract",
11
+ "status",
12
+ "operationId",
13
+ "viewId",
14
+ "resolvedSubject",
15
+ "effectiveWorldPose",
16
+ "mapPath",
17
+ "stagedArtifacts",
18
+ "clearCompanion",
19
+ "width",
20
+ "height",
21
+ "captureDurationMs",
22
+ "mapPackageDirtyBefore",
23
+ "mapPackageDirtyAfter",
24
+ "subjectProjection",
25
+ "visibility"
26
+ ],
27
+ "properties": {
28
+ "contract": { "$ref": "#/$defs/currentContract" },
29
+ "status": { "const": "captured" },
30
+ "operationId": { "type": "string", "minLength": 1 },
31
+ "viewId": { "$ref": "#/$defs/safeId" },
32
+ "resolvedSubject": { "$ref": "#/$defs/resolvedSubject" },
33
+ "effectiveWorldPose": { "$ref": "#/$defs/pose" },
34
+ "mapPath": { "type": "string", "minLength": 1 },
35
+ "stagedArtifacts": {
36
+ "type": "array",
37
+ "minItems": 1,
38
+ "maxItems": 2,
39
+ "items": { "$ref": "#/$defs/stagedArtifact" }
40
+ },
41
+ "clearCompanion": { "$ref": "#/$defs/clearCompanion" },
42
+ "width": { "type": "integer", "minimum": 1 },
43
+ "height": { "type": "integer", "minimum": 1 },
44
+ "captureDurationMs": { "type": "number", "minimum": 0 },
45
+ "mapPackageDirtyBefore": { "type": "boolean" },
46
+ "mapPackageDirtyAfter": { "type": "boolean" },
47
+ "subjectProjection": { "$ref": "#/$defs/subjectProjection" },
48
+ "visibility": { "$ref": "#/$defs/visibilityMeasurement" }
49
+ }
50
+ },
51
+ {
52
+ "type": "object",
53
+ "additionalProperties": false,
54
+ "required": [
55
+ "contract",
56
+ "status",
57
+ "operationId",
58
+ "viewId",
59
+ "resolvedSubject",
60
+ "effectiveWorldPose",
61
+ "mapPath",
62
+ "stagingPath",
63
+ "width",
64
+ "height",
65
+ "captureDurationMs",
66
+ "mapPackageDirtyBefore",
67
+ "mapPackageDirtyAfter",
68
+ "subjectProjection",
69
+ "visibility"
70
+ ],
71
+ "properties": {
72
+ "contract": { "$ref": "#/$defs/previousCurrentContract" },
73
+ "status": { "const": "captured" },
74
+ "operationId": { "type": "string", "minLength": 1 },
75
+ "viewId": { "$ref": "#/$defs/safeId" },
76
+ "resolvedSubject": { "$ref": "#/$defs/resolvedSubject" },
77
+ "effectiveWorldPose": { "$ref": "#/$defs/pose" },
78
+ "mapPath": { "type": "string", "minLength": 1 },
79
+ "stagingPath": { "type": "string", "minLength": 1 },
80
+ "width": { "type": "integer", "minimum": 1 },
81
+ "height": { "type": "integer", "minimum": 1 },
82
+ "captureDurationMs": { "type": "number", "minimum": 0 },
83
+ "mapPackageDirtyBefore": { "type": "boolean" },
84
+ "mapPackageDirtyAfter": { "type": "boolean" },
85
+ "subjectProjection": { "$ref": "#/$defs/subjectProjection" },
86
+ "visibility": { "$ref": "#/$defs/visibilityMeasurement" }
87
+ }
88
+ },
89
+ {
90
+ "type": "object",
91
+ "additionalProperties": false,
92
+ "required": [
93
+ "contract",
94
+ "status",
95
+ "operationId",
96
+ "viewId",
97
+ "resolvedSubject",
98
+ "effectiveWorldPose",
99
+ "mapPath",
100
+ "stagingPath",
101
+ "width",
102
+ "height",
103
+ "captureDurationMs",
104
+ "mapPackageDirtyBefore",
105
+ "mapPackageDirtyAfter",
106
+ "subjectProjection",
107
+ "visibility"
108
+ ],
109
+ "properties": {
110
+ "contract": { "$ref": "#/$defs/previousContract" },
111
+ "status": { "const": "captured" },
112
+ "operationId": { "type": "string", "minLength": 1 },
113
+ "viewId": { "$ref": "#/$defs/safeId" },
114
+ "resolvedSubject": { "$ref": "#/$defs/resolvedSubject" },
115
+ "effectiveWorldPose": { "$ref": "#/$defs/pose" },
116
+ "mapPath": { "type": "string", "minLength": 1 },
117
+ "stagingPath": { "type": "string", "minLength": 1 },
118
+ "width": { "type": "integer", "minimum": 1 },
119
+ "height": { "type": "integer", "minimum": 1 },
120
+ "captureDurationMs": { "type": "number", "minimum": 0 },
121
+ "mapPackageDirtyBefore": { "type": "boolean" },
122
+ "mapPackageDirtyAfter": { "type": "boolean" },
123
+ "subjectProjection": { "$ref": "#/$defs/subjectProjection" },
124
+ "visibility": { "$ref": "#/$defs/visibilityV2" }
125
+ }
126
+ },
6
127
  {
7
128
  "type": "object",
8
129
  "required": [
@@ -83,6 +204,57 @@
83
204
  }
84
205
  ],
85
206
  "$defs": {
207
+ "currentContract": {
208
+ "type": "object",
209
+ "additionalProperties": false,
210
+ "required": ["name", "version"],
211
+ "properties": {
212
+ "name": { "const": "ue-shed-review-capture" },
213
+ "version": {
214
+ "type": "object",
215
+ "additionalProperties": false,
216
+ "required": ["major", "minor"],
217
+ "properties": {
218
+ "major": { "const": 1 },
219
+ "minor": { "const": 4 }
220
+ }
221
+ }
222
+ }
223
+ },
224
+ "previousCurrentContract": {
225
+ "type": "object",
226
+ "additionalProperties": false,
227
+ "required": ["name", "version"],
228
+ "properties": {
229
+ "name": { "const": "ue-shed-review-capture" },
230
+ "version": {
231
+ "type": "object",
232
+ "additionalProperties": false,
233
+ "required": ["major", "minor"],
234
+ "properties": {
235
+ "major": { "const": 1 },
236
+ "minor": { "const": 3 }
237
+ }
238
+ }
239
+ }
240
+ },
241
+ "previousContract": {
242
+ "type": "object",
243
+ "additionalProperties": false,
244
+ "required": ["name", "version"],
245
+ "properties": {
246
+ "name": { "const": "ue-shed-review-capture" },
247
+ "version": {
248
+ "type": "object",
249
+ "additionalProperties": false,
250
+ "required": ["major", "minor"],
251
+ "properties": {
252
+ "major": { "const": 1 },
253
+ "minor": { "const": 2 }
254
+ }
255
+ }
256
+ }
257
+ },
86
258
  "contract": {
87
259
  "type": "object",
88
260
  "additionalProperties": false,
@@ -95,12 +267,415 @@
95
267
  "required": ["major", "minor"],
96
268
  "properties": {
97
269
  "major": { "const": 1 },
98
- "minor": { "type": "integer", "minimum": 0 }
270
+ "minor": { "type": "integer", "minimum": 0, "maximum": 4 }
99
271
  }
100
272
  }
101
273
  }
102
274
  },
103
275
  "safeId": { "type": "string", "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$" },
276
+ "vector": {
277
+ "type": "object",
278
+ "additionalProperties": false,
279
+ "required": ["x", "y", "z"],
280
+ "properties": {
281
+ "x": { "type": "number" },
282
+ "y": { "type": "number" },
283
+ "z": { "type": "number" }
284
+ }
285
+ },
286
+ "rotation": {
287
+ "type": "object",
288
+ "additionalProperties": false,
289
+ "required": ["pitch", "yaw", "roll"],
290
+ "properties": {
291
+ "pitch": { "type": "number" },
292
+ "yaw": { "type": "number" },
293
+ "roll": { "type": "number" }
294
+ }
295
+ },
296
+ "bounds": {
297
+ "type": "object",
298
+ "additionalProperties": false,
299
+ "required": ["center", "extent", "rotation"],
300
+ "properties": {
301
+ "center": { "$ref": "#/$defs/vector" },
302
+ "extent": { "$ref": "#/$defs/vector" },
303
+ "rotation": { "$ref": "#/$defs/rotation" }
304
+ }
305
+ },
306
+ "pose": {
307
+ "type": "object",
308
+ "additionalProperties": false,
309
+ "required": ["aspectRatio", "fieldOfViewDegrees", "location", "projection", "rotation"],
310
+ "properties": {
311
+ "aspectRatio": { "const": "16:9" },
312
+ "fieldOfViewDegrees": { "type": "number", "minimum": 5, "maximum": 170 },
313
+ "projection": { "const": "perspective" },
314
+ "location": { "$ref": "#/$defs/vector" },
315
+ "rotation": { "$ref": "#/$defs/rotation" }
316
+ }
317
+ },
318
+ "resolvedSubject": {
319
+ "oneOf": [
320
+ {
321
+ "type": "object",
322
+ "additionalProperties": false,
323
+ "required": ["kind", "actorPath", "transform"],
324
+ "properties": {
325
+ "kind": { "const": "actor_path" },
326
+ "actorPath": { "type": "string", "minLength": 1 },
327
+ "transform": {
328
+ "type": "object",
329
+ "additionalProperties": false,
330
+ "required": ["location", "rotation"],
331
+ "properties": {
332
+ "location": { "$ref": "#/$defs/vector" },
333
+ "rotation": { "$ref": "#/$defs/rotation" }
334
+ }
335
+ }
336
+ }
337
+ },
338
+ {
339
+ "type": "object",
340
+ "additionalProperties": false,
341
+ "required": ["kind", "bounds"],
342
+ "properties": {
343
+ "kind": { "const": "oriented_bounds" },
344
+ "bounds": { "$ref": "#/$defs/bounds" }
345
+ }
346
+ }
347
+ ]
348
+ },
349
+ "stagedArtifact": {
350
+ "type": "object",
351
+ "additionalProperties": false,
352
+ "required": ["stagingPath", "variant"],
353
+ "properties": {
354
+ "stagingPath": { "type": "string", "minLength": 1 },
355
+ "variant": { "enum": ["pure", "clear"] }
356
+ }
357
+ },
358
+ "objectLocator": {
359
+ "type": "object",
360
+ "additionalProperties": false,
361
+ "required": ["kind", "actorPath"],
362
+ "properties": {
363
+ "kind": { "const": "actor_path" },
364
+ "actorPath": {
365
+ "type": "string",
366
+ "minLength": 7,
367
+ "maxLength": 4096,
368
+ "pattern": "^/Game/"
369
+ },
370
+ "diagnosticLabel": { "type": "string", "minLength": 1 }
371
+ }
372
+ },
373
+ "clearIntervention": {
374
+ "oneOf": [
375
+ {
376
+ "type": "object",
377
+ "additionalProperties": false,
378
+ "required": ["subject", "type"],
379
+ "properties": {
380
+ "subject": { "$ref": "#/$defs/objectLocator" },
381
+ "type": { "const": "show_only_subject_components" }
382
+ }
383
+ },
384
+ {
385
+ "type": "object",
386
+ "additionalProperties": false,
387
+ "required": ["target", "type"],
388
+ "properties": {
389
+ "target": { "$ref": "#/$defs/objectLocator" },
390
+ "type": { "const": "hide_actor_components" }
391
+ }
392
+ }
393
+ ]
394
+ },
395
+ "clearRestoration": {
396
+ "oneOf": [
397
+ {
398
+ "type": "object",
399
+ "additionalProperties": false,
400
+ "required": ["method", "status"],
401
+ "properties": {
402
+ "method": { "const": "transient_capture_component_lists" },
403
+ "status": { "const": "restored" }
404
+ }
405
+ },
406
+ {
407
+ "type": "object",
408
+ "additionalProperties": false,
409
+ "required": ["code", "message", "recovery", "status"],
410
+ "properties": {
411
+ "code": { "type": "string", "minLength": 1 },
412
+ "message": { "type": "string", "minLength": 1 },
413
+ "recovery": { "type": "string", "minLength": 1 },
414
+ "status": { "const": "failed" }
415
+ }
416
+ }
417
+ ]
418
+ },
419
+ "clearCompanion": {
420
+ "oneOf": [
421
+ {
422
+ "type": "object",
423
+ "additionalProperties": false,
424
+ "required": ["status"],
425
+ "properties": { "status": { "const": "not_requested" } }
426
+ },
427
+ {
428
+ "type": "object",
429
+ "additionalProperties": false,
430
+ "required": ["interventions", "restoration", "status", "strategy"],
431
+ "properties": {
432
+ "interventions": {
433
+ "type": "array",
434
+ "minItems": 1,
435
+ "maxItems": 32,
436
+ "items": { "$ref": "#/$defs/clearIntervention" }
437
+ },
438
+ "restoration": {
439
+ "type": "object",
440
+ "additionalProperties": false,
441
+ "required": ["method", "status"],
442
+ "properties": {
443
+ "method": { "const": "transient_capture_component_lists" },
444
+ "status": { "const": "restored" }
445
+ }
446
+ },
447
+ "status": { "const": "captured" },
448
+ "strategy": { "enum": ["isolate_target", "hide_explicit"] }
449
+ }
450
+ },
451
+ {
452
+ "type": "object",
453
+ "additionalProperties": false,
454
+ "required": ["failure", "interventions", "restoration", "status", "strategy"],
455
+ "properties": {
456
+ "failure": {
457
+ "type": "object",
458
+ "additionalProperties": false,
459
+ "required": ["code", "message", "recovery", "retrySafe"],
460
+ "properties": {
461
+ "code": { "type": "string", "minLength": 1 },
462
+ "message": { "type": "string", "minLength": 1 },
463
+ "recovery": { "type": "string", "minLength": 1 },
464
+ "retrySafe": { "type": "boolean" }
465
+ }
466
+ },
467
+ "interventions": {
468
+ "type": "array",
469
+ "maxItems": 32,
470
+ "items": { "$ref": "#/$defs/clearIntervention" }
471
+ },
472
+ "restoration": { "$ref": "#/$defs/clearRestoration" },
473
+ "status": { "const": "failed" },
474
+ "strategy": { "enum": ["isolate_target", "hide_explicit"] }
475
+ }
476
+ }
477
+ ]
478
+ },
479
+ "visibilityMeasurement": {
480
+ "oneOf": [
481
+ {
482
+ "type": "object",
483
+ "additionalProperties": false,
484
+ "required": ["status", "reason"],
485
+ "properties": {
486
+ "status": { "const": "not_assessed" },
487
+ "reason": { "type": "string", "minLength": 1 },
488
+ "limitations": {
489
+ "type": "array",
490
+ "maxItems": 8,
491
+ "items": { "type": "string" }
492
+ }
493
+ }
494
+ },
495
+ {
496
+ "type": "object",
497
+ "additionalProperties": false,
498
+ "required": [
499
+ "status",
500
+ "method",
501
+ "visibleFraction",
502
+ "sampleCount",
503
+ "assessmentDurationMs",
504
+ "limitations",
505
+ "occluders"
506
+ ],
507
+ "properties": {
508
+ "status": { "const": "assessed" },
509
+ "method": {
510
+ "type": "object",
511
+ "additionalProperties": false,
512
+ "required": ["method", "version"],
513
+ "properties": {
514
+ "method": {
515
+ "enum": ["ray_samples", "subject_mask", "depth_compare"]
516
+ },
517
+ "version": { "type": "integer", "minimum": 1 }
518
+ }
519
+ },
520
+ "visibleFraction": { "type": "number", "minimum": 0, "maximum": 1 },
521
+ "sampleCount": { "type": "integer", "minimum": 0 },
522
+ "assessmentDurationMs": { "type": "number", "minimum": 0 },
523
+ "limitations": {
524
+ "type": "array",
525
+ "maxItems": 8,
526
+ "items": { "type": "string" }
527
+ },
528
+ "occluders": {
529
+ "type": "array",
530
+ "maxItems": 32,
531
+ "items": {
532
+ "type": "object",
533
+ "additionalProperties": false,
534
+ "required": ["confidence", "locator", "reason"],
535
+ "properties": {
536
+ "confidence": {
537
+ "type": "number",
538
+ "minimum": 0,
539
+ "maximum": 1
540
+ },
541
+ "locator": {
542
+ "type": "object",
543
+ "additionalProperties": false,
544
+ "required": ["kind", "actorPath"],
545
+ "properties": {
546
+ "kind": { "const": "actor_path" },
547
+ "actorPath": { "type": "string", "minLength": 1 }
548
+ }
549
+ },
550
+ "reason": { "type": "string" }
551
+ }
552
+ }
553
+ }
554
+ }
555
+ },
556
+ {
557
+ "type": "object",
558
+ "additionalProperties": false,
559
+ "required": ["status", "failure"],
560
+ "properties": {
561
+ "status": { "const": "assessment_failed" },
562
+ "failure": {
563
+ "type": "object",
564
+ "additionalProperties": false,
565
+ "required": ["code", "message", "recovery", "retrySafe"],
566
+ "properties": {
567
+ "code": { "type": "string", "minLength": 1 },
568
+ "message": { "type": "string", "minLength": 1 },
569
+ "recovery": { "type": "string", "minLength": 1 },
570
+ "retrySafe": { "type": "boolean" }
571
+ }
572
+ }
573
+ }
574
+ }
575
+ ]
576
+ },
577
+ "visibilityV2": {
578
+ "oneOf": [
579
+ {
580
+ "type": "object",
581
+ "additionalProperties": false,
582
+ "required": ["status", "reason"],
583
+ "properties": {
584
+ "status": { "const": "not_assessed" },
585
+ "reason": { "type": "string", "minLength": 1 },
586
+ "limitations": {
587
+ "type": "array",
588
+ "maxItems": 8,
589
+ "items": { "type": "string" }
590
+ }
591
+ }
592
+ },
593
+ {
594
+ "type": "object",
595
+ "additionalProperties": false,
596
+ "required": [
597
+ "status",
598
+ "classification",
599
+ "method",
600
+ "visibleFraction",
601
+ "sampleCount",
602
+ "assessmentDurationMs",
603
+ "limitations",
604
+ "occluders"
605
+ ],
606
+ "properties": {
607
+ "status": { "const": "assessed" },
608
+ "classification": {
609
+ "enum": ["clear", "partial", "blocked", "not_visible"]
610
+ },
611
+ "method": {
612
+ "type": "object",
613
+ "additionalProperties": false,
614
+ "required": ["method", "version"],
615
+ "properties": {
616
+ "method": {
617
+ "enum": ["ray_samples", "subject_mask", "depth_compare"]
618
+ },
619
+ "version": { "type": "integer", "minimum": 1 }
620
+ }
621
+ },
622
+ "visibleFraction": { "type": "number", "minimum": 0, "maximum": 1 },
623
+ "sampleCount": { "type": "integer", "minimum": 0 },
624
+ "assessmentDurationMs": { "type": "number", "minimum": 0 },
625
+ "limitations": {
626
+ "type": "array",
627
+ "maxItems": 8,
628
+ "items": { "type": "string" }
629
+ },
630
+ "occluders": {
631
+ "type": "array",
632
+ "maxItems": 32,
633
+ "items": {
634
+ "type": "object",
635
+ "additionalProperties": false,
636
+ "required": ["confidence", "locator", "reason"],
637
+ "properties": {
638
+ "confidence": {
639
+ "type": "number",
640
+ "minimum": 0,
641
+ "maximum": 1
642
+ },
643
+ "locator": {
644
+ "type": "object",
645
+ "additionalProperties": false,
646
+ "required": ["kind", "actorPath"],
647
+ "properties": {
648
+ "kind": { "const": "actor_path" },
649
+ "actorPath": { "type": "string", "minLength": 1 }
650
+ }
651
+ },
652
+ "reason": { "type": "string" }
653
+ }
654
+ }
655
+ }
656
+ }
657
+ },
658
+ {
659
+ "type": "object",
660
+ "additionalProperties": false,
661
+ "required": ["status", "failure"],
662
+ "properties": {
663
+ "status": { "const": "assessment_failed" },
664
+ "failure": {
665
+ "type": "object",
666
+ "additionalProperties": false,
667
+ "required": ["code", "message", "recovery", "retrySafe"],
668
+ "properties": {
669
+ "code": { "type": "string", "minLength": 1 },
670
+ "message": { "type": "string", "minLength": 1 },
671
+ "recovery": { "type": "string", "minLength": 1 },
672
+ "retrySafe": { "type": "boolean" }
673
+ }
674
+ }
675
+ }
676
+ }
677
+ ]
678
+ },
104
679
  "projectedBounds": {
105
680
  "type": "object",
106
681
  "additionalProperties": false,
@@ -0,0 +1,36 @@
1
+ {
2
+ "contract": {
3
+ "name": "ue-shed-review-assessment-capabilities",
4
+ "version": { "major": 1, "minor": 0 }
5
+ },
6
+ "depthCompareMaximumResolution": { "width": 320, "height": 180 },
7
+ "methods": [
8
+ {
9
+ "requestedMethod": "automatic",
10
+ "status": "supported",
11
+ "effectiveMethod": { "method": "depth_compare", "version": 1 },
12
+ "limitations": [
13
+ "Automatic uses bounded depth comparison for depth-writing actor subjects."
14
+ ]
15
+ },
16
+ {
17
+ "requestedMethod": "depth_compare",
18
+ "status": "supported",
19
+ "effectiveMethod": { "method": "depth_compare", "version": 1 },
20
+ "limitations": ["Depth comparison requires depth-writing actor subject pixels."]
21
+ },
22
+ {
23
+ "requestedMethod": "ray_samples",
24
+ "status": "supported",
25
+ "effectiveMethod": { "method": "ray_samples", "version": 1 },
26
+ "limitations": [
27
+ "Collision-ray samples are diagnostic and can disagree with rendered visibility."
28
+ ]
29
+ },
30
+ {
31
+ "requestedMethod": "subject_mask",
32
+ "status": "unsupported",
33
+ "reason": "A render-truthful subject-mask method is not available from this producer."
34
+ }
35
+ ]
36
+ }
@@ -0,0 +1,42 @@
1
+ {
2
+ "contract": {
3
+ "name": "ue-shed-review-capture",
4
+ "version": { "major": 1, "minor": 3 }
5
+ },
6
+ "status": "captured",
7
+ "operationId": "capture-area",
8
+ "viewId": "loading-area",
9
+ "resolvedSubject": {
10
+ "kind": "oriented_bounds",
11
+ "bounds": {
12
+ "center": { "x": 0, "y": 0, "z": 200 },
13
+ "extent": { "x": 600, "y": 400, "z": 200 },
14
+ "rotation": { "pitch": 0, "yaw": 30, "roll": 0 }
15
+ }
16
+ },
17
+ "effectiveWorldPose": {
18
+ "aspectRatio": "16:9",
19
+ "fieldOfViewDegrees": 70,
20
+ "projection": "perspective",
21
+ "location": { "x": 1200, "y": -900, "z": 700 },
22
+ "rotation": { "pitch": -20, "yaw": 145, "roll": 0 }
23
+ },
24
+ "mapPath": "/Game/Fixture/Cameras/L_CameraLoad",
25
+ "stagingPath": "C:/fixture/Saved/UEShed/ReviewStaging/capture-area/pure.png",
26
+ "width": 1280,
27
+ "height": 720,
28
+ "captureDurationMs": 12.5,
29
+ "mapPackageDirtyBefore": false,
30
+ "mapPackageDirtyAfter": false,
31
+ "subjectProjection": {
32
+ "status": "projected",
33
+ "viewportStatus": "fully_within_viewport",
34
+ "normalizedBounds": { "minX": 0.15, "minY": 0.2, "maxX": 0.85, "maxY": 0.8 },
35
+ "margins": { "left": 0.15, "right": 0.15, "top": 0.2, "bottom": 0.2 }
36
+ },
37
+ "visibility": {
38
+ "status": "not_assessed",
39
+ "reason": "Oriented-area visibility needs a render-truthful region method.",
40
+ "limitations": ["Area contents are review subject matter and are not treated as blockers."]
41
+ }
42
+ }