@volter/project 0.5.211 → 0.5.212
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.
- package/NOTICE +2 -2
- package/README.md +8 -15
- package/package.json +5 -26
- package/schemas/volter-project.schema.json +33 -145
- package/schemas/volter-settings.schema.json +11 -49
- package/src/adapter/adapter-module.ts +204 -465
- package/src/adapter/adapter-surface.ts +4 -32
- package/src/adapter/authoring-seam-contract.ts +7 -24
- package/src/adapter/authoring.ts +126 -265
- package/src/adapter/editor-looks.ts +96 -127
- package/src/adapter/finders/registry.ts +6 -21
- package/src/adapter/host-context.ts +17 -72
- package/src/adapter/index.ts +4 -77
- package/src/adapter/manifest-interpreter.ts +7 -50
- package/src/adapter/physics-adapter-2d.ts +4 -21
- package/src/adapter/root-adapter.ts +37 -111
- package/src/adapter/root-seam-contract.ts +3 -6
- package/src/adapter/root-stacking.ts +4 -46
- package/src/adapter/seam-evidence.ts +0 -16
- package/src/adapter/system-adapter.ts +24 -656
- package/src/adapter/system-seam-contract.ts +1 -91
- package/src/adapter/transform.ts +4 -3
- package/src/adapter/workspace-arrangement.ts +29 -49
- package/src/manifest/editor-port.ts +10 -36
- package/src/manifest/filename.ts +3 -42
- package/src/manifest/load-file.ts +9 -15
- package/src/manifest/load.ts +44 -179
- package/src/manifest/locate.ts +6 -29
- package/src/manifest/schema.ts +155 -427
- package/src/semver.ts +16 -0
- package/src/settings/keys.ts +9 -11
- package/src/settings/schema.ts +55 -44
- package/schemas/engine-api.json +0 -57
- package/schemas/engine-api.md +0 -22
- package/src/adapter/binding.ts +0 -445
- package/src/adapter/debug-registry-ref.ts +0 -19
- package/src/adapter/frame-capture.ts +0 -80
- package/src/adapter/ingest/contract-system-slots.ts +0 -28
- package/src/adapter/ingest/game-contract-seams.ts +0 -86
- package/src/adapter/ingest/game-contract.ts +0 -506
- package/src/adapter/ingest/mount-readiness.ts +0 -140
- package/src/adapter/loop-gate-report.ts +0 -53
- package/src/adapter/native-entry-surface.ts +0 -100
- package/src/adapter/render-audio.ts +0 -20
- package/src/adapter/render-memory.ts +0 -34
- package/src/adapter/renderer-config.ts +0 -84
- package/src/adapter/system-slot.ts +0 -301
- package/src/core/system-phase.ts +0 -52
- package/src/inspection.ts +0 -281
- package/src/manifest/configuration-kinds.ts +0 -241
- package/src/manifest/kind-modules.ts +0 -58
- package/src/manifest/runtime-environment.ts +0 -48
|
@@ -1,34 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* so `adapter/root-adapter.ts`'s kind-tagged `MountedRoot` types can name it
|
|
6
|
-
* without a value-level import cycle (`runtime/game.ts` type-imports from
|
|
7
|
-
* `adapter/root-adapter.ts` already). This is a leaf module — it imports
|
|
8
|
-
* nothing — so anything may import it with zero risk of a cycle.
|
|
9
|
-
* `runtime/game.ts` re-exports this SAME type (`export type { AdapterSurface }`),
|
|
10
|
-
* so no existing `import type { AdapterSurface } from '@volter/editor-game/runtime/game'` call site
|
|
11
|
-
* needed to change.
|
|
2
|
+
* Render surface kinds shared by mounted-root contracts and their consumers.
|
|
3
|
+
* This dependency-free leaf keeps the surface vocabulary available without
|
|
4
|
+
* introducing a value import cycle.
|
|
12
5
|
*/
|
|
13
|
-
export type AdapterSurface = '
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* Exhaustiveness guard for `AdapterSurface` dispatch (v4 architecture-review
|
|
17
|
-
* §7.4-2: a hypothetical 4th kind must fail to COMPILE at every kind-dispatch
|
|
18
|
-
* site, not silently contribute nothing or silently default to an existing
|
|
19
|
-
* kind). Lives here — colocated with the kind vocabulary itself, not in a
|
|
20
|
-
* generic util module — so the three call sites that need it
|
|
21
|
-
* (`runtime/create-runtime.ts`'s mount loop, `editor/binding-resolver.ts`'s
|
|
22
|
-
* `resolveAllRoots`, `editor/play-mode.ts`'s `installMultiRootAuthoring`)
|
|
23
|
-
* import it from the same leaf module that defines `AdapterSurface`, keeping the
|
|
24
|
-
* type and its guard from drifting apart. The `never` parameter is the
|
|
25
|
-
* compile-time half of the guard (TS refuses to call this with anything the
|
|
26
|
-
* compiler hasn't already narrowed to zero remaining variants); the thrown
|
|
27
|
-
* Error is the runtime half, in case a value's static type lied (e.g. data
|
|
28
|
-
* crossing a JSON boundary).
|
|
29
|
-
*/
|
|
30
|
-
export function assertNever(value: never, context?: string): never {
|
|
31
|
-
throw new Error(
|
|
32
|
-
`Unreachable${context ? ` ${context}` : ''}: unexpected value ${JSON.stringify(value)}`,
|
|
33
|
-
);
|
|
34
|
-
}
|
|
6
|
+
export type AdapterSurface = 'stage' | 'canvas' | 'dom';
|
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
/** Compiler-derived proof requirements for the AuthoringAdapter protocol.
|
|
2
2
|
*
|
|
3
|
-
* This is intentionally adjacent to the interface.
|
|
4
|
-
*
|
|
5
|
-
* provider. These descriptors cover every nested member and encode the
|
|
3
|
+
* This is intentionally adjacent to the interface. Enumerating only top-level
|
|
4
|
+
* provider names would let `{}` count as a complete provider. These descriptors cover every nested member and encode the
|
|
6
5
|
* weakest evidence that can truthfully verify it.
|
|
7
6
|
*/
|
|
8
7
|
|
|
9
8
|
import type {
|
|
10
9
|
AssetDropProvider,
|
|
11
|
-
AssetSubjectProvider,
|
|
12
10
|
AuthoringAdapter,
|
|
13
11
|
BoxEditProvider,
|
|
14
12
|
ColorSampleProvider,
|
|
@@ -36,7 +34,6 @@ export const AUTHORING_ADAPTER_SHAPE = defineSeamShape<AuthoringAdapter>()({
|
|
|
36
34
|
selection: { optional: true, kind: 'value', required: 'effect' },
|
|
37
35
|
transforms: { optional: true, kind: 'value', required: 'effect' },
|
|
38
36
|
inspector: { optional: true, kind: 'value', required: 'effect' },
|
|
39
|
-
assetSubject: { optional: true, kind: 'value', required: 'operation' },
|
|
40
37
|
related: { optional: true, kind: 'value', required: 'operation' },
|
|
41
38
|
instances: { optional: true, kind: 'value', required: 'effect' },
|
|
42
39
|
structure: { optional: true, kind: 'value', required: 'round-trip' },
|
|
@@ -57,17 +54,11 @@ export const HIERARCHY_PROVIDER_SHAPE = defineSeamShape<HierarchyProvider>()({
|
|
|
57
54
|
roots: { optional: false, kind: 'function', required: 'operation' },
|
|
58
55
|
node: { optional: false, kind: 'function', required: 'operation' },
|
|
59
56
|
crossSurfaceStructureSignature: { optional: true, kind: 'function', required: 'operation' },
|
|
60
|
-
//
|
|
61
|
-
//
|
|
62
|
-
//
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
// carrier graded `unverified` forever — a false sentence about a member
|
|
66
|
-
// that works. It is the inverse of `object3D` and is proven the same way,
|
|
67
|
-
// by a read probe that CALLS it and checks the answer against the walk
|
|
68
|
-
// (`coverage/authoring-read-probe.ts`).
|
|
69
|
-
object3D: { optional: true, kind: 'function', required: 'operation' },
|
|
70
|
-
idForObject3D: { optional: true, kind: 'function', required: 'operation' },
|
|
57
|
+
// Pure lookups are operations: verify nativeObject/idForNativeObject by
|
|
58
|
+
// calling them and comparing their return values with the hierarchy walk.
|
|
59
|
+
// Effects require a receipt for an observable side effect.
|
|
60
|
+
nativeObject: { optional: true, kind: 'function', required: 'operation' },
|
|
61
|
+
idForNativeObject: { optional: true, kind: 'function', required: 'operation' },
|
|
71
62
|
});
|
|
72
63
|
|
|
73
64
|
export const SELECTION_PROVIDER_SHAPE = defineSeamShape<SelectionProvider>()({
|
|
@@ -96,11 +87,6 @@ export const INSPECTOR_PROVIDER_SHAPE = defineSeamShape<InspectorProvider>()({
|
|
|
96
87
|
remove: { optional: true, kind: 'function', required: 'round-trip' },
|
|
97
88
|
});
|
|
98
89
|
|
|
99
|
-
export const ASSET_SUBJECT_PROVIDER_SHAPE = defineSeamShape<AssetSubjectProvider>()({
|
|
100
|
-
get: { optional: false, kind: 'function', required: 'operation' },
|
|
101
|
-
entries: { optional: true, kind: 'function', required: 'operation' },
|
|
102
|
-
});
|
|
103
|
-
|
|
104
90
|
export const RELATED_SUBJECTS_PROVIDER_SHAPE = defineSeamShape<RelatedSubjectsProvider>()({
|
|
105
91
|
links: { optional: false, kind: 'function', required: 'operation' },
|
|
106
92
|
});
|
|
@@ -150,8 +136,6 @@ export const STORIES_PROVIDER_SHAPE = defineSeamShape<StoriesProvider>()({
|
|
|
150
136
|
storiesFor: { optional: false, kind: 'function', required: 'operation' },
|
|
151
137
|
active: { optional: false, kind: 'function', required: 'operation' },
|
|
152
138
|
apply: { optional: false, kind: 'function', required: 'effect' },
|
|
153
|
-
isolate: { optional: true, kind: 'function', required: 'effect' },
|
|
154
|
-
title: { optional: true, kind: 'value', required: 'shape' },
|
|
155
139
|
unavailable: { optional: true, kind: 'function', required: 'operation' },
|
|
156
140
|
});
|
|
157
141
|
|
|
@@ -207,7 +191,6 @@ export const AUTHORING_PROVIDER_SHAPES: {
|
|
|
207
191
|
selection: SELECTION_PROVIDER_SHAPE,
|
|
208
192
|
transforms: TRANSFORM_PROVIDER_SHAPE,
|
|
209
193
|
inspector: INSPECTOR_PROVIDER_SHAPE,
|
|
210
|
-
assetSubject: ASSET_SUBJECT_PROVIDER_SHAPE,
|
|
211
194
|
related: RELATED_SUBJECTS_PROVIDER_SHAPE,
|
|
212
195
|
instances: COMPONENT_INSTANCES_PROVIDER_SHAPE,
|
|
213
196
|
structure: STRUCTURE_PROVIDER_SHAPE,
|