@aura3d/engine 1.0.2 → 1.0.3

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 (107) hide show
  1. package/README.md +29 -16
  2. package/dist/engine/agent-api/humanoid-walk-runtime.d.ts +17 -81
  3. package/dist/engine/agent-api/humanoid-walk-runtime.d.ts.map +1 -1
  4. package/dist/engine/agent-api/humanoid-walk-runtime.js +4 -279
  5. package/dist/engine/agent-api/humanoid-walk-runtime.js.map +1 -1
  6. package/dist/engine/agent-api/index.d.ts +3 -3
  7. package/dist/engine/agent-api/index.d.ts.map +1 -1
  8. package/dist/engine/agent-api/index.js +19 -1796
  9. package/dist/engine/agent-api/index.js.map +1 -1
  10. package/dist/engine/agent-api/particle-fountain-runtime.d.ts +5 -80
  11. package/dist/engine/agent-api/particle-fountain-runtime.d.ts.map +1 -1
  12. package/dist/engine/agent-api/particle-fountain-runtime.js +7 -291
  13. package/dist/engine/agent-api/particle-fountain-runtime.js.map +1 -1
  14. package/dist/engine/agent-api/product-viewer-runtime.d.ts +17 -107
  15. package/dist/engine/agent-api/product-viewer-runtime.d.ts.map +1 -1
  16. package/dist/engine/agent-api/product-viewer-runtime.js +4 -330
  17. package/dist/engine/agent-api/product-viewer-runtime.js.map +1 -1
  18. package/package.json +4 -6
  19. package/templates/product-viewer/src/main.ts +1 -0
  20. package/dist/three-compat/ThreeApiInventory.d.ts +0 -18
  21. package/dist/three-compat/ThreeApiInventory.d.ts.map +0 -1
  22. package/dist/three-compat/ThreeApiInventory.js +0 -99
  23. package/dist/three-compat/ThreeApiInventory.js.map +0 -1
  24. package/dist/three-compat/ThreeCompatibilityMatrix.d.ts +0 -30
  25. package/dist/three-compat/ThreeCompatibilityMatrix.d.ts.map +0 -1
  26. package/dist/three-compat/ThreeCompatibilityMatrix.js +0 -69
  27. package/dist/three-compat/ThreeCompatibilityMatrix.js.map +0 -1
  28. package/dist/three-compat/animation/index.d.ts +0 -3
  29. package/dist/three-compat/animation/index.d.ts.map +0 -1
  30. package/dist/three-compat/animation/index.js +0 -2
  31. package/dist/three-compat/animation/index.js.map +0 -1
  32. package/dist/three-compat/cameras/index.d.ts +0 -24
  33. package/dist/three-compat/cameras/index.d.ts.map +0 -1
  34. package/dist/three-compat/cameras/index.js +0 -44
  35. package/dist/three-compat/cameras/index.js.map +0 -1
  36. package/dist/three-compat/controls/index.d.ts +0 -3
  37. package/dist/three-compat/controls/index.d.ts.map +0 -1
  38. package/dist/three-compat/controls/index.js +0 -2
  39. package/dist/three-compat/controls/index.js.map +0 -1
  40. package/dist/three-compat/core/Object3DCompat.d.ts +0 -62
  41. package/dist/three-compat/core/Object3DCompat.d.ts.map +0 -1
  42. package/dist/three-compat/core/Object3DCompat.js +0 -112
  43. package/dist/three-compat/core/Object3DCompat.js.map +0 -1
  44. package/dist/three-compat/core/RaycasterCompat.d.ts +0 -18
  45. package/dist/three-compat/core/RaycasterCompat.d.ts.map +0 -1
  46. package/dist/three-compat/core/RaycasterCompat.js +0 -28
  47. package/dist/three-compat/core/RaycasterCompat.js.map +0 -1
  48. package/dist/three-compat/core/SceneCompat.d.ts +0 -8
  49. package/dist/three-compat/core/SceneCompat.d.ts.map +0 -1
  50. package/dist/three-compat/core/SceneCompat.js +0 -8
  51. package/dist/three-compat/core/SceneCompat.js.map +0 -1
  52. package/dist/three-compat/geometries/index.d.ts +0 -67
  53. package/dist/three-compat/geometries/index.d.ts.map +0 -1
  54. package/dist/three-compat/geometries/index.js +0 -114
  55. package/dist/three-compat/geometries/index.js.map +0 -1
  56. package/dist/three-compat/helpers/index.d.ts +0 -40
  57. package/dist/three-compat/helpers/index.d.ts.map +0 -1
  58. package/dist/three-compat/helpers/index.js +0 -129
  59. package/dist/three-compat/helpers/index.js.map +0 -1
  60. package/dist/three-compat/index.d.ts +0 -32
  61. package/dist/three-compat/index.d.ts.map +0 -1
  62. package/dist/three-compat/index.js +0 -22
  63. package/dist/three-compat/index.js.map +0 -1
  64. package/dist/three-compat/lights/index.d.ts +0 -35
  65. package/dist/three-compat/lights/index.d.ts.map +0 -1
  66. package/dist/three-compat/lights/index.js +0 -39
  67. package/dist/three-compat/lights/index.js.map +0 -1
  68. package/dist/three-compat/loaders/index.d.ts +0 -54
  69. package/dist/three-compat/loaders/index.d.ts.map +0 -1
  70. package/dist/three-compat/loaders/index.js +0 -79
  71. package/dist/three-compat/loaders/index.js.map +0 -1
  72. package/dist/three-compat/materials/index.d.ts +0 -70
  73. package/dist/three-compat/materials/index.d.ts.map +0 -1
  74. package/dist/three-compat/materials/index.js +0 -85
  75. package/dist/three-compat/materials/index.js.map +0 -1
  76. package/dist/three-compat/math/index.d.ts +0 -34
  77. package/dist/three-compat/math/index.d.ts.map +0 -1
  78. package/dist/three-compat/math/index.js +0 -90
  79. package/dist/three-compat/math/index.js.map +0 -1
  80. package/dist/three-compat/migration/CompatibilityWarnings.d.ts +0 -6
  81. package/dist/three-compat/migration/CompatibilityWarnings.d.ts.map +0 -1
  82. package/dist/three-compat/migration/CompatibilityWarnings.js +0 -8
  83. package/dist/three-compat/migration/CompatibilityWarnings.js.map +0 -1
  84. package/dist/three-compat/migration/ImportMap.d.ts +0 -2
  85. package/dist/three-compat/migration/ImportMap.d.ts.map +0 -1
  86. package/dist/three-compat/migration/ImportMap.js +0 -10
  87. package/dist/three-compat/migration/ImportMap.js.map +0 -1
  88. package/dist/three-compat/migration/ThreeToA3DAdapter.d.ts +0 -8
  89. package/dist/three-compat/migration/ThreeToA3DAdapter.d.ts.map +0 -1
  90. package/dist/three-compat/migration/ThreeToA3DAdapter.js +0 -20
  91. package/dist/three-compat/migration/ThreeToA3DAdapter.js.map +0 -1
  92. package/dist/three-compat/postprocessing/index.d.ts +0 -2
  93. package/dist/three-compat/postprocessing/index.d.ts.map +0 -1
  94. package/dist/three-compat/postprocessing/index.js +0 -2
  95. package/dist/three-compat/postprocessing/index.js.map +0 -1
  96. package/dist/three-compat/render-targets/index.d.ts +0 -17
  97. package/dist/three-compat/render-targets/index.d.ts.map +0 -1
  98. package/dist/three-compat/render-targets/index.js +0 -29
  99. package/dist/three-compat/render-targets/index.js.map +0 -1
  100. package/dist/three-compat/shaders/index.d.ts +0 -3
  101. package/dist/three-compat/shaders/index.d.ts.map +0 -1
  102. package/dist/three-compat/shaders/index.js +0 -3
  103. package/dist/three-compat/shaders/index.js.map +0 -1
  104. package/dist/three-compat/textures/index.d.ts +0 -19
  105. package/dist/three-compat/textures/index.d.ts.map +0 -1
  106. package/dist/three-compat/textures/index.js +0 -24
  107. package/dist/three-compat/textures/index.js.map +0 -1
@@ -1,338 +1,12 @@
1
- import * as THREE from "three";
2
- import { GLTFLoader } from "three/examples/jsm/loaders/GLTFLoader.js";
3
- import { RoomEnvironment } from "three/examples/jsm/environments/RoomEnvironment.js";
4
- const auraAssetRefBrand = Symbol("AuraAssetRef");
5
- export function defineAuraAssets(definitions) {
6
- const refs = {};
7
- for (const [id, definition] of Object.entries(definitions)) {
8
- refs[id] = {
9
- ...definition,
10
- kind: "aura-asset-ref",
11
- id,
12
- [auraAssetRefBrand]: {
13
- type: definition.type,
14
- id
15
- }
16
- };
17
- }
18
- return refs;
19
- }
1
+ import { product as rootProduct, sceneKits as rootSceneKits } from "./index.js";
2
+ export { createAuraApp, defineAuraAssets } from "./index.js";
3
+ export const product = rootProduct;
20
4
  export const sceneKits = {
21
5
  productViewer(asset, options = {}) {
22
6
  return productViewer(asset, options);
23
7
  }
24
8
  };
25
- export const product = {
26
- visualQA(nodes) {
27
- const hasModel = nodes.some((node) => node.kind === "model");
28
- const hasStage = nodes.some((node) => String(node.name ?? "").includes("studio plinth"));
29
- const problems = [
30
- ...(hasModel ? [] : ["missing typed product model node"]),
31
- ...(hasStage ? [] : ["missing studio plinth node"])
32
- ];
33
- return {
34
- score: problems.length === 0 ? 5 : 2,
35
- problems
36
- };
37
- }
38
- };
39
9
  export function productViewer(asset, options = {}) {
40
- return createProductViewerKit(asset, options);
41
- }
42
- export function createAuraApp(target, options) {
43
- const canvas = resolveCanvas(target);
44
- const scene = options.scene;
45
- const renderer = new THREE.WebGLRenderer({ canvas, antialias: true, alpha: false, preserveDrawingBuffer: true });
46
- const pixelRatio = Math.min(2, Math.max(1, options.pixelRatio ?? window.devicePixelRatio ?? 1));
47
- renderer.setPixelRatio(pixelRatio);
48
- renderer.outputColorSpace = THREE.SRGBColorSpace;
49
- renderer.toneMapping = THREE.ACESFilmicToneMapping;
50
- renderer.toneMappingExposure = 0.95;
51
- renderer.setClearColor("#071017", 1);
52
- const threeScene = new THREE.Scene();
53
- threeScene.background = new THREE.Color("#071017");
54
- const pmrem = new THREE.PMREMGenerator(renderer);
55
- const environment = pmrem.fromScene(new RoomEnvironment(), 0.04).texture;
56
- threeScene.environment = environment;
57
- const camera = new THREE.PerspectiveCamera(42, 1, 0.05, 100);
58
- camera.position.set(1.55, 1.35, 3.4);
59
- camera.lookAt(0, 0.62, -0.25);
60
- const ambient = new THREE.AmbientLight("#e8f1ff", 0.46);
61
- threeScene.add(ambient);
62
- const key = new THREE.DirectionalLight("#ffffff", 1.22);
63
- key.position.set(-2.4, 3.2, 2.2);
64
- threeScene.add(key);
65
- const fill = new THREE.DirectionalLight("#dbeafe", 0.62);
66
- fill.position.set(2.2, 1.8, 1.7);
67
- threeScene.add(fill);
68
- const rim = new THREE.DirectionalLight("#ffd9aa", 0.46);
69
- rim.position.set(2.6, 1.4, -1.4);
70
- threeScene.add(rim);
71
- buildProductStage(threeScene);
72
- const readoutElement = createProductReadout();
73
- let disposed = false;
74
- let model;
75
- let modelLoaded = false;
76
- let routePublished = false;
77
- let lastFrameTime = performance.now();
78
- const diagnostics = {
79
- backend: "three",
80
- fps: 60,
81
- drawCalls: 1,
82
- renderSize: [canvas.width, canvas.height],
83
- warnings: [],
84
- errors: [],
85
- renderer: {
86
- kind: "aura-renderer-diagnostics",
87
- backend: "three-lean-product-viewer",
88
- runtimeStatus: "loading",
89
- postprocess: {
90
- enabled: false,
91
- actualPasses: []
92
- },
93
- assets: {
94
- modelLoaded: false,
95
- assetId: scene.asset.id,
96
- assetUrl: scene.asset.url
97
- }
98
- }
99
- };
100
- const resize = () => {
101
- const parent = canvas.parentElement;
102
- const width = Math.max(1, Math.round(parent?.clientWidth || window.innerWidth || 1440));
103
- const height = Math.max(1, Math.round(parent?.clientHeight || window.innerHeight || 960));
104
- renderer.setSize(width, height, false);
105
- canvas.style.width = "100%";
106
- canvas.style.height = "100%";
107
- camera.aspect = width / Math.max(1, height);
108
- camera.updateProjectionMatrix();
109
- diagnostics.renderSize = [canvas.width, canvas.height];
110
- };
111
- resize();
112
- if (options.resize !== false)
113
- window.addEventListener("resize", resize);
114
- void loadProductModel(scene.asset)
115
- .then((loadedModel) => {
116
- if (disposed)
117
- return;
118
- model = loadedModel;
119
- threeScene.add(model);
120
- modelLoaded = true;
121
- diagnostics.renderer.runtimeStatus = "ready";
122
- diagnostics.renderer.assets.modelLoaded = true;
123
- })
124
- .catch((error) => {
125
- if (disposed)
126
- return;
127
- diagnostics.renderer.runtimeStatus = "error";
128
- diagnostics.errors = [productLoadErrorMessage(scene.asset, error)];
129
- markRouteError(scene, diagnostics);
130
- });
131
- const render = (time = performance.now()) => {
132
- if (disposed)
133
- return;
134
- const delta = Math.max(1, time - lastFrameTime);
135
- lastFrameTime = time;
136
- diagnostics.fps = Math.round(1000 / delta);
137
- if (model)
138
- model.rotation.y += 0.004;
139
- renderer.render(threeScene, camera);
140
- diagnostics.drawCalls = Math.max(1, renderer.info.render.calls);
141
- diagnostics.renderSize = [canvas.width, canvas.height];
142
- if (modelLoaded && !routePublished) {
143
- routePublished = true;
144
- markRouteReady(scene, diagnostics);
145
- }
146
- if (options.autoStart !== false)
147
- requestAnimationFrame(render);
148
- };
149
- render();
150
- return {
151
- canvas,
152
- scene,
153
- backend: "three",
154
- diagnostics: () => diagnostics,
155
- screenshot: () => ({
156
- mimeType: "image/png",
157
- dataUrl: canvas.toDataURL("image/png"),
158
- width: canvas.width,
159
- height: canvas.height
160
- }),
161
- dispose: () => {
162
- disposed = true;
163
- if (options.resize !== false)
164
- window.removeEventListener("resize", resize);
165
- readoutElement?.remove();
166
- disposeThreeScene(threeScene);
167
- environment.dispose();
168
- pmrem.dispose();
169
- renderer.dispose();
170
- }
171
- };
172
- }
173
- function createProductViewerKit(asset, options) {
174
- const scene = normalizeProductViewerScene(asset, options);
175
- const nodes = [
176
- { kind: "primitive", name: "studio plinth" },
177
- { kind: "light", name: "off camera left product softbox" },
178
- { kind: "light", name: "off camera right product fill" },
179
- { kind: "model", name: "typed sneaker asset", assetId: scene.asset.id, assetUrl: scene.asset.url },
180
- { kind: "label", name: "typed sneaker asset label", text: "typed sneaker asset | orbit | studio" }
181
- ];
182
- const evidence = [
183
- "typed GLB asset loaded through GLTFLoader",
184
- "normalized authored sneaker model scale",
185
- "dark studio plinth with off-camera softbox lighting",
186
- "lean product-viewer subpath avoids unrelated humanoid and procedural scene-kit imports"
187
- ];
188
- return {
189
- kind: "aura-scene-kit",
190
- id: "productViewer",
191
- nodes,
192
- evidence,
193
- acceptanceEvidence: evidence,
194
- diagnostics: {
195
- kind: "aura-scene-kit-diagnostics",
196
- id: "productViewer",
197
- structuralScore: 5,
198
- problems: []
199
- },
200
- scene: () => scene,
201
- toAppOptions: () => ({ scene, diagnostics: false }),
202
- customize: (next) => createProductViewerKit(asset, { ...options, ...next })
203
- };
204
- }
205
- function normalizeProductViewerScene(asset, options) {
206
- if (asset.type !== "model" || !["glb", "gltf"].includes(asset.format)) {
207
- throw new Error(`Aura3D product viewer requires a typed GLB/glTF model asset. Received ${asset.type}:${asset.format}.`);
208
- }
209
- return {
210
- kind: "aura3d-product-viewer-scene",
211
- asset,
212
- options: {
213
- captureFrame: options.captureFrame ?? 0.32
214
- }
215
- };
216
- }
217
- function resolveCanvas(target) {
218
- if (target instanceof HTMLCanvasElement)
219
- return target;
220
- const host = typeof target === "string" ? document.querySelector(target) : target;
221
- const parent = host ?? document.body;
222
- if (parent instanceof HTMLCanvasElement)
223
- return parent;
224
- let canvas = parent.querySelector("canvas[data-aura3d-lean-product-viewer]");
225
- if (!canvas) {
226
- canvas = document.createElement("canvas");
227
- canvas.dataset.aura3dLeanProductViewer = "true";
228
- canvas.style.display = "block";
229
- canvas.style.width = "100%";
230
- canvas.style.height = "100%";
231
- parent.appendChild(canvas);
232
- }
233
- return canvas;
234
- }
235
- function buildProductStage(scene) {
236
- scene.add(productBox("studio plinth", "#d8dde6", [0, 0.04, -0.25], [2.4, 0.08, 1.8], false));
237
- }
238
- function productBox(name, color, position, scale, emissive) {
239
- const material = emissive
240
- ? new THREE.MeshBasicMaterial({ color, transparent: true, opacity: 0.68 })
241
- : new THREE.MeshStandardMaterial({ color, roughness: 0.62, metalness: 0.04 });
242
- const mesh = new THREE.Mesh(new THREE.BoxGeometry(1, 1, 1), material);
243
- mesh.name = name;
244
- mesh.position.set(...position);
245
- mesh.scale.set(...scale);
246
- return mesh;
247
- }
248
- async function loadProductModel(asset) {
249
- const loader = new GLTFLoader();
250
- const url = new URL(asset.url, document.baseURI).href;
251
- const gltf = await loader.loadAsync(url);
252
- const root = gltf.scene ?? gltf.scenes?.[0];
253
- if (!root)
254
- throw new Error("GLB loaded but did not contain a scene");
255
- root.traverse((child) => {
256
- const mesh = child;
257
- if (!mesh.isMesh)
258
- return;
259
- mesh.castShadow = true;
260
- mesh.receiveShadow = true;
261
- const materials = Array.isArray(mesh.material) ? mesh.material : mesh.material ? [mesh.material] : [];
262
- for (const material of materials) {
263
- if ("roughness" in material && typeof material.roughness === "number")
264
- material.roughness = Math.min(material.roughness, 0.82);
265
- if ("metalness" in material && typeof material.metalness === "number")
266
- material.metalness = Math.max(material.metalness, 0.02);
267
- material.needsUpdate = true;
268
- }
269
- });
270
- normalizeProductModel(root);
271
- return root;
272
- }
273
- function normalizeProductModel(model) {
274
- const bounds = new THREE.Box3().setFromObject(model);
275
- const size = bounds.getSize(new THREE.Vector3());
276
- const center = bounds.getCenter(new THREE.Vector3());
277
- const scale = 1.55 / Math.max(size.x, size.y, size.z, 0.001);
278
- model.scale.setScalar(scale);
279
- model.position.sub(center.multiplyScalar(scale));
280
- model.position.y += 0.1;
281
- model.position.z -= 0.25;
282
- }
283
- function createProductReadout() {
284
- if (typeof document === "undefined")
285
- return undefined;
286
- const label = document.createElement("div");
287
- label.className = "label prompt-readout";
288
- label.textContent = "typed sneaker asset | orbit | studio";
289
- document.body.appendChild(label);
290
- return label;
291
- }
292
- function markRouteReady(scene, diagnostics) {
293
- const readout = {
294
- ready: true,
295
- status: "pass",
296
- scene: scene.kind,
297
- promptFamily: "product-viewer",
298
- diagnostics,
299
- evidence: [
300
- "lean product-viewer runtime rendered a Three.js scene",
301
- "typed GLB asset loaded and visible before readiness",
302
- "readiness is pixel-backed, not a structural QA counter"
303
- ]
304
- };
305
- window.__AURA3D_ROUTE_READY__ = readout;
306
- window.__ENGINE_READY__ = () => true;
307
- window.__ENGINE_READOUT__ = () => readout;
308
- }
309
- function markRouteError(scene, diagnostics) {
310
- const readout = {
311
- ready: false,
312
- status: "error",
313
- scene: scene.kind,
314
- promptFamily: "product-viewer",
315
- diagnostics,
316
- evidence: ["typed GLB asset failed to load before readiness"]
317
- };
318
- window.__AURA3D_ROUTE_READY__ = readout;
319
- window.__ENGINE_READY__ = () => false;
320
- window.__ENGINE_READOUT__ = () => readout;
321
- }
322
- function productLoadErrorMessage(asset, error) {
323
- const reason = error instanceof Error ? error.message : String(error);
324
- return `Aura3D product-viewer failed to load typed model "${asset.id}" from "${asset.url}": ${reason}`;
325
- }
326
- function disposeThreeScene(scene) {
327
- scene.traverse((object) => {
328
- const mesh = object;
329
- if (mesh.geometry)
330
- mesh.geometry.dispose();
331
- const material = mesh.material;
332
- if (Array.isArray(material))
333
- material.forEach((entry) => entry.dispose());
334
- else if (material)
335
- material.dispose();
336
- });
10
+ return rootSceneKits.productViewer(asset, options);
337
11
  }
338
12
  //# sourceMappingURL=product-viewer-runtime.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"product-viewer-runtime.js","sourceRoot":"","sources":["../../../../../packages/engine/src/agent-api/product-viewer-runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"product-viewer-runtime.js","sourceRoot":"","sources":["../../../../../packages/engine/src/agent-api/product-viewer-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,YAAY,CAAC;AAahF,OAAO,EACL,aAAa,EACb,gBAAgB,EACjB,MAAM,YAAY,CAAC;AAoBpB,MAAM,CAAC,MAAM,OAAO,GAAG,WAAW,CAAC;AAEnC,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,aAAa,CAAC,KAA4B,EAAE,UAAgC,EAAE;QAC5E,OAAO,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACvC,CAAC;CACO,CAAC;AAEX,MAAM,UAAU,aAAa,CAAC,KAA4B,EAAE,UAAgC,EAAE;IAC5F,OAAO,aAAa,CAAC,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACrD,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aura3d/engine",
3
- "version": "1.0.2",
3
+ "version": "1.0.3",
4
4
  "packageManager": "pnpm@11.1.3",
5
5
  "private": false,
6
6
  "type": "module",
@@ -32,7 +32,6 @@
32
32
  "dist/rendering",
33
33
  "dist/scene",
34
34
  "dist/scripting",
35
- "dist/three-compat",
36
35
  "dist/workflows",
37
36
  "templates/product-viewer",
38
37
  "templates/cinematic-scene",
@@ -84,7 +83,6 @@
84
83
  "./apps": "./dist/apps/index.js",
85
84
  "./engine": "./dist/engine/index.js",
86
85
  "./engine-runtime": "./dist/engine/index.js",
87
- "./three-compat": "./dist/three-compat/index.js",
88
86
  "./create-aura3d": "./dist/create-aura3d/index.js",
89
87
  "./scripting": "./dist/scripting/index.js",
90
88
  "./workflows": "./dist/workflows/index.js",
@@ -333,7 +331,7 @@
333
331
  "current-routes:route-health": "pnpm exec playwright test tests/browser/current-routes-route-health.spec.ts --reporter=line && pnpm exec tsx --tsconfig tsconfig.base.json tools/current-routes-route-health/index.ts",
334
332
  "current-routes:flagship": "echo 'current flagship route app was pruned; use current-routes:route-health'",
335
333
  "current-routes:threejs-parity": "pnpm exec playwright test tests/browser/current-routes-threejs-parity.spec.ts --reporter=line && pnpm exec tsx --tsconfig tsconfig.base.json tools/current-routes-threejs-parity/index.ts",
336
- "current-routes:no-three-runtime": "pnpm exec tsx --tsconfig tsconfig.base.json tools/current-routes-runtime-import-audit/index.ts",
334
+ "current-routes:no-three-runtime": "pnpm exec tsx --tsconfig tsconfig.base.json tools/current-routes-runtime-import-audit/index.ts && pnpm exec tsx --tsconfig tsconfig.base.json tools/package-no-three-runtime/index.ts",
337
335
  "current-routes:visual-review": "pnpm exec tsx --tsconfig tsconfig.base.json tools/current-routes-visual-review/index.ts",
338
336
  "current-routes:legacy-prune": "pnpm exec tsx --tsconfig tsconfig.base.json tools/current-routes-legacy-prune/index.ts",
339
337
  "current-routes:completion-audit": "pnpm exec tsx --tsconfig tsconfig.base.json tools/current-routes-completion-audit/index.ts",
@@ -437,6 +435,7 @@
437
435
  "meshoptimizer": "^1.1.1",
438
436
  "react": "^19.0.0",
439
437
  "size-limit": "^12.1.0",
438
+ "three": "^0.165.0",
440
439
  "tsx": "^4.19.4",
441
440
  "typescript": "^5.8.3",
442
441
  "vite": "^7.3.2",
@@ -445,8 +444,7 @@
445
444
  "dependencies": {
446
445
  "@loaders.gl/core": "4.4.1",
447
446
  "@loaders.gl/textures": "4.4.1",
448
- "cannon-es": "0.20.0",
449
- "three": "^0.165.0"
447
+ "cannon-es": "0.20.0"
450
448
  },
451
449
  "sideEffects": false,
452
450
  "description": "AI-native TypeScript 3D SDK for browser 3D apps, prompt-to-code scenes, GLB/glTF product viewers, WebGL/WebGPU, Vite templates, diagnostics, and deploy checks.",
@@ -17,6 +17,7 @@ const plan = definePromptPlan({
17
17
  ],
18
18
  negativeCriteria: [
19
19
  "Do not use string asset ids or invented product URLs",
20
+ "Do not ship a lone GLB without plinth, contact, fit, and rotation evidence"
20
21
  ]
21
22
  } as const);
22
23
 
@@ -1,18 +0,0 @@
1
- export type ThreeApiCategory = "core" | "math" | "cameras" | "lights" | "materials" | "geometries" | "textures" | "loaders" | "controls" | "postprocessing" | "animation" | "helpers" | "renderers" | "webxr" | "examples";
2
- export interface ThreeApiInventoryEntry {
3
- readonly name: string;
4
- readonly category: ThreeApiCategory;
5
- readonly source: "three" | "three/examples";
6
- readonly importPath: string;
7
- }
8
- export interface ThreeApiInventory {
9
- readonly threeVersion: string;
10
- readonly generatedFromPackage: string;
11
- readonly entries: readonly ThreeApiInventoryEntry[];
12
- readonly categories: Readonly<Record<ThreeApiCategory, number>>;
13
- }
14
- export declare const REQUIRED_THREE_API_CATEGORIES: readonly ThreeApiCategory[];
15
- export declare const THREE_EXAMPLES_INVENTORY: readonly ThreeApiInventoryEntry[];
16
- export declare function buildThreeApiInventory(threeVersion: string, threeExportNames: readonly string[]): ThreeApiInventory;
17
- export declare function categorizeThreeExport(name: string): ThreeApiCategory;
18
- //# sourceMappingURL=ThreeApiInventory.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ThreeApiInventory.d.ts","sourceRoot":"","sources":["../../../../packages/three-compat/src/ThreeApiInventory.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GACxB,MAAM,GACN,MAAM,GACN,SAAS,GACT,QAAQ,GACR,WAAW,GACX,YAAY,GACZ,UAAU,GACV,SAAS,GACT,UAAU,GACV,gBAAgB,GAChB,WAAW,GACX,SAAS,GACT,WAAW,GACX,OAAO,GACP,UAAU,CAAC;AAEf,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC;IACpC,QAAQ,CAAC,MAAM,EAAE,OAAO,GAAG,gBAAgB,CAAC;IAC5C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,OAAO,EAAE,SAAS,sBAAsB,EAAE,CAAC;IACpD,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC,CAAC;CACjE;AAgBD,eAAO,MAAM,6BAA6B,EAAE,SAAS,gBAAgB,EAgB3D,CAAC;AAEX,eAAO,MAAM,wBAAwB,EAAE,SAAS,sBAAsB,EA+B5D,CAAC;AAEX,wBAAgB,sBAAsB,CAAC,YAAY,EAAE,MAAM,EAAE,gBAAgB,EAAE,SAAS,MAAM,EAAE,GAAG,iBAAiB,CAoBnH;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAKpE"}
@@ -1,99 +0,0 @@
1
- const categoryMatchers = [
2
- ["cameras", [/Camera$/, /^PerspectiveCamera$/, /^OrthographicCamera$/, /^CubeCamera$/]],
3
- ["lights", [/Light$/, /^AmbientLight$/, /^DirectionalLight$/, /^PointLight$/, /^SpotLight$/, /^HemisphereLight$/, /^RectAreaLight/]],
4
- ["materials", [/Material$/, /^Mesh.*Material$/, /^Line.*Material$/, /^PointsMaterial$/, /^SpriteMaterial$/, /^ShaderMaterial$/]],
5
- ["geometries", [/Geometry$/, /^BufferGeometry$/, /^BoxGeometry$/, /^SphereGeometry$/, /^PlaneGeometry$/, /^CylinderGeometry$/, /^Torus/]],
6
- ["textures", [/Texture$/, /^DataTexture$/, /^CubeTexture$/, /^CanvasTexture$/, /^VideoTexture$/, /^FramebufferTexture$/]],
7
- ["animation", [/Animation/, /^KeyframeTrack$/, /^Skeleton$/, /^SkinnedMesh$/, /^Bone$/, /^PropertyBinding$/, /^PropertyMixer$/]],
8
- ["helpers", [/Helper$/, /^AxesHelper$/, /^GridHelper$/, /^CameraHelper$/]],
9
- ["renderers", [/Renderer$/, /^WebGL/, /^Render/]],
10
- ["webxr", [/XR/, /^WebXR/]],
11
- ["math", [/^Vector/, /^Matrix/, /^Quaternion$/, /^Euler$/, /^Color$/, /^Box/, /^Sphere$/, /^Ray$/, /^Plane$/, /^Frustum$/, /^MathUtils$/, /^Spherical$/, /^Cylindrical$/]],
12
- ["core", [/^Object3D$/, /^Scene$/, /^Mesh$/, /^Group$/, /^BufferAttribute$/, /^Instanced/, /^Raycaster$/, /^Layers$/, /^Clock$/, /^EventDispatcher$/]]
13
- ];
14
- export const REQUIRED_THREE_API_CATEGORIES = [
15
- "core",
16
- "math",
17
- "cameras",
18
- "lights",
19
- "materials",
20
- "geometries",
21
- "textures",
22
- "loaders",
23
- "controls",
24
- "postprocessing",
25
- "animation",
26
- "helpers",
27
- "renderers",
28
- "webxr",
29
- "examples"
30
- ];
31
- export const THREE_EXAMPLES_INVENTORY = [
32
- ...exampleEntries("loaders", [
33
- "GLTFLoader", "DRACOLoader", "KTX2Loader", "OBJLoader", "MTLLoader", "FBXLoader", "ColladaLoader", "PLYLoader", "STLLoader",
34
- "SVGLoader", "RGBELoader", "EXRLoader", "HDRCubeTextureLoader", "TextureLoader", "CubeTextureLoader", "LUTCubeLoader", "TGALoader", "VOXLoader"
35
- ]),
36
- ...exampleEntries("controls", [
37
- "OrbitControls", "MapControls", "TrackballControls", "FlyControls", "FirstPersonControls", "PointerLockControls", "DragControls",
38
- "TransformControls", "ArcballControls", "DeviceOrientationControls"
39
- ]),
40
- ...exampleEntries("postprocessing", [
41
- "EffectComposer", "RenderPass", "ShaderPass", "UnrealBloomPass", "SSAOPass", "TAARenderPass", "SMAAPass", "FXAAShader", "BokehPass",
42
- "OutlinePass", "FilmPass", "AfterimagePass", "GlitchPass", "DotScreenPass", "LUTPass"
43
- ]),
44
- ...exampleEntries("webxr", [
45
- "VRButton",
46
- "ARButton",
47
- "XRButton",
48
- "XRControllerModelFactory",
49
- "XRHandModelFactory",
50
- "OculusHandModel",
51
- "XRPlanes",
52
- "WebXRManager"
53
- ]),
54
- ...exampleEntries("examples", [
55
- "webgl_animation_skinning_blending", "webgl_animation_keyframes", "webgl_loader_gltf", "webgl_loader_obj_mtl",
56
- "webgl_materials_physical_clearcoat", "webgl_materials_envmaps_hdr", "webgl_postprocessing_unreal_bloom", "webgl_postprocessing_dof",
57
- "webgl_instancing_performance", "webgl_interactive_raycasting_points", "webgl_geometry_terrain", "webgl_shaders_ocean",
58
- "webgl_points_sprites", "webgl_lines_fat", "webgl_morphtargets", "webgl_shadowmap_pcss", "webgl_lights_rectarealight",
59
- "webgl_clipping", "webgl_multiple_rendertargets", "webgl2_materials_texture3d", "webgl2_multisampled_renderbuffers",
60
- "webxr_vr_ballshooter", "webxr_ar_cones"
61
- ])
62
- ];
63
- export function buildThreeApiInventory(threeVersion, threeExportNames) {
64
- const entries = [
65
- ...[...threeExportNames].sort().map((name) => ({
66
- name,
67
- category: categorizeThreeExport(name),
68
- source: "three",
69
- importPath: "three"
70
- })),
71
- ...THREE_EXAMPLES_INVENTORY
72
- ];
73
- const categories = Object.fromEntries(REQUIRED_THREE_API_CATEGORIES.map((category) => [
74
- category,
75
- entries.filter((entry) => entry.category === category).length
76
- ]));
77
- return {
78
- threeVersion,
79
- generatedFromPackage: "three",
80
- entries,
81
- categories
82
- };
83
- }
84
- export function categorizeThreeExport(name) {
85
- for (const [category, matchers] of categoryMatchers) {
86
- if (matchers.some((matcher) => matcher.test(name)))
87
- return category;
88
- }
89
- return "core";
90
- }
91
- function exampleEntries(category, names) {
92
- return names.map((name) => ({
93
- name,
94
- category,
95
- source: "three/examples",
96
- importPath: `three/examples/jsm/${category}/${name}.js`
97
- }));
98
- }
99
- //# sourceMappingURL=ThreeApiInventory.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ThreeApiInventory.js","sourceRoot":"","sources":["../../../../packages/three-compat/src/ThreeApiInventory.ts"],"names":[],"mappings":"AA+BA,MAAM,gBAAgB,GAAqD;IACzE,CAAC,SAAS,EAAE,CAAC,SAAS,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,cAAc,CAAC,CAAC;IACvF,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,cAAc,EAAE,aAAa,EAAE,mBAAmB,EAAE,gBAAgB,CAAC,CAAC;IACpI,CAAC,WAAW,EAAE,CAAC,WAAW,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,kBAAkB,CAAC,CAAC;IAChI,CAAC,YAAY,EAAE,CAAC,WAAW,EAAE,kBAAkB,EAAE,eAAe,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,QAAQ,CAAC,CAAC;IACzI,CAAC,UAAU,EAAE,CAAC,UAAU,EAAE,eAAe,EAAE,eAAe,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,sBAAsB,CAAC,CAAC;IACzH,CAAC,WAAW,EAAE,CAAC,WAAW,EAAE,iBAAiB,EAAE,YAAY,EAAE,eAAe,EAAE,QAAQ,EAAE,mBAAmB,EAAE,iBAAiB,CAAC,CAAC;IAChI,CAAC,SAAS,EAAE,CAAC,SAAS,EAAE,cAAc,EAAE,cAAc,EAAE,gBAAgB,CAAC,CAAC;IAC1E,CAAC,WAAW,EAAE,CAAC,WAAW,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;IACjD,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC3B,CAAC,MAAM,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,cAAc,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC;IAC1K,CAAC,MAAM,EAAE,CAAC,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,mBAAmB,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,mBAAmB,CAAC,CAAC;CAC9I,CAAC;AAEX,MAAM,CAAC,MAAM,6BAA6B,GAAgC;IACxE,MAAM;IACN,MAAM;IACN,SAAS;IACT,QAAQ;IACR,WAAW;IACX,YAAY;IACZ,UAAU;IACV,SAAS;IACT,UAAU;IACV,gBAAgB;IAChB,WAAW;IACX,SAAS;IACT,WAAW;IACX,OAAO;IACP,UAAU;CACF,CAAC;AAEX,MAAM,CAAC,MAAM,wBAAwB,GAAsC;IACzE,GAAG,cAAc,CAAC,SAAS,EAAE;QAC3B,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,eAAe,EAAE,WAAW,EAAE,WAAW;QAC3H,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,sBAAsB,EAAE,eAAe,EAAE,mBAAmB,EAAE,eAAe,EAAE,WAAW,EAAE,WAAW;KAChJ,CAAC;IACF,GAAG,cAAc,CAAC,UAAU,EAAE;QAC5B,eAAe,EAAE,aAAa,EAAE,mBAAmB,EAAE,aAAa,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,cAAc;QAChI,mBAAmB,EAAE,iBAAiB,EAAE,2BAA2B;KACpE,CAAC;IACF,GAAG,cAAc,CAAC,gBAAgB,EAAE;QAClC,gBAAgB,EAAE,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,UAAU,EAAE,eAAe,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW;QACnI,aAAa,EAAE,UAAU,EAAE,gBAAgB,EAAE,YAAY,EAAE,eAAe,EAAE,SAAS;KACtF,CAAC;IACF,GAAG,cAAc,CAAC,OAAO,EAAE;QACzB,UAAU;QACV,UAAU;QACV,UAAU;QACV,0BAA0B;QAC1B,oBAAoB;QACpB,iBAAiB;QACjB,UAAU;QACV,cAAc;KACf,CAAC;IACF,GAAG,cAAc,CAAC,UAAU,EAAE;QAC5B,mCAAmC,EAAE,2BAA2B,EAAE,mBAAmB,EAAE,sBAAsB;QAC7G,oCAAoC,EAAE,6BAA6B,EAAE,mCAAmC,EAAE,0BAA0B;QACpI,8BAA8B,EAAE,qCAAqC,EAAE,wBAAwB,EAAE,qBAAqB;QACtH,sBAAsB,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,4BAA4B;QACrH,gBAAgB,EAAE,8BAA8B,EAAE,4BAA4B,EAAE,mCAAmC;QACnH,sBAAsB,EAAE,gBAAgB;KACzC,CAAC;CACM,CAAC;AAEX,MAAM,UAAU,sBAAsB,CAAC,YAAoB,EAAE,gBAAmC;IAC9F,MAAM,OAAO,GAAG;QACd,GAAG,CAAC,GAAG,gBAAgB,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC,CAAC;YACrD,IAAI;YACJ,QAAQ,EAAE,qBAAqB,CAAC,IAAI,CAAC;YACrC,MAAM,EAAE,OAAgB;YACxB,UAAU,EAAE,OAAO;SACpB,CAAC,CAAC;QACH,GAAG,wBAAwB;KAC5B,CAAC;IACF,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,6BAA6B,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC;QACpF,QAAQ;QACR,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,MAAM;KAC9D,CAAC,CAA+C,CAAC;IAClD,OAAO;QACL,YAAY;QACZ,oBAAoB,EAAE,OAAO;QAC7B,OAAO;QACP,UAAU;KACX,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,IAAY;IAChD,KAAK,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,gBAAgB,EAAE,CAAC;QACpD,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAAE,OAAO,QAAQ,CAAC;IACtE,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,cAAc,CAAC,QAA0B,EAAE,KAAwB;IAC1E,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC1B,IAAI;QACJ,QAAQ;QACR,MAAM,EAAE,gBAAgB;QACxB,UAAU,EAAE,sBAAsB,QAAQ,IAAI,IAAI,KAAK;KACxD,CAAC,CAAC,CAAC;AACN,CAAC"}
@@ -1,30 +0,0 @@
1
- import type { ThreeApiCategory, ThreeApiInventory, ThreeApiInventoryEntry } from "./ThreeApiInventory";
2
- export type ThreeCompatibilityStatus = "supported" | "partial" | "planned" | "blocked" | "out-of-scope";
3
- export interface ThreeCompatibilityEntry extends ThreeApiInventoryEntry {
4
- readonly status: ThreeCompatibilityStatus;
5
- readonly a3dEquivalent: string;
6
- readonly notes: string;
7
- }
8
- export interface ThreeCompatibilityThreshold {
9
- readonly category: ThreeApiCategory | "overall";
10
- readonly minimumSupportedOrPartialPercent: number;
11
- }
12
- export interface ThreeCompatibilityMatrix {
13
- readonly schema: "a3d-three-compat-threejs-compatibility-matrix";
14
- readonly threeVersion: string;
15
- readonly totalEntries: number;
16
- readonly entries: readonly ThreeCompatibilityEntry[];
17
- readonly thresholds: readonly ThreeCompatibilityThreshold[];
18
- readonly coverage: readonly {
19
- readonly category: ThreeApiCategory | "overall";
20
- readonly total: number;
21
- readonly supportedOrPartial: number;
22
- readonly percent: number;
23
- readonly threshold: number;
24
- readonly meetsThreshold: boolean;
25
- }[];
26
- }
27
- export declare const THREE_COMPAT_COMPATIBILITY_THRESHOLDS: readonly ThreeCompatibilityThreshold[];
28
- export declare function buildInitialCompatibilityMatrix(inventory: ThreeApiInventory): ThreeCompatibilityMatrix;
29
- export declare function supportedOrPartial(status: ThreeCompatibilityStatus): boolean;
30
- //# sourceMappingURL=ThreeCompatibilityMatrix.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ThreeCompatibilityMatrix.d.ts","sourceRoot":"","sources":["../../../../packages/three-compat/src/ThreeCompatibilityMatrix.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAEvG,MAAM,MAAM,wBAAwB,GAAG,WAAW,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,cAAc,CAAC;AAExG,MAAM,WAAW,uBAAwB,SAAQ,sBAAsB;IACrE,QAAQ,CAAC,MAAM,EAAE,wBAAwB,CAAC;IAC1C,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,GAAG,SAAS,CAAC;IAChD,QAAQ,CAAC,gCAAgC,EAAE,MAAM,CAAC;CACnD;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,MAAM,EAAE,+CAA+C,CAAC;IACjE,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,SAAS,uBAAuB,EAAE,CAAC;IACrD,QAAQ,CAAC,UAAU,EAAE,SAAS,2BAA2B,EAAE,CAAC;IAC5D,QAAQ,CAAC,QAAQ,EAAE,SAAS;QAC1B,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,GAAG,SAAS,CAAC;QAChD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;QACpC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;KAClC,EAAE,CAAC;CACL;AAKD,eAAO,MAAM,qCAAqC,EAAE,SAAS,2BAA2B,EAI9E,CAAC;AAEX,wBAAgB,+BAA+B,CAAC,SAAS,EAAE,iBAAiB,GAAG,wBAAwB,CAUtG;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,wBAAwB,GAAG,OAAO,CAE5E"}