@pascal-app/core 1.1.1 → 1.1.2

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 (40) hide show
  1. package/dist/agent-operations/__fixtures__/roof-bearing-cases.d.ts +13453 -13453
  2. package/dist/agent-operations/batch.d.ts +4 -8
  3. package/dist/agent-operations/batch.d.ts.map +1 -1
  4. package/dist/agent-operations/batch.js +7 -19
  5. package/dist/agent-operations/circulation-spaces.d.ts +3431 -3431
  6. package/dist/agent-operations/index.d.ts +5715 -9
  7. package/dist/agent-operations/index.d.ts.map +1 -1
  8. package/dist/agent-operations/index.js +16 -5
  9. package/dist/agent-operations/scene-queries.d.ts +2610 -2610
  10. package/dist/agent-operations/types.d.ts +7 -0
  11. package/dist/agent-operations/types.d.ts.map +1 -1
  12. package/dist/agent-operations/usage-checks.js +2 -2
  13. package/dist/agent-operations/verify-scene.d.ts +7 -3
  14. package/dist/agent-operations/verify-scene.d.ts.map +1 -1
  15. package/dist/agent-operations/verify-scene.js +15 -7
  16. package/dist/building/__fixtures__/wall-opening-cases.d.ts +238 -238
  17. package/dist/building/level-duplication.d.ts +1274 -1274
  18. package/dist/commands/structure/zone-wall-merge.d.ts +568 -568
  19. package/dist/hooks/spatial-grid/spatial-grid-sync.d.ts +2610 -2610
  20. package/dist/lib/__fixtures__/mezzanine.d.ts +10874 -10874
  21. package/dist/lib/absorb-wall-separators.d.ts +635 -635
  22. package/dist/lib/steps.d.ts +8 -0
  23. package/dist/lib/steps.d.ts.map +1 -0
  24. package/dist/lib/steps.js +7 -0
  25. package/dist/spatial/usage-field/findings.d.ts +3 -0
  26. package/dist/spatial/usage-field/findings.d.ts.map +1 -1
  27. package/dist/spatial/usage-field/findings.js +17 -5
  28. package/dist/spatial/usage-field/measure.d.ts +3 -1
  29. package/dist/spatial/usage-field/measure.d.ts.map +1 -1
  30. package/dist/spatial/usage-field/measure.js +7 -2
  31. package/dist/store/actions/node-actions.d.ts +3431 -3431
  32. package/dist/store/scene-annotations.d.ts +1193 -1193
  33. package/dist/systems/slab/__fixtures__/floor-step.d.ts +3431 -3431
  34. package/dist/systems/slab/__fixtures__/raised-room.d.ts +2610 -2610
  35. package/dist/systems/stair/stair-opening-preview.d.ts +2610 -2610
  36. package/dist/utils/ensure-scene-openings.d.ts +6215 -6215
  37. package/dist/utils/floor-plate-migration.d.ts +635 -635
  38. package/dist/utils/owned-floor-opening-migration.d.ts +635 -635
  39. package/dist/utils/reconcile-structure-on-load.d.ts +3431 -3431
  40. package/package.json +1 -1
@@ -24,7 +24,7 @@ export declare const materializeLegacyAutoOpenings: (nodes: {
24
24
  fromIds: string[];
25
25
  } | undefined;
26
26
  } | undefined;
27
- id: `bvent_${string}`;
27
+ id: `elevator_${string}`;
28
28
  material?: {
29
29
  id?: string | undefined;
30
30
  preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
@@ -47,24 +47,31 @@ export declare const materializeLegacyAutoOpenings: (nodes: {
47
47
  bumpScale?: number | undefined;
48
48
  } | undefined;
49
49
  } | undefined;
50
+ materialPreset?: string | undefined;
50
51
  slots?: Record<string, string> | undefined;
51
- materialPreset: string;
52
- roofSegmentId?: string | undefined;
53
52
  position: [number, number, number];
54
53
  rotation: number;
55
54
  width: number;
56
55
  depth: number;
57
- height: number;
58
- hoodOverhang: number;
59
- topTaper: number;
60
- capHeight: number;
61
- capGap: number;
62
- domeCurvature: number;
63
- baseInset: number;
64
- baseHeight: number;
65
- cornerBevel: number;
66
- style: "box" | "cap" | "dome";
67
- type: "box-vent";
56
+ shaftWidth?: number | undefined;
57
+ shaftDepth?: number | undefined;
58
+ shaftWallThickness: number;
59
+ shaftStyle: "glass" | "solid";
60
+ cabHeight: number;
61
+ doorWidth: number;
62
+ doorHeight: number;
63
+ doorStyle: "center-opening" | "single-left" | "single-right";
64
+ doorPanelStyle: "glass-frame" | "segmented-panel" | "solid-panel";
65
+ fromLevelId: string | null;
66
+ toLevelId: string | null;
67
+ servedLevelIds?: string[] | undefined;
68
+ disabledLevelIds: string[];
69
+ serviceOnlyLevelIds: string[];
70
+ defaultLevelId: string | null;
71
+ speed: number;
72
+ doorDurationMs: number;
73
+ dwellMs: number;
74
+ type: "elevator";
68
75
  } | {
69
76
  object: "node";
70
77
  name?: string | undefined;
@@ -89,11 +96,21 @@ export declare const materializeLegacyAutoOpenings: (nodes: {
89
96
  fromIds: string[];
90
97
  } | undefined;
91
98
  } | undefined;
92
- id: `column_${string}`;
93
- children: string[];
99
+ type: "item";
100
+ id: `item_${string}`;
94
101
  position: [number, number, number];
95
- rotation: number;
102
+ rotation: [number, number, number];
103
+ scale: [number, number, number];
104
+ side?: "back" | "front" | undefined;
105
+ children: string[];
106
+ wallId?: string | undefined;
107
+ wallT?: number | undefined;
108
+ roofSegmentId?: string | undefined;
109
+ roofFace?: "back" | "front" | "left" | "right" | undefined;
110
+ blockFaceId?: string | undefined;
96
111
  supportSlabId?: string | undefined;
112
+ collectionIds?: `collection_${string}`[] | undefined;
113
+ slots?: Record<string, string> | undefined;
97
114
  source?: {
98
115
  kind: "script";
99
116
  meta?: {
@@ -208,104 +225,76 @@ export declare const materializeLegacyAutoOpenings: (nodes: {
208
225
  floorPlan: string;
209
226
  } | undefined;
210
227
  } | undefined;
211
- style: "cluster" | "dravidian-carved" | "faceted" | "fluted" | "lathe-turned" | "plain";
212
- crossSection: "octagonal" | "rectangular" | "round" | "sixteen-sided" | "square";
213
- height: number;
214
- radius: number;
215
- width: number;
216
- depth: number;
217
- edgeSoftness: number;
218
- baseHeight: number;
219
- capitalHeight: number;
220
- shaftProfile: "baluster" | "bulged" | "hourglass" | "straight" | "tapered";
221
- shaftTaper: number;
222
- shaftBulge: number;
223
- shaftStartScale: number;
224
- shaftEndScale: number;
225
- shaftSegmentCount: number;
226
- shaftTwistStep: number;
227
- shaftCornerRadius: number;
228
- shaftDetail: "fluted" | "lathe-turned" | "none" | "panelled" | "spiral";
229
- baseStyle: "lotus" | "none" | "panelled-pedestal" | "ribbed-lotus" | "round-rings" | "simple-square" | "square-plinth" | "stepped-square";
230
- baseWidthScale: number;
231
- baseDepthScale: number;
232
- baseTierCount: number;
233
- baseStepSpread: number;
234
- basePlinthHeightRatio: number;
235
- baseRoundBandScale: number;
236
- baseNeckScale: number;
237
- baseRoundBandCount: number;
238
- baseRibCount: number;
239
- baseCarvingLevel: number;
240
- basePanelInset: number;
241
- capitalStyle: "corinthian-leaf" | "doric" | "ionic-volute" | "leaf-carved" | "none" | "rounded" | "simple" | "simple-slab" | "south-indian-bracket" | "stepped" | "volute" | "wood-bracket";
242
- capitalWidthScale: number;
243
- capitalDepthScale: number;
244
- capitalTierCount: number;
245
- capitalStepSpread: number;
246
- capitalBandCount: number;
247
- voluteSize: number;
248
- voluteCount: number;
249
- leafCount: number;
250
- leafRows: number;
251
- bracketDepth: number;
252
- bracketTierCount: number;
253
- pendantCount: number;
254
- capitalCarvingLevel: number;
255
- ringCount: number;
256
- ringPlacement: "bottom" | "ends" | "even" | "top";
257
- ringThickness: number;
258
- ringSpread: number;
259
- fluteCount: number;
260
- fluteDepth: number;
261
- fluteWidth: number;
262
- spiralTwist: number;
263
- spiralRibCount: number;
264
- panelCount: number;
265
- panelInsetDepth: number;
266
- panelShape: "arched" | "diamond" | "rectangle";
267
- latheRingCount: number;
268
- latheRingSpacing: "bottom" | "ends" | "even" | "top";
269
- carvingLevel: number;
270
- carvingPlacement: "all" | "base" | "capital" | "shaft";
271
- lowerBandEnabled: boolean;
272
- lowerBandHeight: number;
273
- lowerBandCarvingLevel: number;
274
- dentilCount: number;
275
- beadCount: number;
276
- supportStyle: "a-frame" | "box-frame" | "k-brace" | "portal-frame" | "single-strut" | "trestle" | "tripod" | "v-frame" | "vertical" | "x-brace" | "y-frame";
277
- braceWidth: number;
278
- braceDepth: number;
279
- braceBottomSpread: number;
280
- braceTopSpread: number;
281
- bracePlateEnabled: boolean;
282
- role?: "ornament" | "post" | undefined;
283
- postBase?: "none" | "pier" | "post-base" | undefined;
284
- material?: {
285
- id?: string | undefined;
286
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
287
- properties?: {
288
- color: string;
289
- roughness: number;
290
- metalness: number;
291
- opacity: number;
292
- transparent: boolean;
293
- side: "back" | "double" | "front";
228
+ asset: {
229
+ id: string;
230
+ category: string;
231
+ name: string;
232
+ thumbnail: string;
233
+ floorPlanUrl?: string | undefined;
234
+ source: "community" | "library" | "mine";
235
+ isDraft?: boolean | undefined;
236
+ src: string;
237
+ dimensions: [number, number, number];
238
+ attachTo?: "ceiling" | "wall" | "wall-side" | undefined;
239
+ recessed?: boolean | undefined;
240
+ tags?: string[] | undefined;
241
+ functionTags?: string[] | undefined;
242
+ offset: [number, number, number];
243
+ rotation: [number, number, number];
244
+ scale: [number, number, number];
245
+ surface?: {
246
+ height: number;
294
247
  } | undefined;
295
- texture?: {
296
- url: string;
297
- repeat?: [number, number] | undefined;
298
- scale?: number | undefined;
299
- offset?: [number, number] | undefined;
300
- normalMap?: string | undefined;
301
- normalScale?: number | undefined;
302
- bumpMap?: string | undefined;
303
- bumpScale?: number | undefined;
248
+ interactive?: {
249
+ controls: ({
250
+ kind: "toggle";
251
+ label?: string | undefined;
252
+ default?: boolean | undefined;
253
+ } | {
254
+ kind: "slider";
255
+ label: string;
256
+ min: number;
257
+ max: number;
258
+ step: number;
259
+ unit?: string | undefined;
260
+ displayMode: "dial" | "slider" | "stepper";
261
+ default?: number | undefined;
262
+ } | {
263
+ kind: "temperature";
264
+ label: string;
265
+ min: number;
266
+ max: number;
267
+ unit: "C" | "F";
268
+ default?: number | undefined;
269
+ })[];
270
+ effects: ({
271
+ kind: "animation";
272
+ mode?: "ambient" | "open-close" | undefined;
273
+ control?: number | undefined;
274
+ clips: {
275
+ on?: string | undefined;
276
+ off?: string | undefined;
277
+ loop?: string | undefined;
278
+ };
279
+ } | {
280
+ kind: "light";
281
+ color: string;
282
+ intensityRange: [number, number];
283
+ distance?: number | undefined;
284
+ offset: [number, number, number];
285
+ spot?: {
286
+ direction: [number, number, number];
287
+ angle: number;
288
+ softness: number;
289
+ } | undefined;
290
+ shadows?: boolean | undefined;
291
+ glow?: {
292
+ size: number;
293
+ strength: number;
294
+ } | undefined;
295
+ })[];
304
296
  } | undefined;
305
- } | undefined;
306
- materialPreset?: string | undefined;
307
- slots?: Record<string, string> | undefined;
308
- type: "column";
297
+ };
309
298
  } | {
310
299
  object: "node";
311
300
  name?: string | undefined;
@@ -330,70 +319,74 @@ export declare const materializeLegacyAutoOpenings: (nodes: {
330
319
  fromIds: string[];
331
320
  } | undefined;
332
321
  } | undefined;
333
- id: `duct-fitting_${string}`;
334
- position: [number, number, number];
335
- rotation: [number, number, number];
336
- fittingType: "access-panel" | "coupling" | "cross" | "damper" | "elbow" | "end-cap" | "reducer" | "tee" | "transition";
337
- shape: "oval" | "rect" | "round";
338
- inletShape?: "oval" | "rect" | "round" | undefined;
339
- outletShape?: "oval" | "rect" | "round" | undefined;
340
- width: number;
341
- height: number;
342
- shape2: "oval" | "rect" | "round";
343
- width2: number;
344
- height2: number;
345
- angle: number;
346
- branchAngle: number;
347
- diameter: number;
348
- diameter2: number;
349
- ductMaterial: "duct-board" | "flex" | "sheet-metal";
350
- system: "return" | "supply";
351
- damperAngle: number;
352
- panelWidth: number;
353
- panelHeight: number;
354
- slots?: Record<string, string> | undefined;
355
- type: "duct-fitting";
356
- } | {
357
- object: "node";
358
- name?: string | undefined;
359
- parentId: string | null;
360
- visible: boolean;
361
- camera?: {
362
- position: [number, number, number];
363
- target: [number, number, number];
364
- mode: "orthographic" | "perspective";
365
- fov?: number | undefined;
366
- zoom?: number | undefined;
322
+ id: `ceiling_${string}`;
323
+ children: (`item_${string}` | `procedural-item_${string}`)[];
324
+ material?: {
325
+ id?: string | undefined;
326
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
327
+ properties?: {
328
+ color: string;
329
+ roughness: number;
330
+ metalness: number;
331
+ opacity: number;
332
+ transparent: boolean;
333
+ side: "back" | "double" | "front";
334
+ } | undefined;
335
+ texture?: {
336
+ url: string;
337
+ repeat?: [number, number] | undefined;
338
+ scale?: number | undefined;
339
+ offset?: [number, number] | undefined;
340
+ normalMap?: string | undefined;
341
+ normalScale?: number | undefined;
342
+ bumpMap?: string | undefined;
343
+ bumpScale?: number | undefined;
344
+ } | undefined;
367
345
  } | undefined;
368
- metadata: Record<string, unknown>;
369
- provenance?: {
370
- refs: {
371
- ns?: string | undefined;
372
- id: string;
373
- role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
374
- }[];
375
- lineage?: {
376
- op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
377
- fromIds: string[];
346
+ materialPreset?: string | undefined;
347
+ slots?: Record<string, string> | undefined;
348
+ polygon: [number, number][];
349
+ holes: [number, number][][];
350
+ holeMetadata: {
351
+ source: "elevator" | "floor-opening" | "manual" | "room" | "stair";
352
+ openingId?: string | undefined;
353
+ stairId?: string | undefined;
354
+ elevatorId?: string | undefined;
355
+ }[];
356
+ openingIds?: string[] | undefined;
357
+ height?: number | undefined;
358
+ buildUp?: {
359
+ presetId?: string | undefined;
360
+ finish?: {
361
+ kind: "drywall" | "plaster" | "wood-plank";
362
+ thickness: number;
363
+ name?: string | undefined;
364
+ } | undefined;
365
+ framing?: {
366
+ system: "joists" | "truss-chords";
367
+ size: "2x10" | "2x12" | "2x4" | "2x6" | "2x8";
368
+ spacing: number;
369
+ } | undefined;
370
+ decking?: {
371
+ kind: "osb" | "plywood";
372
+ thickness: number;
373
+ name?: string | undefined;
374
+ } | undefined;
375
+ insulation?: {
376
+ kind: "batt" | "blown" | "rigid";
377
+ thickness: number;
378
+ name?: string | undefined;
378
379
  } | undefined;
379
380
  } | undefined;
380
- id: `hvac-equipment_${string}`;
381
- position: [number, number, number];
382
- rotation: number;
383
- supportSlabId?: string | undefined;
384
- equipmentType: "air-handler" | "condenser" | "furnace";
385
- width: number;
386
- depth: number;
387
- height: number;
388
- supplyShape: "oval" | "rect" | "round";
389
- returnShape: "oval" | "rect" | "round";
390
- supplyDiameter: number;
391
- returnDiameter: number;
392
- supplyWidth: number;
393
- supplyHeight: number;
394
- returnWidth: number;
395
- returnHeight: number;
396
- type: "hvac-equipment";
381
+ regions?: {
382
+ id: string;
383
+ polygon: [number, number][];
384
+ finish: string | Record<string, unknown>;
385
+ }[] | undefined;
386
+ boundary?: "auto" | undefined;
387
+ zoneId?: string | undefined;
388
+ autoFromWalls: boolean;
389
+ type: "ceiling";
397
390
  } | {
398
391
  object: "node";
399
392
  name?: string | undefined;
@@ -418,17 +411,42 @@ export declare const materializeLegacyAutoOpenings: (nodes: {
418
411
  fromIds: string[];
419
412
  } | undefined;
420
413
  } | undefined;
421
- id: `pipe-fitting_${string}`;
422
- position: [number, number, number];
423
- rotation: [number, number, number];
424
- fittingType: "cleanout" | "coupling" | "cross" | "elbow" | "end-cap" | "reducer" | "sanitary-tee" | "wye";
425
- angle: number;
426
- diameter: number;
427
- diameter2: number;
428
- cleanoutStyle: "end" | "inline";
429
- pipeMaterial: "abs" | "cast-iron" | "pvc";
430
- system: "vent" | "waste";
431
- type: "pipe-fitting";
414
+ id: `construction-dimension_${string}`;
415
+ anchors: ({
416
+ kind: "feature";
417
+ reference: {
418
+ nodeId: string;
419
+ featureId: string;
420
+ parameters?: Record<string, string | number | boolean> | undefined;
421
+ };
422
+ fallback: [number, number, number];
423
+ } | [number, number, number])[];
424
+ baseline: {
425
+ origin: [number, number];
426
+ direction: [number, number];
427
+ };
428
+ chainMode: "continuous" | "point-to-point";
429
+ mode: "angular" | "arc-length" | "center-mark" | "chord" | "coordinate" | "diameter" | "linear" | "radius";
430
+ featureCount: number;
431
+ showCenterMark: boolean;
432
+ prefix: string;
433
+ suffix: string;
434
+ textOverride: string | null;
435
+ datumPolicy: "centerline" | "finish-face" | "structural-face" | "wall-face";
436
+ terminator: "architectural-tick" | "dot" | "filled-arrow" | "open-arrow";
437
+ textPosition: "above" | "centered";
438
+ imperialPrecision: "1" | "1/16" | "1/2" | "1/4" | "1/8";
439
+ metricNotation: "meters" | "millimeters";
440
+ extensionStartGap: number;
441
+ extensionOvershoot: number;
442
+ drawingType: "floor-plan" | "foundation-plan" | "reflected-ceiling-plan" | "roof-plan" | "site-plan";
443
+ drawingOverrides: {
444
+ drawingType: "floor-plan" | "foundation-plan" | "reflected-ceiling-plan" | "roof-plan" | "site-plan";
445
+ presentation: "controlled" | "omit" | "shown";
446
+ suppressedSegmentIndexes: number[];
447
+ }[];
448
+ controllingDimensionId: `construction-dimension_${string}` | null;
449
+ type: "construction-dimension";
432
450
  } | {
433
451
  object: "node";
434
452
  name?: string | undefined;
@@ -669,20 +687,29 @@ export declare const materializeLegacyAutoOpenings: (nodes: {
669
687
  fromIds: string[];
670
688
  } | undefined;
671
689
  } | undefined;
672
- type: "item";
673
- id: `item_${string}`;
674
- position: [number, number, number];
675
- rotation: [number, number, number];
676
- scale: [number, number, number];
677
- side?: "back" | "front" | undefined;
678
- children: string[];
679
- wallId?: string | undefined;
680
- wallT?: number | undefined;
681
- roofSegmentId?: string | undefined;
682
- roofFace?: "back" | "front" | "left" | "right" | undefined;
683
- blockFaceId?: string | undefined;
684
- supportSlabId?: string | undefined;
685
- collectionIds?: `collection_${string}`[] | undefined;
690
+ id: `door_${string}`;
691
+ material?: {
692
+ id?: string | undefined;
693
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
694
+ properties?: {
695
+ color: string;
696
+ roughness: number;
697
+ metalness: number;
698
+ opacity: number;
699
+ transparent: boolean;
700
+ side: "back" | "double" | "front";
701
+ } | undefined;
702
+ texture?: {
703
+ url: string;
704
+ repeat?: [number, number] | undefined;
705
+ scale?: number | undefined;
706
+ offset?: [number, number] | undefined;
707
+ normalMap?: string | undefined;
708
+ normalScale?: number | undefined;
709
+ bumpMap?: string | undefined;
710
+ bumpScale?: number | undefined;
711
+ } | undefined;
712
+ } | undefined;
686
713
  slots?: Record<string, string> | undefined;
687
714
  source?: {
688
715
  kind: "script";
@@ -789,85 +816,81 @@ export declare const materializeLegacyAutoOpenings: (nodes: {
789
816
  coverage?: number | undefined;
790
817
  uncovered?: {
791
818
  min: [number, number];
792
- max: [number, number];
793
- }[] | undefined;
794
- };
795
- images?: {
796
- artifact: string;
797
- thumbnail: string;
798
- floorPlan: string;
799
- } | undefined;
800
- } | undefined;
801
- asset: {
802
- id: string;
803
- category: string;
804
- name: string;
805
- thumbnail: string;
806
- floorPlanUrl?: string | undefined;
807
- source: "community" | "library" | "mine";
808
- isDraft?: boolean | undefined;
809
- src: string;
810
- dimensions: [number, number, number];
811
- attachTo?: "ceiling" | "wall" | "wall-side" | undefined;
812
- recessed?: boolean | undefined;
813
- tags?: string[] | undefined;
814
- functionTags?: string[] | undefined;
815
- offset: [number, number, number];
816
- rotation: [number, number, number];
817
- scale: [number, number, number];
818
- surface?: {
819
- height: number;
820
- } | undefined;
821
- interactive?: {
822
- controls: ({
823
- kind: "toggle";
824
- label?: string | undefined;
825
- default?: boolean | undefined;
826
- } | {
827
- kind: "slider";
828
- label: string;
829
- min: number;
830
- max: number;
831
- step: number;
832
- unit?: string | undefined;
833
- displayMode: "dial" | "slider" | "stepper";
834
- default?: number | undefined;
835
- } | {
836
- kind: "temperature";
837
- label: string;
838
- min: number;
839
- max: number;
840
- unit: "C" | "F";
841
- default?: number | undefined;
842
- })[];
843
- effects: ({
844
- kind: "animation";
845
- mode?: "ambient" | "open-close" | undefined;
846
- control?: number | undefined;
847
- clips: {
848
- on?: string | undefined;
849
- off?: string | undefined;
850
- loop?: string | undefined;
851
- };
852
- } | {
853
- kind: "light";
854
- color: string;
855
- intensityRange: [number, number];
856
- distance?: number | undefined;
857
- offset: [number, number, number];
858
- spot?: {
859
- direction: [number, number, number];
860
- angle: number;
861
- softness: number;
862
- } | undefined;
863
- shadows?: boolean | undefined;
864
- glow?: {
865
- size: number;
866
- strength: number;
867
- } | undefined;
868
- })[];
819
+ max: [number, number];
820
+ }[] | undefined;
821
+ };
822
+ images?: {
823
+ artifact: string;
824
+ thumbnail: string;
825
+ floorPlan: string;
869
826
  } | undefined;
870
- };
827
+ } | undefined;
828
+ position: [number, number, number];
829
+ rotation: [number, number, number];
830
+ side?: "back" | "front" | undefined;
831
+ verticalAnchor?: "floor" | "wall" | undefined;
832
+ floorThresholdVersion: 0 | 1;
833
+ wallId?: string | undefined;
834
+ roofSegmentId?: string | undefined;
835
+ roofFace?: "back" | "front" | "left" | "right" | undefined;
836
+ width: number;
837
+ height: number;
838
+ sidelightLeft?: number | undefined;
839
+ sidelightRight?: number | undefined;
840
+ transomHeight?: number | undefined;
841
+ slidingStyle?: "bypass" | "patio" | undefined;
842
+ mark?: string | undefined;
843
+ constructionType: "framed" | "masonry";
844
+ dimensionReference: "finish-opening" | "masonry-opening" | "nominal" | "rough-opening";
845
+ roughOpeningWidth?: number | undefined;
846
+ roughOpeningHeight?: number | undefined;
847
+ masonryOpeningWidth?: number | undefined;
848
+ masonryOpeningHeight?: number | undefined;
849
+ finishOpeningWidth?: number | undefined;
850
+ finishOpeningHeight?: number | undefined;
851
+ doorCategory: "garage" | "interior";
852
+ doorType: "barn" | "double" | "folding" | "french" | "garage-rollup" | "garage-sectional" | "garage-tiltup" | "hinged" | "pocket" | "sliding";
853
+ leafCount: 1 | 2 | 3 | 4 | 6 | 8;
854
+ operationState: number;
855
+ slideDirection: "left" | "right";
856
+ trackStyle: "none" | "overhead" | "pocket" | "visible";
857
+ garagePanelCount: number;
858
+ openingKind: "door" | "opening";
859
+ openingShape: "arch" | "rectangle" | "rounded";
860
+ openingRadiusMode: "all" | "individual";
861
+ openingTopRadii: [number, number];
862
+ cornerRadius: number;
863
+ archHeight: number;
864
+ openingRevealRadius: number;
865
+ frameThickness: number;
866
+ frameDepth?: number | undefined;
867
+ threshold: boolean;
868
+ thresholdHeight: number;
869
+ casingFaceA?: boolean | undefined;
870
+ casingFaceB?: boolean | undefined;
871
+ casingWidth?: number | undefined;
872
+ hingesSide: "left" | "right";
873
+ swingDirection: "inward" | "outward";
874
+ swingAngle: number;
875
+ segments: {
876
+ type: "empty" | "glass" | "panel";
877
+ heightRatio: number;
878
+ columnRatios: number[];
879
+ dividerThickness: number;
880
+ panelDepth: number;
881
+ panelInset: number;
882
+ }[];
883
+ handle: boolean;
884
+ handleStyle?: "bar" | "knob" | "lever" | "lever-curved" | "plate" | undefined;
885
+ handleHeight: number;
886
+ handleSide: "left" | "right";
887
+ contentPadding: [number, number];
888
+ doorCloser: boolean;
889
+ panicBar: boolean;
890
+ panicBarStyle: "crossbar" | "touchbar";
891
+ panicBarRods: boolean;
892
+ panicBarHeight: number;
893
+ type: "door";
871
894
  } | {
872
895
  object: "node";
873
896
  name?: string | undefined;
@@ -892,7 +915,7 @@ export declare const materializeLegacyAutoOpenings: (nodes: {
892
915
  fromIds: string[];
893
916
  } | undefined;
894
917
  } | undefined;
895
- id: `door_${string}`;
918
+ id: `window_${string}`;
896
919
  material?: {
897
920
  id?: string | undefined;
898
921
  preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
@@ -1036,14 +1059,12 @@ export declare const materializeLegacyAutoOpenings: (nodes: {
1036
1059
  verticalAnchor?: "floor" | "wall" | undefined;
1037
1060
  floorThresholdVersion: 0 | 1;
1038
1061
  wallId?: string | undefined;
1062
+ dormerId?: string | undefined;
1063
+ dormerFace?: "back" | "front" | "left" | "right" | undefined;
1039
1064
  roofSegmentId?: string | undefined;
1040
1065
  roofFace?: "back" | "front" | "left" | "right" | undefined;
1041
1066
  width: number;
1042
1067
  height: number;
1043
- sidelightLeft?: number | undefined;
1044
- sidelightRight?: number | undefined;
1045
- transomHeight?: number | undefined;
1046
- slidingStyle?: "bypass" | "patio" | undefined;
1047
1068
  mark?: string | undefined;
1048
1069
  constructionType: "framed" | "masonry";
1049
1070
  dimensionReference: "finish-opening" | "masonry-opening" | "nominal" | "rough-opening";
@@ -1053,49 +1074,52 @@ export declare const materializeLegacyAutoOpenings: (nodes: {
1053
1074
  masonryOpeningHeight?: number | undefined;
1054
1075
  finishOpeningWidth?: number | undefined;
1055
1076
  finishOpeningHeight?: number | undefined;
1056
- doorCategory: "garage" | "interior";
1057
- doorType: "barn" | "double" | "folding" | "french" | "garage-rollup" | "garage-sectional" | "garage-tiltup" | "hinged" | "pocket" | "sliding";
1058
- leafCount: 1 | 2 | 3 | 4 | 6 | 8;
1077
+ openingKind: "opening" | "window";
1078
+ windowType: "awning" | "bay" | "bow" | "casement" | "double-hung" | "fixed" | "hopper" | "louvered" | "single-hung" | "sliding" | "tilt-turn";
1059
1079
  operationState: number;
1060
- slideDirection: "left" | "right";
1061
- trackStyle: "none" | "overhead" | "pocket" | "visible";
1062
- garagePanelCount: number;
1063
- openingKind: "door" | "opening";
1080
+ openingDirection?: "inward" | "outward" | undefined;
1081
+ tiltTurnMode?: "tilt" | "turn" | undefined;
1082
+ awningDirection: "down" | "up";
1083
+ casementStyle: "french" | "single";
1084
+ hingesSide: "left" | "right";
1064
1085
  openingShape: "arch" | "rectangle" | "rounded";
1065
1086
  openingRadiusMode: "all" | "individual";
1066
- openingTopRadii: [number, number];
1087
+ openingCornerRadii: [number, number, number, number];
1067
1088
  cornerRadius: number;
1068
1089
  archHeight: number;
1069
1090
  openingRevealRadius: number;
1070
1091
  frameThickness: number;
1071
1092
  frameDepth?: number | undefined;
1072
- threshold: boolean;
1073
- thresholdHeight: number;
1093
+ windowHandle?: boolean | undefined;
1094
+ sashGrid?: boolean | undefined;
1095
+ columnRatios: number[];
1096
+ rowRatios: number[];
1097
+ columnDividerThickness: number;
1098
+ rowDividerThickness: number;
1099
+ corner?: {
1100
+ end: "end" | "start";
1101
+ partnerId: string;
1102
+ post: "none" | "post";
1103
+ } | undefined;
1104
+ sill: boolean;
1105
+ sillDepth: number;
1106
+ sillThickness: number;
1107
+ sillOverhang?: number | undefined;
1108
+ sillInterior?: boolean | undefined;
1109
+ sillInteriorDepth?: number | undefined;
1110
+ sillInteriorThickness?: number | undefined;
1111
+ sillInteriorOverhang?: number | undefined;
1112
+ shutters?: "board-batten" | "louvered" | "none" | "panel" | undefined;
1113
+ shutterWidth?: number | undefined;
1114
+ shutterOpen?: number | undefined;
1115
+ shutterSides?: "both" | "left" | "right" | undefined;
1116
+ rollerShutter?: "box" | "concealed" | "none" | undefined;
1117
+ rollerShutterBoxHeight?: number | undefined;
1118
+ rollerShutterOpen?: number | undefined;
1074
1119
  casingFaceA?: boolean | undefined;
1075
1120
  casingFaceB?: boolean | undefined;
1076
1121
  casingWidth?: number | undefined;
1077
- hingesSide: "left" | "right";
1078
- swingDirection: "inward" | "outward";
1079
- swingAngle: number;
1080
- segments: {
1081
- type: "empty" | "glass" | "panel";
1082
- heightRatio: number;
1083
- columnRatios: number[];
1084
- dividerThickness: number;
1085
- panelDepth: number;
1086
- panelInset: number;
1087
- }[];
1088
- handle: boolean;
1089
- handleStyle?: "bar" | "knob" | "lever" | "lever-curved" | "plate" | undefined;
1090
- handleHeight: number;
1091
- handleSide: "left" | "right";
1092
- contentPadding: [number, number];
1093
- doorCloser: boolean;
1094
- panicBar: boolean;
1095
- panicBarStyle: "crossbar" | "touchbar";
1096
- panicBarRods: boolean;
1097
- panicBarHeight: number;
1098
- type: "door";
1122
+ type: "window";
1099
1123
  } | {
1100
1124
  object: "node";
1101
1125
  name?: string | undefined;
@@ -1120,30 +1144,11 @@ export declare const materializeLegacyAutoOpenings: (nodes: {
1120
1144
  fromIds: string[];
1121
1145
  } | undefined;
1122
1146
  } | undefined;
1123
- id: `window_${string}`;
1124
- material?: {
1125
- id?: string | undefined;
1126
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
1127
- properties?: {
1128
- color: string;
1129
- roughness: number;
1130
- metalness: number;
1131
- opacity: number;
1132
- transparent: boolean;
1133
- side: "back" | "double" | "front";
1134
- } | undefined;
1135
- texture?: {
1136
- url: string;
1137
- repeat?: [number, number] | undefined;
1138
- scale?: number | undefined;
1139
- offset?: [number, number] | undefined;
1140
- normalMap?: string | undefined;
1141
- normalScale?: number | undefined;
1142
- bumpMap?: string | undefined;
1143
- bumpScale?: number | undefined;
1144
- } | undefined;
1145
- } | undefined;
1146
- slots?: Record<string, string> | undefined;
1147
+ id: `column_${string}`;
1148
+ children: string[];
1149
+ position: [number, number, number];
1150
+ rotation: number;
1151
+ supportSlabId?: string | undefined;
1147
1152
  source?: {
1148
1153
  kind: "script";
1149
1154
  meta?: {
@@ -1258,73 +1263,104 @@ export declare const materializeLegacyAutoOpenings: (nodes: {
1258
1263
  floorPlan: string;
1259
1264
  } | undefined;
1260
1265
  } | undefined;
1261
- position: [number, number, number];
1262
- rotation: [number, number, number];
1263
- side?: "back" | "front" | undefined;
1264
- verticalAnchor?: "floor" | "wall" | undefined;
1265
- floorThresholdVersion: 0 | 1;
1266
- wallId?: string | undefined;
1267
- dormerId?: string | undefined;
1268
- dormerFace?: "back" | "front" | "left" | "right" | undefined;
1269
- roofSegmentId?: string | undefined;
1270
- roofFace?: "back" | "front" | "left" | "right" | undefined;
1271
- width: number;
1272
- height: number;
1273
- mark?: string | undefined;
1274
- constructionType: "framed" | "masonry";
1275
- dimensionReference: "finish-opening" | "masonry-opening" | "nominal" | "rough-opening";
1276
- roughOpeningWidth?: number | undefined;
1277
- roughOpeningHeight?: number | undefined;
1278
- masonryOpeningWidth?: number | undefined;
1279
- masonryOpeningHeight?: number | undefined;
1280
- finishOpeningWidth?: number | undefined;
1281
- finishOpeningHeight?: number | undefined;
1282
- openingKind: "opening" | "window";
1283
- windowType: "awning" | "bay" | "bow" | "casement" | "double-hung" | "fixed" | "hopper" | "louvered" | "single-hung" | "sliding" | "tilt-turn";
1284
- operationState: number;
1285
- openingDirection?: "inward" | "outward" | undefined;
1286
- tiltTurnMode?: "tilt" | "turn" | undefined;
1287
- awningDirection: "down" | "up";
1288
- casementStyle: "french" | "single";
1289
- hingesSide: "left" | "right";
1290
- openingShape: "arch" | "rectangle" | "rounded";
1291
- openingRadiusMode: "all" | "individual";
1292
- openingCornerRadii: [number, number, number, number];
1293
- cornerRadius: number;
1294
- archHeight: number;
1295
- openingRevealRadius: number;
1296
- frameThickness: number;
1297
- frameDepth?: number | undefined;
1298
- windowHandle?: boolean | undefined;
1299
- sashGrid?: boolean | undefined;
1300
- columnRatios: number[];
1301
- rowRatios: number[];
1302
- columnDividerThickness: number;
1303
- rowDividerThickness: number;
1304
- corner?: {
1305
- end: "end" | "start";
1306
- partnerId: string;
1307
- post: "none" | "post";
1308
- } | undefined;
1309
- sill: boolean;
1310
- sillDepth: number;
1311
- sillThickness: number;
1312
- sillOverhang?: number | undefined;
1313
- sillInterior?: boolean | undefined;
1314
- sillInteriorDepth?: number | undefined;
1315
- sillInteriorThickness?: number | undefined;
1316
- sillInteriorOverhang?: number | undefined;
1317
- shutters?: "board-batten" | "louvered" | "none" | "panel" | undefined;
1318
- shutterWidth?: number | undefined;
1319
- shutterOpen?: number | undefined;
1320
- shutterSides?: "both" | "left" | "right" | undefined;
1321
- rollerShutter?: "box" | "concealed" | "none" | undefined;
1322
- rollerShutterBoxHeight?: number | undefined;
1323
- rollerShutterOpen?: number | undefined;
1324
- casingFaceA?: boolean | undefined;
1325
- casingFaceB?: boolean | undefined;
1326
- casingWidth?: number | undefined;
1327
- type: "window";
1266
+ style: "cluster" | "dravidian-carved" | "faceted" | "fluted" | "lathe-turned" | "plain";
1267
+ crossSection: "octagonal" | "rectangular" | "round" | "sixteen-sided" | "square";
1268
+ height: number;
1269
+ radius: number;
1270
+ width: number;
1271
+ depth: number;
1272
+ edgeSoftness: number;
1273
+ baseHeight: number;
1274
+ capitalHeight: number;
1275
+ shaftProfile: "baluster" | "bulged" | "hourglass" | "straight" | "tapered";
1276
+ shaftTaper: number;
1277
+ shaftBulge: number;
1278
+ shaftStartScale: number;
1279
+ shaftEndScale: number;
1280
+ shaftSegmentCount: number;
1281
+ shaftTwistStep: number;
1282
+ shaftCornerRadius: number;
1283
+ shaftDetail: "fluted" | "lathe-turned" | "none" | "panelled" | "spiral";
1284
+ baseStyle: "lotus" | "none" | "panelled-pedestal" | "ribbed-lotus" | "round-rings" | "simple-square" | "square-plinth" | "stepped-square";
1285
+ baseWidthScale: number;
1286
+ baseDepthScale: number;
1287
+ baseTierCount: number;
1288
+ baseStepSpread: number;
1289
+ basePlinthHeightRatio: number;
1290
+ baseRoundBandScale: number;
1291
+ baseNeckScale: number;
1292
+ baseRoundBandCount: number;
1293
+ baseRibCount: number;
1294
+ baseCarvingLevel: number;
1295
+ basePanelInset: number;
1296
+ capitalStyle: "corinthian-leaf" | "doric" | "ionic-volute" | "leaf-carved" | "none" | "rounded" | "simple" | "simple-slab" | "south-indian-bracket" | "stepped" | "volute" | "wood-bracket";
1297
+ capitalWidthScale: number;
1298
+ capitalDepthScale: number;
1299
+ capitalTierCount: number;
1300
+ capitalStepSpread: number;
1301
+ capitalBandCount: number;
1302
+ voluteSize: number;
1303
+ voluteCount: number;
1304
+ leafCount: number;
1305
+ leafRows: number;
1306
+ bracketDepth: number;
1307
+ bracketTierCount: number;
1308
+ pendantCount: number;
1309
+ capitalCarvingLevel: number;
1310
+ ringCount: number;
1311
+ ringPlacement: "bottom" | "ends" | "even" | "top";
1312
+ ringThickness: number;
1313
+ ringSpread: number;
1314
+ fluteCount: number;
1315
+ fluteDepth: number;
1316
+ fluteWidth: number;
1317
+ spiralTwist: number;
1318
+ spiralRibCount: number;
1319
+ panelCount: number;
1320
+ panelInsetDepth: number;
1321
+ panelShape: "arched" | "diamond" | "rectangle";
1322
+ latheRingCount: number;
1323
+ latheRingSpacing: "bottom" | "ends" | "even" | "top";
1324
+ carvingLevel: number;
1325
+ carvingPlacement: "all" | "base" | "capital" | "shaft";
1326
+ lowerBandEnabled: boolean;
1327
+ lowerBandHeight: number;
1328
+ lowerBandCarvingLevel: number;
1329
+ dentilCount: number;
1330
+ beadCount: number;
1331
+ supportStyle: "a-frame" | "box-frame" | "k-brace" | "portal-frame" | "single-strut" | "trestle" | "tripod" | "v-frame" | "vertical" | "x-brace" | "y-frame";
1332
+ braceWidth: number;
1333
+ braceDepth: number;
1334
+ braceBottomSpread: number;
1335
+ braceTopSpread: number;
1336
+ bracePlateEnabled: boolean;
1337
+ role?: "ornament" | "post" | undefined;
1338
+ postBase?: "none" | "pier" | "post-base" | undefined;
1339
+ material?: {
1340
+ id?: string | undefined;
1341
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
1342
+ properties?: {
1343
+ color: string;
1344
+ roughness: number;
1345
+ metalness: number;
1346
+ opacity: number;
1347
+ transparent: boolean;
1348
+ side: "back" | "double" | "front";
1349
+ } | undefined;
1350
+ texture?: {
1351
+ url: string;
1352
+ repeat?: [number, number] | undefined;
1353
+ scale?: number | undefined;
1354
+ offset?: [number, number] | undefined;
1355
+ normalMap?: string | undefined;
1356
+ normalScale?: number | undefined;
1357
+ bumpMap?: string | undefined;
1358
+ bumpScale?: number | undefined;
1359
+ } | undefined;
1360
+ } | undefined;
1361
+ materialPreset?: string | undefined;
1362
+ slots?: Record<string, string> | undefined;
1363
+ type: "column";
1328
1364
  } | {
1329
1365
  object: "node";
1330
1366
  name?: string | undefined;
@@ -2885,66 +2921,6 @@ export declare const materializeLegacyAutoOpenings: (nodes: {
2885
2921
  topElevation?: number | undefined;
2886
2922
  supportSlabId?: string | undefined;
2887
2923
  type: "beam";
2888
- } | {
2889
- object: "node";
2890
- name?: string | undefined;
2891
- parentId: string | null;
2892
- visible: boolean;
2893
- camera?: {
2894
- position: [number, number, number];
2895
- target: [number, number, number];
2896
- mode: "orthographic" | "perspective";
2897
- fov?: number | undefined;
2898
- zoom?: number | undefined;
2899
- } | undefined;
2900
- metadata: Record<string, unknown>;
2901
- provenance?: {
2902
- refs: {
2903
- ns?: string | undefined;
2904
- id: string;
2905
- role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
2906
- }[];
2907
- lineage?: {
2908
- op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
2909
- fromIds: string[];
2910
- } | undefined;
2911
- } | undefined;
2912
- id: `construction-dimension_${string}`;
2913
- anchors: ({
2914
- kind: "feature";
2915
- reference: {
2916
- nodeId: string;
2917
- featureId: string;
2918
- parameters?: Record<string, string | number | boolean> | undefined;
2919
- };
2920
- fallback: [number, number, number];
2921
- } | [number, number, number])[];
2922
- baseline: {
2923
- origin: [number, number];
2924
- direction: [number, number];
2925
- };
2926
- chainMode: "continuous" | "point-to-point";
2927
- mode: "angular" | "arc-length" | "center-mark" | "chord" | "coordinate" | "diameter" | "linear" | "radius";
2928
- featureCount: number;
2929
- showCenterMark: boolean;
2930
- prefix: string;
2931
- suffix: string;
2932
- textOverride: string | null;
2933
- datumPolicy: "centerline" | "finish-face" | "structural-face" | "wall-face";
2934
- terminator: "architectural-tick" | "dot" | "filled-arrow" | "open-arrow";
2935
- textPosition: "above" | "centered";
2936
- imperialPrecision: "1" | "1/16" | "1/2" | "1/4" | "1/8";
2937
- metricNotation: "meters" | "millimeters";
2938
- extensionStartGap: number;
2939
- extensionOvershoot: number;
2940
- drawingType: "floor-plan" | "foundation-plan" | "reflected-ceiling-plan" | "roof-plan" | "site-plan";
2941
- drawingOverrides: {
2942
- drawingType: "floor-plan" | "foundation-plan" | "reflected-ceiling-plan" | "roof-plan" | "site-plan";
2943
- presentation: "controlled" | "omit" | "shown";
2944
- suppressedSegmentIndexes: number[];
2945
- }[];
2946
- controllingDimensionId: `construction-dimension_${string}` | null;
2947
- type: "construction-dimension";
2948
2924
  } | {
2949
2925
  object: "node";
2950
2926
  name?: string | undefined;
@@ -3448,119 +3424,27 @@ export declare const materializeLegacyAutoOpenings: (nodes: {
3448
3424
  step?: number | undefined;
3449
3425
  finish: string;
3450
3426
  }[] | undefined;
3451
- floorEdgeFinish?: string | undefined;
3452
- wallMaterial?: string | undefined;
3453
- wallOverrides?: {
3454
- wallId: string;
3455
- face: "a" | "b";
3456
- finish: string;
3457
- }[] | undefined;
3458
- hasFloor?: false | undefined;
3459
- hasCeiling?: false | undefined;
3460
- spaceRole: "generic" | "room";
3461
- roomNumber: string;
3462
- enclosureStatus: "auto" | "enclosed" | "open";
3463
- floorFinish: string;
3464
- wallFinish: string;
3465
- ceilingFinish: string;
3466
- ceilingHeight: number;
3467
- occupancy: string;
3468
- clearDimensionPolicy: "finish-faces" | "inside-faces" | "none";
3469
- color: string;
3470
- metadata: Record<string, unknown>;
3471
- type: "zone";
3472
- } | {
3473
- object: "node";
3474
- name?: string | undefined;
3475
- parentId: string | null;
3476
- visible: boolean;
3477
- camera?: {
3478
- position: [number, number, number];
3479
- target: [number, number, number];
3480
- mode: "orthographic" | "perspective";
3481
- fov?: number | undefined;
3482
- zoom?: number | undefined;
3483
- } | undefined;
3484
- metadata: Record<string, unknown>;
3485
- provenance?: {
3486
- refs: {
3487
- ns?: string | undefined;
3488
- id: string;
3489
- role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
3490
- }[];
3491
- lineage?: {
3492
- op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
3493
- fromIds: string[];
3494
- } | undefined;
3495
- } | undefined;
3496
- id: `ceiling_${string}`;
3497
- children: (`item_${string}` | `procedural-item_${string}`)[];
3498
- material?: {
3499
- id?: string | undefined;
3500
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
3501
- properties?: {
3502
- color: string;
3503
- roughness: number;
3504
- metalness: number;
3505
- opacity: number;
3506
- transparent: boolean;
3507
- side: "back" | "double" | "front";
3508
- } | undefined;
3509
- texture?: {
3510
- url: string;
3511
- repeat?: [number, number] | undefined;
3512
- scale?: number | undefined;
3513
- offset?: [number, number] | undefined;
3514
- normalMap?: string | undefined;
3515
- normalScale?: number | undefined;
3516
- bumpMap?: string | undefined;
3517
- bumpScale?: number | undefined;
3518
- } | undefined;
3519
- } | undefined;
3520
- materialPreset?: string | undefined;
3521
- slots?: Record<string, string> | undefined;
3522
- polygon: [number, number][];
3523
- holes: [number, number][][];
3524
- holeMetadata: {
3525
- source: "elevator" | "floor-opening" | "manual" | "room" | "stair";
3526
- openingId?: string | undefined;
3527
- stairId?: string | undefined;
3528
- elevatorId?: string | undefined;
3529
- }[];
3530
- openingIds?: string[] | undefined;
3531
- height?: number | undefined;
3532
- buildUp?: {
3533
- presetId?: string | undefined;
3534
- finish?: {
3535
- kind: "drywall" | "plaster" | "wood-plank";
3536
- thickness: number;
3537
- name?: string | undefined;
3538
- } | undefined;
3539
- framing?: {
3540
- system: "joists" | "truss-chords";
3541
- size: "2x10" | "2x12" | "2x4" | "2x6" | "2x8";
3542
- spacing: number;
3543
- } | undefined;
3544
- decking?: {
3545
- kind: "osb" | "plywood";
3546
- thickness: number;
3547
- name?: string | undefined;
3548
- } | undefined;
3549
- insulation?: {
3550
- kind: "batt" | "blown" | "rigid";
3551
- thickness: number;
3552
- name?: string | undefined;
3553
- } | undefined;
3554
- } | undefined;
3555
- regions?: {
3556
- id: string;
3557
- polygon: [number, number][];
3558
- finish: string | Record<string, unknown>;
3427
+ floorEdgeFinish?: string | undefined;
3428
+ wallMaterial?: string | undefined;
3429
+ wallOverrides?: {
3430
+ wallId: string;
3431
+ face: "a" | "b";
3432
+ finish: string;
3559
3433
  }[] | undefined;
3560
- boundary?: "auto" | undefined;
3561
- zoneId?: string | undefined;
3562
- autoFromWalls: boolean;
3563
- type: "ceiling";
3434
+ hasFloor?: false | undefined;
3435
+ hasCeiling?: false | undefined;
3436
+ spaceRole: "generic" | "room";
3437
+ roomNumber: string;
3438
+ enclosureStatus: "auto" | "enclosed" | "open";
3439
+ floorFinish: string;
3440
+ wallFinish: string;
3441
+ ceilingFinish: string;
3442
+ ceilingHeight: number;
3443
+ occupancy: string;
3444
+ clearDimensionPolicy: "finish-faces" | "inside-faces" | "none";
3445
+ color: string;
3446
+ metadata: Record<string, unknown>;
3447
+ type: "zone";
3564
3448
  } | {
3565
3449
  object: "node";
3566
3450
  name?: string | undefined;
@@ -4166,6 +4050,53 @@ export declare const materializeLegacyAutoOpenings: (nodes: {
4166
4050
  system: "return" | "supply";
4167
4051
  slots?: Record<string, string> | undefined;
4168
4052
  type: "duct-segment";
4053
+ } | {
4054
+ object: "node";
4055
+ name?: string | undefined;
4056
+ parentId: string | null;
4057
+ visible: boolean;
4058
+ camera?: {
4059
+ position: [number, number, number];
4060
+ target: [number, number, number];
4061
+ mode: "orthographic" | "perspective";
4062
+ fov?: number | undefined;
4063
+ zoom?: number | undefined;
4064
+ } | undefined;
4065
+ metadata: Record<string, unknown>;
4066
+ provenance?: {
4067
+ refs: {
4068
+ ns?: string | undefined;
4069
+ id: string;
4070
+ role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
4071
+ }[];
4072
+ lineage?: {
4073
+ op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
4074
+ fromIds: string[];
4075
+ } | undefined;
4076
+ } | undefined;
4077
+ id: `duct-fitting_${string}`;
4078
+ position: [number, number, number];
4079
+ rotation: [number, number, number];
4080
+ fittingType: "access-panel" | "coupling" | "cross" | "damper" | "elbow" | "end-cap" | "reducer" | "tee" | "transition";
4081
+ shape: "oval" | "rect" | "round";
4082
+ inletShape?: "oval" | "rect" | "round" | undefined;
4083
+ outletShape?: "oval" | "rect" | "round" | undefined;
4084
+ width: number;
4085
+ height: number;
4086
+ shape2: "oval" | "rect" | "round";
4087
+ width2: number;
4088
+ height2: number;
4089
+ angle: number;
4090
+ branchAngle: number;
4091
+ diameter: number;
4092
+ diameter2: number;
4093
+ ductMaterial: "duct-board" | "flex" | "sheet-metal";
4094
+ system: "return" | "supply";
4095
+ damperAngle: number;
4096
+ panelWidth: number;
4097
+ panelHeight: number;
4098
+ slots?: Record<string, string> | undefined;
4099
+ type: "duct-fitting";
4169
4100
  } | {
4170
4101
  object: "node";
4171
4102
  name?: string | undefined;
@@ -4203,6 +4134,47 @@ export declare const materializeLegacyAutoOpenings: (nodes: {
4203
4134
  collarWidth: number;
4204
4135
  collarHeight: number;
4205
4136
  type: "duct-terminal";
4137
+ } | {
4138
+ object: "node";
4139
+ name?: string | undefined;
4140
+ parentId: string | null;
4141
+ visible: boolean;
4142
+ camera?: {
4143
+ position: [number, number, number];
4144
+ target: [number, number, number];
4145
+ mode: "orthographic" | "perspective";
4146
+ fov?: number | undefined;
4147
+ zoom?: number | undefined;
4148
+ } | undefined;
4149
+ metadata: Record<string, unknown>;
4150
+ provenance?: {
4151
+ refs: {
4152
+ ns?: string | undefined;
4153
+ id: string;
4154
+ role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
4155
+ }[];
4156
+ lineage?: {
4157
+ op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
4158
+ fromIds: string[];
4159
+ } | undefined;
4160
+ } | undefined;
4161
+ id: `hvac-equipment_${string}`;
4162
+ position: [number, number, number];
4163
+ rotation: number;
4164
+ supportSlabId?: string | undefined;
4165
+ equipmentType: "air-handler" | "condenser" | "furnace";
4166
+ width: number;
4167
+ depth: number;
4168
+ height: number;
4169
+ supplyShape: "oval" | "rect" | "round";
4170
+ returnShape: "oval" | "rect" | "round";
4171
+ supplyDiameter: number;
4172
+ returnDiameter: number;
4173
+ supplyWidth: number;
4174
+ supplyHeight: number;
4175
+ returnWidth: number;
4176
+ returnHeight: number;
4177
+ type: "hvac-equipment";
4206
4178
  } | {
4207
4179
  object: "node";
4208
4180
  name?: string | undefined;
@@ -4331,13 +4303,17 @@ export declare const materializeLegacyAutoOpenings: (nodes: {
4331
4303
  fromIds: string[];
4332
4304
  } | undefined;
4333
4305
  } | undefined;
4334
- id: `pipe-trap_${string}`;
4306
+ id: `pipe-fitting_${string}`;
4335
4307
  position: [number, number, number];
4336
- rotation: number;
4308
+ rotation: [number, number, number];
4309
+ fittingType: "cleanout" | "coupling" | "cross" | "elbow" | "end-cap" | "reducer" | "sanitary-tee" | "wye";
4310
+ angle: number;
4337
4311
  diameter: number;
4312
+ diameter2: number;
4313
+ cleanoutStyle: "end" | "inline";
4338
4314
  pipeMaterial: "abs" | "cast-iron" | "pvc";
4339
- armLengthM: number;
4340
- type: "pipe-trap";
4315
+ system: "vent" | "waste";
4316
+ type: "pipe-fitting";
4341
4317
  } | {
4342
4318
  object: "node";
4343
4319
  name?: string | undefined;
@@ -4362,12 +4338,13 @@ export declare const materializeLegacyAutoOpenings: (nodes: {
4362
4338
  fromIds: string[];
4363
4339
  } | undefined;
4364
4340
  } | undefined;
4365
- id: `level_${string}`;
4366
- children: (`beam_${string}` | `block_${string}` | `ceiling_${string}` | `column_${string}` | `construction-dimension_${string}` | `duct-fitting_${string}` | `duct-segment_${string}` | `duct-terminal_${string}` | `fence_${string}` | `floor-opening_${string}` | `guide_${string}` | `hvac-equipment_${string}` | `imesh_${string}` | `item_${string}` | `lineset_${string}` | `liquid-line_${string}` | `measurement_${string}` | `pipe-fitting_${string}` | `pipe-segment_${string}` | `pipe-trap_${string}` | `procedural-item_${string}` | `roof_${string}` | `scan_${string}` | `separator_${string}` | `shelf_${string}` | `slab_${string}` | `spawn_${string}` | `stair_${string}` | `structural-grid_${string}` | `wall_${string}` | `zone_${string}`)[];
4367
- level: number;
4368
- baseElevation: number;
4369
- height?: number | undefined;
4370
- type: "level";
4341
+ id: `pipe-trap_${string}`;
4342
+ position: [number, number, number];
4343
+ rotation: number;
4344
+ diameter: number;
4345
+ pipeMaterial: "abs" | "cast-iron" | "pvc";
4346
+ armLengthM: number;
4347
+ type: "pipe-trap";
4371
4348
  } | {
4372
4349
  object: "node";
4373
4350
  name?: string | undefined;
@@ -4392,54 +4369,12 @@ export declare const materializeLegacyAutoOpenings: (nodes: {
4392
4369
  fromIds: string[];
4393
4370
  } | undefined;
4394
4371
  } | undefined;
4395
- id: `elevator_${string}`;
4396
- material?: {
4397
- id?: string | undefined;
4398
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
4399
- properties?: {
4400
- color: string;
4401
- roughness: number;
4402
- metalness: number;
4403
- opacity: number;
4404
- transparent: boolean;
4405
- side: "back" | "double" | "front";
4406
- } | undefined;
4407
- texture?: {
4408
- url: string;
4409
- repeat?: [number, number] | undefined;
4410
- scale?: number | undefined;
4411
- offset?: [number, number] | undefined;
4412
- normalMap?: string | undefined;
4413
- normalScale?: number | undefined;
4414
- bumpMap?: string | undefined;
4415
- bumpScale?: number | undefined;
4416
- } | undefined;
4417
- } | undefined;
4418
- materialPreset?: string | undefined;
4419
- slots?: Record<string, string> | undefined;
4420
- position: [number, number, number];
4421
- rotation: number;
4422
- width: number;
4423
- depth: number;
4424
- shaftWidth?: number | undefined;
4425
- shaftDepth?: number | undefined;
4426
- shaftWallThickness: number;
4427
- shaftStyle: "glass" | "solid";
4428
- cabHeight: number;
4429
- doorWidth: number;
4430
- doorHeight: number;
4431
- doorStyle: "center-opening" | "single-left" | "single-right";
4432
- doorPanelStyle: "glass-frame" | "segmented-panel" | "solid-panel";
4433
- fromLevelId: string | null;
4434
- toLevelId: string | null;
4435
- servedLevelIds?: string[] | undefined;
4436
- disabledLevelIds: string[];
4437
- serviceOnlyLevelIds: string[];
4438
- defaultLevelId: string | null;
4439
- speed: number;
4440
- doorDurationMs: number;
4441
- dwellMs: number;
4442
- type: "elevator";
4372
+ id: `level_${string}`;
4373
+ children: (`beam_${string}` | `block_${string}` | `ceiling_${string}` | `column_${string}` | `construction-dimension_${string}` | `duct-fitting_${string}` | `duct-segment_${string}` | `duct-terminal_${string}` | `fence_${string}` | `floor-opening_${string}` | `guide_${string}` | `hvac-equipment_${string}` | `imesh_${string}` | `item_${string}` | `lineset_${string}` | `liquid-line_${string}` | `measurement_${string}` | `pipe-fitting_${string}` | `pipe-segment_${string}` | `pipe-trap_${string}` | `procedural-item_${string}` | `roof_${string}` | `scan_${string}` | `separator_${string}` | `shelf_${string}` | `slab_${string}` | `spawn_${string}` | `stair_${string}` | `structural-grid_${string}` | `wall_${string}` | `zone_${string}`)[];
4374
+ level: number;
4375
+ baseElevation: number;
4376
+ height?: number | undefined;
4377
+ type: "level";
4443
4378
  } | {
4444
4379
  object: "node";
4445
4380
  parentId: string | null;
@@ -4905,6 +4840,71 @@ export declare const materializeLegacyAutoOpenings: (nodes: {
4905
4840
  topFinishHeight: number;
4906
4841
  topFinishDepth: number;
4907
4842
  type: "cabinet-module";
4843
+ } | {
4844
+ object: "node";
4845
+ name?: string | undefined;
4846
+ parentId: string | null;
4847
+ visible: boolean;
4848
+ camera?: {
4849
+ position: [number, number, number];
4850
+ target: [number, number, number];
4851
+ mode: "orthographic" | "perspective";
4852
+ fov?: number | undefined;
4853
+ zoom?: number | undefined;
4854
+ } | undefined;
4855
+ metadata: Record<string, unknown>;
4856
+ provenance?: {
4857
+ refs: {
4858
+ ns?: string | undefined;
4859
+ id: string;
4860
+ role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
4861
+ }[];
4862
+ lineage?: {
4863
+ op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
4864
+ fromIds: string[];
4865
+ } | undefined;
4866
+ } | undefined;
4867
+ id: `bvent_${string}`;
4868
+ material?: {
4869
+ id?: string | undefined;
4870
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
4871
+ properties?: {
4872
+ color: string;
4873
+ roughness: number;
4874
+ metalness: number;
4875
+ opacity: number;
4876
+ transparent: boolean;
4877
+ side: "back" | "double" | "front";
4878
+ } | undefined;
4879
+ texture?: {
4880
+ url: string;
4881
+ repeat?: [number, number] | undefined;
4882
+ scale?: number | undefined;
4883
+ offset?: [number, number] | undefined;
4884
+ normalMap?: string | undefined;
4885
+ normalScale?: number | undefined;
4886
+ bumpMap?: string | undefined;
4887
+ bumpScale?: number | undefined;
4888
+ } | undefined;
4889
+ } | undefined;
4890
+ slots?: Record<string, string> | undefined;
4891
+ materialPreset: string;
4892
+ roofSegmentId?: string | undefined;
4893
+ position: [number, number, number];
4894
+ rotation: number;
4895
+ width: number;
4896
+ depth: number;
4897
+ height: number;
4898
+ hoodOverhang: number;
4899
+ topTaper: number;
4900
+ capHeight: number;
4901
+ capGap: number;
4902
+ domeCurvature: number;
4903
+ baseInset: number;
4904
+ baseHeight: number;
4905
+ cornerBevel: number;
4906
+ style: "box" | "cap" | "dome";
4907
+ type: "box-vent";
4908
4908
  } | {
4909
4909
  object: "node";
4910
4910
  name?: string | undefined;