@vgai/engine 0.5.11 → 0.5.13

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 (152) hide show
  1. package/README.md +6 -5
  2. package/dist/adapter/authoring.d.ts +51 -28
  3. package/dist/adapter/authoring.d.ts.map +1 -1
  4. package/dist/adapter/body-marks.d.ts +59 -0
  5. package/dist/adapter/body-marks.d.ts.map +1 -0
  6. package/dist/adapter/body-marks.js +62 -0
  7. package/dist/adapter/constraint.d.ts +41 -0
  8. package/dist/adapter/constraint.d.ts.map +1 -0
  9. package/dist/adapter/constraint.js +27 -0
  10. package/dist/adapter/hierarchy-marks.d.ts +138 -0
  11. package/dist/adapter/hierarchy-marks.d.ts.map +1 -0
  12. package/dist/adapter/hierarchy-marks.js +148 -0
  13. package/dist/adapter/index.d.ts +1 -1
  14. package/dist/adapter/index.d.ts.map +1 -1
  15. package/dist/adapter/ingest/contract-system-adapters.d.ts +64 -0
  16. package/dist/adapter/ingest/contract-system-adapters.d.ts.map +1 -0
  17. package/dist/adapter/ingest/contract-system-adapters.js +134 -0
  18. package/dist/adapter/ingest/game-contract.d.ts +87 -9
  19. package/dist/adapter/ingest/game-contract.d.ts.map +1 -1
  20. package/dist/adapter/ingest/game-contract.js +7 -6
  21. package/dist/adapter/ingest/scene-capture.d.ts +31 -4
  22. package/dist/adapter/ingest/scene-capture.d.ts.map +1 -1
  23. package/dist/adapter/ingest/scene-capture.js +29 -7
  24. package/dist/adapter/ingest/structural-ids.d.ts +1 -1
  25. package/dist/adapter/ingest/structural-ids.js +2 -2
  26. package/dist/adapter/reflection-probe.d.ts +53 -0
  27. package/dist/adapter/reflection-probe.d.ts.map +1 -0
  28. package/dist/adapter/reflection-probe.js +18 -0
  29. package/dist/asset-formats/index.d.ts +4 -10
  30. package/dist/asset-formats/index.d.ts.map +1 -1
  31. package/dist/asset-formats/index.js +3 -8
  32. package/dist/asset-formats/material.d.ts +0 -66
  33. package/dist/asset-formats/material.d.ts.map +1 -1
  34. package/dist/asset-formats/material.js +0 -8
  35. package/dist/asset-formats/mesh.d.ts +1 -2
  36. package/dist/asset-formats/mesh.d.ts.map +1 -1
  37. package/dist/asset-formats/mesh.js +3 -13
  38. package/dist/asset-formats/render-env.d.ts +2 -2
  39. package/dist/asset-parse-error.d.ts +4 -5
  40. package/dist/asset-parse-error.d.ts.map +1 -1
  41. package/dist/asset-parse-error.js +4 -5
  42. package/dist/config.d.ts +7 -0
  43. package/dist/config.d.ts.map +1 -1
  44. package/dist/config.js +7 -0
  45. package/dist/data/curve.d.ts +116 -0
  46. package/dist/data/curve.d.ts.map +1 -0
  47. package/dist/data/curve.js +230 -0
  48. package/dist/data/vite-plugin-data.d.ts +2 -2
  49. package/dist/data/vite-plugin-data.d.ts.map +1 -1
  50. package/dist/data/vite-plugin-data.js +24 -15
  51. package/dist/dev/performance-profiler.d.ts +1 -0
  52. package/dist/dev/performance-profiler.d.ts.map +1 -1
  53. package/dist/dev/performance-profiler.js +25 -2
  54. package/dist/ecs/user-data.d.ts +49 -1
  55. package/dist/ecs/user-data.d.ts.map +1 -1
  56. package/dist/ecs/user-data.js +34 -0
  57. package/dist/index.d.ts +2 -3
  58. package/dist/index.d.ts.map +1 -1
  59. package/dist/index.js +2 -3
  60. package/dist/manifest/index.d.ts +3 -3
  61. package/dist/manifest/index.d.ts.map +1 -1
  62. package/dist/manifest/index.js +2 -2
  63. package/dist/manifest/load.d.ts +15 -67
  64. package/dist/manifest/load.d.ts.map +1 -1
  65. package/dist/manifest/load.js +11 -103
  66. package/dist/manifest/schema.d.ts +18 -103
  67. package/dist/manifest/schema.d.ts.map +1 -1
  68. package/dist/manifest/schema.js +59 -179
  69. package/dist/pixi/index.d.ts +2 -3
  70. package/dist/pixi/index.d.ts.map +1 -1
  71. package/dist/pixi/index.js +2 -3
  72. package/dist/pixi/ingest.d.ts +7 -75
  73. package/dist/pixi/ingest.d.ts.map +1 -1
  74. package/dist/pixi/ingest.js +6 -14
  75. package/dist/pixi/scene-capture.d.ts +2 -2
  76. package/dist/pixi/scene-capture.js +2 -2
  77. package/dist/react/use-data.d.ts +10 -5
  78. package/dist/react/use-data.d.ts.map +1 -1
  79. package/dist/react/use-data.js +15 -15
  80. package/dist/render/viewport-shading.d.ts +1 -1
  81. package/dist/render/viewport-shading.d.ts.map +1 -1
  82. package/dist/render/viewport-shading.js +14 -0
  83. package/dist/runtime/create-runtime.d.ts +12 -0
  84. package/dist/runtime/create-runtime.d.ts.map +1 -1
  85. package/dist/runtime/create-runtime.js +7 -2
  86. package/dist/runtime/mount-game.d.ts +1 -1
  87. package/dist/runtime/mount-game.d.ts.map +1 -1
  88. package/dist/runtime/mount-manifest.d.ts.map +1 -1
  89. package/dist/runtime/mount-manifest.js +5 -1
  90. package/dist/world3d-react/r3f-adapter.d.ts.map +1 -1
  91. package/dist/world3d-react/r3f-adapter.js +69 -39
  92. package/dist/world3d-react/renderer-config.d.ts +15 -0
  93. package/dist/world3d-react/renderer-config.d.ts.map +1 -1
  94. package/dist/world3d-react/renderer-config.js +15 -0
  95. package/dist/world3d-react/world-context.d.ts +2 -1
  96. package/dist/world3d-react/world-context.d.ts.map +1 -1
  97. package/dist-config/config.js +140 -20
  98. package/dist-config/config.js.map +4 -4
  99. package/package.json +1 -1
  100. package/schemas/engine-capabilities.json +10 -10
  101. package/schemas/vgai-project.schema.json +21 -76
  102. package/src/adapter/authoring.ts +54 -31
  103. package/src/adapter/body-marks.ts +69 -0
  104. package/src/adapter/constraint.ts +71 -0
  105. package/src/adapter/hierarchy-marks.ts +155 -0
  106. package/src/adapter/index.ts +2 -3
  107. package/src/adapter/ingest/contract-system-adapters.ts +174 -0
  108. package/src/adapter/ingest/game-contract.ts +98 -9
  109. package/src/adapter/ingest/scene-capture.ts +61 -11
  110. package/src/adapter/ingest/structural-ids.ts +2 -2
  111. package/src/adapter/reflection-probe.ts +75 -0
  112. package/src/asset-formats/index.ts +4 -10
  113. package/src/asset-formats/material.ts +0 -11
  114. package/src/asset-formats/mesh.ts +3 -16
  115. package/src/asset-parse-error.ts +4 -5
  116. package/src/config.ts +13 -0
  117. package/src/data/curve.ts +263 -0
  118. package/src/data/vite-plugin-data.ts +48 -14
  119. package/src/dev/performance-profiler.ts +21 -2
  120. package/src/ecs/user-data.ts +50 -0
  121. package/src/index.ts +2 -3
  122. package/src/manifest/index.ts +3 -15
  123. package/src/manifest/load.ts +27 -143
  124. package/src/manifest/schema.ts +65 -223
  125. package/src/pixi/index.ts +2 -15
  126. package/src/pixi/ingest.ts +13 -87
  127. package/src/pixi/scene-capture.ts +2 -2
  128. package/src/react/use-data.ts +15 -20
  129. package/src/render/viewport-shading.ts +16 -1
  130. package/src/runtime/create-runtime.ts +30 -5
  131. package/src/runtime/mount-game.ts +1 -1
  132. package/src/runtime/mount-manifest.ts +5 -1
  133. package/src/world3d-react/r3f-adapter.tsx +73 -39
  134. package/src/world3d-react/renderer-config.ts +31 -0
  135. package/src/world3d-react/world-context.ts +2 -1
  136. package/dist/asset-formats/instances.d.ts +0 -17
  137. package/dist/asset-formats/instances.d.ts.map +0 -1
  138. package/dist/asset-formats/instances.js +0 -31
  139. package/dist/asset-formats/parse.d.ts +0 -20
  140. package/dist/asset-formats/parse.d.ts.map +0 -1
  141. package/dist/asset-formats/parse.js +0 -34
  142. package/dist/pixi/ingest-iframe.d.ts +0 -82
  143. package/dist/pixi/ingest-iframe.d.ts.map +0 -1
  144. package/dist/pixi/ingest-iframe.js +0 -166
  145. package/dist/render/instance-mesh.d.ts +0 -5
  146. package/dist/render/instance-mesh.d.ts.map +0 -1
  147. package/dist/render/instance-mesh.js +0 -19
  148. package/schemas/mat.schema.json +0 -255
  149. package/src/asset-formats/instances.ts +0 -38
  150. package/src/asset-formats/parse.ts +0 -39
  151. package/src/pixi/ingest-iframe.ts +0 -255
  152. package/src/render/instance-mesh.ts +0 -25
@@ -1,8 +1,8 @@
1
1
  // Game manifest (vgai.project.json) — schema + loader (T3.1 slice
2
2
  // 1)..
3
3
  export { isManifestFilename, MANIFEST_FILENAME, REMOVED_MANIFEST_FILENAME, removedManifestFilenameMessage, } from './filename';
4
- export { CAPABILITY_CEILINGS, DEFAULT_SERVER_MODULE, loadGameManifest } from './load';
5
- export { AdapterRootSchema, GameManifestSchema, IngestStrategySchema, RootAdapterSchema, TierSchema, } from './schema';
4
+ export { DEFAULT_SERVER_MODULE, loadGameManifest } from './load';
5
+ export { AdapterRootSchema, GameManifestSchema, RootAdapterSchema } from './schema';
6
6
  // `loadGameManifestFile` (Node-only, reads `path` via `node:fs`) is
7
7
  // deliberately NOT re-exported here — this barrel must stay import-safe for
8
8
  // browser bundles. Import it directly from `@engine/manifest/load-file` in
@@ -1,4 +1,4 @@
1
- import { type IngestStrategy, type LearnMetadata, type Tier } from './schema';
1
+ import { type LearnMetadata } from './schema';
2
2
  /** D6's resolved adapter identities. */
3
3
  export type ResolvedAdapter = {
4
4
  readonly type: 'builtin';
@@ -13,27 +13,24 @@ export type ResolvedAdapter = {
13
13
  readonly type: 'ingest';
14
14
  readonly identity: 'ingest-three' | 'ingest-pixi' | 'ingest-react';
15
15
  readonly surface: 'three' | 'canvas' | 'dom';
16
- readonly strategy: IngestStrategy;
17
- readonly entryHtml: string | undefined;
18
16
  /**
19
17
  * Project-relative ES module declaring `window.vgaiGame` beside a
20
18
  * pristine copy. OPTIONAL rather than required-and-possibly-undefined
21
- * (the shape its siblings above use) because it is read by exactly one
22
- * mount route: every other construction site of this type the ingest
23
- * routes' own fixtures included — has nothing to say about it, and
24
- * requiring the key would only make them all say `undefined`.
19
+ * (the shape its siblings above use) because most ingested games have
20
+ * nothing to say about it, and requiring the key would only make every
21
+ * construction site say `undefined`.
25
22
  */
26
23
  readonly contractShim?: string | undefined;
24
+ /**
25
+ * Project-relative ES module that writes this game'''s own DATA file back
26
+ * (see the field'''s schema description). Same OPTIONAL shape and same
27
+ * reason as {@link contractShim}: a game whose truth is entirely source
28
+ * declares nothing here.
29
+ */
30
+ readonly dataWriter?: string | undefined;
27
31
  readonly assets: Record<string, string> | undefined;
28
32
  readonly domStubs: string[] | undefined;
29
33
  readonly captureTimeoutMs: number | undefined;
30
- /** Iframe-reachable-multi mount fields. */
31
- readonly bundleUrl: string | undefined;
32
- readonly baseHref: string | undefined;
33
- readonly assetBaseUrl: string | undefined;
34
- readonly extraDeps: string[] | undefined;
35
- readonly pixiModuleUrl: string | undefined;
36
- readonly bodyHtml: string | undefined;
37
34
  };
38
35
  export interface ResolvedAdapterRoot {
39
36
  readonly id: string;
@@ -47,11 +44,6 @@ export interface ResolvedAdapterRoot {
47
44
  * `manifest/schema.ts`'s `dev` field for the four readers. */
48
45
  readonly dev: boolean;
49
46
  readonly loop: 'gated' | 'self-driven';
50
- /** Every optional resolved: both contexts always present (§4/§5). */
51
- readonly capabilities: {
52
- readonly local: Tier;
53
- readonly hosted: Tier;
54
- };
55
47
  }
56
48
  export interface ResolvedGameManifest {
57
49
  readonly manifestVersion: 2;
@@ -71,6 +63,10 @@ export interface ResolvedGameManifest {
71
63
  readonly width: number;
72
64
  readonly height: number;
73
65
  } | undefined;
66
+ /** Construction-time renderer properties no world can declare for itself — see the schema. */
67
+ readonly rendering: {
68
+ readonly antialias: boolean;
69
+ } | undefined;
74
70
  readonly authoring: {
75
71
  readonly hierarchy?: {
76
72
  readonly rootLabels?: Readonly<Record<string, string>> | undefined;
@@ -110,54 +106,6 @@ export interface ResolvedGameManifest {
110
106
  * gallery/wizard/Learn-catalog registries. */
111
107
  readonly learn: LearnMetadata | undefined;
112
108
  }
113
- /**
114
- * Ceiling (maximum legal declared `Tier`) per adapter type and delivery
115
- * context. `default` roots are always first-party in both contexts (D6/§2 —
116
- * a first-party root is fully vgai-native everywhere). `ingest` roots are
117
- * ceilinged by their own capture `strategy`: locally the local CLI's Vite
118
- * pipeline gives bundler dedupe, so every strategy reaches its own natural
119
- * rung; hosted has no bundler (esbuild-wasm + externals only), and a
120
- * `deduped` root is DEFINED by being source built through our pipeline — no
121
- * prebuilt bundle exists to fall back to an iframe rung, and nothing
122
- * implements a hosted build for it, so hosted is `unsupported` (honesty over
123
- * optimism; if the hosted esbuild-wasm path ever proves capable, raising
124
- * this ceiling is a non-breaking widening). `shared`/`iframe-reachable`/
125
- * `opaque-embed` don't depend on a bundler either way, so they carry through
126
- * unchanged. `module` adapters have no derivable ceiling ("a custom
127
- * adapter's reach is not derivable", §4) — modeled here as `first-party`
128
- * (the top rank), i.e. no ceiling actually constrains a module adapter's
129
- * declared tier; the loader instead requires the tier to be declared
130
- * explicitly for module roots (see `resolveCapabilities`), since there is no
131
- * default to derive.
132
- */
133
- export declare const CAPABILITY_CEILINGS: {
134
- readonly builtin: {
135
- readonly local: "first-party";
136
- readonly hosted: "first-party";
137
- };
138
- readonly ingest: {
139
- readonly shared: {
140
- readonly local: "shared";
141
- readonly hosted: "shared";
142
- };
143
- readonly deduped: {
144
- readonly local: "deduped";
145
- readonly hosted: "unsupported";
146
- };
147
- readonly 'iframe-reachable': {
148
- readonly local: "iframe-reachable";
149
- readonly hosted: "iframe-reachable";
150
- };
151
- readonly 'opaque-embed': {
152
- readonly local: "opaque-embed";
153
- readonly hosted: "opaque-embed";
154
- };
155
- };
156
- readonly module: {
157
- readonly local: "first-party";
158
- readonly hosted: "first-party";
159
- };
160
- };
161
109
  /** Default relative path for `server.module` when omitted (§3) — the scaffolded Colyseus bootstrap. */
162
110
  export declare const DEFAULT_SERVER_MODULE = "server/colyseus-setup.ts";
163
111
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"load.d.ts","sourceRoot":"","sources":["../../src/manifest/load.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"load.d.ts","sourceRoot":"","sources":["../../src/manifest/load.ts"],"names":[],"mappings":"AAeA,OAAO,EAIL,KAAK,aAAa,EAEnB,MAAM,UAAU,CAAC;AAMlB,wCAAwC;AACxC,MAAM,MAAM,eAAe,GACvB;IACE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;IAC9C,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;CAC9C,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;CAC9C,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAGxB,QAAQ,CAAC,QAAQ,EAAE,cAAc,GAAG,aAAa,GAAG,cAAc,CAAC;IACnE,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;IAC7C;;;;;;OAMG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3C;;;;;OAKG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;IACpD,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IACxC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,GAAG,SAAS,CAAC;CAC/C,CAAC;AAEN,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC;IAC7C,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC;IAClC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B;mEAC+D;IAC/D,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,aAAa,CAAC;CACxC;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,eAAe,EAAE,CAAC,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE;QAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9C,kEAAkE;IAClE,QAAQ,CAAC,KAAK,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAC/C,QAAQ,CAAC,MAAM,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;IAChF,QAAQ,CAAC,UAAU,EAAE;QAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;IACrF,8FAA8F;IAC9F,QAAQ,CAAC,SAAS,EAAE;QAAE,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAA;KAAE,GAAG,SAAS,CAAC;IAChE,QAAQ,CAAC,SAAS,EACd;QACE,QAAQ,CAAC,SAAS,CAAC,EACf;YACE,QAAQ,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC;YACnE,QAAQ,CAAC,MAAM,CAAC,EACZ,SAAS;gBACP,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;gBACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;gBACvB,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;aACnC,EAAE,GACH,SAAS,CAAC;SACf,GACD,SAAS,CAAC;KACf,GACD,SAAS,CAAC;IACd,6FAA6F;IAC7F,QAAQ,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAA;KAAE,GAAG,SAAS,CAAC;IACpE;;;iBAGa;IACb,QAAQ,CAAC,WAAW,EAChB;QAAE,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;KAAE,GAC7E,SAAS,CAAC;IACd;;;4EAGwE;IACxE,QAAQ,CAAC,MAAM,EACX;QACE,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC5C,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC3C,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC1C,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC3C,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;KAC5C,GACD,SAAS,CAAC;IACd;;;mDAG+C;IAC/C,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,SAAS,CAAC;CAC3C;AAED,uGAAuG;AACvG,eAAO,MAAM,qBAAqB,6BAA6B,CAAC;AAoIhE;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG,oBAAoB,CAyDnE"}
@@ -13,49 +13,6 @@
13
13
  // wrapper that reads a path and calls this function, so browser bundles that
14
14
  // only need `loadGameManifest` never pull in `node:fs`.
15
15
  import { GameManifestSchema, } from './schema';
16
- // ---------------------------------------------------------------------------
17
- // §4 — the per-context ceiling table (named + exported so the tier-table test
18
- // can pin its rows against this).
19
- // ---------------------------------------------------------------------------
20
- /**
21
- * Ceiling (maximum legal declared `Tier`) per adapter type and delivery
22
- * context. `default` roots are always first-party in both contexts (D6/§2 —
23
- * a first-party root is fully vgai-native everywhere). `ingest` roots are
24
- * ceilinged by their own capture `strategy`: locally the local CLI's Vite
25
- * pipeline gives bundler dedupe, so every strategy reaches its own natural
26
- * rung; hosted has no bundler (esbuild-wasm + externals only), and a
27
- * `deduped` root is DEFINED by being source built through our pipeline — no
28
- * prebuilt bundle exists to fall back to an iframe rung, and nothing
29
- * implements a hosted build for it, so hosted is `unsupported` (honesty over
30
- * optimism; if the hosted esbuild-wasm path ever proves capable, raising
31
- * this ceiling is a non-breaking widening). `shared`/`iframe-reachable`/
32
- * `opaque-embed` don't depend on a bundler either way, so they carry through
33
- * unchanged. `module` adapters have no derivable ceiling ("a custom
34
- * adapter's reach is not derivable", §4) — modeled here as `first-party`
35
- * (the top rank), i.e. no ceiling actually constrains a module adapter's
36
- * declared tier; the loader instead requires the tier to be declared
37
- * explicitly for module roots (see `resolveCapabilities`), since there is no
38
- * default to derive.
39
- */
40
- export const CAPABILITY_CEILINGS = {
41
- builtin: { local: 'first-party', hosted: 'first-party' },
42
- ingest: {
43
- shared: { local: 'shared', hosted: 'shared' },
44
- deduped: { local: 'deduped', hosted: 'unsupported' },
45
- 'iframe-reachable': { local: 'iframe-reachable', hosted: 'iframe-reachable' },
46
- 'opaque-embed': { local: 'opaque-embed', hosted: 'opaque-embed' },
47
- },
48
- module: { local: 'first-party', hosted: 'first-party' },
49
- };
50
- /** Total order over `Tier` (§4: `first-party > shared ≈ deduped > iframe-reachable > opaque-embed > unsupported`). */
51
- const TIER_RANK = {
52
- 'first-party': 5,
53
- shared: 4,
54
- deduped: 4,
55
- 'iframe-reachable': 3,
56
- 'opaque-embed': 2,
57
- unsupported: 1,
58
- };
59
16
  /** Default relative path for `server.module` when omitted (§3) — the scaffolded Colyseus bootstrap. */
60
17
  export const DEFAULT_SERVER_MODULE = 'server/colyseus-setup.ts';
61
18
  const SEMVER_RE = /^\d+\.\d+\.\d+(?:-[0-9A-Za-z-.]+)?(?:\+[0-9A-Za-z-.]+)?$/;
@@ -84,16 +41,11 @@ function checkAdapterEntryRules(root) {
84
41
  throw new Error(`Game manifest: root "${root.id}" uses the '${adapter}' adapter but declares no ` +
85
42
  '`entry` — a built-in adapter root is authored as an entry module.');
86
43
  }
44
+ if (typeof adapter === 'object' && 'ingest' in adapter && !root.entry) {
45
+ throw new Error(`Game manifest: root "${root.id}" is an { ingest } root but declares no \`entry\` — the ` +
46
+ "game's own entry module is what the host imports.");
47
+ }
87
48
  }
88
- // Historical note (Track N, N1): this file used to reject EVERY `kind:
89
- // 'react'` + `{ ingest }` root outright here (`checkReactAdapterRestriction`,
90
- // citing "no react ingest program is un-parked"). Track N un-parks exactly
91
- // that program — react+ingest is now a structurally legal combination,
92
- // resolved to the `'ingest-react'` identity by `resolveAdapter` below like
93
- // any other ingest root. There is nothing left to reject at THIS layer: the
94
- // v1 "deduped strategy only" restriction is an editor-resolver concern (D-N3),
95
- // not a manifest-shape concern — see the `ResolvedAdapter` type's comment
96
- // above.
97
49
  // ---------------------------------------------------------------------------
98
50
  // Resolution (§5)
99
51
  // ---------------------------------------------------------------------------
@@ -111,8 +63,7 @@ function resolveAdapter(root) {
111
63
  };
112
64
  }
113
65
  // isIngestAdapter (Track N, N1: 'ingest-react' joins 'ingest-three'/
114
- // 'ingest-pixi' — see the `ResolvedAdapter` type's comment above for why
115
- // this stays strategy-agnostic here).
66
+ // 'ingest-pixi').
116
67
  const identity = adapter.surface === 'three'
117
68
  ? 'ingest-three'
118
69
  : adapter.surface === 'canvas'
@@ -123,56 +74,13 @@ function resolveAdapter(root) {
123
74
  type: 'ingest',
124
75
  identity,
125
76
  surface: adapter.surface,
126
- strategy: ingest.strategy,
127
- entryHtml: ingest.entryHtml,
128
77
  contractShim: ingest.contractShim,
78
+ dataWriter: ingest.dataWriter,
129
79
  assets: ingest.assets,
130
80
  domStubs: ingest.domStubs,
131
81
  captureTimeoutMs: ingest.captureTimeoutMs,
132
- bundleUrl: ingest.bundleUrl,
133
- baseHref: ingest.baseHref,
134
- assetBaseUrl: ingest.assetBaseUrl,
135
- extraDeps: ingest.extraDeps,
136
- pixiModuleUrl: ingest.pixiModuleUrl,
137
- bodyHtml: ingest.bodyHtml,
138
82
  };
139
83
  }
140
- function ceilingFor(adapter, context) {
141
- if (typeof adapter === 'string')
142
- return CAPABILITY_CEILINGS.builtin[context];
143
- if (isModuleAdapter(adapter))
144
- return CAPABILITY_CEILINGS.module[context];
145
- return CAPABILITY_CEILINGS.ingest[adapter.ingest.strategy][context];
146
- }
147
- function resolveCapabilities(root) {
148
- const contexts = ['local', 'hosted'];
149
- const result = {};
150
- for (const context of contexts) {
151
- const declared = root.capabilities?.[context];
152
- if (declared !== undefined) {
153
- const ceiling = ceilingFor(root.adapter, context);
154
- if (TIER_RANK[declared] > TIER_RANK[ceiling]) {
155
- throw new Error(`Game manifest: root "${root.id}": declared capabilities.${context} tier "${declared}" ` +
156
- `exceeds the "${ceiling}" ceiling for this adapter in the ${context} context (§4). ` +
157
- 'Under-claiming (including `unsupported`) is legal; over-claiming is not.');
158
- }
159
- result[context] = declared;
160
- continue;
161
- }
162
- // Omitted -> derive.
163
- if (typeof root.adapter === 'string') {
164
- result[context] = 'first-party';
165
- }
166
- else if (isModuleAdapter(root.adapter)) {
167
- throw new Error(`Game manifest: root "${root.id}": { module } adapter requires an explicit ` +
168
- `capabilities.${context} declaration — a custom adapter's reach is not derivable (§4).`);
169
- }
170
- else {
171
- result[context] = CAPABILITY_CEILINGS.ingest[root.adapter.ingest.strategy][context];
172
- }
173
- }
174
- return result;
175
- }
176
84
  function checkEngineVersionPin(version) {
177
85
  if (!SEMVER_RE.test(version)) {
178
86
  throw new Error(`Game manifest: engine.version "${version}" is not a valid exact semver string (e.g. ` +
@@ -181,17 +89,17 @@ function checkEngineVersionPin(version) {
181
89
  }
182
90
  /**
183
91
  * Resolve one already-Zod-validated root entry into its `ResolvedAdapterRoot`
184
- * (adapter identity, capabilities, and a pass-through of every other field).
92
+ * (adapter identity, and a pass-through of every other field).
185
93
  * Every `AdapterRoot` field participates here or in a check above:
186
94
  * `id` drives uniqueness; `adapter` (incl. its surface and
187
- * `module`/`ingest.*` sub-fields) drives identity + capability-ceiling
95
+ * `module`/`ingest.*` sub-fields) drives adapter identity
188
96
  * resolution; `entry` drives the entry cross-field rule and is
189
97
  * carried through; `zOrder` drives the final sort; `pausable`/`loop` are
190
98
  * carried through as-is (their consumers are the runtime/CLI, T3.2/T3.3);
191
99
  * `dev` is carried through for the four dev-layer readers (`mountManifestRoots`'s
192
100
  * ship gate, the host's topmost stacking pass, the play compositor's capture
193
101
  * exclusion, and the editor's chrome-not-content seam);
194
- * `capabilities.{local,hosted}` drive tier resolution; `description` (T3.3
102
+ * `description` (T3.3
195
103
  * slice 3) is carried through as-is — its consumer today is
196
104
  * `resolveIngestDescriptor` (packages/editor/src/adapter-resolver.ts), which
197
105
  * threads an ingest-three root's description into `IngestGame.description`.
@@ -209,7 +117,6 @@ function resolveRoot(root) {
209
117
  pausable: root.pausable,
210
118
  dev: root.dev,
211
119
  loop: root.loop,
212
- capabilities: resolveCapabilities(root),
213
120
  };
214
121
  }
215
122
  // ---------------------------------------------------------------------------
@@ -234,7 +141,7 @@ export function loadGameManifest(raw) {
234
141
  // raw multi-issue dump, because each one already reads as a finished
235
142
  // sentence naming the offending ids. Every other schema violation keeps
236
143
  // propagating as the raw `ZodError` it always has (unchanged behavior,
237
- // e.g. the iframe-reachable field-exclusivity / manifestVersion checks).
144
+ // e.g. an unrecognized key or a bad `manifestVersion`).
238
145
  const compositionIssue = parsed.error.issues.find((issue) => issue.message.startsWith('Game manifest: duplicate root id') ||
239
146
  issue.message.startsWith('Game manifest: a project has at most one'));
240
147
  if (compositionIssue)
@@ -261,6 +168,7 @@ export function loadGameManifest(raw) {
261
168
  roots,
262
169
  server,
263
170
  resolution: manifest.resolution,
171
+ rendering: manifest.rendering,
264
172
  authoring: manifest.authoring,
265
173
  debug: manifest.debug,
266
174
  determinism: manifest.determinism,
@@ -4,99 +4,59 @@ import { z } from 'zod';
4
4
  * compatibility checks do not duplicate the schema's literal value.
5
5
  */
6
6
  export declare const GAME_MANIFEST_VERSION: 2;
7
- export declare const IngestStrategySchema: z.ZodEnum<{
8
- shared: "shared";
9
- deduped: "deduped";
10
- "iframe-reachable": "iframe-reachable";
11
- "opaque-embed": "opaque-embed";
12
- }>;
13
- export type IngestStrategy = z.infer<typeof IngestStrategySchema>;
14
- export declare const TierSchema: z.ZodEnum<{
15
- shared: "shared";
16
- deduped: "deduped";
17
- "iframe-reachable": "iframe-reachable";
18
- "opaque-embed": "opaque-embed";
19
- "first-party": "first-party";
20
- unsupported: "unsupported";
21
- }>;
22
- export type Tier = z.infer<typeof TierSchema>;
23
7
  export declare const RootAdapterSchema: z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodUnion<readonly [z.ZodEnum<{
24
- three: "three";
25
8
  canvas: "canvas";
9
+ three: "three";
26
10
  dom: "dom";
27
11
  }>, z.ZodObject<{
28
12
  module: z.ZodString;
29
13
  surface: z.ZodEnum<{
30
- three: "three";
31
14
  canvas: "canvas";
15
+ three: "three";
32
16
  dom: "dom";
33
17
  }>;
34
18
  }, z.core.$strict>, z.ZodObject<{
35
19
  surface: z.ZodEnum<{
36
- three: "three";
37
20
  canvas: "canvas";
21
+ three: "three";
38
22
  dom: "dom";
39
23
  }>;
40
24
  ingest: z.ZodObject<{
41
- strategy: z.ZodEnum<{
42
- shared: "shared";
43
- deduped: "deduped";
44
- "iframe-reachable": "iframe-reachable";
45
- "opaque-embed": "opaque-embed";
46
- }>;
47
- entryHtml: z.ZodOptional<z.ZodString>;
48
25
  contractShim: z.ZodOptional<z.ZodString>;
26
+ dataWriter: z.ZodOptional<z.ZodString>;
49
27
  assets: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
50
28
  domStubs: z.ZodOptional<z.ZodArray<z.ZodString>>;
51
29
  captureTimeoutMs: z.ZodOptional<z.ZodNumber>;
52
- bundleUrl: z.ZodOptional<z.ZodString>;
53
- baseHref: z.ZodOptional<z.ZodString>;
54
- assetBaseUrl: z.ZodOptional<z.ZodString>;
55
- extraDeps: z.ZodOptional<z.ZodArray<z.ZodString>>;
56
- pixiModuleUrl: z.ZodOptional<z.ZodString>;
57
- bodyHtml: z.ZodOptional<z.ZodString>;
58
- }, z.core.$strip>;
30
+ }, z.core.$strict>;
59
31
  }, z.core.$strict>]>>;
60
32
  export type RootAdapter = z.infer<typeof RootAdapterSchema>;
61
33
  export declare const AdapterRootSchema: z.ZodObject<{
62
34
  id: z.ZodString;
63
35
  description: z.ZodOptional<z.ZodString>;
64
36
  adapter: z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodUnion<readonly [z.ZodEnum<{
65
- three: "three";
66
37
  canvas: "canvas";
38
+ three: "three";
67
39
  dom: "dom";
68
40
  }>, z.ZodObject<{
69
41
  module: z.ZodString;
70
42
  surface: z.ZodEnum<{
71
- three: "three";
72
43
  canvas: "canvas";
44
+ three: "three";
73
45
  dom: "dom";
74
46
  }>;
75
47
  }, z.core.$strict>, z.ZodObject<{
76
48
  surface: z.ZodEnum<{
77
- three: "three";
78
49
  canvas: "canvas";
50
+ three: "three";
79
51
  dom: "dom";
80
52
  }>;
81
53
  ingest: z.ZodObject<{
82
- strategy: z.ZodEnum<{
83
- shared: "shared";
84
- deduped: "deduped";
85
- "iframe-reachable": "iframe-reachable";
86
- "opaque-embed": "opaque-embed";
87
- }>;
88
- entryHtml: z.ZodOptional<z.ZodString>;
89
54
  contractShim: z.ZodOptional<z.ZodString>;
55
+ dataWriter: z.ZodOptional<z.ZodString>;
90
56
  assets: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
91
57
  domStubs: z.ZodOptional<z.ZodArray<z.ZodString>>;
92
58
  captureTimeoutMs: z.ZodOptional<z.ZodNumber>;
93
- bundleUrl: z.ZodOptional<z.ZodString>;
94
- baseHref: z.ZodOptional<z.ZodString>;
95
- assetBaseUrl: z.ZodOptional<z.ZodString>;
96
- extraDeps: z.ZodOptional<z.ZodArray<z.ZodString>>;
97
- pixiModuleUrl: z.ZodOptional<z.ZodString>;
98
- bodyHtml: z.ZodOptional<z.ZodString>;
99
- }, z.core.$strip>;
59
+ }, z.core.$strict>;
100
60
  }, z.core.$strict>]>>;
101
61
  entry: z.ZodOptional<z.ZodString>;
102
62
  zOrder: z.ZodDefault<z.ZodNumber>;
@@ -106,24 +66,6 @@ export declare const AdapterRootSchema: z.ZodObject<{
106
66
  gated: "gated";
107
67
  "self-driven": "self-driven";
108
68
  }>>;
109
- capabilities: z.ZodOptional<z.ZodObject<{
110
- local: z.ZodOptional<z.ZodEnum<{
111
- shared: "shared";
112
- deduped: "deduped";
113
- "iframe-reachable": "iframe-reachable";
114
- "opaque-embed": "opaque-embed";
115
- "first-party": "first-party";
116
- unsupported: "unsupported";
117
- }>>;
118
- hosted: z.ZodOptional<z.ZodEnum<{
119
- shared: "shared";
120
- deduped: "deduped";
121
- "iframe-reachable": "iframe-reachable";
122
- "opaque-embed": "opaque-embed";
123
- "first-party": "first-party";
124
- unsupported: "unsupported";
125
- }>>;
126
- }, z.core.$strip>>;
127
69
  }, z.core.$strict>;
128
70
  export type AdapterRoot = z.infer<typeof AdapterRootSchema>;
129
71
  export declare const LearnKindSchema: z.ZodEnum<{
@@ -172,41 +114,29 @@ export declare const GameManifestSchema: z.ZodObject<{
172
114
  id: z.ZodString;
173
115
  description: z.ZodOptional<z.ZodString>;
174
116
  adapter: z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodUnion<readonly [z.ZodEnum<{
175
- three: "three";
176
117
  canvas: "canvas";
118
+ three: "three";
177
119
  dom: "dom";
178
120
  }>, z.ZodObject<{
179
121
  module: z.ZodString;
180
122
  surface: z.ZodEnum<{
181
- three: "three";
182
123
  canvas: "canvas";
124
+ three: "three";
183
125
  dom: "dom";
184
126
  }>;
185
127
  }, z.core.$strict>, z.ZodObject<{
186
128
  surface: z.ZodEnum<{
187
- three: "three";
188
129
  canvas: "canvas";
130
+ three: "three";
189
131
  dom: "dom";
190
132
  }>;
191
133
  ingest: z.ZodObject<{
192
- strategy: z.ZodEnum<{
193
- shared: "shared";
194
- deduped: "deduped";
195
- "iframe-reachable": "iframe-reachable";
196
- "opaque-embed": "opaque-embed";
197
- }>;
198
- entryHtml: z.ZodOptional<z.ZodString>;
199
134
  contractShim: z.ZodOptional<z.ZodString>;
135
+ dataWriter: z.ZodOptional<z.ZodString>;
200
136
  assets: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
201
137
  domStubs: z.ZodOptional<z.ZodArray<z.ZodString>>;
202
138
  captureTimeoutMs: z.ZodOptional<z.ZodNumber>;
203
- bundleUrl: z.ZodOptional<z.ZodString>;
204
- baseHref: z.ZodOptional<z.ZodString>;
205
- assetBaseUrl: z.ZodOptional<z.ZodString>;
206
- extraDeps: z.ZodOptional<z.ZodArray<z.ZodString>>;
207
- pixiModuleUrl: z.ZodOptional<z.ZodString>;
208
- bodyHtml: z.ZodOptional<z.ZodString>;
209
- }, z.core.$strip>;
139
+ }, z.core.$strict>;
210
140
  }, z.core.$strict>]>>;
211
141
  entry: z.ZodOptional<z.ZodString>;
212
142
  zOrder: z.ZodDefault<z.ZodNumber>;
@@ -216,24 +146,6 @@ export declare const GameManifestSchema: z.ZodObject<{
216
146
  gated: "gated";
217
147
  "self-driven": "self-driven";
218
148
  }>>;
219
- capabilities: z.ZodOptional<z.ZodObject<{
220
- local: z.ZodOptional<z.ZodEnum<{
221
- shared: "shared";
222
- deduped: "deduped";
223
- "iframe-reachable": "iframe-reachable";
224
- "opaque-embed": "opaque-embed";
225
- "first-party": "first-party";
226
- unsupported: "unsupported";
227
- }>>;
228
- hosted: z.ZodOptional<z.ZodEnum<{
229
- shared: "shared";
230
- deduped: "deduped";
231
- "iframe-reachable": "iframe-reachable";
232
- "opaque-embed": "opaque-embed";
233
- "first-party": "first-party";
234
- unsupported: "unsupported";
235
- }>>;
236
- }, z.core.$strip>>;
237
149
  }, z.core.$strict>>;
238
150
  authoring: z.ZodOptional<z.ZodObject<{
239
151
  hierarchy: z.ZodOptional<z.ZodObject<{
@@ -258,6 +170,9 @@ export declare const GameManifestSchema: z.ZodObject<{
258
170
  width: z.ZodNumber;
259
171
  height: z.ZodNumber;
260
172
  }, z.core.$strip>>;
173
+ rendering: z.ZodOptional<z.ZodObject<{
174
+ antialias: z.ZodBoolean;
175
+ }, z.core.$strict>>;
261
176
  debug: z.ZodOptional<z.ZodObject<{
262
177
  allowInProduction: z.ZodBoolean;
263
178
  }, z.core.$strip>>;
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/manifest/schema.ts"],"names":[],"mappings":"AAsBA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;GAGG;AACH,eAAO,MAAM,qBAAqB,EAAG,CAAU,CAAC;AAMhD,eAAO,MAAM,oBAAoB;;;;;EAK/B,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAMlE,eAAO,MAAM,UAAU;;;;;;;EAOrB,CAAC;AACH,MAAM,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AAsF9C,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBAmP3B,CAAC;AACJ,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAM5D,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAoEnB,CAAC;AACZ,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAkB5D,eAAO,MAAM,eAAe;;;;;EAMzB,CAAC;AACJ,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAExD,eAAO,MAAM,qBAAqB;;;;EAEa,CAAC;AAChD,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;kBAqC7B,CAAC;AACJ,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAMhE,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBA+RyD,CAAC;AAEzF,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/manifest/schema.ts"],"names":[],"mappings":"AAsBA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;GAGG;AACH,eAAO,MAAM,qBAAqB,EAAG,CAAU,CAAC;AAsFhD,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;qBAuG3B,CAAC;AACJ,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAM5D,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAsDnB,CAAC;AACZ,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAkB5D,eAAO,MAAM,eAAe;;;;;EAMzB,CAAC;AACJ,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAExD,eAAO,MAAM,qBAAqB;;;;EAEa,CAAC;AAChD,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;kBAqC7B,CAAC;AACJ,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAMhE,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAqTyD,CAAC;AAEzF,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC"}