@ue-shed/protocol 0.5.1 → 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 (102) hide show
  1. package/contracts/cameras/map-tile/v1/README.md +27 -6
  2. package/contracts/cameras/map-tile/v1/capture-operation.schema.json +69 -0
  3. package/contracts/cameras/map-tile/v1/capture-request.schema.json +2 -1
  4. package/contracts/cameras/map-tile/v1/capture-response.schema.json +97 -25
  5. package/contracts/cameras/map-tile/v1/fixtures/capture-operation-finished-valid.json +41 -0
  6. package/contracts/cameras/map-tile/v1/fixtures/capture-operation-progress-valid.json +13 -0
  7. package/contracts/cameras/map-tile/v1/fixtures/capture-operation-running-valid.json +5 -0
  8. package/contracts/cameras/map-tile/v1/fixtures/capture-request-lit-valid.json +59 -0
  9. package/contracts/cameras/map-tile/v1/fixtures/readiness-blocked.json +11 -0
  10. package/contracts/cameras/map-tile/v1/fixtures/readiness-ready.json +7 -0
  11. package/contracts/cameras/map-tile/v1/fixtures/selection-ready.json +21 -0
  12. package/contracts/cameras/map-tile/v1/fixtures/selection-unavailable.json +6 -0
  13. package/contracts/cameras/map-tile/v1/inspection.md +16 -0
  14. package/contracts/cameras/map-tile/v1/manifest.schema.json +136 -37
  15. package/contracts/cameras/map-tile/v1/plan.schema.json +132 -35
  16. package/contracts/cameras/map-tile/v1/readiness.schema.json +39 -0
  17. package/contracts/cameras/map-tile/v1/release-result.schema.json +12 -0
  18. package/contracts/cameras/map-tile/v1/selection.schema.json +105 -0
  19. package/contracts/cameras/render/v1/README.md +33 -0
  20. package/contracts/cameras/render/v1/begin-result.schema.json +712 -0
  21. package/contracts/cameras/render/v1/capabilities.schema.json +201 -0
  22. package/contracts/cameras/render/v1/end-result.schema.json +185 -0
  23. package/contracts/cameras/render/v1/fixtures/frame-orthographic.json +31 -0
  24. package/contracts/cameras/render/v1/fixtures/frame-perspective.json +31 -0
  25. package/contracts/cameras/render/v1/fixtures/invalid-frame-mixed-projection.json +32 -0
  26. package/contracts/cameras/render/v1/fixtures/invalid-frame-size.json +31 -0
  27. package/contracts/cameras/render/v1/fixtures/invalid-session-backend-fields.json +40 -0
  28. package/contracts/cameras/render/v1/fixtures/invalid-session-budget.json +39 -0
  29. package/contracts/cameras/render/v1/fixtures/invalid-session-future.json +39 -0
  30. package/contracts/cameras/render/v1/fixtures/session-camera-regions.json +51 -0
  31. package/contracts/cameras/render/v1/fixtures/session-editor-viewport.json +40 -0
  32. package/contracts/cameras/render/v1/fixtures/session-scene-capture.json +39 -0
  33. package/contracts/cameras/render/v1/frame-evidence.schema.json +771 -0
  34. package/contracts/cameras/render/v1/frame-request.schema.json +219 -0
  35. package/contracts/cameras/render/v1/frame-status.schema.json +1076 -0
  36. package/contracts/cameras/render/v1/policy.schema.json +510 -0
  37. package/contracts/cameras/render/v1/preflight.schema.json +68 -0
  38. package/contracts/cameras/render/v1/review-inspection-request.schema.json +342 -0
  39. package/contracts/cameras/render/v1/review-inspection-result.schema.json +2030 -0
  40. package/contracts/cameras/render/v1/review-realization-request.schema.json +417 -0
  41. package/contracts/cameras/render/v1/review-realization-result.schema.json +454 -0
  42. package/contracts/cameras/render/v1/session-request.schema.json +617 -0
  43. package/contracts/cameras/review/v1/README.md +7 -0
  44. package/contracts/cameras/review/v1/capture-request.schema.json +247 -61
  45. package/contracts/cameras/review/v1/capture-response.schema.json +820 -192
  46. package/contracts/core/v1/producer-identity.schema.json +44 -0
  47. package/contracts/niagara/preview/v1/common.schema.json +224 -30
  48. package/contracts/niagara/preview/v1/fixtures/background-manifest.json +136 -0
  49. package/contracts/niagara/preview/v1/fixtures/background-receipt.json +112 -0
  50. package/contracts/niagara/preview/v1/fixtures/background-request.json +39 -0
  51. package/contracts/niagara/preview/v1/fixtures/progress.json +8 -0
  52. package/contracts/niagara/preview/v1/fixtures/scene-manifest.json +108 -0
  53. package/contracts/niagara/preview/v1/fixtures/scene-receipt.json +84 -0
  54. package/contracts/niagara/preview/v1/fixtures/scene-request.json +25 -0
  55. package/contracts/niagara/preview/v1/manifest.schema.json +110 -25
  56. package/contracts/niagara/preview/v1/progress.schema.json +37 -0
  57. package/contracts/niagara/preview/v1/receipt.schema.json +75 -16
  58. package/contracts/niagara/preview/v1/request.schema.json +20 -5
  59. package/contracts/niagara/preview/v1/session.md +25 -0
  60. package/contracts/observatory/v1/actor-metadata.schema.json +33 -0
  61. package/contracts/uasset-io/v1/README.md +26 -1
  62. package/contracts/uasset-io/v1/event.schema.json +511 -1
  63. package/contracts/uasset-io/v1/fixtures/invalid/project-index-count-empty-filters.json +23 -0
  64. package/contracts/uasset-io/v1/fixtures/invalid/project-index-dictionary-page-negative-index.json +35 -0
  65. package/contracts/uasset-io/v1/fixtures/valid/blueprint-request.json +6 -0
  66. package/contracts/uasset-io/v1/fixtures/valid/blueprint-result-event.json +58 -0
  67. package/contracts/uasset-io/v1/fixtures/valid/project-index-count-request.json +32 -0
  68. package/contracts/uasset-io/v1/fixtures/valid/project-index-count-result-event.json +20 -0
  69. package/contracts/uasset-io/v1/fixtures/valid/project-index-dictionary-page-result-event.json +35 -0
  70. package/contracts/uasset-io/v1/fixtures/valid/project-index-dictionary-query-request.json +26 -0
  71. package/contracts/uasset-io/v1/request.schema.json +174 -0
  72. package/dist/authoring-review.d.ts +36 -36
  73. package/dist/authoring.d.ts +45 -45
  74. package/dist/authoring.d.ts.map +1 -1
  75. package/dist/blueprint-graph.d.ts +628 -0
  76. package/dist/blueprint-graph.d.ts.map +1 -0
  77. package/dist/blueprint-graph.js +111 -0
  78. package/dist/blueprint-graph.js.map +1 -0
  79. package/dist/companion.d.ts +34 -3
  80. package/dist/companion.d.ts.map +1 -1
  81. package/dist/companion.js +11 -0
  82. package/dist/companion.js.map +1 -1
  83. package/dist/editor-asset-navigation.d.ts +12 -12
  84. package/dist/editor-play-session.d.ts +6 -6
  85. package/dist/editor-world-control.d.ts +8 -8
  86. package/dist/index.d.ts +1 -0
  87. package/dist/index.d.ts.map +1 -1
  88. package/dist/index.js +1 -0
  89. package/dist/index.js.map +1 -1
  90. package/dist/saved-world.d.ts +20 -14
  91. package/dist/saved-world.d.ts.map +1 -1
  92. package/dist/saved-world.js +1 -0
  93. package/dist/saved-world.js.map +1 -1
  94. package/dist/uasset-inspection.d.ts +6 -5
  95. package/dist/uasset-inspection.d.ts.map +1 -1
  96. package/dist/uasset-inspection.js +1 -1
  97. package/dist/uasset-inspection.js.map +1 -1
  98. package/dist/uasset-io.d.ts +648 -129
  99. package/dist/uasset-io.d.ts.map +1 -1
  100. package/dist/uasset-io.js +51 -1
  101. package/dist/uasset-io.js.map +1 -1
  102. package/package.json +1 -1
@@ -0,0 +1,108 @@
1
+ {
2
+ "alphaPolicy": "opaque_scene_v1",
3
+ "artifacts": [
4
+ {
5
+ "bytes": 128,
6
+ "height": 64,
7
+ "index": 0,
8
+ "maximumRgb": 1,
9
+ "mimeType": "image/png",
10
+ "nonTransparentPixelFraction": 1,
11
+ "relativePath": "frames/frame_0000.png",
12
+ "sha256": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
13
+ "timeSeconds": 0,
14
+ "width": 64,
15
+ "activityScore": 0.1,
16
+ "edgePixelFraction": 0
17
+ },
18
+ {
19
+ "bytes": 144,
20
+ "height": 64,
21
+ "index": 1,
22
+ "maximumRgb": 0.8,
23
+ "mimeType": "image/png",
24
+ "nonTransparentPixelFraction": 1,
25
+ "relativePath": "frames/frame_0001.png",
26
+ "sha256": "sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
27
+ "timeSeconds": 0.5,
28
+ "width": 64,
29
+ "activityScore": 0.1,
30
+ "edgePixelFraction": 0
31
+ }
32
+ ],
33
+ "camera": {
34
+ "aspectRatio": 1,
35
+ "fieldOfViewDegrees": 90,
36
+ "location": {
37
+ "x": 0,
38
+ "y": -200,
39
+ "z": 0
40
+ },
41
+ "orthoWidth": 512,
42
+ "projection": "perspective",
43
+ "rotation": {
44
+ "pitch": 0,
45
+ "roll": 0,
46
+ "yaw": 0
47
+ },
48
+ "usesCustomAspectRatio": false
49
+ },
50
+ "colorSpace": "srgb",
51
+ "contract": {
52
+ "name": "ue-shed-niagara-preview-run",
53
+ "version": {
54
+ "major": 1,
55
+ "minor": 1
56
+ }
57
+ },
58
+ "diagnostics": [
59
+ {
60
+ "code": "missing_material",
61
+ "message": "2 renderer material slots were unbound at initialization. Inspect renderer assignments and user parameters."
62
+ }
63
+ ],
64
+ "effectiveSettings": {
65
+ "captureMode": "full_scene",
66
+ "durationSeconds": 1,
67
+ "frameCount": 2,
68
+ "frameIntervalSeconds": 0.5,
69
+ "height": 64,
70
+ "playbackFramesPerSecond": 2,
71
+ "simulationFramesPerSecond": 60,
72
+ "startSeconds": 0,
73
+ "width": 64,
74
+ "renderMode": "scene",
75
+ "cameraMode": "auto_fit",
76
+ "sceneProfile": "ground_impact",
77
+ "exposureCompensation": 1,
78
+ "cameraPadding": 1.2
79
+ },
80
+ "generatedAtUtc": "2026-08-20T00:00:01.000Z",
81
+ "producer": {
82
+ "engineVersion": "5.7.2-0+++UE5+Release-5.7",
83
+ "receiptContract": {
84
+ "name": "ue-shed-niagara-preview-receipt",
85
+ "version": {
86
+ "major": 1,
87
+ "minor": 1
88
+ }
89
+ }
90
+ },
91
+ "requestedSettings": {
92
+ "captureMode": "full_scene",
93
+ "durationSeconds": 1,
94
+ "frameCount": 2,
95
+ "height": 64,
96
+ "simulationFramesPerSecond": 60,
97
+ "startSeconds": 0,
98
+ "width": 64,
99
+ "renderMode": "scene",
100
+ "cameraMode": "auto_fit",
101
+ "sceneProfile": "ground_impact",
102
+ "exposureCompensation": 1,
103
+ "cameraPadding": 1.2
104
+ },
105
+ "runId": "11111111-1111-4111-8111-111111111111",
106
+ "status": "complete",
107
+ "systemObjectPath": "/Game/Fixture/Niagara/NS_Preview.NS_Preview"
108
+ }
@@ -0,0 +1,84 @@
1
+ {
2
+ "missingMaterialCount": 2,
3
+ "alphaPolicy": "opaque_scene_v1",
4
+ "camera": {
5
+ "aspectRatio": 1,
6
+ "fieldOfViewDegrees": 90,
7
+ "location": {
8
+ "x": 0,
9
+ "y": -200,
10
+ "z": 0
11
+ },
12
+ "orthoWidth": 512,
13
+ "projection": "perspective",
14
+ "rotation": {
15
+ "pitch": 0,
16
+ "roll": 0,
17
+ "yaw": 0
18
+ },
19
+ "usesCustomAspectRatio": false
20
+ },
21
+ "colorSpace": "srgb",
22
+ "contract": {
23
+ "name": "ue-shed-niagara-preview-receipt",
24
+ "version": {
25
+ "major": 1,
26
+ "minor": 1
27
+ }
28
+ },
29
+ "effectiveSettings": {
30
+ "captureMode": "full_scene",
31
+ "durationSeconds": 1,
32
+ "frameCount": 2,
33
+ "frameIntervalSeconds": 0.5,
34
+ "height": 64,
35
+ "playbackFramesPerSecond": 2,
36
+ "simulationFramesPerSecond": 60,
37
+ "startSeconds": 0,
38
+ "width": 64,
39
+ "renderMode": "scene",
40
+ "cameraMode": "auto_fit",
41
+ "sceneProfile": "ground_impact",
42
+ "exposureCompensation": 1,
43
+ "cameraPadding": 1.2
44
+ },
45
+ "engineVersion": "5.7.2-0+++UE5+Release-5.7",
46
+ "frames": [
47
+ {
48
+ "index": 0,
49
+ "maximumRgb": 1,
50
+ "nonTransparentPixelFraction": 1,
51
+ "relativePath": "frames/frame_0000.png",
52
+ "timeSeconds": 0,
53
+ "activityScore": 0.1,
54
+ "edgePixelFraction": 0
55
+ },
56
+ {
57
+ "index": 1,
58
+ "maximumRgb": 0.8,
59
+ "nonTransparentPixelFraction": 1,
60
+ "relativePath": "frames/frame_0001.png",
61
+ "timeSeconds": 0.5,
62
+ "activityScore": 0.1,
63
+ "edgePixelFraction": 0
64
+ }
65
+ ],
66
+ "generatedAtUtc": "2026-08-20T00:00:00.000Z",
67
+ "requestedSettings": {
68
+ "captureMode": "full_scene",
69
+ "durationSeconds": 1,
70
+ "frameCount": 2,
71
+ "height": 64,
72
+ "simulationFramesPerSecond": 60,
73
+ "startSeconds": 0,
74
+ "width": 64,
75
+ "renderMode": "scene",
76
+ "cameraMode": "auto_fit",
77
+ "sceneProfile": "ground_impact",
78
+ "exposureCompensation": 1,
79
+ "cameraPadding": 1.2
80
+ },
81
+ "runId": "11111111-1111-4111-8111-111111111111",
82
+ "status": "complete",
83
+ "systemObjectPath": "/Game/Fixture/Niagara/NS_Preview.NS_Preview"
84
+ }
@@ -0,0 +1,25 @@
1
+ {
2
+ "contract": {
3
+ "name": "ue-shed-niagara-preview-request",
4
+ "version": {
5
+ "major": 1,
6
+ "minor": 1
7
+ }
8
+ },
9
+ "runId": "11111111-1111-4111-8111-111111111111",
10
+ "settings": {
11
+ "captureMode": "full_scene",
12
+ "durationSeconds": 1,
13
+ "frameCount": 2,
14
+ "height": 64,
15
+ "simulationFramesPerSecond": 60,
16
+ "startSeconds": 0,
17
+ "width": 64,
18
+ "renderMode": "scene",
19
+ "cameraMode": "auto_fit",
20
+ "sceneProfile": "ground_impact",
21
+ "exposureCompensation": 1,
22
+ "cameraPadding": 1.2
23
+ },
24
+ "systemObjectPath": "/Game/Fixture/Niagara/NS_Preview.NS_Preview"
25
+ }
@@ -18,7 +18,9 @@
18
18
  "systemObjectPath"
19
19
  ],
20
20
  "properties": {
21
- "alphaPolicy": { "const": "scene_opacity_or_emissive_coverage_v1" },
21
+ "alphaPolicy": {
22
+ "enum": ["scene_opacity_or_emissive_coverage_v1", "opaque_scene_v1"]
23
+ },
22
24
  "artifacts": {
23
25
  "type": "array",
24
26
  "minItems": 1,
@@ -37,34 +39,87 @@
37
39
  "width"
38
40
  ],
39
41
  "properties": {
40
- "bytes": { "type": "integer", "minimum": 1 },
41
- "height": { "type": "integer", "minimum": 1, "maximum": 4096 },
42
- "index": { "type": "integer", "minimum": 0 },
43
- "maximumRgb": { "type": "number", "minimum": 0, "maximum": 1 },
44
- "mimeType": { "const": "image/png" },
45
- "nonTransparentPixelFraction": { "type": "number", "minimum": 0, "maximum": 1 },
42
+ "bytes": {
43
+ "type": "integer",
44
+ "minimum": 1
45
+ },
46
+ "height": {
47
+ "type": "integer",
48
+ "minimum": 1,
49
+ "maximum": 4096
50
+ },
51
+ "index": {
52
+ "type": "integer",
53
+ "minimum": 0
54
+ },
55
+ "maximumRgb": {
56
+ "type": "number",
57
+ "minimum": 0,
58
+ "maximum": 1
59
+ },
60
+ "mimeType": {
61
+ "const": "image/png"
62
+ },
63
+ "nonTransparentPixelFraction": {
64
+ "type": "number",
65
+ "minimum": 0,
66
+ "maximum": 1
67
+ },
46
68
  "relativePath": {
47
69
  "type": "string",
48
70
  "pattern": "^frames/frame_[0-9]{4}\\.png$"
49
71
  },
50
- "sha256": { "type": "string", "pattern": "^sha256:[0-9a-f]{64}$" },
51
- "timeSeconds": { "type": "number", "minimum": 0 },
52
- "width": { "type": "integer", "minimum": 1, "maximum": 4096 }
72
+ "sha256": {
73
+ "type": "string",
74
+ "pattern": "^sha256:[0-9a-f]{64}$"
75
+ },
76
+ "timeSeconds": {
77
+ "type": "number",
78
+ "minimum": 0
79
+ },
80
+ "width": {
81
+ "type": "integer",
82
+ "minimum": 1,
83
+ "maximum": 4096
84
+ },
85
+ "activityScore": {
86
+ "type": "number",
87
+ "minimum": 0,
88
+ "maximum": 1
89
+ },
90
+ "edgePixelFraction": {
91
+ "type": "number",
92
+ "minimum": 0,
93
+ "maximum": 1
94
+ }
53
95
  },
54
96
  "additionalProperties": false
55
97
  }
56
98
  },
57
- "camera": { "$ref": "common.schema.json#/$defs/camera" },
58
- "colorSpace": { "const": "srgb" },
99
+ "camera": {
100
+ "$ref": "common.schema.json#/$defs/camera"
101
+ },
102
+ "colorSpace": {
103
+ "const": "srgb"
104
+ },
59
105
  "contract": {
60
106
  "type": "object",
61
107
  "required": ["name", "version"],
62
108
  "properties": {
63
- "name": { "const": "ue-shed-niagara-preview-run" },
109
+ "name": {
110
+ "const": "ue-shed-niagara-preview-run"
111
+ },
64
112
  "version": {
65
113
  "type": "object",
66
114
  "required": ["major", "minor"],
67
- "properties": { "major": { "const": 1 }, "minor": { "const": 0 } },
115
+ "properties": {
116
+ "major": {
117
+ "const": 1
118
+ },
119
+ "minor": {
120
+ "enum": [0, 1, 2]
121
+ }
122
+ },
68
123
  "additionalProperties": false
69
124
  }
70
125
  },
@@ -76,28 +131,50 @@
76
131
  "type": "object",
77
132
  "required": ["code", "message"],
78
133
  "properties": {
79
- "code": { "enum": ["nearly_black", "nearly_empty"] },
80
- "message": { "type": "string", "minLength": 1 }
134
+ "code": {
135
+ "enum": ["nearly_black", "nearly_empty", "missing_material"]
136
+ },
137
+ "message": {
138
+ "type": "string",
139
+ "minLength": 1
140
+ }
81
141
  },
82
142
  "additionalProperties": false
83
143
  }
84
144
  },
85
- "effectiveSettings": { "$ref": "common.schema.json#/$defs/effectiveSettings" },
86
- "generatedAtUtc": { "type": "string", "minLength": 1 },
145
+ "effectiveSettings": {
146
+ "$ref": "common.schema.json#/$defs/effectiveSettings"
147
+ },
148
+ "generatedAtUtc": {
149
+ "type": "string",
150
+ "minLength": 1
151
+ },
87
152
  "producer": {
88
153
  "type": "object",
89
154
  "required": ["engineVersion", "receiptContract"],
90
155
  "properties": {
91
- "engineVersion": { "type": "string", "minLength": 1 },
156
+ "engineVersion": {
157
+ "type": "string",
158
+ "minLength": 1
159
+ },
92
160
  "receiptContract": {
93
161
  "type": "object",
94
162
  "required": ["name", "version"],
95
163
  "properties": {
96
- "name": { "const": "ue-shed-niagara-preview-receipt" },
164
+ "name": {
165
+ "const": "ue-shed-niagara-preview-receipt"
166
+ },
97
167
  "version": {
98
168
  "type": "object",
99
169
  "required": ["major", "minor"],
100
- "properties": { "major": { "const": 1 }, "minor": { "const": 0 } },
170
+ "properties": {
171
+ "major": {
172
+ "const": 1
173
+ },
174
+ "minor": {
175
+ "enum": [0, 1, 2]
176
+ }
177
+ },
101
178
  "additionalProperties": false
102
179
  }
103
180
  },
@@ -106,10 +183,18 @@
106
183
  },
107
184
  "additionalProperties": false
108
185
  },
109
- "requestedSettings": { "$ref": "common.schema.json#/$defs/settings" },
110
- "runId": { "$ref": "common.schema.json#/$defs/runId" },
111
- "status": { "const": "complete" },
112
- "systemObjectPath": { "$ref": "common.schema.json#/$defs/systemObjectPath" }
186
+ "requestedSettings": {
187
+ "$ref": "common.schema.json#/$defs/settings"
188
+ },
189
+ "runId": {
190
+ "$ref": "common.schema.json#/$defs/runId"
191
+ },
192
+ "status": {
193
+ "const": "complete"
194
+ },
195
+ "systemObjectPath": {
196
+ "$ref": "common.schema.json#/$defs/systemObjectPath"
197
+ }
113
198
  },
114
199
  "additionalProperties": false
115
200
  }
@@ -0,0 +1,37 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "type": "object",
4
+ "additionalProperties": false,
5
+ "required": ["schemaVersion", "runId", "phase", "completedFrames", "totalFrames", "elapsedMs"],
6
+ "properties": {
7
+ "schemaVersion": {
8
+ "const": 1
9
+ },
10
+ "runId": {
11
+ "type": "string",
12
+ "minLength": 1
13
+ },
14
+ "phase": {
15
+ "enum": [
16
+ "initializing",
17
+ "compiling",
18
+ "camera_fitting",
19
+ "capturing",
20
+ "writing_receipt",
21
+ "completed"
22
+ ]
23
+ },
24
+ "completedFrames": {
25
+ "type": "integer",
26
+ "minimum": 0
27
+ },
28
+ "totalFrames": {
29
+ "type": "integer",
30
+ "minimum": 1
31
+ },
32
+ "elapsedMs": {
33
+ "type": "number",
34
+ "minimum": 0
35
+ }
36
+ }
37
+ }
@@ -17,25 +17,49 @@
17
17
  "systemObjectPath"
18
18
  ],
19
19
  "properties": {
20
- "alphaPolicy": { "const": "scene_opacity_or_emissive_coverage_v1" },
21
- "camera": { "$ref": "common.schema.json#/$defs/camera" },
22
- "colorSpace": { "const": "srgb" },
20
+ "missingMaterialCount": {
21
+ "type": "integer",
22
+ "minimum": 0
23
+ },
24
+ "alphaPolicy": {
25
+ "enum": ["scene_opacity_or_emissive_coverage_v1", "opaque_scene_v1"]
26
+ },
27
+ "camera": {
28
+ "$ref": "common.schema.json#/$defs/camera"
29
+ },
30
+ "colorSpace": {
31
+ "const": "srgb"
32
+ },
23
33
  "contract": {
24
34
  "type": "object",
25
35
  "required": ["name", "version"],
26
36
  "properties": {
27
- "name": { "const": "ue-shed-niagara-preview-receipt" },
37
+ "name": {
38
+ "const": "ue-shed-niagara-preview-receipt"
39
+ },
28
40
  "version": {
29
41
  "type": "object",
30
42
  "required": ["major", "minor"],
31
- "properties": { "major": { "const": 1 }, "minor": { "const": 0 } },
43
+ "properties": {
44
+ "major": {
45
+ "const": 1
46
+ },
47
+ "minor": {
48
+ "enum": [0, 1, 2]
49
+ }
50
+ },
32
51
  "additionalProperties": false
33
52
  }
34
53
  },
35
54
  "additionalProperties": false
36
55
  },
37
- "effectiveSettings": { "$ref": "common.schema.json#/$defs/effectiveSettings" },
38
- "engineVersion": { "type": "string", "minLength": 1 },
56
+ "effectiveSettings": {
57
+ "$ref": "common.schema.json#/$defs/effectiveSettings"
58
+ },
59
+ "engineVersion": {
60
+ "type": "string",
61
+ "minLength": 1
62
+ },
39
63
  "frames": {
40
64
  "type": "array",
41
65
  "minItems": 1,
@@ -49,23 +73,58 @@
49
73
  "timeSeconds"
50
74
  ],
51
75
  "properties": {
52
- "index": { "type": "integer", "minimum": 0 },
53
- "maximumRgb": { "type": "number", "minimum": 0, "maximum": 1 },
54
- "nonTransparentPixelFraction": { "type": "number", "minimum": 0, "maximum": 1 },
76
+ "index": {
77
+ "type": "integer",
78
+ "minimum": 0
79
+ },
80
+ "maximumRgb": {
81
+ "type": "number",
82
+ "minimum": 0,
83
+ "maximum": 1
84
+ },
85
+ "nonTransparentPixelFraction": {
86
+ "type": "number",
87
+ "minimum": 0,
88
+ "maximum": 1
89
+ },
55
90
  "relativePath": {
56
91
  "type": "string",
57
92
  "pattern": "^frames/frame_[0-9]{4}\\.png$"
58
93
  },
59
- "timeSeconds": { "type": "number", "minimum": 0 }
94
+ "timeSeconds": {
95
+ "type": "number",
96
+ "minimum": 0
97
+ },
98
+ "activityScore": {
99
+ "type": "number",
100
+ "minimum": 0,
101
+ "maximum": 1
102
+ },
103
+ "edgePixelFraction": {
104
+ "type": "number",
105
+ "minimum": 0,
106
+ "maximum": 1
107
+ }
60
108
  },
61
109
  "additionalProperties": false
62
110
  }
63
111
  },
64
- "generatedAtUtc": { "type": "string", "minLength": 1 },
65
- "requestedSettings": { "$ref": "common.schema.json#/$defs/settings" },
66
- "runId": { "$ref": "common.schema.json#/$defs/runId" },
67
- "status": { "const": "complete" },
68
- "systemObjectPath": { "$ref": "common.schema.json#/$defs/systemObjectPath" }
112
+ "generatedAtUtc": {
113
+ "type": "string",
114
+ "minLength": 1
115
+ },
116
+ "requestedSettings": {
117
+ "$ref": "common.schema.json#/$defs/settings"
118
+ },
119
+ "runId": {
120
+ "$ref": "common.schema.json#/$defs/runId"
121
+ },
122
+ "status": {
123
+ "const": "complete"
124
+ },
125
+ "systemObjectPath": {
126
+ "$ref": "common.schema.json#/$defs/systemObjectPath"
127
+ }
69
128
  },
70
129
  "additionalProperties": false
71
130
  }
@@ -8,19 +8,34 @@
8
8
  "type": "object",
9
9
  "required": ["name", "version"],
10
10
  "properties": {
11
- "name": { "const": "ue-shed-niagara-preview-request" },
11
+ "name": {
12
+ "const": "ue-shed-niagara-preview-request"
13
+ },
12
14
  "version": {
13
15
  "type": "object",
14
16
  "required": ["major", "minor"],
15
- "properties": { "major": { "const": 1 }, "minor": { "const": 0 } },
17
+ "properties": {
18
+ "major": {
19
+ "const": 1
20
+ },
21
+ "minor": {
22
+ "enum": [0, 1, 2]
23
+ }
24
+ },
16
25
  "additionalProperties": false
17
26
  }
18
27
  },
19
28
  "additionalProperties": false
20
29
  },
21
- "runId": { "$ref": "common.schema.json#/$defs/runId" },
22
- "settings": { "$ref": "common.schema.json#/$defs/settings" },
23
- "systemObjectPath": { "$ref": "common.schema.json#/$defs/systemObjectPath" }
30
+ "runId": {
31
+ "$ref": "common.schema.json#/$defs/runId"
32
+ },
33
+ "settings": {
34
+ "$ref": "common.schema.json#/$defs/settings"
35
+ },
36
+ "systemObjectPath": {
37
+ "$ref": "common.schema.json#/$defs/systemObjectPath"
38
+ }
24
39
  },
25
40
  "additionalProperties": false
26
41
  }
@@ -0,0 +1,25 @@
1
+ # Niagara session transport v1
2
+
3
+ This local filesystem transport carries the existing preview request contract unchanged.
4
+ It is available only to trusted process-owning hosts. Every launch uses a new private
5
+ directory. It is not a network protocol or a way to attach to arbitrary editor processes.
6
+
7
+ - Producer readiness: atomically publish `ready.json` containing
8
+ `{ "protocol": "ue-shed-niagara-session.v1" }`.
9
+ - Submit: atomically rename a complete request to `<runId>.request.json`. The lowercase
10
+ UUID v4 filename must match the request's `runId`. IDs are never reused in a session.
11
+ - Result: atomically publish `<runId>.result.json` containing
12
+ `{ "protocol": "ue-shed-niagara-session.v1", "runId": "<UUID>", "exitCode": 0 }`.
13
+ Exit codes are integers 0–255 with the same meaning as single-request commandlet exits.
14
+ A result is at most 4096 bytes. Success still requires validation of the existing
15
+ producer receipt and PNG artifacts; this result alone does not authorize publication.
16
+ - Cancel: the host creates `<runId>.cancel`. The producer checks before work and between
17
+ output frames. Timeouts or interrupted consumers leave this marker.
18
+ - Retire: a `stop` file asks the producer to exit between requests. The supervising host
19
+ writes `closed` on process exit or forced termination. Consumers accept already-completed
20
+ matching results, but fail pending work when `closed` appears.
21
+
22
+ The producer handles requests serially. It destroys each scene and collects garbage before
23
+ publishing its result. It exits after 300 requests or 900 seconds without work and removes
24
+ `ready.json`. The host must stop the process before any source revision changes. The host's
25
+ process tree—not a stored PID—is the authority for forced cleanup.
@@ -0,0 +1,33 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "type": "object",
4
+ "additionalProperties": false,
5
+ "required": [],
6
+ "properties": {
7
+ "actorGuid": {
8
+ "type": "string",
9
+ "pattern": "^[0-9A-Fa-f]{32}$"
10
+ },
11
+ "classPath": {
12
+ "type": "string",
13
+ "minLength": 1
14
+ },
15
+ "folderPath": {
16
+ "type": "string"
17
+ },
18
+ "levelPackage": {
19
+ "type": "string",
20
+ "minLength": 1
21
+ },
22
+ "tags": {
23
+ "type": "array",
24
+ "items": {
25
+ "type": "string"
26
+ },
27
+ "maxItems": 256
28
+ },
29
+ "tagsTruncated": {
30
+ "type": "boolean"
31
+ }
32
+ }
33
+ }