@pascal-app/core 1.0.0-beta.5 → 1.0.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 (417) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +23 -0
  3. package/dist/capture/index.d.ts +3 -0
  4. package/dist/capture/index.d.ts.map +1 -0
  5. package/dist/capture/index.js +2 -0
  6. package/dist/capture/schema.d.ts +417 -0
  7. package/dist/capture/schema.d.ts.map +1 -0
  8. package/dist/capture/schema.js +350 -0
  9. package/dist/capture/source.d.ts +60 -0
  10. package/dist/capture/source.d.ts.map +1 -0
  11. package/dist/capture/source.js +254 -0
  12. package/dist/events/bus.d.ts +58 -7
  13. package/dist/events/bus.d.ts.map +1 -1
  14. package/dist/events/hidden-wall-pointer-hold.d.ts +28 -0
  15. package/dist/events/hidden-wall-pointer-hold.d.ts.map +1 -0
  16. package/dist/events/hidden-wall-pointer-hold.js +37 -0
  17. package/dist/hooks/spatial-grid/floor-placed-elevation.d.ts +4 -4
  18. package/dist/hooks/spatial-grid/floor-placed-elevation.d.ts.map +1 -1
  19. package/dist/hooks/spatial-grid/floor-placed-elevation.js +7 -12
  20. package/dist/hooks/spatial-grid/floor-placed-footprints.d.ts +4 -0
  21. package/dist/hooks/spatial-grid/floor-placed-footprints.d.ts.map +1 -0
  22. package/dist/hooks/spatial-grid/floor-placed-footprints.js +7 -0
  23. package/dist/hooks/spatial-grid/spatial-grid-manager.d.ts +5 -8
  24. package/dist/hooks/spatial-grid/spatial-grid-manager.d.ts.map +1 -1
  25. package/dist/hooks/spatial-grid/spatial-grid-manager.js +23 -106
  26. package/dist/hooks/spatial-grid/spatial-grid-sync.d.ts +2931 -2
  27. package/dist/hooks/spatial-grid/spatial-grid-sync.d.ts.map +1 -1
  28. package/dist/hooks/spatial-grid/spatial-grid-sync.js +207 -30
  29. package/dist/hooks/spatial-grid/support-host-patch.d.ts +45 -1
  30. package/dist/hooks/spatial-grid/support-host-patch.d.ts.map +1 -1
  31. package/dist/hooks/spatial-grid/support-host-patch.js +174 -9
  32. package/dist/hooks/spatial-grid/use-spatial-query.d.ts +1 -1
  33. package/dist/hooks/spatial-grid/use-spatial-query.js +1 -1
  34. package/dist/index.d.ts +74 -64
  35. package/dist/index.d.ts.map +1 -1
  36. package/dist/index.js +74 -61
  37. package/dist/lib/asset-storage.d.ts.map +1 -1
  38. package/dist/lib/asset-storage.js +4 -1
  39. package/dist/lib/door-operation.d.ts +1 -1
  40. package/dist/lib/item-polygon-overlap.d.ts +6 -0
  41. package/dist/lib/item-polygon-overlap.d.ts.map +1 -0
  42. package/dist/lib/item-polygon-overlap.js +67 -0
  43. package/dist/lib/level-name.d.ts +1 -1
  44. package/dist/lib/measurement-geometry.d.ts +4 -4
  45. package/dist/lib/plan-footprint.d.ts +41 -0
  46. package/dist/lib/plan-footprint.d.ts.map +1 -0
  47. package/dist/lib/plan-footprint.js +58 -0
  48. package/dist/lib/polygon-union.d.ts +4 -0
  49. package/dist/lib/polygon-union.d.ts.map +1 -0
  50. package/dist/lib/polygon-union.js +306 -0
  51. package/dist/lib/roof-overlap.d.ts +32 -0
  52. package/dist/lib/roof-overlap.d.ts.map +1 -0
  53. package/dist/lib/roof-overlap.js +72 -0
  54. package/dist/lib/room-topology-index.d.ts +1 -1
  55. package/dist/lib/room-topology-index.js +1 -1
  56. package/dist/lib/selection-proxy.d.ts +1 -1
  57. package/dist/lib/slab-polygon.d.ts +36 -3
  58. package/dist/lib/slab-polygon.d.ts.map +1 -1
  59. package/dist/lib/slab-polygon.js +135 -29
  60. package/dist/lib/space-detection.d.ts +12 -1
  61. package/dist/lib/space-detection.d.ts.map +1 -1
  62. package/dist/lib/space-detection.js +58 -25
  63. package/dist/lib/terrain-brush.d.ts +1 -1
  64. package/dist/lib/terrain-brush.js +1 -1
  65. package/dist/lib/terrain-codec.d.ts +2 -2
  66. package/dist/lib/terrain-codec.js +1 -1
  67. package/dist/lib/terrain-raycast.d.ts +1 -1
  68. package/dist/lib/terrain-raycast.js +1 -1
  69. package/dist/lib/terrain-source.d.ts +3 -3
  70. package/dist/lib/terrain-source.js +3 -3
  71. package/dist/lib/terrain-support.d.ts +1 -1
  72. package/dist/lib/terrain-support.js +3 -3
  73. package/dist/lib/unit-containment.d.ts +19 -0
  74. package/dist/lib/unit-containment.d.ts.map +1 -0
  75. package/dist/lib/unit-containment.js +158 -0
  76. package/dist/lib/unit-report.d.ts +19 -0
  77. package/dist/lib/unit-report.d.ts.map +1 -0
  78. package/dist/lib/unit-report.js +36 -0
  79. package/dist/lib/wall-distance.d.ts +2 -2
  80. package/dist/lib/wall-distance.js +1 -1
  81. package/dist/lib/zone-quantities.d.ts +1 -1
  82. package/dist/lib/zone-quantities.js +7 -7
  83. package/dist/material-library.d.ts +1 -1
  84. package/dist/material-library.js +1 -1
  85. package/dist/procedural-items/fixtures.d.ts +261 -0
  86. package/dist/procedural-items/fixtures.d.ts.map +1 -0
  87. package/dist/procedural-items/fixtures.js +349 -0
  88. package/dist/procedural-items/index.d.ts +10 -0
  89. package/dist/procedural-items/index.d.ts.map +1 -0
  90. package/dist/procedural-items/index.js +9 -0
  91. package/dist/procedural-items/integration.d.ts +92 -0
  92. package/dist/procedural-items/integration.d.ts.map +1 -0
  93. package/dist/procedural-items/integration.js +19 -0
  94. package/dist/procedural-items/library-colors.d.ts +56 -0
  95. package/dist/procedural-items/library-colors.d.ts.map +1 -0
  96. package/dist/procedural-items/library-colors.js +84 -0
  97. package/dist/procedural-items/materials.d.ts +5 -0
  98. package/dist/procedural-items/materials.d.ts.map +1 -0
  99. package/dist/procedural-items/materials.js +47 -0
  100. package/dist/procedural-items/node.d.ts +280 -0
  101. package/dist/procedural-items/node.d.ts.map +1 -0
  102. package/dist/procedural-items/node.js +71 -0
  103. package/dist/procedural-items/placement.d.ts +7 -0
  104. package/dist/procedural-items/placement.d.ts.map +1 -0
  105. package/dist/procedural-items/placement.js +48 -0
  106. package/dist/procedural-items/query.d.ts +50 -0
  107. package/dist/procedural-items/query.d.ts.map +1 -0
  108. package/dist/procedural-items/query.js +298 -0
  109. package/dist/procedural-items/recipe.d.ts +144 -0
  110. package/dist/procedural-items/recipe.d.ts.map +1 -0
  111. package/dist/procedural-items/recipe.js +372 -0
  112. package/dist/procedural-items/spatial.d.ts +19 -0
  113. package/dist/procedural-items/spatial.d.ts.map +1 -0
  114. package/dist/procedural-items/spatial.js +39 -0
  115. package/dist/registry/__bench__/relations-resolver.bench.js +2 -2
  116. package/dist/registry/handles.d.ts +36 -7
  117. package/dist/registry/handles.d.ts.map +1 -1
  118. package/dist/registry/index.d.ts +6 -7
  119. package/dist/registry/index.d.ts.map +1 -1
  120. package/dist/registry/index.js +4 -5
  121. package/dist/registry/registry.d.ts +13 -6
  122. package/dist/registry/registry.d.ts.map +1 -1
  123. package/dist/registry/registry.js +37 -4
  124. package/dist/registry/relations-resolver.d.ts +2 -2
  125. package/dist/registry/relations-resolver.js +1 -1
  126. package/dist/registry/scene-api.d.ts +18 -2
  127. package/dist/registry/scene-api.d.ts.map +1 -1
  128. package/dist/registry/scene-api.js +50 -2
  129. package/dist/registry/subtree.d.ts +1 -1
  130. package/dist/registry/subtree.js +2 -2
  131. package/dist/registry/types.d.ts +246 -21
  132. package/dist/registry/types.d.ts.map +1 -1
  133. package/dist/registry/use-registry-version.js +1 -1
  134. package/dist/registry/validate-relations.d.ts +4 -0
  135. package/dist/registry/validate-relations.d.ts.map +1 -0
  136. package/dist/registry/validate-relations.js +22 -0
  137. package/dist/schema/__bench__/node-parsers.bench.d.ts +24 -0
  138. package/dist/schema/__bench__/node-parsers.bench.d.ts.map +1 -0
  139. package/dist/schema/__bench__/node-parsers.bench.js +314 -0
  140. package/dist/schema/__fixtures__/node-fixtures.d.ts +28 -0
  141. package/dist/schema/__fixtures__/node-fixtures.d.ts.map +1 -0
  142. package/dist/schema/__fixtures__/node-fixtures.js +127 -0
  143. package/dist/schema/base.d.ts +1 -1
  144. package/dist/schema/base.d.ts.map +1 -1
  145. package/dist/schema/base.js +9 -2
  146. package/dist/schema/collections.d.ts +1 -1
  147. package/dist/schema/collections.js +1 -1
  148. package/dist/schema/compiled-node-parsers.d.ts +40 -0
  149. package/dist/schema/compiled-node-parsers.d.ts.map +1 -0
  150. package/dist/schema/compiled-node-parsers.js +95 -0
  151. package/dist/schema/index.d.ts +73 -66
  152. package/dist/schema/index.d.ts.map +1 -1
  153. package/dist/schema/index.js +65 -57
  154. package/dist/schema/material.d.ts +1 -0
  155. package/dist/schema/material.d.ts.map +1 -1
  156. package/dist/schema/material.js +2 -1
  157. package/dist/schema/nodes/automatic-downspout.d.ts +17 -0
  158. package/dist/schema/nodes/automatic-downspout.d.ts.map +1 -0
  159. package/dist/schema/nodes/automatic-downspout.js +237 -0
  160. package/dist/schema/nodes/block.d.ts +107 -0
  161. package/dist/schema/nodes/block.d.ts.map +1 -0
  162. package/dist/schema/nodes/block.js +206 -0
  163. package/dist/schema/nodes/box-vent.d.ts +8 -2
  164. package/dist/schema/nodes/box-vent.d.ts.map +1 -1
  165. package/dist/schema/nodes/box-vent.js +4 -2
  166. package/dist/schema/nodes/building.d.ts +2 -2
  167. package/dist/schema/nodes/building.d.ts.map +1 -1
  168. package/dist/schema/nodes/building.js +8 -5
  169. package/dist/schema/nodes/cabinet.d.ts +26 -4
  170. package/dist/schema/nodes/cabinet.d.ts.map +1 -1
  171. package/dist/schema/nodes/cabinet.js +29 -8
  172. package/dist/schema/nodes/ceiling.d.ts +2 -2
  173. package/dist/schema/nodes/ceiling.js +5 -5
  174. package/dist/schema/nodes/chimney.d.ts +2 -2
  175. package/dist/schema/nodes/chimney.js +2 -2
  176. package/dist/schema/nodes/column.d.ts +7 -6
  177. package/dist/schema/nodes/column.d.ts.map +1 -1
  178. package/dist/schema/nodes/column.js +3 -2
  179. package/dist/schema/nodes/construction-dimension.d.ts +1 -1
  180. package/dist/schema/nodes/construction-dimension.js +2 -2
  181. package/dist/schema/nodes/cupola.d.ts +9 -1
  182. package/dist/schema/nodes/cupola.d.ts.map +1 -1
  183. package/dist/schema/nodes/cupola.js +4 -2
  184. package/dist/schema/nodes/door.d.ts +1 -1
  185. package/dist/schema/nodes/door.js +2 -2
  186. package/dist/schema/nodes/dormer.d.ts +45 -2
  187. package/dist/schema/nodes/dormer.d.ts.map +1 -1
  188. package/dist/schema/nodes/dormer.js +133 -9
  189. package/dist/schema/nodes/downspout.d.ts +11 -1
  190. package/dist/schema/nodes/downspout.d.ts.map +1 -1
  191. package/dist/schema/nodes/downspout.js +26 -2
  192. package/dist/schema/nodes/duct-fitting.d.ts +18 -1
  193. package/dist/schema/nodes/duct-fitting.d.ts.map +1 -1
  194. package/dist/schema/nodes/duct-fitting.js +26 -5
  195. package/dist/schema/nodes/duct-segment.d.ts +23 -1
  196. package/dist/schema/nodes/duct-segment.d.ts.map +1 -1
  197. package/dist/schema/nodes/duct-segment.js +21 -1
  198. package/dist/schema/nodes/duct-terminal.d.ts +1 -1
  199. package/dist/schema/nodes/duct-terminal.js +1 -1
  200. package/dist/schema/nodes/elevator.d.ts +1 -1
  201. package/dist/schema/nodes/elevator.js +2 -2
  202. package/dist/schema/nodes/eyebrow-vent.d.ts +8 -2
  203. package/dist/schema/nodes/eyebrow-vent.d.ts.map +1 -1
  204. package/dist/schema/nodes/eyebrow-vent.js +4 -2
  205. package/dist/schema/nodes/fence.d.ts +1 -1
  206. package/dist/schema/nodes/fence.js +2 -2
  207. package/dist/schema/nodes/guide.d.ts +1 -1
  208. package/dist/schema/nodes/guide.js +2 -2
  209. package/dist/schema/nodes/gutter.d.ts +36 -2
  210. package/dist/schema/nodes/gutter.d.ts.map +1 -1
  211. package/dist/schema/nodes/gutter.js +310 -3
  212. package/dist/schema/nodes/hanger-overrides.d.ts +7 -0
  213. package/dist/schema/nodes/hanger-overrides.d.ts.map +1 -0
  214. package/dist/schema/nodes/hanger-overrides.js +6 -0
  215. package/dist/schema/nodes/hvac-equipment.d.ts +1 -1
  216. package/dist/schema/nodes/hvac-equipment.js +1 -1
  217. package/dist/schema/nodes/imported-mesh.d.ts +40 -0
  218. package/dist/schema/nodes/imported-mesh.d.ts.map +1 -0
  219. package/dist/schema/nodes/imported-mesh.js +27 -0
  220. package/dist/schema/nodes/item.d.ts +3 -2
  221. package/dist/schema/nodes/item.d.ts.map +1 -1
  222. package/dist/schema/nodes/item.js +8 -3
  223. package/dist/schema/nodes/lean-to-extension.d.ts +212 -0
  224. package/dist/schema/nodes/lean-to-extension.d.ts.map +1 -0
  225. package/dist/schema/nodes/lean-to-extension.js +114 -0
  226. package/dist/schema/nodes/level.d.ts +2 -2
  227. package/dist/schema/nodes/level.d.ts.map +1 -1
  228. package/dist/schema/nodes/level.js +1 -1
  229. package/dist/schema/nodes/lineset.d.ts +1 -1
  230. package/dist/schema/nodes/lineset.js +1 -1
  231. package/dist/schema/nodes/liquid-line.d.ts +1 -1
  232. package/dist/schema/nodes/liquid-line.js +1 -1
  233. package/dist/schema/nodes/measurement.d.ts +1 -1
  234. package/dist/schema/nodes/measurement.js +2 -2
  235. package/dist/schema/nodes/pipe-fitting.d.ts +10 -2
  236. package/dist/schema/nodes/pipe-fitting.d.ts.map +1 -1
  237. package/dist/schema/nodes/pipe-fitting.js +7 -3
  238. package/dist/schema/nodes/pipe-segment.d.ts +24 -2
  239. package/dist/schema/nodes/pipe-segment.d.ts.map +1 -1
  240. package/dist/schema/nodes/pipe-segment.js +21 -1
  241. package/dist/schema/nodes/pipe-trap.d.ts +2 -2
  242. package/dist/schema/nodes/pipe-trap.js +1 -1
  243. package/dist/schema/nodes/ridge-vent.d.ts +2 -2
  244. package/dist/schema/nodes/ridge-vent.d.ts.map +1 -1
  245. package/dist/schema/nodes/ridge-vent.js +7 -4
  246. package/dist/schema/nodes/roof-segment-shape.d.ts +5 -1
  247. package/dist/schema/nodes/roof-segment-shape.d.ts.map +1 -1
  248. package/dist/schema/nodes/roof-segment-shape.js +65 -2
  249. package/dist/schema/nodes/roof-segment-walls.d.ts +4 -2
  250. package/dist/schema/nodes/roof-segment-walls.d.ts.map +1 -1
  251. package/dist/schema/nodes/roof-segment-walls.js +2 -2
  252. package/dist/schema/nodes/roof-segment.d.ts +42 -2
  253. package/dist/schema/nodes/roof-segment.d.ts.map +1 -1
  254. package/dist/schema/nodes/roof-segment.js +81 -4
  255. package/dist/schema/nodes/roof.d.ts +23 -2
  256. package/dist/schema/nodes/roof.d.ts.map +1 -1
  257. package/dist/schema/nodes/roof.js +17 -3
  258. package/dist/schema/nodes/scan.d.ts +19 -2
  259. package/dist/schema/nodes/scan.d.ts.map +1 -1
  260. package/dist/schema/nodes/scan.js +13 -3
  261. package/dist/schema/nodes/shelf.d.ts +3 -3
  262. package/dist/schema/nodes/shelf.d.ts.map +1 -1
  263. package/dist/schema/nodes/shelf.js +3 -4
  264. package/dist/schema/nodes/site.d.ts +1 -1
  265. package/dist/schema/nodes/site.js +2 -2
  266. package/dist/schema/nodes/skylight.d.ts +5 -5
  267. package/dist/schema/nodes/skylight.js +2 -2
  268. package/dist/schema/nodes/slab.d.ts +1 -1
  269. package/dist/schema/nodes/slab.js +3 -3
  270. package/dist/schema/nodes/solar-panel.d.ts +1 -1
  271. package/dist/schema/nodes/solar-panel.js +3 -3
  272. package/dist/schema/nodes/spawn.d.ts +1 -1
  273. package/dist/schema/nodes/spawn.js +1 -1
  274. package/dist/schema/nodes/stair-segment.d.ts +1 -1
  275. package/dist/schema/nodes/stair-segment.js +2 -2
  276. package/dist/schema/nodes/stair.d.ts +2 -2
  277. package/dist/schema/nodes/stair.js +3 -3
  278. package/dist/schema/nodes/structural-grid.d.ts +1 -1
  279. package/dist/schema/nodes/structural-grid.js +1 -1
  280. package/dist/schema/nodes/turbine-vent.d.ts +8 -2
  281. package/dist/schema/nodes/turbine-vent.d.ts.map +1 -1
  282. package/dist/schema/nodes/turbine-vent.js +4 -2
  283. package/dist/schema/nodes/unit.d.ts +33 -0
  284. package/dist/schema/nodes/unit.d.ts.map +1 -0
  285. package/dist/schema/nodes/unit.js +13 -0
  286. package/dist/schema/nodes/wall.d.ts +5 -5
  287. package/dist/schema/nodes/wall.d.ts.map +1 -1
  288. package/dist/schema/nodes/wall.js +13 -6
  289. package/dist/schema/nodes/window.d.ts +10 -3
  290. package/dist/schema/nodes/window.d.ts.map +1 -1
  291. package/dist/schema/nodes/window.js +6 -2
  292. package/dist/schema/nodes/zone.d.ts +2 -2
  293. package/dist/schema/nodes/zone.js +2 -2
  294. package/dist/schema/scene-material.js +2 -2
  295. package/dist/schema/types.d.ts +815 -118
  296. package/dist/schema/types.d.ts.map +1 -1
  297. package/dist/schema/types.js +79 -46
  298. package/dist/services/alignment-anchors.d.ts +6 -11
  299. package/dist/services/alignment-anchors.d.ts.map +1 -1
  300. package/dist/services/alignment-anchors.js +7 -34
  301. package/dist/services/drag-session.d.ts +4 -4
  302. package/dist/services/drag-session.js +1 -1
  303. package/dist/services/hosting.d.ts +4 -10
  304. package/dist/services/hosting.d.ts.map +1 -1
  305. package/dist/services/hosting.js +6 -16
  306. package/dist/services/index.d.ts +16 -13
  307. package/dist/services/index.d.ts.map +1 -1
  308. package/dist/services/index.js +16 -13
  309. package/dist/services/level-height.d.ts +2 -2
  310. package/dist/services/level-height.js +3 -3
  311. package/dist/services/movement.d.ts +3 -3
  312. package/dist/services/movement.js +2 -2
  313. package/dist/services/port-connectivity.d.ts +1 -1
  314. package/dist/services/port-connectivity.js +1 -1
  315. package/dist/services/riser-diagram.d.ts +1 -1
  316. package/dist/services/shelf-board.d.ts +5 -0
  317. package/dist/services/shelf-board.d.ts.map +1 -0
  318. package/dist/services/shelf-board.js +15 -0
  319. package/dist/services/storey.d.ts +2 -2
  320. package/dist/services/storey.js +2 -2
  321. package/dist/services/surface-hosting-procedural-parity.fixtures.d.ts +13 -0
  322. package/dist/services/surface-hosting-procedural-parity.fixtures.d.ts.map +1 -0
  323. package/dist/services/surface-hosting-procedural-parity.fixtures.js +4691 -0
  324. package/dist/services/surface-hosting-shelf-parity.fixtures.d.ts +1060 -0
  325. package/dist/services/surface-hosting-shelf-parity.fixtures.d.ts.map +1 -0
  326. package/dist/services/surface-hosting-shelf-parity.fixtures.js +3127 -0
  327. package/dist/services/surface-hosting.d.ts +88 -0
  328. package/dist/services/surface-hosting.d.ts.map +1 -0
  329. package/dist/services/surface-hosting.js +268 -0
  330. package/dist/services/surface-region.d.ts +8 -0
  331. package/dist/services/surface-region.d.ts.map +1 -0
  332. package/dist/services/surface-region.js +44 -0
  333. package/dist/services/system-graph.d.ts +12 -1
  334. package/dist/services/system-graph.d.ts.map +1 -1
  335. package/dist/services/system-graph.js +36 -6
  336. package/dist/services/validate-dwv.d.ts +1 -1
  337. package/dist/services/validate-dwv.js +1 -1
  338. package/dist/store/actions/node-actions.d.ts +9 -2
  339. package/dist/store/actions/node-actions.d.ts.map +1 -1
  340. package/dist/store/actions/node-actions.js +475 -24
  341. package/dist/store/history-control.d.ts +3 -3
  342. package/dist/store/history-invalidation.d.ts +3 -0
  343. package/dist/store/history-invalidation.d.ts.map +1 -0
  344. package/dist/store/history-invalidation.js +72 -0
  345. package/dist/store/scene-hydration.d.ts +5 -0
  346. package/dist/store/scene-hydration.d.ts.map +1 -0
  347. package/dist/store/scene-hydration.js +57 -0
  348. package/dist/store/use-interactive.d.ts +2 -2
  349. package/dist/store/use-live-terrain.d.ts +1 -1
  350. package/dist/store/use-scene.d.ts +7 -4
  351. package/dist/store/use-scene.d.ts.map +1 -1
  352. package/dist/store/use-scene.js +361 -87
  353. package/dist/systems/elevator/elevator-dispatch.d.ts +2 -2
  354. package/dist/systems/elevator/elevator-dispatch.js +1 -1
  355. package/dist/systems/elevator/elevator-geometry.d.ts +1 -1
  356. package/dist/systems/elevator/elevator-opening-sync.d.ts +1 -1
  357. package/dist/systems/elevator/elevator-opening-sync.js +2 -2
  358. package/dist/systems/elevator/elevator-opening-system.js +3 -3
  359. package/dist/systems/elevator/elevator-runtime.d.ts +3 -3
  360. package/dist/systems/elevator/elevator-runtime.js +3 -3
  361. package/dist/systems/elevator/elevator-service.d.ts +1 -1
  362. package/dist/systems/elevator/elevator-service.js +1 -1
  363. package/dist/systems/fence/fence-centerline.d.ts +2 -2
  364. package/dist/systems/fence/fence-centerline.js +2 -2
  365. package/dist/systems/fence/fence-spline.d.ts +2 -2
  366. package/dist/systems/roof/roof-elevation-system.d.ts +3 -0
  367. package/dist/systems/roof/roof-elevation-system.d.ts.map +1 -0
  368. package/dist/systems/roof/roof-elevation-system.js +94 -0
  369. package/dist/systems/roof/roof-elevation.d.ts +4 -0
  370. package/dist/systems/roof/roof-elevation.d.ts.map +1 -0
  371. package/dist/systems/roof/roof-elevation.js +95 -0
  372. package/dist/systems/roof/roof-footprint.d.ts +17 -0
  373. package/dist/systems/roof/roof-footprint.d.ts.map +1 -0
  374. package/dist/systems/roof/roof-footprint.js +83 -0
  375. package/dist/systems/slab/slab-placement.d.ts +1 -1
  376. package/dist/systems/slab/slab-support.d.ts +1 -1
  377. package/dist/systems/slab/slab-support.js +4 -4
  378. package/dist/systems/stair/stair-flight.d.ts +17 -0
  379. package/dist/systems/stair/stair-flight.d.ts.map +1 -0
  380. package/dist/systems/stair/stair-flight.js +27 -0
  381. package/dist/systems/stair/stair-footprint.d.ts +1 -1
  382. package/dist/systems/stair/stair-opening-preview.d.ts +1621 -1267
  383. package/dist/systems/stair/stair-opening-preview.d.ts.map +1 -1
  384. package/dist/systems/stair/stair-opening-preview.js +2 -2
  385. package/dist/systems/stair/stair-opening-sync.d.ts +1 -1
  386. package/dist/systems/stair/stair-opening-sync.js +6 -6
  387. package/dist/systems/stair/stair-opening-system.d.ts +1 -0
  388. package/dist/systems/stair/stair-opening-system.d.ts.map +1 -1
  389. package/dist/systems/stair/stair-opening-system.js +100 -103
  390. package/dist/systems/stair/stair-rise.d.ts +1 -1
  391. package/dist/systems/stair/stair-rise.d.ts.map +1 -1
  392. package/dist/systems/stair/stair-rise.js +23 -24
  393. package/dist/systems/wall/wall-curve.d.ts +3 -2
  394. package/dist/systems/wall/wall-curve.d.ts.map +1 -1
  395. package/dist/systems/wall/wall-curve.js +73 -0
  396. package/dist/systems/wall/wall-footprint.d.ts +3 -2
  397. package/dist/systems/wall/wall-footprint.d.ts.map +1 -1
  398. package/dist/systems/wall/wall-footprint.js +3 -2
  399. package/dist/systems/wall/wall-mitering.d.ts +1 -1
  400. package/dist/systems/wall/wall-mitering.js +1 -1
  401. package/dist/systems/wall/wall-move.d.ts +1 -1
  402. package/dist/systems/wall/wall-top.d.ts +1 -1
  403. package/dist/systems/wall/wall-topology.d.ts +2 -2
  404. package/dist/systems/wall/wall-topology.js +4 -4
  405. package/dist/utils/clone-scene-graph.d.ts +3 -3
  406. package/dist/utils/clone-scene-graph.d.ts.map +1 -1
  407. package/dist/utils/clone-scene-graph.js +35 -3
  408. package/dist/utils/scene-migrations.d.ts +3 -3
  409. package/dist/utils/scene-migrations.js +3 -3
  410. package/dist/utils/vertical-scene-migration.js +5 -5
  411. package/dist/validation/validate-build-json.d.ts +7 -1
  412. package/dist/validation/validate-build-json.d.ts.map +1 -1
  413. package/dist/validation/validate-build-json.js +92 -4
  414. package/package.json +23 -5
  415. package/dist/systems/elevator/elevator-runtime-system.d.ts +0 -2
  416. package/dist/systems/elevator/elevator-runtime-system.d.ts.map +0 -1
  417. package/dist/systems/elevator/elevator-runtime-system.js +0 -8
@@ -0,0 +1,206 @@
1
+ import dedent from 'dedent';
2
+ import { z } from 'zod';
3
+ import { BaseNode, nodeType, objectId } from '../base.js';
4
+ export const BlockVertex = z.object({
5
+ id: z.string().min(1),
6
+ position: z.tuple([z.number(), z.number(), z.number()]),
7
+ });
8
+ export const BlockEdge = z.object({
9
+ id: z.string().min(1),
10
+ vertexIds: z.tuple([z.string().min(1), z.string().min(1)]),
11
+ });
12
+ export const BlockFace = z.object({
13
+ id: z.string().min(1),
14
+ vertexIds: z.array(z.string().min(1)).min(3),
15
+ materialSlot: z.string().min(1).default('body'),
16
+ });
17
+ const BlockTopologyShape = z.object({
18
+ vertices: z.array(BlockVertex),
19
+ edges: z.array(BlockEdge),
20
+ faces: z.array(BlockFace),
21
+ });
22
+ function normalizeBlockVector(vector) {
23
+ const length = Math.hypot(vector[0], vector[1], vector[2]);
24
+ if (length < 1e-8)
25
+ return null;
26
+ return [vector[0] / length, vector[1] / length, vector[2] / length];
27
+ }
28
+ export function getBlockFaceNormal(topology, face) {
29
+ const vertices = new Map(topology.vertices.map((vertex) => [vertex.id, vertex.position]));
30
+ const positions = face.vertexIds
31
+ .map((id) => vertices.get(id))
32
+ .filter((value) => !!value);
33
+ if (positions.length < 3)
34
+ return null;
35
+ const normal = [0, 0, 0];
36
+ for (let index = 0; index < positions.length; index += 1) {
37
+ const current = positions[index];
38
+ const next = positions[(index + 1) % positions.length];
39
+ normal[0] += (current[1] - next[1]) * (current[2] + next[2]);
40
+ normal[1] += (current[2] - next[2]) * (current[0] + next[0]);
41
+ normal[2] += (current[0] - next[0]) * (current[1] + next[1]);
42
+ }
43
+ return normalizeBlockVector(normal);
44
+ }
45
+ export function getBlockFaceCentroid(topology, face) {
46
+ const vertices = new Map(topology.vertices.map((vertex) => [vertex.id, vertex.position]));
47
+ const positions = face.vertexIds
48
+ .map((id) => vertices.get(id))
49
+ .filter((value) => !!value);
50
+ if (positions.length !== face.vertexIds.length || positions.length === 0)
51
+ return null;
52
+ const sum = positions.reduce((total, position) => [total[0] + position[0], total[1] + position[1], total[2] + position[2]], [0, 0, 0]);
53
+ return [sum[0] / positions.length, sum[1] / positions.length, sum[2] / positions.length];
54
+ }
55
+ export function getBlockFaceFrame(topology, faceId) {
56
+ const face = topology.faces.find((candidate) => candidate.id === faceId);
57
+ if (!face)
58
+ return null;
59
+ const origin = getBlockFaceCentroid(topology, face);
60
+ const normal = getBlockFaceNormal(topology, face);
61
+ if (!(origin && normal))
62
+ return null;
63
+ const horizontal = [normal[2], 0, -normal[0]];
64
+ const xAxis = normalizeBlockVector(horizontal) ??
65
+ normalizeBlockVector([
66
+ 1 - normal[0] * normal[0],
67
+ -normal[0] * normal[1],
68
+ -normal[0] * normal[2],
69
+ ]);
70
+ if (!xAxis)
71
+ return null;
72
+ const yAxis = normalizeBlockVector([
73
+ normal[1] * xAxis[2] - normal[2] * xAxis[1],
74
+ normal[2] * xAxis[0] - normal[0] * xAxis[2],
75
+ normal[0] * xAxis[1] - normal[1] * xAxis[0],
76
+ ]);
77
+ if (!yAxis)
78
+ return null;
79
+ return { origin, xAxis, yAxis, normal };
80
+ }
81
+ export function blockUndirectedEdgeKey(a, b) {
82
+ return a < b ? `${a}\u0000${b}` : `${b}\u0000${a}`;
83
+ }
84
+ export function inspectBlockTopology(topology) {
85
+ const issues = [];
86
+ const vertexIds = new Set();
87
+ const edgeIds = new Set();
88
+ const faceIds = new Set();
89
+ const edgeKeys = new Set();
90
+ topology.vertices.forEach((vertex, index) => {
91
+ if (vertexIds.has(vertex.id)) {
92
+ issues.push({ path: ['vertices', index, 'id'], message: `Duplicate vertex id: ${vertex.id}` });
93
+ }
94
+ vertexIds.add(vertex.id);
95
+ });
96
+ topology.edges.forEach((edge, index) => {
97
+ if (edgeIds.has(edge.id)) {
98
+ issues.push({ path: ['edges', index, 'id'], message: `Duplicate edge id: ${edge.id}` });
99
+ }
100
+ edgeIds.add(edge.id);
101
+ const [a, b] = edge.vertexIds;
102
+ if (a === b) {
103
+ issues.push({ path: ['edges', index, 'vertexIds'], message: 'An edge needs two vertices' });
104
+ }
105
+ edge.vertexIds.forEach((vertexId, vertexIndex) => {
106
+ if (!vertexIds.has(vertexId)) {
107
+ issues.push({
108
+ path: ['edges', index, 'vertexIds', vertexIndex],
109
+ message: `Unknown vertex id: ${vertexId}`,
110
+ });
111
+ }
112
+ });
113
+ const key = blockUndirectedEdgeKey(a, b);
114
+ if (edgeKeys.has(key)) {
115
+ issues.push({ path: ['edges', index], message: `Duplicate edge: ${a}–${b}` });
116
+ }
117
+ edgeKeys.add(key);
118
+ });
119
+ topology.faces.forEach((face, index) => {
120
+ if (faceIds.has(face.id)) {
121
+ issues.push({ path: ['faces', index, 'id'], message: `Duplicate face id: ${face.id}` });
122
+ }
123
+ faceIds.add(face.id);
124
+ if (new Set(face.vertexIds).size < 3) {
125
+ issues.push({ path: ['faces', index, 'vertexIds'], message: 'A face needs three vertices' });
126
+ }
127
+ face.vertexIds.forEach((vertexId, vertexIndex) => {
128
+ if (!vertexIds.has(vertexId)) {
129
+ issues.push({
130
+ path: ['faces', index, 'vertexIds', vertexIndex],
131
+ message: `Unknown vertex id: ${vertexId}`,
132
+ });
133
+ }
134
+ const nextVertexId = face.vertexIds[(vertexIndex + 1) % face.vertexIds.length];
135
+ if (nextVertexId && !edgeKeys.has(blockUndirectedEdgeKey(vertexId, nextVertexId))) {
136
+ issues.push({
137
+ path: ['faces', index, 'vertexIds', vertexIndex],
138
+ message: `Missing edge for face boundary: ${vertexId}–${nextVertexId}`,
139
+ });
140
+ }
141
+ });
142
+ });
143
+ return issues;
144
+ }
145
+ export const BlockTopology = BlockTopologyShape.superRefine((topology, context) => {
146
+ for (const issue of inspectBlockTopology(topology)) {
147
+ context.addIssue({ code: 'custom', path: issue.path, message: issue.message });
148
+ }
149
+ });
150
+ export function createBoxBlockTopology(width = 2, height = 2.4, depth = 2) {
151
+ const halfWidth = width / 2;
152
+ const halfDepth = depth / 2;
153
+ return {
154
+ vertices: [
155
+ { id: 'v0', position: [-halfWidth, 0, -halfDepth] },
156
+ { id: 'v1', position: [halfWidth, 0, -halfDepth] },
157
+ { id: 'v2', position: [halfWidth, 0, halfDepth] },
158
+ { id: 'v3', position: [-halfWidth, 0, halfDepth] },
159
+ { id: 'v4', position: [-halfWidth, height, -halfDepth] },
160
+ { id: 'v5', position: [halfWidth, height, -halfDepth] },
161
+ { id: 'v6', position: [halfWidth, height, halfDepth] },
162
+ { id: 'v7', position: [-halfWidth, height, halfDepth] },
163
+ ],
164
+ edges: [
165
+ { id: 'e0', vertexIds: ['v0', 'v1'] },
166
+ { id: 'e1', vertexIds: ['v1', 'v2'] },
167
+ { id: 'e2', vertexIds: ['v2', 'v3'] },
168
+ { id: 'e3', vertexIds: ['v3', 'v0'] },
169
+ { id: 'e4', vertexIds: ['v4', 'v5'] },
170
+ { id: 'e5', vertexIds: ['v5', 'v6'] },
171
+ { id: 'e6', vertexIds: ['v6', 'v7'] },
172
+ { id: 'e7', vertexIds: ['v7', 'v4'] },
173
+ { id: 'e8', vertexIds: ['v0', 'v4'] },
174
+ { id: 'e9', vertexIds: ['v1', 'v5'] },
175
+ { id: 'e10', vertexIds: ['v2', 'v6'] },
176
+ { id: 'e11', vertexIds: ['v3', 'v7'] },
177
+ ],
178
+ faces: [
179
+ { id: 'f-bottom', vertexIds: ['v0', 'v1', 'v2', 'v3'], materialSlot: 'body' },
180
+ { id: 'f-top', vertexIds: ['v4', 'v7', 'v6', 'v5'], materialSlot: 'body' },
181
+ { id: 'f-front', vertexIds: ['v0', 'v4', 'v5', 'v1'], materialSlot: 'body' },
182
+ { id: 'f-right', vertexIds: ['v1', 'v5', 'v6', 'v2'], materialSlot: 'body' },
183
+ { id: 'f-back', vertexIds: ['v2', 'v6', 'v7', 'v3'], materialSlot: 'body' },
184
+ { id: 'f-left', vertexIds: ['v3', 'v7', 'v4', 'v0'], materialSlot: 'body' },
185
+ ],
186
+ };
187
+ }
188
+ export const BlockNode = BaseNode.extend({
189
+ id: objectId('block'),
190
+ type: nodeType('block'),
191
+ children: z.array(z.string()).default([]),
192
+ position: z.tuple([z.number(), z.number(), z.number()]).default([0, 0, 0]),
193
+ rotation: z.number().default(0),
194
+ supportSlabId: z.string().optional(),
195
+ topology: BlockTopology.default(createBoxBlockTopology),
196
+ slots: z.record(z.string(), z.string()).default({}),
197
+ slotNames: z.record(z.string(), z.string().min(1)).default({ body: 'Body' }),
198
+ }).describe(dedent `
199
+ block node - a topology-backed editable solid.
200
+ - children: hosted node ids
201
+ - topology: persistent vertices, edges, and ordered face loops with stable IDs
202
+ - position/rotation: level-local placement transform
203
+ - supportSlabId: persisted placement surface that prevents later slabs from lifting the mesh
204
+ - slots: material references keyed by face materialSlot; an unbound body uses the wall-role default
205
+ - slotNames: user-facing names for stable material slots; body is the permanent default slot
206
+ `);
@@ -1,4 +1,9 @@
1
1
  import { z } from 'zod';
2
+ export declare const BoxVentMaterialRole: z.ZodEnum<{
3
+ base: "base";
4
+ top: "top";
5
+ }>;
6
+ export type BoxVentMaterialRole = z.infer<typeof BoxVentMaterialRole>;
2
7
  export declare const BoxVentNode: z.ZodObject<{
3
8
  object: z.ZodDefault<z.ZodLiteral<"node">>;
4
9
  name: z.ZodOptional<z.ZodString>;
@@ -14,7 +19,7 @@ export declare const BoxVentNode: z.ZodObject<{
14
19
  fov: z.ZodOptional<z.ZodNumber>;
15
20
  zoom: z.ZodOptional<z.ZodNumber>;
16
21
  }, z.core.$strip>>;
17
- metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
22
+ metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
18
23
  id: z.ZodDefault<z.ZodTemplateLiteral<`bvent_${string}`>>;
19
24
  type: z.ZodDefault<z.ZodLiteral<"box-vent">>;
20
25
  material: z.ZodOptional<z.ZodObject<{
@@ -49,6 +54,7 @@ export declare const BoxVentNode: z.ZodObject<{
49
54
  scale: z.ZodOptional<z.ZodNumber>;
50
55
  }, z.core.$strip>>;
51
56
  }, z.core.$strip>>;
57
+ slots: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
52
58
  materialPreset: z.ZodDefault<z.ZodString>;
53
59
  roofSegmentId: z.ZodOptional<z.ZodString>;
54
60
  position: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
@@ -68,7 +74,7 @@ export declare const BoxVentNode: z.ZodObject<{
68
74
  box: "box";
69
75
  cap: "cap";
70
76
  dome: "dome";
71
- }>>>;
77
+ }>>, unknown>;
72
78
  }, z.core.$strip>;
73
79
  export type BoxVentNode = z.infer<typeof BoxVentNode>;
74
80
  //# sourceMappingURL=box-vent.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"box-vent.d.ts","sourceRoot":"","sources":["../../../src/schema/nodes/box-vent.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAiEvB,CAAA;AAED,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAA"}
1
+ {"version":3,"file":"box-vent.d.ts","sourceRoot":"","sources":["../../../src/schema/nodes/box-vent.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,eAAO,MAAM,mBAAmB;;;EAA0B,CAAA;AAC1D,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAA;AAErE,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAkEvB,CAAA;AAED,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAA"}
@@ -1,11 +1,13 @@
1
1
  import dedent from 'dedent';
2
2
  import { z } from 'zod';
3
- import { BaseNode, nodeType, objectId } from '../base';
4
- import { MaterialSchema } from '../material';
3
+ import { BaseNode, nodeType, objectId } from '../base.js';
4
+ import { MaterialSchema } from '../material.js';
5
+ export const BoxVentMaterialRole = z.enum(['base', 'top']);
5
6
  export const BoxVentNode = BaseNode.extend({
6
7
  id: objectId('bvent'),
7
8
  type: nodeType('box-vent'),
8
9
  material: MaterialSchema.optional(),
10
+ slots: z.record(z.string(), z.string()).optional(),
9
11
  // Default to the white preset so newly-placed vents read as clean
10
12
  // painted metal — and so the paint inspector shows "White" as the
11
13
  // current selection instead of an empty "no material" state, which
@@ -14,10 +14,10 @@ export declare const BuildingNode: z.ZodObject<{
14
14
  fov: z.ZodOptional<z.ZodNumber>;
15
15
  zoom: z.ZodOptional<z.ZodNumber>;
16
16
  }, z.core.$strip>>;
17
- metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
17
+ metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
18
18
  id: z.ZodDefault<z.ZodTemplateLiteral<`building_${string}`>>;
19
19
  type: z.ZodDefault<z.ZodLiteral<"building">>;
20
- children: z.ZodDefault<z.ZodArray<z.ZodUnion<readonly [z.ZodDefault<z.ZodTemplateLiteral<`level_${string}`>>, z.ZodDefault<z.ZodTemplateLiteral<`elevator_${string}`>>]>>>;
20
+ children: z.ZodDefault<z.ZodArray<z.ZodUnion<readonly [z.ZodDefault<z.ZodTemplateLiteral<`level_${string}`>>, z.ZodDefault<z.ZodTemplateLiteral<`elevator_${string}`>>, z.ZodDefault<z.ZodTemplateLiteral<`unit_${string}`>>]>>>;
21
21
  position: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
22
22
  rotation: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
23
23
  }, z.core.$strip>;
@@ -1 +1 @@
1
- {"version":3,"file":"building.d.ts","sourceRoot":"","sources":["../../../src/schema/nodes/building.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAKvB,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;iBAaxB,CAAA;AAED,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAA"}
1
+ {"version":3,"file":"building.d.ts","sourceRoot":"","sources":["../../../src/schema/nodes/building.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAMvB,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;iBAexB,CAAA;AAED,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAA"}
@@ -1,17 +1,20 @@
1
1
  import dedent from 'dedent';
2
2
  import { z } from 'zod';
3
- import { BaseNode, nodeType, objectId } from '../base';
4
- import { ElevatorNode } from './elevator';
5
- import { LevelNode } from './level';
3
+ import { BaseNode, nodeType, objectId } from '../base.js';
4
+ import { ElevatorNode } from './elevator.js';
5
+ import { LevelNode } from './level.js';
6
+ import { UnitNode } from './unit.js';
6
7
  export const BuildingNode = BaseNode.extend({
7
8
  id: objectId('building'),
8
9
  type: nodeType('building'),
9
- children: z.array(z.union([LevelNode.shape.id, ElevatorNode.shape.id])).default([]),
10
+ children: z
11
+ .array(z.union([LevelNode.shape.id, ElevatorNode.shape.id, UnitNode.shape.id]))
12
+ .default([]),
10
13
  position: z.tuple([z.number(), z.number(), z.number()]).default([0, 0, 0]),
11
14
  rotation: z.tuple([z.number(), z.number(), z.number()]).default([0, 0, 0]),
12
15
  }).describe(dedent `
13
16
  Building node - used to represent a building
14
17
  - position: position in site coordinate system
15
18
  - rotation: rotation in site coordinate system
16
- - children: array of level nodes and building-level systems such as elevators
19
+ - children: array of levels, units referencing zones, and building-level systems such as elevators
17
20
  `);
@@ -4,6 +4,18 @@ export declare const CabinetFrontStyleSchema: z.ZodEnum<{
4
4
  shaker: "shaker";
5
5
  "raised-arch": "raised-arch";
6
6
  }>;
7
+ export declare const CabinetTopFinishSchema: z.ZodEnum<{
8
+ trim: "trim";
9
+ none: "none";
10
+ "top-cabinet": "top-cabinet";
11
+ }>;
12
+ /** Canonical metric cabinet family used when no regional profile is selected. */
13
+ export declare const CABINET_METRIC_DEFAULTS: {
14
+ readonly depth: 0.6;
15
+ readonly carcassHeight: 0.8;
16
+ readonly plinthHeight: 0.1;
17
+ readonly countertopThickness: 0.02;
18
+ };
7
19
  declare const CabinetCompartment: z.ZodDiscriminatedUnion<[z.ZodObject<{
8
20
  type: z.ZodLiteral<"shelf">;
9
21
  shelfCount: z.ZodOptional<z.ZodNumber>;
@@ -123,7 +135,7 @@ export declare const CabinetNode: z.ZodObject<{
123
135
  fov: z.ZodOptional<z.ZodNumber>;
124
136
  zoom: z.ZodOptional<z.ZodNumber>;
125
137
  }, z.core.$strip>>;
126
- metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
138
+ metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
127
139
  position: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
128
140
  rotation: z.ZodDefault<z.ZodNumber>;
129
141
  supportSlabId: z.ZodOptional<z.ZodString>;
@@ -145,6 +157,7 @@ export declare const CabinetNode: z.ZodObject<{
145
157
  shaker: "shaker";
146
158
  "raised-arch": "raised-arch";
147
159
  }>>;
160
+ panelReady: z.ZodDefault<z.ZodBoolean>;
148
161
  handleStyle: z.ZodDefault<z.ZodEnum<{
149
162
  none: "none";
150
163
  bar: "bar";
@@ -308,7 +321,7 @@ export declare const CabinetNode: z.ZodObject<{
308
321
  base: "base";
309
322
  tall: "tall";
310
323
  }>>;
311
- children: z.ZodDefault<z.ZodArray<z.ZodDefault<z.ZodTemplateLiteral<`cabinet-module_${string}`>>>>;
324
+ children: z.ZodDefault<z.ZodArray<z.ZodString>>;
312
325
  barLedge: z.ZodOptional<z.ZodObject<{
313
326
  edge: z.ZodDefault<z.ZodEnum<{
314
327
  back: "back";
@@ -319,6 +332,7 @@ export declare const CabinetNode: z.ZodObject<{
319
332
  depth: z.ZodDefault<z.ZodNumber>;
320
333
  }, z.core.$strip>>;
321
334
  withWaterfall: z.ZodDefault<z.ZodBoolean>;
335
+ withFinishedEnds: z.ZodDefault<z.ZodBoolean>;
322
336
  }, z.core.$strip>;
323
337
  export declare const CabinetModuleNode: z.ZodObject<{
324
338
  object: z.ZodDefault<z.ZodLiteral<"node">>;
@@ -335,7 +349,7 @@ export declare const CabinetModuleNode: z.ZodObject<{
335
349
  fov: z.ZodOptional<z.ZodNumber>;
336
350
  zoom: z.ZodOptional<z.ZodNumber>;
337
351
  }, z.core.$strip>>;
338
- metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
352
+ metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
339
353
  position: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
340
354
  rotation: z.ZodDefault<z.ZodNumber>;
341
355
  supportSlabId: z.ZodOptional<z.ZodString>;
@@ -357,6 +371,7 @@ export declare const CabinetModuleNode: z.ZodObject<{
357
371
  shaker: "shaker";
358
372
  "raised-arch": "raised-arch";
359
373
  }>>;
374
+ panelReady: z.ZodDefault<z.ZodBoolean>;
360
375
  handleStyle: z.ZodDefault<z.ZodEnum<{
361
376
  none: "none";
362
377
  bar: "bar";
@@ -515,7 +530,7 @@ export declare const CabinetModuleNode: z.ZodObject<{
515
530
  }, z.core.$strip>], "type">>>;
516
531
  id: z.ZodDefault<z.ZodTemplateLiteral<`cabinet-module_${string}`>>;
517
532
  type: z.ZodDefault<z.ZodLiteral<"cabinet-module">>;
518
- children: z.ZodDefault<z.ZodArray<z.ZodUnion<readonly [z.ZodDefault<z.ZodTemplateLiteral<`cabinet-module_${string}`>>, z.ZodDefault<z.ZodTemplateLiteral<`cabinet_${string}`>>]>>>;
533
+ children: z.ZodDefault<z.ZodArray<z.ZodString>>;
519
534
  cabinetType: z.ZodDefault<z.ZodEnum<{
520
535
  base: "base";
521
536
  tall: "tall";
@@ -529,6 +544,13 @@ export declare const CabinetModuleNode: z.ZodObject<{
529
544
  left: "left";
530
545
  }>>;
531
546
  cornerShelf: z.ZodOptional<z.ZodBoolean>;
547
+ topFinish: z.ZodDefault<z.ZodEnum<{
548
+ trim: "trim";
549
+ none: "none";
550
+ "top-cabinet": "top-cabinet";
551
+ }>>;
552
+ topFinishHeight: z.ZodDefault<z.ZodNumber>;
553
+ topFinishDepth: z.ZodDefault<z.ZodNumber>;
532
554
  }, z.core.$strip>;
533
555
  export type CabinetNode = z.infer<typeof CabinetNode>;
534
556
  export type CabinetModuleNode = z.infer<typeof CabinetModuleNode>;
@@ -1 +1 @@
1
- {"version":3,"file":"cabinet.d.ts","sourceRoot":"","sources":["../../../src/schema/nodes/cabinet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAgBvB,eAAO,MAAM,uBAAuB;;;;EAA4C,CAAA;AAMhF,QAAA,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAmDtB,CAAA;AAEF,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAA;AAqCzE,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAiB0B,CAAA;AAElD,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAgB+B,CAAA;AAE7D,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAA;AACrD,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAA"}
1
+ {"version":3,"file":"cabinet.d.ts","sourceRoot":"","sources":["../../../src/schema/nodes/cabinet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAgBvB,eAAO,MAAM,uBAAuB;;;;EAA4C,CAAA;AAChF,eAAO,MAAM,sBAAsB;;;;EAA0C,CAAA;AAE7E,iFAAiF;AACjF,eAAO,MAAM,uBAAuB;;;;;CAK1B,CAAA;AAMV,QAAA,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAmDtB,CAAA;AAEF,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAA;AA2CzE,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAmB0B,CAAA;AAElD,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAqB+B,CAAA;AAE7D,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAA;AACrD,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAA"}
@@ -1,6 +1,6 @@
1
1
  import { z } from 'zod';
2
- import { BaseNode, nodeType, objectId } from '../base';
3
- import { MaterialSchema } from '../material';
2
+ import { BaseNode, nodeType, objectId } from '../base.js';
3
+ import { MaterialSchema } from '../material.js';
4
4
  const compartmentBase = {
5
5
  id: z.string(),
6
6
  height: z.number().positive().max(2.5).optional(),
@@ -12,6 +12,14 @@ const cooktopFields = {
12
12
  cooktopShowGrate: z.boolean().optional(),
13
13
  };
14
14
  export const CabinetFrontStyleSchema = z.enum(['slab', 'shaker', 'raised-arch']);
15
+ export const CabinetTopFinishSchema = z.enum(['none', 'top-cabinet', 'trim']);
16
+ /** Canonical metric cabinet family used when no regional profile is selected. */
17
+ export const CABINET_METRIC_DEFAULTS = {
18
+ depth: 0.6,
19
+ carcassHeight: 0.8,
20
+ plinthHeight: 0.1,
21
+ countertopThickness: 0.02,
22
+ };
15
23
  // Discriminated on `type` so invalid field combinations (a drawer with a
16
24
  // pantry rack style, a fridge with burner state) are unrepresentable. New
17
25
  // compartment kinds add a variant here rather than widening a shared bag of
@@ -76,13 +84,17 @@ const cabinetBoxFields = {
76
84
  // Persisted slab-support host — see ItemNode.supportSlabId for the rules.
77
85
  supportSlabId: z.string().optional(),
78
86
  width: z.number().min(0.05).max(3).default(0.5),
79
- depth: z.number().min(0.3).max(1.2).default(0.5),
80
- carcassHeight: z.number().min(0.4).max(2.4).default(0.72),
87
+ depth: z.number().min(0.3).max(1.2).default(CABINET_METRIC_DEFAULTS.depth),
88
+ carcassHeight: z.number().min(0.4).max(2.4).default(CABINET_METRIC_DEFAULTS.carcassHeight),
81
89
  operationState: z.number().min(0).max(1).default(0),
82
- plinthHeight: z.number().min(0).max(0.3).default(0.1),
90
+ plinthHeight: z.number().min(0).max(0.3).default(CABINET_METRIC_DEFAULTS.plinthHeight),
83
91
  toeKickDepth: z.number().min(0).max(0.2).default(0.075),
84
92
  boardThickness: z.number().min(0.01).max(0.08).default(0.018),
85
- countertopThickness: z.number().min(0).max(0.08).default(0.02),
93
+ countertopThickness: z
94
+ .number()
95
+ .min(0)
96
+ .max(0.08)
97
+ .default(CABINET_METRIC_DEFAULTS.countertopThickness),
86
98
  countertopOverhang: z.number().min(0).max(0.12).default(0.02),
87
99
  // Extra slab reach off the back edge (island seating side) — up to a
88
100
  // 45 cm knee-space overhang, unlike the small uniform front/side overhang.
@@ -91,6 +103,8 @@ const cabinetBoxFields = {
91
103
  frontThickness: z.number().min(0.01).max(0.05).default(0.018),
92
104
  frontGap: z.number().min(0.001).max(0.02).default(0.003),
93
105
  frontStyle: CabinetFrontStyleSchema.default('slab'),
106
+ // Fridge-only: replace the appliance door face with a cabinet-matched panel.
107
+ panelReady: z.boolean().default(false),
94
108
  handleStyle: z.enum(['none', 'bar', 'cutout', 'hole', 'knob']).default('bar'),
95
109
  handlePosition: z.enum(['auto', 'top', 'center']).default('auto'),
96
110
  frontOverlay: z.enum(['full', 'inset']).default('full'),
@@ -106,7 +120,7 @@ export const CabinetNode = BaseNode.extend({
106
120
  id: objectId('cabinet'),
107
121
  type: nodeType('cabinet'),
108
122
  runTier: z.enum(['base', 'wall', 'tall']).default('base'),
109
- children: z.array(objectId('cabinet-module')).default([]),
123
+ children: z.array(z.string()).default([]),
110
124
  // Raised bar counter along one run edge: a knee wall topped by a slab at
111
125
  // bar height. Run-level because it spans modules like the countertop.
112
126
  barLedge: z
@@ -118,12 +132,14 @@ export const CabinetNode = BaseNode.extend({
118
132
  .optional(),
119
133
  // Countertop material dropping to the floor on exposed run ends.
120
134
  withWaterfall: z.boolean().default(false),
135
+ // Add matching decorative panels to ends that are not joined to another run.
136
+ withFinishedEnds: z.boolean().default(false),
121
137
  ...cabinetBoxFields,
122
138
  }).describe('Parametric modular cabinet run node');
123
139
  export const CabinetModuleNode = BaseNode.extend({
124
140
  id: objectId('cabinet-module'),
125
141
  type: nodeType('cabinet-module'),
126
- children: z.array(z.union([objectId('cabinet-module'), objectId('cabinet')])).default([]),
142
+ children: z.array(z.string()).default([]),
127
143
  cabinetType: z.enum(['base', 'tall']).default('base'),
128
144
  // Discriminator for specialty units (corner L-shape, sink base, appliance
129
145
  // gap, open shelving). 'standard' modules use the compartment stack as-is;
@@ -135,5 +151,10 @@ export const CabinetModuleNode = BaseNode.extend({
135
151
  // Corner-pocket fillers carry a small internal shelf so the dead corner reads
136
152
  // as reachable storage instead of an empty boxed void.
137
153
  cornerShelf: z.boolean().optional(),
154
+ // Optional upper termination for wall/tall compositions. It is deliberately
155
+ // separate from carcassHeight so the main cabinet proportions stay stable.
156
+ topFinish: CabinetTopFinishSchema.default('none'),
157
+ topFinishHeight: z.number().min(0).max(1.2).default(0.33),
158
+ topFinishDepth: z.number().min(0.15).max(1.2).default(0.32),
138
159
  ...cabinetBoxFields,
139
160
  }).describe('Parametric module inside a modular cabinet run');
@@ -14,10 +14,10 @@ export declare const CeilingNode: z.ZodObject<{
14
14
  fov: z.ZodOptional<z.ZodNumber>;
15
15
  zoom: z.ZodOptional<z.ZodNumber>;
16
16
  }, z.core.$strip>>;
17
- metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
17
+ metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
18
18
  id: z.ZodDefault<z.ZodTemplateLiteral<`ceiling_${string}`>>;
19
19
  type: z.ZodDefault<z.ZodLiteral<"ceiling">>;
20
- children: z.ZodDefault<z.ZodArray<z.ZodDefault<z.ZodTemplateLiteral<`item_${string}`>>>>;
20
+ children: z.ZodDefault<z.ZodArray<z.ZodUnion<readonly [z.ZodDefault<z.ZodTemplateLiteral<`item_${string}`>>, z.ZodDefault<z.ZodTemplateLiteral<`procedural-item_${string}`>>]>>>;
21
21
  material: z.ZodOptional<z.ZodObject<{
22
22
  id: z.ZodOptional<z.ZodString>;
23
23
  preset: z.ZodOptional<z.ZodCatch<z.ZodEnum<{
@@ -1,13 +1,13 @@
1
1
  import dedent from 'dedent';
2
2
  import { z } from 'zod';
3
- import { BaseNode, nodeType, objectId } from '../base';
4
- import { MaterialSchema } from '../material';
5
- import { ItemNode } from './item';
6
- import { SurfaceHoleMetadata } from './surface-hole-metadata';
3
+ import { BaseNode, nodeType, objectId } from '../base.js';
4
+ import { MaterialSchema } from '../material.js';
5
+ import { ItemNode } from './item.js';
6
+ import { SurfaceHoleMetadata } from './surface-hole-metadata.js';
7
7
  export const CeilingNode = BaseNode.extend({
8
8
  id: objectId('ceiling'),
9
9
  type: nodeType('ceiling'),
10
- children: z.array(ItemNode.shape.id).default([]),
10
+ children: z.array(z.union([ItemNode.shape.id, objectId('procedural-item')])).default([]),
11
11
  material: MaterialSchema.optional(),
12
12
  materialPreset: z.string().optional(),
13
13
  // Per-slot material overrides on the unified slot model, mirroring
@@ -1,7 +1,7 @@
1
1
  import { z } from 'zod';
2
2
  export declare const ChimneyMaterialRole: z.ZodEnum<{
3
- top: "top";
4
3
  body: "body";
4
+ top: "top";
5
5
  }>;
6
6
  export type ChimneyMaterialRole = z.infer<typeof ChimneyMaterialRole>;
7
7
  export declare const ChimneyNode: z.ZodObject<{
@@ -19,7 +19,7 @@ export declare const ChimneyNode: z.ZodObject<{
19
19
  fov: z.ZodOptional<z.ZodNumber>;
20
20
  zoom: z.ZodOptional<z.ZodNumber>;
21
21
  }, z.core.$strip>>;
22
- metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
22
+ metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
23
23
  id: z.ZodDefault<z.ZodTemplateLiteral<`chimney_${string}`>>;
24
24
  type: z.ZodDefault<z.ZodLiteral<"chimney">>;
25
25
  material: z.ZodOptional<z.ZodObject<{
@@ -1,7 +1,7 @@
1
1
  import dedent from 'dedent';
2
2
  import { z } from 'zod';
3
- import { BaseNode, nodeType, objectId } from '../base';
4
- import { MaterialSchema } from '../material';
3
+ import { BaseNode, nodeType, objectId } from '../base.js';
4
+ import { MaterialSchema } from '../material.js';
5
5
  export const ChimneyMaterialRole = z.enum(['body', 'top']);
6
6
  export const ChimneyNode = BaseNode.extend({
7
7
  id: objectId('chimney'),
@@ -58,14 +58,14 @@ export declare const ColumnCapitalStyle: z.ZodEnum<{
58
58
  "wood-bracket": "wood-bracket";
59
59
  }>;
60
60
  export declare const ColumnRingPlacement: z.ZodEnum<{
61
+ top: "top";
61
62
  ends: "ends";
62
63
  even: "even";
63
- top: "top";
64
64
  bottom: "bottom";
65
65
  }>;
66
66
  export declare const ColumnCarvingPlacement: z.ZodEnum<{
67
- shaft: "shaft";
68
67
  base: "base";
68
+ shaft: "shaft";
69
69
  capital: "capital";
70
70
  all: "all";
71
71
  }>;
@@ -107,9 +107,10 @@ export declare const ColumnNode: z.ZodObject<{
107
107
  fov: z.ZodOptional<z.ZodNumber>;
108
108
  zoom: z.ZodOptional<z.ZodNumber>;
109
109
  }, z.core.$strip>>;
110
- metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
110
+ metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
111
111
  id: z.ZodDefault<z.ZodTemplateLiteral<`column_${string}`>>;
112
112
  type: z.ZodDefault<z.ZodLiteral<"column">>;
113
+ children: z.ZodDefault<z.ZodArray<z.ZodString>>;
113
114
  position: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
114
115
  rotation: z.ZodDefault<z.ZodNumber>;
115
116
  supportSlabId: z.ZodOptional<z.ZodString>;
@@ -206,9 +207,9 @@ export declare const ColumnNode: z.ZodObject<{
206
207
  capitalCarvingLevel: z.ZodDefault<z.ZodNumber>;
207
208
  ringCount: z.ZodDefault<z.ZodNumber>;
208
209
  ringPlacement: z.ZodDefault<z.ZodEnum<{
210
+ top: "top";
209
211
  ends: "ends";
210
212
  even: "even";
211
- top: "top";
212
213
  bottom: "bottom";
213
214
  }>>;
214
215
  ringThickness: z.ZodDefault<z.ZodNumber>;
@@ -227,15 +228,15 @@ export declare const ColumnNode: z.ZodObject<{
227
228
  }>>;
228
229
  latheRingCount: z.ZodDefault<z.ZodNumber>;
229
230
  latheRingSpacing: z.ZodDefault<z.ZodEnum<{
231
+ top: "top";
230
232
  ends: "ends";
231
233
  even: "even";
232
- top: "top";
233
234
  bottom: "bottom";
234
235
  }>>;
235
236
  carvingLevel: z.ZodDefault<z.ZodNumber>;
236
237
  carvingPlacement: z.ZodDefault<z.ZodEnum<{
237
- shaft: "shaft";
238
238
  base: "base";
239
+ shaft: "shaft";
239
240
  capital: "capital";
240
241
  all: "all";
241
242
  }>>;
@@ -1 +1 @@
1
- {"version":3,"file":"column.d.ts","sourceRoot":"","sources":["../../../src/schema/nodes/column.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"column.d.ts","sourceRoot":"","sources":["../../../src/schema/nodes/column.ts"],"names":[],"mappings":"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"}