@pascal-app/core 1.1.0 → 1.1.1

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 (124) 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 +12209 -12209
  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 +7 -1
  13. package/dist/agent-operations/batch.d.ts.map +1 -1
  14. package/dist/agent-operations/batch.js +17 -2
  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 +2963 -2963
  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 +3 -0
  24. package/dist/agent-operations/index.d.ts.map +1 -1
  25. package/dist/agent-operations/index.js +4 -1
  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 +585 -585
  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 +3 -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-tools/assets.js +1 -1
  41. package/dist/building/__fixtures__/wall-opening-cases.d.ts +234 -234
  42. package/dist/building/level-duplication.d.ts +3516 -3516
  43. package/dist/building/level-duplication.d.ts.map +1 -1
  44. package/dist/building/level-duplication.js +3 -1
  45. package/dist/building/wall-openings.d.ts +75 -75
  46. package/dist/commands/structure/shared.d.ts +3407 -3407
  47. package/dist/commands/structure/zone-wall-merge.d.ts +566 -566
  48. package/dist/hooks/spatial-grid/spatial-grid-sync.d.ts +585 -585
  49. package/dist/index.d.ts +2 -0
  50. package/dist/index.d.ts.map +1 -1
  51. package/dist/index.js +2 -0
  52. package/dist/lib/__fixtures__/mezzanine.d.ts +9262 -9262
  53. package/dist/lib/absorb-wall-separators.d.ts +1344 -1344
  54. package/dist/lib/asset-storage.d.ts.map +1 -1
  55. package/dist/lib/asset-storage.js +3 -0
  56. package/dist/lib/floor-foundation-datum.d.ts.map +1 -1
  57. package/dist/lib/floor-foundation-datum.js +5 -1
  58. package/dist/lib/floorplan/context.d.ts +95 -0
  59. package/dist/lib/floorplan/context.d.ts.map +1 -0
  60. package/dist/lib/floorplan/context.js +155 -0
  61. package/dist/lib/floorplan/index.d.ts +6 -0
  62. package/dist/lib/floorplan/index.d.ts.map +1 -0
  63. package/dist/lib/floorplan/index.js +5 -0
  64. package/dist/lib/floorplan/marks.d.ts +71 -0
  65. package/dist/lib/floorplan/marks.d.ts.map +1 -0
  66. package/dist/lib/floorplan/marks.js +157 -0
  67. package/dist/lib/floorplan/plan-math.d.ts +18 -0
  68. package/dist/lib/floorplan/plan-math.d.ts.map +1 -0
  69. package/dist/lib/floorplan/plan-math.js +82 -0
  70. package/dist/lib/floorplan/svg-paths.d.ts +17 -0
  71. package/dist/lib/floorplan/svg-paths.d.ts.map +1 -0
  72. package/dist/lib/floorplan/svg-paths.js +92 -0
  73. package/dist/lib/floorplan/wall-affordances.d.ts +31 -0
  74. package/dist/lib/floorplan/wall-affordances.d.ts.map +1 -0
  75. package/dist/lib/floorplan/wall-affordances.js +24 -0
  76. package/dist/registry/__fixtures__/roof-planes.d.ts +69 -0
  77. package/dist/registry/__fixtures__/roof-planes.d.ts.map +1 -0
  78. package/dist/registry/__fixtures__/roof-planes.js +59 -0
  79. package/dist/registry/index.d.ts +2 -1
  80. package/dist/registry/index.d.ts.map +1 -1
  81. package/dist/registry/index.js +1 -0
  82. package/dist/registry/roofs.d.ts +34 -0
  83. package/dist/registry/roofs.d.ts.map +1 -0
  84. package/dist/registry/roofs.js +61 -0
  85. package/dist/registry/types.d.ts +30 -0
  86. package/dist/registry/types.d.ts.map +1 -1
  87. package/dist/registry/validate-relations.d.ts +5 -1
  88. package/dist/registry/validate-relations.d.ts.map +1 -1
  89. package/dist/registry/validate-relations.js +6 -2
  90. package/dist/schema/asset-url.d.ts +8 -0
  91. package/dist/schema/asset-url.d.ts.map +1 -1
  92. package/dist/schema/asset-url.js +17 -0
  93. package/dist/schema/nodes/roof.d.ts +1 -1
  94. package/dist/schema/nodes/roof.d.ts.map +1 -1
  95. package/dist/schema/nodes/roof.js +13 -8
  96. package/dist/schema/types.d.ts +1 -1
  97. package/dist/services/roof-level.d.ts.map +1 -1
  98. package/dist/services/roof-level.js +12 -2
  99. package/dist/services/roof-move.d.ts +4 -2
  100. package/dist/services/roof-move.d.ts.map +1 -1
  101. package/dist/services/roof-move.js +21 -9
  102. package/dist/spatial/usage-field/findings.d.ts +7 -1
  103. package/dist/spatial/usage-field/findings.d.ts.map +1 -1
  104. package/dist/spatial/usage-field/findings.js +42 -10
  105. package/dist/spatial/usage-field/path.d.ts.map +1 -1
  106. package/dist/spatial/usage-field/path.js +28 -18
  107. package/dist/store/actions/node-actions.d.ts +1641 -1641
  108. package/dist/store/scene-annotations.d.ts +1778 -1778
  109. package/dist/systems/document-reconcile.d.ts.map +1 -1
  110. package/dist/systems/document-reconcile.js +1 -2
  111. package/dist/systems/roof/roof-elevation.d.ts +11 -6
  112. package/dist/systems/roof/roof-elevation.d.ts.map +1 -1
  113. package/dist/systems/roof/roof-elevation.js +24 -11
  114. package/dist/systems/slab/__fixtures__/floor-step.d.ts +1622 -1622
  115. package/dist/systems/slab/__fixtures__/raised-room.d.ts +585 -585
  116. package/dist/systems/stair/stair-opening-preview.d.ts +1919 -1919
  117. package/dist/utils/ensure-scene-openings.d.ts +3409 -3409
  118. package/dist/utils/floor-plate-migration.d.ts +1344 -1344
  119. package/dist/utils/owned-floor-opening-migration.d.ts +1344 -1344
  120. package/dist/utils/reconcile-structure-on-load.d.ts +1641 -1641
  121. package/dist/utils/scene-bounds.d.ts +32 -0
  122. package/dist/utils/scene-bounds.d.ts.map +1 -0
  123. package/dist/utils/scene-bounds.js +201 -0
  124. package/package.json +1 -1
@@ -2131,47 +2131,18 @@ export declare function raisedRoomFixture(neighbor?: boolean, terrain?: boolean)
2131
2131
  fromIds: string[];
2132
2132
  } | undefined;
2133
2133
  } | undefined;
2134
- id: `bvent_${string}`;
2135
- material?: {
2136
- id?: string | undefined;
2137
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
2138
- properties?: {
2139
- color: string;
2140
- roughness: number;
2141
- metalness: number;
2142
- opacity: number;
2143
- transparent: boolean;
2144
- side: "back" | "double" | "front";
2145
- } | undefined;
2146
- texture?: {
2147
- url: string;
2148
- repeat?: [number, number] | undefined;
2149
- scale?: number | undefined;
2150
- offset?: [number, number] | undefined;
2151
- normalMap?: string | undefined;
2152
- normalScale?: number | undefined;
2153
- bumpMap?: string | undefined;
2154
- bumpScale?: number | undefined;
2155
- } | undefined;
2156
- } | undefined;
2157
- slots?: Record<string, string> | undefined;
2158
- materialPreset: string;
2159
- roofSegmentId?: string | undefined;
2160
- position: [number, number, number];
2161
- rotation: number;
2134
+ id: `beam_${string}`;
2135
+ start: [number, number];
2136
+ end: [number, number];
2162
2137
  width: number;
2163
2138
  depth: number;
2164
- height: number;
2165
- hoodOverhang: number;
2166
- topTaper: number;
2167
- capHeight: number;
2168
- capGap: number;
2169
- domeCurvature: number;
2170
- baseInset: number;
2171
- baseHeight: number;
2172
- cornerBevel: number;
2173
- style: "box" | "cap" | "dome";
2174
- type: "box-vent";
2139
+ size?: string | undefined;
2140
+ plies: number;
2141
+ material: "glulam" | "lvl" | "pressure-treated" | "sawn" | "steel";
2142
+ placement: "dropped" | "flush";
2143
+ topElevation?: number | undefined;
2144
+ supportSlabId?: string | undefined;
2145
+ type: "beam";
2175
2146
  } | {
2176
2147
  object: "node";
2177
2148
  name?: string | undefined;
@@ -2196,223 +2167,89 @@ export declare function raisedRoomFixture(neighbor?: boolean, terrain?: boolean)
2196
2167
  fromIds: string[];
2197
2168
  } | undefined;
2198
2169
  } | undefined;
2199
- id: `column_${string}`;
2200
- children: string[];
2201
- position: [number, number, number];
2202
- rotation: number;
2203
- supportSlabId?: string | undefined;
2204
- source?: {
2205
- kind: "script";
2206
- meta?: {
2207
- description?: string | undefined;
2208
- category?: string | undefined;
2209
- tags?: string[] | undefined;
2210
- parent?: string | undefined;
2211
- } | undefined;
2212
- language: "bpy" | "three";
2213
- script: string;
2214
- params: Record<string, string | number | boolean>;
2215
- artifact: string;
2216
- manifest: {
2217
- bounds: {
2218
- min: [number, number, number];
2219
- max: [number, number, number];
2170
+ id: `measurement_${string}`;
2171
+ measurement: {
2172
+ kind: "volume";
2173
+ base: ({
2174
+ kind: "feature";
2175
+ reference: {
2176
+ nodeId: string;
2177
+ featureId: string;
2178
+ parameters?: Record<string, string | number | boolean> | undefined;
2220
2179
  };
2221
- params: {
2222
- id: string;
2223
- label?: string | undefined;
2224
- kind: "boolean" | "number" | "string";
2225
- default: string | number | boolean;
2226
- min?: number | undefined;
2227
- max?: number | undefined;
2228
- step?: number | undefined;
2229
- unit?: string | undefined;
2230
- options?: string[] | undefined;
2231
- }[];
2232
- parts: {
2233
- id: string;
2234
- label?: string | undefined;
2235
- type?: string | undefined;
2236
- bounds?: {
2237
- min: [number, number, number];
2238
- max: [number, number, number];
2239
- } | undefined;
2240
- }[];
2241
- surfaces: {
2242
- part?: string | undefined;
2243
- y: number;
2244
- polygon: [number, number][];
2245
- }[];
2246
- slots: {
2247
- id: string;
2248
- label?: string | undefined;
2249
- color?: string | undefined;
2250
- roughness?: number | undefined;
2251
- metalness?: number | undefined;
2252
- transparent?: boolean | undefined;
2253
- emissive?: boolean | undefined;
2254
- }[];
2255
- anchors: {
2256
- id: string;
2257
- position: [number, number, number];
2258
- normal?: [number, number, number] | undefined;
2259
- }[];
2260
- lights: {
2261
- id: string;
2262
- position: [number, number, number];
2263
- color: string;
2264
- intensity: number;
2265
- distance?: number | undefined;
2266
- spot?: {
2267
- direction: [number, number, number];
2268
- angle: number;
2269
- softness: number;
2270
- } | undefined;
2271
- shadows?: boolean | undefined;
2272
- glow?: {
2273
- size: number;
2274
- strength: number;
2275
- } | undefined;
2276
- }[];
2277
- undersides: {
2278
- part?: string | undefined;
2279
- polygon: [number, number][];
2280
- plane: [number, number, number, number];
2281
- }[];
2282
- animations: {
2283
- name: string;
2284
- duration: number;
2285
- }[];
2286
- cutters?: {
2287
- host: "ceiling" | "mounted" | "slab" | "wall";
2288
- polygon: number[][];
2289
- minY: number;
2290
- maxY: number;
2291
- }[] | undefined;
2292
- cutout: boolean;
2293
- collider: boolean;
2294
- shape?: {
2295
- tolerance: number;
2296
- bands: {
2297
- y0: number;
2298
- y1: number;
2299
- polygons: {
2300
- outer: [number, number][];
2301
- holes?: [number, number][][] | undefined;
2302
- }[];
2303
- }[];
2304
- } | undefined;
2305
- triangles: number;
2306
- coverage?: number | undefined;
2307
- uncovered?: {
2308
- min: [number, number];
2309
- max: [number, number];
2310
- }[] | undefined;
2311
- };
2312
- images?: {
2313
- artifact: string;
2314
- thumbnail: string;
2315
- floorPlan: string;
2316
- } | undefined;
2317
- } | undefined;
2318
- style: "cluster" | "dravidian-carved" | "faceted" | "fluted" | "lathe-turned" | "plain";
2319
- crossSection: "octagonal" | "rectangular" | "round" | "sixteen-sided" | "square";
2320
- height: number;
2321
- radius: number;
2322
- width: number;
2323
- depth: number;
2324
- edgeSoftness: number;
2325
- baseHeight: number;
2326
- capitalHeight: number;
2327
- shaftProfile: "baluster" | "bulged" | "hourglass" | "straight" | "tapered";
2328
- shaftTaper: number;
2329
- shaftBulge: number;
2330
- shaftStartScale: number;
2331
- shaftEndScale: number;
2332
- shaftSegmentCount: number;
2333
- shaftTwistStep: number;
2334
- shaftCornerRadius: number;
2335
- shaftDetail: "fluted" | "lathe-turned" | "none" | "panelled" | "spiral";
2336
- baseStyle: "lotus" | "none" | "panelled-pedestal" | "ribbed-lotus" | "round-rings" | "simple-square" | "square-plinth" | "stepped-square";
2337
- baseWidthScale: number;
2338
- baseDepthScale: number;
2339
- baseTierCount: number;
2340
- baseStepSpread: number;
2341
- basePlinthHeightRatio: number;
2342
- baseRoundBandScale: number;
2343
- baseNeckScale: number;
2344
- baseRoundBandCount: number;
2345
- baseRibCount: number;
2346
- baseCarvingLevel: number;
2347
- basePanelInset: number;
2348
- capitalStyle: "corinthian-leaf" | "doric" | "ionic-volute" | "leaf-carved" | "none" | "rounded" | "simple" | "simple-slab" | "south-indian-bracket" | "stepped" | "volute" | "wood-bracket";
2349
- capitalWidthScale: number;
2350
- capitalDepthScale: number;
2351
- capitalTierCount: number;
2352
- capitalStepSpread: number;
2353
- capitalBandCount: number;
2354
- voluteSize: number;
2355
- voluteCount: number;
2356
- leafCount: number;
2357
- leafRows: number;
2358
- bracketDepth: number;
2359
- bracketTierCount: number;
2360
- pendantCount: number;
2361
- capitalCarvingLevel: number;
2362
- ringCount: number;
2363
- ringPlacement: "bottom" | "ends" | "even" | "top";
2364
- ringThickness: number;
2365
- ringSpread: number;
2366
- fluteCount: number;
2367
- fluteDepth: number;
2368
- fluteWidth: number;
2369
- spiralTwist: number;
2370
- spiralRibCount: number;
2371
- panelCount: number;
2372
- panelInsetDepth: number;
2373
- panelShape: "arched" | "diamond" | "rectangle";
2374
- latheRingCount: number;
2375
- latheRingSpacing: "bottom" | "ends" | "even" | "top";
2376
- carvingLevel: number;
2377
- carvingPlacement: "all" | "base" | "capital" | "shaft";
2378
- lowerBandEnabled: boolean;
2379
- lowerBandHeight: number;
2380
- lowerBandCarvingLevel: number;
2381
- dentilCount: number;
2382
- beadCount: number;
2383
- supportStyle: "a-frame" | "box-frame" | "k-brace" | "portal-frame" | "single-strut" | "trestle" | "tripod" | "v-frame" | "vertical" | "x-brace" | "y-frame";
2384
- braceWidth: number;
2385
- braceDepth: number;
2386
- braceBottomSpread: number;
2387
- braceTopSpread: number;
2388
- bracePlateEnabled: boolean;
2389
- role?: "ornament" | "post" | undefined;
2390
- postBase?: "none" | "pier" | "post-base" | undefined;
2391
- material?: {
2392
- id?: string | undefined;
2393
- preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
2394
- properties?: {
2395
- color: string;
2396
- roughness: number;
2397
- metalness: number;
2398
- opacity: number;
2399
- transparent: boolean;
2400
- side: "back" | "double" | "front";
2401
- } | undefined;
2402
- texture?: {
2403
- url: string;
2404
- repeat?: [number, number] | undefined;
2405
- scale?: number | undefined;
2406
- offset?: [number, number] | undefined;
2407
- normalMap?: string | undefined;
2408
- normalScale?: number | undefined;
2409
- bumpMap?: string | undefined;
2410
- bumpScale?: number | undefined;
2411
- } | undefined;
2412
- } | undefined;
2413
- materialPreset?: string | undefined;
2414
- slots?: Record<string, string> | undefined;
2415
- type: "column";
2180
+ fallback: [number, number, number];
2181
+ } | [number, number, number])[];
2182
+ extrusion: [number, number, number];
2183
+ } | {
2184
+ kind: "distance";
2185
+ points: [{
2186
+ kind: "feature";
2187
+ reference: {
2188
+ nodeId: string;
2189
+ featureId: string;
2190
+ parameters?: Record<string, string | number | boolean> | undefined;
2191
+ };
2192
+ fallback: [number, number, number];
2193
+ } | [number, number, number], {
2194
+ kind: "feature";
2195
+ reference: {
2196
+ nodeId: string;
2197
+ featureId: string;
2198
+ parameters?: Record<string, string | number | boolean> | undefined;
2199
+ };
2200
+ fallback: [number, number, number];
2201
+ } | [number, number, number]];
2202
+ } | {
2203
+ kind: "angle";
2204
+ points: [{
2205
+ kind: "feature";
2206
+ reference: {
2207
+ nodeId: string;
2208
+ featureId: string;
2209
+ parameters?: Record<string, string | number | boolean> | undefined;
2210
+ };
2211
+ fallback: [number, number, number];
2212
+ } | [number, number, number], {
2213
+ kind: "feature";
2214
+ reference: {
2215
+ nodeId: string;
2216
+ featureId: string;
2217
+ parameters?: Record<string, string | number | boolean> | undefined;
2218
+ };
2219
+ fallback: [number, number, number];
2220
+ } | [number, number, number], {
2221
+ kind: "feature";
2222
+ reference: {
2223
+ nodeId: string;
2224
+ featureId: string;
2225
+ parameters?: Record<string, string | number | boolean> | undefined;
2226
+ };
2227
+ fallback: [number, number, number];
2228
+ } | [number, number, number]];
2229
+ } | {
2230
+ kind: "area";
2231
+ base: ({
2232
+ kind: "feature";
2233
+ reference: {
2234
+ nodeId: string;
2235
+ featureId: string;
2236
+ parameters?: Record<string, string | number | boolean> | undefined;
2237
+ };
2238
+ fallback: [number, number, number];
2239
+ } | [number, number, number])[];
2240
+ } | {
2241
+ kind: "perimeter";
2242
+ base: ({
2243
+ kind: "feature";
2244
+ reference: {
2245
+ nodeId: string;
2246
+ featureId: string;
2247
+ parameters?: Record<string, string | number | boolean> | undefined;
2248
+ };
2249
+ fallback: [number, number, number];
2250
+ } | [number, number, number])[];
2251
+ };
2252
+ type: "measurement";
2416
2253
  } | {
2417
2254
  object: "node";
2418
2255
  name?: string | undefined;
@@ -2437,29 +2274,72 @@ export declare function raisedRoomFixture(neighbor?: boolean, terrain?: boolean)
2437
2274
  fromIds: string[];
2438
2275
  } | undefined;
2439
2276
  } | undefined;
2440
- id: `duct-fitting_${string}`;
2441
- position: [number, number, number];
2442
- rotation: [number, number, number];
2443
- fittingType: "access-panel" | "coupling" | "cross" | "damper" | "elbow" | "end-cap" | "reducer" | "tee" | "transition";
2277
+ id: `duct-segment_${string}`;
2278
+ path: [number, number, number][];
2279
+ autoHangers?: boolean | undefined;
2280
+ hangerOverrides?: Record<string, {
2281
+ fraction?: number | undefined;
2282
+ skipped?: boolean | undefined;
2283
+ hostId?: string | undefined;
2284
+ }> | undefined;
2285
+ hangerStyle?: "double" | "single" | undefined;
2286
+ hangerSpacing?: number | undefined;
2287
+ hangerMaxReach?: number | undefined;
2288
+ wallAttachment?: {
2289
+ wallId: `wall_${string}`;
2290
+ side: "back" | "front";
2291
+ startUV: [number, number];
2292
+ endUV: [number, number];
2293
+ offset: number;
2294
+ } | undefined;
2444
2295
  shape: "oval" | "rect" | "round";
2445
- inletShape?: "oval" | "rect" | "round" | undefined;
2446
- outletShape?: "oval" | "rect" | "round" | undefined;
2296
+ diameter: number;
2447
2297
  width: number;
2448
2298
  height: number;
2449
- shape2: "oval" | "rect" | "round";
2450
- width2: number;
2451
- height2: number;
2452
- angle: number;
2453
- branchAngle: number;
2454
- diameter: number;
2455
- diameter2: number;
2456
- ductMaterial: "duct-board" | "flex" | "sheet-metal";
2299
+ roll: number;
2300
+ ductMaterial: "duct-board" | "flex" | "sheet-metal" | "spiral";
2301
+ seamDetail: boolean;
2302
+ insulated: boolean;
2303
+ insulationR: number;
2457
2304
  system: "return" | "supply";
2458
- damperAngle: number;
2459
- panelWidth: number;
2460
- panelHeight: number;
2461
2305
  slots?: Record<string, string> | undefined;
2462
- type: "duct-fitting";
2306
+ type: "duct-segment";
2307
+ } | {
2308
+ object: "node";
2309
+ name?: string | undefined;
2310
+ parentId: string | null;
2311
+ visible: boolean;
2312
+ camera?: {
2313
+ position: [number, number, number];
2314
+ target: [number, number, number];
2315
+ mode: "orthographic" | "perspective";
2316
+ fov?: number | undefined;
2317
+ zoom?: number | undefined;
2318
+ } | undefined;
2319
+ metadata: Record<string, unknown>;
2320
+ provenance?: {
2321
+ refs: {
2322
+ ns?: string | undefined;
2323
+ id: string;
2324
+ role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
2325
+ }[];
2326
+ lineage?: {
2327
+ op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
2328
+ fromIds: string[];
2329
+ } | undefined;
2330
+ } | undefined;
2331
+ id: `floor-opening_${string}`;
2332
+ polygon: [number, number][];
2333
+ hostZoneId?: string | undefined;
2334
+ legacyPlateCuts?: Record<string, [number, number][][]> | undefined;
2335
+ legacyCeilingCuts?: Record<string, [number, number][][]> | undefined;
2336
+ source: string;
2337
+ ownerId?: string | undefined;
2338
+ surfaceId?: string | undefined;
2339
+ drawnOn: "ceiling" | "floor";
2340
+ cutsPrimary: boolean;
2341
+ cutsAdjacent: boolean;
2342
+ type: "floor-opening";
2463
2343
  } | {
2464
2344
  object: "node";
2465
2345
  name?: string | undefined;
@@ -2484,23 +2364,12 @@ export declare function raisedRoomFixture(neighbor?: boolean, terrain?: boolean)
2484
2364
  fromIds: string[];
2485
2365
  } | undefined;
2486
2366
  } | undefined;
2487
- id: `hvac-equipment_${string}`;
2488
- position: [number, number, number];
2489
- rotation: number;
2490
- supportSlabId?: string | undefined;
2491
- equipmentType: "air-handler" | "condenser" | "furnace";
2492
- width: number;
2493
- depth: number;
2494
- height: number;
2495
- supplyShape: "oval" | "rect" | "round";
2496
- returnShape: "oval" | "rect" | "round";
2497
- supplyDiameter: number;
2498
- returnDiameter: number;
2499
- supplyWidth: number;
2500
- supplyHeight: number;
2501
- returnWidth: number;
2502
- returnHeight: number;
2503
- type: "hvac-equipment";
2367
+ id: `lineset_${string}`;
2368
+ path: [number, number, number][];
2369
+ suctionDiameter: number;
2370
+ liquidDiameter: number;
2371
+ insulated: boolean;
2372
+ type: "lineset";
2504
2373
  } | {
2505
2374
  object: "node";
2506
2375
  name?: string | undefined;
@@ -2525,17 +2394,13 @@ export declare function raisedRoomFixture(neighbor?: boolean, terrain?: boolean)
2525
2394
  fromIds: string[];
2526
2395
  } | undefined;
2527
2396
  } | undefined;
2528
- id: `pipe-fitting_${string}`;
2397
+ id: `pipe-trap_${string}`;
2529
2398
  position: [number, number, number];
2530
- rotation: [number, number, number];
2531
- fittingType: "cleanout" | "coupling" | "cross" | "elbow" | "end-cap" | "reducer" | "sanitary-tee" | "wye";
2532
- angle: number;
2399
+ rotation: number;
2533
2400
  diameter: number;
2534
- diameter2: number;
2535
- cleanoutStyle: "end" | "inline";
2536
2401
  pipeMaterial: "abs" | "cast-iron" | "pvc";
2537
- system: "vent" | "waste";
2538
- type: "pipe-fitting";
2402
+ armLengthM: number;
2403
+ type: "pipe-trap";
2539
2404
  } | {
2540
2405
  object: "node";
2541
2406
  name?: string | undefined;
@@ -3068,7 +2933,7 @@ export declare function raisedRoomFixture(neighbor?: boolean, terrain?: boolean)
3068
2933
  cavityInsulation?: string | undefined;
3069
2934
  } | undefined;
3070
2935
  slots?: Record<string, string> | undefined;
3071
- children: `rseg_${string}`[];
2936
+ children: string[];
3072
2937
  type: "roof";
3073
2938
  } | {
3074
2939
  object: "node";
@@ -3633,7 +3498,217 @@ export declare function raisedRoomFixture(neighbor?: boolean, terrain?: boolean)
3633
3498
  bumpScale?: number | undefined;
3634
3499
  } | undefined;
3635
3500
  } | undefined;
3636
- slots?: Record<string, string> | undefined;
3501
+ slots?: Record<string, string> | undefined;
3502
+ source?: {
3503
+ kind: "script";
3504
+ meta?: {
3505
+ description?: string | undefined;
3506
+ category?: string | undefined;
3507
+ tags?: string[] | undefined;
3508
+ parent?: string | undefined;
3509
+ } | undefined;
3510
+ language: "bpy" | "three";
3511
+ script: string;
3512
+ params: Record<string, string | number | boolean>;
3513
+ artifact: string;
3514
+ manifest: {
3515
+ bounds: {
3516
+ min: [number, number, number];
3517
+ max: [number, number, number];
3518
+ };
3519
+ params: {
3520
+ id: string;
3521
+ label?: string | undefined;
3522
+ kind: "boolean" | "number" | "string";
3523
+ default: string | number | boolean;
3524
+ min?: number | undefined;
3525
+ max?: number | undefined;
3526
+ step?: number | undefined;
3527
+ unit?: string | undefined;
3528
+ options?: string[] | undefined;
3529
+ }[];
3530
+ parts: {
3531
+ id: string;
3532
+ label?: string | undefined;
3533
+ type?: string | undefined;
3534
+ bounds?: {
3535
+ min: [number, number, number];
3536
+ max: [number, number, number];
3537
+ } | undefined;
3538
+ }[];
3539
+ surfaces: {
3540
+ part?: string | undefined;
3541
+ y: number;
3542
+ polygon: [number, number][];
3543
+ }[];
3544
+ slots: {
3545
+ id: string;
3546
+ label?: string | undefined;
3547
+ color?: string | undefined;
3548
+ roughness?: number | undefined;
3549
+ metalness?: number | undefined;
3550
+ transparent?: boolean | undefined;
3551
+ emissive?: boolean | undefined;
3552
+ }[];
3553
+ anchors: {
3554
+ id: string;
3555
+ position: [number, number, number];
3556
+ normal?: [number, number, number] | undefined;
3557
+ }[];
3558
+ lights: {
3559
+ id: string;
3560
+ position: [number, number, number];
3561
+ color: string;
3562
+ intensity: number;
3563
+ distance?: number | undefined;
3564
+ spot?: {
3565
+ direction: [number, number, number];
3566
+ angle: number;
3567
+ softness: number;
3568
+ } | undefined;
3569
+ shadows?: boolean | undefined;
3570
+ glow?: {
3571
+ size: number;
3572
+ strength: number;
3573
+ } | undefined;
3574
+ }[];
3575
+ undersides: {
3576
+ part?: string | undefined;
3577
+ polygon: [number, number][];
3578
+ plane: [number, number, number, number];
3579
+ }[];
3580
+ animations: {
3581
+ name: string;
3582
+ duration: number;
3583
+ }[];
3584
+ cutters?: {
3585
+ host: "ceiling" | "mounted" | "slab" | "wall";
3586
+ polygon: number[][];
3587
+ minY: number;
3588
+ maxY: number;
3589
+ }[] | undefined;
3590
+ cutout: boolean;
3591
+ collider: boolean;
3592
+ shape?: {
3593
+ tolerance: number;
3594
+ bands: {
3595
+ y0: number;
3596
+ y1: number;
3597
+ polygons: {
3598
+ outer: [number, number][];
3599
+ holes?: [number, number][][] | undefined;
3600
+ }[];
3601
+ }[];
3602
+ } | undefined;
3603
+ triangles: number;
3604
+ coverage?: number | undefined;
3605
+ uncovered?: {
3606
+ min: [number, number];
3607
+ max: [number, number];
3608
+ }[] | undefined;
3609
+ };
3610
+ images?: {
3611
+ artifact: string;
3612
+ thumbnail: string;
3613
+ floorPlan: string;
3614
+ } | undefined;
3615
+ } | undefined;
3616
+ position: [number, number, number];
3617
+ rotation: [number, number, number];
3618
+ side?: "back" | "front" | undefined;
3619
+ verticalAnchor?: "floor" | "wall" | undefined;
3620
+ floorThresholdVersion: 0 | 1;
3621
+ wallId?: string | undefined;
3622
+ dormerId?: string | undefined;
3623
+ dormerFace?: "back" | "front" | "left" | "right" | undefined;
3624
+ roofSegmentId?: string | undefined;
3625
+ roofFace?: "back" | "front" | "left" | "right" | undefined;
3626
+ width: number;
3627
+ height: number;
3628
+ mark?: string | undefined;
3629
+ constructionType: "framed" | "masonry";
3630
+ dimensionReference: "finish-opening" | "masonry-opening" | "nominal" | "rough-opening";
3631
+ roughOpeningWidth?: number | undefined;
3632
+ roughOpeningHeight?: number | undefined;
3633
+ masonryOpeningWidth?: number | undefined;
3634
+ masonryOpeningHeight?: number | undefined;
3635
+ finishOpeningWidth?: number | undefined;
3636
+ finishOpeningHeight?: number | undefined;
3637
+ openingKind: "opening" | "window";
3638
+ windowType: "awning" | "bay" | "bow" | "casement" | "double-hung" | "fixed" | "hopper" | "louvered" | "single-hung" | "sliding" | "tilt-turn";
3639
+ operationState: number;
3640
+ openingDirection?: "inward" | "outward" | undefined;
3641
+ tiltTurnMode?: "tilt" | "turn" | undefined;
3642
+ awningDirection: "down" | "up";
3643
+ casementStyle: "french" | "single";
3644
+ hingesSide: "left" | "right";
3645
+ openingShape: "arch" | "rectangle" | "rounded";
3646
+ openingRadiusMode: "all" | "individual";
3647
+ openingCornerRadii: [number, number, number, number];
3648
+ cornerRadius: number;
3649
+ archHeight: number;
3650
+ openingRevealRadius: number;
3651
+ frameThickness: number;
3652
+ frameDepth?: number | undefined;
3653
+ windowHandle?: boolean | undefined;
3654
+ sashGrid?: boolean | undefined;
3655
+ columnRatios: number[];
3656
+ rowRatios: number[];
3657
+ columnDividerThickness: number;
3658
+ rowDividerThickness: number;
3659
+ corner?: {
3660
+ end: "end" | "start";
3661
+ partnerId: string;
3662
+ post: "none" | "post";
3663
+ } | undefined;
3664
+ sill: boolean;
3665
+ sillDepth: number;
3666
+ sillThickness: number;
3667
+ sillOverhang?: number | undefined;
3668
+ sillInterior?: boolean | undefined;
3669
+ sillInteriorDepth?: number | undefined;
3670
+ sillInteriorThickness?: number | undefined;
3671
+ sillInteriorOverhang?: number | undefined;
3672
+ shutters?: "board-batten" | "louvered" | "none" | "panel" | undefined;
3673
+ shutterWidth?: number | undefined;
3674
+ shutterOpen?: number | undefined;
3675
+ shutterSides?: "both" | "left" | "right" | undefined;
3676
+ rollerShutter?: "box" | "concealed" | "none" | undefined;
3677
+ rollerShutterBoxHeight?: number | undefined;
3678
+ rollerShutterOpen?: number | undefined;
3679
+ casingFaceA?: boolean | undefined;
3680
+ casingFaceB?: boolean | undefined;
3681
+ casingWidth?: number | undefined;
3682
+ type: "window";
3683
+ } | {
3684
+ object: "node";
3685
+ name?: string | undefined;
3686
+ parentId: string | null;
3687
+ visible: boolean;
3688
+ camera?: {
3689
+ position: [number, number, number];
3690
+ target: [number, number, number];
3691
+ mode: "orthographic" | "perspective";
3692
+ fov?: number | undefined;
3693
+ zoom?: number | undefined;
3694
+ } | undefined;
3695
+ metadata: Record<string, unknown>;
3696
+ provenance?: {
3697
+ refs: {
3698
+ ns?: string | undefined;
3699
+ id: string;
3700
+ role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
3701
+ }[];
3702
+ lineage?: {
3703
+ op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
3704
+ fromIds: string[];
3705
+ } | undefined;
3706
+ } | undefined;
3707
+ id: `column_${string}`;
3708
+ children: string[];
3709
+ position: [number, number, number];
3710
+ rotation: number;
3711
+ supportSlabId?: string | undefined;
3637
3712
  source?: {
3638
3713
  kind: "script";
3639
3714
  meta?: {
@@ -3748,73 +3823,104 @@ export declare function raisedRoomFixture(neighbor?: boolean, terrain?: boolean)
3748
3823
  floorPlan: string;
3749
3824
  } | undefined;
3750
3825
  } | undefined;
3751
- position: [number, number, number];
3752
- rotation: [number, number, number];
3753
- side?: "back" | "front" | undefined;
3754
- verticalAnchor?: "floor" | "wall" | undefined;
3755
- floorThresholdVersion: 0 | 1;
3756
- wallId?: string | undefined;
3757
- dormerId?: string | undefined;
3758
- dormerFace?: "back" | "front" | "left" | "right" | undefined;
3759
- roofSegmentId?: string | undefined;
3760
- roofFace?: "back" | "front" | "left" | "right" | undefined;
3761
- width: number;
3826
+ style: "cluster" | "dravidian-carved" | "faceted" | "fluted" | "lathe-turned" | "plain";
3827
+ crossSection: "octagonal" | "rectangular" | "round" | "sixteen-sided" | "square";
3762
3828
  height: number;
3763
- mark?: string | undefined;
3764
- constructionType: "framed" | "masonry";
3765
- dimensionReference: "finish-opening" | "masonry-opening" | "nominal" | "rough-opening";
3766
- roughOpeningWidth?: number | undefined;
3767
- roughOpeningHeight?: number | undefined;
3768
- masonryOpeningWidth?: number | undefined;
3769
- masonryOpeningHeight?: number | undefined;
3770
- finishOpeningWidth?: number | undefined;
3771
- finishOpeningHeight?: number | undefined;
3772
- openingKind: "opening" | "window";
3773
- windowType: "awning" | "bay" | "bow" | "casement" | "double-hung" | "fixed" | "hopper" | "louvered" | "single-hung" | "sliding" | "tilt-turn";
3774
- operationState: number;
3775
- openingDirection?: "inward" | "outward" | undefined;
3776
- tiltTurnMode?: "tilt" | "turn" | undefined;
3777
- awningDirection: "down" | "up";
3778
- casementStyle: "french" | "single";
3779
- hingesSide: "left" | "right";
3780
- openingShape: "arch" | "rectangle" | "rounded";
3781
- openingRadiusMode: "all" | "individual";
3782
- openingCornerRadii: [number, number, number, number];
3783
- cornerRadius: number;
3784
- archHeight: number;
3785
- openingRevealRadius: number;
3786
- frameThickness: number;
3787
- frameDepth?: number | undefined;
3788
- windowHandle?: boolean | undefined;
3789
- sashGrid?: boolean | undefined;
3790
- columnRatios: number[];
3791
- rowRatios: number[];
3792
- columnDividerThickness: number;
3793
- rowDividerThickness: number;
3794
- corner?: {
3795
- end: "end" | "start";
3796
- partnerId: string;
3797
- post: "none" | "post";
3829
+ radius: number;
3830
+ width: number;
3831
+ depth: number;
3832
+ edgeSoftness: number;
3833
+ baseHeight: number;
3834
+ capitalHeight: number;
3835
+ shaftProfile: "baluster" | "bulged" | "hourglass" | "straight" | "tapered";
3836
+ shaftTaper: number;
3837
+ shaftBulge: number;
3838
+ shaftStartScale: number;
3839
+ shaftEndScale: number;
3840
+ shaftSegmentCount: number;
3841
+ shaftTwistStep: number;
3842
+ shaftCornerRadius: number;
3843
+ shaftDetail: "fluted" | "lathe-turned" | "none" | "panelled" | "spiral";
3844
+ baseStyle: "lotus" | "none" | "panelled-pedestal" | "ribbed-lotus" | "round-rings" | "simple-square" | "square-plinth" | "stepped-square";
3845
+ baseWidthScale: number;
3846
+ baseDepthScale: number;
3847
+ baseTierCount: number;
3848
+ baseStepSpread: number;
3849
+ basePlinthHeightRatio: number;
3850
+ baseRoundBandScale: number;
3851
+ baseNeckScale: number;
3852
+ baseRoundBandCount: number;
3853
+ baseRibCount: number;
3854
+ baseCarvingLevel: number;
3855
+ basePanelInset: number;
3856
+ capitalStyle: "corinthian-leaf" | "doric" | "ionic-volute" | "leaf-carved" | "none" | "rounded" | "simple" | "simple-slab" | "south-indian-bracket" | "stepped" | "volute" | "wood-bracket";
3857
+ capitalWidthScale: number;
3858
+ capitalDepthScale: number;
3859
+ capitalTierCount: number;
3860
+ capitalStepSpread: number;
3861
+ capitalBandCount: number;
3862
+ voluteSize: number;
3863
+ voluteCount: number;
3864
+ leafCount: number;
3865
+ leafRows: number;
3866
+ bracketDepth: number;
3867
+ bracketTierCount: number;
3868
+ pendantCount: number;
3869
+ capitalCarvingLevel: number;
3870
+ ringCount: number;
3871
+ ringPlacement: "bottom" | "ends" | "even" | "top";
3872
+ ringThickness: number;
3873
+ ringSpread: number;
3874
+ fluteCount: number;
3875
+ fluteDepth: number;
3876
+ fluteWidth: number;
3877
+ spiralTwist: number;
3878
+ spiralRibCount: number;
3879
+ panelCount: number;
3880
+ panelInsetDepth: number;
3881
+ panelShape: "arched" | "diamond" | "rectangle";
3882
+ latheRingCount: number;
3883
+ latheRingSpacing: "bottom" | "ends" | "even" | "top";
3884
+ carvingLevel: number;
3885
+ carvingPlacement: "all" | "base" | "capital" | "shaft";
3886
+ lowerBandEnabled: boolean;
3887
+ lowerBandHeight: number;
3888
+ lowerBandCarvingLevel: number;
3889
+ dentilCount: number;
3890
+ beadCount: number;
3891
+ supportStyle: "a-frame" | "box-frame" | "k-brace" | "portal-frame" | "single-strut" | "trestle" | "tripod" | "v-frame" | "vertical" | "x-brace" | "y-frame";
3892
+ braceWidth: number;
3893
+ braceDepth: number;
3894
+ braceBottomSpread: number;
3895
+ braceTopSpread: number;
3896
+ bracePlateEnabled: boolean;
3897
+ role?: "ornament" | "post" | undefined;
3898
+ postBase?: "none" | "pier" | "post-base" | undefined;
3899
+ material?: {
3900
+ id?: string | undefined;
3901
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
3902
+ properties?: {
3903
+ color: string;
3904
+ roughness: number;
3905
+ metalness: number;
3906
+ opacity: number;
3907
+ transparent: boolean;
3908
+ side: "back" | "double" | "front";
3909
+ } | undefined;
3910
+ texture?: {
3911
+ url: string;
3912
+ repeat?: [number, number] | undefined;
3913
+ scale?: number | undefined;
3914
+ offset?: [number, number] | undefined;
3915
+ normalMap?: string | undefined;
3916
+ normalScale?: number | undefined;
3917
+ bumpMap?: string | undefined;
3918
+ bumpScale?: number | undefined;
3919
+ } | undefined;
3798
3920
  } | undefined;
3799
- sill: boolean;
3800
- sillDepth: number;
3801
- sillThickness: number;
3802
- sillOverhang?: number | undefined;
3803
- sillInterior?: boolean | undefined;
3804
- sillInteriorDepth?: number | undefined;
3805
- sillInteriorThickness?: number | undefined;
3806
- sillInteriorOverhang?: number | undefined;
3807
- shutters?: "board-batten" | "louvered" | "none" | "panel" | undefined;
3808
- shutterWidth?: number | undefined;
3809
- shutterOpen?: number | undefined;
3810
- shutterSides?: "both" | "left" | "right" | undefined;
3811
- rollerShutter?: "box" | "concealed" | "none" | undefined;
3812
- rollerShutterBoxHeight?: number | undefined;
3813
- rollerShutterOpen?: number | undefined;
3814
- casingFaceA?: boolean | undefined;
3815
- casingFaceB?: boolean | undefined;
3816
- casingWidth?: number | undefined;
3817
- type: "window";
3921
+ materialPreset?: string | undefined;
3922
+ slots?: Record<string, string> | undefined;
3923
+ type: "column";
3818
3924
  } | {
3819
3925
  object: "node";
3820
3926
  name?: string | undefined;
@@ -5425,42 +5531,6 @@ export declare function raisedRoomFixture(neighbor?: boolean, terrain?: boolean)
5425
5531
  start: [number, number];
5426
5532
  end: [number, number];
5427
5533
  type: "separator";
5428
- } | {
5429
- object: "node";
5430
- name?: string | undefined;
5431
- parentId: string | null;
5432
- visible: boolean;
5433
- camera?: {
5434
- position: [number, number, number];
5435
- target: [number, number, number];
5436
- mode: "orthographic" | "perspective";
5437
- fov?: number | undefined;
5438
- zoom?: number | undefined;
5439
- } | undefined;
5440
- metadata: Record<string, unknown>;
5441
- provenance?: {
5442
- refs: {
5443
- ns?: string | undefined;
5444
- id: string;
5445
- role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
5446
- }[];
5447
- lineage?: {
5448
- op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
5449
- fromIds: string[];
5450
- } | undefined;
5451
- } | undefined;
5452
- id: `floor-opening_${string}`;
5453
- polygon: [number, number][];
5454
- hostZoneId?: string | undefined;
5455
- legacyPlateCuts?: Record<string, [number, number][][]> | undefined;
5456
- legacyCeilingCuts?: Record<string, [number, number][][]> | undefined;
5457
- source: string;
5458
- ownerId?: string | undefined;
5459
- surfaceId?: string | undefined;
5460
- drawnOn: "ceiling" | "floor";
5461
- cutsPrimary: boolean;
5462
- cutsAdjacent: boolean;
5463
- type: "floor-opening";
5464
5534
  } | {
5465
5535
  object: "node";
5466
5536
  name?: string | undefined;
@@ -5549,48 +5619,12 @@ export declare function raisedRoomFixture(neighbor?: boolean, terrain?: boolean)
5549
5619
  showInfill: boolean;
5550
5620
  guardInfill?: "balusters" | "boards" | "cable" | undefined;
5551
5621
  startPost?: boolean | undefined;
5552
- endPost?: boolean | undefined;
5553
- postThrough?: boolean | undefined;
5554
- infillPlacement: "back" | "center" | "front";
5555
- color: string;
5556
- style: "guard" | "horizontal" | "picket" | "privacy" | "rail" | "slat";
5557
- type: "fence";
5558
- } | {
5559
- object: "node";
5560
- name?: string | undefined;
5561
- parentId: string | null;
5562
- visible: boolean;
5563
- camera?: {
5564
- position: [number, number, number];
5565
- target: [number, number, number];
5566
- mode: "orthographic" | "perspective";
5567
- fov?: number | undefined;
5568
- zoom?: number | undefined;
5569
- } | undefined;
5570
- metadata: Record<string, unknown>;
5571
- provenance?: {
5572
- refs: {
5573
- ns?: string | undefined;
5574
- id: string;
5575
- role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
5576
- }[];
5577
- lineage?: {
5578
- op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
5579
- fromIds: string[];
5580
- } | undefined;
5581
- } | undefined;
5582
- id: `beam_${string}`;
5583
- start: [number, number];
5584
- end: [number, number];
5585
- width: number;
5586
- depth: number;
5587
- size?: string | undefined;
5588
- plies: number;
5589
- material: "glulam" | "lvl" | "pressure-treated" | "sawn" | "steel";
5590
- placement: "dropped" | "flush";
5591
- topElevation?: number | undefined;
5592
- supportSlabId?: string | undefined;
5593
- type: "beam";
5622
+ endPost?: boolean | undefined;
5623
+ postThrough?: boolean | undefined;
5624
+ infillPlacement: "back" | "center" | "front";
5625
+ color: string;
5626
+ style: "guard" | "horizontal" | "picket" | "privacy" | "rail" | "slat";
5627
+ type: "fence";
5594
5628
  } | {
5595
5629
  object: "node";
5596
5630
  name?: string | undefined;
@@ -6617,113 +6651,6 @@ export declare function raisedRoomFixture(neighbor?: boolean, terrain?: boolean)
6617
6651
  label: string;
6618
6652
  } | null;
6619
6653
  type: "guide";
6620
- } | {
6621
- object: "node";
6622
- name?: string | undefined;
6623
- parentId: string | null;
6624
- visible: boolean;
6625
- camera?: {
6626
- position: [number, number, number];
6627
- target: [number, number, number];
6628
- mode: "orthographic" | "perspective";
6629
- fov?: number | undefined;
6630
- zoom?: number | undefined;
6631
- } | undefined;
6632
- metadata: Record<string, unknown>;
6633
- provenance?: {
6634
- refs: {
6635
- ns?: string | undefined;
6636
- id: string;
6637
- role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
6638
- }[];
6639
- lineage?: {
6640
- op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
6641
- fromIds: string[];
6642
- } | undefined;
6643
- } | undefined;
6644
- id: `measurement_${string}`;
6645
- measurement: {
6646
- kind: "distance";
6647
- points: [{
6648
- kind: "feature";
6649
- reference: {
6650
- nodeId: string;
6651
- featureId: string;
6652
- parameters?: Record<string, string | number | boolean> | undefined;
6653
- };
6654
- fallback: [number, number, number];
6655
- } | [number, number, number], {
6656
- kind: "feature";
6657
- reference: {
6658
- nodeId: string;
6659
- featureId: string;
6660
- parameters?: Record<string, string | number | boolean> | undefined;
6661
- };
6662
- fallback: [number, number, number];
6663
- } | [number, number, number]];
6664
- } | {
6665
- kind: "angle";
6666
- points: [{
6667
- kind: "feature";
6668
- reference: {
6669
- nodeId: string;
6670
- featureId: string;
6671
- parameters?: Record<string, string | number | boolean> | undefined;
6672
- };
6673
- fallback: [number, number, number];
6674
- } | [number, number, number], {
6675
- kind: "feature";
6676
- reference: {
6677
- nodeId: string;
6678
- featureId: string;
6679
- parameters?: Record<string, string | number | boolean> | undefined;
6680
- };
6681
- fallback: [number, number, number];
6682
- } | [number, number, number], {
6683
- kind: "feature";
6684
- reference: {
6685
- nodeId: string;
6686
- featureId: string;
6687
- parameters?: Record<string, string | number | boolean> | undefined;
6688
- };
6689
- fallback: [number, number, number];
6690
- } | [number, number, number]];
6691
- } | {
6692
- kind: "area";
6693
- base: ({
6694
- kind: "feature";
6695
- reference: {
6696
- nodeId: string;
6697
- featureId: string;
6698
- parameters?: Record<string, string | number | boolean> | undefined;
6699
- };
6700
- fallback: [number, number, number];
6701
- } | [number, number, number])[];
6702
- } | {
6703
- kind: "perimeter";
6704
- base: ({
6705
- kind: "feature";
6706
- reference: {
6707
- nodeId: string;
6708
- featureId: string;
6709
- parameters?: Record<string, string | number | boolean> | undefined;
6710
- };
6711
- fallback: [number, number, number];
6712
- } | [number, number, number])[];
6713
- } | {
6714
- kind: "volume";
6715
- base: ({
6716
- kind: "feature";
6717
- reference: {
6718
- nodeId: string;
6719
- featureId: string;
6720
- parameters?: Record<string, string | number | boolean> | undefined;
6721
- };
6722
- fallback: [number, number, number];
6723
- } | [number, number, number])[];
6724
- extrusion: [number, number, number];
6725
- };
6726
- type: "measurement";
6727
6654
  } | {
6728
6655
  object: "node";
6729
6656
  name?: string | undefined;
@@ -6777,36 +6704,29 @@ export declare function raisedRoomFixture(neighbor?: boolean, terrain?: boolean)
6777
6704
  fromIds: string[];
6778
6705
  } | undefined;
6779
6706
  } | undefined;
6780
- id: `duct-segment_${string}`;
6781
- path: [number, number, number][];
6782
- autoHangers?: boolean | undefined;
6783
- hangerOverrides?: Record<string, {
6784
- fraction?: number | undefined;
6785
- skipped?: boolean | undefined;
6786
- hostId?: string | undefined;
6787
- }> | undefined;
6788
- hangerStyle?: "double" | "single" | undefined;
6789
- hangerSpacing?: number | undefined;
6790
- hangerMaxReach?: number | undefined;
6791
- wallAttachment?: {
6792
- wallId: `wall_${string}`;
6793
- side: "back" | "front";
6794
- startUV: [number, number];
6795
- endUV: [number, number];
6796
- offset: number;
6797
- } | undefined;
6707
+ id: `duct-fitting_${string}`;
6708
+ position: [number, number, number];
6709
+ rotation: [number, number, number];
6710
+ fittingType: "access-panel" | "coupling" | "cross" | "damper" | "elbow" | "end-cap" | "reducer" | "tee" | "transition";
6798
6711
  shape: "oval" | "rect" | "round";
6799
- diameter: number;
6712
+ inletShape?: "oval" | "rect" | "round" | undefined;
6713
+ outletShape?: "oval" | "rect" | "round" | undefined;
6800
6714
  width: number;
6801
6715
  height: number;
6802
- roll: number;
6803
- ductMaterial: "duct-board" | "flex" | "sheet-metal" | "spiral";
6804
- seamDetail: boolean;
6805
- insulated: boolean;
6806
- insulationR: number;
6716
+ shape2: "oval" | "rect" | "round";
6717
+ width2: number;
6718
+ height2: number;
6719
+ angle: number;
6720
+ branchAngle: number;
6721
+ diameter: number;
6722
+ diameter2: number;
6723
+ ductMaterial: "duct-board" | "flex" | "sheet-metal";
6807
6724
  system: "return" | "supply";
6725
+ damperAngle: number;
6726
+ panelWidth: number;
6727
+ panelHeight: number;
6808
6728
  slots?: Record<string, string> | undefined;
6809
- type: "duct-segment";
6729
+ type: "duct-fitting";
6810
6730
  } | {
6811
6731
  object: "node";
6812
6732
  name?: string | undefined;
@@ -6868,12 +6788,23 @@ export declare function raisedRoomFixture(neighbor?: boolean, terrain?: boolean)
6868
6788
  fromIds: string[];
6869
6789
  } | undefined;
6870
6790
  } | undefined;
6871
- id: `lineset_${string}`;
6872
- path: [number, number, number][];
6873
- suctionDiameter: number;
6874
- liquidDiameter: number;
6875
- insulated: boolean;
6876
- type: "lineset";
6791
+ id: `hvac-equipment_${string}`;
6792
+ position: [number, number, number];
6793
+ rotation: number;
6794
+ supportSlabId?: string | undefined;
6795
+ equipmentType: "air-handler" | "condenser" | "furnace";
6796
+ width: number;
6797
+ depth: number;
6798
+ height: number;
6799
+ supplyShape: "oval" | "rect" | "round";
6800
+ returnShape: "oval" | "rect" | "round";
6801
+ supplyDiameter: number;
6802
+ returnDiameter: number;
6803
+ supplyWidth: number;
6804
+ supplyHeight: number;
6805
+ returnWidth: number;
6806
+ returnHeight: number;
6807
+ type: "hvac-equipment";
6877
6808
  } | {
6878
6809
  object: "node";
6879
6810
  name?: string | undefined;
@@ -6972,13 +6903,17 @@ export declare function raisedRoomFixture(neighbor?: boolean, terrain?: boolean)
6972
6903
  fromIds: string[];
6973
6904
  } | undefined;
6974
6905
  } | undefined;
6975
- id: `pipe-trap_${string}`;
6906
+ id: `pipe-fitting_${string}`;
6976
6907
  position: [number, number, number];
6977
- rotation: number;
6908
+ rotation: [number, number, number];
6909
+ fittingType: "cleanout" | "coupling" | "cross" | "elbow" | "end-cap" | "reducer" | "sanitary-tee" | "wye";
6910
+ angle: number;
6978
6911
  diameter: number;
6912
+ diameter2: number;
6913
+ cleanoutStyle: "end" | "inline";
6979
6914
  pipeMaterial: "abs" | "cast-iron" | "pvc";
6980
- armLengthM: number;
6981
- type: "pipe-trap";
6915
+ system: "vent" | "waste";
6916
+ type: "pipe-fitting";
6982
6917
  } | {
6983
6918
  object: "node";
6984
6919
  name?: string | undefined;
@@ -7217,6 +7152,71 @@ export declare function raisedRoomFixture(neighbor?: boolean, terrain?: boolean)
7217
7152
  showPosts: boolean;
7218
7153
  id: `fence-opening_${string}`;
7219
7154
  type: "fence-opening";
7155
+ } | {
7156
+ object: "node";
7157
+ name?: string | undefined;
7158
+ parentId: string | null;
7159
+ visible: boolean;
7160
+ camera?: {
7161
+ position: [number, number, number];
7162
+ target: [number, number, number];
7163
+ mode: "orthographic" | "perspective";
7164
+ fov?: number | undefined;
7165
+ zoom?: number | undefined;
7166
+ } | undefined;
7167
+ metadata: Record<string, unknown>;
7168
+ provenance?: {
7169
+ refs: {
7170
+ ns?: string | undefined;
7171
+ id: string;
7172
+ role?: "absorbed" | "alias" | "derived" | "piece" | "primary" | undefined;
7173
+ }[];
7174
+ lineage?: {
7175
+ op: "attach" | "convert" | "duplicate" | "import" | "make-independent" | "merge" | "promote" | "split";
7176
+ fromIds: string[];
7177
+ } | undefined;
7178
+ } | undefined;
7179
+ id: `bvent_${string}`;
7180
+ material?: {
7181
+ id?: string | undefined;
7182
+ preset?: "brick" | "concrete" | "custom" | "glass" | "marble" | "metal" | "plaster" | "tile" | "white" | "wood" | undefined;
7183
+ properties?: {
7184
+ color: string;
7185
+ roughness: number;
7186
+ metalness: number;
7187
+ opacity: number;
7188
+ transparent: boolean;
7189
+ side: "back" | "double" | "front";
7190
+ } | undefined;
7191
+ texture?: {
7192
+ url: string;
7193
+ repeat?: [number, number] | undefined;
7194
+ scale?: number | undefined;
7195
+ offset?: [number, number] | undefined;
7196
+ normalMap?: string | undefined;
7197
+ normalScale?: number | undefined;
7198
+ bumpMap?: string | undefined;
7199
+ bumpScale?: number | undefined;
7200
+ } | undefined;
7201
+ } | undefined;
7202
+ slots?: Record<string, string> | undefined;
7203
+ materialPreset: string;
7204
+ roofSegmentId?: string | undefined;
7205
+ position: [number, number, number];
7206
+ rotation: number;
7207
+ width: number;
7208
+ depth: number;
7209
+ height: number;
7210
+ hoodOverhang: number;
7211
+ topTaper: number;
7212
+ capHeight: number;
7213
+ capGap: number;
7214
+ domeCurvature: number;
7215
+ baseInset: number;
7216
+ baseHeight: number;
7217
+ cornerBevel: number;
7218
+ style: "box" | "cap" | "dome";
7219
+ type: "box-vent";
7220
7220
  } | {
7221
7221
  object: "node";
7222
7222
  name?: string | undefined;