@ue-shed/protocol 0.5.1 → 0.6.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 (72) hide show
  1. package/contracts/cameras/map-tile/v1/README.md +20 -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/fixtures/capture-operation-finished-valid.json +41 -0
  5. package/contracts/cameras/map-tile/v1/fixtures/capture-operation-progress-valid.json +13 -0
  6. package/contracts/cameras/map-tile/v1/fixtures/capture-operation-running-valid.json +5 -0
  7. package/contracts/cameras/map-tile/v1/fixtures/capture-request-lit-valid.json +59 -0
  8. package/contracts/cameras/map-tile/v1/fixtures/readiness-blocked.json +11 -0
  9. package/contracts/cameras/map-tile/v1/fixtures/readiness-ready.json +7 -0
  10. package/contracts/cameras/map-tile/v1/fixtures/selection-ready.json +21 -0
  11. package/contracts/cameras/map-tile/v1/fixtures/selection-unavailable.json +6 -0
  12. package/contracts/cameras/map-tile/v1/inspection.md +16 -0
  13. package/contracts/cameras/map-tile/v1/plan.schema.json +1 -0
  14. package/contracts/cameras/map-tile/v1/readiness.schema.json +39 -0
  15. package/contracts/cameras/map-tile/v1/selection.schema.json +105 -0
  16. package/contracts/core/v1/producer-identity.schema.json +44 -0
  17. package/contracts/niagara/preview/v1/common.schema.json +224 -30
  18. package/contracts/niagara/preview/v1/fixtures/background-manifest.json +136 -0
  19. package/contracts/niagara/preview/v1/fixtures/background-receipt.json +112 -0
  20. package/contracts/niagara/preview/v1/fixtures/background-request.json +39 -0
  21. package/contracts/niagara/preview/v1/fixtures/progress.json +8 -0
  22. package/contracts/niagara/preview/v1/fixtures/scene-manifest.json +108 -0
  23. package/contracts/niagara/preview/v1/fixtures/scene-receipt.json +84 -0
  24. package/contracts/niagara/preview/v1/fixtures/scene-request.json +25 -0
  25. package/contracts/niagara/preview/v1/manifest.schema.json +110 -25
  26. package/contracts/niagara/preview/v1/progress.schema.json +37 -0
  27. package/contracts/niagara/preview/v1/receipt.schema.json +75 -16
  28. package/contracts/niagara/preview/v1/request.schema.json +20 -5
  29. package/contracts/niagara/preview/v1/session.md +25 -0
  30. package/contracts/observatory/v1/actor-metadata.schema.json +33 -0
  31. package/contracts/uasset-io/v1/README.md +26 -1
  32. package/contracts/uasset-io/v1/event.schema.json +511 -1
  33. package/contracts/uasset-io/v1/fixtures/invalid/project-index-count-empty-filters.json +23 -0
  34. package/contracts/uasset-io/v1/fixtures/invalid/project-index-dictionary-page-negative-index.json +35 -0
  35. package/contracts/uasset-io/v1/fixtures/valid/blueprint-request.json +6 -0
  36. package/contracts/uasset-io/v1/fixtures/valid/blueprint-result-event.json +58 -0
  37. package/contracts/uasset-io/v1/fixtures/valid/project-index-count-request.json +32 -0
  38. package/contracts/uasset-io/v1/fixtures/valid/project-index-count-result-event.json +20 -0
  39. package/contracts/uasset-io/v1/fixtures/valid/project-index-dictionary-page-result-event.json +35 -0
  40. package/contracts/uasset-io/v1/fixtures/valid/project-index-dictionary-query-request.json +26 -0
  41. package/contracts/uasset-io/v1/request.schema.json +174 -0
  42. package/dist/authoring-review.d.ts +36 -36
  43. package/dist/authoring.d.ts +45 -45
  44. package/dist/authoring.d.ts.map +1 -1
  45. package/dist/blueprint-graph.d.ts +628 -0
  46. package/dist/blueprint-graph.d.ts.map +1 -0
  47. package/dist/blueprint-graph.js +111 -0
  48. package/dist/blueprint-graph.js.map +1 -0
  49. package/dist/companion.d.ts +34 -3
  50. package/dist/companion.d.ts.map +1 -1
  51. package/dist/companion.js +11 -0
  52. package/dist/companion.js.map +1 -1
  53. package/dist/editor-asset-navigation.d.ts +12 -12
  54. package/dist/editor-play-session.d.ts +6 -6
  55. package/dist/editor-world-control.d.ts +8 -8
  56. package/dist/index.d.ts +1 -0
  57. package/dist/index.d.ts.map +1 -1
  58. package/dist/index.js +1 -0
  59. package/dist/index.js.map +1 -1
  60. package/dist/saved-world.d.ts +20 -14
  61. package/dist/saved-world.d.ts.map +1 -1
  62. package/dist/saved-world.js +1 -0
  63. package/dist/saved-world.js.map +1 -1
  64. package/dist/uasset-inspection.d.ts +6 -5
  65. package/dist/uasset-inspection.d.ts.map +1 -1
  66. package/dist/uasset-inspection.js +1 -1
  67. package/dist/uasset-inspection.js.map +1 -1
  68. package/dist/uasset-io.d.ts +648 -129
  69. package/dist/uasset-io.d.ts.map +1 -1
  70. package/dist/uasset-io.js +51 -1
  71. package/dist/uasset-io.js.map +1 -1
  72. package/package.json +1 -1
@@ -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
+ }
@@ -16,8 +16,33 @@ frames. Version 1.0 operations and the cumulative meaning of `maximumOutputBytes
16
16
  Paired TypeScript and native workers negotiate additive operations; a worker that cannot decode an
17
17
  operation rejects it before `accepted`.
18
18
 
19
+ Minor version 1.2 adds the single-package `blueprint` operation and its versioned saved-graph
20
+ projection. It carries editor graph nodes, arbitrary tagged node properties, native pin data, and
21
+ deduplicated links without requiring Unreal Engine to load the asset. Graph membership drives
22
+ discovery of engine, plugin, and project graph/node subclasses; unsupported saved revisions and
23
+ Control Rig's separate RigVM model fail explicitly.
24
+
25
+ Minor version 1.3 adds optional `pageEncoding: "dictionary"` to `project_index_query` and the
26
+ `project_index_dictionary_page` result. The page carries a local `strings` array; header `classes`
27
+ and `serializedNames` are zero-based references into it. Map items, paths, item ordering, generation,
28
+ and cursors retain their existing meaning. Each page is independent, with at most 1,024 items,
29
+ 64 references per header field, and 131,072 dictionary strings. Decoders must reject references
30
+ outside that page's dictionary before expanding them. This relational check supplements JSON Schema.
31
+ Public library query results expand to the original string arrays. Omitting `pageEncoding` retains
32
+ the original result format; an older worker rejects the new field before accepting the request.
33
+
34
+ Minor version 1.4 adds `project_index_count`, available in both `protocol` and `protocol-session`.
35
+ Its `request` carries `projectId`, `expectedGeneration`, and between 1 and 16 `filters`. Filters use
36
+ the existing query kinds and value bounds, without pagination fields. The result carries the same
37
+ identity and generation plus `count`: the number of distinct package paths matching any filter.
38
+ Overlapping filters, including map and header matches for the same package, count once. Counts read
39
+ the immutable inventory and checked postings without hydrating package evidence. Stale generations
40
+ and corrupt postings fail with the same typed errors as queries. Old workers reject the operation
41
+ before accepting it.
42
+
19
43
  Result frames use an explicit result kind. Generic inspection, authoring, scan, compact text,
20
- compact texture, and saved-world values each have a named schema; there is no untyped result field.
44
+ compact texture, Blueprint graph, and saved-world values each have a named schema; there is no
45
+ untyped result field.
21
46
  The shared inspection schemas are exported from `@ue-shed/protocol` so the Effect reader and the
22
47
  Rust worker can converge on one wire shape.
23
48