@pascal-app/core 1.1.0 → 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 (133) hide show
  1. package/dist/agent-operations/__fixtures__/cases.d.ts +3 -2
  2. package/dist/agent-operations/__fixtures__/cases.d.ts.map +1 -1
  3. package/dist/agent-operations/__fixtures__/place-items-cases.d.ts.map +1 -1
  4. package/dist/agent-operations/__fixtures__/place-items-cases.js +28 -0
  5. package/dist/agent-operations/__fixtures__/roof-bearing-cases.d.ts +2618 -2618
  6. package/dist/agent-operations/asset-catalog.d.ts +21 -11
  7. package/dist/agent-operations/asset-catalog.d.ts.map +1 -1
  8. package/dist/agent-operations/asset-catalog.js +28 -10
  9. package/dist/agent-operations/asset-views.d.ts +8 -3
  10. package/dist/agent-operations/asset-views.d.ts.map +1 -1
  11. package/dist/agent-operations/asset-views.js +19 -3
  12. package/dist/agent-operations/batch.d.ts +4 -2
  13. package/dist/agent-operations/batch.d.ts.map +1 -1
  14. package/dist/agent-operations/batch.js +9 -6
  15. package/dist/agent-operations/catalog-asset.d.ts +15 -0
  16. package/dist/agent-operations/catalog-asset.d.ts.map +1 -0
  17. package/dist/agent-operations/catalog-asset.js +4 -0
  18. package/dist/agent-operations/circulation-spaces.d.ts +585 -585
  19. package/dist/agent-operations/design-brief.d.ts.map +1 -1
  20. package/dist/agent-operations/design-brief.js +2 -0
  21. package/dist/agent-operations/furnish-room.d.ts.map +1 -1
  22. package/dist/agent-operations/furnish-room.js +2 -1
  23. package/dist/agent-operations/index.d.ts +5716 -7
  24. package/dist/agent-operations/index.d.ts.map +1 -1
  25. package/dist/agent-operations/index.js +17 -3
  26. package/dist/agent-operations/level-reads.d.ts.map +1 -1
  27. package/dist/agent-operations/level-reads.js +4 -1
  28. package/dist/agent-operations/place-in-room.d.ts.map +1 -1
  29. package/dist/agent-operations/place-in-room.js +2 -1
  30. package/dist/agent-operations/place-items.d.ts.map +1 -1
  31. package/dist/agent-operations/place-items.js +2 -1
  32. package/dist/agent-operations/scene-queries.d.ts +3818 -3818
  33. package/dist/agent-operations/scene-view.d.ts.map +1 -1
  34. package/dist/agent-operations/scene-view.js +38 -13
  35. package/dist/agent-operations/search-assets.d.ts.map +1 -1
  36. package/dist/agent-operations/search-assets.js +6 -0
  37. package/dist/agent-operations/types.d.ts +10 -2
  38. package/dist/agent-operations/types.d.ts.map +1 -1
  39. package/dist/agent-operations/usage-checks.js +18 -3
  40. package/dist/agent-operations/verify-scene.d.ts +7 -3
  41. package/dist/agent-operations/verify-scene.d.ts.map +1 -1
  42. package/dist/agent-operations/verify-scene.js +15 -7
  43. package/dist/agent-tools/assets.js +1 -1
  44. package/dist/building/__fixtures__/wall-opening-cases.d.ts +30 -30
  45. package/dist/building/level-duplication.d.ts +3409 -3409
  46. package/dist/building/level-duplication.d.ts.map +1 -1
  47. package/dist/building/level-duplication.js +3 -1
  48. package/dist/building/wall-openings.d.ts +75 -75
  49. package/dist/commands/structure/shared.d.ts +3407 -3407
  50. package/dist/commands/structure/zone-wall-merge.d.ts +652 -652
  51. package/dist/hooks/spatial-grid/spatial-grid-sync.d.ts +3818 -3818
  52. package/dist/index.d.ts +2 -0
  53. package/dist/index.d.ts.map +1 -1
  54. package/dist/index.js +2 -0
  55. package/dist/lib/__fixtures__/mezzanine.d.ts +2003 -2003
  56. package/dist/lib/absorb-wall-separators.d.ts +1032 -1032
  57. package/dist/lib/asset-storage.d.ts.map +1 -1
  58. package/dist/lib/asset-storage.js +3 -0
  59. package/dist/lib/floor-foundation-datum.d.ts.map +1 -1
  60. package/dist/lib/floor-foundation-datum.js +5 -1
  61. package/dist/lib/floorplan/context.d.ts +95 -0
  62. package/dist/lib/floorplan/context.d.ts.map +1 -0
  63. package/dist/lib/floorplan/context.js +155 -0
  64. package/dist/lib/floorplan/index.d.ts +6 -0
  65. package/dist/lib/floorplan/index.d.ts.map +1 -0
  66. package/dist/lib/floorplan/index.js +5 -0
  67. package/dist/lib/floorplan/marks.d.ts +71 -0
  68. package/dist/lib/floorplan/marks.d.ts.map +1 -0
  69. package/dist/lib/floorplan/marks.js +157 -0
  70. package/dist/lib/floorplan/plan-math.d.ts +18 -0
  71. package/dist/lib/floorplan/plan-math.d.ts.map +1 -0
  72. package/dist/lib/floorplan/plan-math.js +82 -0
  73. package/dist/lib/floorplan/svg-paths.d.ts +17 -0
  74. package/dist/lib/floorplan/svg-paths.d.ts.map +1 -0
  75. package/dist/lib/floorplan/svg-paths.js +92 -0
  76. package/dist/lib/floorplan/wall-affordances.d.ts +31 -0
  77. package/dist/lib/floorplan/wall-affordances.d.ts.map +1 -0
  78. package/dist/lib/floorplan/wall-affordances.js +24 -0
  79. package/dist/lib/steps.d.ts +8 -0
  80. package/dist/lib/steps.d.ts.map +1 -0
  81. package/dist/lib/steps.js +7 -0
  82. package/dist/registry/__fixtures__/roof-planes.d.ts +69 -0
  83. package/dist/registry/__fixtures__/roof-planes.d.ts.map +1 -0
  84. package/dist/registry/__fixtures__/roof-planes.js +59 -0
  85. package/dist/registry/index.d.ts +2 -1
  86. package/dist/registry/index.d.ts.map +1 -1
  87. package/dist/registry/index.js +1 -0
  88. package/dist/registry/roofs.d.ts +34 -0
  89. package/dist/registry/roofs.d.ts.map +1 -0
  90. package/dist/registry/roofs.js +61 -0
  91. package/dist/registry/types.d.ts +30 -0
  92. package/dist/registry/types.d.ts.map +1 -1
  93. package/dist/registry/validate-relations.d.ts +5 -1
  94. package/dist/registry/validate-relations.d.ts.map +1 -1
  95. package/dist/registry/validate-relations.js +6 -2
  96. package/dist/schema/asset-url.d.ts +8 -0
  97. package/dist/schema/asset-url.d.ts.map +1 -1
  98. package/dist/schema/asset-url.js +17 -0
  99. package/dist/schema/nodes/roof.d.ts +1 -1
  100. package/dist/schema/nodes/roof.d.ts.map +1 -1
  101. package/dist/schema/nodes/roof.js +13 -8
  102. package/dist/schema/types.d.ts +1 -1
  103. package/dist/services/roof-level.d.ts.map +1 -1
  104. package/dist/services/roof-level.js +12 -2
  105. package/dist/services/roof-move.d.ts +4 -2
  106. package/dist/services/roof-move.d.ts.map +1 -1
  107. package/dist/services/roof-move.js +21 -9
  108. package/dist/spatial/usage-field/findings.d.ts +10 -1
  109. package/dist/spatial/usage-field/findings.d.ts.map +1 -1
  110. package/dist/spatial/usage-field/findings.js +56 -12
  111. package/dist/spatial/usage-field/measure.d.ts +3 -1
  112. package/dist/spatial/usage-field/measure.d.ts.map +1 -1
  113. package/dist/spatial/usage-field/measure.js +7 -2
  114. package/dist/spatial/usage-field/path.d.ts.map +1 -1
  115. package/dist/spatial/usage-field/path.js +28 -18
  116. package/dist/store/actions/node-actions.d.ts +2380 -2380
  117. package/dist/store/scene-annotations.d.ts +1279 -1279
  118. package/dist/systems/document-reconcile.d.ts.map +1 -1
  119. package/dist/systems/document-reconcile.js +1 -2
  120. package/dist/systems/roof/roof-elevation.d.ts +11 -6
  121. package/dist/systems/roof/roof-elevation.d.ts.map +1 -1
  122. package/dist/systems/roof/roof-elevation.js +24 -11
  123. package/dist/systems/slab/__fixtures__/floor-step.d.ts +2381 -2381
  124. package/dist/systems/slab/__fixtures__/raised-room.d.ts +3818 -3818
  125. package/dist/systems/stair/stair-opening-preview.d.ts +900 -900
  126. package/dist/utils/ensure-scene-openings.d.ts +4815 -4815
  127. package/dist/utils/floor-plate-migration.d.ts +1032 -1032
  128. package/dist/utils/owned-floor-opening-migration.d.ts +1032 -1032
  129. package/dist/utils/reconcile-structure-on-load.d.ts +2380 -2380
  130. package/dist/utils/scene-bounds.d.ts +32 -0
  131. package/dist/utils/scene-bounds.d.ts.map +1 -0
  132. package/dist/utils/scene-bounds.js +201 -0
  133. package/package.json +1 -1
@@ -32,7 +32,7 @@ export declare function withoutSceneAnnotations(nodes: Record<AnyNodeId, AnyNode
32
32
  fromIds: string[];
33
33
  } | undefined;
34
34
  } | undefined;
35
- id: `elevator_${string}`;
35
+ id: `bvent_${string}`;
36
36
  material?: {
37
37
  id?: string | undefined;
38
38
  preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
@@ -55,31 +55,24 @@ export declare function withoutSceneAnnotations(nodes: Record<AnyNodeId, AnyNode
55
55
  bumpScale?: number | undefined;
56
56
  } | undefined;
57
57
  } | undefined;
58
- materialPreset?: string | undefined;
59
58
  slots?: Record<string, string> | undefined;
59
+ materialPreset: string;
60
+ roofSegmentId?: string | undefined;
60
61
  position: [number, number, number];
61
62
  rotation: number;
62
63
  width: number;
63
64
  depth: number;
64
- shaftWidth?: number | undefined;
65
- shaftDepth?: number | undefined;
66
- shaftWallThickness: number;
67
- shaftStyle: "glass" | "solid";
68
- cabHeight: number;
69
- doorWidth: number;
70
- doorHeight: number;
71
- doorStyle: "center-opening" | "single-left" | "single-right";
72
- doorPanelStyle: "glass-frame" | "segmented-panel" | "solid-panel";
73
- fromLevelId: string | null;
74
- toLevelId: string | null;
75
- servedLevelIds?: string[] | undefined;
76
- disabledLevelIds: string[];
77
- serviceOnlyLevelIds: string[];
78
- defaultLevelId: string | null;
79
- speed: number;
80
- doorDurationMs: number;
81
- dwellMs: number;
82
- type: "elevator";
65
+ height: number;
66
+ hoodOverhang: number;
67
+ topTaper: number;
68
+ capHeight: number;
69
+ capGap: number;
70
+ domeCurvature: number;
71
+ baseInset: number;
72
+ baseHeight: number;
73
+ cornerBevel: number;
74
+ style: "box" | "cap" | "dome";
75
+ type: "box-vent";
83
76
  } | {
84
77
  object: "node";
85
78
  name?: string | undefined;
@@ -104,21 +97,11 @@ export declare function withoutSceneAnnotations(nodes: Record<AnyNodeId, AnyNode
104
97
  fromIds: string[];
105
98
  } | undefined;
106
99
  } | undefined;
107
- type: "item";
108
- id: `item_${string}`;
109
- position: [number, number, number];
110
- rotation: [number, number, number];
111
- scale: [number, number, number];
112
- side?: "back" | "front" | undefined;
100
+ id: `column_${string}`;
113
101
  children: string[];
114
- wallId?: string | undefined;
115
- wallT?: number | undefined;
116
- roofSegmentId?: string | undefined;
117
- roofFace?: "back" | "front" | "left" | "right" | undefined;
118
- blockFaceId?: string | undefined;
102
+ position: [number, number, number];
103
+ rotation: number;
119
104
  supportSlabId?: string | undefined;
120
- collectionIds?: `collection_${string}`[] | undefined;
121
- slots?: Record<string, string> | undefined;
122
105
  source?: {
123
106
  kind: "script";
124
107
  meta?: {
@@ -233,76 +216,104 @@ export declare function withoutSceneAnnotations(nodes: Record<AnyNodeId, AnyNode
233
216
  floorPlan: string;
234
217
  } | undefined;
235
218
  } | undefined;
236
- asset: {
237
- id: string;
238
- category: string;
239
- name: string;
240
- thumbnail: string;
241
- floorPlanUrl?: string | undefined;
242
- source: "community" | "library" | "mine";
243
- isDraft?: boolean | undefined;
244
- src: string;
245
- dimensions: [number, number, number];
246
- attachTo?: "ceiling" | "wall" | "wall-side" | undefined;
247
- recessed?: boolean | undefined;
248
- tags?: string[] | undefined;
249
- functionTags?: string[] | undefined;
250
- offset: [number, number, number];
251
- rotation: [number, number, number];
252
- scale: [number, number, number];
253
- surface?: {
254
- height: number;
219
+ style: "cluster" | "dravidian-carved" | "faceted" | "fluted" | "lathe-turned" | "plain";
220
+ crossSection: "octagonal" | "rectangular" | "round" | "sixteen-sided" | "square";
221
+ height: number;
222
+ radius: number;
223
+ width: number;
224
+ depth: number;
225
+ edgeSoftness: number;
226
+ baseHeight: number;
227
+ capitalHeight: number;
228
+ shaftProfile: "baluster" | "bulged" | "hourglass" | "straight" | "tapered";
229
+ shaftTaper: number;
230
+ shaftBulge: number;
231
+ shaftStartScale: number;
232
+ shaftEndScale: number;
233
+ shaftSegmentCount: number;
234
+ shaftTwistStep: number;
235
+ shaftCornerRadius: number;
236
+ shaftDetail: "fluted" | "lathe-turned" | "none" | "panelled" | "spiral";
237
+ baseStyle: "lotus" | "none" | "panelled-pedestal" | "ribbed-lotus" | "round-rings" | "simple-square" | "square-plinth" | "stepped-square";
238
+ baseWidthScale: number;
239
+ baseDepthScale: number;
240
+ baseTierCount: number;
241
+ baseStepSpread: number;
242
+ basePlinthHeightRatio: number;
243
+ baseRoundBandScale: number;
244
+ baseNeckScale: number;
245
+ baseRoundBandCount: number;
246
+ baseRibCount: number;
247
+ baseCarvingLevel: number;
248
+ basePanelInset: number;
249
+ capitalStyle: "corinthian-leaf" | "doric" | "ionic-volute" | "leaf-carved" | "none" | "rounded" | "simple" | "simple-slab" | "south-indian-bracket" | "stepped" | "volute" | "wood-bracket";
250
+ capitalWidthScale: number;
251
+ capitalDepthScale: number;
252
+ capitalTierCount: number;
253
+ capitalStepSpread: number;
254
+ capitalBandCount: number;
255
+ voluteSize: number;
256
+ voluteCount: number;
257
+ leafCount: number;
258
+ leafRows: number;
259
+ bracketDepth: number;
260
+ bracketTierCount: number;
261
+ pendantCount: number;
262
+ capitalCarvingLevel: number;
263
+ ringCount: number;
264
+ ringPlacement: "bottom" | "ends" | "even" | "top";
265
+ ringThickness: number;
266
+ ringSpread: number;
267
+ fluteCount: number;
268
+ fluteDepth: number;
269
+ fluteWidth: number;
270
+ spiralTwist: number;
271
+ spiralRibCount: number;
272
+ panelCount: number;
273
+ panelInsetDepth: number;
274
+ panelShape: "arched" | "diamond" | "rectangle";
275
+ latheRingCount: number;
276
+ latheRingSpacing: "bottom" | "ends" | "even" | "top";
277
+ carvingLevel: number;
278
+ carvingPlacement: "all" | "base" | "capital" | "shaft";
279
+ lowerBandEnabled: boolean;
280
+ lowerBandHeight: number;
281
+ lowerBandCarvingLevel: number;
282
+ dentilCount: number;
283
+ beadCount: number;
284
+ supportStyle: "a-frame" | "box-frame" | "k-brace" | "portal-frame" | "single-strut" | "trestle" | "tripod" | "v-frame" | "vertical" | "x-brace" | "y-frame";
285
+ braceWidth: number;
286
+ braceDepth: number;
287
+ braceBottomSpread: number;
288
+ braceTopSpread: number;
289
+ bracePlateEnabled: boolean;
290
+ role?: "ornament" | "post" | undefined;
291
+ postBase?: "none" | "pier" | "post-base" | undefined;
292
+ material?: {
293
+ id?: string | undefined;
294
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
295
+ properties?: {
296
+ color: string;
297
+ roughness: number;
298
+ metalness: number;
299
+ opacity: number;
300
+ transparent: boolean;
301
+ side: "back" | "double" | "front";
255
302
  } | undefined;
256
- interactive?: {
257
- controls: ({
258
- kind: "toggle";
259
- label?: string | undefined;
260
- default?: boolean | undefined;
261
- } | {
262
- kind: "slider";
263
- label: string;
264
- min: number;
265
- max: number;
266
- step: number;
267
- unit?: string | undefined;
268
- displayMode: "dial" | "slider" | "stepper";
269
- default?: number | undefined;
270
- } | {
271
- kind: "temperature";
272
- label: string;
273
- min: number;
274
- max: number;
275
- unit: "C" | "F";
276
- default?: number | undefined;
277
- })[];
278
- effects: ({
279
- kind: "animation";
280
- mode?: "ambient" | "open-close" | undefined;
281
- control?: number | undefined;
282
- clips: {
283
- on?: string | undefined;
284
- off?: string | undefined;
285
- loop?: string | undefined;
286
- };
287
- } | {
288
- kind: "light";
289
- color: string;
290
- intensityRange: [number, number];
291
- distance?: number | undefined;
292
- offset: [number, number, number];
293
- spot?: {
294
- direction: [number, number, number];
295
- angle: number;
296
- softness: number;
297
- } | undefined;
298
- shadows?: boolean | undefined;
299
- glow?: {
300
- size: number;
301
- strength: number;
302
- } | undefined;
303
- })[];
303
+ texture?: {
304
+ url: string;
305
+ repeat?: [number, number] | undefined;
306
+ scale?: number | undefined;
307
+ offset?: [number, number] | undefined;
308
+ normalMap?: string | undefined;
309
+ normalScale?: number | undefined;
310
+ bumpMap?: string | undefined;
311
+ bumpScale?: number | undefined;
304
312
  } | undefined;
305
- };
313
+ } | undefined;
314
+ materialPreset?: string | undefined;
315
+ slots?: Record<string, string> | undefined;
316
+ type: "column";
306
317
  } | {
307
318
  object: "node";
308
319
  name?: string | undefined;
@@ -327,74 +338,70 @@ export declare function withoutSceneAnnotations(nodes: Record<AnyNodeId, AnyNode
327
338
  fromIds: string[];
328
339
  } | undefined;
329
340
  } | undefined;
330
- id: `ceiling_${string}`;
331
- children: (`item_${string}` | `procedural-item_${string}`)[];
332
- material?: {
333
- id?: string | undefined;
334
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
335
- properties?: {
336
- color: string;
337
- roughness: number;
338
- metalness: number;
339
- opacity: number;
340
- transparent: boolean;
341
- side: "back" | "double" | "front";
342
- } | undefined;
343
- texture?: {
344
- url: string;
345
- repeat?: [number, number] | undefined;
346
- scale?: number | undefined;
347
- offset?: [number, number] | undefined;
348
- normalMap?: string | undefined;
349
- normalScale?: number | undefined;
350
- bumpMap?: string | undefined;
351
- bumpScale?: number | undefined;
352
- } | undefined;
353
- } | undefined;
354
- materialPreset?: string | undefined;
355
- slots?: Record<string, string> | undefined;
356
- polygon: [number, number][];
357
- holes: [number, number][][];
358
- holeMetadata: {
359
- source: "elevator" | "floor-opening" | "manual" | "room" | "stair";
360
- openingId?: string | undefined;
361
- stairId?: string | undefined;
362
- elevatorId?: string | undefined;
363
- }[];
364
- openingIds?: string[] | undefined;
365
- height?: number | undefined;
366
- buildUp?: {
367
- presetId?: string | undefined;
368
- finish?: {
369
- kind: "drywall" | "plaster" | "wood-plank";
370
- thickness: number;
371
- name?: string | undefined;
372
- } | undefined;
373
- framing?: {
374
- system: "joists" | "truss-chords";
375
- size: "2x10" | "2x12" | "2x4" | "2x6" | "2x8";
376
- spacing: number;
377
- } | undefined;
378
- decking?: {
379
- kind: "osb" | "plywood";
380
- thickness: number;
381
- name?: string | undefined;
382
- } | undefined;
383
- insulation?: {
384
- kind: "batt" | "blown" | "rigid";
385
- thickness: number;
386
- name?: string | undefined;
341
+ id: `duct-fitting_${string}`;
342
+ position: [number, number, number];
343
+ rotation: [number, number, number];
344
+ fittingType: "access-panel" | "coupling" | "cross" | "damper" | "elbow" | "end-cap" | "reducer" | "tee" | "transition";
345
+ shape: "oval" | "rect" | "round";
346
+ inletShape?: "oval" | "rect" | "round" | undefined;
347
+ outletShape?: "oval" | "rect" | "round" | undefined;
348
+ width: number;
349
+ height: number;
350
+ shape2: "oval" | "rect" | "round";
351
+ width2: number;
352
+ height2: number;
353
+ angle: number;
354
+ branchAngle: number;
355
+ diameter: number;
356
+ diameter2: number;
357
+ ductMaterial: "duct-board" | "flex" | "sheet-metal";
358
+ system: "return" | "supply";
359
+ damperAngle: number;
360
+ panelWidth: number;
361
+ panelHeight: number;
362
+ slots?: Record<string, string> | undefined;
363
+ type: "duct-fitting";
364
+ } | {
365
+ object: "node";
366
+ name?: string | undefined;
367
+ parentId: string | null;
368
+ visible: boolean;
369
+ camera?: {
370
+ position: [number, number, number];
371
+ target: [number, number, number];
372
+ mode: "orthographic" | "perspective";
373
+ fov?: number | undefined;
374
+ zoom?: number | undefined;
375
+ } | undefined;
376
+ metadata: Record<string, unknown>;
377
+ provenance?: {
378
+ refs: {
379
+ ns?: string | undefined;
380
+ id: string;
381
+ role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
382
+ }[];
383
+ lineage?: {
384
+ op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
385
+ fromIds: string[];
387
386
  } | undefined;
388
387
  } | undefined;
389
- regions?: {
390
- id: string;
391
- polygon: [number, number][];
392
- finish: string | Record<string, unknown>;
393
- }[] | undefined;
394
- boundary?: "auto" | undefined;
395
- zoneId?: string | undefined;
396
- autoFromWalls: boolean;
397
- type: "ceiling";
388
+ id: `hvac-equipment_${string}`;
389
+ position: [number, number, number];
390
+ rotation: number;
391
+ supportSlabId?: string | undefined;
392
+ equipmentType: "air-handler" | "condenser" | "furnace";
393
+ width: number;
394
+ depth: number;
395
+ height: number;
396
+ supplyShape: "oval" | "rect" | "round";
397
+ returnShape: "oval" | "rect" | "round";
398
+ supplyDiameter: number;
399
+ returnDiameter: number;
400
+ supplyWidth: number;
401
+ supplyHeight: number;
402
+ returnWidth: number;
403
+ returnHeight: number;
404
+ type: "hvac-equipment";
398
405
  } | {
399
406
  object: "node";
400
407
  name?: string | undefined;
@@ -419,42 +426,17 @@ export declare function withoutSceneAnnotations(nodes: Record<AnyNodeId, AnyNode
419
426
  fromIds: string[];
420
427
  } | undefined;
421
428
  } | undefined;
422
- id: `construction-dimension_${string}`;
423
- anchors: ({
424
- kind: "feature";
425
- reference: {
426
- nodeId: string;
427
- featureId: string;
428
- parameters?: Record<string, string | number | boolean> | undefined;
429
- };
430
- fallback: [number, number, number];
431
- } | [number, number, number])[];
432
- baseline: {
433
- origin: [number, number];
434
- direction: [number, number];
435
- };
436
- chainMode: "continuous" | "point-to-point";
437
- mode: "angular" | "arc-length" | "center-mark" | "chord" | "coordinate" | "diameter" | "linear" | "radius";
438
- featureCount: number;
439
- showCenterMark: boolean;
440
- prefix: string;
441
- suffix: string;
442
- textOverride: string | null;
443
- datumPolicy: "centerline" | "finish-face" | "structural-face" | "wall-face";
444
- terminator: "architectural-tick" | "dot" | "filled-arrow" | "open-arrow";
445
- textPosition: "above" | "centered";
446
- imperialPrecision: "1" | "1/16" | "1/2" | "1/4" | "1/8";
447
- metricNotation: "meters" | "millimeters";
448
- extensionStartGap: number;
449
- extensionOvershoot: number;
450
- drawingType: "floor-plan" | "foundation-plan" | "reflected-ceiling-plan" | "roof-plan" | "site-plan";
451
- drawingOverrides: {
452
- drawingType: "floor-plan" | "foundation-plan" | "reflected-ceiling-plan" | "roof-plan" | "site-plan";
453
- presentation: "controlled" | "omit" | "shown";
454
- suppressedSegmentIndexes: number[];
455
- }[];
456
- controllingDimensionId: `construction-dimension_${string}` | null;
457
- type: "construction-dimension";
429
+ id: `pipe-fitting_${string}`;
430
+ position: [number, number, number];
431
+ rotation: [number, number, number];
432
+ fittingType: "cleanout" | "coupling" | "cross" | "elbow" | "end-cap" | "reducer" | "sanitary-tee" | "wye";
433
+ angle: number;
434
+ diameter: number;
435
+ diameter2: number;
436
+ cleanoutStyle: "end" | "inline";
437
+ pipeMaterial: "abs" | "cast-iron" | "pvc";
438
+ system: "vent" | "waste";
439
+ type: "pipe-fitting";
458
440
  } | {
459
441
  object: "node";
460
442
  name?: string | undefined;
@@ -695,29 +677,20 @@ export declare function withoutSceneAnnotations(nodes: Record<AnyNodeId, AnyNode
695
677
  fromIds: string[];
696
678
  } | undefined;
697
679
  } | undefined;
698
- id: `door_${string}`;
699
- material?: {
700
- id?: string | undefined;
701
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
702
- properties?: {
703
- color: string;
704
- roughness: number;
705
- metalness: number;
706
- opacity: number;
707
- transparent: boolean;
708
- side: "back" | "double" | "front";
709
- } | undefined;
710
- texture?: {
711
- url: string;
712
- repeat?: [number, number] | undefined;
713
- scale?: number | undefined;
714
- offset?: [number, number] | undefined;
715
- normalMap?: string | undefined;
716
- normalScale?: number | undefined;
717
- bumpMap?: string | undefined;
718
- bumpScale?: number | undefined;
719
- } | undefined;
720
- } | undefined;
680
+ type: "item";
681
+ id: `item_${string}`;
682
+ position: [number, number, number];
683
+ rotation: [number, number, number];
684
+ scale: [number, number, number];
685
+ side?: "back" | "front" | undefined;
686
+ children: string[];
687
+ wallId?: string | undefined;
688
+ wallT?: number | undefined;
689
+ roofSegmentId?: string | undefined;
690
+ roofFace?: "back" | "front" | "left" | "right" | undefined;
691
+ blockFaceId?: string | undefined;
692
+ supportSlabId?: string | undefined;
693
+ collectionIds?: `collection_${string}`[] | undefined;
721
694
  slots?: Record<string, string> | undefined;
722
695
  source?: {
723
696
  kind: "script";
@@ -833,97 +806,101 @@ export declare function withoutSceneAnnotations(nodes: Record<AnyNodeId, AnyNode
833
806
  floorPlan: string;
834
807
  } | undefined;
835
808
  } | undefined;
836
- position: [number, number, number];
837
- rotation: [number, number, number];
838
- side?: "back" | "front" | undefined;
839
- verticalAnchor?: "floor" | "wall" | undefined;
840
- floorThresholdVersion: 0 | 1;
841
- wallId?: string | undefined;
842
- roofSegmentId?: string | undefined;
843
- roofFace?: "back" | "front" | "left" | "right" | undefined;
844
- width: number;
845
- height: number;
846
- sidelightLeft?: number | undefined;
847
- sidelightRight?: number | undefined;
848
- transomHeight?: number | undefined;
849
- slidingStyle?: "bypass" | "patio" | undefined;
850
- mark?: string | undefined;
851
- constructionType: "framed" | "masonry";
852
- dimensionReference: "finish-opening" | "masonry-opening" | "nominal" | "rough-opening";
853
- roughOpeningWidth?: number | undefined;
854
- roughOpeningHeight?: number | undefined;
855
- masonryOpeningWidth?: number | undefined;
856
- masonryOpeningHeight?: number | undefined;
857
- finishOpeningWidth?: number | undefined;
858
- finishOpeningHeight?: number | undefined;
859
- doorCategory: "garage" | "interior";
860
- doorType: "barn" | "double" | "folding" | "french" | "garage-rollup" | "garage-sectional" | "garage-tiltup" | "hinged" | "pocket" | "sliding";
861
- leafCount: 1 | 2 | 3 | 4 | 6 | 8;
862
- operationState: number;
863
- slideDirection: "left" | "right";
864
- trackStyle: "none" | "overhead" | "pocket" | "visible";
865
- garagePanelCount: number;
866
- openingKind: "door" | "opening";
867
- openingShape: "arch" | "rectangle" | "rounded";
868
- openingRadiusMode: "all" | "individual";
869
- openingTopRadii: [number, number];
870
- cornerRadius: number;
871
- archHeight: number;
872
- openingRevealRadius: number;
873
- frameThickness: number;
874
- frameDepth?: number | undefined;
875
- threshold: boolean;
876
- thresholdHeight: number;
877
- casingFaceA?: boolean | undefined;
878
- casingFaceB?: boolean | undefined;
879
- casingWidth?: number | undefined;
880
- hingesSide: "left" | "right";
881
- swingDirection: "inward" | "outward";
882
- swingAngle: number;
883
- segments: {
884
- type: "empty" | "glass" | "panel";
885
- heightRatio: number;
886
- columnRatios: number[];
887
- dividerThickness: number;
888
- panelDepth: number;
889
- panelInset: number;
890
- }[];
891
- handle: boolean;
892
- handleStyle?: "bar" | "knob" | "lever" | "lever-curved" | "plate" | undefined;
893
- handleHeight: number;
894
- handleSide: "left" | "right";
895
- contentPadding: [number, number];
896
- doorCloser: boolean;
897
- panicBar: boolean;
898
- panicBarStyle: "crossbar" | "touchbar";
899
- panicBarRods: boolean;
900
- panicBarHeight: number;
901
- type: "door";
902
- } | {
903
- object: "node";
904
- name?: string | undefined;
905
- parentId: string | null;
906
- visible: boolean;
907
- camera?: {
908
- position: [number, number, number];
909
- target: [number, number, number];
910
- mode: "orthographic" | "perspective";
911
- fov?: number | undefined;
912
- zoom?: number | undefined;
913
- } | undefined;
914
- metadata: Record<string, unknown>;
915
- provenance?: {
916
- refs: {
917
- ns?: string | undefined;
918
- id: string;
919
- role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
920
- }[];
809
+ asset: {
810
+ id: string;
811
+ category: string;
812
+ name: string;
813
+ thumbnail: string;
814
+ floorPlanUrl?: string | undefined;
815
+ source: "community" | "library" | "mine";
816
+ isDraft?: boolean | undefined;
817
+ src: string;
818
+ dimensions: [number, number, number];
819
+ attachTo?: "ceiling" | "wall" | "wall-side" | undefined;
820
+ recessed?: boolean | undefined;
821
+ tags?: string[] | undefined;
822
+ functionTags?: string[] | undefined;
823
+ offset: [number, number, number];
824
+ rotation: [number, number, number];
825
+ scale: [number, number, number];
826
+ surface?: {
827
+ height: number;
828
+ } | undefined;
829
+ interactive?: {
830
+ controls: ({
831
+ kind: "toggle";
832
+ label?: string | undefined;
833
+ default?: boolean | undefined;
834
+ } | {
835
+ kind: "slider";
836
+ label: string;
837
+ min: number;
838
+ max: number;
839
+ step: number;
840
+ unit?: string | undefined;
841
+ displayMode: "dial" | "slider" | "stepper";
842
+ default?: number | undefined;
843
+ } | {
844
+ kind: "temperature";
845
+ label: string;
846
+ min: number;
847
+ max: number;
848
+ unit: "C" | "F";
849
+ default?: number | undefined;
850
+ })[];
851
+ effects: ({
852
+ kind: "animation";
853
+ mode?: "ambient" | "open-close" | undefined;
854
+ control?: number | undefined;
855
+ clips: {
856
+ on?: string | undefined;
857
+ off?: string | undefined;
858
+ loop?: string | undefined;
859
+ };
860
+ } | {
861
+ kind: "light";
862
+ color: string;
863
+ intensityRange: [number, number];
864
+ distance?: number | undefined;
865
+ offset: [number, number, number];
866
+ spot?: {
867
+ direction: [number, number, number];
868
+ angle: number;
869
+ softness: number;
870
+ } | undefined;
871
+ shadows?: boolean | undefined;
872
+ glow?: {
873
+ size: number;
874
+ strength: number;
875
+ } | undefined;
876
+ })[];
877
+ } | undefined;
878
+ };
879
+ } | {
880
+ object: "node";
881
+ name?: string | undefined;
882
+ parentId: string | null;
883
+ visible: boolean;
884
+ camera?: {
885
+ position: [number, number, number];
886
+ target: [number, number, number];
887
+ mode: "orthographic" | "perspective";
888
+ fov?: number | undefined;
889
+ zoom?: number | undefined;
890
+ } | undefined;
891
+ metadata: Record<string, unknown>;
892
+ provenance?: {
893
+ refs: {
894
+ ns?: string | undefined;
895
+ id: string;
896
+ role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
897
+ }[];
921
898
  lineage?: {
922
899
  op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
923
900
  fromIds: string[];
924
901
  } | undefined;
925
902
  } | undefined;
926
- id: `window_${string}`;
903
+ id: `door_${string}`;
927
904
  material?: {
928
905
  id?: string | undefined;
929
906
  preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
@@ -1067,12 +1044,14 @@ export declare function withoutSceneAnnotations(nodes: Record<AnyNodeId, AnyNode
1067
1044
  verticalAnchor?: "floor" | "wall" | undefined;
1068
1045
  floorThresholdVersion: 0 | 1;
1069
1046
  wallId?: string | undefined;
1070
- dormerId?: string | undefined;
1071
- dormerFace?: "back" | "front" | "left" | "right" | undefined;
1072
1047
  roofSegmentId?: string | undefined;
1073
1048
  roofFace?: "back" | "front" | "left" | "right" | undefined;
1074
1049
  width: number;
1075
1050
  height: number;
1051
+ sidelightLeft?: number | undefined;
1052
+ sidelightRight?: number | undefined;
1053
+ transomHeight?: number | undefined;
1054
+ slidingStyle?: "bypass" | "patio" | undefined;
1076
1055
  mark?: string | undefined;
1077
1056
  constructionType: "framed" | "masonry";
1078
1057
  dimensionReference: "finish-opening" | "masonry-opening" | "nominal" | "rough-opening";
@@ -1082,52 +1061,49 @@ export declare function withoutSceneAnnotations(nodes: Record<AnyNodeId, AnyNode
1082
1061
  masonryOpeningHeight?: number | undefined;
1083
1062
  finishOpeningWidth?: number | undefined;
1084
1063
  finishOpeningHeight?: number | undefined;
1085
- openingKind: "opening" | "window";
1086
- windowType: "awning" | "bay" | "bow" | "casement" | "double-hung" | "fixed" | "hopper" | "louvered" | "single-hung" | "sliding" | "tilt-turn";
1064
+ doorCategory: "garage" | "interior";
1065
+ doorType: "barn" | "double" | "folding" | "french" | "garage-rollup" | "garage-sectional" | "garage-tiltup" | "hinged" | "pocket" | "sliding";
1066
+ leafCount: 1 | 2 | 3 | 4 | 6 | 8;
1087
1067
  operationState: number;
1088
- openingDirection?: "inward" | "outward" | undefined;
1089
- tiltTurnMode?: "tilt" | "turn" | undefined;
1090
- awningDirection: "down" | "up";
1091
- casementStyle: "french" | "single";
1092
- hingesSide: "left" | "right";
1068
+ slideDirection: "left" | "right";
1069
+ trackStyle: "none" | "overhead" | "pocket" | "visible";
1070
+ garagePanelCount: number;
1071
+ openingKind: "door" | "opening";
1093
1072
  openingShape: "arch" | "rectangle" | "rounded";
1094
1073
  openingRadiusMode: "all" | "individual";
1095
- openingCornerRadii: [number, number, number, number];
1074
+ openingTopRadii: [number, number];
1096
1075
  cornerRadius: number;
1097
1076
  archHeight: number;
1098
1077
  openingRevealRadius: number;
1099
1078
  frameThickness: number;
1100
1079
  frameDepth?: number | undefined;
1101
- windowHandle?: boolean | undefined;
1102
- sashGrid?: boolean | undefined;
1103
- columnRatios: number[];
1104
- rowRatios: number[];
1105
- columnDividerThickness: number;
1106
- rowDividerThickness: number;
1107
- corner?: {
1108
- end: "end" | "start";
1109
- partnerId: string;
1110
- post: "none" | "post";
1111
- } | undefined;
1112
- sill: boolean;
1113
- sillDepth: number;
1114
- sillThickness: number;
1115
- sillOverhang?: number | undefined;
1116
- sillInterior?: boolean | undefined;
1117
- sillInteriorDepth?: number | undefined;
1118
- sillInteriorThickness?: number | undefined;
1119
- sillInteriorOverhang?: number | undefined;
1120
- shutters?: "board-batten" | "louvered" | "none" | "panel" | undefined;
1121
- shutterWidth?: number | undefined;
1122
- shutterOpen?: number | undefined;
1123
- shutterSides?: "both" | "left" | "right" | undefined;
1124
- rollerShutter?: "box" | "concealed" | "none" | undefined;
1125
- rollerShutterBoxHeight?: number | undefined;
1126
- rollerShutterOpen?: number | undefined;
1080
+ threshold: boolean;
1081
+ thresholdHeight: number;
1127
1082
  casingFaceA?: boolean | undefined;
1128
1083
  casingFaceB?: boolean | undefined;
1129
1084
  casingWidth?: number | undefined;
1130
- type: "window";
1085
+ hingesSide: "left" | "right";
1086
+ swingDirection: "inward" | "outward";
1087
+ swingAngle: number;
1088
+ segments: {
1089
+ type: "empty" | "glass" | "panel";
1090
+ heightRatio: number;
1091
+ columnRatios: number[];
1092
+ dividerThickness: number;
1093
+ panelDepth: number;
1094
+ panelInset: number;
1095
+ }[];
1096
+ handle: boolean;
1097
+ handleStyle?: "bar" | "knob" | "lever" | "lever-curved" | "plate" | undefined;
1098
+ handleHeight: number;
1099
+ handleSide: "left" | "right";
1100
+ contentPadding: [number, number];
1101
+ doorCloser: boolean;
1102
+ panicBar: boolean;
1103
+ panicBarStyle: "crossbar" | "touchbar";
1104
+ panicBarRods: boolean;
1105
+ panicBarHeight: number;
1106
+ type: "door";
1131
1107
  } | {
1132
1108
  object: "node";
1133
1109
  name?: string | undefined;
@@ -1152,11 +1128,30 @@ export declare function withoutSceneAnnotations(nodes: Record<AnyNodeId, AnyNode
1152
1128
  fromIds: string[];
1153
1129
  } | undefined;
1154
1130
  } | undefined;
1155
- id: `column_${string}`;
1156
- children: string[];
1157
- position: [number, number, number];
1158
- rotation: number;
1159
- supportSlabId?: string | undefined;
1131
+ id: `window_${string}`;
1132
+ material?: {
1133
+ id?: string | undefined;
1134
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
1135
+ properties?: {
1136
+ color: string;
1137
+ roughness: number;
1138
+ metalness: number;
1139
+ opacity: number;
1140
+ transparent: boolean;
1141
+ side: "back" | "double" | "front";
1142
+ } | undefined;
1143
+ texture?: {
1144
+ url: string;
1145
+ repeat?: [number, number] | undefined;
1146
+ scale?: number | undefined;
1147
+ offset?: [number, number] | undefined;
1148
+ normalMap?: string | undefined;
1149
+ normalScale?: number | undefined;
1150
+ bumpMap?: string | undefined;
1151
+ bumpScale?: number | undefined;
1152
+ } | undefined;
1153
+ } | undefined;
1154
+ slots?: Record<string, string> | undefined;
1160
1155
  source?: {
1161
1156
  kind: "script";
1162
1157
  meta?: {
@@ -1271,104 +1266,73 @@ export declare function withoutSceneAnnotations(nodes: Record<AnyNodeId, AnyNode
1271
1266
  floorPlan: string;
1272
1267
  } | undefined;
1273
1268
  } | undefined;
1274
- style: "cluster" | "dravidian-carved" | "faceted" | "fluted" | "lathe-turned" | "plain";
1275
- crossSection: "octagonal" | "rectangular" | "round" | "sixteen-sided" | "square";
1276
- height: number;
1277
- radius: number;
1269
+ position: [number, number, number];
1270
+ rotation: [number, number, number];
1271
+ side?: "back" | "front" | undefined;
1272
+ verticalAnchor?: "floor" | "wall" | undefined;
1273
+ floorThresholdVersion: 0 | 1;
1274
+ wallId?: string | undefined;
1275
+ dormerId?: string | undefined;
1276
+ dormerFace?: "back" | "front" | "left" | "right" | undefined;
1277
+ roofSegmentId?: string | undefined;
1278
+ roofFace?: "back" | "front" | "left" | "right" | undefined;
1278
1279
  width: number;
1279
- depth: number;
1280
- edgeSoftness: number;
1281
- baseHeight: number;
1282
- capitalHeight: number;
1283
- shaftProfile: "baluster" | "bulged" | "hourglass" | "straight" | "tapered";
1284
- shaftTaper: number;
1285
- shaftBulge: number;
1286
- shaftStartScale: number;
1287
- shaftEndScale: number;
1288
- shaftSegmentCount: number;
1289
- shaftTwistStep: number;
1290
- shaftCornerRadius: number;
1291
- shaftDetail: "fluted" | "lathe-turned" | "none" | "panelled" | "spiral";
1292
- baseStyle: "lotus" | "none" | "panelled-pedestal" | "ribbed-lotus" | "round-rings" | "simple-square" | "square-plinth" | "stepped-square";
1293
- baseWidthScale: number;
1294
- baseDepthScale: number;
1295
- baseTierCount: number;
1296
- baseStepSpread: number;
1297
- basePlinthHeightRatio: number;
1298
- baseRoundBandScale: number;
1299
- baseNeckScale: number;
1300
- baseRoundBandCount: number;
1301
- baseRibCount: number;
1302
- baseCarvingLevel: number;
1303
- basePanelInset: number;
1304
- capitalStyle: "corinthian-leaf" | "doric" | "ionic-volute" | "leaf-carved" | "none" | "rounded" | "simple" | "simple-slab" | "south-indian-bracket" | "stepped" | "volute" | "wood-bracket";
1305
- capitalWidthScale: number;
1306
- capitalDepthScale: number;
1307
- capitalTierCount: number;
1308
- capitalStepSpread: number;
1309
- capitalBandCount: number;
1310
- voluteSize: number;
1311
- voluteCount: number;
1312
- leafCount: number;
1313
- leafRows: number;
1314
- bracketDepth: number;
1315
- bracketTierCount: number;
1316
- pendantCount: number;
1317
- capitalCarvingLevel: number;
1318
- ringCount: number;
1319
- ringPlacement: "bottom" | "ends" | "even" | "top";
1320
- ringThickness: number;
1321
- ringSpread: number;
1322
- fluteCount: number;
1323
- fluteDepth: number;
1324
- fluteWidth: number;
1325
- spiralTwist: number;
1326
- spiralRibCount: number;
1327
- panelCount: number;
1328
- panelInsetDepth: number;
1329
- panelShape: "arched" | "diamond" | "rectangle";
1330
- latheRingCount: number;
1331
- latheRingSpacing: "bottom" | "ends" | "even" | "top";
1332
- carvingLevel: number;
1333
- carvingPlacement: "all" | "base" | "capital" | "shaft";
1334
- lowerBandEnabled: boolean;
1335
- lowerBandHeight: number;
1336
- lowerBandCarvingLevel: number;
1337
- dentilCount: number;
1338
- beadCount: number;
1339
- supportStyle: "a-frame" | "box-frame" | "k-brace" | "portal-frame" | "single-strut" | "trestle" | "tripod" | "v-frame" | "vertical" | "x-brace" | "y-frame";
1340
- braceWidth: number;
1341
- braceDepth: number;
1342
- braceBottomSpread: number;
1343
- braceTopSpread: number;
1344
- bracePlateEnabled: boolean;
1345
- role?: "ornament" | "post" | undefined;
1346
- postBase?: "none" | "pier" | "post-base" | undefined;
1347
- material?: {
1348
- id?: string | undefined;
1349
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
1350
- properties?: {
1351
- color: string;
1352
- roughness: number;
1353
- metalness: number;
1354
- opacity: number;
1355
- transparent: boolean;
1356
- side: "back" | "double" | "front";
1357
- } | undefined;
1358
- texture?: {
1359
- url: string;
1360
- repeat?: [number, number] | undefined;
1361
- scale?: number | undefined;
1362
- offset?: [number, number] | undefined;
1363
- normalMap?: string | undefined;
1364
- normalScale?: number | undefined;
1365
- bumpMap?: string | undefined;
1366
- bumpScale?: number | undefined;
1367
- } | undefined;
1280
+ height: number;
1281
+ mark?: string | undefined;
1282
+ constructionType: "framed" | "masonry";
1283
+ dimensionReference: "finish-opening" | "masonry-opening" | "nominal" | "rough-opening";
1284
+ roughOpeningWidth?: number | undefined;
1285
+ roughOpeningHeight?: number | undefined;
1286
+ masonryOpeningWidth?: number | undefined;
1287
+ masonryOpeningHeight?: number | undefined;
1288
+ finishOpeningWidth?: number | undefined;
1289
+ finishOpeningHeight?: number | undefined;
1290
+ openingKind: "opening" | "window";
1291
+ windowType: "awning" | "bay" | "bow" | "casement" | "double-hung" | "fixed" | "hopper" | "louvered" | "single-hung" | "sliding" | "tilt-turn";
1292
+ operationState: number;
1293
+ openingDirection?: "inward" | "outward" | undefined;
1294
+ tiltTurnMode?: "tilt" | "turn" | undefined;
1295
+ awningDirection: "down" | "up";
1296
+ casementStyle: "french" | "single";
1297
+ hingesSide: "left" | "right";
1298
+ openingShape: "arch" | "rectangle" | "rounded";
1299
+ openingRadiusMode: "all" | "individual";
1300
+ openingCornerRadii: [number, number, number, number];
1301
+ cornerRadius: number;
1302
+ archHeight: number;
1303
+ openingRevealRadius: number;
1304
+ frameThickness: number;
1305
+ frameDepth?: number | undefined;
1306
+ windowHandle?: boolean | undefined;
1307
+ sashGrid?: boolean | undefined;
1308
+ columnRatios: number[];
1309
+ rowRatios: number[];
1310
+ columnDividerThickness: number;
1311
+ rowDividerThickness: number;
1312
+ corner?: {
1313
+ end: "end" | "start";
1314
+ partnerId: string;
1315
+ post: "none" | "post";
1368
1316
  } | undefined;
1369
- materialPreset?: string | undefined;
1370
- slots?: Record<string, string> | undefined;
1371
- type: "column";
1317
+ sill: boolean;
1318
+ sillDepth: number;
1319
+ sillThickness: number;
1320
+ sillOverhang?: number | undefined;
1321
+ sillInterior?: boolean | undefined;
1322
+ sillInteriorDepth?: number | undefined;
1323
+ sillInteriorThickness?: number | undefined;
1324
+ sillInteriorOverhang?: number | undefined;
1325
+ shutters?: "board-batten" | "louvered" | "none" | "panel" | undefined;
1326
+ shutterWidth?: number | undefined;
1327
+ shutterOpen?: number | undefined;
1328
+ shutterSides?: "both" | "left" | "right" | undefined;
1329
+ rollerShutter?: "box" | "concealed" | "none" | undefined;
1330
+ rollerShutterBoxHeight?: number | undefined;
1331
+ rollerShutterOpen?: number | undefined;
1332
+ casingFaceA?: boolean | undefined;
1333
+ casingFaceB?: boolean | undefined;
1334
+ casingWidth?: number | undefined;
1335
+ type: "window";
1372
1336
  } | {
1373
1337
  object: "node";
1374
1338
  name?: string | undefined;
@@ -1901,7 +1865,7 @@ export declare function withoutSceneAnnotations(nodes: Record<AnyNodeId, AnyNode
1901
1865
  cavityInsulation?: string | undefined;
1902
1866
  } | undefined;
1903
1867
  slots?: Record<string, string> | undefined;
1904
- children: `rseg_${string}`[];
1868
+ children: string[];
1905
1869
  type: "roof";
1906
1870
  } | {
1907
1871
  object: "node";
@@ -2929,6 +2893,66 @@ export declare function withoutSceneAnnotations(nodes: Record<AnyNodeId, AnyNode
2929
2893
  topElevation?: number | undefined;
2930
2894
  supportSlabId?: string | undefined;
2931
2895
  type: "beam";
2896
+ } | {
2897
+ object: "node";
2898
+ name?: string | undefined;
2899
+ parentId: string | null;
2900
+ visible: boolean;
2901
+ camera?: {
2902
+ position: [number, number, number];
2903
+ target: [number, number, number];
2904
+ mode: "orthographic" | "perspective";
2905
+ fov?: number | undefined;
2906
+ zoom?: number | undefined;
2907
+ } | undefined;
2908
+ metadata: Record<string, unknown>;
2909
+ provenance?: {
2910
+ refs: {
2911
+ ns?: string | undefined;
2912
+ id: string;
2913
+ role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
2914
+ }[];
2915
+ lineage?: {
2916
+ op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
2917
+ fromIds: string[];
2918
+ } | undefined;
2919
+ } | undefined;
2920
+ id: `construction-dimension_${string}`;
2921
+ anchors: ({
2922
+ kind: "feature";
2923
+ reference: {
2924
+ nodeId: string;
2925
+ featureId: string;
2926
+ parameters?: Record<string, string | number | boolean> | undefined;
2927
+ };
2928
+ fallback: [number, number, number];
2929
+ } | [number, number, number])[];
2930
+ baseline: {
2931
+ origin: [number, number];
2932
+ direction: [number, number];
2933
+ };
2934
+ chainMode: "continuous" | "point-to-point";
2935
+ mode: "angular" | "arc-length" | "center-mark" | "chord" | "coordinate" | "diameter" | "linear" | "radius";
2936
+ featureCount: number;
2937
+ showCenterMark: boolean;
2938
+ prefix: string;
2939
+ suffix: string;
2940
+ textOverride: string | null;
2941
+ datumPolicy: "centerline" | "finish-face" | "structural-face" | "wall-face";
2942
+ terminator: "architectural-tick" | "dot" | "filled-arrow" | "open-arrow";
2943
+ textPosition: "above" | "centered";
2944
+ imperialPrecision: "1" | "1/16" | "1/2" | "1/4" | "1/8";
2945
+ metricNotation: "meters" | "millimeters";
2946
+ extensionStartGap: number;
2947
+ extensionOvershoot: number;
2948
+ drawingType: "floor-plan" | "foundation-plan" | "reflected-ceiling-plan" | "roof-plan" | "site-plan";
2949
+ drawingOverrides: {
2950
+ drawingType: "floor-plan" | "foundation-plan" | "reflected-ceiling-plan" | "roof-plan" | "site-plan";
2951
+ presentation: "controlled" | "omit" | "shown";
2952
+ suppressedSegmentIndexes: number[];
2953
+ }[];
2954
+ controllingDimensionId: `construction-dimension_${string}` | null;
2955
+ type: "construction-dimension";
2932
2956
  } | {
2933
2957
  object: "node";
2934
2958
  name?: string | undefined;
@@ -3453,6 +3477,98 @@ export declare function withoutSceneAnnotations(nodes: Record<AnyNodeId, AnyNode
3453
3477
  color: string;
3454
3478
  metadata: Record<string, unknown>;
3455
3479
  type: "zone";
3480
+ } | {
3481
+ object: "node";
3482
+ name?: string | undefined;
3483
+ parentId: string | null;
3484
+ visible: boolean;
3485
+ camera?: {
3486
+ position: [number, number, number];
3487
+ target: [number, number, number];
3488
+ mode: "orthographic" | "perspective";
3489
+ fov?: number | undefined;
3490
+ zoom?: number | undefined;
3491
+ } | undefined;
3492
+ metadata: Record<string, unknown>;
3493
+ provenance?: {
3494
+ refs: {
3495
+ ns?: string | undefined;
3496
+ id: string;
3497
+ role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
3498
+ }[];
3499
+ lineage?: {
3500
+ op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
3501
+ fromIds: string[];
3502
+ } | undefined;
3503
+ } | undefined;
3504
+ id: `ceiling_${string}`;
3505
+ children: (`item_${string}` | `procedural-item_${string}`)[];
3506
+ material?: {
3507
+ id?: string | undefined;
3508
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
3509
+ properties?: {
3510
+ color: string;
3511
+ roughness: number;
3512
+ metalness: number;
3513
+ opacity: number;
3514
+ transparent: boolean;
3515
+ side: "back" | "double" | "front";
3516
+ } | undefined;
3517
+ texture?: {
3518
+ url: string;
3519
+ repeat?: [number, number] | undefined;
3520
+ scale?: number | undefined;
3521
+ offset?: [number, number] | undefined;
3522
+ normalMap?: string | undefined;
3523
+ normalScale?: number | undefined;
3524
+ bumpMap?: string | undefined;
3525
+ bumpScale?: number | undefined;
3526
+ } | undefined;
3527
+ } | undefined;
3528
+ materialPreset?: string | undefined;
3529
+ slots?: Record<string, string> | undefined;
3530
+ polygon: [number, number][];
3531
+ holes: [number, number][][];
3532
+ holeMetadata: {
3533
+ source: "elevator" | "floor-opening" | "manual" | "room" | "stair";
3534
+ openingId?: string | undefined;
3535
+ stairId?: string | undefined;
3536
+ elevatorId?: string | undefined;
3537
+ }[];
3538
+ openingIds?: string[] | undefined;
3539
+ height?: number | undefined;
3540
+ buildUp?: {
3541
+ presetId?: string | undefined;
3542
+ finish?: {
3543
+ kind: "drywall" | "plaster" | "wood-plank";
3544
+ thickness: number;
3545
+ name?: string | undefined;
3546
+ } | undefined;
3547
+ framing?: {
3548
+ system: "joists" | "truss-chords";
3549
+ size: "2x10" | "2x12" | "2x4" | "2x6" | "2x8";
3550
+ spacing: number;
3551
+ } | undefined;
3552
+ decking?: {
3553
+ kind: "osb" | "plywood";
3554
+ thickness: number;
3555
+ name?: string | undefined;
3556
+ } | undefined;
3557
+ insulation?: {
3558
+ kind: "batt" | "blown" | "rigid";
3559
+ thickness: number;
3560
+ name?: string | undefined;
3561
+ } | undefined;
3562
+ } | undefined;
3563
+ regions?: {
3564
+ id: string;
3565
+ polygon: [number, number][];
3566
+ finish: string | Record<string, unknown>;
3567
+ }[] | undefined;
3568
+ boundary?: "auto" | undefined;
3569
+ zoneId?: string | undefined;
3570
+ autoFromWalls: boolean;
3571
+ type: "ceiling";
3456
3572
  } | {
3457
3573
  object: "node";
3458
3574
  name?: string | undefined;
@@ -4082,54 +4198,7 @@ export declare function withoutSceneAnnotations(nodes: Record<AnyNodeId, AnyNode
4082
4198
  fromIds: string[];
4083
4199
  } | undefined;
4084
4200
  } | undefined;
4085
- id: `duct-fitting_${string}`;
4086
- position: [number, number, number];
4087
- rotation: [number, number, number];
4088
- fittingType: "access-panel" | "coupling" | "cross" | "damper" | "elbow" | "end-cap" | "reducer" | "tee" | "transition";
4089
- shape: "oval" | "rect" | "round";
4090
- inletShape?: "oval" | "rect" | "round" | undefined;
4091
- outletShape?: "oval" | "rect" | "round" | undefined;
4092
- width: number;
4093
- height: number;
4094
- shape2: "oval" | "rect" | "round";
4095
- width2: number;
4096
- height2: number;
4097
- angle: number;
4098
- branchAngle: number;
4099
- diameter: number;
4100
- diameter2: number;
4101
- ductMaterial: "duct-board" | "flex" | "sheet-metal";
4102
- system: "return" | "supply";
4103
- damperAngle: number;
4104
- panelWidth: number;
4105
- panelHeight: number;
4106
- slots?: Record<string, string> | undefined;
4107
- type: "duct-fitting";
4108
- } | {
4109
- object: "node";
4110
- name?: string | undefined;
4111
- parentId: string | null;
4112
- visible: boolean;
4113
- camera?: {
4114
- position: [number, number, number];
4115
- target: [number, number, number];
4116
- mode: "orthographic" | "perspective";
4117
- fov?: number | undefined;
4118
- zoom?: number | undefined;
4119
- } | undefined;
4120
- metadata: Record<string, unknown>;
4121
- provenance?: {
4122
- refs: {
4123
- ns?: string | undefined;
4124
- id: string;
4125
- role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
4126
- }[];
4127
- lineage?: {
4128
- op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
4129
- fromIds: string[];
4130
- } | undefined;
4131
- } | undefined;
4132
- id: `duct-terminal_${string}`;
4201
+ id: `duct-terminal_${string}`;
4133
4202
  position: [number, number, number];
4134
4203
  rotation: number;
4135
4204
  supportSlabId?: string | undefined;
@@ -4142,47 +4211,6 @@ export declare function withoutSceneAnnotations(nodes: Record<AnyNodeId, AnyNode
4142
4211
  collarWidth: number;
4143
4212
  collarHeight: number;
4144
4213
  type: "duct-terminal";
4145
- } | {
4146
- object: "node";
4147
- name?: string | undefined;
4148
- parentId: string | null;
4149
- visible: boolean;
4150
- camera?: {
4151
- position: [number, number, number];
4152
- target: [number, number, number];
4153
- mode: "orthographic" | "perspective";
4154
- fov?: number | undefined;
4155
- zoom?: number | undefined;
4156
- } | undefined;
4157
- metadata: Record<string, unknown>;
4158
- provenance?: {
4159
- refs: {
4160
- ns?: string | undefined;
4161
- id: string;
4162
- role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
4163
- }[];
4164
- lineage?: {
4165
- op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
4166
- fromIds: string[];
4167
- } | undefined;
4168
- } | undefined;
4169
- id: `hvac-equipment_${string}`;
4170
- position: [number, number, number];
4171
- rotation: number;
4172
- supportSlabId?: string | undefined;
4173
- equipmentType: "air-handler" | "condenser" | "furnace";
4174
- width: number;
4175
- depth: number;
4176
- height: number;
4177
- supplyShape: "oval" | "rect" | "round";
4178
- returnShape: "oval" | "rect" | "round";
4179
- supplyDiameter: number;
4180
- returnDiameter: number;
4181
- supplyWidth: number;
4182
- supplyHeight: number;
4183
- returnWidth: number;
4184
- returnHeight: number;
4185
- type: "hvac-equipment";
4186
4214
  } | {
4187
4215
  object: "node";
4188
4216
  name?: string | undefined;
@@ -4311,17 +4339,13 @@ export declare function withoutSceneAnnotations(nodes: Record<AnyNodeId, AnyNode
4311
4339
  fromIds: string[];
4312
4340
  } | undefined;
4313
4341
  } | undefined;
4314
- id: `pipe-fitting_${string}`;
4342
+ id: `pipe-trap_${string}`;
4315
4343
  position: [number, number, number];
4316
- rotation: [number, number, number];
4317
- fittingType: "cleanout" | "coupling" | "cross" | "elbow" | "end-cap" | "reducer" | "sanitary-tee" | "wye";
4318
- angle: number;
4344
+ rotation: number;
4319
4345
  diameter: number;
4320
- diameter2: number;
4321
- cleanoutStyle: "end" | "inline";
4322
4346
  pipeMaterial: "abs" | "cast-iron" | "pvc";
4323
- system: "vent" | "waste";
4324
- type: "pipe-fitting";
4347
+ armLengthM: number;
4348
+ type: "pipe-trap";
4325
4349
  } | {
4326
4350
  object: "node";
4327
4351
  name?: string | undefined;
@@ -4346,13 +4370,12 @@ export declare function withoutSceneAnnotations(nodes: Record<AnyNodeId, AnyNode
4346
4370
  fromIds: string[];
4347
4371
  } | undefined;
4348
4372
  } | undefined;
4349
- id: `pipe-trap_${string}`;
4350
- position: [number, number, number];
4351
- rotation: number;
4352
- diameter: number;
4353
- pipeMaterial: "abs" | "cast-iron" | "pvc";
4354
- armLengthM: number;
4355
- type: "pipe-trap";
4373
+ id: `level_${string}`;
4374
+ 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}`)[];
4375
+ level: number;
4376
+ baseElevation: number;
4377
+ height?: number | undefined;
4378
+ type: "level";
4356
4379
  } | {
4357
4380
  object: "node";
4358
4381
  name?: string | undefined;
@@ -4377,12 +4400,54 @@ export declare function withoutSceneAnnotations(nodes: Record<AnyNodeId, AnyNode
4377
4400
  fromIds: string[];
4378
4401
  } | undefined;
4379
4402
  } | undefined;
4380
- id: `level_${string}`;
4381
- 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}`)[];
4382
- level: number;
4383
- baseElevation: number;
4384
- height?: number | undefined;
4385
- type: "level";
4403
+ id: `elevator_${string}`;
4404
+ material?: {
4405
+ id?: string | undefined;
4406
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
4407
+ properties?: {
4408
+ color: string;
4409
+ roughness: number;
4410
+ metalness: number;
4411
+ opacity: number;
4412
+ transparent: boolean;
4413
+ side: "back" | "double" | "front";
4414
+ } | undefined;
4415
+ texture?: {
4416
+ url: string;
4417
+ repeat?: [number, number] | undefined;
4418
+ scale?: number | undefined;
4419
+ offset?: [number, number] | undefined;
4420
+ normalMap?: string | undefined;
4421
+ normalScale?: number | undefined;
4422
+ bumpMap?: string | undefined;
4423
+ bumpScale?: number | undefined;
4424
+ } | undefined;
4425
+ } | undefined;
4426
+ materialPreset?: string | undefined;
4427
+ slots?: Record<string, string> | undefined;
4428
+ position: [number, number, number];
4429
+ rotation: number;
4430
+ width: number;
4431
+ depth: number;
4432
+ shaftWidth?: number | undefined;
4433
+ shaftDepth?: number | undefined;
4434
+ shaftWallThickness: number;
4435
+ shaftStyle: "glass" | "solid";
4436
+ cabHeight: number;
4437
+ doorWidth: number;
4438
+ doorHeight: number;
4439
+ doorStyle: "center-opening" | "single-left" | "single-right";
4440
+ doorPanelStyle: "glass-frame" | "segmented-panel" | "solid-panel";
4441
+ fromLevelId: string | null;
4442
+ toLevelId: string | null;
4443
+ servedLevelIds?: string[] | undefined;
4444
+ disabledLevelIds: string[];
4445
+ serviceOnlyLevelIds: string[];
4446
+ defaultLevelId: string | null;
4447
+ speed: number;
4448
+ doorDurationMs: number;
4449
+ dwellMs: number;
4450
+ type: "elevator";
4386
4451
  } | {
4387
4452
  object: "node";
4388
4453
  parentId: string | null;
@@ -4848,71 +4913,6 @@ export declare function withoutSceneAnnotations(nodes: Record<AnyNodeId, AnyNode
4848
4913
  topFinishHeight: number;
4849
4914
  topFinishDepth: number;
4850
4915
  type: "cabinet-module";
4851
- } | {
4852
- object: "node";
4853
- name?: string | undefined;
4854
- parentId: string | null;
4855
- visible: boolean;
4856
- camera?: {
4857
- position: [number, number, number];
4858
- target: [number, number, number];
4859
- mode: "orthographic" | "perspective";
4860
- fov?: number | undefined;
4861
- zoom?: number | undefined;
4862
- } | undefined;
4863
- metadata: Record<string, unknown>;
4864
- provenance?: {
4865
- refs: {
4866
- ns?: string | undefined;
4867
- id: string;
4868
- role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
4869
- }[];
4870
- lineage?: {
4871
- op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
4872
- fromIds: string[];
4873
- } | undefined;
4874
- } | undefined;
4875
- id: `bvent_${string}`;
4876
- material?: {
4877
- id?: string | undefined;
4878
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
4879
- properties?: {
4880
- color: string;
4881
- roughness: number;
4882
- metalness: number;
4883
- opacity: number;
4884
- transparent: boolean;
4885
- side: "back" | "double" | "front";
4886
- } | undefined;
4887
- texture?: {
4888
- url: string;
4889
- repeat?: [number, number] | undefined;
4890
- scale?: number | undefined;
4891
- offset?: [number, number] | undefined;
4892
- normalMap?: string | undefined;
4893
- normalScale?: number | undefined;
4894
- bumpMap?: string | undefined;
4895
- bumpScale?: number | undefined;
4896
- } | undefined;
4897
- } | undefined;
4898
- slots?: Record<string, string> | undefined;
4899
- materialPreset: string;
4900
- roofSegmentId?: string | undefined;
4901
- position: [number, number, number];
4902
- rotation: number;
4903
- width: number;
4904
- depth: number;
4905
- height: number;
4906
- hoodOverhang: number;
4907
- topTaper: number;
4908
- capHeight: number;
4909
- capGap: number;
4910
- domeCurvature: number;
4911
- baseInset: number;
4912
- baseHeight: number;
4913
- cornerBevel: number;
4914
- style: "box" | "cap" | "dome";
4915
- type: "box-vent";
4916
4916
  } | {
4917
4917
  object: "node";
4918
4918
  name?: string | undefined;
@@ -5741,7 +5741,7 @@ export declare function retainSceneAnnotations(before: Record<AnyNodeId, AnyNode
5741
5741
  fromIds: string[];
5742
5742
  } | undefined;
5743
5743
  } | undefined;
5744
- id: `elevator_${string}`;
5744
+ id: `bvent_${string}`;
5745
5745
  material?: {
5746
5746
  id?: string | undefined;
5747
5747
  preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
@@ -5764,31 +5764,24 @@ export declare function retainSceneAnnotations(before: Record<AnyNodeId, AnyNode
5764
5764
  bumpScale?: number | undefined;
5765
5765
  } | undefined;
5766
5766
  } | undefined;
5767
- materialPreset?: string | undefined;
5768
5767
  slots?: Record<string, string> | undefined;
5768
+ materialPreset: string;
5769
+ roofSegmentId?: string | undefined;
5769
5770
  position: [number, number, number];
5770
5771
  rotation: number;
5771
5772
  width: number;
5772
5773
  depth: number;
5773
- shaftWidth?: number | undefined;
5774
- shaftDepth?: number | undefined;
5775
- shaftWallThickness: number;
5776
- shaftStyle: "glass" | "solid";
5777
- cabHeight: number;
5778
- doorWidth: number;
5779
- doorHeight: number;
5780
- doorStyle: "center-opening" | "single-left" | "single-right";
5781
- doorPanelStyle: "glass-frame" | "segmented-panel" | "solid-panel";
5782
- fromLevelId: string | null;
5783
- toLevelId: string | null;
5784
- servedLevelIds?: string[] | undefined;
5785
- disabledLevelIds: string[];
5786
- serviceOnlyLevelIds: string[];
5787
- defaultLevelId: string | null;
5788
- speed: number;
5789
- doorDurationMs: number;
5790
- dwellMs: number;
5791
- type: "elevator";
5774
+ height: number;
5775
+ hoodOverhang: number;
5776
+ topTaper: number;
5777
+ capHeight: number;
5778
+ capGap: number;
5779
+ domeCurvature: number;
5780
+ baseInset: number;
5781
+ baseHeight: number;
5782
+ cornerBevel: number;
5783
+ style: "box" | "cap" | "dome";
5784
+ type: "box-vent";
5792
5785
  } | {
5793
5786
  object: "node";
5794
5787
  name?: string | undefined;
@@ -5813,21 +5806,11 @@ export declare function retainSceneAnnotations(before: Record<AnyNodeId, AnyNode
5813
5806
  fromIds: string[];
5814
5807
  } | undefined;
5815
5808
  } | undefined;
5816
- type: "item";
5817
- id: `item_${string}`;
5818
- position: [number, number, number];
5819
- rotation: [number, number, number];
5820
- scale: [number, number, number];
5821
- side?: "back" | "front" | undefined;
5809
+ id: `column_${string}`;
5822
5810
  children: string[];
5823
- wallId?: string | undefined;
5824
- wallT?: number | undefined;
5825
- roofSegmentId?: string | undefined;
5826
- roofFace?: "back" | "front" | "left" | "right" | undefined;
5827
- blockFaceId?: string | undefined;
5811
+ position: [number, number, number];
5812
+ rotation: number;
5828
5813
  supportSlabId?: string | undefined;
5829
- collectionIds?: `collection_${string}`[] | undefined;
5830
- slots?: Record<string, string> | undefined;
5831
5814
  source?: {
5832
5815
  kind: "script";
5833
5816
  meta?: {
@@ -5942,76 +5925,104 @@ export declare function retainSceneAnnotations(before: Record<AnyNodeId, AnyNode
5942
5925
  floorPlan: string;
5943
5926
  } | undefined;
5944
5927
  } | undefined;
5945
- asset: {
5946
- id: string;
5947
- category: string;
5948
- name: string;
5949
- thumbnail: string;
5950
- floorPlanUrl?: string | undefined;
5951
- source: "community" | "library" | "mine";
5952
- isDraft?: boolean | undefined;
5953
- src: string;
5954
- dimensions: [number, number, number];
5955
- attachTo?: "ceiling" | "wall" | "wall-side" | undefined;
5956
- recessed?: boolean | undefined;
5957
- tags?: string[] | undefined;
5958
- functionTags?: string[] | undefined;
5959
- offset: [number, number, number];
5960
- rotation: [number, number, number];
5961
- scale: [number, number, number];
5962
- surface?: {
5963
- height: number;
5928
+ style: "cluster" | "dravidian-carved" | "faceted" | "fluted" | "lathe-turned" | "plain";
5929
+ crossSection: "octagonal" | "rectangular" | "round" | "sixteen-sided" | "square";
5930
+ height: number;
5931
+ radius: number;
5932
+ width: number;
5933
+ depth: number;
5934
+ edgeSoftness: number;
5935
+ baseHeight: number;
5936
+ capitalHeight: number;
5937
+ shaftProfile: "baluster" | "bulged" | "hourglass" | "straight" | "tapered";
5938
+ shaftTaper: number;
5939
+ shaftBulge: number;
5940
+ shaftStartScale: number;
5941
+ shaftEndScale: number;
5942
+ shaftSegmentCount: number;
5943
+ shaftTwistStep: number;
5944
+ shaftCornerRadius: number;
5945
+ shaftDetail: "fluted" | "lathe-turned" | "none" | "panelled" | "spiral";
5946
+ baseStyle: "lotus" | "none" | "panelled-pedestal" | "ribbed-lotus" | "round-rings" | "simple-square" | "square-plinth" | "stepped-square";
5947
+ baseWidthScale: number;
5948
+ baseDepthScale: number;
5949
+ baseTierCount: number;
5950
+ baseStepSpread: number;
5951
+ basePlinthHeightRatio: number;
5952
+ baseRoundBandScale: number;
5953
+ baseNeckScale: number;
5954
+ baseRoundBandCount: number;
5955
+ baseRibCount: number;
5956
+ baseCarvingLevel: number;
5957
+ basePanelInset: number;
5958
+ capitalStyle: "corinthian-leaf" | "doric" | "ionic-volute" | "leaf-carved" | "none" | "rounded" | "simple" | "simple-slab" | "south-indian-bracket" | "stepped" | "volute" | "wood-bracket";
5959
+ capitalWidthScale: number;
5960
+ capitalDepthScale: number;
5961
+ capitalTierCount: number;
5962
+ capitalStepSpread: number;
5963
+ capitalBandCount: number;
5964
+ voluteSize: number;
5965
+ voluteCount: number;
5966
+ leafCount: number;
5967
+ leafRows: number;
5968
+ bracketDepth: number;
5969
+ bracketTierCount: number;
5970
+ pendantCount: number;
5971
+ capitalCarvingLevel: number;
5972
+ ringCount: number;
5973
+ ringPlacement: "bottom" | "ends" | "even" | "top";
5974
+ ringThickness: number;
5975
+ ringSpread: number;
5976
+ fluteCount: number;
5977
+ fluteDepth: number;
5978
+ fluteWidth: number;
5979
+ spiralTwist: number;
5980
+ spiralRibCount: number;
5981
+ panelCount: number;
5982
+ panelInsetDepth: number;
5983
+ panelShape: "arched" | "diamond" | "rectangle";
5984
+ latheRingCount: number;
5985
+ latheRingSpacing: "bottom" | "ends" | "even" | "top";
5986
+ carvingLevel: number;
5987
+ carvingPlacement: "all" | "base" | "capital" | "shaft";
5988
+ lowerBandEnabled: boolean;
5989
+ lowerBandHeight: number;
5990
+ lowerBandCarvingLevel: number;
5991
+ dentilCount: number;
5992
+ beadCount: number;
5993
+ supportStyle: "a-frame" | "box-frame" | "k-brace" | "portal-frame" | "single-strut" | "trestle" | "tripod" | "v-frame" | "vertical" | "x-brace" | "y-frame";
5994
+ braceWidth: number;
5995
+ braceDepth: number;
5996
+ braceBottomSpread: number;
5997
+ braceTopSpread: number;
5998
+ bracePlateEnabled: boolean;
5999
+ role?: "ornament" | "post" | undefined;
6000
+ postBase?: "none" | "pier" | "post-base" | undefined;
6001
+ material?: {
6002
+ id?: string | undefined;
6003
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
6004
+ properties?: {
6005
+ color: string;
6006
+ roughness: number;
6007
+ metalness: number;
6008
+ opacity: number;
6009
+ transparent: boolean;
6010
+ side: "back" | "double" | "front";
5964
6011
  } | undefined;
5965
- interactive?: {
5966
- controls: ({
5967
- kind: "toggle";
5968
- label?: string | undefined;
5969
- default?: boolean | undefined;
5970
- } | {
5971
- kind: "slider";
5972
- label: string;
5973
- min: number;
5974
- max: number;
5975
- step: number;
5976
- unit?: string | undefined;
5977
- displayMode: "dial" | "slider" | "stepper";
5978
- default?: number | undefined;
5979
- } | {
5980
- kind: "temperature";
5981
- label: string;
5982
- min: number;
5983
- max: number;
5984
- unit: "C" | "F";
5985
- default?: number | undefined;
5986
- })[];
5987
- effects: ({
5988
- kind: "animation";
5989
- mode?: "ambient" | "open-close" | undefined;
5990
- control?: number | undefined;
5991
- clips: {
5992
- on?: string | undefined;
5993
- off?: string | undefined;
5994
- loop?: string | undefined;
5995
- };
5996
- } | {
5997
- kind: "light";
5998
- color: string;
5999
- intensityRange: [number, number];
6000
- distance?: number | undefined;
6001
- offset: [number, number, number];
6002
- spot?: {
6003
- direction: [number, number, number];
6004
- angle: number;
6005
- softness: number;
6006
- } | undefined;
6007
- shadows?: boolean | undefined;
6008
- glow?: {
6009
- size: number;
6010
- strength: number;
6011
- } | undefined;
6012
- })[];
6012
+ texture?: {
6013
+ url: string;
6014
+ repeat?: [number, number] | undefined;
6015
+ scale?: number | undefined;
6016
+ offset?: [number, number] | undefined;
6017
+ normalMap?: string | undefined;
6018
+ normalScale?: number | undefined;
6019
+ bumpMap?: string | undefined;
6020
+ bumpScale?: number | undefined;
6013
6021
  } | undefined;
6014
- };
6022
+ } | undefined;
6023
+ materialPreset?: string | undefined;
6024
+ slots?: Record<string, string> | undefined;
6025
+ type: "column";
6015
6026
  } | {
6016
6027
  object: "node";
6017
6028
  name?: string | undefined;
@@ -6036,74 +6047,70 @@ export declare function retainSceneAnnotations(before: Record<AnyNodeId, AnyNode
6036
6047
  fromIds: string[];
6037
6048
  } | undefined;
6038
6049
  } | undefined;
6039
- id: `ceiling_${string}`;
6040
- children: (`item_${string}` | `procedural-item_${string}`)[];
6041
- material?: {
6042
- id?: string | undefined;
6043
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
6044
- properties?: {
6045
- color: string;
6046
- roughness: number;
6047
- metalness: number;
6048
- opacity: number;
6049
- transparent: boolean;
6050
- side: "back" | "double" | "front";
6051
- } | undefined;
6052
- texture?: {
6053
- url: string;
6054
- repeat?: [number, number] | undefined;
6055
- scale?: number | undefined;
6056
- offset?: [number, number] | undefined;
6057
- normalMap?: string | undefined;
6058
- normalScale?: number | undefined;
6059
- bumpMap?: string | undefined;
6060
- bumpScale?: number | undefined;
6061
- } | undefined;
6062
- } | undefined;
6063
- materialPreset?: string | undefined;
6064
- slots?: Record<string, string> | undefined;
6065
- polygon: [number, number][];
6066
- holes: [number, number][][];
6067
- holeMetadata: {
6068
- source: "elevator" | "floor-opening" | "manual" | "room" | "stair";
6069
- openingId?: string | undefined;
6070
- stairId?: string | undefined;
6071
- elevatorId?: string | undefined;
6072
- }[];
6073
- openingIds?: string[] | undefined;
6074
- height?: number | undefined;
6075
- buildUp?: {
6076
- presetId?: string | undefined;
6077
- finish?: {
6078
- kind: "drywall" | "plaster" | "wood-plank";
6079
- thickness: number;
6080
- name?: string | undefined;
6081
- } | undefined;
6082
- framing?: {
6083
- system: "joists" | "truss-chords";
6084
- size: "2x10" | "2x12" | "2x4" | "2x6" | "2x8";
6085
- spacing: number;
6086
- } | undefined;
6087
- decking?: {
6088
- kind: "osb" | "plywood";
6089
- thickness: number;
6090
- name?: string | undefined;
6091
- } | undefined;
6092
- insulation?: {
6093
- kind: "batt" | "blown" | "rigid";
6094
- thickness: number;
6095
- name?: string | undefined;
6050
+ id: `duct-fitting_${string}`;
6051
+ position: [number, number, number];
6052
+ rotation: [number, number, number];
6053
+ fittingType: "access-panel" | "coupling" | "cross" | "damper" | "elbow" | "end-cap" | "reducer" | "tee" | "transition";
6054
+ shape: "oval" | "rect" | "round";
6055
+ inletShape?: "oval" | "rect" | "round" | undefined;
6056
+ outletShape?: "oval" | "rect" | "round" | undefined;
6057
+ width: number;
6058
+ height: number;
6059
+ shape2: "oval" | "rect" | "round";
6060
+ width2: number;
6061
+ height2: number;
6062
+ angle: number;
6063
+ branchAngle: number;
6064
+ diameter: number;
6065
+ diameter2: number;
6066
+ ductMaterial: "duct-board" | "flex" | "sheet-metal";
6067
+ system: "return" | "supply";
6068
+ damperAngle: number;
6069
+ panelWidth: number;
6070
+ panelHeight: number;
6071
+ slots?: Record<string, string> | undefined;
6072
+ type: "duct-fitting";
6073
+ } | {
6074
+ object: "node";
6075
+ name?: string | undefined;
6076
+ parentId: string | null;
6077
+ visible: boolean;
6078
+ camera?: {
6079
+ position: [number, number, number];
6080
+ target: [number, number, number];
6081
+ mode: "orthographic" | "perspective";
6082
+ fov?: number | undefined;
6083
+ zoom?: number | undefined;
6084
+ } | undefined;
6085
+ metadata: Record<string, unknown>;
6086
+ provenance?: {
6087
+ refs: {
6088
+ ns?: string | undefined;
6089
+ id: string;
6090
+ role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
6091
+ }[];
6092
+ lineage?: {
6093
+ op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
6094
+ fromIds: string[];
6096
6095
  } | undefined;
6097
6096
  } | undefined;
6098
- regions?: {
6099
- id: string;
6100
- polygon: [number, number][];
6101
- finish: string | Record<string, unknown>;
6102
- }[] | undefined;
6103
- boundary?: "auto" | undefined;
6104
- zoneId?: string | undefined;
6105
- autoFromWalls: boolean;
6106
- type: "ceiling";
6097
+ id: `hvac-equipment_${string}`;
6098
+ position: [number, number, number];
6099
+ rotation: number;
6100
+ supportSlabId?: string | undefined;
6101
+ equipmentType: "air-handler" | "condenser" | "furnace";
6102
+ width: number;
6103
+ depth: number;
6104
+ height: number;
6105
+ supplyShape: "oval" | "rect" | "round";
6106
+ returnShape: "oval" | "rect" | "round";
6107
+ supplyDiameter: number;
6108
+ returnDiameter: number;
6109
+ supplyWidth: number;
6110
+ supplyHeight: number;
6111
+ returnWidth: number;
6112
+ returnHeight: number;
6113
+ type: "hvac-equipment";
6107
6114
  } | {
6108
6115
  object: "node";
6109
6116
  name?: string | undefined;
@@ -6128,42 +6135,17 @@ export declare function retainSceneAnnotations(before: Record<AnyNodeId, AnyNode
6128
6135
  fromIds: string[];
6129
6136
  } | undefined;
6130
6137
  } | undefined;
6131
- id: `construction-dimension_${string}`;
6132
- anchors: ({
6133
- kind: "feature";
6134
- reference: {
6135
- nodeId: string;
6136
- featureId: string;
6137
- parameters?: Record<string, string | number | boolean> | undefined;
6138
- };
6139
- fallback: [number, number, number];
6140
- } | [number, number, number])[];
6141
- baseline: {
6142
- origin: [number, number];
6143
- direction: [number, number];
6144
- };
6145
- chainMode: "continuous" | "point-to-point";
6146
- mode: "angular" | "arc-length" | "center-mark" | "chord" | "coordinate" | "diameter" | "linear" | "radius";
6147
- featureCount: number;
6148
- showCenterMark: boolean;
6149
- prefix: string;
6150
- suffix: string;
6151
- textOverride: string | null;
6152
- datumPolicy: "centerline" | "finish-face" | "structural-face" | "wall-face";
6153
- terminator: "architectural-tick" | "dot" | "filled-arrow" | "open-arrow";
6154
- textPosition: "above" | "centered";
6155
- imperialPrecision: "1" | "1/16" | "1/2" | "1/4" | "1/8";
6156
- metricNotation: "meters" | "millimeters";
6157
- extensionStartGap: number;
6158
- extensionOvershoot: number;
6159
- drawingType: "floor-plan" | "foundation-plan" | "reflected-ceiling-plan" | "roof-plan" | "site-plan";
6160
- drawingOverrides: {
6161
- drawingType: "floor-plan" | "foundation-plan" | "reflected-ceiling-plan" | "roof-plan" | "site-plan";
6162
- presentation: "controlled" | "omit" | "shown";
6163
- suppressedSegmentIndexes: number[];
6164
- }[];
6165
- controllingDimensionId: `construction-dimension_${string}` | null;
6166
- type: "construction-dimension";
6138
+ id: `pipe-fitting_${string}`;
6139
+ position: [number, number, number];
6140
+ rotation: [number, number, number];
6141
+ fittingType: "cleanout" | "coupling" | "cross" | "elbow" | "end-cap" | "reducer" | "sanitary-tee" | "wye";
6142
+ angle: number;
6143
+ diameter: number;
6144
+ diameter2: number;
6145
+ cleanoutStyle: "end" | "inline";
6146
+ pipeMaterial: "abs" | "cast-iron" | "pvc";
6147
+ system: "vent" | "waste";
6148
+ type: "pipe-fitting";
6167
6149
  } | {
6168
6150
  object: "node";
6169
6151
  name?: string | undefined;
@@ -6404,29 +6386,20 @@ export declare function retainSceneAnnotations(before: Record<AnyNodeId, AnyNode
6404
6386
  fromIds: string[];
6405
6387
  } | undefined;
6406
6388
  } | undefined;
6407
- id: `door_${string}`;
6408
- material?: {
6409
- id?: string | undefined;
6410
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
6411
- properties?: {
6412
- color: string;
6413
- roughness: number;
6414
- metalness: number;
6415
- opacity: number;
6416
- transparent: boolean;
6417
- side: "back" | "double" | "front";
6418
- } | undefined;
6419
- texture?: {
6420
- url: string;
6421
- repeat?: [number, number] | undefined;
6422
- scale?: number | undefined;
6423
- offset?: [number, number] | undefined;
6424
- normalMap?: string | undefined;
6425
- normalScale?: number | undefined;
6426
- bumpMap?: string | undefined;
6427
- bumpScale?: number | undefined;
6428
- } | undefined;
6429
- } | undefined;
6389
+ type: "item";
6390
+ id: `item_${string}`;
6391
+ position: [number, number, number];
6392
+ rotation: [number, number, number];
6393
+ scale: [number, number, number];
6394
+ side?: "back" | "front" | undefined;
6395
+ children: string[];
6396
+ wallId?: string | undefined;
6397
+ wallT?: number | undefined;
6398
+ roofSegmentId?: string | undefined;
6399
+ roofFace?: "back" | "front" | "left" | "right" | undefined;
6400
+ blockFaceId?: string | undefined;
6401
+ supportSlabId?: string | undefined;
6402
+ collectionIds?: `collection_${string}`[] | undefined;
6430
6403
  slots?: Record<string, string> | undefined;
6431
6404
  source?: {
6432
6405
  kind: "script";
@@ -6542,72 +6515,76 @@ export declare function retainSceneAnnotations(before: Record<AnyNodeId, AnyNode
6542
6515
  floorPlan: string;
6543
6516
  } | undefined;
6544
6517
  } | undefined;
6545
- position: [number, number, number];
6546
- rotation: [number, number, number];
6547
- side?: "back" | "front" | undefined;
6548
- verticalAnchor?: "floor" | "wall" | undefined;
6549
- floorThresholdVersion: 0 | 1;
6550
- wallId?: string | undefined;
6551
- roofSegmentId?: string | undefined;
6552
- roofFace?: "back" | "front" | "left" | "right" | undefined;
6553
- width: number;
6554
- height: number;
6555
- sidelightLeft?: number | undefined;
6556
- sidelightRight?: number | undefined;
6557
- transomHeight?: number | undefined;
6558
- slidingStyle?: "bypass" | "patio" | undefined;
6559
- mark?: string | undefined;
6560
- constructionType: "framed" | "masonry";
6561
- dimensionReference: "finish-opening" | "masonry-opening" | "nominal" | "rough-opening";
6562
- roughOpeningWidth?: number | undefined;
6563
- roughOpeningHeight?: number | undefined;
6564
- masonryOpeningWidth?: number | undefined;
6565
- masonryOpeningHeight?: number | undefined;
6566
- finishOpeningWidth?: number | undefined;
6567
- finishOpeningHeight?: number | undefined;
6568
- doorCategory: "garage" | "interior";
6569
- doorType: "barn" | "double" | "folding" | "french" | "garage-rollup" | "garage-sectional" | "garage-tiltup" | "hinged" | "pocket" | "sliding";
6570
- leafCount: 1 | 2 | 3 | 4 | 6 | 8;
6571
- operationState: number;
6572
- slideDirection: "left" | "right";
6573
- trackStyle: "none" | "overhead" | "pocket" | "visible";
6574
- garagePanelCount: number;
6575
- openingKind: "door" | "opening";
6576
- openingShape: "arch" | "rectangle" | "rounded";
6577
- openingRadiusMode: "all" | "individual";
6578
- openingTopRadii: [number, number];
6579
- cornerRadius: number;
6580
- archHeight: number;
6581
- openingRevealRadius: number;
6582
- frameThickness: number;
6583
- frameDepth?: number | undefined;
6584
- threshold: boolean;
6585
- thresholdHeight: number;
6586
- casingFaceA?: boolean | undefined;
6587
- casingFaceB?: boolean | undefined;
6588
- casingWidth?: number | undefined;
6589
- hingesSide: "left" | "right";
6590
- swingDirection: "inward" | "outward";
6591
- swingAngle: number;
6592
- segments: {
6593
- type: "empty" | "glass" | "panel";
6594
- heightRatio: number;
6595
- columnRatios: number[];
6596
- dividerThickness: number;
6597
- panelDepth: number;
6598
- panelInset: number;
6599
- }[];
6600
- handle: boolean;
6601
- handleStyle?: "bar" | "knob" | "lever" | "lever-curved" | "plate" | undefined;
6602
- handleHeight: number;
6603
- handleSide: "left" | "right";
6604
- contentPadding: [number, number];
6605
- doorCloser: boolean;
6606
- panicBar: boolean;
6607
- panicBarStyle: "crossbar" | "touchbar";
6608
- panicBarRods: boolean;
6609
- panicBarHeight: number;
6610
- type: "door";
6518
+ asset: {
6519
+ id: string;
6520
+ category: string;
6521
+ name: string;
6522
+ thumbnail: string;
6523
+ floorPlanUrl?: string | undefined;
6524
+ source: "community" | "library" | "mine";
6525
+ isDraft?: boolean | undefined;
6526
+ src: string;
6527
+ dimensions: [number, number, number];
6528
+ attachTo?: "ceiling" | "wall" | "wall-side" | undefined;
6529
+ recessed?: boolean | undefined;
6530
+ tags?: string[] | undefined;
6531
+ functionTags?: string[] | undefined;
6532
+ offset: [number, number, number];
6533
+ rotation: [number, number, number];
6534
+ scale: [number, number, number];
6535
+ surface?: {
6536
+ height: number;
6537
+ } | undefined;
6538
+ interactive?: {
6539
+ controls: ({
6540
+ kind: "toggle";
6541
+ label?: string | undefined;
6542
+ default?: boolean | undefined;
6543
+ } | {
6544
+ kind: "slider";
6545
+ label: string;
6546
+ min: number;
6547
+ max: number;
6548
+ step: number;
6549
+ unit?: string | undefined;
6550
+ displayMode: "dial" | "slider" | "stepper";
6551
+ default?: number | undefined;
6552
+ } | {
6553
+ kind: "temperature";
6554
+ label: string;
6555
+ min: number;
6556
+ max: number;
6557
+ unit: "C" | "F";
6558
+ default?: number | undefined;
6559
+ })[];
6560
+ effects: ({
6561
+ kind: "animation";
6562
+ mode?: "ambient" | "open-close" | undefined;
6563
+ control?: number | undefined;
6564
+ clips: {
6565
+ on?: string | undefined;
6566
+ off?: string | undefined;
6567
+ loop?: string | undefined;
6568
+ };
6569
+ } | {
6570
+ kind: "light";
6571
+ color: string;
6572
+ intensityRange: [number, number];
6573
+ distance?: number | undefined;
6574
+ offset: [number, number, number];
6575
+ spot?: {
6576
+ direction: [number, number, number];
6577
+ angle: number;
6578
+ softness: number;
6579
+ } | undefined;
6580
+ shadows?: boolean | undefined;
6581
+ glow?: {
6582
+ size: number;
6583
+ strength: number;
6584
+ } | undefined;
6585
+ })[];
6586
+ } | undefined;
6587
+ };
6611
6588
  } | {
6612
6589
  object: "node";
6613
6590
  name?: string | undefined;
@@ -6632,7 +6609,7 @@ export declare function retainSceneAnnotations(before: Record<AnyNodeId, AnyNode
6632
6609
  fromIds: string[];
6633
6610
  } | undefined;
6634
6611
  } | undefined;
6635
- id: `window_${string}`;
6612
+ id: `door_${string}`;
6636
6613
  material?: {
6637
6614
  id?: string | undefined;
6638
6615
  preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
@@ -6776,12 +6753,14 @@ export declare function retainSceneAnnotations(before: Record<AnyNodeId, AnyNode
6776
6753
  verticalAnchor?: "floor" | "wall" | undefined;
6777
6754
  floorThresholdVersion: 0 | 1;
6778
6755
  wallId?: string | undefined;
6779
- dormerId?: string | undefined;
6780
- dormerFace?: "back" | "front" | "left" | "right" | undefined;
6781
6756
  roofSegmentId?: string | undefined;
6782
6757
  roofFace?: "back" | "front" | "left" | "right" | undefined;
6783
6758
  width: number;
6784
6759
  height: number;
6760
+ sidelightLeft?: number | undefined;
6761
+ sidelightRight?: number | undefined;
6762
+ transomHeight?: number | undefined;
6763
+ slidingStyle?: "bypass" | "patio" | undefined;
6785
6764
  mark?: string | undefined;
6786
6765
  constructionType: "framed" | "masonry";
6787
6766
  dimensionReference: "finish-opening" | "masonry-opening" | "nominal" | "rough-opening";
@@ -6791,52 +6770,49 @@ export declare function retainSceneAnnotations(before: Record<AnyNodeId, AnyNode
6791
6770
  masonryOpeningHeight?: number | undefined;
6792
6771
  finishOpeningWidth?: number | undefined;
6793
6772
  finishOpeningHeight?: number | undefined;
6794
- openingKind: "opening" | "window";
6795
- windowType: "awning" | "bay" | "bow" | "casement" | "double-hung" | "fixed" | "hopper" | "louvered" | "single-hung" | "sliding" | "tilt-turn";
6773
+ doorCategory: "garage" | "interior";
6774
+ doorType: "barn" | "double" | "folding" | "french" | "garage-rollup" | "garage-sectional" | "garage-tiltup" | "hinged" | "pocket" | "sliding";
6775
+ leafCount: 1 | 2 | 3 | 4 | 6 | 8;
6796
6776
  operationState: number;
6797
- openingDirection?: "inward" | "outward" | undefined;
6798
- tiltTurnMode?: "tilt" | "turn" | undefined;
6799
- awningDirection: "down" | "up";
6800
- casementStyle: "french" | "single";
6801
- hingesSide: "left" | "right";
6777
+ slideDirection: "left" | "right";
6778
+ trackStyle: "none" | "overhead" | "pocket" | "visible";
6779
+ garagePanelCount: number;
6780
+ openingKind: "door" | "opening";
6802
6781
  openingShape: "arch" | "rectangle" | "rounded";
6803
6782
  openingRadiusMode: "all" | "individual";
6804
- openingCornerRadii: [number, number, number, number];
6783
+ openingTopRadii: [number, number];
6805
6784
  cornerRadius: number;
6806
6785
  archHeight: number;
6807
6786
  openingRevealRadius: number;
6808
6787
  frameThickness: number;
6809
6788
  frameDepth?: number | undefined;
6810
- windowHandle?: boolean | undefined;
6811
- sashGrid?: boolean | undefined;
6812
- columnRatios: number[];
6813
- rowRatios: number[];
6814
- columnDividerThickness: number;
6815
- rowDividerThickness: number;
6816
- corner?: {
6817
- end: "end" | "start";
6818
- partnerId: string;
6819
- post: "none" | "post";
6820
- } | undefined;
6821
- sill: boolean;
6822
- sillDepth: number;
6823
- sillThickness: number;
6824
- sillOverhang?: number | undefined;
6825
- sillInterior?: boolean | undefined;
6826
- sillInteriorDepth?: number | undefined;
6827
- sillInteriorThickness?: number | undefined;
6828
- sillInteriorOverhang?: number | undefined;
6829
- shutters?: "board-batten" | "louvered" | "none" | "panel" | undefined;
6830
- shutterWidth?: number | undefined;
6831
- shutterOpen?: number | undefined;
6832
- shutterSides?: "both" | "left" | "right" | undefined;
6833
- rollerShutter?: "box" | "concealed" | "none" | undefined;
6834
- rollerShutterBoxHeight?: number | undefined;
6835
- rollerShutterOpen?: number | undefined;
6789
+ threshold: boolean;
6790
+ thresholdHeight: number;
6836
6791
  casingFaceA?: boolean | undefined;
6837
6792
  casingFaceB?: boolean | undefined;
6838
6793
  casingWidth?: number | undefined;
6839
- type: "window";
6794
+ hingesSide: "left" | "right";
6795
+ swingDirection: "inward" | "outward";
6796
+ swingAngle: number;
6797
+ segments: {
6798
+ type: "empty" | "glass" | "panel";
6799
+ heightRatio: number;
6800
+ columnRatios: number[];
6801
+ dividerThickness: number;
6802
+ panelDepth: number;
6803
+ panelInset: number;
6804
+ }[];
6805
+ handle: boolean;
6806
+ handleStyle?: "bar" | "knob" | "lever" | "lever-curved" | "plate" | undefined;
6807
+ handleHeight: number;
6808
+ handleSide: "left" | "right";
6809
+ contentPadding: [number, number];
6810
+ doorCloser: boolean;
6811
+ panicBar: boolean;
6812
+ panicBarStyle: "crossbar" | "touchbar";
6813
+ panicBarRods: boolean;
6814
+ panicBarHeight: number;
6815
+ type: "door";
6840
6816
  } | {
6841
6817
  object: "node";
6842
6818
  name?: string | undefined;
@@ -6861,11 +6837,30 @@ export declare function retainSceneAnnotations(before: Record<AnyNodeId, AnyNode
6861
6837
  fromIds: string[];
6862
6838
  } | undefined;
6863
6839
  } | undefined;
6864
- id: `column_${string}`;
6865
- children: string[];
6866
- position: [number, number, number];
6867
- rotation: number;
6868
- supportSlabId?: string | undefined;
6840
+ id: `window_${string}`;
6841
+ material?: {
6842
+ id?: string | undefined;
6843
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
6844
+ properties?: {
6845
+ color: string;
6846
+ roughness: number;
6847
+ metalness: number;
6848
+ opacity: number;
6849
+ transparent: boolean;
6850
+ side: "back" | "double" | "front";
6851
+ } | undefined;
6852
+ texture?: {
6853
+ url: string;
6854
+ repeat?: [number, number] | undefined;
6855
+ scale?: number | undefined;
6856
+ offset?: [number, number] | undefined;
6857
+ normalMap?: string | undefined;
6858
+ normalScale?: number | undefined;
6859
+ bumpMap?: string | undefined;
6860
+ bumpScale?: number | undefined;
6861
+ } | undefined;
6862
+ } | undefined;
6863
+ slots?: Record<string, string> | undefined;
6869
6864
  source?: {
6870
6865
  kind: "script";
6871
6866
  meta?: {
@@ -6949,135 +6944,104 @@ export declare function retainSceneAnnotations(before: Record<AnyNodeId, AnyNode
6949
6944
  duration: number;
6950
6945
  }[];
6951
6946
  cutters?: {
6952
- host: "ceiling" | "mounted" | "slab" | "wall";
6953
- polygon: number[][];
6954
- minY: number;
6955
- maxY: number;
6956
- }[] | undefined;
6957
- cutout: boolean;
6958
- collider: boolean;
6959
- shape?: {
6960
- tolerance: number;
6961
- bands: {
6962
- y0: number;
6963
- y1: number;
6964
- polygons: {
6965
- outer: [number, number][];
6966
- holes?: [number, number][][] | undefined;
6967
- }[];
6968
- }[];
6969
- } | undefined;
6970
- triangles: number;
6971
- coverage?: number | undefined;
6972
- uncovered?: {
6973
- min: [number, number];
6974
- max: [number, number];
6975
- }[] | undefined;
6976
- };
6977
- images?: {
6978
- artifact: string;
6979
- thumbnail: string;
6980
- floorPlan: string;
6981
- } | undefined;
6982
- } | undefined;
6983
- style: "cluster" | "dravidian-carved" | "faceted" | "fluted" | "lathe-turned" | "plain";
6984
- crossSection: "octagonal" | "rectangular" | "round" | "sixteen-sided" | "square";
6985
- height: number;
6986
- radius: number;
6987
- width: number;
6988
- depth: number;
6989
- edgeSoftness: number;
6990
- baseHeight: number;
6991
- capitalHeight: number;
6992
- shaftProfile: "baluster" | "bulged" | "hourglass" | "straight" | "tapered";
6993
- shaftTaper: number;
6994
- shaftBulge: number;
6995
- shaftStartScale: number;
6996
- shaftEndScale: number;
6997
- shaftSegmentCount: number;
6998
- shaftTwistStep: number;
6999
- shaftCornerRadius: number;
7000
- shaftDetail: "fluted" | "lathe-turned" | "none" | "panelled" | "spiral";
7001
- baseStyle: "lotus" | "none" | "panelled-pedestal" | "ribbed-lotus" | "round-rings" | "simple-square" | "square-plinth" | "stepped-square";
7002
- baseWidthScale: number;
7003
- baseDepthScale: number;
7004
- baseTierCount: number;
7005
- baseStepSpread: number;
7006
- basePlinthHeightRatio: number;
7007
- baseRoundBandScale: number;
7008
- baseNeckScale: number;
7009
- baseRoundBandCount: number;
7010
- baseRibCount: number;
7011
- baseCarvingLevel: number;
7012
- basePanelInset: number;
7013
- capitalStyle: "corinthian-leaf" | "doric" | "ionic-volute" | "leaf-carved" | "none" | "rounded" | "simple" | "simple-slab" | "south-indian-bracket" | "stepped" | "volute" | "wood-bracket";
7014
- capitalWidthScale: number;
7015
- capitalDepthScale: number;
7016
- capitalTierCount: number;
7017
- capitalStepSpread: number;
7018
- capitalBandCount: number;
7019
- voluteSize: number;
7020
- voluteCount: number;
7021
- leafCount: number;
7022
- leafRows: number;
7023
- bracketDepth: number;
7024
- bracketTierCount: number;
7025
- pendantCount: number;
7026
- capitalCarvingLevel: number;
7027
- ringCount: number;
7028
- ringPlacement: "bottom" | "ends" | "even" | "top";
7029
- ringThickness: number;
7030
- ringSpread: number;
7031
- fluteCount: number;
7032
- fluteDepth: number;
7033
- fluteWidth: number;
7034
- spiralTwist: number;
7035
- spiralRibCount: number;
7036
- panelCount: number;
7037
- panelInsetDepth: number;
7038
- panelShape: "arched" | "diamond" | "rectangle";
7039
- latheRingCount: number;
7040
- latheRingSpacing: "bottom" | "ends" | "even" | "top";
7041
- carvingLevel: number;
7042
- carvingPlacement: "all" | "base" | "capital" | "shaft";
7043
- lowerBandEnabled: boolean;
7044
- lowerBandHeight: number;
7045
- lowerBandCarvingLevel: number;
7046
- dentilCount: number;
7047
- beadCount: number;
7048
- supportStyle: "a-frame" | "box-frame" | "k-brace" | "portal-frame" | "single-strut" | "trestle" | "tripod" | "v-frame" | "vertical" | "x-brace" | "y-frame";
7049
- braceWidth: number;
7050
- braceDepth: number;
7051
- braceBottomSpread: number;
7052
- braceTopSpread: number;
7053
- bracePlateEnabled: boolean;
7054
- role?: "ornament" | "post" | undefined;
7055
- postBase?: "none" | "pier" | "post-base" | undefined;
7056
- material?: {
7057
- id?: string | undefined;
7058
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
7059
- properties?: {
7060
- color: string;
7061
- roughness: number;
7062
- metalness: number;
7063
- opacity: number;
7064
- transparent: boolean;
7065
- side: "back" | "double" | "front";
7066
- } | undefined;
7067
- texture?: {
7068
- url: string;
7069
- repeat?: [number, number] | undefined;
7070
- scale?: number | undefined;
7071
- offset?: [number, number] | undefined;
7072
- normalMap?: string | undefined;
7073
- normalScale?: number | undefined;
7074
- bumpMap?: string | undefined;
7075
- bumpScale?: number | undefined;
6947
+ host: "ceiling" | "mounted" | "slab" | "wall";
6948
+ polygon: number[][];
6949
+ minY: number;
6950
+ maxY: number;
6951
+ }[] | undefined;
6952
+ cutout: boolean;
6953
+ collider: boolean;
6954
+ shape?: {
6955
+ tolerance: number;
6956
+ bands: {
6957
+ y0: number;
6958
+ y1: number;
6959
+ polygons: {
6960
+ outer: [number, number][];
6961
+ holes?: [number, number][][] | undefined;
6962
+ }[];
6963
+ }[];
6964
+ } | undefined;
6965
+ triangles: number;
6966
+ coverage?: number | undefined;
6967
+ uncovered?: {
6968
+ min: [number, number];
6969
+ max: [number, number];
6970
+ }[] | undefined;
6971
+ };
6972
+ images?: {
6973
+ artifact: string;
6974
+ thumbnail: string;
6975
+ floorPlan: string;
7076
6976
  } | undefined;
7077
6977
  } | undefined;
7078
- materialPreset?: string | undefined;
7079
- slots?: Record<string, string> | undefined;
7080
- type: "column";
6978
+ position: [number, number, number];
6979
+ rotation: [number, number, number];
6980
+ side?: "back" | "front" | undefined;
6981
+ verticalAnchor?: "floor" | "wall" | undefined;
6982
+ floorThresholdVersion: 0 | 1;
6983
+ wallId?: string | undefined;
6984
+ dormerId?: string | undefined;
6985
+ dormerFace?: "back" | "front" | "left" | "right" | undefined;
6986
+ roofSegmentId?: string | undefined;
6987
+ roofFace?: "back" | "front" | "left" | "right" | undefined;
6988
+ width: number;
6989
+ height: number;
6990
+ mark?: string | undefined;
6991
+ constructionType: "framed" | "masonry";
6992
+ dimensionReference: "finish-opening" | "masonry-opening" | "nominal" | "rough-opening";
6993
+ roughOpeningWidth?: number | undefined;
6994
+ roughOpeningHeight?: number | undefined;
6995
+ masonryOpeningWidth?: number | undefined;
6996
+ masonryOpeningHeight?: number | undefined;
6997
+ finishOpeningWidth?: number | undefined;
6998
+ finishOpeningHeight?: number | undefined;
6999
+ openingKind: "opening" | "window";
7000
+ windowType: "awning" | "bay" | "bow" | "casement" | "double-hung" | "fixed" | "hopper" | "louvered" | "single-hung" | "sliding" | "tilt-turn";
7001
+ operationState: number;
7002
+ openingDirection?: "inward" | "outward" | undefined;
7003
+ tiltTurnMode?: "tilt" | "turn" | undefined;
7004
+ awningDirection: "down" | "up";
7005
+ casementStyle: "french" | "single";
7006
+ hingesSide: "left" | "right";
7007
+ openingShape: "arch" | "rectangle" | "rounded";
7008
+ openingRadiusMode: "all" | "individual";
7009
+ openingCornerRadii: [number, number, number, number];
7010
+ cornerRadius: number;
7011
+ archHeight: number;
7012
+ openingRevealRadius: number;
7013
+ frameThickness: number;
7014
+ frameDepth?: number | undefined;
7015
+ windowHandle?: boolean | undefined;
7016
+ sashGrid?: boolean | undefined;
7017
+ columnRatios: number[];
7018
+ rowRatios: number[];
7019
+ columnDividerThickness: number;
7020
+ rowDividerThickness: number;
7021
+ corner?: {
7022
+ end: "end" | "start";
7023
+ partnerId: string;
7024
+ post: "none" | "post";
7025
+ } | undefined;
7026
+ sill: boolean;
7027
+ sillDepth: number;
7028
+ sillThickness: number;
7029
+ sillOverhang?: number | undefined;
7030
+ sillInterior?: boolean | undefined;
7031
+ sillInteriorDepth?: number | undefined;
7032
+ sillInteriorThickness?: number | undefined;
7033
+ sillInteriorOverhang?: number | undefined;
7034
+ shutters?: "board-batten" | "louvered" | "none" | "panel" | undefined;
7035
+ shutterWidth?: number | undefined;
7036
+ shutterOpen?: number | undefined;
7037
+ shutterSides?: "both" | "left" | "right" | undefined;
7038
+ rollerShutter?: "box" | "concealed" | "none" | undefined;
7039
+ rollerShutterBoxHeight?: number | undefined;
7040
+ rollerShutterOpen?: number | undefined;
7041
+ casingFaceA?: boolean | undefined;
7042
+ casingFaceB?: boolean | undefined;
7043
+ casingWidth?: number | undefined;
7044
+ type: "window";
7081
7045
  } | {
7082
7046
  object: "node";
7083
7047
  name?: string | undefined;
@@ -7610,7 +7574,7 @@ export declare function retainSceneAnnotations(before: Record<AnyNodeId, AnyNode
7610
7574
  cavityInsulation?: string | undefined;
7611
7575
  } | undefined;
7612
7576
  slots?: Record<string, string> | undefined;
7613
- children: `rseg_${string}`[];
7577
+ children: string[];
7614
7578
  type: "roof";
7615
7579
  } | {
7616
7580
  object: "node";
@@ -8638,6 +8602,66 @@ export declare function retainSceneAnnotations(before: Record<AnyNodeId, AnyNode
8638
8602
  topElevation?: number | undefined;
8639
8603
  supportSlabId?: string | undefined;
8640
8604
  type: "beam";
8605
+ } | {
8606
+ object: "node";
8607
+ name?: string | undefined;
8608
+ parentId: string | null;
8609
+ visible: boolean;
8610
+ camera?: {
8611
+ position: [number, number, number];
8612
+ target: [number, number, number];
8613
+ mode: "orthographic" | "perspective";
8614
+ fov?: number | undefined;
8615
+ zoom?: number | undefined;
8616
+ } | undefined;
8617
+ metadata: Record<string, unknown>;
8618
+ provenance?: {
8619
+ refs: {
8620
+ ns?: string | undefined;
8621
+ id: string;
8622
+ role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
8623
+ }[];
8624
+ lineage?: {
8625
+ op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
8626
+ fromIds: string[];
8627
+ } | undefined;
8628
+ } | undefined;
8629
+ id: `construction-dimension_${string}`;
8630
+ anchors: ({
8631
+ kind: "feature";
8632
+ reference: {
8633
+ nodeId: string;
8634
+ featureId: string;
8635
+ parameters?: Record<string, string | number | boolean> | undefined;
8636
+ };
8637
+ fallback: [number, number, number];
8638
+ } | [number, number, number])[];
8639
+ baseline: {
8640
+ origin: [number, number];
8641
+ direction: [number, number];
8642
+ };
8643
+ chainMode: "continuous" | "point-to-point";
8644
+ mode: "angular" | "arc-length" | "center-mark" | "chord" | "coordinate" | "diameter" | "linear" | "radius";
8645
+ featureCount: number;
8646
+ showCenterMark: boolean;
8647
+ prefix: string;
8648
+ suffix: string;
8649
+ textOverride: string | null;
8650
+ datumPolicy: "centerline" | "finish-face" | "structural-face" | "wall-face";
8651
+ terminator: "architectural-tick" | "dot" | "filled-arrow" | "open-arrow";
8652
+ textPosition: "above" | "centered";
8653
+ imperialPrecision: "1" | "1/16" | "1/2" | "1/4" | "1/8";
8654
+ metricNotation: "meters" | "millimeters";
8655
+ extensionStartGap: number;
8656
+ extensionOvershoot: number;
8657
+ drawingType: "floor-plan" | "foundation-plan" | "reflected-ceiling-plan" | "roof-plan" | "site-plan";
8658
+ drawingOverrides: {
8659
+ drawingType: "floor-plan" | "foundation-plan" | "reflected-ceiling-plan" | "roof-plan" | "site-plan";
8660
+ presentation: "controlled" | "omit" | "shown";
8661
+ suppressedSegmentIndexes: number[];
8662
+ }[];
8663
+ controllingDimensionId: `construction-dimension_${string}` | null;
8664
+ type: "construction-dimension";
8641
8665
  } | {
8642
8666
  object: "node";
8643
8667
  name?: string | undefined;
@@ -9148,20 +9172,112 @@ export declare function retainSceneAnnotations(before: Record<AnyNodeId, AnyNode
9148
9172
  face: "a" | "b";
9149
9173
  finish: string;
9150
9174
  }[] | undefined;
9151
- hasFloor?: false | undefined;
9152
- hasCeiling?: false | undefined;
9153
- spaceRole: "generic" | "room";
9154
- roomNumber: string;
9155
- enclosureStatus: "auto" | "enclosed" | "open";
9156
- floorFinish: string;
9157
- wallFinish: string;
9158
- ceilingFinish: string;
9159
- ceilingHeight: number;
9160
- occupancy: string;
9161
- clearDimensionPolicy: "finish-faces" | "inside-faces" | "none";
9162
- color: string;
9163
- metadata: Record<string, unknown>;
9164
- type: "zone";
9175
+ hasFloor?: false | undefined;
9176
+ hasCeiling?: false | undefined;
9177
+ spaceRole: "generic" | "room";
9178
+ roomNumber: string;
9179
+ enclosureStatus: "auto" | "enclosed" | "open";
9180
+ floorFinish: string;
9181
+ wallFinish: string;
9182
+ ceilingFinish: string;
9183
+ ceilingHeight: number;
9184
+ occupancy: string;
9185
+ clearDimensionPolicy: "finish-faces" | "inside-faces" | "none";
9186
+ color: string;
9187
+ metadata: Record<string, unknown>;
9188
+ type: "zone";
9189
+ } | {
9190
+ object: "node";
9191
+ name?: string | undefined;
9192
+ parentId: string | null;
9193
+ visible: boolean;
9194
+ camera?: {
9195
+ position: [number, number, number];
9196
+ target: [number, number, number];
9197
+ mode: "orthographic" | "perspective";
9198
+ fov?: number | undefined;
9199
+ zoom?: number | undefined;
9200
+ } | undefined;
9201
+ metadata: Record<string, unknown>;
9202
+ provenance?: {
9203
+ refs: {
9204
+ ns?: string | undefined;
9205
+ id: string;
9206
+ role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
9207
+ }[];
9208
+ lineage?: {
9209
+ op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
9210
+ fromIds: string[];
9211
+ } | undefined;
9212
+ } | undefined;
9213
+ id: `ceiling_${string}`;
9214
+ children: (`item_${string}` | `procedural-item_${string}`)[];
9215
+ material?: {
9216
+ id?: string | undefined;
9217
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
9218
+ properties?: {
9219
+ color: string;
9220
+ roughness: number;
9221
+ metalness: number;
9222
+ opacity: number;
9223
+ transparent: boolean;
9224
+ side: "back" | "double" | "front";
9225
+ } | undefined;
9226
+ texture?: {
9227
+ url: string;
9228
+ repeat?: [number, number] | undefined;
9229
+ scale?: number | undefined;
9230
+ offset?: [number, number] | undefined;
9231
+ normalMap?: string | undefined;
9232
+ normalScale?: number | undefined;
9233
+ bumpMap?: string | undefined;
9234
+ bumpScale?: number | undefined;
9235
+ } | undefined;
9236
+ } | undefined;
9237
+ materialPreset?: string | undefined;
9238
+ slots?: Record<string, string> | undefined;
9239
+ polygon: [number, number][];
9240
+ holes: [number, number][][];
9241
+ holeMetadata: {
9242
+ source: "elevator" | "floor-opening" | "manual" | "room" | "stair";
9243
+ openingId?: string | undefined;
9244
+ stairId?: string | undefined;
9245
+ elevatorId?: string | undefined;
9246
+ }[];
9247
+ openingIds?: string[] | undefined;
9248
+ height?: number | undefined;
9249
+ buildUp?: {
9250
+ presetId?: string | undefined;
9251
+ finish?: {
9252
+ kind: "drywall" | "plaster" | "wood-plank";
9253
+ thickness: number;
9254
+ name?: string | undefined;
9255
+ } | undefined;
9256
+ framing?: {
9257
+ system: "joists" | "truss-chords";
9258
+ size: "2x10" | "2x12" | "2x4" | "2x6" | "2x8";
9259
+ spacing: number;
9260
+ } | undefined;
9261
+ decking?: {
9262
+ kind: "osb" | "plywood";
9263
+ thickness: number;
9264
+ name?: string | undefined;
9265
+ } | undefined;
9266
+ insulation?: {
9267
+ kind: "batt" | "blown" | "rigid";
9268
+ thickness: number;
9269
+ name?: string | undefined;
9270
+ } | undefined;
9271
+ } | undefined;
9272
+ regions?: {
9273
+ id: string;
9274
+ polygon: [number, number][];
9275
+ finish: string | Record<string, unknown>;
9276
+ }[] | undefined;
9277
+ boundary?: "auto" | undefined;
9278
+ zoneId?: string | undefined;
9279
+ autoFromWalls: boolean;
9280
+ type: "ceiling";
9165
9281
  } | {
9166
9282
  object: "node";
9167
9283
  name?: string | undefined;
@@ -9767,53 +9883,6 @@ export declare function retainSceneAnnotations(before: Record<AnyNodeId, AnyNode
9767
9883
  system: "return" | "supply";
9768
9884
  slots?: Record<string, string> | undefined;
9769
9885
  type: "duct-segment";
9770
- } | {
9771
- object: "node";
9772
- name?: string | undefined;
9773
- parentId: string | null;
9774
- visible: boolean;
9775
- camera?: {
9776
- position: [number, number, number];
9777
- target: [number, number, number];
9778
- mode: "orthographic" | "perspective";
9779
- fov?: number | undefined;
9780
- zoom?: number | undefined;
9781
- } | undefined;
9782
- metadata: Record<string, unknown>;
9783
- provenance?: {
9784
- refs: {
9785
- ns?: string | undefined;
9786
- id: string;
9787
- role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
9788
- }[];
9789
- lineage?: {
9790
- op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
9791
- fromIds: string[];
9792
- } | undefined;
9793
- } | undefined;
9794
- id: `duct-fitting_${string}`;
9795
- position: [number, number, number];
9796
- rotation: [number, number, number];
9797
- fittingType: "access-panel" | "coupling" | "cross" | "damper" | "elbow" | "end-cap" | "reducer" | "tee" | "transition";
9798
- shape: "oval" | "rect" | "round";
9799
- inletShape?: "oval" | "rect" | "round" | undefined;
9800
- outletShape?: "oval" | "rect" | "round" | undefined;
9801
- width: number;
9802
- height: number;
9803
- shape2: "oval" | "rect" | "round";
9804
- width2: number;
9805
- height2: number;
9806
- angle: number;
9807
- branchAngle: number;
9808
- diameter: number;
9809
- diameter2: number;
9810
- ductMaterial: "duct-board" | "flex" | "sheet-metal";
9811
- system: "return" | "supply";
9812
- damperAngle: number;
9813
- panelWidth: number;
9814
- panelHeight: number;
9815
- slots?: Record<string, string> | undefined;
9816
- type: "duct-fitting";
9817
9886
  } | {
9818
9887
  object: "node";
9819
9888
  name?: string | undefined;
@@ -9851,47 +9920,6 @@ export declare function retainSceneAnnotations(before: Record<AnyNodeId, AnyNode
9851
9920
  collarWidth: number;
9852
9921
  collarHeight: number;
9853
9922
  type: "duct-terminal";
9854
- } | {
9855
- object: "node";
9856
- name?: string | undefined;
9857
- parentId: string | null;
9858
- visible: boolean;
9859
- camera?: {
9860
- position: [number, number, number];
9861
- target: [number, number, number];
9862
- mode: "orthographic" | "perspective";
9863
- fov?: number | undefined;
9864
- zoom?: number | undefined;
9865
- } | undefined;
9866
- metadata: Record<string, unknown>;
9867
- provenance?: {
9868
- refs: {
9869
- ns?: string | undefined;
9870
- id: string;
9871
- role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
9872
- }[];
9873
- lineage?: {
9874
- op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
9875
- fromIds: string[];
9876
- } | undefined;
9877
- } | undefined;
9878
- id: `hvac-equipment_${string}`;
9879
- position: [number, number, number];
9880
- rotation: number;
9881
- supportSlabId?: string | undefined;
9882
- equipmentType: "air-handler" | "condenser" | "furnace";
9883
- width: number;
9884
- depth: number;
9885
- height: number;
9886
- supplyShape: "oval" | "rect" | "round";
9887
- returnShape: "oval" | "rect" | "round";
9888
- supplyDiameter: number;
9889
- returnDiameter: number;
9890
- supplyWidth: number;
9891
- supplyHeight: number;
9892
- returnWidth: number;
9893
- returnHeight: number;
9894
- type: "hvac-equipment";
9895
9923
  } | {
9896
9924
  object: "node";
9897
9925
  name?: string | undefined;
@@ -10020,17 +10048,13 @@ export declare function retainSceneAnnotations(before: Record<AnyNodeId, AnyNode
10020
10048
  fromIds: string[];
10021
10049
  } | undefined;
10022
10050
  } | undefined;
10023
- id: `pipe-fitting_${string}`;
10051
+ id: `pipe-trap_${string}`;
10024
10052
  position: [number, number, number];
10025
- rotation: [number, number, number];
10026
- fittingType: "cleanout" | "coupling" | "cross" | "elbow" | "end-cap" | "reducer" | "sanitary-tee" | "wye";
10027
- angle: number;
10053
+ rotation: number;
10028
10054
  diameter: number;
10029
- diameter2: number;
10030
- cleanoutStyle: "end" | "inline";
10031
10055
  pipeMaterial: "abs" | "cast-iron" | "pvc";
10032
- system: "vent" | "waste";
10033
- type: "pipe-fitting";
10056
+ armLengthM: number;
10057
+ type: "pipe-trap";
10034
10058
  } | {
10035
10059
  object: "node";
10036
10060
  name?: string | undefined;
@@ -10055,13 +10079,12 @@ export declare function retainSceneAnnotations(before: Record<AnyNodeId, AnyNode
10055
10079
  fromIds: string[];
10056
10080
  } | undefined;
10057
10081
  } | undefined;
10058
- id: `pipe-trap_${string}`;
10059
- position: [number, number, number];
10060
- rotation: number;
10061
- diameter: number;
10062
- pipeMaterial: "abs" | "cast-iron" | "pvc";
10063
- armLengthM: number;
10064
- type: "pipe-trap";
10082
+ id: `level_${string}`;
10083
+ 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}`)[];
10084
+ level: number;
10085
+ baseElevation: number;
10086
+ height?: number | undefined;
10087
+ type: "level";
10065
10088
  } | {
10066
10089
  object: "node";
10067
10090
  name?: string | undefined;
@@ -10086,12 +10109,54 @@ export declare function retainSceneAnnotations(before: Record<AnyNodeId, AnyNode
10086
10109
  fromIds: string[];
10087
10110
  } | undefined;
10088
10111
  } | undefined;
10089
- id: `level_${string}`;
10090
- 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}`)[];
10091
- level: number;
10092
- baseElevation: number;
10093
- height?: number | undefined;
10094
- type: "level";
10112
+ id: `elevator_${string}`;
10113
+ material?: {
10114
+ id?: string | undefined;
10115
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
10116
+ properties?: {
10117
+ color: string;
10118
+ roughness: number;
10119
+ metalness: number;
10120
+ opacity: number;
10121
+ transparent: boolean;
10122
+ side: "back" | "double" | "front";
10123
+ } | undefined;
10124
+ texture?: {
10125
+ url: string;
10126
+ repeat?: [number, number] | undefined;
10127
+ scale?: number | undefined;
10128
+ offset?: [number, number] | undefined;
10129
+ normalMap?: string | undefined;
10130
+ normalScale?: number | undefined;
10131
+ bumpMap?: string | undefined;
10132
+ bumpScale?: number | undefined;
10133
+ } | undefined;
10134
+ } | undefined;
10135
+ materialPreset?: string | undefined;
10136
+ slots?: Record<string, string> | undefined;
10137
+ position: [number, number, number];
10138
+ rotation: number;
10139
+ width: number;
10140
+ depth: number;
10141
+ shaftWidth?: number | undefined;
10142
+ shaftDepth?: number | undefined;
10143
+ shaftWallThickness: number;
10144
+ shaftStyle: "glass" | "solid";
10145
+ cabHeight: number;
10146
+ doorWidth: number;
10147
+ doorHeight: number;
10148
+ doorStyle: "center-opening" | "single-left" | "single-right";
10149
+ doorPanelStyle: "glass-frame" | "segmented-panel" | "solid-panel";
10150
+ fromLevelId: string | null;
10151
+ toLevelId: string | null;
10152
+ servedLevelIds?: string[] | undefined;
10153
+ disabledLevelIds: string[];
10154
+ serviceOnlyLevelIds: string[];
10155
+ defaultLevelId: string | null;
10156
+ speed: number;
10157
+ doorDurationMs: number;
10158
+ dwellMs: number;
10159
+ type: "elevator";
10095
10160
  } | {
10096
10161
  object: "node";
10097
10162
  parentId: string | null;
@@ -10557,71 +10622,6 @@ export declare function retainSceneAnnotations(before: Record<AnyNodeId, AnyNode
10557
10622
  topFinishHeight: number;
10558
10623
  topFinishDepth: number;
10559
10624
  type: "cabinet-module";
10560
- } | {
10561
- object: "node";
10562
- name?: string | undefined;
10563
- parentId: string | null;
10564
- visible: boolean;
10565
- camera?: {
10566
- position: [number, number, number];
10567
- target: [number, number, number];
10568
- mode: "orthographic" | "perspective";
10569
- fov?: number | undefined;
10570
- zoom?: number | undefined;
10571
- } | undefined;
10572
- metadata: Record<string, unknown>;
10573
- provenance?: {
10574
- refs: {
10575
- ns?: string | undefined;
10576
- id: string;
10577
- role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
10578
- }[];
10579
- lineage?: {
10580
- op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
10581
- fromIds: string[];
10582
- } | undefined;
10583
- } | undefined;
10584
- id: `bvent_${string}`;
10585
- material?: {
10586
- id?: string | undefined;
10587
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
10588
- properties?: {
10589
- color: string;
10590
- roughness: number;
10591
- metalness: number;
10592
- opacity: number;
10593
- transparent: boolean;
10594
- side: "back" | "double" | "front";
10595
- } | undefined;
10596
- texture?: {
10597
- url: string;
10598
- repeat?: [number, number] | undefined;
10599
- scale?: number | undefined;
10600
- offset?: [number, number] | undefined;
10601
- normalMap?: string | undefined;
10602
- normalScale?: number | undefined;
10603
- bumpMap?: string | undefined;
10604
- bumpScale?: number | undefined;
10605
- } | undefined;
10606
- } | undefined;
10607
- slots?: Record<string, string> | undefined;
10608
- materialPreset: string;
10609
- roofSegmentId?: string | undefined;
10610
- position: [number, number, number];
10611
- rotation: number;
10612
- width: number;
10613
- depth: number;
10614
- height: number;
10615
- hoodOverhang: number;
10616
- topTaper: number;
10617
- capHeight: number;
10618
- capGap: number;
10619
- domeCurvature: number;
10620
- baseInset: number;
10621
- baseHeight: number;
10622
- cornerBevel: number;
10623
- style: "box" | "cap" | "dome";
10624
- type: "box-vent";
10625
10625
  } | {
10626
10626
  object: "node";
10627
10627
  name?: string | undefined;