@pascal-app/core 1.0.1 → 1.0.4

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 (1116) hide show
  1. package/dist/agent-operations/__fixtures__/add-object-cases.d.ts +235 -0
  2. package/dist/agent-operations/__fixtures__/add-object-cases.d.ts.map +1 -0
  3. package/dist/agent-operations/__fixtures__/add-object-cases.js +129 -0
  4. package/dist/agent-operations/__fixtures__/build-room-cases.d.ts +4 -0
  5. package/dist/agent-operations/__fixtures__/build-room-cases.d.ts.map +1 -0
  6. package/dist/agent-operations/__fixtures__/build-room-cases.js +635 -0
  7. package/dist/agent-operations/__fixtures__/cases.d.ts +52 -0
  8. package/dist/agent-operations/__fixtures__/cases.d.ts.map +1 -0
  9. package/dist/agent-operations/__fixtures__/cases.js +689 -0
  10. package/dist/agent-operations/__fixtures__/find-by-type-cases.d.ts +7 -0
  11. package/dist/agent-operations/__fixtures__/find-by-type-cases.d.ts.map +1 -0
  12. package/dist/agent-operations/__fixtures__/find-by-type-cases.js +21 -0
  13. package/dist/agent-operations/__fixtures__/place-items-cases.d.ts +17 -0
  14. package/dist/agent-operations/__fixtures__/place-items-cases.d.ts.map +1 -0
  15. package/dist/agent-operations/__fixtures__/place-items-cases.js +506 -0
  16. package/dist/agent-operations/__fixtures__/room-cases.d.ts +3 -0
  17. package/dist/agent-operations/__fixtures__/room-cases.d.ts.map +1 -0
  18. package/dist/agent-operations/__fixtures__/room-cases.js +338 -0
  19. package/dist/agent-operations/__fixtures__/search-assets-cases.d.ts +5 -0
  20. package/dist/agent-operations/__fixtures__/search-assets-cases.d.ts.map +1 -0
  21. package/dist/agent-operations/__fixtures__/search-assets-cases.js +137 -0
  22. package/dist/agent-operations/__fixtures__/structure-cases.d.ts +6 -0
  23. package/dist/agent-operations/__fixtures__/structure-cases.d.ts.map +1 -0
  24. package/dist/agent-operations/__fixtures__/structure-cases.js +588 -0
  25. package/dist/agent-operations/__fixtures__/verify-scene-cases.d.ts +3 -0
  26. package/dist/agent-operations/__fixtures__/verify-scene-cases.d.ts.map +1 -0
  27. package/dist/agent-operations/__fixtures__/verify-scene-cases.js +302 -0
  28. package/dist/agent-operations/achieved.d.ts +16 -0
  29. package/dist/agent-operations/achieved.d.ts.map +1 -0
  30. package/dist/agent-operations/achieved.js +28 -0
  31. package/dist/agent-operations/add-column.d.ts +23 -0
  32. package/dist/agent-operations/add-column.d.ts.map +1 -0
  33. package/dist/agent-operations/add-column.js +97 -0
  34. package/dist/agent-operations/add-level.d.ts +14 -0
  35. package/dist/agent-operations/add-level.d.ts.map +1 -0
  36. package/dist/agent-operations/add-level.js +94 -0
  37. package/dist/agent-operations/add-object.d.ts +114 -0
  38. package/dist/agent-operations/add-object.d.ts.map +1 -0
  39. package/dist/agent-operations/add-object.js +361 -0
  40. package/dist/agent-operations/add-wall.d.ts +15 -0
  41. package/dist/agent-operations/add-wall.d.ts.map +1 -0
  42. package/dist/agent-operations/add-wall.js +47 -0
  43. package/dist/agent-operations/apply-changes.d.ts +16 -0
  44. package/dist/agent-operations/apply-changes.d.ts.map +1 -0
  45. package/dist/agent-operations/apply-changes.js +93 -0
  46. package/dist/agent-operations/apply-outcome.d.ts +15 -0
  47. package/dist/agent-operations/apply-outcome.d.ts.map +1 -0
  48. package/dist/agent-operations/apply-outcome.js +18 -0
  49. package/dist/agent-operations/collections.d.ts +28 -0
  50. package/dist/agent-operations/collections.d.ts.map +1 -0
  51. package/dist/agent-operations/collections.js +130 -0
  52. package/dist/agent-operations/create-room.d.ts +36 -0
  53. package/dist/agent-operations/create-room.d.ts.map +1 -0
  54. package/dist/agent-operations/create-room.js +177 -0
  55. package/dist/agent-operations/create-stair.d.ts +33 -0
  56. package/dist/agent-operations/create-stair.d.ts.map +1 -0
  57. package/dist/agent-operations/create-stair.js +247 -0
  58. package/dist/agent-operations/delete-node.d.ts +6 -0
  59. package/dist/agent-operations/delete-node.d.ts.map +1 -0
  60. package/dist/agent-operations/delete-node.js +9 -0
  61. package/dist/agent-operations/door-clearance.d.ts +135 -0
  62. package/dist/agent-operations/door-clearance.d.ts.map +1 -0
  63. package/dist/agent-operations/door-clearance.js +334 -0
  64. package/dist/agent-operations/duplicate-level.d.ts +12 -0
  65. package/dist/agent-operations/duplicate-level.d.ts.map +1 -0
  66. package/dist/agent-operations/duplicate-level.js +54 -0
  67. package/dist/agent-operations/find-by-type.d.ts +11 -0
  68. package/dist/agent-operations/find-by-type.d.ts.map +1 -0
  69. package/dist/agent-operations/find-by-type.js +94 -0
  70. package/dist/agent-operations/furnish-room.d.ts +18 -0
  71. package/dist/agent-operations/furnish-room.d.ts.map +1 -0
  72. package/dist/agent-operations/furnish-room.js +259 -0
  73. package/dist/agent-operations/get-node.d.ts +9 -0
  74. package/dist/agent-operations/get-node.d.ts.map +1 -0
  75. package/dist/agent-operations/get-node.js +33 -0
  76. package/dist/agent-operations/hosted-services.d.ts +13 -0
  77. package/dist/agent-operations/hosted-services.d.ts.map +1 -0
  78. package/dist/agent-operations/hosted-services.js +22 -0
  79. package/dist/agent-operations/index.d.ts +277 -0
  80. package/dist/agent-operations/index.d.ts.map +1 -0
  81. package/dist/agent-operations/index.js +80 -0
  82. package/dist/agent-operations/layout-clearance.d.ts +108 -0
  83. package/dist/agent-operations/layout-clearance.d.ts.map +1 -0
  84. package/dist/agent-operations/layout-clearance.js +190 -0
  85. package/dist/agent-operations/level-reads.d.ts +33 -0
  86. package/dist/agent-operations/level-reads.d.ts.map +1 -0
  87. package/dist/agent-operations/level-reads.js +161 -0
  88. package/dist/agent-operations/level-target.d.ts +11 -0
  89. package/dist/agent-operations/level-target.d.ts.map +1 -0
  90. package/dist/agent-operations/level-target.js +29 -0
  91. package/dist/agent-operations/list-levels.d.ts +4 -0
  92. package/dist/agent-operations/list-levels.d.ts.map +1 -0
  93. package/dist/agent-operations/list-levels.js +31 -0
  94. package/dist/agent-operations/material-preset.d.ts +11 -0
  95. package/dist/agent-operations/material-preset.d.ts.map +1 -0
  96. package/dist/agent-operations/material-preset.js +74 -0
  97. package/dist/agent-operations/material-refs.d.ts +24 -0
  98. package/dist/agent-operations/material-refs.d.ts.map +1 -0
  99. package/dist/agent-operations/material-refs.js +100 -0
  100. package/dist/agent-operations/node-patch.d.ts +3 -0
  101. package/dist/agent-operations/node-patch.d.ts.map +1 -0
  102. package/dist/agent-operations/node-patch.js +114 -0
  103. package/dist/agent-operations/paint.d.ts +21 -0
  104. package/dist/agent-operations/paint.d.ts.map +1 -0
  105. package/dist/agent-operations/paint.js +219 -0
  106. package/dist/agent-operations/place-items.d.ts +20 -0
  107. package/dist/agent-operations/place-items.d.ts.map +1 -0
  108. package/dist/agent-operations/place-items.js +226 -0
  109. package/dist/agent-operations/plan-geometry.d.ts +24 -0
  110. package/dist/agent-operations/plan-geometry.d.ts.map +1 -0
  111. package/dist/agent-operations/plan-geometry.js +94 -0
  112. package/dist/agent-operations/room-structure.d.ts +87 -0
  113. package/dist/agent-operations/room-structure.d.ts.map +1 -0
  114. package/dist/agent-operations/room-structure.js +144 -0
  115. package/dist/agent-operations/scene-materials.d.ts +15 -0
  116. package/dist/agent-operations/scene-materials.d.ts.map +1 -0
  117. package/dist/agent-operations/scene-materials.js +62 -0
  118. package/dist/agent-operations/scene-measure.d.ts +73 -0
  119. package/dist/agent-operations/scene-measure.d.ts.map +1 -0
  120. package/dist/agent-operations/scene-measure.js +73 -0
  121. package/dist/agent-operations/scene-queries.d.ts +4510 -0
  122. package/dist/agent-operations/scene-queries.d.ts.map +1 -0
  123. package/dist/agent-operations/scene-queries.js +84 -0
  124. package/dist/agent-operations/scene-view.d.ts +98 -0
  125. package/dist/agent-operations/scene-view.d.ts.map +1 -0
  126. package/dist/agent-operations/scene-view.js +559 -0
  127. package/dist/agent-operations/search-assets.d.ts +14 -0
  128. package/dist/agent-operations/search-assets.d.ts.map +1 -0
  129. package/dist/agent-operations/search-assets.js +42 -0
  130. package/dist/agent-operations/search-materials.d.ts +12 -0
  131. package/dist/agent-operations/search-materials.d.ts.map +1 -0
  132. package/dist/agent-operations/search-materials.js +111 -0
  133. package/dist/agent-operations/stairs.d.ts +5 -0
  134. package/dist/agent-operations/stairs.d.ts.map +1 -0
  135. package/dist/agent-operations/stairs.js +70 -0
  136. package/dist/agent-operations/types.d.ts +59 -0
  137. package/dist/agent-operations/types.d.ts.map +1 -0
  138. package/dist/agent-operations/types.js +1 -0
  139. package/dist/agent-operations/verify-scene.d.ts +50 -0
  140. package/dist/agent-operations/verify-scene.d.ts.map +1 -0
  141. package/dist/agent-operations/verify-scene.js +369 -0
  142. package/dist/agent-operations/wall-opening.d.ts +65 -0
  143. package/dist/agent-operations/wall-opening.d.ts.map +1 -0
  144. package/dist/agent-operations/wall-opening.js +55 -0
  145. package/dist/agent-tools/achieved.d.ts +9 -0
  146. package/dist/agent-tools/achieved.d.ts.map +1 -0
  147. package/dist/agent-tools/achieved.js +8 -0
  148. package/dist/agent-tools/add-object.d.ts +43 -0
  149. package/dist/agent-tools/add-object.d.ts.map +1 -0
  150. package/dist/agent-tools/add-object.js +86 -0
  151. package/dist/agent-tools/assets.d.ts +13 -0
  152. package/dist/agent-tools/assets.d.ts.map +1 -0
  153. package/dist/agent-tools/assets.js +18 -0
  154. package/dist/agent-tools/clear-scene.d.ts +10 -0
  155. package/dist/agent-tools/clear-scene.d.ts.map +1 -0
  156. package/dist/agent-tools/clear-scene.js +9 -0
  157. package/dist/agent-tools/collections.d.ts +35 -0
  158. package/dist/agent-tools/collections.d.ts.map +1 -0
  159. package/dist/agent-tools/collections.js +31 -0
  160. package/dist/agent-tools/columns.d.ts +44 -0
  161. package/dist/agent-tools/columns.d.ts.map +1 -0
  162. package/dist/agent-tools/columns.js +59 -0
  163. package/dist/agent-tools/contract.d.ts +68 -0
  164. package/dist/agent-tools/contract.d.ts.map +1 -0
  165. package/dist/agent-tools/contract.js +1 -0
  166. package/dist/agent-tools/create-room.d.ts +63 -0
  167. package/dist/agent-tools/create-room.d.ts.map +1 -0
  168. package/dist/agent-tools/create-room.js +90 -0
  169. package/dist/agent-tools/find-by-type.d.ts +11 -0
  170. package/dist/agent-tools/find-by-type.d.ts.map +1 -0
  171. package/dist/agent-tools/find-by-type.js +14 -0
  172. package/dist/agent-tools/furnish-room.d.ts +26 -0
  173. package/dist/agent-tools/furnish-room.d.ts.map +1 -0
  174. package/dist/agent-tools/furnish-room.js +35 -0
  175. package/dist/agent-tools/hosted-services.d.ts +402 -0
  176. package/dist/agent-tools/hosted-services.d.ts.map +1 -0
  177. package/dist/agent-tools/hosted-services.js +148 -0
  178. package/dist/agent-tools/index.d.ts +864 -0
  179. package/dist/agent-tools/index.d.ts.map +1 -0
  180. package/dist/agent-tools/index.js +82 -0
  181. package/dist/agent-tools/levels.d.ts +72 -0
  182. package/dist/agent-tools/levels.d.ts.map +1 -0
  183. package/dist/agent-tools/levels.js +76 -0
  184. package/dist/agent-tools/measurement.d.ts +37 -0
  185. package/dist/agent-tools/measurement.d.ts.map +1 -0
  186. package/dist/agent-tools/measurement.js +94 -0
  187. package/dist/agent-tools/node-id.d.ts +3 -0
  188. package/dist/agent-tools/node-id.d.ts.map +1 -0
  189. package/dist/agent-tools/node-id.js +2 -0
  190. package/dist/agent-tools/nodes.d.ts +17 -0
  191. package/dist/agent-tools/nodes.d.ts.map +1 -0
  192. package/dist/agent-tools/nodes.js +13 -0
  193. package/dist/agent-tools/paint.d.ts +46 -0
  194. package/dist/agent-tools/paint.d.ts.map +1 -0
  195. package/dist/agent-tools/paint.js +29 -0
  196. package/dist/agent-tools/place-items.d.ts +19 -0
  197. package/dist/agent-tools/place-items.d.ts.map +1 -0
  198. package/dist/agent-tools/place-items.js +29 -0
  199. package/dist/agent-tools/refusal.d.ts +20 -0
  200. package/dist/agent-tools/refusal.d.ts.map +1 -0
  201. package/dist/agent-tools/refusal.js +29 -0
  202. package/dist/agent-tools/room-structure.d.ts +438 -0
  203. package/dist/agent-tools/room-structure.d.ts.map +1 -0
  204. package/dist/agent-tools/room-structure.js +207 -0
  205. package/dist/agent-tools/search-materials.d.ts +20 -0
  206. package/dist/agent-tools/search-materials.d.ts.map +1 -0
  207. package/dist/agent-tools/search-materials.js +32 -0
  208. package/dist/agent-tools/stairs.d.ts +86 -0
  209. package/dist/agent-tools/stairs.d.ts.map +1 -0
  210. package/dist/agent-tools/stairs.js +103 -0
  211. package/dist/agent-tools/verify-scene.d.ts +13 -0
  212. package/dist/agent-tools/verify-scene.d.ts.map +1 -0
  213. package/dist/agent-tools/verify-scene.js +21 -0
  214. package/dist/agent-tools/view-scene.d.ts +43 -0
  215. package/dist/agent-tools/view-scene.d.ts.map +1 -0
  216. package/dist/agent-tools/view-scene.js +80 -0
  217. package/dist/agent-tools/wall-openings.d.ts +163 -0
  218. package/dist/agent-tools/wall-openings.d.ts.map +1 -0
  219. package/dist/agent-tools/wall-openings.js +144 -0
  220. package/dist/agent-tools/walls.d.ts +21 -0
  221. package/dist/agent-tools/walls.d.ts.map +1 -0
  222. package/dist/agent-tools/walls.js +30 -0
  223. package/dist/agent-tools/write-target.d.ts +12 -0
  224. package/dist/agent-tools/write-target.d.ts.map +1 -0
  225. package/dist/agent-tools/write-target.js +10 -0
  226. package/dist/building/__fixtures__/wall-opening-cases.d.ts +736 -0
  227. package/dist/building/__fixtures__/wall-opening-cases.d.ts.map +1 -0
  228. package/dist/building/__fixtures__/wall-opening-cases.js +307 -0
  229. package/dist/building/door-types.d.ts +22 -0
  230. package/dist/building/door-types.d.ts.map +1 -0
  231. package/dist/building/door-types.js +167 -0
  232. package/dist/building/floor-item-fit.d.ts +38 -0
  233. package/dist/building/floor-item-fit.d.ts.map +1 -0
  234. package/dist/building/floor-item-fit.js +47 -0
  235. package/dist/building/index.d.ts +7 -0
  236. package/dist/building/index.d.ts.map +1 -0
  237. package/dist/building/index.js +6 -0
  238. package/dist/building/level-duplication.d.ts +8983 -0
  239. package/dist/building/level-duplication.d.ts.map +1 -0
  240. package/dist/building/level-duplication.js +314 -0
  241. package/dist/building/opening-style-presets.d.ts +46 -0
  242. package/dist/building/opening-style-presets.d.ts.map +1 -0
  243. package/dist/building/opening-style-presets.js +195 -0
  244. package/dist/building/wall-openings.d.ts +445 -0
  245. package/dist/building/wall-openings.d.ts.map +1 -0
  246. package/dist/building/wall-openings.js +231 -0
  247. package/dist/building/window-types.d.ts +17 -0
  248. package/dist/building/window-types.d.ts.map +1 -0
  249. package/dist/building/window-types.js +31 -0
  250. package/dist/commands/structure/apply-zone-transform.d.ts +23 -0
  251. package/dist/commands/structure/apply-zone-transform.d.ts.map +1 -0
  252. package/dist/commands/structure/apply-zone-transform.js +55 -0
  253. package/dist/commands/structure/create-mezzanine.d.ts +12 -0
  254. package/dist/commands/structure/create-mezzanine.d.ts.map +1 -0
  255. package/dist/commands/structure/create-mezzanine.js +46 -0
  256. package/dist/commands/structure/create-zone.d.ts +32 -0
  257. package/dist/commands/structure/create-zone.d.ts.map +1 -0
  258. package/dist/commands/structure/create-zone.js +126 -0
  259. package/dist/commands/structure/delete-zone.d.ts +51 -0
  260. package/dist/commands/structure/delete-zone.d.ts.map +1 -0
  261. package/dist/commands/structure/delete-zone.js +354 -0
  262. package/dist/commands/structure/divide-zone.d.ts +38 -0
  263. package/dist/commands/structure/divide-zone.d.ts.map +1 -0
  264. package/dist/commands/structure/divide-zone.js +186 -0
  265. package/dist/commands/structure/duplicate-zone.d.ts +7 -0
  266. package/dist/commands/structure/duplicate-zone.d.ts.map +1 -0
  267. package/dist/commands/structure/duplicate-zone.js +21 -0
  268. package/dist/commands/structure/floor-opening.d.ts +36 -0
  269. package/dist/commands/structure/floor-opening.d.ts.map +1 -0
  270. package/dist/commands/structure/floor-opening.js +124 -0
  271. package/dist/commands/structure/index.d.ts +22 -0
  272. package/dist/commands/structure/index.d.ts.map +1 -0
  273. package/dist/commands/structure/index.js +20 -0
  274. package/dist/commands/structure/lock-outside-faces.d.ts +12 -0
  275. package/dist/commands/structure/lock-outside-faces.d.ts.map +1 -0
  276. package/dist/commands/structure/lock-outside-faces.js +32 -0
  277. package/dist/commands/structure/merge-zones.d.ts +5 -0
  278. package/dist/commands/structure/merge-zones.d.ts.map +1 -0
  279. package/dist/commands/structure/merge-zones.js +22 -0
  280. package/dist/commands/structure/mezzanine-content.d.ts +16 -0
  281. package/dist/commands/structure/mezzanine-content.d.ts.map +1 -0
  282. package/dist/commands/structure/mezzanine-content.js +109 -0
  283. package/dist/commands/structure/plan-mezzanine-stair.d.ts +7 -0
  284. package/dist/commands/structure/plan-mezzanine-stair.d.ts.map +1 -0
  285. package/dist/commands/structure/plan-mezzanine-stair.js +127 -0
  286. package/dist/commands/structure/plan-wall-deletion.d.ts +9 -0
  287. package/dist/commands/structure/plan-wall-deletion.d.ts.map +1 -0
  288. package/dist/commands/structure/plan-wall-deletion.js +151 -0
  289. package/dist/commands/structure/rebase-floor-reference.d.ts +7 -0
  290. package/dist/commands/structure/rebase-floor-reference.d.ts.map +1 -0
  291. package/dist/commands/structure/rebase-floor-reference.js +90 -0
  292. package/dist/commands/structure/resize-mezzanine.d.ts +8 -0
  293. package/dist/commands/structure/resize-mezzanine.d.ts.map +1 -0
  294. package/dist/commands/structure/resize-mezzanine.js +43 -0
  295. package/dist/commands/structure/rotate-zone.d.ts +8 -0
  296. package/dist/commands/structure/rotate-zone.d.ts.map +1 -0
  297. package/dist/commands/structure/rotate-zone.js +28 -0
  298. package/dist/commands/structure/set-floor-foundation.d.ts +62 -0
  299. package/dist/commands/structure/set-floor-foundation.d.ts.map +1 -0
  300. package/dist/commands/structure/set-floor-foundation.js +162 -0
  301. package/dist/commands/structure/set-room-floor-construction.d.ts +8 -0
  302. package/dist/commands/structure/set-room-floor-construction.d.ts.map +1 -0
  303. package/dist/commands/structure/set-room-floor-construction.js +72 -0
  304. package/dist/commands/structure/set-wall-geometry.d.ts +10 -0
  305. package/dist/commands/structure/set-wall-geometry.d.ts.map +1 -0
  306. package/dist/commands/structure/set-wall-geometry.js +52 -0
  307. package/dist/commands/structure/set-zone-edges.d.ts +14 -0
  308. package/dist/commands/structure/set-zone-edges.d.ts.map +1 -0
  309. package/dist/commands/structure/set-zone-edges.js +143 -0
  310. package/dist/commands/structure/set-zone-intent.d.ts +39 -0
  311. package/dist/commands/structure/set-zone-intent.d.ts.map +1 -0
  312. package/dist/commands/structure/set-zone-intent.js +125 -0
  313. package/dist/commands/structure/shared.d.ts +4512 -0
  314. package/dist/commands/structure/shared.d.ts.map +1 -0
  315. package/dist/commands/structure/shared.js +102 -0
  316. package/dist/commands/structure/transform-zone.d.ts +23 -0
  317. package/dist/commands/structure/transform-zone.d.ts.map +1 -0
  318. package/dist/commands/structure/transform-zone.js +472 -0
  319. package/dist/commands/structure/validate-mezzanine.d.ts +5 -0
  320. package/dist/commands/structure/validate-mezzanine.d.ts.map +1 -0
  321. package/dist/commands/structure/validate-mezzanine.js +46 -0
  322. package/dist/commands/structure/zone-crossings.d.ts +8 -0
  323. package/dist/commands/structure/zone-crossings.d.ts.map +1 -0
  324. package/dist/commands/structure/zone-crossings.js +162 -0
  325. package/dist/commands/structure/zone-drop.d.ts +4 -0
  326. package/dist/commands/structure/zone-drop.d.ts.map +1 -0
  327. package/dist/commands/structure/zone-drop.js +68 -0
  328. package/dist/commands/structure/zone-insertion.d.ts +4 -0
  329. package/dist/commands/structure/zone-insertion.d.ts.map +1 -0
  330. package/dist/commands/structure/zone-insertion.js +200 -0
  331. package/dist/commands/structure/zone-transform-content.d.ts +6 -0
  332. package/dist/commands/structure/zone-transform-content.d.ts.map +1 -0
  333. package/dist/commands/structure/zone-transform-content.js +117 -0
  334. package/dist/commands/structure/zone-wall-merge.d.ts +4977 -0
  335. package/dist/commands/structure/zone-wall-merge.d.ts.map +1 -0
  336. package/dist/commands/structure/zone-wall-merge.js +135 -0
  337. package/dist/contracts/reference-discovery.d.ts +18 -0
  338. package/dist/contracts/reference-discovery.d.ts.map +1 -0
  339. package/dist/contracts/reference-discovery.js +100 -0
  340. package/dist/contracts/reference-inventory.d.ts +44 -0
  341. package/dist/contracts/reference-inventory.d.ts.map +1 -0
  342. package/dist/contracts/reference-inventory.js +872 -0
  343. package/dist/events/bus.d.ts +70 -9
  344. package/dist/events/bus.d.ts.map +1 -1
  345. package/dist/hooks/scene-registry/item-clip-registry.d.ts +6 -3
  346. package/dist/hooks/scene-registry/item-clip-registry.d.ts.map +1 -1
  347. package/dist/hooks/scene-registry/item-clip-registry.js +2 -1
  348. package/dist/hooks/spatial-grid/floor-placed-elevation.d.ts.map +1 -1
  349. package/dist/hooks/spatial-grid/floor-placed-elevation.js +15 -1
  350. package/dist/hooks/spatial-grid/spatial-grid-manager.d.ts +3 -2
  351. package/dist/hooks/spatial-grid/spatial-grid-manager.d.ts.map +1 -1
  352. package/dist/hooks/spatial-grid/spatial-grid-manager.js +53 -66
  353. package/dist/hooks/spatial-grid/spatial-grid-sync.d.ts +1650 -131
  354. package/dist/hooks/spatial-grid/spatial-grid-sync.d.ts.map +1 -1
  355. package/dist/hooks/spatial-grid/spatial-grid-sync.js +86 -83
  356. package/dist/hooks/spatial-grid/support-host-patch.d.ts +1 -0
  357. package/dist/hooks/spatial-grid/support-host-patch.d.ts.map +1 -1
  358. package/dist/hooks/spatial-grid/support-host-patch.js +12 -5
  359. package/dist/index.d.ts +83 -13
  360. package/dist/index.d.ts.map +1 -1
  361. package/dist/index.js +78 -11
  362. package/dist/lib/__bench__/near-linear-walls.d.ts +2 -0
  363. package/dist/lib/__bench__/near-linear-walls.d.ts.map +1 -0
  364. package/dist/lib/__bench__/near-linear-walls.js +24 -0
  365. package/dist/lib/__bench__/structure-preview.bench.d.ts +2 -0
  366. package/dist/lib/__bench__/structure-preview.bench.d.ts.map +1 -0
  367. package/dist/lib/__bench__/structure-preview.bench.js +72 -0
  368. package/dist/lib/__fixtures__/mezzanine.d.ts +13968 -0
  369. package/dist/lib/__fixtures__/mezzanine.d.ts.map +1 -0
  370. package/dist/lib/__fixtures__/mezzanine.js +43 -0
  371. package/dist/lib/absorb-wall-separators.d.ts +4483 -0
  372. package/dist/lib/absorb-wall-separators.d.ts.map +1 -0
  373. package/dist/lib/absorb-wall-separators.js +65 -0
  374. package/dist/lib/angle-accumulator.d.ts +3 -0
  375. package/dist/lib/angle-accumulator.d.ts.map +1 -0
  376. package/dist/lib/angle-accumulator.js +13 -0
  377. package/dist/lib/artifact-store.d.ts +31 -0
  378. package/dist/lib/artifact-store.d.ts.map +1 -0
  379. package/dist/lib/artifact-store.js +42 -0
  380. package/dist/lib/assembly-stack.d.ts +54 -0
  381. package/dist/lib/assembly-stack.d.ts.map +1 -0
  382. package/dist/lib/assembly-stack.js +52 -0
  383. package/dist/lib/asset-storage.d.ts.map +1 -1
  384. package/dist/lib/asset-storage.js +3 -0
  385. package/dist/lib/canonical-opening-ring.d.ts +3 -0
  386. package/dist/lib/canonical-opening-ring.d.ts.map +1 -0
  387. package/dist/lib/canonical-opening-ring.js +14 -0
  388. package/dist/lib/ceiling-children.d.ts +8 -0
  389. package/dist/lib/ceiling-children.d.ts.map +1 -0
  390. package/dist/lib/ceiling-children.js +36 -0
  391. package/dist/lib/ceiling-surface.d.ts +40 -0
  392. package/dist/lib/ceiling-surface.d.ts.map +1 -0
  393. package/dist/lib/ceiling-surface.js +65 -0
  394. package/dist/lib/cutter-host.d.ts +5 -0
  395. package/dist/lib/cutter-host.d.ts.map +1 -0
  396. package/dist/lib/cutter-host.js +30 -0
  397. package/dist/lib/floor-construction-lift.d.ts +4 -0
  398. package/dist/lib/floor-construction-lift.d.ts.map +1 -0
  399. package/dist/lib/floor-construction-lift.js +54 -0
  400. package/dist/lib/floor-footprint-key.d.ts +3 -0
  401. package/dist/lib/floor-footprint-key.d.ts.map +1 -0
  402. package/dist/lib/floor-footprint-key.js +9 -0
  403. package/dist/lib/floor-footprint-name.d.ts +11 -0
  404. package/dist/lib/floor-footprint-name.d.ts.map +1 -0
  405. package/dist/lib/floor-footprint-name.js +52 -0
  406. package/dist/lib/floor-foundation-datum.d.ts +31 -0
  407. package/dist/lib/floor-foundation-datum.d.ts.map +1 -0
  408. package/dist/lib/floor-foundation-datum.js +226 -0
  409. package/dist/lib/floor-foundation-stack.d.ts +16 -0
  410. package/dist/lib/floor-foundation-stack.d.ts.map +1 -0
  411. package/dist/lib/floor-foundation-stack.js +214 -0
  412. package/dist/lib/floor-intent-changes.d.ts +10 -0
  413. package/dist/lib/floor-intent-changes.d.ts.map +1 -0
  414. package/dist/lib/floor-intent-changes.js +461 -0
  415. package/dist/lib/floor-opening-footprints.d.ts +24 -0
  416. package/dist/lib/floor-opening-footprints.d.ts.map +1 -0
  417. package/dist/lib/floor-opening-footprints.js +127 -0
  418. package/dist/lib/floor-opening-intent.d.ts +16 -0
  419. package/dist/lib/floor-opening-intent.d.ts.map +1 -0
  420. package/dist/lib/floor-opening-intent.js +82 -0
  421. package/dist/lib/floor-plate-id.d.ts +5 -0
  422. package/dist/lib/floor-plate-id.d.ts.map +1 -0
  423. package/dist/lib/floor-plate-id.js +20 -0
  424. package/dist/lib/floor-plate-paint.d.ts +8 -0
  425. package/dist/lib/floor-plate-paint.d.ts.map +1 -0
  426. package/dist/lib/floor-plate-paint.js +11 -0
  427. package/dist/lib/floor-plates.d.ts +211 -0
  428. package/dist/lib/floor-plates.d.ts.map +1 -0
  429. package/dist/lib/floor-plates.js +729 -0
  430. package/dist/lib/floor-room-faces.d.ts +5 -0
  431. package/dist/lib/floor-room-faces.d.ts.map +1 -0
  432. package/dist/lib/floor-room-faces.js +29 -0
  433. package/dist/lib/floor-step-finish.d.ts +49 -0
  434. package/dist/lib/floor-step-finish.d.ts.map +1 -0
  435. package/dist/lib/floor-step-finish.js +128 -0
  436. package/dist/lib/geometry-script-node.d.ts +82 -0
  437. package/dist/lib/geometry-script-node.d.ts.map +1 -0
  438. package/dist/lib/geometry-script-node.js +147 -0
  439. package/dist/lib/geometry-surfaces.d.ts +61 -0
  440. package/dist/lib/geometry-surfaces.d.ts.map +1 -0
  441. package/dist/lib/geometry-surfaces.js +156 -0
  442. package/dist/lib/item-slab-support.d.ts +14 -0
  443. package/dist/lib/item-slab-support.d.ts.map +1 -0
  444. package/dist/lib/item-slab-support.js +40 -0
  445. package/dist/lib/level-footprints.d.ts +23 -0
  446. package/dist/lib/level-footprints.d.ts.map +1 -0
  447. package/dist/lib/level-footprints.js +398 -0
  448. package/dist/lib/level-name.d.ts +7 -0
  449. package/dist/lib/level-name.d.ts.map +1 -1
  450. package/dist/lib/level-name.js +11 -3
  451. package/dist/lib/new-zone.d.ts +10 -0
  452. package/dist/lib/new-zone.d.ts.map +1 -0
  453. package/dist/lib/new-zone.js +10 -0
  454. package/dist/lib/node-ancestry.d.ts +30 -0
  455. package/dist/lib/node-ancestry.d.ts.map +1 -0
  456. package/dist/lib/node-ancestry.js +76 -0
  457. package/dist/lib/node-visibility.d.ts +12 -0
  458. package/dist/lib/node-visibility.d.ts.map +1 -0
  459. package/dist/lib/node-visibility.js +12 -0
  460. package/dist/lib/object-cuts.d.ts +11 -0
  461. package/dist/lib/object-cuts.d.ts.map +1 -0
  462. package/dist/lib/object-cuts.js +63 -0
  463. package/dist/lib/opening-floor-datum.d.ts +24 -0
  464. package/dist/lib/opening-floor-datum.d.ts.map +1 -0
  465. package/dist/lib/opening-floor-datum.js +145 -0
  466. package/dist/lib/own-floor-intent.d.ts +15 -0
  467. package/dist/lib/own-floor-intent.d.ts.map +1 -0
  468. package/dist/lib/own-floor-intent.js +201 -0
  469. package/dist/lib/plate-reference.d.ts +3 -0
  470. package/dist/lib/plate-reference.d.ts.map +1 -0
  471. package/dist/lib/plate-reference.js +91 -0
  472. package/dist/lib/plate-surface.d.ts +120 -0
  473. package/dist/lib/plate-surface.d.ts.map +1 -0
  474. package/dist/lib/plate-surface.js +725 -0
  475. package/dist/lib/polygon-boolean.d.ts +17 -0
  476. package/dist/lib/polygon-boolean.d.ts.map +1 -0
  477. package/dist/lib/polygon-boolean.js +195 -0
  478. package/dist/lib/polygon-label.d.ts +7 -0
  479. package/dist/lib/polygon-label.d.ts.map +1 -0
  480. package/dist/lib/polygon-label.js +94 -0
  481. package/dist/lib/room-drawn-floor.d.ts +29 -0
  482. package/dist/lib/room-drawn-floor.d.ts.map +1 -0
  483. package/dist/lib/room-drawn-floor.js +88 -0
  484. package/dist/lib/room-floor-choices.d.ts +11 -0
  485. package/dist/lib/room-floor-choices.d.ts.map +1 -0
  486. package/dist/lib/room-floor-choices.js +60 -0
  487. package/dist/lib/room-floor-feasibility.d.ts +25 -0
  488. package/dist/lib/room-floor-feasibility.d.ts.map +1 -0
  489. package/dist/lib/room-floor-feasibility.js +293 -0
  490. package/dist/lib/room-floor-plate.d.ts +3 -0
  491. package/dist/lib/room-floor-plate.d.ts.map +1 -0
  492. package/dist/lib/room-floor-plate.js +4 -0
  493. package/dist/lib/room-graph.d.ts +79 -0
  494. package/dist/lib/room-graph.d.ts.map +1 -0
  495. package/dist/lib/room-graph.js +1265 -0
  496. package/dist/lib/room-name.d.ts +10 -0
  497. package/dist/lib/room-name.d.ts.map +1 -0
  498. package/dist/lib/room-name.js +22 -0
  499. package/dist/lib/room-topology-index.d.ts +53 -5
  500. package/dist/lib/room-topology-index.d.ts.map +1 -1
  501. package/dist/lib/room-topology-index.js +176 -30
  502. package/dist/lib/room-vertical-placement.d.ts +12 -0
  503. package/dist/lib/room-vertical-placement.d.ts.map +1 -0
  504. package/dist/lib/room-vertical-placement.js +28 -0
  505. package/dist/lib/room-zone-adoption.d.ts +74 -0
  506. package/dist/lib/room-zone-adoption.d.ts.map +1 -0
  507. package/dist/lib/room-zone-adoption.js +150 -0
  508. package/dist/lib/setback-envelope.d.ts +73 -0
  509. package/dist/lib/setback-envelope.d.ts.map +1 -0
  510. package/dist/lib/setback-envelope.js +506 -0
  511. package/dist/lib/slab-polygon.d.ts.map +1 -1
  512. package/dist/lib/slab-polygon.js +33 -12
  513. package/dist/lib/slots.d.ts +20 -0
  514. package/dist/lib/slots.d.ts.map +1 -1
  515. package/dist/lib/slots.js +44 -0
  516. package/dist/lib/space-detection.d.ts +14 -94
  517. package/dist/lib/space-detection.d.ts.map +1 -1
  518. package/dist/lib/space-detection.js +244 -1616
  519. package/dist/lib/structure-commit.d.ts +38 -0
  520. package/dist/lib/structure-commit.d.ts.map +1 -0
  521. package/dist/lib/structure-commit.js +52 -0
  522. package/dist/lib/structure-kernel.d.ts +66 -0
  523. package/dist/lib/structure-kernel.d.ts.map +1 -0
  524. package/dist/lib/structure-kernel.js +735 -0
  525. package/dist/lib/structure-reconcile.d.ts +15 -0
  526. package/dist/lib/structure-reconcile.d.ts.map +1 -0
  527. package/dist/lib/structure-reconcile.js +218 -0
  528. package/dist/lib/terrain-contours.d.ts +29 -0
  529. package/dist/lib/terrain-contours.d.ts.map +1 -0
  530. package/dist/lib/terrain-contours.js +199 -0
  531. package/dist/lib/terrain-source-persisted.d.ts +42 -0
  532. package/dist/lib/terrain-source-persisted.d.ts.map +1 -0
  533. package/dist/lib/terrain-source-persisted.js +68 -0
  534. package/dist/lib/terrain-source.d.ts +2 -40
  535. package/dist/lib/terrain-source.d.ts.map +1 -1
  536. package/dist/lib/terrain-source.js +2 -68
  537. package/dist/lib/terrain-support-query.d.ts +83 -0
  538. package/dist/lib/terrain-support-query.d.ts.map +1 -0
  539. package/dist/lib/terrain-support-query.js +187 -0
  540. package/dist/lib/terrain-support.d.ts +1 -77
  541. package/dist/lib/terrain-support.d.ts.map +1 -1
  542. package/dist/lib/terrain-support.js +3 -181
  543. package/dist/lib/unit-containment.js +2 -2
  544. package/dist/lib/unit-report.d.ts.map +1 -1
  545. package/dist/lib/unit-report.js +5 -4
  546. package/dist/lib/zone-colors.d.ts +11 -0
  547. package/dist/lib/zone-colors.d.ts.map +1 -0
  548. package/dist/lib/zone-colors.js +32 -0
  549. package/dist/lib/zone-quantities.d.ts.map +1 -1
  550. package/dist/lib/zone-quantities.js +113 -223
  551. package/dist/material-library.d.ts +9 -1
  552. package/dist/material-library.d.ts.map +1 -1
  553. package/dist/material-library.js +550 -1
  554. package/dist/node-slots/block.d.ts +7 -0
  555. package/dist/node-slots/block.d.ts.map +1 -0
  556. package/dist/node-slots/block.js +27 -0
  557. package/dist/node-slots/cabinet.d.ts +4 -0
  558. package/dist/node-slots/cabinet.d.ts.map +1 -0
  559. package/dist/node-slots/cabinet.js +24 -0
  560. package/dist/node-slots/ceiling.d.ts +6 -0
  561. package/dist/node-slots/ceiling.d.ts.map +1 -0
  562. package/dist/node-slots/ceiling.js +7 -0
  563. package/dist/node-slots/column.d.ts +9 -0
  564. package/dist/node-slots/column.d.ts.map +1 -0
  565. package/dist/node-slots/column.js +24 -0
  566. package/dist/node-slots/door.d.ts +9 -0
  567. package/dist/node-slots/door.d.ts.map +1 -0
  568. package/dist/node-slots/door.js +20 -0
  569. package/dist/node-slots/duct.d.ts +5 -0
  570. package/dist/node-slots/duct.d.ts.map +1 -0
  571. package/dist/node-slots/duct.js +5 -0
  572. package/dist/node-slots/elevator.d.ts +9 -0
  573. package/dist/node-slots/elevator.d.ts.map +1 -0
  574. package/dist/node-slots/elevator.js +17 -0
  575. package/dist/node-slots/fence.d.ts +10 -0
  576. package/dist/node-slots/fence.d.ts.map +1 -0
  577. package/dist/node-slots/fence.js +23 -0
  578. package/dist/node-slots/index.d.ts +25 -0
  579. package/dist/node-slots/index.d.ts.map +1 -0
  580. package/dist/node-slots/index.js +92 -0
  581. package/dist/node-slots/lean-to-extension.d.ts +5 -0
  582. package/dist/node-slots/lean-to-extension.d.ts.map +1 -0
  583. package/dist/node-slots/lean-to-extension.js +15 -0
  584. package/dist/node-slots/procedural-item.d.ts +4 -0
  585. package/dist/node-slots/procedural-item.d.ts.map +1 -0
  586. package/dist/node-slots/procedural-item.js +3 -0
  587. package/dist/node-slots/roof-accessories.d.ts +9 -0
  588. package/dist/node-slots/roof-accessories.d.ts.map +1 -0
  589. package/dist/node-slots/roof-accessories.js +34 -0
  590. package/dist/node-slots/shelf.d.ts +9 -0
  591. package/dist/node-slots/shelf.d.ts.map +1 -0
  592. package/dist/node-slots/shelf.js +30 -0
  593. package/dist/node-slots/slab.d.ts +7 -0
  594. package/dist/node-slots/slab.d.ts.map +1 -0
  595. package/dist/node-slots/slab.js +21 -0
  596. package/dist/node-slots/stair.d.ts +8 -0
  597. package/dist/node-slots/stair.d.ts.map +1 -0
  598. package/dist/node-slots/stair.js +17 -0
  599. package/dist/node-slots/wall.d.ts +12 -0
  600. package/dist/node-slots/wall.d.ts.map +1 -0
  601. package/dist/node-slots/wall.js +55 -0
  602. package/dist/node-slots/window.d.ts +5 -0
  603. package/dist/node-slots/window.d.ts.map +1 -0
  604. package/dist/node-slots/window.js +11 -0
  605. package/dist/procedural-items/design-placement.d.ts +49 -0
  606. package/dist/procedural-items/design-placement.d.ts.map +1 -0
  607. package/dist/procedural-items/design-placement.js +129 -0
  608. package/dist/procedural-items/design.d.ts +261 -0
  609. package/dist/procedural-items/design.d.ts.map +1 -0
  610. package/dist/procedural-items/design.js +707 -0
  611. package/dist/procedural-items/fixtures.d.ts +464 -24
  612. package/dist/procedural-items/fixtures.d.ts.map +1 -1
  613. package/dist/procedural-items/index.d.ts +5 -0
  614. package/dist/procedural-items/index.d.ts.map +1 -1
  615. package/dist/procedural-items/index.js +5 -0
  616. package/dist/procedural-items/integration.d.ts +127 -6
  617. package/dist/procedural-items/integration.d.ts.map +1 -1
  618. package/dist/procedural-items/joints.d.ts +56 -0
  619. package/dist/procedural-items/joints.d.ts.map +1 -0
  620. package/dist/procedural-items/joints.js +251 -0
  621. package/dist/procedural-items/library-colors.d.ts +12 -0
  622. package/dist/procedural-items/library-colors.d.ts.map +1 -1
  623. package/dist/procedural-items/library-colors.js +37 -3
  624. package/dist/procedural-items/motion-controller.d.ts +29 -0
  625. package/dist/procedural-items/motion-controller.d.ts.map +1 -0
  626. package/dist/procedural-items/motion-controller.js +130 -0
  627. package/dist/procedural-items/node.d.ts +490 -24
  628. package/dist/procedural-items/node.d.ts.map +1 -1
  629. package/dist/procedural-items/query.d.ts +19 -1
  630. package/dist/procedural-items/query.d.ts.map +1 -1
  631. package/dist/procedural-items/query.js +131 -48
  632. package/dist/procedural-items/recipe.d.ts +258 -14
  633. package/dist/procedural-items/recipe.d.ts.map +1 -1
  634. package/dist/procedural-items/recipe.js +933 -61
  635. package/dist/procedural-items/section.d.ts +27 -0
  636. package/dist/procedural-items/section.d.ts.map +1 -0
  637. package/dist/procedural-items/section.js +237 -0
  638. package/dist/procedural-items/spatial.d.ts +21 -0
  639. package/dist/procedural-items/spatial.d.ts.map +1 -1
  640. package/dist/procedural-items/spatial.js +90 -0
  641. package/dist/registry/handles.d.ts +30 -1
  642. package/dist/registry/handles.d.ts.map +1 -1
  643. package/dist/registry/index.d.ts +7 -5
  644. package/dist/registry/index.d.ts.map +1 -1
  645. package/dist/registry/index.js +4 -2
  646. package/dist/registry/mechanism.d.ts +9 -0
  647. package/dist/registry/mechanism.d.ts.map +1 -0
  648. package/dist/registry/mechanism.js +21 -0
  649. package/dist/registry/registry.d.ts +6 -3
  650. package/dist/registry/registry.d.ts.map +1 -1
  651. package/dist/registry/registry.js +59 -22
  652. package/dist/registry/scene-api.d.ts +20 -0
  653. package/dist/registry/scene-api.d.ts.map +1 -1
  654. package/dist/registry/scene-api.js +26 -13
  655. package/dist/registry/subtree.d.ts +8 -0
  656. package/dist/registry/subtree.d.ts.map +1 -1
  657. package/dist/registry/subtree.js +59 -0
  658. package/dist/registry/types.d.ts +352 -13
  659. package/dist/registry/types.d.ts.map +1 -1
  660. package/dist/schema/__fixtures__/node-fixtures.d.ts.map +1 -1
  661. package/dist/schema/__fixtures__/node-fixtures.js +2 -0
  662. package/dist/schema/assembly.d.ts +153 -0
  663. package/dist/schema/assembly.d.ts.map +1 -0
  664. package/dist/schema/assembly.js +155 -0
  665. package/dist/schema/asset-url.d.ts +2 -1
  666. package/dist/schema/asset-url.d.ts.map +1 -1
  667. package/dist/schema/asset-url.js +5 -2
  668. package/dist/schema/base.d.ts +26 -0
  669. package/dist/schema/base.d.ts.map +1 -1
  670. package/dist/schema/base.js +2 -0
  671. package/dist/schema/collection-templates.d.ts +46 -0
  672. package/dist/schema/collection-templates.d.ts.map +1 -0
  673. package/dist/schema/collection-templates.js +14 -0
  674. package/dist/schema/collections.d.ts +7 -0
  675. package/dist/schema/collections.d.ts.map +1 -1
  676. package/dist/schema/cut.d.ts +29 -0
  677. package/dist/schema/cut.d.ts.map +1 -0
  678. package/dist/schema/cut.js +50 -0
  679. package/dist/schema/geometry-metadata.d.ts +51 -0
  680. package/dist/schema/geometry-metadata.d.ts.map +1 -0
  681. package/dist/schema/geometry-metadata.js +57 -0
  682. package/dist/schema/geometry-source.d.ts +250 -0
  683. package/dist/schema/geometry-source.d.ts.map +1 -0
  684. package/dist/schema/geometry-source.js +130 -0
  685. package/dist/schema/index.d.ts +20 -7
  686. package/dist/schema/index.d.ts.map +1 -1
  687. package/dist/schema/index.js +22 -5
  688. package/dist/schema/nodes/block.d.ts +28 -2
  689. package/dist/schema/nodes/block.d.ts.map +1 -1
  690. package/dist/schema/nodes/block.js +22 -9
  691. package/dist/schema/nodes/box-vent.d.ts +26 -0
  692. package/dist/schema/nodes/box-vent.d.ts.map +1 -1
  693. package/dist/schema/nodes/building.d.ts +26 -0
  694. package/dist/schema/nodes/building.d.ts.map +1 -1
  695. package/dist/schema/nodes/cabinet.d.ts +61 -9
  696. package/dist/schema/nodes/cabinet.d.ts.map +1 -1
  697. package/dist/schema/nodes/ceiling.d.ts +37 -0
  698. package/dist/schema/nodes/ceiling.d.ts.map +1 -1
  699. package/dist/schema/nodes/ceiling.js +8 -0
  700. package/dist/schema/nodes/chimney.d.ts +26 -0
  701. package/dist/schema/nodes/chimney.d.ts.map +1 -1
  702. package/dist/schema/nodes/column.d.ts +126 -0
  703. package/dist/schema/nodes/column.d.ts.map +1 -1
  704. package/dist/schema/nodes/column.js +2 -0
  705. package/dist/schema/nodes/construction-dimension.d.ts +26 -0
  706. package/dist/schema/nodes/construction-dimension.d.ts.map +1 -1
  707. package/dist/schema/nodes/cupola.d.ts +26 -0
  708. package/dist/schema/nodes/cupola.d.ts.map +1 -1
  709. package/dist/schema/nodes/curtain-wall.d.ts +129 -0
  710. package/dist/schema/nodes/curtain-wall.d.ts.map +1 -0
  711. package/dist/schema/nodes/curtain-wall.js +49 -0
  712. package/dist/schema/nodes/door.d.ts +141 -22
  713. package/dist/schema/nodes/door.d.ts.map +1 -1
  714. package/dist/schema/nodes/door.js +18 -33
  715. package/dist/schema/nodes/dormer.d.ts +28 -2
  716. package/dist/schema/nodes/dormer.d.ts.map +1 -1
  717. package/dist/schema/nodes/downspout.d.ts +27 -1
  718. package/dist/schema/nodes/downspout.d.ts.map +1 -1
  719. package/dist/schema/nodes/duct-fitting.d.ts +27 -1
  720. package/dist/schema/nodes/duct-fitting.d.ts.map +1 -1
  721. package/dist/schema/nodes/duct-segment.d.ts +27 -1
  722. package/dist/schema/nodes/duct-segment.d.ts.map +1 -1
  723. package/dist/schema/nodes/duct-terminal.d.ts +26 -0
  724. package/dist/schema/nodes/duct-terminal.d.ts.map +1 -1
  725. package/dist/schema/nodes/elevator.d.ts +26 -0
  726. package/dist/schema/nodes/elevator.d.ts.map +1 -1
  727. package/dist/schema/nodes/eyebrow-vent.d.ts +26 -0
  728. package/dist/schema/nodes/eyebrow-vent.d.ts.map +1 -1
  729. package/dist/schema/nodes/fence-feature.d.ts +141 -0
  730. package/dist/schema/nodes/fence-feature.d.ts.map +1 -0
  731. package/dist/schema/nodes/fence-feature.js +21 -0
  732. package/dist/schema/nodes/fence.d.ts +186 -0
  733. package/dist/schema/nodes/fence.d.ts.map +1 -1
  734. package/dist/schema/nodes/fence.js +92 -7
  735. package/dist/schema/nodes/floor-opening.d.ts +61 -0
  736. package/dist/schema/nodes/floor-opening.d.ts.map +1 -0
  737. package/dist/schema/nodes/floor-opening.js +17 -0
  738. package/dist/schema/nodes/guide.d.ts +26 -0
  739. package/dist/schema/nodes/guide.d.ts.map +1 -1
  740. package/dist/schema/nodes/gutter.d.ts +26 -0
  741. package/dist/schema/nodes/gutter.d.ts.map +1 -1
  742. package/dist/schema/nodes/hvac-equipment.d.ts +26 -0
  743. package/dist/schema/nodes/hvac-equipment.d.ts.map +1 -1
  744. package/dist/schema/nodes/imported-mesh.d.ts +26 -0
  745. package/dist/schema/nodes/imported-mesh.d.ts.map +1 -1
  746. package/dist/schema/nodes/item.d.ts +153 -2
  747. package/dist/schema/nodes/item.d.ts.map +1 -1
  748. package/dist/schema/nodes/item.js +13 -0
  749. package/dist/schema/nodes/lean-to-extension.d.ts +26 -0
  750. package/dist/schema/nodes/lean-to-extension.d.ts.map +1 -1
  751. package/dist/schema/nodes/level.d.ts +27 -1
  752. package/dist/schema/nodes/level.d.ts.map +1 -1
  753. package/dist/schema/nodes/lineset.d.ts +26 -0
  754. package/dist/schema/nodes/lineset.d.ts.map +1 -1
  755. package/dist/schema/nodes/liquid-line.d.ts +26 -0
  756. package/dist/schema/nodes/liquid-line.d.ts.map +1 -1
  757. package/dist/schema/nodes/measurement.d.ts +26 -0
  758. package/dist/schema/nodes/measurement.d.ts.map +1 -1
  759. package/dist/schema/nodes/opening-types.d.ts +41 -0
  760. package/dist/schema/nodes/opening-types.d.ts.map +1 -0
  761. package/dist/schema/nodes/opening-types.js +48 -0
  762. package/dist/schema/nodes/pipe-fitting.d.ts +26 -0
  763. package/dist/schema/nodes/pipe-fitting.d.ts.map +1 -1
  764. package/dist/schema/nodes/pipe-segment.d.ts +26 -0
  765. package/dist/schema/nodes/pipe-segment.d.ts.map +1 -1
  766. package/dist/schema/nodes/pipe-trap.d.ts +26 -0
  767. package/dist/schema/nodes/pipe-trap.d.ts.map +1 -1
  768. package/dist/schema/nodes/ridge-vent.d.ts +26 -0
  769. package/dist/schema/nodes/ridge-vent.d.ts.map +1 -1
  770. package/dist/schema/nodes/roof-segment-walls.d.ts.map +1 -1
  771. package/dist/schema/nodes/roof-segment-walls.js +2 -1
  772. package/dist/schema/nodes/roof-segment.d.ts +30 -2
  773. package/dist/schema/nodes/roof-segment.d.ts.map +1 -1
  774. package/dist/schema/nodes/roof-segment.js +9 -0
  775. package/dist/schema/nodes/roof.d.ts +101 -0
  776. package/dist/schema/nodes/roof.d.ts.map +1 -1
  777. package/dist/schema/nodes/roof.js +6 -0
  778. package/dist/schema/nodes/scan.d.ts +26 -0
  779. package/dist/schema/nodes/scan.d.ts.map +1 -1
  780. package/dist/schema/nodes/separator.d.ts +50 -0
  781. package/dist/schema/nodes/separator.d.ts.map +1 -0
  782. package/dist/schema/nodes/separator.js +8 -0
  783. package/dist/schema/nodes/shelf.d.ts +26 -0
  784. package/dist/schema/nodes/shelf.d.ts.map +1 -1
  785. package/dist/schema/nodes/site.d.ts +192 -0
  786. package/dist/schema/nodes/site.d.ts.map +1 -1
  787. package/dist/schema/nodes/site.js +178 -1
  788. package/dist/schema/nodes/skylight.d.ts +30 -4
  789. package/dist/schema/nodes/skylight.d.ts.map +1 -1
  790. package/dist/schema/nodes/slab.d.ts +84 -0
  791. package/dist/schema/nodes/slab.d.ts.map +1 -1
  792. package/dist/schema/nodes/slab.js +37 -2
  793. package/dist/schema/nodes/solar-panel.d.ts +26 -0
  794. package/dist/schema/nodes/solar-panel.d.ts.map +1 -1
  795. package/dist/schema/nodes/spawn.d.ts +26 -0
  796. package/dist/schema/nodes/spawn.d.ts.map +1 -1
  797. package/dist/schema/nodes/stair-construction.d.ts +21 -0
  798. package/dist/schema/nodes/stair-construction.d.ts.map +1 -0
  799. package/dist/schema/nodes/stair-construction.js +13 -0
  800. package/dist/schema/nodes/stair-design-targets.d.ts +9 -0
  801. package/dist/schema/nodes/stair-design-targets.d.ts.map +1 -0
  802. package/dist/schema/nodes/stair-design-targets.js +7 -0
  803. package/dist/schema/nodes/stair-segment.d.ts +72 -4
  804. package/dist/schema/nodes/stair-segment.d.ts.map +1 -1
  805. package/dist/schema/nodes/stair-segment.js +13 -0
  806. package/dist/schema/nodes/stair.d.ts +119 -2
  807. package/dist/schema/nodes/stair.d.ts.map +1 -1
  808. package/dist/schema/nodes/stair.js +59 -2
  809. package/dist/schema/nodes/structural-grid.d.ts +26 -0
  810. package/dist/schema/nodes/structural-grid.d.ts.map +1 -1
  811. package/dist/schema/nodes/surface-hole-metadata.d.ts +3 -0
  812. package/dist/schema/nodes/surface-hole-metadata.d.ts.map +1 -1
  813. package/dist/schema/nodes/surface-hole-metadata.js +2 -1
  814. package/dist/schema/nodes/surface-paint-region.d.ts +14 -0
  815. package/dist/schema/nodes/surface-paint-region.d.ts.map +1 -0
  816. package/dist/schema/nodes/surface-paint-region.js +12 -0
  817. package/dist/schema/nodes/turbine-vent.d.ts +26 -0
  818. package/dist/schema/nodes/turbine-vent.d.ts.map +1 -1
  819. package/dist/schema/nodes/unit.d.ts +26 -0
  820. package/dist/schema/nodes/unit.d.ts.map +1 -1
  821. package/dist/schema/nodes/wall.d.ts +423 -59
  822. package/dist/schema/nodes/wall.d.ts.map +1 -1
  823. package/dist/schema/nodes/wall.js +188 -186
  824. package/dist/schema/nodes/window.d.ts +139 -20
  825. package/dist/schema/nodes/window.d.ts.map +1 -1
  826. package/dist/schema/nodes/window.js +12 -14
  827. package/dist/schema/nodes/zone.d.ts +69 -1
  828. package/dist/schema/nodes/zone.d.ts.map +1 -1
  829. package/dist/schema/nodes/zone.js +46 -0
  830. package/dist/schema/provenance.d.ts +118 -0
  831. package/dist/schema/provenance.d.ts.map +1 -0
  832. package/dist/schema/provenance.js +76 -0
  833. package/dist/schema/source-ref.d.ts +23 -0
  834. package/dist/schema/source-ref.d.ts.map +1 -0
  835. package/dist/schema/source-ref.js +29 -0
  836. package/dist/schema/types.d.ts +3389 -67
  837. package/dist/schema/types.d.ts.map +1 -1
  838. package/dist/schema/types.js +7 -0
  839. package/dist/services/__fixtures__/hosting.d.ts +3 -0
  840. package/dist/services/__fixtures__/hosting.d.ts.map +1 -0
  841. package/dist/services/__fixtures__/hosting.js +9 -0
  842. package/dist/services/__fixtures__/shelf-surface-rows.d.ts +4 -0
  843. package/dist/services/__fixtures__/shelf-surface-rows.d.ts.map +1 -0
  844. package/dist/services/__fixtures__/shelf-surface-rows.js +18 -0
  845. package/dist/services/alignment-anchors.d.ts +2 -1
  846. package/dist/services/alignment-anchors.d.ts.map +1 -1
  847. package/dist/services/alignment-anchors.js +9 -6
  848. package/dist/services/hosting.d.ts +3 -0
  849. package/dist/services/hosting.d.ts.map +1 -1
  850. package/dist/services/hosting.js +24 -7
  851. package/dist/services/index.d.ts +4 -4
  852. package/dist/services/index.d.ts.map +1 -1
  853. package/dist/services/index.js +4 -4
  854. package/dist/services/level-height.d.ts.map +1 -1
  855. package/dist/services/level-height.js +6 -4
  856. package/dist/services/snap.d.ts +3 -0
  857. package/dist/services/snap.d.ts.map +1 -1
  858. package/dist/services/snap.js +11 -0
  859. package/dist/services/storey.d.ts +21 -1
  860. package/dist/services/storey.d.ts.map +1 -1
  861. package/dist/services/storey.js +94 -8
  862. package/dist/services/surface-hosting.d.ts +6 -2
  863. package/dist/services/surface-hosting.d.ts.map +1 -1
  864. package/dist/services/surface-hosting.js +51 -11
  865. package/dist/store/actions/node-actions.d.ts +4563 -8
  866. package/dist/store/actions/node-actions.d.ts.map +1 -1
  867. package/dist/store/actions/node-actions.js +497 -269
  868. package/dist/store/derived-node-guard.d.ts +84 -0
  869. package/dist/store/derived-node-guard.d.ts.map +1 -0
  870. package/dist/store/derived-node-guard.js +586 -0
  871. package/dist/store/history-control.d.ts +34 -0
  872. package/dist/store/history-control.d.ts.map +1 -1
  873. package/dist/store/history-control.js +99 -1
  874. package/dist/store/history-drafts.d.ts +48 -0
  875. package/dist/store/history-drafts.d.ts.map +1 -0
  876. package/dist/store/history-drafts.js +403 -0
  877. package/dist/store/history-invalidation.d.ts.map +1 -1
  878. package/dist/store/history-invalidation.js +1 -0
  879. package/dist/store/item-interaction.d.ts +28 -0
  880. package/dist/store/item-interaction.d.ts.map +1 -0
  881. package/dist/store/item-interaction.js +34 -0
  882. package/dist/store/registered-node-defaults.d.ts +11 -0
  883. package/dist/store/registered-node-defaults.d.ts.map +1 -0
  884. package/dist/store/registered-node-defaults.js +25 -0
  885. package/dist/store/scene-annotations.d.ts +8969 -0
  886. package/dist/store/scene-annotations.d.ts.map +1 -0
  887. package/dist/store/scene-annotations.js +107 -0
  888. package/dist/store/use-interactive.d.ts +23 -1
  889. package/dist/store/use-interactive.d.ts.map +1 -1
  890. package/dist/store/use-interactive.js +128 -5
  891. package/dist/store/use-scene.d.ts +68 -12
  892. package/dist/store/use-scene.d.ts.map +1 -1
  893. package/dist/store/use-scene.js +429 -306
  894. package/dist/systems/elevator/elevator-opening-sync.d.ts.map +1 -1
  895. package/dist/systems/elevator/elevator-opening-sync.js +4 -6
  896. package/dist/systems/elevator/elevator-opening-system.d.ts.map +1 -1
  897. package/dist/systems/elevator/elevator-opening-system.js +12 -6
  898. package/dist/systems/elevator/elevator-service.d.ts.map +1 -1
  899. package/dist/systems/elevator/elevator-service.js +8 -3
  900. package/dist/systems/fence/fence-centerline.d.ts.map +1 -1
  901. package/dist/systems/fence/fence-centerline.js +6 -5
  902. package/dist/systems/fence/fence-features.d.ts +36 -0
  903. package/dist/systems/fence/fence-features.d.ts.map +1 -0
  904. package/dist/systems/fence/fence-features.js +105 -0
  905. package/dist/systems/fence/fence-spline.d.ts +8 -5
  906. package/dist/systems/fence/fence-spline.d.ts.map +1 -1
  907. package/dist/systems/fence/fence-spline.js +51 -16
  908. package/dist/systems/owned-floor-openings.d.ts +9 -0
  909. package/dist/systems/owned-floor-openings.d.ts.map +1 -0
  910. package/dist/systems/owned-floor-openings.js +326 -0
  911. package/dist/systems/reconcile-owned-floor-openings.d.ts +3 -0
  912. package/dist/systems/reconcile-owned-floor-openings.d.ts.map +1 -0
  913. package/dist/systems/reconcile-owned-floor-openings.js +25 -0
  914. package/dist/systems/slab/__fixtures__/doorway-steps.d.ts +8 -0
  915. package/dist/systems/slab/__fixtures__/doorway-steps.d.ts.map +1 -0
  916. package/dist/systems/slab/__fixtures__/doorway-steps.js +62 -0
  917. package/dist/systems/slab/__fixtures__/floor-step.d.ts +5636 -0
  918. package/dist/systems/slab/__fixtures__/floor-step.d.ts.map +1 -0
  919. package/dist/systems/slab/__fixtures__/floor-step.js +66 -0
  920. package/dist/systems/slab/__fixtures__/raised-room.d.ts +5775 -0
  921. package/dist/systems/slab/__fixtures__/raised-room.d.ts.map +1 -0
  922. package/dist/systems/slab/__fixtures__/raised-room.js +54 -0
  923. package/dist/systems/slab/ensure-slab-openings.d.ts +9 -0
  924. package/dist/systems/slab/ensure-slab-openings.d.ts.map +1 -0
  925. package/dist/systems/slab/ensure-slab-openings.js +41 -0
  926. package/dist/systems/slab/slab-support.d.ts +25 -6
  927. package/dist/systems/slab/slab-support.d.ts.map +1 -1
  928. package/dist/systems/slab/slab-support.js +471 -54
  929. package/dist/systems/stair/stair-base-elevation.d.ts +3 -0
  930. package/dist/systems/stair/stair-base-elevation.d.ts.map +1 -0
  931. package/dist/systems/stair/stair-base-elevation.js +49 -0
  932. package/dist/systems/stair/stair-clearance.d.ts +39 -0
  933. package/dist/systems/stair/stair-clearance.d.ts.map +1 -0
  934. package/dist/systems/stair/stair-clearance.js +508 -0
  935. package/dist/systems/stair/stair-construction.d.ts +37 -0
  936. package/dist/systems/stair/stair-construction.d.ts.map +1 -0
  937. package/dist/systems/stair/stair-construction.js +314 -0
  938. package/dist/systems/stair/stair-detail-budget.d.ts +13 -0
  939. package/dist/systems/stair/stair-detail-budget.d.ts.map +1 -0
  940. package/dist/systems/stair/stair-detail-budget.js +64 -0
  941. package/dist/systems/stair/stair-flight.d.ts +2 -2
  942. package/dist/systems/stair/stair-flight.d.ts.map +1 -1
  943. package/dist/systems/stair/stair-flight.js +4 -3
  944. package/dist/systems/stair/stair-floor-footprints.d.ts +7 -0
  945. package/dist/systems/stair/stair-floor-footprints.d.ts.map +1 -0
  946. package/dist/systems/stair/stair-floor-footprints.js +113 -0
  947. package/dist/systems/stair/stair-footprint.d.ts +3 -1
  948. package/dist/systems/stair/stair-footprint.d.ts.map +1 -1
  949. package/dist/systems/stair/stair-footprint.js +97 -44
  950. package/dist/systems/stair/stair-layout.d.ts +39 -0
  951. package/dist/systems/stair/stair-layout.d.ts.map +1 -0
  952. package/dist/systems/stair/stair-layout.js +58 -0
  953. package/dist/systems/stair/stair-opening-preview.d.ts +1650 -84
  954. package/dist/systems/stair/stair-opening-preview.d.ts.map +1 -1
  955. package/dist/systems/stair/stair-opening-sync.d.ts +8 -2
  956. package/dist/systems/stair/stair-opening-sync.d.ts.map +1 -1
  957. package/dist/systems/stair/stair-opening-sync.js +136 -315
  958. package/dist/systems/stair/stair-opening-system.d.ts.map +1 -1
  959. package/dist/systems/stair/stair-opening-system.js +40 -8
  960. package/dist/systems/stair/stair-presets.d.ts +276 -0
  961. package/dist/systems/stair/stair-presets.d.ts.map +1 -0
  962. package/dist/systems/stair/stair-presets.js +151 -0
  963. package/dist/systems/stair/stair-rail-budget.d.ts +6 -0
  964. package/dist/systems/stair/stair-rail-budget.d.ts.map +1 -0
  965. package/dist/systems/stair/stair-rail-budget.js +36 -0
  966. package/dist/systems/stair/stair-rail-path.d.ts +22 -0
  967. package/dist/systems/stair/stair-rail-path.d.ts.map +1 -0
  968. package/dist/systems/stair/stair-rail-path.js +497 -0
  969. package/dist/systems/stair/stair-rise-edit.d.ts +9 -0
  970. package/dist/systems/stair/stair-rise-edit.d.ts.map +1 -0
  971. package/dist/systems/stair/stair-rise-edit.js +46 -0
  972. package/dist/systems/stair/stair-rise-query.d.ts +24 -0
  973. package/dist/systems/stair/stair-rise-query.d.ts.map +1 -0
  974. package/dist/systems/stair/stair-rise-query.js +125 -0
  975. package/dist/systems/stair/stair-rise.d.ts +4 -19
  976. package/dist/systems/stair/stair-rise.d.ts.map +1 -1
  977. package/dist/systems/stair/stair-rise.js +8 -71
  978. package/dist/systems/stair/stair-sizing.d.ts +414 -0
  979. package/dist/systems/stair/stair-sizing.d.ts.map +1 -0
  980. package/dist/systems/stair/stair-sizing.js +255 -0
  981. package/dist/systems/stair/stair-sweep-edit.d.ts +7 -0
  982. package/dist/systems/stair/stair-sweep-edit.d.ts.map +1 -0
  983. package/dist/systems/stair/stair-sweep-edit.js +8 -0
  984. package/dist/systems/stair/stair-walking-line.d.ts +5 -0
  985. package/dist/systems/stair/stair-walking-line.d.ts.map +1 -0
  986. package/dist/systems/stair/stair-walking-line.js +91 -0
  987. package/dist/systems/stair/stair-winder.d.ts +36 -0
  988. package/dist/systems/stair/stair-winder.d.ts.map +1 -0
  989. package/dist/systems/stair/stair-winder.js +173 -0
  990. package/dist/systems/wall/wall-assembly.d.ts +234 -0
  991. package/dist/systems/wall/wall-assembly.d.ts.map +1 -0
  992. package/dist/systems/wall/wall-assembly.js +854 -0
  993. package/dist/systems/wall/wall-curve.d.ts +2 -1
  994. package/dist/systems/wall/wall-curve.d.ts.map +1 -1
  995. package/dist/systems/wall/wall-curve.js +21 -5
  996. package/dist/systems/wall/wall-finish.d.ts +102 -0
  997. package/dist/systems/wall/wall-finish.d.ts.map +1 -0
  998. package/dist/systems/wall/wall-finish.js +264 -0
  999. package/dist/systems/wall/wall-footprint.d.ts +3 -0
  1000. package/dist/systems/wall/wall-footprint.d.ts.map +1 -1
  1001. package/dist/systems/wall/wall-footprint.js +15 -13
  1002. package/dist/systems/wall/wall-frame.d.ts +45 -0
  1003. package/dist/systems/wall/wall-frame.d.ts.map +1 -0
  1004. package/dist/systems/wall/wall-frame.js +162 -0
  1005. package/dist/systems/wall/wall-layer-bands.d.ts +38 -0
  1006. package/dist/systems/wall/wall-layer-bands.d.ts.map +1 -0
  1007. package/dist/systems/wall/wall-layer-bands.js +109 -0
  1008. package/dist/systems/wall/wall-merge.d.ts +57 -0
  1009. package/dist/systems/wall/wall-merge.d.ts.map +1 -0
  1010. package/dist/systems/wall/wall-merge.js +411 -0
  1011. package/dist/systems/wall/wall-mitering.d.ts +6 -5
  1012. package/dist/systems/wall/wall-mitering.d.ts.map +1 -1
  1013. package/dist/systems/wall/wall-mitering.js +70 -20
  1014. package/dist/systems/wall/wall-operations.d.ts +28 -0
  1015. package/dist/systems/wall/wall-operations.d.ts.map +1 -0
  1016. package/dist/systems/wall/wall-operations.js +146 -0
  1017. package/dist/systems/wall/wall-paint-plan.d.ts +30 -0
  1018. package/dist/systems/wall/wall-paint-plan.d.ts.map +1 -0
  1019. package/dist/systems/wall/wall-paint-plan.js +167 -0
  1020. package/dist/systems/wall/wall-room-sides.d.ts +6 -0
  1021. package/dist/systems/wall/wall-room-sides.d.ts.map +1 -0
  1022. package/dist/systems/wall/wall-room-sides.js +14 -0
  1023. package/dist/systems/wall/wall-step-openings.d.ts +17 -0
  1024. package/dist/systems/wall/wall-step-openings.d.ts.map +1 -0
  1025. package/dist/systems/wall/wall-step-openings.js +32 -0
  1026. package/dist/systems/wall/wall-top.d.ts +2 -6
  1027. package/dist/systems/wall/wall-top.d.ts.map +1 -1
  1028. package/dist/systems/wall/wall-top.js +3 -9
  1029. package/dist/systems/wall/wall-topology.d.ts +28 -0
  1030. package/dist/systems/wall/wall-topology.d.ts.map +1 -1
  1031. package/dist/systems/wall/wall-topology.js +458 -9
  1032. package/dist/utils/clone-scene-graph.d.ts +6 -0
  1033. package/dist/utils/clone-scene-graph.d.ts.map +1 -1
  1034. package/dist/utils/clone-scene-graph.js +123 -15
  1035. package/dist/utils/ensure-scene-openings.d.ts +8965 -0
  1036. package/dist/utils/ensure-scene-openings.d.ts.map +1 -0
  1037. package/dist/utils/ensure-scene-openings.js +29 -0
  1038. package/dist/utils/exterior-threshold-migration.d.ts +4 -0
  1039. package/dist/utils/exterior-threshold-migration.d.ts.map +1 -0
  1040. package/dist/utils/exterior-threshold-migration.js +114 -0
  1041. package/dist/utils/floor-follow-migration.d.ts +3 -0
  1042. package/dist/utils/floor-follow-migration.d.ts.map +1 -0
  1043. package/dist/utils/floor-follow-migration.js +29 -0
  1044. package/dist/utils/floor-opening-migration.d.ts +13 -0
  1045. package/dist/utils/floor-opening-migration.d.ts.map +1 -0
  1046. package/dist/utils/floor-opening-migration.js +148 -0
  1047. package/dist/utils/floor-piece-adoption.d.ts +50 -0
  1048. package/dist/utils/floor-piece-adoption.d.ts.map +1 -0
  1049. package/dist/utils/floor-piece-adoption.js +182 -0
  1050. package/dist/utils/floor-plate-migration.d.ts +4507 -0
  1051. package/dist/utils/floor-plate-migration.d.ts.map +1 -0
  1052. package/dist/utils/floor-plate-migration.js +1360 -0
  1053. package/dist/utils/heal-plan-coordinates.d.ts +2 -0
  1054. package/dist/utils/heal-plan-coordinates.d.ts.map +1 -0
  1055. package/dist/utils/heal-plan-coordinates.js +69 -0
  1056. package/dist/utils/heal-scene-graph.d.ts +20 -6
  1057. package/dist/utils/heal-scene-graph.d.ts.map +1 -1
  1058. package/dist/utils/heal-scene-graph.js +61 -16
  1059. package/dist/utils/legacy-material-slots.d.ts +23 -0
  1060. package/dist/utils/legacy-material-slots.d.ts.map +1 -0
  1061. package/dist/utils/legacy-material-slots.js +120 -0
  1062. package/dist/utils/legacy-opening-datums.d.ts +11 -0
  1063. package/dist/utils/legacy-opening-datums.d.ts.map +1 -0
  1064. package/dist/utils/legacy-opening-datums.js +92 -0
  1065. package/dist/utils/legacy-wall-datums.d.ts +6 -0
  1066. package/dist/utils/legacy-wall-datums.d.ts.map +1 -0
  1067. package/dist/utils/legacy-wall-datums.js +199 -0
  1068. package/dist/utils/load-migration.d.ts +28 -0
  1069. package/dist/utils/load-migration.d.ts.map +1 -0
  1070. package/dist/utils/load-migration.js +89 -0
  1071. package/dist/utils/node-defaults.d.ts +37 -0
  1072. package/dist/utils/node-defaults.d.ts.map +1 -0
  1073. package/dist/utils/node-defaults.js +96 -0
  1074. package/dist/utils/normalize-legacy-structure.d.ts +2 -0
  1075. package/dist/utils/normalize-legacy-structure.d.ts.map +1 -0
  1076. package/dist/utils/normalize-legacy-structure.js +61 -0
  1077. package/dist/utils/omit-undefined.d.ts +2 -0
  1078. package/dist/utils/omit-undefined.d.ts.map +1 -0
  1079. package/dist/utils/omit-undefined.js +17 -0
  1080. package/dist/utils/owned-floor-opening-migration.d.ts +4489 -0
  1081. package/dist/utils/owned-floor-opening-migration.d.ts.map +1 -0
  1082. package/dist/utils/owned-floor-opening-migration.js +365 -0
  1083. package/dist/utils/reconcile-structure-on-load.d.ts +8965 -0
  1084. package/dist/utils/reconcile-structure-on-load.d.ts.map +1 -0
  1085. package/dist/utils/reconcile-structure-on-load.js +307 -0
  1086. package/dist/utils/room-zone-migration.d.ts +18 -0
  1087. package/dist/utils/room-zone-migration.d.ts.map +1 -0
  1088. package/dist/utils/room-zone-migration.js +258 -0
  1089. package/dist/utils/scene-migrations.d.ts +16 -1
  1090. package/dist/utils/scene-migrations.d.ts.map +1 -1
  1091. package/dist/utils/scene-migrations.js +15 -1
  1092. package/dist/utils/structure-id.d.ts +4 -0
  1093. package/dist/utils/structure-id.d.ts.map +1 -0
  1094. package/dist/utils/structure-id.js +115 -0
  1095. package/dist/utils/vertical-scene-migration.d.ts +8 -8
  1096. package/dist/utils/vertical-scene-migration.d.ts.map +1 -1
  1097. package/dist/utils/vertical-scene-migration.js +18 -8
  1098. package/dist/utils/wall-assembly-migration.d.ts +14 -0
  1099. package/dist/utils/wall-assembly-migration.d.ts.map +1 -0
  1100. package/dist/utils/wall-assembly-migration.js +23 -0
  1101. package/dist/utils/wall-face-migration.d.ts +23 -0
  1102. package/dist/utils/wall-face-migration.d.ts.map +1 -0
  1103. package/dist/utils/wall-face-migration.js +246 -0
  1104. package/dist/validation/opening-bounds.d.ts +36 -0
  1105. package/dist/validation/opening-bounds.d.ts.map +1 -0
  1106. package/dist/validation/opening-bounds.js +34 -0
  1107. package/dist/validation/validate-build-json.d.ts +2 -0
  1108. package/dist/validation/validate-build-json.d.ts.map +1 -1
  1109. package/dist/validation/validate-build-json.js +48 -1
  1110. package/package.json +37 -4
  1111. package/dist/services/surface-hosting-procedural-parity.fixtures.d.ts +0 -13
  1112. package/dist/services/surface-hosting-procedural-parity.fixtures.d.ts.map +0 -1
  1113. package/dist/services/surface-hosting-procedural-parity.fixtures.js +0 -4691
  1114. package/dist/services/surface-hosting-shelf-parity.fixtures.d.ts +0 -1060
  1115. package/dist/services/surface-hosting-shelf-parity.fixtures.d.ts.map +0 -1
  1116. package/dist/services/surface-hosting-shelf-parity.fixtures.js +0 -3127
@@ -1,32 +1,5 @@
1
1
  import type { AnyNode, AnyNodeId, LevelNode, SlabNode } from '../../schema/index.js';
2
- export declare function resolveLevelId(node: AnyNode, nodes: Record<string, AnyNode>): string;
3
- /**
4
- * Walks the parent chain of `nodeId` and returns the id of the first ancestor
5
- * whose `type` is `'level'`, or `null` when no level ancestor exists (orphaned
6
- * node, top-level building node, etc.). Unlike `resolveLevelId`, this variant:
7
- *
8
- * - accepts a node **id** rather than a resolved node, saving the caller a
9
- * `nodes[id]` lookup when only the id is at hand.
10
- * - returns `null` instead of the `'default'` fallback, which lets callers
11
- * distinguish "genuinely has no level" from "is a level".
12
- * - has a loop guard (16 iterations) so a corrupt parent-chain cycle cannot
13
- * hang the frame loop.
14
- */
15
- export declare function findLevelAncestorId(nodeId: AnyNodeId, nodes: Record<string, AnyNode>): string | null;
16
- /**
17
- * Returns the building id that contains the given level, or `null` if
18
- * the level is unparented or no enclosing building exists.
19
- *
20
- * Most scenes record the relationship via `level.parentId →
21
- * building.id`, but older serialisations occasionally drop `parentId`
22
- * even though the building's `children` array still references the
23
- * level. The fallback scan covers that case.
24
- *
25
- * Used by `FloorplanRegistryLayer` to discover building-scoped kinds
26
- * (`def.floorplanScope === 'building'`) without hardcoding any kind
27
- * name in the editor layer.
28
- */
29
- export declare function resolveBuildingForLevel(levelId: AnyNodeId, nodes: Record<AnyNodeId, AnyNode>): AnyNodeId | null;
2
+ export { findLevelAncestorId, resolveBuildingForLevel, resolveLevelId, } from '../../lib/node-ancestry.js';
30
3
  export declare function initSpatialGridSync(): () => void;
31
4
  /**
32
5
  * Bulk slab-change guard. A scene load, reload, paste or import changes tens to
@@ -69,11 +42,11 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
69
42
  parentId: string | null;
70
43
  visible: boolean;
71
44
  metadata: Record<string, unknown>;
72
- children: string[];
73
45
  polygon: {
74
46
  type: "polygon";
75
47
  points: [number, number][];
76
48
  };
49
+ children: string[];
77
50
  type: "site";
78
51
  name?: string | undefined;
79
52
  camera?: {
@@ -83,6 +56,17 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
83
56
  fov?: number | undefined;
84
57
  zoom?: number | undefined;
85
58
  } | undefined;
59
+ provenance?: {
60
+ refs: {
61
+ id: string;
62
+ ns?: string | undefined;
63
+ role?: "primary" | "piece" | "absorbed" | "alias" | "derived" | undefined;
64
+ }[];
65
+ lineage?: {
66
+ op: "import" | "split" | "merge" | "duplicate" | "convert" | "promote" | "make-independent" | "attach";
67
+ fromIds: string[];
68
+ } | undefined;
69
+ } | undefined;
86
70
  terrain?: {
87
71
  type: "heightfield";
88
72
  origin: [number, number];
@@ -92,6 +76,84 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
92
76
  step: number;
93
77
  heights: string;
94
78
  } | undefined;
79
+ address?: {
80
+ street?: string | undefined;
81
+ city?: string | undefined;
82
+ state?: string | undefined;
83
+ zip?: string | undefined;
84
+ } | undefined;
85
+ parcel?: {
86
+ apn?: string | undefined;
87
+ source?: string | undefined;
88
+ county?: string | undefined;
89
+ state?: string | undefined;
90
+ lotAreaSqFt?: number | undefined;
91
+ originLngLat?: [number, number] | undefined;
92
+ resolvedAt?: string | undefined;
93
+ layer?: string | undefined;
94
+ notes?: string[] | undefined;
95
+ } | undefined;
96
+ setbacks?: {
97
+ front: number;
98
+ side: number;
99
+ rear: number;
100
+ left?: number | undefined;
101
+ right?: number | undefined;
102
+ streetSide?: number | undefined;
103
+ } | undefined;
104
+ setbacksSource?: string | undefined;
105
+ zone?: string | undefined;
106
+ frontEdge?: number | undefined;
107
+ streetEdges?: number[] | undefined;
108
+ sightTriangleFt?: number | undefined;
109
+ northRotation?: number | undefined;
110
+ dossier?: {
111
+ [x: string]: unknown;
112
+ provider: string;
113
+ asOf: string;
114
+ sections: Record<string, {
115
+ [x: string]: unknown;
116
+ status: string;
117
+ summary?: string | undefined;
118
+ reason?: string | undefined;
119
+ source?: {
120
+ name?: string | undefined;
121
+ kind?: string | undefined;
122
+ vintage?: string | undefined;
123
+ attribution?: string | undefined;
124
+ } | undefined;
125
+ }>;
126
+ point?: {
127
+ lat?: number | undefined;
128
+ lng?: number | undefined;
129
+ source?: string | undefined;
130
+ } | undefined;
131
+ address?: {
132
+ formatted?: string | undefined;
133
+ precision?: string | undefined;
134
+ } | undefined;
135
+ parcel?: Record<string, unknown> | undefined;
136
+ flood?: Record<string, unknown> | undefined;
137
+ codeBasis?: Record<string, unknown> | undefined;
138
+ zoning?: Record<string, unknown> | undefined;
139
+ utilities?: Record<string, unknown> | undefined;
140
+ soils?: Record<string, unknown> | undefined;
141
+ wetlands?: Record<string, unknown> | undefined;
142
+ structures?: Record<string, unknown> | undefined;
143
+ elevation?: Record<string, unknown> | undefined;
144
+ boundaries?: Record<string, unknown> | undefined;
145
+ } | undefined;
146
+ contourIntervalIn?: number | undefined;
147
+ contours3d?: boolean | undefined;
148
+ terrainContours?: {
149
+ datum: string;
150
+ intervalFt: number;
151
+ lines: {
152
+ elevationFt: number;
153
+ points: [number, number][];
154
+ }[];
155
+ source?: string | undefined;
156
+ } | undefined;
95
157
  } | {
96
158
  object: "node";
97
159
  position: [number, number, number];
@@ -110,6 +172,17 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
110
172
  fov?: number | undefined;
111
173
  zoom?: number | undefined;
112
174
  } | undefined;
175
+ provenance?: {
176
+ refs: {
177
+ id: string;
178
+ ns?: string | undefined;
179
+ role?: "primary" | "piece" | "absorbed" | "alias" | "derived" | undefined;
180
+ }[];
181
+ lineage?: {
182
+ op: "import" | "split" | "merge" | "duplicate" | "convert" | "promote" | "make-independent" | "attach";
183
+ fromIds: string[];
184
+ } | undefined;
185
+ } | undefined;
113
186
  } | {
114
187
  object: "node";
115
188
  position: [number, number, number];
@@ -117,9 +190,9 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
117
190
  parentId: string | null;
118
191
  visible: boolean;
119
192
  metadata: Record<string, unknown>;
193
+ depth: number;
120
194
  rotation: number;
121
195
  width: number;
122
- depth: number;
123
196
  shaftWallThickness: number;
124
197
  shaftStyle: "glass" | "solid";
125
198
  cabHeight: number;
@@ -144,6 +217,17 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
144
217
  fov?: number | undefined;
145
218
  zoom?: number | undefined;
146
219
  } | undefined;
220
+ provenance?: {
221
+ refs: {
222
+ id: string;
223
+ ns?: string | undefined;
224
+ role?: "primary" | "piece" | "absorbed" | "alias" | "derived" | undefined;
225
+ }[];
226
+ lineage?: {
227
+ op: "import" | "split" | "merge" | "duplicate" | "convert" | "promote" | "make-independent" | "attach";
228
+ fromIds: string[];
229
+ } | undefined;
230
+ } | undefined;
147
231
  slots?: Record<string, string> | undefined;
148
232
  material?: {
149
233
  id?: string | undefined;
@@ -173,8 +257,8 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
173
257
  parentId: string | null;
174
258
  visible: boolean;
175
259
  metadata: Record<string, unknown>;
176
- color: string;
177
260
  kind: "apartment" | "hotel-room" | "commercial" | "common";
261
+ color: string;
178
262
  members: `zone_${string}`[];
179
263
  type: "unit";
180
264
  camera?: {
@@ -184,13 +268,24 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
184
268
  fov?: number | undefined;
185
269
  zoom?: number | undefined;
186
270
  } | undefined;
271
+ provenance?: {
272
+ refs: {
273
+ id: string;
274
+ ns?: string | undefined;
275
+ role?: "primary" | "piece" | "absorbed" | "alias" | "derived" | undefined;
276
+ }[];
277
+ lineage?: {
278
+ op: "import" | "split" | "merge" | "duplicate" | "convert" | "promote" | "make-independent" | "attach";
279
+ fromIds: string[];
280
+ } | undefined;
281
+ } | undefined;
187
282
  } | {
188
283
  object: "node";
189
284
  id: `level_${string}`;
190
285
  parentId: string | null;
191
286
  visible: boolean;
192
287
  metadata: Record<string, unknown>;
193
- children: (`block_${string}` | `ceiling_${string}` | `item_${string}` | `procedural-item_${string}` | `column_${string}` | `construction-dimension_${string}` | `wall_${string}` | `roof_${string}` | `slab_${string}` | `fence_${string}` | `structural-grid_${string}` | `imesh_${string}` | `zone_${string}` | `stair_${string}` | `scan_${string}` | `guide_${string}` | `measurement_${string}` | `spawn_${string}` | `shelf_${string}` | `duct-segment_${string}` | `duct-fitting_${string}` | `duct-terminal_${string}` | `hvac-equipment_${string}` | `lineset_${string}` | `liquid-line_${string}` | `pipe-segment_${string}` | `pipe-fitting_${string}` | `pipe-trap_${string}`)[];
288
+ children: (`block_${string}` | `ceiling_${string}` | `item_${string}` | `procedural-item_${string}` | `column_${string}` | `construction-dimension_${string}` | `wall_${string}` | `roof_${string}` | `slab_${string}` | `separator_${string}` | `floor-opening_${string}` | `fence_${string}` | `structural-grid_${string}` | `imesh_${string}` | `zone_${string}` | `stair_${string}` | `scan_${string}` | `guide_${string}` | `measurement_${string}` | `spawn_${string}` | `shelf_${string}` | `duct-segment_${string}` | `duct-fitting_${string}` | `duct-terminal_${string}` | `hvac-equipment_${string}` | `lineset_${string}` | `liquid-line_${string}` | `pipe-segment_${string}` | `pipe-fitting_${string}` | `pipe-trap_${string}`)[];
194
289
  level: number;
195
290
  baseElevation: number;
196
291
  type: "level";
@@ -202,6 +297,17 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
202
297
  fov?: number | undefined;
203
298
  zoom?: number | undefined;
204
299
  } | undefined;
300
+ provenance?: {
301
+ refs: {
302
+ id: string;
303
+ ns?: string | undefined;
304
+ role?: "primary" | "piece" | "absorbed" | "alias" | "derived" | undefined;
305
+ }[];
306
+ lineage?: {
307
+ op: "import" | "split" | "merge" | "duplicate" | "convert" | "promote" | "make-independent" | "attach";
308
+ fromIds: string[];
309
+ } | undefined;
310
+ } | undefined;
205
311
  height?: number | undefined;
206
312
  } | {
207
313
  object: "node";
@@ -282,6 +388,17 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
282
388
  fov?: number | undefined;
283
389
  zoom?: number | undefined;
284
390
  } | undefined;
391
+ provenance?: {
392
+ refs: {
393
+ id: string;
394
+ ns?: string | undefined;
395
+ role?: "primary" | "piece" | "absorbed" | "alias" | "derived" | undefined;
396
+ }[];
397
+ lineage?: {
398
+ op: "import" | "split" | "merge" | "duplicate" | "convert" | "promote" | "make-independent" | "attach";
399
+ fromIds: string[];
400
+ } | undefined;
401
+ } | undefined;
285
402
  slots?: Record<string, string> | undefined;
286
403
  hostSlabId?: `slab_${string}` | undefined;
287
404
  hostSlabEdgeIndex?: number | undefined;
@@ -299,15 +416,15 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
299
416
  parentId: string | null;
300
417
  visible: boolean;
301
418
  metadata: Record<string, unknown>;
419
+ radius: number;
420
+ depth: number;
302
421
  rotation: number;
303
422
  children: string[];
304
423
  width: number;
305
- depth: number;
306
424
  height: number;
307
425
  baseHeight: number;
308
426
  style: "plain" | "faceted" | "fluted" | "lathe-turned" | "dravidian-carved" | "cluster";
309
427
  crossSection: "round" | "square" | "rectangular" | "octagonal" | "sixteen-sided";
310
- radius: number;
311
428
  edgeSoftness: number;
312
429
  capitalHeight: number;
313
430
  shaftProfile: "straight" | "tapered" | "bulged" | "baluster" | "hourglass";
@@ -381,6 +498,17 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
381
498
  fov?: number | undefined;
382
499
  zoom?: number | undefined;
383
500
  } | undefined;
501
+ provenance?: {
502
+ refs: {
503
+ id: string;
504
+ ns?: string | undefined;
505
+ role?: "primary" | "piece" | "absorbed" | "alias" | "derived" | undefined;
506
+ }[];
507
+ lineage?: {
508
+ op: "import" | "split" | "merge" | "duplicate" | "convert" | "promote" | "make-independent" | "attach";
509
+ fromIds: string[];
510
+ } | undefined;
511
+ } | undefined;
384
512
  supportSlabId?: string | undefined;
385
513
  slots?: Record<string, string> | undefined;
386
514
  material?: {
@@ -401,6 +529,94 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
401
529
  } | undefined;
402
530
  } | undefined;
403
531
  materialPreset?: string | undefined;
532
+ source?: {
533
+ kind: "script";
534
+ language: "three" | "bpy";
535
+ script: string;
536
+ params: Record<string, string | number | boolean>;
537
+ artifact: string;
538
+ manifest: {
539
+ bounds: {
540
+ min: [number, number, number];
541
+ max: [number, number, number];
542
+ };
543
+ params: {
544
+ id: string;
545
+ kind: "string" | "number" | "boolean";
546
+ default: string | number | boolean;
547
+ label?: string | undefined;
548
+ min?: number | undefined;
549
+ max?: number | undefined;
550
+ step?: number | undefined;
551
+ unit?: string | undefined;
552
+ options?: string[] | undefined;
553
+ }[];
554
+ parts: {
555
+ id: string;
556
+ label?: string | undefined;
557
+ type?: string | undefined;
558
+ bounds?: {
559
+ min: [number, number, number];
560
+ max: [number, number, number];
561
+ } | undefined;
562
+ }[];
563
+ surfaces: {
564
+ y: number;
565
+ polygon: [number, number][];
566
+ part?: string | undefined;
567
+ }[];
568
+ slots: {
569
+ id: string;
570
+ label?: string | undefined;
571
+ color?: string | undefined;
572
+ roughness?: number | undefined;
573
+ metalness?: number | undefined;
574
+ transparent?: boolean | undefined;
575
+ emissive?: boolean | undefined;
576
+ }[];
577
+ anchors: {
578
+ id: string;
579
+ position: [number, number, number];
580
+ normal?: [number, number, number] | undefined;
581
+ }[];
582
+ lights: {
583
+ id: string;
584
+ position: [number, number, number];
585
+ color: string;
586
+ intensity: number;
587
+ distance?: number | undefined;
588
+ }[];
589
+ undersides: {
590
+ polygon: [number, number][];
591
+ plane: [number, number, number, number];
592
+ part?: string | undefined;
593
+ }[];
594
+ animations: {
595
+ name: string;
596
+ duration: number;
597
+ }[];
598
+ cutout: boolean;
599
+ collider: boolean;
600
+ triangles: number;
601
+ cutters?: {
602
+ host: "wall" | "slab" | "ceiling" | "mounted";
603
+ polygon: number[][];
604
+ minY: number;
605
+ maxY: number;
606
+ }[] | undefined;
607
+ };
608
+ meta?: {
609
+ description?: string | undefined;
610
+ category?: string | undefined;
611
+ tags?: string[] | undefined;
612
+ parent?: string | undefined;
613
+ } | undefined;
614
+ images?: {
615
+ artifact: string;
616
+ thumbnail: string;
617
+ floorPlan: string;
618
+ } | undefined;
619
+ } | undefined;
404
620
  } | {
405
621
  object: "node";
406
622
  mode: "radius" | "linear" | "diameter" | "center-mark" | "chord" | "arc-length" | "angular" | "coordinate";
@@ -450,6 +666,17 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
450
666
  fov?: number | undefined;
451
667
  zoom?: number | undefined;
452
668
  } | undefined;
669
+ provenance?: {
670
+ refs: {
671
+ id: string;
672
+ ns?: string | undefined;
673
+ role?: "primary" | "piece" | "absorbed" | "alias" | "derived" | undefined;
674
+ }[];
675
+ lineage?: {
676
+ op: "import" | "split" | "merge" | "duplicate" | "convert" | "promote" | "make-independent" | "attach";
677
+ fromIds: string[];
678
+ } | undefined;
679
+ } | undefined;
453
680
  } | {
454
681
  object: "node";
455
682
  position: [number, number, number];
@@ -485,6 +712,17 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
485
712
  fov?: number | undefined;
486
713
  zoom?: number | undefined;
487
714
  } | undefined;
715
+ provenance?: {
716
+ refs: {
717
+ id: string;
718
+ ns?: string | undefined;
719
+ role?: "primary" | "piece" | "absorbed" | "alias" | "derived" | undefined;
720
+ }[];
721
+ lineage?: {
722
+ op: "import" | "split" | "merge" | "duplicate" | "convert" | "promote" | "make-independent" | "attach";
723
+ fromIds: string[];
724
+ } | undefined;
725
+ } | undefined;
488
726
  supportSlabId?: string | undefined;
489
727
  } | {
490
728
  object: "node";
@@ -506,6 +744,17 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
506
744
  fov?: number | undefined;
507
745
  zoom?: number | undefined;
508
746
  } | undefined;
747
+ provenance?: {
748
+ refs: {
749
+ id: string;
750
+ ns?: string | undefined;
751
+ role?: "primary" | "piece" | "absorbed" | "alias" | "derived" | undefined;
752
+ }[];
753
+ lineage?: {
754
+ op: "import" | "split" | "merge" | "duplicate" | "convert" | "promote" | "make-independent" | "attach";
755
+ fromIds: string[];
756
+ } | undefined;
757
+ } | undefined;
509
758
  } | {
510
759
  object: "node";
511
760
  id: `wall_${string}`;
@@ -526,6 +775,17 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
526
775
  fov?: number | undefined;
527
776
  zoom?: number | undefined;
528
777
  } | undefined;
778
+ provenance?: {
779
+ refs: {
780
+ id: string;
781
+ ns?: string | undefined;
782
+ role?: "primary" | "piece" | "absorbed" | "alias" | "derived" | undefined;
783
+ }[];
784
+ lineage?: {
785
+ op: "import" | "split" | "merge" | "duplicate" | "convert" | "promote" | "make-independent" | "attach";
786
+ fromIds: string[];
787
+ } | undefined;
788
+ } | undefined;
529
789
  supportSlabId?: string | undefined;
530
790
  slots?: Record<string, string> | undefined;
531
791
  material?: {
@@ -547,7 +807,74 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
547
807
  } | undefined;
548
808
  materialPreset?: string | undefined;
549
809
  height?: number | undefined;
810
+ wallType?: "standard" | "curtain" | undefined;
811
+ curtainWall?: {
812
+ construction: "stick" | "unitized";
813
+ framing: "capped" | "vertical-caps" | "horizontal-caps" | "structural-glazing";
814
+ columns: {
815
+ layout: "count" | "maximum-spacing" | "fixed-spacing";
816
+ count: number;
817
+ spacing: number;
818
+ alignment: "center" | "start" | "end";
819
+ };
820
+ rows: {
821
+ layout: "count" | "maximum-spacing" | "fixed-spacing";
822
+ count: number;
823
+ spacing: number;
824
+ alignment: "center" | "start" | "end";
825
+ };
826
+ mullionWidth: number;
827
+ transomWidth: number;
828
+ perimeterWidth: number;
829
+ jointWidth: number;
830
+ glassThickness: number;
831
+ panelType: "glass" | "solid" | "empty";
832
+ spandrel: "top" | "none" | "bottom";
833
+ frameColor: string;
834
+ glassColor: string;
835
+ solidColor: string;
836
+ glassOpacity: number;
837
+ glassRoughness: number;
838
+ panels: {
839
+ column: number;
840
+ row: number;
841
+ type: "glass" | "solid" | "empty";
842
+ }[];
843
+ } | undefined;
550
844
  thickness?: number | undefined;
845
+ assembly?: {
846
+ layers: {
847
+ id: string;
848
+ role: "fill" | "shell" | "finish" | "lining" | "substrate" | "sheathing" | "membrane" | "underlay" | "insulation" | "air" | "furring" | "structure" | "deck" | "covering" | "glazing";
849
+ thickness: number;
850
+ core?: true | undefined;
851
+ material?: string | undefined;
852
+ slot?: string | undefined;
853
+ returns?: boolean | undefined;
854
+ display?: "construction" | "finished" | undefined;
855
+ inset?: number | undefined;
856
+ bottom?: number | undefined;
857
+ lift?: number | undefined;
858
+ src?: string | undefined;
859
+ }[];
860
+ backing?: {
861
+ id: string;
862
+ role: "fill" | "shell" | "finish" | "lining" | "substrate" | "sheathing" | "membrane" | "underlay" | "insulation" | "air" | "furring" | "structure" | "deck" | "covering" | "glazing";
863
+ thickness: number;
864
+ core?: true | undefined;
865
+ material?: string | undefined;
866
+ slot?: string | undefined;
867
+ returns?: boolean | undefined;
868
+ display?: "construction" | "finished" | undefined;
869
+ inset?: number | undefined;
870
+ bottom?: number | undefined;
871
+ lift?: number | undefined;
872
+ src?: string | undefined;
873
+ }[] | undefined;
874
+ face?: "front" | "exterior" | undefined;
875
+ presetId?: string | undefined;
876
+ cavityInsulation?: string | undefined;
877
+ } | undefined;
551
878
  fillToTerrain?: boolean | undefined;
552
879
  interiorMaterial?: {
553
880
  id?: string | undefined;
@@ -585,18 +912,73 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
585
912
  } | undefined;
586
913
  } | undefined;
587
914
  exteriorMaterialPreset?: string | undefined;
915
+ legacyFaceMaterials?: {
916
+ a?: {
917
+ material?: {
918
+ id?: string | undefined;
919
+ preset?: "custom" | "white" | "brick" | "concrete" | "wood" | "glass" | "metal" | "plaster" | "tile" | "marble" | undefined;
920
+ properties?: {
921
+ color: string;
922
+ roughness: number;
923
+ metalness: number;
924
+ opacity: number;
925
+ transparent: boolean;
926
+ side: "front" | "back" | "double";
927
+ } | undefined;
928
+ texture?: {
929
+ url: string;
930
+ repeat?: [number, number] | undefined;
931
+ scale?: number | undefined;
932
+ } | undefined;
933
+ } | undefined;
934
+ materialPreset?: string | undefined;
935
+ } | undefined;
936
+ b?: {
937
+ material?: {
938
+ id?: string | undefined;
939
+ preset?: "custom" | "white" | "brick" | "concrete" | "wood" | "glass" | "metal" | "plaster" | "tile" | "marble" | undefined;
940
+ properties?: {
941
+ color: string;
942
+ roughness: number;
943
+ metalness: number;
944
+ opacity: number;
945
+ transparent: boolean;
946
+ side: "front" | "back" | "double";
947
+ } | undefined;
948
+ texture?: {
949
+ url: string;
950
+ repeat?: [number, number] | undefined;
951
+ scale?: number | undefined;
952
+ } | undefined;
953
+ } | undefined;
954
+ materialPreset?: string | undefined;
955
+ } | undefined;
956
+ } | undefined;
957
+ faceRegions?: {
958
+ id: string;
959
+ face: "a" | "b";
960
+ finish: string;
961
+ u0?: number | undefined;
962
+ u1?: number | undefined;
963
+ v0?: number | undefined;
964
+ v1?: number | undefined;
965
+ }[] | undefined;
966
+ justification?: "a" | "b" | undefined;
588
967
  curveOffset?: number | undefined;
589
968
  supportOffset?: number | undefined;
590
- faceBands?: {
591
- enabled: boolean;
592
- count: number;
593
- lowerHeight: number;
594
- middleHeight: number;
595
- upperHeight: number;
969
+ underpinning?: {
970
+ rim: number;
971
+ stem: number;
972
+ openings?: {
973
+ u: number;
974
+ width: number;
975
+ top: number;
976
+ bottom: number;
977
+ }[] | undefined;
596
978
  } | undefined;
597
979
  skirting?: {
598
980
  enabled: boolean;
599
- sides: "interior" | "exterior" | "both";
981
+ sides: "a" | "b" | "interior" | "exterior" | "both";
600
982
  height: number;
601
983
  proud: number;
602
984
  profile: "flat" | "bevel" | "triangle" | "cove" | "bullnose" | "base-modern" | "base-colonial" | "base-shoe" | "base-ogee" | "crown-cove" | "crown-ogee" | "crown-craftsman" | "crown-layered" | "rail-rounded" | "rail-ogee" | "rail-picture" | "rail-stepped";
@@ -604,7 +986,7 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
604
986
  } | undefined;
605
987
  crown?: {
606
988
  enabled: boolean;
607
- sides: "interior" | "exterior" | "both";
989
+ sides: "a" | "b" | "interior" | "exterior" | "both";
608
990
  height: number;
609
991
  proud: number;
610
992
  profile: "flat" | "bevel" | "triangle" | "cove" | "bullnose" | "base-modern" | "base-colonial" | "base-shoe" | "base-ogee" | "crown-cove" | "crown-ogee" | "crown-craftsman" | "crown-layered" | "rail-rounded" | "rail-ogee" | "rail-picture" | "rail-stepped";
@@ -612,12 +994,76 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
612
994
  } | undefined;
613
995
  chairRail?: {
614
996
  enabled: boolean;
615
- sides: "interior" | "exterior" | "both";
997
+ sides: "a" | "b" | "interior" | "exterior" | "both";
616
998
  height: number;
617
999
  proud: number;
618
1000
  profile: "flat" | "bevel" | "triangle" | "cove" | "bullnose" | "base-modern" | "base-colonial" | "base-shoe" | "base-ogee" | "crown-cove" | "crown-ogee" | "crown-craftsman" | "crown-layered" | "rail-rounded" | "rail-ogee" | "rail-picture" | "rail-stepped";
619
1001
  offsetY?: number | undefined;
620
1002
  } | undefined;
1003
+ } | {
1004
+ object: "node";
1005
+ id: `separator_${string}`;
1006
+ parentId: string | null;
1007
+ visible: boolean;
1008
+ metadata: Record<string, unknown>;
1009
+ start: [number, number];
1010
+ end: [number, number];
1011
+ type: "separator";
1012
+ name?: string | undefined;
1013
+ camera?: {
1014
+ position: [number, number, number];
1015
+ target: [number, number, number];
1016
+ mode: "perspective" | "orthographic";
1017
+ fov?: number | undefined;
1018
+ zoom?: number | undefined;
1019
+ } | undefined;
1020
+ provenance?: {
1021
+ refs: {
1022
+ id: string;
1023
+ ns?: string | undefined;
1024
+ role?: "primary" | "piece" | "absorbed" | "alias" | "derived" | undefined;
1025
+ }[];
1026
+ lineage?: {
1027
+ op: "import" | "split" | "merge" | "duplicate" | "convert" | "promote" | "make-independent" | "attach";
1028
+ fromIds: string[];
1029
+ } | undefined;
1030
+ } | undefined;
1031
+ } | {
1032
+ object: "node";
1033
+ id: `floor-opening_${string}`;
1034
+ parentId: string | null;
1035
+ visible: boolean;
1036
+ metadata: Record<string, unknown>;
1037
+ polygon: [number, number][];
1038
+ source: string;
1039
+ drawnOn: "ceiling" | "floor";
1040
+ cutsPrimary: boolean;
1041
+ cutsAdjacent: boolean;
1042
+ type: "floor-opening";
1043
+ name?: string | undefined;
1044
+ camera?: {
1045
+ position: [number, number, number];
1046
+ target: [number, number, number];
1047
+ mode: "perspective" | "orthographic";
1048
+ fov?: number | undefined;
1049
+ zoom?: number | undefined;
1050
+ } | undefined;
1051
+ provenance?: {
1052
+ refs: {
1053
+ id: string;
1054
+ ns?: string | undefined;
1055
+ role?: "primary" | "piece" | "absorbed" | "alias" | "derived" | undefined;
1056
+ }[];
1057
+ lineage?: {
1058
+ op: "import" | "split" | "merge" | "duplicate" | "convert" | "promote" | "make-independent" | "attach";
1059
+ fromIds: string[];
1060
+ } | undefined;
1061
+ } | undefined;
1062
+ surfaceId?: string | undefined;
1063
+ hostZoneId?: string | undefined;
1064
+ legacyPlateCuts?: Record<string, [number, number][][]> | undefined;
1065
+ legacyCeilingCuts?: Record<string, [number, number][][]> | undefined;
1066
+ ownerId?: string | undefined;
621
1067
  } | {
622
1068
  object: "node";
623
1069
  id: `fence_${string}`;
@@ -625,14 +1071,30 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
625
1071
  visible: boolean;
626
1072
  metadata: Record<string, unknown>;
627
1073
  color: string;
1074
+ children: string[];
628
1075
  height: number;
629
1076
  baseHeight: number;
630
- style: "slat" | "rail" | "privacy" | "horizontal";
631
- baseStyle: "floating" | "grounded";
632
- thickness: number;
633
- postSpacing: number;
1077
+ style: "slat" | "rail" | "privacy" | "horizontal" | "guard" | "picket";
1078
+ baseStyle: "floating" | "grounded" | "raised";
634
1079
  start: [number, number];
635
1080
  end: [number, number];
1081
+ thickness: number;
1082
+ postSpacing: number;
1083
+ surfaceMode: "auto" | "level" | "selected";
1084
+ transitionMode: "step" | "slope" | "break";
1085
+ transitionWidth: number;
1086
+ picketSpacing: number;
1087
+ patternDistribution: "maximum-spacing" | "fixed-spacing" | "automatic" | "fixed-count" | "equal-fit";
1088
+ patternAlignment: "center" | "start" | "end";
1089
+ patternCount: number;
1090
+ patternRemainder: "leave" | "spread";
1091
+ picketWidth: number;
1092
+ picketTop: "flat" | "rounded" | "pointed" | "dog-ear";
1093
+ picketProfile: "arched" | "level" | "scalloped" | "alternating";
1094
+ picketTopClearance: number;
1095
+ picketVariation: number;
1096
+ picketRailProjection: number;
1097
+ picketRailCount: number;
636
1098
  postSize: number;
637
1099
  topRailHeight: number;
638
1100
  groundClearance: number;
@@ -640,6 +1102,7 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
640
1102
  slatGap: number;
641
1103
  postCap: "flat" | "none" | "pyramid";
642
1104
  showInfill: boolean;
1105
+ infillPlacement: "center" | "front" | "back";
643
1106
  type: "fence";
644
1107
  name?: string | undefined;
645
1108
  camera?: {
@@ -649,6 +1112,17 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
649
1112
  fov?: number | undefined;
650
1113
  zoom?: number | undefined;
651
1114
  } | undefined;
1115
+ provenance?: {
1116
+ refs: {
1117
+ id: string;
1118
+ ns?: string | undefined;
1119
+ role?: "primary" | "piece" | "absorbed" | "alias" | "derived" | undefined;
1120
+ }[];
1121
+ lineage?: {
1122
+ op: "import" | "split" | "merge" | "duplicate" | "convert" | "promote" | "make-independent" | "attach";
1123
+ fromIds: string[];
1124
+ } | undefined;
1125
+ } | undefined;
652
1126
  path?: [number, number][] | undefined;
653
1127
  supportSlabId?: string | undefined;
654
1128
  slots?: Record<string, string> | undefined;
@@ -672,7 +1146,90 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
672
1146
  materialPreset?: string | undefined;
673
1147
  curveOffset?: number | undefined;
674
1148
  supportOffset?: number | undefined;
1149
+ spanModes?: ("straight" | "curve")[] | undefined;
675
1150
  tangents?: ([number, number] | null)[] | undefined;
1151
+ supportSurfaceNodeId?: string | undefined;
1152
+ guardInfill?: "balusters" | "cable" | "boards" | undefined;
1153
+ startPost?: boolean | undefined;
1154
+ endPost?: boolean | undefined;
1155
+ postThrough?: boolean | undefined;
1156
+ } | {
1157
+ object: "node";
1158
+ id: `fence-gate_${string}`;
1159
+ parentId: string | null;
1160
+ visible: boolean;
1161
+ metadata: Record<string, unknown>;
1162
+ center: number;
1163
+ width: number;
1164
+ type: "fence-gate";
1165
+ name?: string | undefined;
1166
+ camera?: {
1167
+ position: [number, number, number];
1168
+ target: [number, number, number];
1169
+ mode: "perspective" | "orthographic";
1170
+ fov?: number | undefined;
1171
+ zoom?: number | undefined;
1172
+ } | undefined;
1173
+ provenance?: {
1174
+ refs: {
1175
+ id: string;
1176
+ ns?: string | undefined;
1177
+ role?: "primary" | "piece" | "absorbed" | "alias" | "derived" | undefined;
1178
+ }[];
1179
+ lineage?: {
1180
+ op: "import" | "split" | "merge" | "duplicate" | "convert" | "promote" | "make-independent" | "attach";
1181
+ fromIds: string[];
1182
+ } | undefined;
1183
+ } | undefined;
1184
+ height?: number | undefined;
1185
+ style?: "match" | "slat" | "rail" | "privacy" | "horizontal" | "guard" | "picket" | undefined;
1186
+ spacing?: number | undefined;
1187
+ thickness?: number | undefined;
1188
+ hinge?: "left" | "right" | undefined;
1189
+ matchFenceStyle?: boolean | undefined;
1190
+ matchFenceHeight?: boolean | undefined;
1191
+ leafType?: "double" | "single" | undefined;
1192
+ clearance?: number | undefined;
1193
+ frameWidth?: number | undefined;
1194
+ boardWidth?: number | undefined;
1195
+ swing?: "inward" | "outward" | undefined;
1196
+ openAngle?: number | undefined;
1197
+ leafSplit?: number | undefined;
1198
+ brace?: "none" | "cross" | "diagonal" | undefined;
1199
+ showHardware?: boolean | undefined;
1200
+ showPosts?: boolean | undefined;
1201
+ } | {
1202
+ object: "node";
1203
+ id: `fence-opening_${string}`;
1204
+ parentId: string | null;
1205
+ visible: boolean;
1206
+ metadata: Record<string, unknown>;
1207
+ center: number;
1208
+ width: number;
1209
+ showPosts: boolean;
1210
+ type: "fence-opening";
1211
+ name?: string | undefined;
1212
+ camera?: {
1213
+ position: [number, number, number];
1214
+ target: [number, number, number];
1215
+ mode: "perspective" | "orthographic";
1216
+ fov?: number | undefined;
1217
+ zoom?: number | undefined;
1218
+ } | undefined;
1219
+ provenance?: {
1220
+ refs: {
1221
+ id: string;
1222
+ ns?: string | undefined;
1223
+ role?: "primary" | "piece" | "absorbed" | "alias" | "derived" | undefined;
1224
+ }[];
1225
+ lineage?: {
1226
+ op: "import" | "split" | "merge" | "duplicate" | "convert" | "promote" | "make-independent" | "attach";
1227
+ fromIds: string[];
1228
+ } | undefined;
1229
+ } | undefined;
1230
+ height?: number | undefined;
1231
+ matchFenceStyle?: boolean | undefined;
1232
+ matchFenceHeight?: boolean | undefined;
676
1233
  } | {
677
1234
  object: "node";
678
1235
  position: [number, number, number];
@@ -680,10 +1237,10 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
680
1237
  parentId: string | null;
681
1238
  visible: boolean;
682
1239
  metadata: Record<string, unknown>;
1240
+ depth: number;
683
1241
  rotation: number;
684
1242
  children: string[];
685
1243
  width: number;
686
- depth: number;
687
1244
  operationState: number;
688
1245
  runTier: "wall" | "base" | "tall";
689
1246
  withWaterfall: boolean;
@@ -700,9 +1257,9 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
700
1257
  frontGap: number;
701
1258
  frontStyle: "slab" | "shaker" | "raised-arch";
702
1259
  panelReady: boolean;
703
- handleStyle: "none" | "bar" | "cutout" | "hole" | "knob";
704
- handlePosition: "top" | "auto" | "center";
705
- frontOverlay: "full" | "inset";
1260
+ handleStyle: "cutout" | "none" | "bar" | "hole" | "knob";
1261
+ handlePosition: "center" | "top" | "auto";
1262
+ frontOverlay: "inset" | "full";
706
1263
  withBottomPanel: boolean;
707
1264
  showPlinth: boolean;
708
1265
  withCountertop: boolean;
@@ -715,6 +1272,17 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
715
1272
  fov?: number | undefined;
716
1273
  zoom?: number | undefined;
717
1274
  } | undefined;
1275
+ provenance?: {
1276
+ refs: {
1277
+ id: string;
1278
+ ns?: string | undefined;
1279
+ role?: "primary" | "piece" | "absorbed" | "alias" | "derived" | undefined;
1280
+ }[];
1281
+ lineage?: {
1282
+ op: "import" | "split" | "merge" | "duplicate" | "convert" | "promote" | "make-independent" | "attach";
1283
+ fromIds: string[];
1284
+ } | undefined;
1285
+ } | undefined;
718
1286
  supportSlabId?: string | undefined;
719
1287
  slots?: Record<string, string> | undefined;
720
1288
  material?: {
@@ -736,7 +1304,7 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
736
1304
  } | undefined;
737
1305
  materialPreset?: string | undefined;
738
1306
  barLedge?: {
739
- edge: "back" | "right" | "left";
1307
+ edge: "left" | "right" | "back";
740
1308
  height: number;
741
1309
  depth: number;
742
1310
  } | undefined;
@@ -829,10 +1397,10 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
829
1397
  parentId: string | null;
830
1398
  visible: boolean;
831
1399
  metadata: Record<string, unknown>;
1400
+ depth: number;
832
1401
  rotation: number;
833
1402
  children: string[];
834
1403
  width: number;
835
- depth: number;
836
1404
  operationState: number;
837
1405
  carcassHeight: number;
838
1406
  plinthHeight: number;
@@ -846,9 +1414,9 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
846
1414
  frontGap: number;
847
1415
  frontStyle: "slab" | "shaker" | "raised-arch";
848
1416
  panelReady: boolean;
849
- handleStyle: "none" | "bar" | "cutout" | "hole" | "knob";
850
- handlePosition: "top" | "auto" | "center";
851
- frontOverlay: "full" | "inset";
1417
+ handleStyle: "cutout" | "none" | "bar" | "hole" | "knob";
1418
+ handlePosition: "center" | "top" | "auto";
1419
+ frontOverlay: "inset" | "full";
852
1420
  withBottomPanel: boolean;
853
1421
  showPlinth: boolean;
854
1422
  withCountertop: boolean;
@@ -866,6 +1434,17 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
866
1434
  fov?: number | undefined;
867
1435
  zoom?: number | undefined;
868
1436
  } | undefined;
1437
+ provenance?: {
1438
+ refs: {
1439
+ id: string;
1440
+ ns?: string | undefined;
1441
+ role?: "primary" | "piece" | "absorbed" | "alias" | "derived" | undefined;
1442
+ }[];
1443
+ lineage?: {
1444
+ op: "import" | "split" | "merge" | "duplicate" | "convert" | "promote" | "make-independent" | "attach";
1445
+ fromIds: string[];
1446
+ } | undefined;
1447
+ } | undefined;
869
1448
  supportSlabId?: string | undefined;
870
1449
  slots?: Record<string, string> | undefined;
871
1450
  material?: {
@@ -968,7 +1547,7 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
968
1547
  id: string;
969
1548
  height?: number | undefined;
970
1549
  })[] | undefined;
971
- openSide?: "right" | "left" | undefined;
1550
+ openSide?: "left" | "right" | undefined;
972
1551
  cornerShelf?: boolean | undefined;
973
1552
  } | {
974
1553
  object: "node";
@@ -1029,6 +1608,8 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1029
1608
  off?: string | undefined;
1030
1609
  loop?: string | undefined;
1031
1610
  };
1611
+ mode?: "ambient" | "open-close" | undefined;
1612
+ control?: number | undefined;
1032
1613
  } | {
1033
1614
  kind: "light";
1034
1615
  color: string;
@@ -1047,13 +1628,112 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1047
1628
  fov?: number | undefined;
1048
1629
  zoom?: number | undefined;
1049
1630
  } | undefined;
1631
+ provenance?: {
1632
+ refs: {
1633
+ id: string;
1634
+ ns?: string | undefined;
1635
+ role?: "primary" | "piece" | "absorbed" | "alias" | "derived" | undefined;
1636
+ }[];
1637
+ lineage?: {
1638
+ op: "import" | "split" | "merge" | "duplicate" | "convert" | "promote" | "make-independent" | "attach";
1639
+ fromIds: string[];
1640
+ } | undefined;
1641
+ } | undefined;
1050
1642
  side?: "front" | "back" | undefined;
1051
1643
  supportSlabId?: string | undefined;
1052
1644
  slots?: Record<string, string> | undefined;
1053
1645
  roofSegmentId?: string | undefined;
1646
+ source?: {
1647
+ kind: "script";
1648
+ language: "three" | "bpy";
1649
+ script: string;
1650
+ params: Record<string, string | number | boolean>;
1651
+ artifact: string;
1652
+ manifest: {
1653
+ bounds: {
1654
+ min: [number, number, number];
1655
+ max: [number, number, number];
1656
+ };
1657
+ params: {
1658
+ id: string;
1659
+ kind: "string" | "number" | "boolean";
1660
+ default: string | number | boolean;
1661
+ label?: string | undefined;
1662
+ min?: number | undefined;
1663
+ max?: number | undefined;
1664
+ step?: number | undefined;
1665
+ unit?: string | undefined;
1666
+ options?: string[] | undefined;
1667
+ }[];
1668
+ parts: {
1669
+ id: string;
1670
+ label?: string | undefined;
1671
+ type?: string | undefined;
1672
+ bounds?: {
1673
+ min: [number, number, number];
1674
+ max: [number, number, number];
1675
+ } | undefined;
1676
+ }[];
1677
+ surfaces: {
1678
+ y: number;
1679
+ polygon: [number, number][];
1680
+ part?: string | undefined;
1681
+ }[];
1682
+ slots: {
1683
+ id: string;
1684
+ label?: string | undefined;
1685
+ color?: string | undefined;
1686
+ roughness?: number | undefined;
1687
+ metalness?: number | undefined;
1688
+ transparent?: boolean | undefined;
1689
+ emissive?: boolean | undefined;
1690
+ }[];
1691
+ anchors: {
1692
+ id: string;
1693
+ position: [number, number, number];
1694
+ normal?: [number, number, number] | undefined;
1695
+ }[];
1696
+ lights: {
1697
+ id: string;
1698
+ position: [number, number, number];
1699
+ color: string;
1700
+ intensity: number;
1701
+ distance?: number | undefined;
1702
+ }[];
1703
+ undersides: {
1704
+ polygon: [number, number][];
1705
+ plane: [number, number, number, number];
1706
+ part?: string | undefined;
1707
+ }[];
1708
+ animations: {
1709
+ name: string;
1710
+ duration: number;
1711
+ }[];
1712
+ cutout: boolean;
1713
+ collider: boolean;
1714
+ triangles: number;
1715
+ cutters?: {
1716
+ host: "wall" | "slab" | "ceiling" | "mounted";
1717
+ polygon: number[][];
1718
+ minY: number;
1719
+ maxY: number;
1720
+ }[] | undefined;
1721
+ };
1722
+ meta?: {
1723
+ description?: string | undefined;
1724
+ category?: string | undefined;
1725
+ tags?: string[] | undefined;
1726
+ parent?: string | undefined;
1727
+ } | undefined;
1728
+ images?: {
1729
+ artifact: string;
1730
+ thumbnail: string;
1731
+ floorPlan: string;
1732
+ } | undefined;
1733
+ } | undefined;
1054
1734
  wallId?: string | undefined;
1055
1735
  wallT?: number | undefined;
1056
- roofFace?: "front" | "back" | "right" | "left" | undefined;
1736
+ roofFace?: "left" | "right" | "front" | "back" | undefined;
1057
1737
  blockFaceId?: string | undefined;
1058
1738
  collectionIds?: `collection_${string}`[] | undefined;
1059
1739
  } | {
@@ -1068,7 +1748,7 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1068
1748
  slots: Record<string, string>;
1069
1749
  parameters: Record<string, number>;
1070
1750
  recipe: {
1071
- version: 1;
1751
+ version: 2 | 1;
1072
1752
  name: string;
1073
1753
  description: string;
1074
1754
  parameters: {
@@ -1078,9 +1758,10 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1078
1758
  min: number;
1079
1759
  max: number;
1080
1760
  step: number;
1081
- unit: "count" | "m" | "rad";
1761
+ unit: "count" | "m" | "rad" | "s" | "bool" | "choice";
1762
+ options?: string[] | undefined;
1082
1763
  part?: string | undefined;
1083
- axis?: "x" | "y" | "z" | undefined;
1764
+ axis?: "x" | "z" | "y" | undefined;
1084
1765
  }[];
1085
1766
  slots: {
1086
1767
  id: string;
@@ -1092,16 +1773,102 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1092
1773
  id: string;
1093
1774
  label: string;
1094
1775
  count: import("../../procedural-items/index.js").Expr;
1095
- shapes: {
1776
+ shapes: ({
1096
1777
  id: string;
1097
- primitive: "box" | "roundedBox" | "cylinder";
1778
+ primitive: "box" | "roundedBox" | "cylinder" | "ellipsoid";
1098
1779
  slot: string;
1099
1780
  size: [import("../../procedural-items/index.js").Expr, import("../../procedural-items/index.js").Expr, import("../../procedural-items/index.js").Expr];
1100
1781
  position: [import("../../procedural-items/index.js").Expr, import("../../procedural-items/index.js").Expr, import("../../procedural-items/index.js").Expr];
1782
+ support?: boolean | undefined;
1783
+ when?: import("../../procedural-items/index.js").Expr | undefined;
1101
1784
  rotation?: [import("../../procedural-items/index.js").Expr, import("../../procedural-items/index.js").Expr, import("../../procedural-items/index.js").Expr] | undefined;
1102
1785
  radius?: import("../../procedural-items/index.js").Expr | undefined;
1786
+ topScale?: import("../../procedural-items/index.js").Expr | undefined;
1787
+ segments?: number | undefined;
1788
+ open?: boolean | undefined;
1789
+ inner?: import("../../procedural-items/index.js").Expr | undefined;
1790
+ arc?: import("../../procedural-items/index.js").Expr | undefined;
1791
+ } | {
1792
+ id: string;
1793
+ primitive: "extrude";
1794
+ slot: string;
1795
+ section: {
1796
+ kind: "rectangle";
1797
+ width: import("../../procedural-items/index.js").Expr;
1798
+ depth: import("../../procedural-items/index.js").Expr;
1799
+ corner?: import("../../procedural-items/index.js").Expr | undefined;
1800
+ } | {
1801
+ kind: "round";
1802
+ radius: import("../../procedural-items/index.js").Expr;
1803
+ wall?: import("../../procedural-items/index.js").Expr | undefined;
1804
+ } | {
1805
+ kind: "oval";
1806
+ width: import("../../procedural-items/index.js").Expr;
1807
+ depth: import("../../procedural-items/index.js").Expr;
1808
+ } | {
1809
+ kind: "section";
1810
+ family: "C" | "I" | "L" | "T" | "Z" | "rect-tube";
1811
+ width: import("../../procedural-items/index.js").Expr;
1812
+ depth: import("../../procedural-items/index.js").Expr;
1813
+ web: import("../../procedural-items/index.js").Expr;
1814
+ flange: import("../../procedural-items/index.js").Expr;
1815
+ } | {
1816
+ kind: "polygon";
1817
+ outer: [import("../../procedural-items/index.js").Expr, import("../../procedural-items/index.js").Expr][];
1818
+ holes?: [import("../../procedural-items/index.js").Expr, import("../../procedural-items/index.js").Expr][][] | undefined;
1819
+ };
1820
+ length: import("../../procedural-items/index.js").Expr;
1821
+ position: [import("../../procedural-items/index.js").Expr, import("../../procedural-items/index.js").Expr, import("../../procedural-items/index.js").Expr];
1103
1822
  support?: boolean | undefined;
1104
- }[];
1823
+ when?: import("../../procedural-items/index.js").Expr | undefined;
1824
+ bevel?: import("../../procedural-items/index.js").Expr | undefined;
1825
+ rotation?: [import("../../procedural-items/index.js").Expr, import("../../procedural-items/index.js").Expr, import("../../procedural-items/index.js").Expr] | undefined;
1826
+ } | {
1827
+ id: string;
1828
+ primitive: "revolve";
1829
+ slot: string;
1830
+ profile: [import("../../procedural-items/index.js").Expr, import("../../procedural-items/index.js").Expr][];
1831
+ position: [import("../../procedural-items/index.js").Expr, import("../../procedural-items/index.js").Expr, import("../../procedural-items/index.js").Expr];
1832
+ support?: boolean | undefined;
1833
+ when?: import("../../procedural-items/index.js").Expr | undefined;
1834
+ segments?: number | undefined;
1835
+ arc?: import("../../procedural-items/index.js").Expr | undefined;
1836
+ rotation?: [import("../../procedural-items/index.js").Expr, import("../../procedural-items/index.js").Expr, import("../../procedural-items/index.js").Expr] | undefined;
1837
+ })[];
1838
+ parent?: string | undefined;
1839
+ frame?: {
1840
+ position: [import("../../procedural-items/index.js").Expr, import("../../procedural-items/index.js").Expr, import("../../procedural-items/index.js").Expr];
1841
+ rotation?: [import("../../procedural-items/index.js").Expr, import("../../procedural-items/index.js").Expr, import("../../procedural-items/index.js").Expr] | undefined;
1842
+ } | undefined;
1843
+ when?: import("../../procedural-items/index.js").Expr | undefined;
1844
+ motion?: {
1845
+ kind: "hinge";
1846
+ pivot: [import("../../procedural-items/index.js").Expr, import("../../procedural-items/index.js").Expr, import("../../procedural-items/index.js").Expr];
1847
+ axis: "x" | "z" | "y";
1848
+ angle: import("../../procedural-items/index.js").Expr;
1849
+ delay?: import("../../procedural-items/index.js").Expr | undefined;
1850
+ duration?: import("../../procedural-items/index.js").Expr | undefined;
1851
+ easing?: "linear" | "smooth" | "soft" | undefined;
1852
+ } | {
1853
+ kind: "slide";
1854
+ axis: "x" | "z" | "y";
1855
+ distance: import("../../procedural-items/index.js").Expr;
1856
+ delay?: import("../../procedural-items/index.js").Expr | undefined;
1857
+ duration?: import("../../procedural-items/index.js").Expr | undefined;
1858
+ easing?: "linear" | "smooth" | "soft" | undefined;
1859
+ } | {
1860
+ kind: "spin";
1861
+ pivot: [import("../../procedural-items/index.js").Expr, import("../../procedural-items/index.js").Expr, import("../../procedural-items/index.js").Expr];
1862
+ axis: "x" | "z" | "y";
1863
+ radiansPerSecond: import("../../procedural-items/index.js").Expr;
1864
+ } | undefined;
1865
+ light?: {
1866
+ position: [import("../../procedural-items/index.js").Expr, import("../../procedural-items/index.js").Expr, import("../../procedural-items/index.js").Expr];
1867
+ color: string;
1868
+ intensity?: number | undefined;
1869
+ distance?: number | undefined;
1870
+ emissiveSlot?: string | undefined;
1871
+ } | undefined;
1105
1872
  }[];
1106
1873
  constraints: {
1107
1874
  left: import("../../procedural-items/index.js").Expr;
@@ -1118,6 +1885,16 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1118
1885
  attachTo: "ceiling" | "wall-side";
1119
1886
  reference: string;
1120
1887
  } | undefined;
1888
+ base?: import("../../procedural-items/index.js").Expr | undefined;
1889
+ cuts?: ({
1890
+ shape: "rect";
1891
+ size: [import("../../procedural-items/index.js").Expr, import("../../procedural-items/index.js").Expr];
1892
+ center?: [import("../../procedural-items/index.js").Expr, import("../../procedural-items/index.js").Expr] | undefined;
1893
+ } | {
1894
+ shape: "circle";
1895
+ diameter: import("../../procedural-items/index.js").Expr;
1896
+ center?: [import("../../procedural-items/index.js").Expr, import("../../procedural-items/index.js").Expr] | undefined;
1897
+ })[] | undefined;
1121
1898
  surfaces?: {
1122
1899
  id: string;
1123
1900
  label: string;
@@ -1126,6 +1903,19 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1126
1903
  part?: string | undefined;
1127
1904
  rotation?: [import("../../procedural-items/index.js").Expr, import("../../procedural-items/index.js").Expr, import("../../procedural-items/index.js").Expr] | undefined;
1128
1905
  }[] | undefined;
1906
+ joints?: {
1907
+ child: string;
1908
+ kind: "fixed" | "continuous" | "revolute" | "prismatic";
1909
+ origin: [import("../../procedural-items/index.js").Expr, import("../../procedural-items/index.js").Expr, import("../../procedural-items/index.js").Expr];
1910
+ axis: [import("../../procedural-items/index.js").Expr, import("../../procedural-items/index.js").Expr, import("../../procedural-items/index.js").Expr];
1911
+ delay?: import("../../procedural-items/index.js").Expr | undefined;
1912
+ duration?: import("../../procedural-items/index.js").Expr | undefined;
1913
+ easing?: "linear" | "smooth" | "soft" | undefined;
1914
+ open?: import("../../procedural-items/index.js").Expr | undefined;
1915
+ rest?: import("../../procedural-items/index.js").Expr | undefined;
1916
+ range?: [import("../../procedural-items/index.js").Expr, import("../../procedural-items/index.js").Expr] | undefined;
1917
+ speed?: import("../../procedural-items/index.js").Expr | undefined;
1918
+ }[] | undefined;
1129
1919
  };
1130
1920
  attachments: Record<string, string>;
1131
1921
  type: "procedural-item";
@@ -1137,6 +1927,17 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1137
1927
  fov?: number | undefined;
1138
1928
  zoom?: number | undefined;
1139
1929
  } | undefined;
1930
+ provenance?: {
1931
+ refs: {
1932
+ id: string;
1933
+ ns?: string | undefined;
1934
+ role?: "primary" | "piece" | "absorbed" | "alias" | "derived" | undefined;
1935
+ }[];
1936
+ lineage?: {
1937
+ op: "import" | "split" | "merge" | "duplicate" | "convert" | "promote" | "make-independent" | "attach";
1938
+ fromIds: string[];
1939
+ } | undefined;
1940
+ } | undefined;
1140
1941
  side?: "front" | "back" | undefined;
1141
1942
  supportSlabId?: string | undefined;
1142
1943
  wallId?: string | undefined;
@@ -1164,18 +1965,31 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1164
1965
  fov?: number | undefined;
1165
1966
  zoom?: number | undefined;
1166
1967
  } | undefined;
1968
+ provenance?: {
1969
+ refs: {
1970
+ id: string;
1971
+ ns?: string | undefined;
1972
+ role?: "primary" | "piece" | "absorbed" | "alias" | "derived" | undefined;
1973
+ }[];
1974
+ lineage?: {
1975
+ op: "import" | "split" | "merge" | "duplicate" | "convert" | "promote" | "make-independent" | "attach";
1976
+ fromIds: string[];
1977
+ } | undefined;
1978
+ } | undefined;
1167
1979
  } | {
1168
1980
  object: "node";
1981
+ holes: [number, number][][];
1169
1982
  id: `zone_${string}`;
1170
1983
  name: string;
1171
1984
  parentId: string | null;
1172
1985
  visible: boolean;
1173
1986
  metadata: Record<string, unknown>;
1174
- color: string;
1175
1987
  polygon: [number, number][];
1988
+ color: string;
1176
1989
  autoFromWalls: boolean;
1177
1990
  boundaryWallIds: `wall_${string}`[];
1178
- spaceRole: "generic" | "room";
1991
+ boundarySeparatorIds: string[];
1992
+ spaceRole: "room" | "generic";
1179
1993
  roomNumber: string;
1180
1994
  enclosureStatus: "auto" | "open" | "enclosed";
1181
1995
  floorFinish: string;
@@ -1192,17 +2006,66 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1192
2006
  fov?: number | undefined;
1193
2007
  zoom?: number | undefined;
1194
2008
  } | undefined;
2009
+ provenance?: {
2010
+ refs: {
2011
+ id: string;
2012
+ ns?: string | undefined;
2013
+ role?: "primary" | "piece" | "absorbed" | "alias" | "derived" | undefined;
2014
+ }[];
2015
+ lineage?: {
2016
+ op: "import" | "split" | "merge" | "duplicate" | "convert" | "promote" | "make-independent" | "attach";
2017
+ fromIds: string[];
2018
+ } | undefined;
2019
+ } | undefined;
2020
+ ceiling?: {
2021
+ regions?: {
2022
+ id: string;
2023
+ polygon: [number, number][];
2024
+ finish: string | Record<string, unknown>;
2025
+ }[] | undefined;
2026
+ } | undefined;
2027
+ floor?: {
2028
+ elevation?: number | undefined;
2029
+ support?: "open" | undefined;
2030
+ footprint?: string | undefined;
2031
+ thickness?: number | undefined;
2032
+ sourceSlabId?: `slab_${string}` | undefined;
2033
+ finish?: string | Record<string, unknown> | undefined;
2034
+ regions?: {
2035
+ id: string;
2036
+ polygon: [number, number][];
2037
+ finish: string | Record<string, unknown>;
2038
+ }[] | undefined;
2039
+ } | undefined;
2040
+ wallMaterial?: string | undefined;
2041
+ hostZoneId?: string | undefined;
2042
+ seed?: [number, number] | undefined;
2043
+ floorStepFinish?: string | undefined;
2044
+ floorStepOverrides?: {
2045
+ key: string;
2046
+ finish: string;
2047
+ step?: number | undefined;
2048
+ }[] | undefined;
2049
+ floorEdgeFinish?: string | undefined;
2050
+ wallOverrides?: {
2051
+ wallId: string;
2052
+ face: "a" | "b";
2053
+ finish: string;
2054
+ }[] | undefined;
2055
+ hasFloor?: false | undefined;
2056
+ hasCeiling?: false | undefined;
1195
2057
  } | {
1196
2058
  object: "node";
2059
+ holes: [number, number][][];
1197
2060
  id: `slab_${string}`;
1198
2061
  parentId: string | null;
1199
2062
  visible: boolean;
1200
2063
  metadata: Record<string, unknown>;
1201
- recessed: boolean;
1202
2064
  polygon: [number, number][];
1203
- holes: [number, number][][];
2065
+ recessed: boolean;
1204
2066
  holeMetadata: {
1205
- source: "stair" | "elevator" | "manual";
2067
+ source: "stair" | "elevator" | "manual" | "room" | "floor-opening";
2068
+ openingId?: string | undefined;
1206
2069
  stairId?: string | undefined;
1207
2070
  elevatorId?: string | undefined;
1208
2071
  }[];
@@ -1218,6 +2081,17 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1218
2081
  fov?: number | undefined;
1219
2082
  zoom?: number | undefined;
1220
2083
  } | undefined;
2084
+ provenance?: {
2085
+ refs: {
2086
+ id: string;
2087
+ ns?: string | undefined;
2088
+ role?: "primary" | "piece" | "absorbed" | "alias" | "derived" | undefined;
2089
+ }[];
2090
+ lineage?: {
2091
+ op: "import" | "split" | "merge" | "duplicate" | "convert" | "promote" | "make-independent" | "attach";
2092
+ fromIds: string[];
2093
+ } | undefined;
2094
+ } | undefined;
1221
2095
  slots?: Record<string, string> | undefined;
1222
2096
  material?: {
1223
2097
  id?: string | undefined;
@@ -1237,19 +2111,51 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1237
2111
  } | undefined;
1238
2112
  } | undefined;
1239
2113
  materialPreset?: string | undefined;
2114
+ boundary?: "auto" | undefined;
2115
+ support?: "open" | undefined;
2116
+ floorHeight?: number | undefined;
2117
+ referenceFloorElevation?: number | undefined;
2118
+ foundation?: {
2119
+ type: "solid" | "none";
2120
+ material?: string | {
2121
+ id?: string | undefined;
2122
+ preset?: "custom" | "white" | "brick" | "concrete" | "wood" | "glass" | "metal" | "plaster" | "tile" | "marble" | undefined;
2123
+ properties?: {
2124
+ color: string;
2125
+ roughness: number;
2126
+ metalness: number;
2127
+ opacity: number;
2128
+ transparent: boolean;
2129
+ side: "front" | "back" | "double";
2130
+ } | undefined;
2131
+ texture?: {
2132
+ url: string;
2133
+ repeat?: [number, number] | undefined;
2134
+ scale?: number | undefined;
2135
+ } | undefined;
2136
+ } | undefined;
2137
+ } | undefined;
1240
2138
  recessedRimElevation?: number | undefined;
1241
2139
  fillToTerrain?: boolean | undefined;
2140
+ plateRole?: "base" | "platform" | "sunken" | undefined;
2141
+ railing?: {
2142
+ start: [number, number];
2143
+ end: [number, number];
2144
+ }[] | undefined;
2145
+ zoneIds?: string[] | undefined;
2146
+ associatedZoneIds?: string[] | undefined;
1242
2147
  } | {
1243
2148
  object: "node";
2149
+ holes: [number, number][][];
1244
2150
  id: `ceiling_${string}`;
1245
2151
  parentId: string | null;
1246
2152
  visible: boolean;
1247
2153
  metadata: Record<string, unknown>;
1248
- children: (`item_${string}` | `procedural-item_${string}`)[];
1249
2154
  polygon: [number, number][];
1250
- holes: [number, number][][];
2155
+ children: (`item_${string}` | `procedural-item_${string}`)[];
1251
2156
  holeMetadata: {
1252
- source: "stair" | "elevator" | "manual";
2157
+ source: "stair" | "elevator" | "manual" | "room" | "floor-opening";
2158
+ openingId?: string | undefined;
1253
2159
  stairId?: string | undefined;
1254
2160
  elevatorId?: string | undefined;
1255
2161
  }[];
@@ -1263,6 +2169,17 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1263
2169
  fov?: number | undefined;
1264
2170
  zoom?: number | undefined;
1265
2171
  } | undefined;
2172
+ provenance?: {
2173
+ refs: {
2174
+ id: string;
2175
+ ns?: string | undefined;
2176
+ role?: "primary" | "piece" | "absorbed" | "alias" | "derived" | undefined;
2177
+ }[];
2178
+ lineage?: {
2179
+ op: "import" | "split" | "merge" | "duplicate" | "convert" | "promote" | "make-independent" | "attach";
2180
+ fromIds: string[];
2181
+ } | undefined;
2182
+ } | undefined;
1266
2183
  slots?: Record<string, string> | undefined;
1267
2184
  material?: {
1268
2185
  id?: string | undefined;
@@ -1283,6 +2200,14 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1283
2200
  } | undefined;
1284
2201
  materialPreset?: string | undefined;
1285
2202
  height?: number | undefined;
2203
+ openingIds?: string[] | undefined;
2204
+ regions?: {
2205
+ id: string;
2206
+ polygon: [number, number][];
2207
+ finish: string | Record<string, unknown>;
2208
+ }[] | undefined;
2209
+ boundary?: "auto" | undefined;
2210
+ zoneId?: string | undefined;
1286
2211
  } | {
1287
2212
  object: "node";
1288
2213
  position: [number, number, number];
@@ -1311,6 +2236,18 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1311
2236
  fov?: number | undefined;
1312
2237
  zoom?: number | undefined;
1313
2238
  } | undefined;
2239
+ provenance?: {
2240
+ refs: {
2241
+ id: string;
2242
+ ns?: string | undefined;
2243
+ role?: "primary" | "piece" | "absorbed" | "alias" | "derived" | undefined;
2244
+ }[];
2245
+ lineage?: {
2246
+ op: "import" | "split" | "merge" | "duplicate" | "convert" | "promote" | "make-independent" | "attach";
2247
+ fromIds: string[];
2248
+ } | undefined;
2249
+ } | undefined;
2250
+ slots?: Record<string, string> | undefined;
1314
2251
  material?: {
1315
2252
  id?: string | undefined;
1316
2253
  preset?: "custom" | "white" | "brick" | "concrete" | "wood" | "glass" | "metal" | "plaster" | "tile" | "marble" | undefined;
@@ -1383,6 +2320,39 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1383
2320
  } | undefined;
1384
2321
  } | undefined;
1385
2322
  wallMaterialPreset?: string | undefined;
2323
+ assembly?: {
2324
+ layers: {
2325
+ id: string;
2326
+ role: "fill" | "shell" | "finish" | "lining" | "substrate" | "sheathing" | "membrane" | "underlay" | "insulation" | "air" | "furring" | "structure" | "deck" | "covering" | "glazing";
2327
+ thickness: number;
2328
+ core?: true | undefined;
2329
+ material?: string | undefined;
2330
+ slot?: string | undefined;
2331
+ returns?: boolean | undefined;
2332
+ display?: "construction" | "finished" | undefined;
2333
+ inset?: number | undefined;
2334
+ bottom?: number | undefined;
2335
+ lift?: number | undefined;
2336
+ src?: string | undefined;
2337
+ }[];
2338
+ backing?: {
2339
+ id: string;
2340
+ role: "fill" | "shell" | "finish" | "lining" | "substrate" | "sheathing" | "membrane" | "underlay" | "insulation" | "air" | "furring" | "structure" | "deck" | "covering" | "glazing";
2341
+ thickness: number;
2342
+ core?: true | undefined;
2343
+ material?: string | undefined;
2344
+ slot?: string | undefined;
2345
+ returns?: boolean | undefined;
2346
+ display?: "construction" | "finished" | undefined;
2347
+ inset?: number | undefined;
2348
+ bottom?: number | undefined;
2349
+ lift?: number | undefined;
2350
+ src?: string | undefined;
2351
+ }[] | undefined;
2352
+ face?: "front" | "exterior" | undefined;
2353
+ presetId?: string | undefined;
2354
+ cavityInsulation?: string | undefined;
2355
+ } | undefined;
1386
2356
  } | {
1387
2357
  object: "node";
1388
2358
  position: [number, number, number];
@@ -1390,6 +2360,7 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1390
2360
  parentId: string | null;
1391
2361
  visible: boolean;
1392
2362
  metadata: Record<string, unknown>;
2363
+ depth: number;
1393
2364
  rotation: number;
1394
2365
  children: string[];
1395
2366
  trim: {
@@ -1411,7 +2382,6 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1411
2382
  backRightZ: number;
1412
2383
  };
1413
2384
  width: number;
1414
- depth: number;
1415
2385
  roofType: "flat" | "hip" | "gable" | "shed" | "gambrel" | "dutch" | "mansard" | "conical";
1416
2386
  wallHeight: number;
1417
2387
  pitch: number;
@@ -1420,7 +2390,7 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1420
2390
  overhang: number;
1421
2391
  shingleThickness: number;
1422
2392
  managedByParent: boolean;
1423
- wallShell: "omit" | "auto" | "include";
2393
+ wallShell: "auto" | "omit" | "include";
1424
2394
  shedInsetEndPanels: boolean;
1425
2395
  gambrelLowerWidthRatio: number;
1426
2396
  gambrelLowerHeightRatio: number;
@@ -1440,6 +2410,17 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1440
2410
  fov?: number | undefined;
1441
2411
  zoom?: number | undefined;
1442
2412
  } | undefined;
2413
+ provenance?: {
2414
+ refs: {
2415
+ id: string;
2416
+ ns?: string | undefined;
2417
+ role?: "primary" | "piece" | "absorbed" | "alias" | "derived" | undefined;
2418
+ }[];
2419
+ lineage?: {
2420
+ op: "import" | "split" | "merge" | "duplicate" | "convert" | "promote" | "make-independent" | "attach";
2421
+ fromIds: string[];
2422
+ } | undefined;
2423
+ } | undefined;
1443
2424
  material?: {
1444
2425
  id?: string | undefined;
1445
2426
  preset?: "custom" | "white" | "brick" | "concrete" | "wood" | "glass" | "metal" | "plaster" | "tile" | "marble" | undefined;
@@ -1524,7 +2505,7 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1524
2505
  shedSideInfillMinX?: number | undefined;
1525
2506
  shedSideInfillMaxX?: number | undefined;
1526
2507
  shedFootprintPieces?: [number, number][][] | undefined;
1527
- shedOpenEndSides?: ("right" | "left")[] | undefined;
2508
+ shedOpenEndSides?: ("left" | "right")[] | undefined;
1528
2509
  shedJointFrame?: {
1529
2510
  position: [number, number, number];
1530
2511
  rotation: number;
@@ -1532,6 +2513,8 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1532
2513
  shedJointOwnerId?: string | undefined;
1533
2514
  shedJointNeighborIds?: string[] | undefined;
1534
2515
  shedJointScopeId?: string | undefined;
2516
+ fascia?: boolean | undefined;
2517
+ fasciaHighEdge?: boolean | undefined;
1535
2518
  } | {
1536
2519
  object: "node";
1537
2520
  position: [number, number, number];
@@ -1539,15 +2522,15 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1539
2522
  parentId: string | null;
1540
2523
  visible: boolean;
1541
2524
  metadata: Record<string, unknown>;
2525
+ depth: number;
1542
2526
  rotation: [number, number, number];
1543
2527
  children: string[];
1544
2528
  width: number;
1545
- depth: number;
1546
2529
  height: number;
1547
2530
  style: "wall-shelf" | "bookshelf" | "open-rack" | "cubby";
1548
2531
  rows: number;
1549
- thickness: number;
1550
2532
  columns: number;
2533
+ thickness: number;
1551
2534
  withBack: boolean;
1552
2535
  withSides: boolean;
1553
2536
  withBottom: boolean;
@@ -1561,6 +2544,17 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1561
2544
  fov?: number | undefined;
1562
2545
  zoom?: number | undefined;
1563
2546
  } | undefined;
2547
+ provenance?: {
2548
+ refs: {
2549
+ id: string;
2550
+ ns?: string | undefined;
2551
+ role?: "primary" | "piece" | "absorbed" | "alias" | "derived" | undefined;
2552
+ }[];
2553
+ lineage?: {
2554
+ op: "import" | "split" | "merge" | "duplicate" | "convert" | "promote" | "make-independent" | "attach";
2555
+ fromIds: string[];
2556
+ } | undefined;
2557
+ } | undefined;
1564
2558
  supportSlabId?: string | undefined;
1565
2559
  slots?: Record<string, string> | undefined;
1566
2560
  material?: {
@@ -1605,7 +2599,7 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1605
2599
  topLandingDepth: number;
1606
2600
  showCenterColumn: boolean;
1607
2601
  showStepSupports: boolean;
1608
- railingMode: "right" | "left" | "none" | "both";
2602
+ railingMode: "left" | "right" | "none" | "both";
1609
2603
  railingHeight: number;
1610
2604
  type: "stair";
1611
2605
  name?: string | undefined;
@@ -1616,6 +2610,17 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1616
2610
  fov?: number | undefined;
1617
2611
  zoom?: number | undefined;
1618
2612
  } | undefined;
2613
+ provenance?: {
2614
+ refs: {
2615
+ id: string;
2616
+ ns?: string | undefined;
2617
+ role?: "primary" | "piece" | "absorbed" | "alias" | "derived" | undefined;
2618
+ }[];
2619
+ lineage?: {
2620
+ op: "import" | "split" | "merge" | "duplicate" | "convert" | "promote" | "make-independent" | "attach";
2621
+ fromIds: string[];
2622
+ } | undefined;
2623
+ } | undefined;
1619
2624
  supportSlabId?: string | undefined;
1620
2625
  slots?: Record<string, string> | undefined;
1621
2626
  material?: {
@@ -1636,6 +2641,17 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1636
2641
  } | undefined;
1637
2642
  } | undefined;
1638
2643
  materialPreset?: string | undefined;
2644
+ construction?: {
2645
+ mode: "solid" | "open" | "waist" | "side-stringers" | "center-stringer";
2646
+ waistThickness: number;
2647
+ treadThickness: number;
2648
+ riserThickness: number;
2649
+ nosing: number;
2650
+ finishThickness: number;
2651
+ closedRisers: boolean;
2652
+ stringerWidth: number;
2653
+ stringerDepth: number;
2654
+ } | undefined;
1639
2655
  railingMaterial?: {
1640
2656
  id?: string | undefined;
1641
2657
  preset?: "custom" | "white" | "brick" | "concrete" | "wood" | "glass" | "metal" | "plaster" | "tile" | "marble" | undefined;
@@ -1692,14 +2708,42 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1692
2708
  sideMaterialPreset?: string | undefined;
1693
2709
  deckSlabId?: string | undefined;
1694
2710
  totalRise?: number | undefined;
2711
+ designTargets?: {
2712
+ maxRiserHeight: number;
2713
+ minimumGoing: number;
2714
+ targetGoing: number;
2715
+ minimumHeadroom: number;
2716
+ } | undefined;
2717
+ uniformRisers?: boolean | undefined;
2718
+ railingStyle?: "glass" | "metal" | "balusters" | "cable" | "boards" | "post-and-rail" | undefined;
2719
+ railingPath?: "continuous" | "original" | undefined;
2720
+ handrail?: {
2721
+ mode: "left" | "right" | "none" | "both";
2722
+ height: number;
2723
+ diameter: number;
2724
+ offset: number;
2725
+ bottom?: {
2726
+ extension: number;
2727
+ return: "wall" | "floor" | "none" | "post";
2728
+ returnLength: number;
2729
+ } | undefined;
2730
+ top?: {
2731
+ extension: number;
2732
+ return: "wall" | "floor" | "none" | "post";
2733
+ returnLength: number;
2734
+ } | undefined;
2735
+ } | undefined;
2736
+ railingTopPost?: boolean | undefined;
2737
+ railingTopReach?: number | undefined;
2738
+ railingPostThrough?: boolean | undefined;
1695
2739
  } | {
1696
2740
  object: "node";
2741
+ length: number;
1697
2742
  position: [number, number, number];
1698
2743
  id: `sseg_${string}`;
1699
2744
  parentId: string | null;
1700
2745
  visible: boolean;
1701
2746
  metadata: Record<string, unknown>;
1702
- length: number;
1703
2747
  rotation: number;
1704
2748
  width: number;
1705
2749
  height: number;
@@ -1707,7 +2751,7 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1707
2751
  stepCount: number;
1708
2752
  fillToFloor: boolean;
1709
2753
  segmentType: "stair" | "landing";
1710
- attachmentSide: "front" | "right" | "left";
2754
+ attachmentSide: "left" | "right" | "front";
1711
2755
  type: "stair-segment";
1712
2756
  name?: string | undefined;
1713
2757
  camera?: {
@@ -1717,6 +2761,18 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1717
2761
  fov?: number | undefined;
1718
2762
  zoom?: number | undefined;
1719
2763
  } | undefined;
2764
+ provenance?: {
2765
+ refs: {
2766
+ id: string;
2767
+ ns?: string | undefined;
2768
+ role?: "primary" | "piece" | "absorbed" | "alias" | "derived" | undefined;
2769
+ }[];
2770
+ lineage?: {
2771
+ op: "import" | "split" | "merge" | "duplicate" | "convert" | "promote" | "make-independent" | "attach";
2772
+ fromIds: string[];
2773
+ } | undefined;
2774
+ } | undefined;
2775
+ slots?: Record<string, string> | undefined;
1720
2776
  material?: {
1721
2777
  id?: string | undefined;
1722
2778
  preset?: "custom" | "white" | "brick" | "concrete" | "wood" | "glass" | "metal" | "plaster" | "tile" | "marble" | undefined;
@@ -1735,6 +2791,23 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1735
2791
  } | undefined;
1736
2792
  } | undefined;
1737
2793
  materialPreset?: string | undefined;
2794
+ construction?: {
2795
+ mode: "solid" | "open" | "waist" | "side-stringers" | "center-stringer";
2796
+ waistThickness: number;
2797
+ treadThickness: number;
2798
+ riserThickness: number;
2799
+ nosing: number;
2800
+ finishThickness: number;
2801
+ closedRisers: boolean;
2802
+ stringerWidth: number;
2803
+ stringerDepth: number;
2804
+ } | undefined;
2805
+ winder?: {
2806
+ turn: "left" | "right";
2807
+ innerGap: number;
2808
+ walkingLineOffset: number;
2809
+ division: "equal-going" | "equal-angle";
2810
+ } | undefined;
1738
2811
  } | {
1739
2812
  object: "node";
1740
2813
  position: [number, number, number];
@@ -1746,13 +2819,13 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1746
2819
  url: string | null;
1747
2820
  scale: number;
1748
2821
  rotation: [number, number, number];
2822
+ layers: Record<string, boolean>;
1749
2823
  captureSession: {
1750
2824
  sessionId: string;
1751
2825
  schemaVersion?: number | undefined;
1752
2826
  revisionId?: string | undefined;
1753
2827
  manifestUrl?: string | undefined;
1754
2828
  } | null;
1755
- layers: Record<string, boolean>;
1756
2829
  type: "scan";
1757
2830
  name?: string | undefined;
1758
2831
  camera?: {
@@ -1762,6 +2835,17 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1762
2835
  fov?: number | undefined;
1763
2836
  zoom?: number | undefined;
1764
2837
  } | undefined;
2838
+ provenance?: {
2839
+ refs: {
2840
+ id: string;
2841
+ ns?: string | undefined;
2842
+ role?: "primary" | "piece" | "absorbed" | "alias" | "derived" | undefined;
2843
+ }[];
2844
+ lineage?: {
2845
+ op: "import" | "split" | "merge" | "duplicate" | "convert" | "promote" | "make-independent" | "attach";
2846
+ fromIds: string[];
2847
+ } | undefined;
2848
+ } | undefined;
1765
2849
  } | {
1766
2850
  object: "node";
1767
2851
  position: [number, number, number];
@@ -1790,6 +2874,17 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1790
2874
  fov?: number | undefined;
1791
2875
  zoom?: number | undefined;
1792
2876
  } | undefined;
2877
+ provenance?: {
2878
+ refs: {
2879
+ id: string;
2880
+ ns?: string | undefined;
2881
+ role?: "primary" | "piece" | "absorbed" | "alias" | "derived" | undefined;
2882
+ }[];
2883
+ lineage?: {
2884
+ op: "import" | "split" | "merge" | "duplicate" | "convert" | "promote" | "make-independent" | "attach";
2885
+ fromIds: string[];
2886
+ } | undefined;
2887
+ } | undefined;
1793
2888
  } | {
1794
2889
  object: "node";
1795
2890
  id: `measurement_${string}`;
@@ -1886,6 +2981,17 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1886
2981
  fov?: number | undefined;
1887
2982
  zoom?: number | undefined;
1888
2983
  } | undefined;
2984
+ provenance?: {
2985
+ refs: {
2986
+ id: string;
2987
+ ns?: string | undefined;
2988
+ role?: "primary" | "piece" | "absorbed" | "alias" | "derived" | undefined;
2989
+ }[];
2990
+ lineage?: {
2991
+ op: "import" | "split" | "merge" | "duplicate" | "convert" | "promote" | "make-independent" | "attach";
2992
+ fromIds: string[];
2993
+ } | undefined;
2994
+ } | undefined;
1889
2995
  } | {
1890
2996
  object: "node";
1891
2997
  position: [number, number, number];
@@ -1903,6 +3009,17 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1903
3009
  fov?: number | undefined;
1904
3010
  zoom?: number | undefined;
1905
3011
  } | undefined;
3012
+ provenance?: {
3013
+ refs: {
3014
+ id: string;
3015
+ ns?: string | undefined;
3016
+ role?: "primary" | "piece" | "absorbed" | "alias" | "derived" | undefined;
3017
+ }[];
3018
+ lineage?: {
3019
+ op: "import" | "split" | "merge" | "duplicate" | "convert" | "promote" | "make-independent" | "attach";
3020
+ fromIds: string[];
3021
+ } | undefined;
3022
+ } | undefined;
1906
3023
  supportSlabId?: string | undefined;
1907
3024
  } | {
1908
3025
  object: "node";
@@ -1914,7 +3031,8 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1914
3031
  rotation: [number, number, number];
1915
3032
  width: number;
1916
3033
  height: number;
1917
- constructionType: "framed" | "masonry";
3034
+ floorThresholdVersion: 0 | 1;
3035
+ constructionType: "masonry" | "framed";
1918
3036
  dimensionReference: "nominal" | "rough-opening" | "masonry-opening" | "finish-opening";
1919
3037
  operationState: number;
1920
3038
  openingKind: "window" | "opening";
@@ -1925,7 +3043,7 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1925
3043
  openingRevealRadius: number;
1926
3044
  frameThickness: number;
1927
3045
  frameDepth: number;
1928
- hingesSide: "right" | "left";
3046
+ hingesSide: "left" | "right";
1929
3047
  columnRatios: number[];
1930
3048
  windowType: "fixed" | "sliding" | "casement" | "awning" | "hopper" | "single-hung" | "double-hung" | "bay" | "bow" | "louvered";
1931
3049
  awningDirection: "up" | "down";
@@ -1946,6 +3064,17 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1946
3064
  fov?: number | undefined;
1947
3065
  zoom?: number | undefined;
1948
3066
  } | undefined;
3067
+ provenance?: {
3068
+ refs: {
3069
+ id: string;
3070
+ ns?: string | undefined;
3071
+ role?: "primary" | "piece" | "absorbed" | "alias" | "derived" | undefined;
3072
+ }[];
3073
+ lineage?: {
3074
+ op: "import" | "split" | "merge" | "duplicate" | "convert" | "promote" | "make-independent" | "attach";
3075
+ fromIds: string[];
3076
+ } | undefined;
3077
+ } | undefined;
1949
3078
  side?: "front" | "back" | undefined;
1950
3079
  slots?: Record<string, string> | undefined;
1951
3080
  material?: {
@@ -1966,8 +3095,97 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1966
3095
  } | undefined;
1967
3096
  } | undefined;
1968
3097
  roofSegmentId?: string | undefined;
3098
+ source?: {
3099
+ kind: "script";
3100
+ language: "three" | "bpy";
3101
+ script: string;
3102
+ params: Record<string, string | number | boolean>;
3103
+ artifact: string;
3104
+ manifest: {
3105
+ bounds: {
3106
+ min: [number, number, number];
3107
+ max: [number, number, number];
3108
+ };
3109
+ params: {
3110
+ id: string;
3111
+ kind: "string" | "number" | "boolean";
3112
+ default: string | number | boolean;
3113
+ label?: string | undefined;
3114
+ min?: number | undefined;
3115
+ max?: number | undefined;
3116
+ step?: number | undefined;
3117
+ unit?: string | undefined;
3118
+ options?: string[] | undefined;
3119
+ }[];
3120
+ parts: {
3121
+ id: string;
3122
+ label?: string | undefined;
3123
+ type?: string | undefined;
3124
+ bounds?: {
3125
+ min: [number, number, number];
3126
+ max: [number, number, number];
3127
+ } | undefined;
3128
+ }[];
3129
+ surfaces: {
3130
+ y: number;
3131
+ polygon: [number, number][];
3132
+ part?: string | undefined;
3133
+ }[];
3134
+ slots: {
3135
+ id: string;
3136
+ label?: string | undefined;
3137
+ color?: string | undefined;
3138
+ roughness?: number | undefined;
3139
+ metalness?: number | undefined;
3140
+ transparent?: boolean | undefined;
3141
+ emissive?: boolean | undefined;
3142
+ }[];
3143
+ anchors: {
3144
+ id: string;
3145
+ position: [number, number, number];
3146
+ normal?: [number, number, number] | undefined;
3147
+ }[];
3148
+ lights: {
3149
+ id: string;
3150
+ position: [number, number, number];
3151
+ color: string;
3152
+ intensity: number;
3153
+ distance?: number | undefined;
3154
+ }[];
3155
+ undersides: {
3156
+ polygon: [number, number][];
3157
+ plane: [number, number, number, number];
3158
+ part?: string | undefined;
3159
+ }[];
3160
+ animations: {
3161
+ name: string;
3162
+ duration: number;
3163
+ }[];
3164
+ cutout: boolean;
3165
+ collider: boolean;
3166
+ triangles: number;
3167
+ cutters?: {
3168
+ host: "wall" | "slab" | "ceiling" | "mounted";
3169
+ polygon: number[][];
3170
+ minY: number;
3171
+ maxY: number;
3172
+ }[] | undefined;
3173
+ };
3174
+ meta?: {
3175
+ description?: string | undefined;
3176
+ category?: string | undefined;
3177
+ tags?: string[] | undefined;
3178
+ parent?: string | undefined;
3179
+ } | undefined;
3180
+ images?: {
3181
+ artifact: string;
3182
+ thumbnail: string;
3183
+ floorPlan: string;
3184
+ } | undefined;
3185
+ } | undefined;
1969
3186
  wallId?: string | undefined;
1970
- roofFace?: "front" | "back" | "right" | "left" | undefined;
3187
+ roofFace?: "left" | "right" | "front" | "back" | undefined;
3188
+ verticalAnchor?: "wall" | "floor" | undefined;
1971
3189
  mark?: string | undefined;
1972
3190
  roughOpeningWidth?: number | undefined;
1973
3191
  roughOpeningHeight?: number | undefined;
@@ -1976,7 +3194,7 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1976
3194
  finishOpeningWidth?: number | undefined;
1977
3195
  finishOpeningHeight?: number | undefined;
1978
3196
  dormerId?: string | undefined;
1979
- dormerFace?: "front" | "back" | "right" | "left" | undefined;
3197
+ dormerFace?: "left" | "right" | "front" | "back" | undefined;
1980
3198
  } | {
1981
3199
  object: "node";
1982
3200
  position: [number, number, number];
@@ -1987,13 +3205,14 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1987
3205
  rotation: [number, number, number];
1988
3206
  width: number;
1989
3207
  height: number;
1990
- leafCount: 3 | 2 | 1 | 4;
1991
- constructionType: "framed" | "masonry";
3208
+ leafCount: 2 | 1 | 3 | 4;
3209
+ floorThresholdVersion: 0 | 1;
3210
+ constructionType: "masonry" | "framed";
1992
3211
  dimensionReference: "nominal" | "rough-opening" | "masonry-opening" | "finish-opening";
1993
3212
  doorCategory: "interior" | "garage";
1994
3213
  doorType: "double" | "hinged" | "french" | "folding" | "pocket" | "barn" | "sliding" | "garage-sectional" | "garage-rollup" | "garage-tiltup";
1995
3214
  operationState: number;
1996
- slideDirection: "right" | "left";
3215
+ slideDirection: "left" | "right";
1997
3216
  trackStyle: "visible" | "none" | "pocket" | "overhead";
1998
3217
  garagePanelCount: number;
1999
3218
  openingKind: "door" | "opening";
@@ -2007,11 +3226,11 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2007
3226
  frameDepth: number;
2008
3227
  threshold: boolean;
2009
3228
  thresholdHeight: number;
2010
- hingesSide: "right" | "left";
3229
+ hingesSide: "left" | "right";
2011
3230
  swingDirection: "inward" | "outward";
2012
3231
  swingAngle: number;
2013
3232
  segments: {
2014
- type: "glass" | "panel" | "empty";
3233
+ type: "glass" | "empty" | "panel";
2015
3234
  heightRatio: number;
2016
3235
  columnRatios: number[];
2017
3236
  dividerThickness: number;
@@ -2020,7 +3239,7 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2020
3239
  }[];
2021
3240
  handle: boolean;
2022
3241
  handleHeight: number;
2023
- handleSide: "right" | "left";
3242
+ handleSide: "left" | "right";
2024
3243
  contentPadding: [number, number];
2025
3244
  doorCloser: boolean;
2026
3245
  panicBar: boolean;
@@ -2034,6 +3253,17 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2034
3253
  fov?: number | undefined;
2035
3254
  zoom?: number | undefined;
2036
3255
  } | undefined;
3256
+ provenance?: {
3257
+ refs: {
3258
+ id: string;
3259
+ ns?: string | undefined;
3260
+ role?: "primary" | "piece" | "absorbed" | "alias" | "derived" | undefined;
3261
+ }[];
3262
+ lineage?: {
3263
+ op: "import" | "split" | "merge" | "duplicate" | "convert" | "promote" | "make-independent" | "attach";
3264
+ fromIds: string[];
3265
+ } | undefined;
3266
+ } | undefined;
2037
3267
  side?: "front" | "back" | undefined;
2038
3268
  slots?: Record<string, string> | undefined;
2039
3269
  material?: {
@@ -2054,8 +3284,97 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2054
3284
  } | undefined;
2055
3285
  } | undefined;
2056
3286
  roofSegmentId?: string | undefined;
3287
+ source?: {
3288
+ kind: "script";
3289
+ language: "three" | "bpy";
3290
+ script: string;
3291
+ params: Record<string, string | number | boolean>;
3292
+ artifact: string;
3293
+ manifest: {
3294
+ bounds: {
3295
+ min: [number, number, number];
3296
+ max: [number, number, number];
3297
+ };
3298
+ params: {
3299
+ id: string;
3300
+ kind: "string" | "number" | "boolean";
3301
+ default: string | number | boolean;
3302
+ label?: string | undefined;
3303
+ min?: number | undefined;
3304
+ max?: number | undefined;
3305
+ step?: number | undefined;
3306
+ unit?: string | undefined;
3307
+ options?: string[] | undefined;
3308
+ }[];
3309
+ parts: {
3310
+ id: string;
3311
+ label?: string | undefined;
3312
+ type?: string | undefined;
3313
+ bounds?: {
3314
+ min: [number, number, number];
3315
+ max: [number, number, number];
3316
+ } | undefined;
3317
+ }[];
3318
+ surfaces: {
3319
+ y: number;
3320
+ polygon: [number, number][];
3321
+ part?: string | undefined;
3322
+ }[];
3323
+ slots: {
3324
+ id: string;
3325
+ label?: string | undefined;
3326
+ color?: string | undefined;
3327
+ roughness?: number | undefined;
3328
+ metalness?: number | undefined;
3329
+ transparent?: boolean | undefined;
3330
+ emissive?: boolean | undefined;
3331
+ }[];
3332
+ anchors: {
3333
+ id: string;
3334
+ position: [number, number, number];
3335
+ normal?: [number, number, number] | undefined;
3336
+ }[];
3337
+ lights: {
3338
+ id: string;
3339
+ position: [number, number, number];
3340
+ color: string;
3341
+ intensity: number;
3342
+ distance?: number | undefined;
3343
+ }[];
3344
+ undersides: {
3345
+ polygon: [number, number][];
3346
+ plane: [number, number, number, number];
3347
+ part?: string | undefined;
3348
+ }[];
3349
+ animations: {
3350
+ name: string;
3351
+ duration: number;
3352
+ }[];
3353
+ cutout: boolean;
3354
+ collider: boolean;
3355
+ triangles: number;
3356
+ cutters?: {
3357
+ host: "wall" | "slab" | "ceiling" | "mounted";
3358
+ polygon: number[][];
3359
+ minY: number;
3360
+ maxY: number;
3361
+ }[] | undefined;
3362
+ };
3363
+ meta?: {
3364
+ description?: string | undefined;
3365
+ category?: string | undefined;
3366
+ tags?: string[] | undefined;
3367
+ parent?: string | undefined;
3368
+ } | undefined;
3369
+ images?: {
3370
+ artifact: string;
3371
+ thumbnail: string;
3372
+ floorPlan: string;
3373
+ } | undefined;
3374
+ } | undefined;
2057
3375
  wallId?: string | undefined;
2058
- roofFace?: "front" | "back" | "right" | "left" | undefined;
3376
+ roofFace?: "left" | "right" | "front" | "back" | undefined;
3377
+ verticalAnchor?: "wall" | "floor" | undefined;
2059
3378
  mark?: string | undefined;
2060
3379
  roughOpeningWidth?: number | undefined;
2061
3380
  roughOpeningHeight?: number | undefined;
@@ -2070,10 +3389,10 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2070
3389
  parentId: string | null;
2071
3390
  visible: boolean;
2072
3391
  metadata: Record<string, unknown>;
3392
+ depth: number;
2073
3393
  rotation: number;
2074
3394
  materialPreset: string;
2075
3395
  width: number;
2076
- depth: number;
2077
3396
  height: number;
2078
3397
  hoodOverhang: number;
2079
3398
  topTaper: number;
@@ -2093,6 +3412,17 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2093
3412
  fov?: number | undefined;
2094
3413
  zoom?: number | undefined;
2095
3414
  } | undefined;
3415
+ provenance?: {
3416
+ refs: {
3417
+ id: string;
3418
+ ns?: string | undefined;
3419
+ role?: "primary" | "piece" | "absorbed" | "alias" | "derived" | undefined;
3420
+ }[];
3421
+ lineage?: {
3422
+ op: "import" | "split" | "merge" | "duplicate" | "convert" | "promote" | "make-independent" | "attach";
3423
+ fromIds: string[];
3424
+ } | undefined;
3425
+ } | undefined;
2096
3426
  slots?: Record<string, string> | undefined;
2097
3427
  material?: {
2098
3428
  id?: string | undefined;
@@ -2114,12 +3444,12 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2114
3444
  roofSegmentId?: string | undefined;
2115
3445
  } | {
2116
3446
  object: "node";
3447
+ length: number;
2117
3448
  position: [number, number, number];
2118
3449
  id: `rvent_${string}`;
2119
3450
  parentId: string | null;
2120
3451
  visible: boolean;
2121
3452
  metadata: Record<string, unknown>;
2122
- length: number;
2123
3453
  rotation: number;
2124
3454
  width: number;
2125
3455
  height: number;
@@ -2134,6 +3464,17 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2134
3464
  fov?: number | undefined;
2135
3465
  zoom?: number | undefined;
2136
3466
  } | undefined;
3467
+ provenance?: {
3468
+ refs: {
3469
+ id: string;
3470
+ ns?: string | undefined;
3471
+ role?: "primary" | "piece" | "absorbed" | "alias" | "derived" | undefined;
3472
+ }[];
3473
+ lineage?: {
3474
+ op: "import" | "split" | "merge" | "duplicate" | "convert" | "promote" | "make-independent" | "attach";
3475
+ fromIds: string[];
3476
+ } | undefined;
3477
+ } | undefined;
2137
3478
  material?: {
2138
3479
  id?: string | undefined;
2139
3480
  preset?: "custom" | "white" | "brick" | "concrete" | "wood" | "glass" | "metal" | "plaster" | "tile" | "marble" | undefined;
@@ -2178,6 +3519,17 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2178
3519
  fov?: number | undefined;
2179
3520
  zoom?: number | undefined;
2180
3521
  } | undefined;
3522
+ provenance?: {
3523
+ refs: {
3524
+ id: string;
3525
+ ns?: string | undefined;
3526
+ role?: "primary" | "piece" | "absorbed" | "alias" | "derived" | undefined;
3527
+ }[];
3528
+ lineage?: {
3529
+ op: "import" | "split" | "merge" | "duplicate" | "convert" | "promote" | "make-independent" | "attach";
3530
+ fromIds: string[];
3531
+ } | undefined;
3532
+ } | undefined;
2181
3533
  slots?: Record<string, string> | undefined;
2182
3534
  material?: {
2183
3535
  id?: string | undefined;
@@ -2204,10 +3556,10 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2204
3556
  parentId: string | null;
2205
3557
  visible: boolean;
2206
3558
  metadata: Record<string, unknown>;
3559
+ depth: number;
2207
3560
  rotation: number;
2208
3561
  materialPreset: string;
2209
3562
  width: number;
2210
- depth: number;
2211
3563
  height: number;
2212
3564
  roofStyle: "dome" | "pyramid";
2213
3565
  finial: boolean;
@@ -2220,6 +3572,17 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2220
3572
  fov?: number | undefined;
2221
3573
  zoom?: number | undefined;
2222
3574
  } | undefined;
3575
+ provenance?: {
3576
+ refs: {
3577
+ id: string;
3578
+ ns?: string | undefined;
3579
+ role?: "primary" | "piece" | "absorbed" | "alias" | "derived" | undefined;
3580
+ }[];
3581
+ lineage?: {
3582
+ op: "import" | "split" | "merge" | "duplicate" | "convert" | "promote" | "make-independent" | "attach";
3583
+ fromIds: string[];
3584
+ } | undefined;
3585
+ } | undefined;
2223
3586
  slots?: Record<string, string> | undefined;
2224
3587
  material?: {
2225
3588
  id?: string | undefined;
@@ -2246,10 +3609,10 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2246
3609
  parentId: string | null;
2247
3610
  visible: boolean;
2248
3611
  metadata: Record<string, unknown>;
3612
+ depth: number;
2249
3613
  rotation: number;
2250
3614
  materialPreset: string;
2251
3615
  width: number;
2252
- depth: number;
2253
3616
  height: number;
2254
3617
  style: "half-round" | "scoop" | "slant-box";
2255
3618
  louverCount: number;
@@ -2263,6 +3626,17 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2263
3626
  fov?: number | undefined;
2264
3627
  zoom?: number | undefined;
2265
3628
  } | undefined;
3629
+ provenance?: {
3630
+ refs: {
3631
+ id: string;
3632
+ ns?: string | undefined;
3633
+ role?: "primary" | "piece" | "absorbed" | "alias" | "derived" | undefined;
3634
+ }[];
3635
+ lineage?: {
3636
+ op: "import" | "split" | "merge" | "duplicate" | "convert" | "promote" | "make-independent" | "attach";
3637
+ fromIds: string[];
3638
+ } | undefined;
3639
+ } | undefined;
2266
3640
  slots?: Record<string, string> | undefined;
2267
3641
  material?: {
2268
3642
  id?: string | undefined;
@@ -2284,12 +3658,12 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2284
3658
  roofSegmentId?: string | undefined;
2285
3659
  } | {
2286
3660
  object: "node";
3661
+ length: number;
2287
3662
  position: [number, number, number];
2288
3663
  id: `gutter_${string}`;
2289
3664
  parentId: string | null;
2290
3665
  visible: boolean;
2291
3666
  metadata: Record<string, unknown>;
2292
- length: number;
2293
3667
  rotation: number;
2294
3668
  materialPreset: string;
2295
3669
  thickness: number;
@@ -2314,6 +3688,17 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2314
3688
  fov?: number | undefined;
2315
3689
  zoom?: number | undefined;
2316
3690
  } | undefined;
3691
+ provenance?: {
3692
+ refs: {
3693
+ id: string;
3694
+ ns?: string | undefined;
3695
+ role?: "primary" | "piece" | "absorbed" | "alias" | "derived" | undefined;
3696
+ }[];
3697
+ lineage?: {
3698
+ op: "import" | "split" | "merge" | "duplicate" | "convert" | "promote" | "make-independent" | "attach";
3699
+ fromIds: string[];
3700
+ } | undefined;
3701
+ } | undefined;
2317
3702
  slots?: Record<string, string> | undefined;
2318
3703
  material?: {
2319
3704
  id?: string | undefined;
@@ -2345,9 +3730,9 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2345
3730
  parentId: string | null;
2346
3731
  visible: boolean;
2347
3732
  metadata: Record<string, unknown>;
3733
+ depth: number;
2348
3734
  rotation: number;
2349
3735
  width: number;
2350
- depth: number;
2351
3736
  cornerBevel: number;
2352
3737
  cap: boolean;
2353
3738
  panelDepth: number;
@@ -2389,6 +3774,17 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2389
3774
  fov?: number | undefined;
2390
3775
  zoom?: number | undefined;
2391
3776
  } | undefined;
3777
+ provenance?: {
3778
+ refs: {
3779
+ id: string;
3780
+ ns?: string | undefined;
3781
+ role?: "primary" | "piece" | "absorbed" | "alias" | "derived" | undefined;
3782
+ }[];
3783
+ lineage?: {
3784
+ op: "import" | "split" | "merge" | "duplicate" | "convert" | "promote" | "make-independent" | "attach";
3785
+ fromIds: string[];
3786
+ } | undefined;
3787
+ } | undefined;
2392
3788
  material?: {
2393
3789
  id?: string | undefined;
2394
3790
  preset?: "custom" | "white" | "brick" | "concrete" | "wood" | "glass" | "metal" | "plaster" | "tile" | "marble" | undefined;
@@ -2435,9 +3831,9 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2435
3831
  metadata: Record<string, unknown>;
2436
3832
  rotation: number;
2437
3833
  rows: number;
3834
+ columns: number;
2438
3835
  frameThickness: number;
2439
3836
  frameDepth: number;
2440
- columns: number;
2441
3837
  panelWidth: number;
2442
3838
  panelHeight: number;
2443
3839
  gapX: number;
@@ -2454,6 +3850,17 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2454
3850
  fov?: number | undefined;
2455
3851
  zoom?: number | undefined;
2456
3852
  } | undefined;
3853
+ provenance?: {
3854
+ refs: {
3855
+ id: string;
3856
+ ns?: string | undefined;
3857
+ role?: "primary" | "piece" | "absorbed" | "alias" | "derived" | undefined;
3858
+ }[];
3859
+ lineage?: {
3860
+ op: "import" | "split" | "merge" | "duplicate" | "convert" | "promote" | "make-independent" | "attach";
3861
+ fromIds: string[];
3862
+ } | undefined;
3863
+ } | undefined;
2457
3864
  material?: {
2458
3865
  id?: string | undefined;
2459
3866
  preset?: "custom" | "white" | "brick" | "concrete" | "wood" | "glass" | "metal" | "plaster" | "tile" | "marble" | undefined;
@@ -2503,6 +3910,7 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2503
3910
  rotation: number;
2504
3911
  width: number;
2505
3912
  height: number;
3913
+ glassThickness: number;
2506
3914
  operationState: number;
2507
3915
  slideDirection: "x" | "z";
2508
3916
  frameThickness: number;
@@ -2510,11 +3918,10 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2510
3918
  curbHeight: number;
2511
3919
  cutoutOffset: number;
2512
3920
  skylightType: "flat" | "sliding" | "opening" | "walk-on" | "lantern";
2513
- glassThickness: number;
2514
3921
  lanternHeight: number;
2515
3922
  lanternTopScale: number;
2516
3923
  openingAngle: number;
2517
- openingSide: "top" | "right" | "left" | "bottom";
3924
+ openingSide: "left" | "right" | "top" | "bottom";
2518
3925
  motorHousing: boolean;
2519
3926
  slideFraction: number;
2520
3927
  trackWidth: number;
@@ -2529,6 +3936,17 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2529
3936
  fov?: number | undefined;
2530
3937
  zoom?: number | undefined;
2531
3938
  } | undefined;
3939
+ provenance?: {
3940
+ refs: {
3941
+ id: string;
3942
+ ns?: string | undefined;
3943
+ role?: "primary" | "piece" | "absorbed" | "alias" | "derived" | undefined;
3944
+ }[];
3945
+ lineage?: {
3946
+ op: "import" | "split" | "merge" | "duplicate" | "convert" | "promote" | "make-independent" | "attach";
3947
+ fromIds: string[];
3948
+ } | undefined;
3949
+ } | undefined;
2532
3950
  material?: {
2533
3951
  id?: string | undefined;
2534
3952
  preset?: "custom" | "white" | "brick" | "concrete" | "wood" | "glass" | "metal" | "plaster" | "tile" | "marble" | undefined;
@@ -2574,10 +3992,10 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2574
3992
  parentId: string | null;
2575
3993
  visible: boolean;
2576
3994
  metadata: Record<string, unknown>;
3995
+ depth: number;
2577
3996
  rotation: number;
2578
3997
  children: `window_${string}`[];
2579
3998
  width: number;
2580
- depth: number;
2581
3999
  height: number;
2582
4000
  roofType: "flat" | "hip" | "gable" | "shed" | "gambrel" | "dutch" | "mansard" | "conical";
2583
4001
  roofHeight: number;
@@ -2607,6 +4025,17 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2607
4025
  fov?: number | undefined;
2608
4026
  zoom?: number | undefined;
2609
4027
  } | undefined;
4028
+ provenance?: {
4029
+ refs: {
4030
+ id: string;
4031
+ ns?: string | undefined;
4032
+ role?: "primary" | "piece" | "absorbed" | "alias" | "derived" | undefined;
4033
+ }[];
4034
+ lineage?: {
4035
+ op: "import" | "split" | "merge" | "duplicate" | "convert" | "promote" | "make-independent" | "attach";
4036
+ fromIds: string[];
4037
+ } | undefined;
4038
+ } | undefined;
2610
4039
  material?: {
2611
4040
  id?: string | undefined;
2612
4041
  preset?: "custom" | "white" | "brick" | "concrete" | "wood" | "glass" | "metal" | "plaster" | "tile" | "marble" | undefined;
@@ -2682,14 +4111,14 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2682
4111
  sideMaterialPreset?: string | undefined;
2683
4112
  } | {
2684
4113
  object: "node";
4114
+ length: number;
2685
4115
  id: `downspout_${string}`;
2686
4116
  parentId: string | null;
2687
4117
  visible: boolean;
2688
4118
  metadata: Record<string, unknown>;
2689
- length: number;
4119
+ shape: "auto" | "round" | "rect";
2690
4120
  materialPreset: string;
2691
4121
  diameter: number;
2692
- shape: "round" | "auto" | "rect";
2693
4122
  standoff: number;
2694
4123
  strapStyle: "none" | "band";
2695
4124
  strapSpacing: number;
@@ -2703,6 +4132,17 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2703
4132
  fov?: number | undefined;
2704
4133
  zoom?: number | undefined;
2705
4134
  } | undefined;
4135
+ provenance?: {
4136
+ refs: {
4137
+ id: string;
4138
+ ns?: string | undefined;
4139
+ role?: "primary" | "piece" | "absorbed" | "alias" | "derived" | undefined;
4140
+ }[];
4141
+ lineage?: {
4142
+ op: "import" | "split" | "merge" | "duplicate" | "convert" | "promote" | "make-independent" | "attach";
4143
+ fromIds: string[];
4144
+ } | undefined;
4145
+ } | undefined;
2706
4146
  slots?: Record<string, string> | undefined;
2707
4147
  material?: {
2708
4148
  id?: string | undefined;
@@ -2730,17 +4170,17 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2730
4170
  parentId: string | null;
2731
4171
  visible: boolean;
2732
4172
  metadata: Record<string, unknown>;
4173
+ shape: "round" | "rect" | "oval";
2733
4174
  path: [number, number, number][];
2734
4175
  width: number;
2735
4176
  height: number;
2736
4177
  diameter: number;
2737
- shape: "round" | "rect" | "oval";
2738
4178
  roll: number;
2739
4179
  ductMaterial: "spiral" | "sheet-metal" | "flex" | "duct-board";
2740
4180
  seamDetail: boolean;
2741
4181
  insulated: boolean;
2742
4182
  insulationR: number;
2743
- system: "supply" | "return";
4183
+ system: "return" | "supply";
2744
4184
  type: "duct-segment";
2745
4185
  name?: string | undefined;
2746
4186
  camera?: {
@@ -2750,6 +4190,17 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2750
4190
  fov?: number | undefined;
2751
4191
  zoom?: number | undefined;
2752
4192
  } | undefined;
4193
+ provenance?: {
4194
+ refs: {
4195
+ id: string;
4196
+ ns?: string | undefined;
4197
+ role?: "primary" | "piece" | "absorbed" | "alias" | "derived" | undefined;
4198
+ }[];
4199
+ lineage?: {
4200
+ op: "import" | "split" | "merge" | "duplicate" | "convert" | "promote" | "make-independent" | "attach";
4201
+ fromIds: string[];
4202
+ } | undefined;
4203
+ } | undefined;
2753
4204
  slots?: Record<string, string> | undefined;
2754
4205
  autoHangers?: boolean | undefined;
2755
4206
  hangerOverrides?: Record<string, {
@@ -2774,14 +4225,14 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2774
4225
  parentId: string | null;
2775
4226
  visible: boolean;
2776
4227
  metadata: Record<string, unknown>;
4228
+ shape: "round" | "rect" | "oval";
2777
4229
  rotation: [number, number, number];
2778
4230
  width: number;
2779
4231
  height: number;
2780
4232
  angle: number;
2781
4233
  diameter: number;
2782
- shape: "round" | "rect" | "oval";
2783
4234
  ductMaterial: "sheet-metal" | "flex" | "duct-board";
2784
- system: "supply" | "return";
4235
+ system: "return" | "supply";
2785
4236
  fittingType: "elbow" | "tee" | "cross" | "reducer" | "transition" | "end-cap" | "damper" | "access-panel" | "coupling";
2786
4237
  shape2: "round" | "rect" | "oval";
2787
4238
  width2: number;
@@ -2800,6 +4251,17 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2800
4251
  fov?: number | undefined;
2801
4252
  zoom?: number | undefined;
2802
4253
  } | undefined;
4254
+ provenance?: {
4255
+ refs: {
4256
+ id: string;
4257
+ ns?: string | undefined;
4258
+ role?: "primary" | "piece" | "absorbed" | "alias" | "derived" | undefined;
4259
+ }[];
4260
+ lineage?: {
4261
+ op: "import" | "split" | "merge" | "duplicate" | "convert" | "promote" | "make-independent" | "attach";
4262
+ fromIds: string[];
4263
+ } | undefined;
4264
+ } | undefined;
2803
4265
  slots?: Record<string, string> | undefined;
2804
4266
  inletShape?: "round" | "rect" | "oval" | undefined;
2805
4267
  outletShape?: "round" | "rect" | "oval" | undefined;
@@ -2810,11 +4272,11 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2810
4272
  parentId: string | null;
2811
4273
  visible: boolean;
2812
4274
  metadata: Record<string, unknown>;
4275
+ depth: number;
2813
4276
  rotation: number;
2814
4277
  width: number;
2815
- depth: number;
2816
- terminalType: "supply-register" | "diffuser" | "return-grille";
2817
4278
  mount: "wall" | "ceiling" | "floor";
4279
+ terminalType: "supply-register" | "diffuser" | "return-grille";
2818
4280
  collarShape: "round" | "rect" | "oval";
2819
4281
  collarDiameter: number;
2820
4282
  collarWidth: number;
@@ -2828,6 +4290,17 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2828
4290
  fov?: number | undefined;
2829
4291
  zoom?: number | undefined;
2830
4292
  } | undefined;
4293
+ provenance?: {
4294
+ refs: {
4295
+ id: string;
4296
+ ns?: string | undefined;
4297
+ role?: "primary" | "piece" | "absorbed" | "alias" | "derived" | undefined;
4298
+ }[];
4299
+ lineage?: {
4300
+ op: "import" | "split" | "merge" | "duplicate" | "convert" | "promote" | "make-independent" | "attach";
4301
+ fromIds: string[];
4302
+ } | undefined;
4303
+ } | undefined;
2831
4304
  supportSlabId?: string | undefined;
2832
4305
  } | {
2833
4306
  object: "node";
@@ -2836,9 +4309,9 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2836
4309
  parentId: string | null;
2837
4310
  visible: boolean;
2838
4311
  metadata: Record<string, unknown>;
4312
+ depth: number;
2839
4313
  rotation: number;
2840
4314
  width: number;
2841
- depth: number;
2842
4315
  height: number;
2843
4316
  equipmentType: "furnace" | "air-handler" | "condenser";
2844
4317
  supplyShape: "round" | "rect" | "oval";
@@ -2858,6 +4331,17 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2858
4331
  fov?: number | undefined;
2859
4332
  zoom?: number | undefined;
2860
4333
  } | undefined;
4334
+ provenance?: {
4335
+ refs: {
4336
+ id: string;
4337
+ ns?: string | undefined;
4338
+ role?: "primary" | "piece" | "absorbed" | "alias" | "derived" | undefined;
4339
+ }[];
4340
+ lineage?: {
4341
+ op: "import" | "split" | "merge" | "duplicate" | "convert" | "promote" | "make-independent" | "attach";
4342
+ fromIds: string[];
4343
+ } | undefined;
4344
+ } | undefined;
2861
4345
  supportSlabId?: string | undefined;
2862
4346
  } | {
2863
4347
  object: "node";
@@ -2878,6 +4362,17 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2878
4362
  fov?: number | undefined;
2879
4363
  zoom?: number | undefined;
2880
4364
  } | undefined;
4365
+ provenance?: {
4366
+ refs: {
4367
+ id: string;
4368
+ ns?: string | undefined;
4369
+ role?: "primary" | "piece" | "absorbed" | "alias" | "derived" | undefined;
4370
+ }[];
4371
+ lineage?: {
4372
+ op: "import" | "split" | "merge" | "duplicate" | "convert" | "promote" | "make-independent" | "attach";
4373
+ fromIds: string[];
4374
+ } | undefined;
4375
+ } | undefined;
2881
4376
  } | {
2882
4377
  object: "node";
2883
4378
  id: `liquid-line_${string}`;
@@ -2895,6 +4390,17 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2895
4390
  fov?: number | undefined;
2896
4391
  zoom?: number | undefined;
2897
4392
  } | undefined;
4393
+ provenance?: {
4394
+ refs: {
4395
+ id: string;
4396
+ ns?: string | undefined;
4397
+ role?: "primary" | "piece" | "absorbed" | "alias" | "derived" | undefined;
4398
+ }[];
4399
+ lineage?: {
4400
+ op: "import" | "split" | "merge" | "duplicate" | "convert" | "promote" | "make-independent" | "attach";
4401
+ fromIds: string[];
4402
+ } | undefined;
4403
+ } | undefined;
2898
4404
  } | {
2899
4405
  object: "node";
2900
4406
  id: `pipe-segment_${string}`;
@@ -2914,6 +4420,17 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2914
4420
  fov?: number | undefined;
2915
4421
  zoom?: number | undefined;
2916
4422
  } | undefined;
4423
+ provenance?: {
4424
+ refs: {
4425
+ id: string;
4426
+ ns?: string | undefined;
4427
+ role?: "primary" | "piece" | "absorbed" | "alias" | "derived" | undefined;
4428
+ }[];
4429
+ lineage?: {
4430
+ op: "import" | "split" | "merge" | "duplicate" | "convert" | "promote" | "make-independent" | "attach";
4431
+ fromIds: string[];
4432
+ } | undefined;
4433
+ } | undefined;
2917
4434
  autoHangers?: boolean | undefined;
2918
4435
  hangerOverrides?: Record<string, {
2919
4436
  fraction?: number | undefined;
@@ -2954,6 +4471,17 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2954
4471
  fov?: number | undefined;
2955
4472
  zoom?: number | undefined;
2956
4473
  } | undefined;
4474
+ provenance?: {
4475
+ refs: {
4476
+ id: string;
4477
+ ns?: string | undefined;
4478
+ role?: "primary" | "piece" | "absorbed" | "alias" | "derived" | undefined;
4479
+ }[];
4480
+ lineage?: {
4481
+ op: "import" | "split" | "merge" | "duplicate" | "convert" | "promote" | "make-independent" | "attach";
4482
+ fromIds: string[];
4483
+ } | undefined;
4484
+ } | undefined;
2957
4485
  } | {
2958
4486
  object: "node";
2959
4487
  position: [number, number, number];
@@ -2974,27 +4502,18 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2974
4502
  fov?: number | undefined;
2975
4503
  zoom?: number | undefined;
2976
4504
  } | undefined;
4505
+ provenance?: {
4506
+ refs: {
4507
+ id: string;
4508
+ ns?: string | undefined;
4509
+ role?: "primary" | "piece" | "absorbed" | "alias" | "derived" | undefined;
4510
+ }[];
4511
+ lineage?: {
4512
+ op: "import" | "split" | "merge" | "duplicate" | "convert" | "promote" | "make-independent" | "attach";
4513
+ fromIds: string[];
4514
+ } | undefined;
4515
+ } | undefined;
2977
4516
  }>): void;
2978
- /**
2979
- * The sculpted ground moved: every node the terrain *supports* must re-elevate.
2980
- *
2981
- * The other rules in this file gate on a footprint overlapping the changed
2982
- * surface. Terrain has no such gate — a stroke rewrites a field that spans the
2983
- * whole lot, and the resolver samples it at each node's own XZ — so the sweep is
2984
- * every floor-placed node on a storey at grade, plus every wall whose explicit
2985
- * terrain infill samples that field. During a live stroke it fires per dab, but
2986
- * dirty ids coalesce in a Set until the frame systems consume them; the scene
2987
- * graph itself is still written only once on commit.
2988
- *
2989
- * Without this a sculpt silently desyncs the scene from its own ground. Nothing
2990
- * re-runs `getFloorPlacedElevation`, so the React commit that rebinds a node
2991
- * group's base Y leaves it there: a column that was resting on a hillside drops
2992
- * to the datum and stays buried under the terrain it used to stand on.
2993
- *
2994
- * Gated on `isLevelAtSiteDatum` — the same predicate `terrainSupportLift` uses to
2995
- * decide whether it drapes at all, so the two cannot disagree about which storey
2996
- * is on the ground.
2997
- */
2998
4517
  export declare function markTerrainSupportDependents(nodes: Record<string, AnyNode>, markDirty: (id: AnyNodeId) => void): void;
2999
4518
  /**
3000
4519
  * A slab on `slabLevelId` was created/deleted or changed shape/placement: