@pascal-app/core 1.0.3 → 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 (1098) 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 +1612 -127
  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 +80 -13
  360. package/dist/index.d.ts.map +1 -1
  361. package/dist/index.js +75 -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/object-cuts.d.ts +11 -0
  458. package/dist/lib/object-cuts.d.ts.map +1 -0
  459. package/dist/lib/object-cuts.js +63 -0
  460. package/dist/lib/opening-floor-datum.d.ts +24 -0
  461. package/dist/lib/opening-floor-datum.d.ts.map +1 -0
  462. package/dist/lib/opening-floor-datum.js +145 -0
  463. package/dist/lib/own-floor-intent.d.ts +15 -0
  464. package/dist/lib/own-floor-intent.d.ts.map +1 -0
  465. package/dist/lib/own-floor-intent.js +201 -0
  466. package/dist/lib/plate-reference.d.ts +3 -0
  467. package/dist/lib/plate-reference.d.ts.map +1 -0
  468. package/dist/lib/plate-reference.js +91 -0
  469. package/dist/lib/plate-surface.d.ts +120 -0
  470. package/dist/lib/plate-surface.d.ts.map +1 -0
  471. package/dist/lib/plate-surface.js +725 -0
  472. package/dist/lib/polygon-boolean.d.ts +17 -0
  473. package/dist/lib/polygon-boolean.d.ts.map +1 -0
  474. package/dist/lib/polygon-boolean.js +195 -0
  475. package/dist/lib/polygon-label.d.ts +7 -0
  476. package/dist/lib/polygon-label.d.ts.map +1 -0
  477. package/dist/lib/polygon-label.js +94 -0
  478. package/dist/lib/room-drawn-floor.d.ts +29 -0
  479. package/dist/lib/room-drawn-floor.d.ts.map +1 -0
  480. package/dist/lib/room-drawn-floor.js +88 -0
  481. package/dist/lib/room-floor-choices.d.ts +11 -0
  482. package/dist/lib/room-floor-choices.d.ts.map +1 -0
  483. package/dist/lib/room-floor-choices.js +60 -0
  484. package/dist/lib/room-floor-feasibility.d.ts +25 -0
  485. package/dist/lib/room-floor-feasibility.d.ts.map +1 -0
  486. package/dist/lib/room-floor-feasibility.js +293 -0
  487. package/dist/lib/room-floor-plate.d.ts +3 -0
  488. package/dist/lib/room-floor-plate.d.ts.map +1 -0
  489. package/dist/lib/room-floor-plate.js +4 -0
  490. package/dist/lib/room-graph.d.ts +79 -0
  491. package/dist/lib/room-graph.d.ts.map +1 -0
  492. package/dist/lib/room-graph.js +1265 -0
  493. package/dist/lib/room-name.d.ts +10 -0
  494. package/dist/lib/room-name.d.ts.map +1 -0
  495. package/dist/lib/room-name.js +22 -0
  496. package/dist/lib/room-topology-index.d.ts +53 -5
  497. package/dist/lib/room-topology-index.d.ts.map +1 -1
  498. package/dist/lib/room-topology-index.js +176 -30
  499. package/dist/lib/room-vertical-placement.d.ts +12 -0
  500. package/dist/lib/room-vertical-placement.d.ts.map +1 -0
  501. package/dist/lib/room-vertical-placement.js +28 -0
  502. package/dist/lib/room-zone-adoption.d.ts +74 -0
  503. package/dist/lib/room-zone-adoption.d.ts.map +1 -0
  504. package/dist/lib/room-zone-adoption.js +150 -0
  505. package/dist/lib/setback-envelope.d.ts +73 -0
  506. package/dist/lib/setback-envelope.d.ts.map +1 -0
  507. package/dist/lib/setback-envelope.js +506 -0
  508. package/dist/lib/slab-polygon.d.ts.map +1 -1
  509. package/dist/lib/slab-polygon.js +33 -12
  510. package/dist/lib/slots.d.ts +20 -0
  511. package/dist/lib/slots.d.ts.map +1 -1
  512. package/dist/lib/slots.js +44 -0
  513. package/dist/lib/space-detection.d.ts +14 -94
  514. package/dist/lib/space-detection.d.ts.map +1 -1
  515. package/dist/lib/space-detection.js +244 -1616
  516. package/dist/lib/structure-commit.d.ts +38 -0
  517. package/dist/lib/structure-commit.d.ts.map +1 -0
  518. package/dist/lib/structure-commit.js +52 -0
  519. package/dist/lib/structure-kernel.d.ts +66 -0
  520. package/dist/lib/structure-kernel.d.ts.map +1 -0
  521. package/dist/lib/structure-kernel.js +735 -0
  522. package/dist/lib/structure-reconcile.d.ts +15 -0
  523. package/dist/lib/structure-reconcile.d.ts.map +1 -0
  524. package/dist/lib/structure-reconcile.js +218 -0
  525. package/dist/lib/terrain-contours.d.ts +29 -0
  526. package/dist/lib/terrain-contours.d.ts.map +1 -0
  527. package/dist/lib/terrain-contours.js +199 -0
  528. package/dist/lib/terrain-source-persisted.d.ts +42 -0
  529. package/dist/lib/terrain-source-persisted.d.ts.map +1 -0
  530. package/dist/lib/terrain-source-persisted.js +68 -0
  531. package/dist/lib/terrain-source.d.ts +2 -40
  532. package/dist/lib/terrain-source.d.ts.map +1 -1
  533. package/dist/lib/terrain-source.js +2 -68
  534. package/dist/lib/terrain-support-query.d.ts +83 -0
  535. package/dist/lib/terrain-support-query.d.ts.map +1 -0
  536. package/dist/lib/terrain-support-query.js +187 -0
  537. package/dist/lib/terrain-support.d.ts +1 -77
  538. package/dist/lib/terrain-support.d.ts.map +1 -1
  539. package/dist/lib/terrain-support.js +3 -181
  540. package/dist/lib/unit-containment.js +2 -2
  541. package/dist/lib/unit-report.d.ts.map +1 -1
  542. package/dist/lib/unit-report.js +5 -4
  543. package/dist/lib/zone-colors.d.ts +11 -0
  544. package/dist/lib/zone-colors.d.ts.map +1 -0
  545. package/dist/lib/zone-colors.js +32 -0
  546. package/dist/lib/zone-quantities.d.ts.map +1 -1
  547. package/dist/lib/zone-quantities.js +113 -223
  548. package/dist/material-library.d.ts +9 -1
  549. package/dist/material-library.d.ts.map +1 -1
  550. package/dist/material-library.js +550 -1
  551. package/dist/node-slots/block.d.ts +7 -0
  552. package/dist/node-slots/block.d.ts.map +1 -0
  553. package/dist/node-slots/block.js +27 -0
  554. package/dist/node-slots/cabinet.d.ts +4 -0
  555. package/dist/node-slots/cabinet.d.ts.map +1 -0
  556. package/dist/node-slots/cabinet.js +24 -0
  557. package/dist/node-slots/ceiling.d.ts +6 -0
  558. package/dist/node-slots/ceiling.d.ts.map +1 -0
  559. package/dist/node-slots/ceiling.js +7 -0
  560. package/dist/node-slots/column.d.ts +9 -0
  561. package/dist/node-slots/column.d.ts.map +1 -0
  562. package/dist/node-slots/column.js +24 -0
  563. package/dist/node-slots/door.d.ts +9 -0
  564. package/dist/node-slots/door.d.ts.map +1 -0
  565. package/dist/node-slots/door.js +20 -0
  566. package/dist/node-slots/duct.d.ts +5 -0
  567. package/dist/node-slots/duct.d.ts.map +1 -0
  568. package/dist/node-slots/duct.js +5 -0
  569. package/dist/node-slots/elevator.d.ts +9 -0
  570. package/dist/node-slots/elevator.d.ts.map +1 -0
  571. package/dist/node-slots/elevator.js +17 -0
  572. package/dist/node-slots/fence.d.ts +10 -0
  573. package/dist/node-slots/fence.d.ts.map +1 -0
  574. package/dist/node-slots/fence.js +23 -0
  575. package/dist/node-slots/index.d.ts +25 -0
  576. package/dist/node-slots/index.d.ts.map +1 -0
  577. package/dist/node-slots/index.js +92 -0
  578. package/dist/node-slots/lean-to-extension.d.ts +5 -0
  579. package/dist/node-slots/lean-to-extension.d.ts.map +1 -0
  580. package/dist/node-slots/lean-to-extension.js +15 -0
  581. package/dist/node-slots/procedural-item.d.ts +4 -0
  582. package/dist/node-slots/procedural-item.d.ts.map +1 -0
  583. package/dist/node-slots/procedural-item.js +3 -0
  584. package/dist/node-slots/roof-accessories.d.ts +9 -0
  585. package/dist/node-slots/roof-accessories.d.ts.map +1 -0
  586. package/dist/node-slots/roof-accessories.js +34 -0
  587. package/dist/node-slots/shelf.d.ts +9 -0
  588. package/dist/node-slots/shelf.d.ts.map +1 -0
  589. package/dist/node-slots/shelf.js +30 -0
  590. package/dist/node-slots/slab.d.ts +7 -0
  591. package/dist/node-slots/slab.d.ts.map +1 -0
  592. package/dist/node-slots/slab.js +21 -0
  593. package/dist/node-slots/stair.d.ts +8 -0
  594. package/dist/node-slots/stair.d.ts.map +1 -0
  595. package/dist/node-slots/stair.js +17 -0
  596. package/dist/node-slots/wall.d.ts +12 -0
  597. package/dist/node-slots/wall.d.ts.map +1 -0
  598. package/dist/node-slots/wall.js +55 -0
  599. package/dist/node-slots/window.d.ts +5 -0
  600. package/dist/node-slots/window.d.ts.map +1 -0
  601. package/dist/node-slots/window.js +11 -0
  602. package/dist/procedural-items/design-placement.d.ts +49 -0
  603. package/dist/procedural-items/design-placement.d.ts.map +1 -0
  604. package/dist/procedural-items/design-placement.js +129 -0
  605. package/dist/procedural-items/design.d.ts +261 -0
  606. package/dist/procedural-items/design.d.ts.map +1 -0
  607. package/dist/procedural-items/design.js +707 -0
  608. package/dist/procedural-items/fixtures.d.ts +464 -24
  609. package/dist/procedural-items/fixtures.d.ts.map +1 -1
  610. package/dist/procedural-items/index.d.ts +5 -0
  611. package/dist/procedural-items/index.d.ts.map +1 -1
  612. package/dist/procedural-items/index.js +5 -0
  613. package/dist/procedural-items/integration.d.ts +127 -6
  614. package/dist/procedural-items/integration.d.ts.map +1 -1
  615. package/dist/procedural-items/joints.d.ts +56 -0
  616. package/dist/procedural-items/joints.d.ts.map +1 -0
  617. package/dist/procedural-items/joints.js +251 -0
  618. package/dist/procedural-items/library-colors.d.ts +12 -0
  619. package/dist/procedural-items/library-colors.d.ts.map +1 -1
  620. package/dist/procedural-items/library-colors.js +37 -3
  621. package/dist/procedural-items/motion-controller.d.ts +29 -0
  622. package/dist/procedural-items/motion-controller.d.ts.map +1 -0
  623. package/dist/procedural-items/motion-controller.js +130 -0
  624. package/dist/procedural-items/node.d.ts +490 -24
  625. package/dist/procedural-items/node.d.ts.map +1 -1
  626. package/dist/procedural-items/query.d.ts +18 -1
  627. package/dist/procedural-items/query.d.ts.map +1 -1
  628. package/dist/procedural-items/query.js +78 -39
  629. package/dist/procedural-items/recipe.d.ts +258 -14
  630. package/dist/procedural-items/recipe.d.ts.map +1 -1
  631. package/dist/procedural-items/recipe.js +933 -61
  632. package/dist/procedural-items/section.d.ts +27 -0
  633. package/dist/procedural-items/section.d.ts.map +1 -0
  634. package/dist/procedural-items/section.js +237 -0
  635. package/dist/procedural-items/spatial.d.ts +21 -0
  636. package/dist/procedural-items/spatial.d.ts.map +1 -1
  637. package/dist/procedural-items/spatial.js +90 -0
  638. package/dist/registry/handles.d.ts +2 -0
  639. package/dist/registry/handles.d.ts.map +1 -1
  640. package/dist/registry/index.d.ts +6 -4
  641. package/dist/registry/index.d.ts.map +1 -1
  642. package/dist/registry/index.js +4 -2
  643. package/dist/registry/mechanism.d.ts +9 -0
  644. package/dist/registry/mechanism.d.ts.map +1 -0
  645. package/dist/registry/mechanism.js +21 -0
  646. package/dist/registry/registry.d.ts +6 -3
  647. package/dist/registry/registry.d.ts.map +1 -1
  648. package/dist/registry/registry.js +59 -22
  649. package/dist/registry/scene-api.d.ts +20 -0
  650. package/dist/registry/scene-api.d.ts.map +1 -1
  651. package/dist/registry/scene-api.js +26 -13
  652. package/dist/registry/subtree.d.ts +8 -0
  653. package/dist/registry/subtree.d.ts.map +1 -1
  654. package/dist/registry/subtree.js +53 -0
  655. package/dist/registry/types.d.ts +340 -11
  656. package/dist/registry/types.d.ts.map +1 -1
  657. package/dist/schema/__fixtures__/node-fixtures.d.ts.map +1 -1
  658. package/dist/schema/__fixtures__/node-fixtures.js +2 -0
  659. package/dist/schema/assembly.d.ts +153 -0
  660. package/dist/schema/assembly.d.ts.map +1 -0
  661. package/dist/schema/assembly.js +155 -0
  662. package/dist/schema/asset-url.d.ts +2 -1
  663. package/dist/schema/asset-url.d.ts.map +1 -1
  664. package/dist/schema/asset-url.js +5 -2
  665. package/dist/schema/base.d.ts +26 -0
  666. package/dist/schema/base.d.ts.map +1 -1
  667. package/dist/schema/base.js +2 -0
  668. package/dist/schema/collection-templates.d.ts +46 -0
  669. package/dist/schema/collection-templates.d.ts.map +1 -0
  670. package/dist/schema/collection-templates.js +14 -0
  671. package/dist/schema/collections.d.ts +7 -0
  672. package/dist/schema/collections.d.ts.map +1 -1
  673. package/dist/schema/cut.d.ts +29 -0
  674. package/dist/schema/cut.d.ts.map +1 -0
  675. package/dist/schema/cut.js +50 -0
  676. package/dist/schema/geometry-metadata.d.ts +51 -0
  677. package/dist/schema/geometry-metadata.d.ts.map +1 -0
  678. package/dist/schema/geometry-metadata.js +57 -0
  679. package/dist/schema/geometry-source.d.ts +250 -0
  680. package/dist/schema/geometry-source.d.ts.map +1 -0
  681. package/dist/schema/geometry-source.js +130 -0
  682. package/dist/schema/index.d.ts +19 -7
  683. package/dist/schema/index.d.ts.map +1 -1
  684. package/dist/schema/index.js +21 -5
  685. package/dist/schema/nodes/block.d.ts +26 -0
  686. package/dist/schema/nodes/block.d.ts.map +1 -1
  687. package/dist/schema/nodes/block.js +1 -1
  688. package/dist/schema/nodes/box-vent.d.ts +26 -0
  689. package/dist/schema/nodes/box-vent.d.ts.map +1 -1
  690. package/dist/schema/nodes/building.d.ts +26 -0
  691. package/dist/schema/nodes/building.d.ts.map +1 -1
  692. package/dist/schema/nodes/cabinet.d.ts +61 -9
  693. package/dist/schema/nodes/cabinet.d.ts.map +1 -1
  694. package/dist/schema/nodes/ceiling.d.ts +37 -0
  695. package/dist/schema/nodes/ceiling.d.ts.map +1 -1
  696. package/dist/schema/nodes/ceiling.js +8 -0
  697. package/dist/schema/nodes/chimney.d.ts +26 -0
  698. package/dist/schema/nodes/chimney.d.ts.map +1 -1
  699. package/dist/schema/nodes/column.d.ts +126 -0
  700. package/dist/schema/nodes/column.d.ts.map +1 -1
  701. package/dist/schema/nodes/column.js +2 -0
  702. package/dist/schema/nodes/construction-dimension.d.ts +26 -0
  703. package/dist/schema/nodes/construction-dimension.d.ts.map +1 -1
  704. package/dist/schema/nodes/cupola.d.ts +26 -0
  705. package/dist/schema/nodes/cupola.d.ts.map +1 -1
  706. package/dist/schema/nodes/curtain-wall.d.ts +5 -5
  707. package/dist/schema/nodes/door.d.ts +139 -20
  708. package/dist/schema/nodes/door.d.ts.map +1 -1
  709. package/dist/schema/nodes/door.js +18 -33
  710. package/dist/schema/nodes/dormer.d.ts +28 -2
  711. package/dist/schema/nodes/dormer.d.ts.map +1 -1
  712. package/dist/schema/nodes/downspout.d.ts +27 -1
  713. package/dist/schema/nodes/downspout.d.ts.map +1 -1
  714. package/dist/schema/nodes/duct-fitting.d.ts +27 -1
  715. package/dist/schema/nodes/duct-fitting.d.ts.map +1 -1
  716. package/dist/schema/nodes/duct-segment.d.ts +27 -1
  717. package/dist/schema/nodes/duct-segment.d.ts.map +1 -1
  718. package/dist/schema/nodes/duct-terminal.d.ts +26 -0
  719. package/dist/schema/nodes/duct-terminal.d.ts.map +1 -1
  720. package/dist/schema/nodes/elevator.d.ts +26 -0
  721. package/dist/schema/nodes/elevator.d.ts.map +1 -1
  722. package/dist/schema/nodes/eyebrow-vent.d.ts +26 -0
  723. package/dist/schema/nodes/eyebrow-vent.d.ts.map +1 -1
  724. package/dist/schema/nodes/fence-feature.d.ts +141 -0
  725. package/dist/schema/nodes/fence-feature.d.ts.map +1 -0
  726. package/dist/schema/nodes/fence-feature.js +21 -0
  727. package/dist/schema/nodes/fence.d.ts +186 -0
  728. package/dist/schema/nodes/fence.d.ts.map +1 -1
  729. package/dist/schema/nodes/fence.js +92 -7
  730. package/dist/schema/nodes/floor-opening.d.ts +61 -0
  731. package/dist/schema/nodes/floor-opening.d.ts.map +1 -0
  732. package/dist/schema/nodes/floor-opening.js +17 -0
  733. package/dist/schema/nodes/guide.d.ts +26 -0
  734. package/dist/schema/nodes/guide.d.ts.map +1 -1
  735. package/dist/schema/nodes/gutter.d.ts +26 -0
  736. package/dist/schema/nodes/gutter.d.ts.map +1 -1
  737. package/dist/schema/nodes/hvac-equipment.d.ts +26 -0
  738. package/dist/schema/nodes/hvac-equipment.d.ts.map +1 -1
  739. package/dist/schema/nodes/imported-mesh.d.ts +26 -0
  740. package/dist/schema/nodes/imported-mesh.d.ts.map +1 -1
  741. package/dist/schema/nodes/item.d.ts +153 -2
  742. package/dist/schema/nodes/item.d.ts.map +1 -1
  743. package/dist/schema/nodes/item.js +13 -0
  744. package/dist/schema/nodes/lean-to-extension.d.ts +26 -0
  745. package/dist/schema/nodes/lean-to-extension.d.ts.map +1 -1
  746. package/dist/schema/nodes/level.d.ts +27 -1
  747. package/dist/schema/nodes/level.d.ts.map +1 -1
  748. package/dist/schema/nodes/lineset.d.ts +26 -0
  749. package/dist/schema/nodes/lineset.d.ts.map +1 -1
  750. package/dist/schema/nodes/liquid-line.d.ts +26 -0
  751. package/dist/schema/nodes/liquid-line.d.ts.map +1 -1
  752. package/dist/schema/nodes/measurement.d.ts +26 -0
  753. package/dist/schema/nodes/measurement.d.ts.map +1 -1
  754. package/dist/schema/nodes/opening-types.d.ts +41 -0
  755. package/dist/schema/nodes/opening-types.d.ts.map +1 -0
  756. package/dist/schema/nodes/opening-types.js +48 -0
  757. package/dist/schema/nodes/pipe-fitting.d.ts +26 -0
  758. package/dist/schema/nodes/pipe-fitting.d.ts.map +1 -1
  759. package/dist/schema/nodes/pipe-segment.d.ts +26 -0
  760. package/dist/schema/nodes/pipe-segment.d.ts.map +1 -1
  761. package/dist/schema/nodes/pipe-trap.d.ts +26 -0
  762. package/dist/schema/nodes/pipe-trap.d.ts.map +1 -1
  763. package/dist/schema/nodes/ridge-vent.d.ts +26 -0
  764. package/dist/schema/nodes/ridge-vent.d.ts.map +1 -1
  765. package/dist/schema/nodes/roof-segment-walls.d.ts.map +1 -1
  766. package/dist/schema/nodes/roof-segment-walls.js +2 -1
  767. package/dist/schema/nodes/roof-segment.d.ts +30 -2
  768. package/dist/schema/nodes/roof-segment.d.ts.map +1 -1
  769. package/dist/schema/nodes/roof-segment.js +9 -0
  770. package/dist/schema/nodes/roof.d.ts +101 -0
  771. package/dist/schema/nodes/roof.d.ts.map +1 -1
  772. package/dist/schema/nodes/roof.js +6 -0
  773. package/dist/schema/nodes/scan.d.ts +26 -0
  774. package/dist/schema/nodes/scan.d.ts.map +1 -1
  775. package/dist/schema/nodes/separator.d.ts +50 -0
  776. package/dist/schema/nodes/separator.d.ts.map +1 -0
  777. package/dist/schema/nodes/separator.js +8 -0
  778. package/dist/schema/nodes/shelf.d.ts +26 -0
  779. package/dist/schema/nodes/shelf.d.ts.map +1 -1
  780. package/dist/schema/nodes/site.d.ts +192 -0
  781. package/dist/schema/nodes/site.d.ts.map +1 -1
  782. package/dist/schema/nodes/site.js +178 -1
  783. package/dist/schema/nodes/skylight.d.ts +30 -4
  784. package/dist/schema/nodes/skylight.d.ts.map +1 -1
  785. package/dist/schema/nodes/slab.d.ts +84 -0
  786. package/dist/schema/nodes/slab.d.ts.map +1 -1
  787. package/dist/schema/nodes/slab.js +37 -2
  788. package/dist/schema/nodes/solar-panel.d.ts +26 -0
  789. package/dist/schema/nodes/solar-panel.d.ts.map +1 -1
  790. package/dist/schema/nodes/spawn.d.ts +26 -0
  791. package/dist/schema/nodes/spawn.d.ts.map +1 -1
  792. package/dist/schema/nodes/stair-construction.d.ts +21 -0
  793. package/dist/schema/nodes/stair-construction.d.ts.map +1 -0
  794. package/dist/schema/nodes/stair-construction.js +13 -0
  795. package/dist/schema/nodes/stair-design-targets.d.ts +9 -0
  796. package/dist/schema/nodes/stair-design-targets.d.ts.map +1 -0
  797. package/dist/schema/nodes/stair-design-targets.js +7 -0
  798. package/dist/schema/nodes/stair-segment.d.ts +72 -4
  799. package/dist/schema/nodes/stair-segment.d.ts.map +1 -1
  800. package/dist/schema/nodes/stair-segment.js +13 -0
  801. package/dist/schema/nodes/stair.d.ts +119 -2
  802. package/dist/schema/nodes/stair.d.ts.map +1 -1
  803. package/dist/schema/nodes/stair.js +59 -2
  804. package/dist/schema/nodes/structural-grid.d.ts +26 -0
  805. package/dist/schema/nodes/structural-grid.d.ts.map +1 -1
  806. package/dist/schema/nodes/surface-hole-metadata.d.ts +3 -0
  807. package/dist/schema/nodes/surface-hole-metadata.d.ts.map +1 -1
  808. package/dist/schema/nodes/surface-hole-metadata.js +2 -1
  809. package/dist/schema/nodes/surface-paint-region.d.ts +14 -0
  810. package/dist/schema/nodes/surface-paint-region.d.ts.map +1 -0
  811. package/dist/schema/nodes/surface-paint-region.js +12 -0
  812. package/dist/schema/nodes/turbine-vent.d.ts +26 -0
  813. package/dist/schema/nodes/turbine-vent.d.ts.map +1 -1
  814. package/dist/schema/nodes/unit.d.ts +26 -0
  815. package/dist/schema/nodes/unit.d.ts.map +1 -1
  816. package/dist/schema/nodes/wall.d.ts +352 -61
  817. package/dist/schema/nodes/wall.d.ts.map +1 -1
  818. package/dist/schema/nodes/wall.js +185 -186
  819. package/dist/schema/nodes/window.d.ts +139 -20
  820. package/dist/schema/nodes/window.d.ts.map +1 -1
  821. package/dist/schema/nodes/window.js +12 -14
  822. package/dist/schema/nodes/zone.d.ts +69 -1
  823. package/dist/schema/nodes/zone.d.ts.map +1 -1
  824. package/dist/schema/nodes/zone.js +46 -0
  825. package/dist/schema/provenance.d.ts +118 -0
  826. package/dist/schema/provenance.d.ts.map +1 -0
  827. package/dist/schema/provenance.js +76 -0
  828. package/dist/schema/source-ref.d.ts +23 -0
  829. package/dist/schema/source-ref.d.ts.map +1 -0
  830. package/dist/schema/source-ref.js +29 -0
  831. package/dist/schema/types.d.ts +3317 -68
  832. package/dist/schema/types.d.ts.map +1 -1
  833. package/dist/schema/types.js +7 -0
  834. package/dist/services/alignment-anchors.d.ts +2 -1
  835. package/dist/services/alignment-anchors.d.ts.map +1 -1
  836. package/dist/services/alignment-anchors.js +9 -6
  837. package/dist/services/index.d.ts +1 -1
  838. package/dist/services/index.d.ts.map +1 -1
  839. package/dist/services/index.js +1 -1
  840. package/dist/services/level-height.d.ts.map +1 -1
  841. package/dist/services/level-height.js +6 -4
  842. package/dist/services/storey.d.ts +21 -1
  843. package/dist/services/storey.d.ts.map +1 -1
  844. package/dist/services/storey.js +94 -8
  845. package/dist/services/surface-hosting.d.ts.map +1 -1
  846. package/dist/services/surface-hosting.js +4 -1
  847. package/dist/store/actions/node-actions.d.ts +4563 -8
  848. package/dist/store/actions/node-actions.d.ts.map +1 -1
  849. package/dist/store/actions/node-actions.js +495 -174
  850. package/dist/store/derived-node-guard.d.ts +84 -0
  851. package/dist/store/derived-node-guard.d.ts.map +1 -0
  852. package/dist/store/derived-node-guard.js +586 -0
  853. package/dist/store/history-control.d.ts +34 -0
  854. package/dist/store/history-control.d.ts.map +1 -1
  855. package/dist/store/history-control.js +99 -1
  856. package/dist/store/history-drafts.d.ts +48 -0
  857. package/dist/store/history-drafts.d.ts.map +1 -0
  858. package/dist/store/history-drafts.js +403 -0
  859. package/dist/store/history-invalidation.d.ts.map +1 -1
  860. package/dist/store/history-invalidation.js +1 -0
  861. package/dist/store/item-interaction.d.ts +28 -0
  862. package/dist/store/item-interaction.d.ts.map +1 -0
  863. package/dist/store/item-interaction.js +34 -0
  864. package/dist/store/registered-node-defaults.d.ts +11 -0
  865. package/dist/store/registered-node-defaults.d.ts.map +1 -0
  866. package/dist/store/registered-node-defaults.js +25 -0
  867. package/dist/store/scene-annotations.d.ts +8969 -0
  868. package/dist/store/scene-annotations.d.ts.map +1 -0
  869. package/dist/store/scene-annotations.js +107 -0
  870. package/dist/store/use-interactive.d.ts +23 -1
  871. package/dist/store/use-interactive.d.ts.map +1 -1
  872. package/dist/store/use-interactive.js +128 -5
  873. package/dist/store/use-scene.d.ts +68 -12
  874. package/dist/store/use-scene.d.ts.map +1 -1
  875. package/dist/store/use-scene.js +416 -305
  876. package/dist/systems/elevator/elevator-opening-sync.d.ts.map +1 -1
  877. package/dist/systems/elevator/elevator-opening-sync.js +4 -6
  878. package/dist/systems/elevator/elevator-opening-system.d.ts.map +1 -1
  879. package/dist/systems/elevator/elevator-opening-system.js +12 -6
  880. package/dist/systems/elevator/elevator-service.d.ts.map +1 -1
  881. package/dist/systems/elevator/elevator-service.js +8 -3
  882. package/dist/systems/fence/fence-centerline.d.ts.map +1 -1
  883. package/dist/systems/fence/fence-centerline.js +6 -5
  884. package/dist/systems/fence/fence-features.d.ts +36 -0
  885. package/dist/systems/fence/fence-features.d.ts.map +1 -0
  886. package/dist/systems/fence/fence-features.js +105 -0
  887. package/dist/systems/fence/fence-spline.d.ts +8 -5
  888. package/dist/systems/fence/fence-spline.d.ts.map +1 -1
  889. package/dist/systems/fence/fence-spline.js +51 -16
  890. package/dist/systems/owned-floor-openings.d.ts +9 -0
  891. package/dist/systems/owned-floor-openings.d.ts.map +1 -0
  892. package/dist/systems/owned-floor-openings.js +326 -0
  893. package/dist/systems/reconcile-owned-floor-openings.d.ts +3 -0
  894. package/dist/systems/reconcile-owned-floor-openings.d.ts.map +1 -0
  895. package/dist/systems/reconcile-owned-floor-openings.js +25 -0
  896. package/dist/systems/slab/__fixtures__/doorway-steps.d.ts +8 -0
  897. package/dist/systems/slab/__fixtures__/doorway-steps.d.ts.map +1 -0
  898. package/dist/systems/slab/__fixtures__/doorway-steps.js +62 -0
  899. package/dist/systems/slab/__fixtures__/floor-step.d.ts +5636 -0
  900. package/dist/systems/slab/__fixtures__/floor-step.d.ts.map +1 -0
  901. package/dist/systems/slab/__fixtures__/floor-step.js +66 -0
  902. package/dist/systems/slab/__fixtures__/raised-room.d.ts +5775 -0
  903. package/dist/systems/slab/__fixtures__/raised-room.d.ts.map +1 -0
  904. package/dist/systems/slab/__fixtures__/raised-room.js +54 -0
  905. package/dist/systems/slab/ensure-slab-openings.d.ts +9 -0
  906. package/dist/systems/slab/ensure-slab-openings.d.ts.map +1 -0
  907. package/dist/systems/slab/ensure-slab-openings.js +41 -0
  908. package/dist/systems/slab/slab-support.d.ts +25 -6
  909. package/dist/systems/slab/slab-support.d.ts.map +1 -1
  910. package/dist/systems/slab/slab-support.js +471 -54
  911. package/dist/systems/stair/stair-base-elevation.d.ts +3 -0
  912. package/dist/systems/stair/stair-base-elevation.d.ts.map +1 -0
  913. package/dist/systems/stair/stair-base-elevation.js +49 -0
  914. package/dist/systems/stair/stair-clearance.d.ts +39 -0
  915. package/dist/systems/stair/stair-clearance.d.ts.map +1 -0
  916. package/dist/systems/stair/stair-clearance.js +508 -0
  917. package/dist/systems/stair/stair-construction.d.ts +37 -0
  918. package/dist/systems/stair/stair-construction.d.ts.map +1 -0
  919. package/dist/systems/stair/stair-construction.js +314 -0
  920. package/dist/systems/stair/stair-detail-budget.d.ts +13 -0
  921. package/dist/systems/stair/stair-detail-budget.d.ts.map +1 -0
  922. package/dist/systems/stair/stair-detail-budget.js +64 -0
  923. package/dist/systems/stair/stair-flight.d.ts +2 -2
  924. package/dist/systems/stair/stair-flight.d.ts.map +1 -1
  925. package/dist/systems/stair/stair-flight.js +4 -3
  926. package/dist/systems/stair/stair-floor-footprints.d.ts +7 -0
  927. package/dist/systems/stair/stair-floor-footprints.d.ts.map +1 -0
  928. package/dist/systems/stair/stair-floor-footprints.js +113 -0
  929. package/dist/systems/stair/stair-footprint.d.ts +3 -1
  930. package/dist/systems/stair/stair-footprint.d.ts.map +1 -1
  931. package/dist/systems/stair/stair-footprint.js +97 -44
  932. package/dist/systems/stair/stair-layout.d.ts +39 -0
  933. package/dist/systems/stair/stair-layout.d.ts.map +1 -0
  934. package/dist/systems/stair/stair-layout.js +58 -0
  935. package/dist/systems/stair/stair-opening-preview.d.ts +1612 -80
  936. package/dist/systems/stair/stair-opening-preview.d.ts.map +1 -1
  937. package/dist/systems/stair/stair-opening-sync.d.ts +8 -2
  938. package/dist/systems/stair/stair-opening-sync.d.ts.map +1 -1
  939. package/dist/systems/stair/stair-opening-sync.js +136 -315
  940. package/dist/systems/stair/stair-opening-system.d.ts.map +1 -1
  941. package/dist/systems/stair/stair-opening-system.js +40 -8
  942. package/dist/systems/stair/stair-presets.d.ts +276 -0
  943. package/dist/systems/stair/stair-presets.d.ts.map +1 -0
  944. package/dist/systems/stair/stair-presets.js +151 -0
  945. package/dist/systems/stair/stair-rail-budget.d.ts +6 -0
  946. package/dist/systems/stair/stair-rail-budget.d.ts.map +1 -0
  947. package/dist/systems/stair/stair-rail-budget.js +36 -0
  948. package/dist/systems/stair/stair-rail-path.d.ts +22 -0
  949. package/dist/systems/stair/stair-rail-path.d.ts.map +1 -0
  950. package/dist/systems/stair/stair-rail-path.js +497 -0
  951. package/dist/systems/stair/stair-rise-edit.d.ts +9 -0
  952. package/dist/systems/stair/stair-rise-edit.d.ts.map +1 -0
  953. package/dist/systems/stair/stair-rise-edit.js +46 -0
  954. package/dist/systems/stair/stair-rise-query.d.ts +24 -0
  955. package/dist/systems/stair/stair-rise-query.d.ts.map +1 -0
  956. package/dist/systems/stair/stair-rise-query.js +125 -0
  957. package/dist/systems/stair/stair-rise.d.ts +4 -19
  958. package/dist/systems/stair/stair-rise.d.ts.map +1 -1
  959. package/dist/systems/stair/stair-rise.js +8 -71
  960. package/dist/systems/stair/stair-sizing.d.ts +414 -0
  961. package/dist/systems/stair/stair-sizing.d.ts.map +1 -0
  962. package/dist/systems/stair/stair-sizing.js +255 -0
  963. package/dist/systems/stair/stair-sweep-edit.d.ts +7 -0
  964. package/dist/systems/stair/stair-sweep-edit.d.ts.map +1 -0
  965. package/dist/systems/stair/stair-sweep-edit.js +8 -0
  966. package/dist/systems/stair/stair-walking-line.d.ts +5 -0
  967. package/dist/systems/stair/stair-walking-line.d.ts.map +1 -0
  968. package/dist/systems/stair/stair-walking-line.js +91 -0
  969. package/dist/systems/stair/stair-winder.d.ts +36 -0
  970. package/dist/systems/stair/stair-winder.d.ts.map +1 -0
  971. package/dist/systems/stair/stair-winder.js +173 -0
  972. package/dist/systems/wall/wall-assembly.d.ts +234 -0
  973. package/dist/systems/wall/wall-assembly.d.ts.map +1 -0
  974. package/dist/systems/wall/wall-assembly.js +854 -0
  975. package/dist/systems/wall/wall-curve.d.ts +2 -1
  976. package/dist/systems/wall/wall-curve.d.ts.map +1 -1
  977. package/dist/systems/wall/wall-curve.js +21 -5
  978. package/dist/systems/wall/wall-finish.d.ts +102 -0
  979. package/dist/systems/wall/wall-finish.d.ts.map +1 -0
  980. package/dist/systems/wall/wall-finish.js +264 -0
  981. package/dist/systems/wall/wall-footprint.d.ts +3 -0
  982. package/dist/systems/wall/wall-footprint.d.ts.map +1 -1
  983. package/dist/systems/wall/wall-footprint.js +15 -13
  984. package/dist/systems/wall/wall-frame.d.ts +45 -0
  985. package/dist/systems/wall/wall-frame.d.ts.map +1 -0
  986. package/dist/systems/wall/wall-frame.js +162 -0
  987. package/dist/systems/wall/wall-layer-bands.d.ts +38 -0
  988. package/dist/systems/wall/wall-layer-bands.d.ts.map +1 -0
  989. package/dist/systems/wall/wall-layer-bands.js +109 -0
  990. package/dist/systems/wall/wall-merge.d.ts +20 -1
  991. package/dist/systems/wall/wall-merge.d.ts.map +1 -1
  992. package/dist/systems/wall/wall-merge.js +189 -18
  993. package/dist/systems/wall/wall-mitering.d.ts +6 -5
  994. package/dist/systems/wall/wall-mitering.d.ts.map +1 -1
  995. package/dist/systems/wall/wall-mitering.js +70 -20
  996. package/dist/systems/wall/wall-operations.d.ts +1 -1
  997. package/dist/systems/wall/wall-operations.d.ts.map +1 -1
  998. package/dist/systems/wall/wall-operations.js +2 -1
  999. package/dist/systems/wall/wall-paint-plan.d.ts +30 -0
  1000. package/dist/systems/wall/wall-paint-plan.d.ts.map +1 -0
  1001. package/dist/systems/wall/wall-paint-plan.js +167 -0
  1002. package/dist/systems/wall/wall-room-sides.d.ts +6 -0
  1003. package/dist/systems/wall/wall-room-sides.d.ts.map +1 -0
  1004. package/dist/systems/wall/wall-room-sides.js +14 -0
  1005. package/dist/systems/wall/wall-step-openings.d.ts +17 -0
  1006. package/dist/systems/wall/wall-step-openings.d.ts.map +1 -0
  1007. package/dist/systems/wall/wall-step-openings.js +32 -0
  1008. package/dist/systems/wall/wall-top.d.ts +2 -6
  1009. package/dist/systems/wall/wall-top.d.ts.map +1 -1
  1010. package/dist/systems/wall/wall-top.js +3 -9
  1011. package/dist/systems/wall/wall-topology.d.ts +21 -0
  1012. package/dist/systems/wall/wall-topology.d.ts.map +1 -1
  1013. package/dist/systems/wall/wall-topology.js +405 -4
  1014. package/dist/utils/clone-scene-graph.d.ts +6 -0
  1015. package/dist/utils/clone-scene-graph.d.ts.map +1 -1
  1016. package/dist/utils/clone-scene-graph.js +123 -15
  1017. package/dist/utils/ensure-scene-openings.d.ts +8965 -0
  1018. package/dist/utils/ensure-scene-openings.d.ts.map +1 -0
  1019. package/dist/utils/ensure-scene-openings.js +29 -0
  1020. package/dist/utils/exterior-threshold-migration.d.ts +4 -0
  1021. package/dist/utils/exterior-threshold-migration.d.ts.map +1 -0
  1022. package/dist/utils/exterior-threshold-migration.js +114 -0
  1023. package/dist/utils/floor-follow-migration.d.ts +3 -0
  1024. package/dist/utils/floor-follow-migration.d.ts.map +1 -0
  1025. package/dist/utils/floor-follow-migration.js +29 -0
  1026. package/dist/utils/floor-opening-migration.d.ts +13 -0
  1027. package/dist/utils/floor-opening-migration.d.ts.map +1 -0
  1028. package/dist/utils/floor-opening-migration.js +148 -0
  1029. package/dist/utils/floor-piece-adoption.d.ts +50 -0
  1030. package/dist/utils/floor-piece-adoption.d.ts.map +1 -0
  1031. package/dist/utils/floor-piece-adoption.js +182 -0
  1032. package/dist/utils/floor-plate-migration.d.ts +4507 -0
  1033. package/dist/utils/floor-plate-migration.d.ts.map +1 -0
  1034. package/dist/utils/floor-plate-migration.js +1360 -0
  1035. package/dist/utils/heal-plan-coordinates.d.ts +2 -0
  1036. package/dist/utils/heal-plan-coordinates.d.ts.map +1 -0
  1037. package/dist/utils/heal-plan-coordinates.js +69 -0
  1038. package/dist/utils/heal-scene-graph.d.ts +20 -6
  1039. package/dist/utils/heal-scene-graph.d.ts.map +1 -1
  1040. package/dist/utils/heal-scene-graph.js +61 -16
  1041. package/dist/utils/legacy-material-slots.d.ts +23 -0
  1042. package/dist/utils/legacy-material-slots.d.ts.map +1 -0
  1043. package/dist/utils/legacy-material-slots.js +120 -0
  1044. package/dist/utils/legacy-opening-datums.d.ts +11 -0
  1045. package/dist/utils/legacy-opening-datums.d.ts.map +1 -0
  1046. package/dist/utils/legacy-opening-datums.js +92 -0
  1047. package/dist/utils/legacy-wall-datums.d.ts +6 -0
  1048. package/dist/utils/legacy-wall-datums.d.ts.map +1 -0
  1049. package/dist/utils/legacy-wall-datums.js +199 -0
  1050. package/dist/utils/load-migration.d.ts +28 -0
  1051. package/dist/utils/load-migration.d.ts.map +1 -0
  1052. package/dist/utils/load-migration.js +89 -0
  1053. package/dist/utils/node-defaults.d.ts +37 -0
  1054. package/dist/utils/node-defaults.d.ts.map +1 -0
  1055. package/dist/utils/node-defaults.js +96 -0
  1056. package/dist/utils/normalize-legacy-structure.d.ts +2 -0
  1057. package/dist/utils/normalize-legacy-structure.d.ts.map +1 -0
  1058. package/dist/utils/normalize-legacy-structure.js +61 -0
  1059. package/dist/utils/omit-undefined.d.ts +2 -0
  1060. package/dist/utils/omit-undefined.d.ts.map +1 -0
  1061. package/dist/utils/omit-undefined.js +17 -0
  1062. package/dist/utils/owned-floor-opening-migration.d.ts +4489 -0
  1063. package/dist/utils/owned-floor-opening-migration.d.ts.map +1 -0
  1064. package/dist/utils/owned-floor-opening-migration.js +365 -0
  1065. package/dist/utils/reconcile-structure-on-load.d.ts +8965 -0
  1066. package/dist/utils/reconcile-structure-on-load.d.ts.map +1 -0
  1067. package/dist/utils/reconcile-structure-on-load.js +307 -0
  1068. package/dist/utils/room-zone-migration.d.ts +18 -0
  1069. package/dist/utils/room-zone-migration.d.ts.map +1 -0
  1070. package/dist/utils/room-zone-migration.js +258 -0
  1071. package/dist/utils/scene-migrations.d.ts +16 -1
  1072. package/dist/utils/scene-migrations.d.ts.map +1 -1
  1073. package/dist/utils/scene-migrations.js +15 -1
  1074. package/dist/utils/structure-id.d.ts +4 -0
  1075. package/dist/utils/structure-id.d.ts.map +1 -0
  1076. package/dist/utils/structure-id.js +115 -0
  1077. package/dist/utils/vertical-scene-migration.d.ts +8 -8
  1078. package/dist/utils/vertical-scene-migration.d.ts.map +1 -1
  1079. package/dist/utils/vertical-scene-migration.js +18 -8
  1080. package/dist/utils/wall-assembly-migration.d.ts +14 -0
  1081. package/dist/utils/wall-assembly-migration.d.ts.map +1 -0
  1082. package/dist/utils/wall-assembly-migration.js +23 -0
  1083. package/dist/utils/wall-face-migration.d.ts +23 -0
  1084. package/dist/utils/wall-face-migration.d.ts.map +1 -0
  1085. package/dist/utils/wall-face-migration.js +246 -0
  1086. package/dist/validation/opening-bounds.d.ts +36 -0
  1087. package/dist/validation/opening-bounds.d.ts.map +1 -0
  1088. package/dist/validation/opening-bounds.js +34 -0
  1089. package/dist/validation/validate-build-json.d.ts +2 -0
  1090. package/dist/validation/validate-build-json.d.ts.map +1 -1
  1091. package/dist/validation/validate-build-json.js +36 -1
  1092. package/package.json +36 -3
  1093. package/dist/services/surface-hosting-procedural-parity.fixtures.d.ts +0 -13
  1094. package/dist/services/surface-hosting-procedural-parity.fixtures.d.ts.map +0 -1
  1095. package/dist/services/surface-hosting-procedural-parity.fixtures.js +0 -4691
  1096. package/dist/services/surface-hosting-shelf-parity.fixtures.d.ts +0 -1060
  1097. package/dist/services/surface-hosting-shelf-parity.fixtures.d.ts.map +0 -1
  1098. 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?: {
@@ -555,13 +815,13 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
555
815
  layout: "count" | "maximum-spacing" | "fixed-spacing";
556
816
  count: number;
557
817
  spacing: number;
558
- alignment: "start" | "center" | "end";
818
+ alignment: "center" | "start" | "end";
559
819
  };
560
820
  rows: {
561
821
  layout: "count" | "maximum-spacing" | "fixed-spacing";
562
822
  count: number;
563
823
  spacing: number;
564
- alignment: "start" | "center" | "end";
824
+ alignment: "center" | "start" | "end";
565
825
  };
566
826
  mullionWidth: number;
567
827
  transomWidth: number;
@@ -582,6 +842,39 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
582
842
  }[];
583
843
  } | undefined;
584
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;
585
878
  fillToTerrain?: boolean | undefined;
586
879
  interiorMaterial?: {
587
880
  id?: string | undefined;
@@ -619,18 +912,73 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
619
912
  } | undefined;
620
913
  } | undefined;
621
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;
622
967
  curveOffset?: number | undefined;
623
968
  supportOffset?: number | undefined;
624
- faceBands?: {
625
- enabled: boolean;
626
- count: number;
627
- lowerHeight: number;
628
- middleHeight: number;
629
- 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;
630
978
  } | undefined;
631
979
  skirting?: {
632
980
  enabled: boolean;
633
- sides: "interior" | "exterior" | "both";
981
+ sides: "a" | "b" | "interior" | "exterior" | "both";
634
982
  height: number;
635
983
  proud: number;
636
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";
@@ -638,7 +986,7 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
638
986
  } | undefined;
639
987
  crown?: {
640
988
  enabled: boolean;
641
- sides: "interior" | "exterior" | "both";
989
+ sides: "a" | "b" | "interior" | "exterior" | "both";
642
990
  height: number;
643
991
  proud: number;
644
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";
@@ -646,12 +994,76 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
646
994
  } | undefined;
647
995
  chairRail?: {
648
996
  enabled: boolean;
649
- sides: "interior" | "exterior" | "both";
997
+ sides: "a" | "b" | "interior" | "exterior" | "both";
650
998
  height: number;
651
999
  proud: number;
652
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";
653
1001
  offsetY?: number | undefined;
654
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;
655
1067
  } | {
656
1068
  object: "node";
657
1069
  id: `fence_${string}`;
@@ -659,14 +1071,30 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
659
1071
  visible: boolean;
660
1072
  metadata: Record<string, unknown>;
661
1073
  color: string;
1074
+ children: string[];
662
1075
  height: number;
663
1076
  baseHeight: number;
664
- style: "slat" | "rail" | "privacy" | "horizontal";
665
- baseStyle: "floating" | "grounded";
1077
+ style: "slat" | "rail" | "privacy" | "horizontal" | "guard" | "picket";
1078
+ baseStyle: "floating" | "grounded" | "raised";
666
1079
  start: [number, number];
667
1080
  end: [number, number];
668
1081
  thickness: number;
669
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;
670
1098
  postSize: number;
671
1099
  topRailHeight: number;
672
1100
  groundClearance: number;
@@ -674,6 +1102,7 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
674
1102
  slatGap: number;
675
1103
  postCap: "flat" | "none" | "pyramid";
676
1104
  showInfill: boolean;
1105
+ infillPlacement: "center" | "front" | "back";
677
1106
  type: "fence";
678
1107
  name?: string | undefined;
679
1108
  camera?: {
@@ -683,6 +1112,17 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
683
1112
  fov?: number | undefined;
684
1113
  zoom?: number | undefined;
685
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;
686
1126
  path?: [number, number][] | undefined;
687
1127
  supportSlabId?: string | undefined;
688
1128
  slots?: Record<string, string> | undefined;
@@ -706,7 +1146,90 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
706
1146
  materialPreset?: string | undefined;
707
1147
  curveOffset?: number | undefined;
708
1148
  supportOffset?: number | undefined;
1149
+ spanModes?: ("straight" | "curve")[] | undefined;
709
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;
710
1233
  } | {
711
1234
  object: "node";
712
1235
  position: [number, number, number];
@@ -714,10 +1237,10 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
714
1237
  parentId: string | null;
715
1238
  visible: boolean;
716
1239
  metadata: Record<string, unknown>;
1240
+ depth: number;
717
1241
  rotation: number;
718
1242
  children: string[];
719
1243
  width: number;
720
- depth: number;
721
1244
  operationState: number;
722
1245
  runTier: "wall" | "base" | "tall";
723
1246
  withWaterfall: boolean;
@@ -734,9 +1257,9 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
734
1257
  frontGap: number;
735
1258
  frontStyle: "slab" | "shaker" | "raised-arch";
736
1259
  panelReady: boolean;
737
- handleStyle: "none" | "bar" | "cutout" | "hole" | "knob";
738
- handlePosition: "top" | "center" | "auto";
739
- frontOverlay: "full" | "inset";
1260
+ handleStyle: "cutout" | "none" | "bar" | "hole" | "knob";
1261
+ handlePosition: "center" | "top" | "auto";
1262
+ frontOverlay: "inset" | "full";
740
1263
  withBottomPanel: boolean;
741
1264
  showPlinth: boolean;
742
1265
  withCountertop: boolean;
@@ -749,6 +1272,17 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
749
1272
  fov?: number | undefined;
750
1273
  zoom?: number | undefined;
751
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;
752
1286
  supportSlabId?: string | undefined;
753
1287
  slots?: Record<string, string> | undefined;
754
1288
  material?: {
@@ -770,7 +1304,7 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
770
1304
  } | undefined;
771
1305
  materialPreset?: string | undefined;
772
1306
  barLedge?: {
773
- edge: "back" | "right" | "left";
1307
+ edge: "left" | "right" | "back";
774
1308
  height: number;
775
1309
  depth: number;
776
1310
  } | undefined;
@@ -863,10 +1397,10 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
863
1397
  parentId: string | null;
864
1398
  visible: boolean;
865
1399
  metadata: Record<string, unknown>;
1400
+ depth: number;
866
1401
  rotation: number;
867
1402
  children: string[];
868
1403
  width: number;
869
- depth: number;
870
1404
  operationState: number;
871
1405
  carcassHeight: number;
872
1406
  plinthHeight: number;
@@ -880,9 +1414,9 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
880
1414
  frontGap: number;
881
1415
  frontStyle: "slab" | "shaker" | "raised-arch";
882
1416
  panelReady: boolean;
883
- handleStyle: "none" | "bar" | "cutout" | "hole" | "knob";
884
- handlePosition: "top" | "center" | "auto";
885
- frontOverlay: "full" | "inset";
1417
+ handleStyle: "cutout" | "none" | "bar" | "hole" | "knob";
1418
+ handlePosition: "center" | "top" | "auto";
1419
+ frontOverlay: "inset" | "full";
886
1420
  withBottomPanel: boolean;
887
1421
  showPlinth: boolean;
888
1422
  withCountertop: boolean;
@@ -900,6 +1434,17 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
900
1434
  fov?: number | undefined;
901
1435
  zoom?: number | undefined;
902
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;
903
1448
  supportSlabId?: string | undefined;
904
1449
  slots?: Record<string, string> | undefined;
905
1450
  material?: {
@@ -1002,7 +1547,7 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1002
1547
  id: string;
1003
1548
  height?: number | undefined;
1004
1549
  })[] | undefined;
1005
- openSide?: "right" | "left" | undefined;
1550
+ openSide?: "left" | "right" | undefined;
1006
1551
  cornerShelf?: boolean | undefined;
1007
1552
  } | {
1008
1553
  object: "node";
@@ -1063,6 +1608,8 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1063
1608
  off?: string | undefined;
1064
1609
  loop?: string | undefined;
1065
1610
  };
1611
+ mode?: "ambient" | "open-close" | undefined;
1612
+ control?: number | undefined;
1066
1613
  } | {
1067
1614
  kind: "light";
1068
1615
  color: string;
@@ -1081,13 +1628,112 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1081
1628
  fov?: number | undefined;
1082
1629
  zoom?: number | undefined;
1083
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;
1084
1642
  side?: "front" | "back" | undefined;
1085
1643
  supportSlabId?: string | undefined;
1086
1644
  slots?: Record<string, string> | undefined;
1087
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;
1088
1734
  wallId?: string | undefined;
1089
1735
  wallT?: number | undefined;
1090
- roofFace?: "front" | "back" | "right" | "left" | undefined;
1736
+ roofFace?: "left" | "right" | "front" | "back" | undefined;
1091
1737
  blockFaceId?: string | undefined;
1092
1738
  collectionIds?: `collection_${string}`[] | undefined;
1093
1739
  } | {
@@ -1102,7 +1748,7 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1102
1748
  slots: Record<string, string>;
1103
1749
  parameters: Record<string, number>;
1104
1750
  recipe: {
1105
- version: 1;
1751
+ version: 2 | 1;
1106
1752
  name: string;
1107
1753
  description: string;
1108
1754
  parameters: {
@@ -1112,9 +1758,10 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1112
1758
  min: number;
1113
1759
  max: number;
1114
1760
  step: number;
1115
- unit: "count" | "m" | "rad";
1761
+ unit: "count" | "m" | "rad" | "s" | "bool" | "choice";
1762
+ options?: string[] | undefined;
1116
1763
  part?: string | undefined;
1117
- axis?: "x" | "y" | "z" | undefined;
1764
+ axis?: "x" | "z" | "y" | undefined;
1118
1765
  }[];
1119
1766
  slots: {
1120
1767
  id: string;
@@ -1126,16 +1773,102 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1126
1773
  id: string;
1127
1774
  label: string;
1128
1775
  count: import("../../procedural-items/index.js").Expr;
1129
- shapes: {
1776
+ shapes: ({
1130
1777
  id: string;
1131
- primitive: "box" | "roundedBox" | "cylinder";
1778
+ primitive: "box" | "roundedBox" | "cylinder" | "ellipsoid";
1132
1779
  slot: string;
1133
1780
  size: [import("../../procedural-items/index.js").Expr, import("../../procedural-items/index.js").Expr, import("../../procedural-items/index.js").Expr];
1134
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;
1135
1784
  rotation?: [import("../../procedural-items/index.js").Expr, import("../../procedural-items/index.js").Expr, import("../../procedural-items/index.js").Expr] | undefined;
1136
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];
1137
1822
  support?: boolean | undefined;
1138
- }[];
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;
1139
1872
  }[];
1140
1873
  constraints: {
1141
1874
  left: import("../../procedural-items/index.js").Expr;
@@ -1152,6 +1885,16 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1152
1885
  attachTo: "ceiling" | "wall-side";
1153
1886
  reference: string;
1154
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;
1155
1898
  surfaces?: {
1156
1899
  id: string;
1157
1900
  label: string;
@@ -1160,6 +1903,19 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1160
1903
  part?: string | undefined;
1161
1904
  rotation?: [import("../../procedural-items/index.js").Expr, import("../../procedural-items/index.js").Expr, import("../../procedural-items/index.js").Expr] | undefined;
1162
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;
1163
1919
  };
1164
1920
  attachments: Record<string, string>;
1165
1921
  type: "procedural-item";
@@ -1171,6 +1927,17 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1171
1927
  fov?: number | undefined;
1172
1928
  zoom?: number | undefined;
1173
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;
1174
1941
  side?: "front" | "back" | undefined;
1175
1942
  supportSlabId?: string | undefined;
1176
1943
  wallId?: string | undefined;
@@ -1198,18 +1965,31 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1198
1965
  fov?: number | undefined;
1199
1966
  zoom?: number | undefined;
1200
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;
1201
1979
  } | {
1202
1980
  object: "node";
1981
+ holes: [number, number][][];
1203
1982
  id: `zone_${string}`;
1204
1983
  name: string;
1205
1984
  parentId: string | null;
1206
1985
  visible: boolean;
1207
1986
  metadata: Record<string, unknown>;
1208
- color: string;
1209
1987
  polygon: [number, number][];
1988
+ color: string;
1210
1989
  autoFromWalls: boolean;
1211
1990
  boundaryWallIds: `wall_${string}`[];
1212
- spaceRole: "generic" | "room";
1991
+ boundarySeparatorIds: string[];
1992
+ spaceRole: "room" | "generic";
1213
1993
  roomNumber: string;
1214
1994
  enclosureStatus: "auto" | "open" | "enclosed";
1215
1995
  floorFinish: string;
@@ -1226,17 +2006,66 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1226
2006
  fov?: number | undefined;
1227
2007
  zoom?: number | undefined;
1228
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;
1229
2057
  } | {
1230
2058
  object: "node";
2059
+ holes: [number, number][][];
1231
2060
  id: `slab_${string}`;
1232
2061
  parentId: string | null;
1233
2062
  visible: boolean;
1234
2063
  metadata: Record<string, unknown>;
1235
- recessed: boolean;
1236
2064
  polygon: [number, number][];
1237
- holes: [number, number][][];
2065
+ recessed: boolean;
1238
2066
  holeMetadata: {
1239
- source: "stair" | "elevator" | "manual";
2067
+ source: "stair" | "elevator" | "manual" | "room" | "floor-opening";
2068
+ openingId?: string | undefined;
1240
2069
  stairId?: string | undefined;
1241
2070
  elevatorId?: string | undefined;
1242
2071
  }[];
@@ -1252,6 +2081,17 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1252
2081
  fov?: number | undefined;
1253
2082
  zoom?: number | undefined;
1254
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;
1255
2095
  slots?: Record<string, string> | undefined;
1256
2096
  material?: {
1257
2097
  id?: string | undefined;
@@ -1271,19 +2111,51 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1271
2111
  } | undefined;
1272
2112
  } | undefined;
1273
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;
1274
2138
  recessedRimElevation?: number | undefined;
1275
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;
1276
2147
  } | {
1277
2148
  object: "node";
2149
+ holes: [number, number][][];
1278
2150
  id: `ceiling_${string}`;
1279
2151
  parentId: string | null;
1280
2152
  visible: boolean;
1281
2153
  metadata: Record<string, unknown>;
1282
- children: (`item_${string}` | `procedural-item_${string}`)[];
1283
2154
  polygon: [number, number][];
1284
- holes: [number, number][][];
2155
+ children: (`item_${string}` | `procedural-item_${string}`)[];
1285
2156
  holeMetadata: {
1286
- source: "stair" | "elevator" | "manual";
2157
+ source: "stair" | "elevator" | "manual" | "room" | "floor-opening";
2158
+ openingId?: string | undefined;
1287
2159
  stairId?: string | undefined;
1288
2160
  elevatorId?: string | undefined;
1289
2161
  }[];
@@ -1297,6 +2169,17 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1297
2169
  fov?: number | undefined;
1298
2170
  zoom?: number | undefined;
1299
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;
1300
2183
  slots?: Record<string, string> | undefined;
1301
2184
  material?: {
1302
2185
  id?: string | undefined;
@@ -1317,6 +2200,14 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1317
2200
  } | undefined;
1318
2201
  materialPreset?: string | undefined;
1319
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;
1320
2211
  } | {
1321
2212
  object: "node";
1322
2213
  position: [number, number, number];
@@ -1345,6 +2236,18 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1345
2236
  fov?: number | undefined;
1346
2237
  zoom?: number | undefined;
1347
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;
1348
2251
  material?: {
1349
2252
  id?: string | undefined;
1350
2253
  preset?: "custom" | "white" | "brick" | "concrete" | "wood" | "glass" | "metal" | "plaster" | "tile" | "marble" | undefined;
@@ -1417,6 +2320,39 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1417
2320
  } | undefined;
1418
2321
  } | undefined;
1419
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;
1420
2356
  } | {
1421
2357
  object: "node";
1422
2358
  position: [number, number, number];
@@ -1424,6 +2360,7 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1424
2360
  parentId: string | null;
1425
2361
  visible: boolean;
1426
2362
  metadata: Record<string, unknown>;
2363
+ depth: number;
1427
2364
  rotation: number;
1428
2365
  children: string[];
1429
2366
  trim: {
@@ -1445,7 +2382,6 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1445
2382
  backRightZ: number;
1446
2383
  };
1447
2384
  width: number;
1448
- depth: number;
1449
2385
  roofType: "flat" | "hip" | "gable" | "shed" | "gambrel" | "dutch" | "mansard" | "conical";
1450
2386
  wallHeight: number;
1451
2387
  pitch: number;
@@ -1454,7 +2390,7 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1454
2390
  overhang: number;
1455
2391
  shingleThickness: number;
1456
2392
  managedByParent: boolean;
1457
- wallShell: "omit" | "auto" | "include";
2393
+ wallShell: "auto" | "omit" | "include";
1458
2394
  shedInsetEndPanels: boolean;
1459
2395
  gambrelLowerWidthRatio: number;
1460
2396
  gambrelLowerHeightRatio: number;
@@ -1474,6 +2410,17 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1474
2410
  fov?: number | undefined;
1475
2411
  zoom?: number | undefined;
1476
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;
1477
2424
  material?: {
1478
2425
  id?: string | undefined;
1479
2426
  preset?: "custom" | "white" | "brick" | "concrete" | "wood" | "glass" | "metal" | "plaster" | "tile" | "marble" | undefined;
@@ -1558,7 +2505,7 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1558
2505
  shedSideInfillMinX?: number | undefined;
1559
2506
  shedSideInfillMaxX?: number | undefined;
1560
2507
  shedFootprintPieces?: [number, number][][] | undefined;
1561
- shedOpenEndSides?: ("right" | "left")[] | undefined;
2508
+ shedOpenEndSides?: ("left" | "right")[] | undefined;
1562
2509
  shedJointFrame?: {
1563
2510
  position: [number, number, number];
1564
2511
  rotation: number;
@@ -1566,6 +2513,8 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1566
2513
  shedJointOwnerId?: string | undefined;
1567
2514
  shedJointNeighborIds?: string[] | undefined;
1568
2515
  shedJointScopeId?: string | undefined;
2516
+ fascia?: boolean | undefined;
2517
+ fasciaHighEdge?: boolean | undefined;
1569
2518
  } | {
1570
2519
  object: "node";
1571
2520
  position: [number, number, number];
@@ -1573,10 +2522,10 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1573
2522
  parentId: string | null;
1574
2523
  visible: boolean;
1575
2524
  metadata: Record<string, unknown>;
2525
+ depth: number;
1576
2526
  rotation: [number, number, number];
1577
2527
  children: string[];
1578
2528
  width: number;
1579
- depth: number;
1580
2529
  height: number;
1581
2530
  style: "wall-shelf" | "bookshelf" | "open-rack" | "cubby";
1582
2531
  rows: number;
@@ -1595,6 +2544,17 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1595
2544
  fov?: number | undefined;
1596
2545
  zoom?: number | undefined;
1597
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;
1598
2558
  supportSlabId?: string | undefined;
1599
2559
  slots?: Record<string, string> | undefined;
1600
2560
  material?: {
@@ -1639,7 +2599,7 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1639
2599
  topLandingDepth: number;
1640
2600
  showCenterColumn: boolean;
1641
2601
  showStepSupports: boolean;
1642
- railingMode: "right" | "left" | "none" | "both";
2602
+ railingMode: "left" | "right" | "none" | "both";
1643
2603
  railingHeight: number;
1644
2604
  type: "stair";
1645
2605
  name?: string | undefined;
@@ -1650,6 +2610,17 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1650
2610
  fov?: number | undefined;
1651
2611
  zoom?: number | undefined;
1652
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;
1653
2624
  supportSlabId?: string | undefined;
1654
2625
  slots?: Record<string, string> | undefined;
1655
2626
  material?: {
@@ -1670,6 +2641,17 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1670
2641
  } | undefined;
1671
2642
  } | undefined;
1672
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;
1673
2655
  railingMaterial?: {
1674
2656
  id?: string | undefined;
1675
2657
  preset?: "custom" | "white" | "brick" | "concrete" | "wood" | "glass" | "metal" | "plaster" | "tile" | "marble" | undefined;
@@ -1726,14 +2708,42 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1726
2708
  sideMaterialPreset?: string | undefined;
1727
2709
  deckSlabId?: string | undefined;
1728
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;
1729
2739
  } | {
1730
2740
  object: "node";
2741
+ length: number;
1731
2742
  position: [number, number, number];
1732
2743
  id: `sseg_${string}`;
1733
2744
  parentId: string | null;
1734
2745
  visible: boolean;
1735
2746
  metadata: Record<string, unknown>;
1736
- length: number;
1737
2747
  rotation: number;
1738
2748
  width: number;
1739
2749
  height: number;
@@ -1741,7 +2751,7 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1741
2751
  stepCount: number;
1742
2752
  fillToFloor: boolean;
1743
2753
  segmentType: "stair" | "landing";
1744
- attachmentSide: "front" | "right" | "left";
2754
+ attachmentSide: "left" | "right" | "front";
1745
2755
  type: "stair-segment";
1746
2756
  name?: string | undefined;
1747
2757
  camera?: {
@@ -1751,6 +2761,18 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1751
2761
  fov?: number | undefined;
1752
2762
  zoom?: number | undefined;
1753
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;
1754
2776
  material?: {
1755
2777
  id?: string | undefined;
1756
2778
  preset?: "custom" | "white" | "brick" | "concrete" | "wood" | "glass" | "metal" | "plaster" | "tile" | "marble" | undefined;
@@ -1769,6 +2791,23 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1769
2791
  } | undefined;
1770
2792
  } | undefined;
1771
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;
1772
2811
  } | {
1773
2812
  object: "node";
1774
2813
  position: [number, number, number];
@@ -1780,13 +2819,13 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1780
2819
  url: string | null;
1781
2820
  scale: number;
1782
2821
  rotation: [number, number, number];
2822
+ layers: Record<string, boolean>;
1783
2823
  captureSession: {
1784
2824
  sessionId: string;
1785
2825
  schemaVersion?: number | undefined;
1786
2826
  revisionId?: string | undefined;
1787
2827
  manifestUrl?: string | undefined;
1788
2828
  } | null;
1789
- layers: Record<string, boolean>;
1790
2829
  type: "scan";
1791
2830
  name?: string | undefined;
1792
2831
  camera?: {
@@ -1796,6 +2835,17 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1796
2835
  fov?: number | undefined;
1797
2836
  zoom?: number | undefined;
1798
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;
1799
2849
  } | {
1800
2850
  object: "node";
1801
2851
  position: [number, number, number];
@@ -1824,6 +2874,17 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1824
2874
  fov?: number | undefined;
1825
2875
  zoom?: number | undefined;
1826
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;
1827
2888
  } | {
1828
2889
  object: "node";
1829
2890
  id: `measurement_${string}`;
@@ -1920,6 +2981,17 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1920
2981
  fov?: number | undefined;
1921
2982
  zoom?: number | undefined;
1922
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;
1923
2995
  } | {
1924
2996
  object: "node";
1925
2997
  position: [number, number, number];
@@ -1937,6 +3009,17 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1937
3009
  fov?: number | undefined;
1938
3010
  zoom?: number | undefined;
1939
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;
1940
3023
  supportSlabId?: string | undefined;
1941
3024
  } | {
1942
3025
  object: "node";
@@ -1948,7 +3031,8 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1948
3031
  rotation: [number, number, number];
1949
3032
  width: number;
1950
3033
  height: number;
1951
- constructionType: "framed" | "masonry";
3034
+ floorThresholdVersion: 0 | 1;
3035
+ constructionType: "masonry" | "framed";
1952
3036
  dimensionReference: "nominal" | "rough-opening" | "masonry-opening" | "finish-opening";
1953
3037
  operationState: number;
1954
3038
  openingKind: "window" | "opening";
@@ -1959,7 +3043,7 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1959
3043
  openingRevealRadius: number;
1960
3044
  frameThickness: number;
1961
3045
  frameDepth: number;
1962
- hingesSide: "right" | "left";
3046
+ hingesSide: "left" | "right";
1963
3047
  columnRatios: number[];
1964
3048
  windowType: "fixed" | "sliding" | "casement" | "awning" | "hopper" | "single-hung" | "double-hung" | "bay" | "bow" | "louvered";
1965
3049
  awningDirection: "up" | "down";
@@ -1980,6 +3064,17 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
1980
3064
  fov?: number | undefined;
1981
3065
  zoom?: number | undefined;
1982
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;
1983
3078
  side?: "front" | "back" | undefined;
1984
3079
  slots?: Record<string, string> | undefined;
1985
3080
  material?: {
@@ -2000,8 +3095,97 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2000
3095
  } | undefined;
2001
3096
  } | undefined;
2002
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;
2003
3186
  wallId?: string | undefined;
2004
- roofFace?: "front" | "back" | "right" | "left" | undefined;
3187
+ roofFace?: "left" | "right" | "front" | "back" | undefined;
3188
+ verticalAnchor?: "wall" | "floor" | undefined;
2005
3189
  mark?: string | undefined;
2006
3190
  roughOpeningWidth?: number | undefined;
2007
3191
  roughOpeningHeight?: number | undefined;
@@ -2010,7 +3194,7 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2010
3194
  finishOpeningWidth?: number | undefined;
2011
3195
  finishOpeningHeight?: number | undefined;
2012
3196
  dormerId?: string | undefined;
2013
- dormerFace?: "front" | "back" | "right" | "left" | undefined;
3197
+ dormerFace?: "left" | "right" | "front" | "back" | undefined;
2014
3198
  } | {
2015
3199
  object: "node";
2016
3200
  position: [number, number, number];
@@ -2021,13 +3205,14 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2021
3205
  rotation: [number, number, number];
2022
3206
  width: number;
2023
3207
  height: number;
2024
- leafCount: 3 | 2 | 1 | 4;
2025
- constructionType: "framed" | "masonry";
3208
+ leafCount: 2 | 1 | 3 | 4;
3209
+ floorThresholdVersion: 0 | 1;
3210
+ constructionType: "masonry" | "framed";
2026
3211
  dimensionReference: "nominal" | "rough-opening" | "masonry-opening" | "finish-opening";
2027
3212
  doorCategory: "interior" | "garage";
2028
3213
  doorType: "double" | "hinged" | "french" | "folding" | "pocket" | "barn" | "sliding" | "garage-sectional" | "garage-rollup" | "garage-tiltup";
2029
3214
  operationState: number;
2030
- slideDirection: "right" | "left";
3215
+ slideDirection: "left" | "right";
2031
3216
  trackStyle: "visible" | "none" | "pocket" | "overhead";
2032
3217
  garagePanelCount: number;
2033
3218
  openingKind: "door" | "opening";
@@ -2041,7 +3226,7 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2041
3226
  frameDepth: number;
2042
3227
  threshold: boolean;
2043
3228
  thresholdHeight: number;
2044
- hingesSide: "right" | "left";
3229
+ hingesSide: "left" | "right";
2045
3230
  swingDirection: "inward" | "outward";
2046
3231
  swingAngle: number;
2047
3232
  segments: {
@@ -2054,7 +3239,7 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2054
3239
  }[];
2055
3240
  handle: boolean;
2056
3241
  handleHeight: number;
2057
- handleSide: "right" | "left";
3242
+ handleSide: "left" | "right";
2058
3243
  contentPadding: [number, number];
2059
3244
  doorCloser: boolean;
2060
3245
  panicBar: boolean;
@@ -2068,6 +3253,17 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2068
3253
  fov?: number | undefined;
2069
3254
  zoom?: number | undefined;
2070
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;
2071
3267
  side?: "front" | "back" | undefined;
2072
3268
  slots?: Record<string, string> | undefined;
2073
3269
  material?: {
@@ -2088,8 +3284,97 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2088
3284
  } | undefined;
2089
3285
  } | undefined;
2090
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;
2091
3375
  wallId?: string | undefined;
2092
- roofFace?: "front" | "back" | "right" | "left" | undefined;
3376
+ roofFace?: "left" | "right" | "front" | "back" | undefined;
3377
+ verticalAnchor?: "wall" | "floor" | undefined;
2093
3378
  mark?: string | undefined;
2094
3379
  roughOpeningWidth?: number | undefined;
2095
3380
  roughOpeningHeight?: number | undefined;
@@ -2104,10 +3389,10 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2104
3389
  parentId: string | null;
2105
3390
  visible: boolean;
2106
3391
  metadata: Record<string, unknown>;
3392
+ depth: number;
2107
3393
  rotation: number;
2108
3394
  materialPreset: string;
2109
3395
  width: number;
2110
- depth: number;
2111
3396
  height: number;
2112
3397
  hoodOverhang: number;
2113
3398
  topTaper: number;
@@ -2127,6 +3412,17 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2127
3412
  fov?: number | undefined;
2128
3413
  zoom?: number | undefined;
2129
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;
2130
3426
  slots?: Record<string, string> | undefined;
2131
3427
  material?: {
2132
3428
  id?: string | undefined;
@@ -2148,12 +3444,12 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2148
3444
  roofSegmentId?: string | undefined;
2149
3445
  } | {
2150
3446
  object: "node";
3447
+ length: number;
2151
3448
  position: [number, number, number];
2152
3449
  id: `rvent_${string}`;
2153
3450
  parentId: string | null;
2154
3451
  visible: boolean;
2155
3452
  metadata: Record<string, unknown>;
2156
- length: number;
2157
3453
  rotation: number;
2158
3454
  width: number;
2159
3455
  height: number;
@@ -2168,6 +3464,17 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2168
3464
  fov?: number | undefined;
2169
3465
  zoom?: number | undefined;
2170
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;
2171
3478
  material?: {
2172
3479
  id?: string | undefined;
2173
3480
  preset?: "custom" | "white" | "brick" | "concrete" | "wood" | "glass" | "metal" | "plaster" | "tile" | "marble" | undefined;
@@ -2212,6 +3519,17 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2212
3519
  fov?: number | undefined;
2213
3520
  zoom?: number | undefined;
2214
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;
2215
3533
  slots?: Record<string, string> | undefined;
2216
3534
  material?: {
2217
3535
  id?: string | undefined;
@@ -2238,10 +3556,10 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2238
3556
  parentId: string | null;
2239
3557
  visible: boolean;
2240
3558
  metadata: Record<string, unknown>;
3559
+ depth: number;
2241
3560
  rotation: number;
2242
3561
  materialPreset: string;
2243
3562
  width: number;
2244
- depth: number;
2245
3563
  height: number;
2246
3564
  roofStyle: "dome" | "pyramid";
2247
3565
  finial: boolean;
@@ -2254,6 +3572,17 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2254
3572
  fov?: number | undefined;
2255
3573
  zoom?: number | undefined;
2256
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;
2257
3586
  slots?: Record<string, string> | undefined;
2258
3587
  material?: {
2259
3588
  id?: string | undefined;
@@ -2280,10 +3609,10 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2280
3609
  parentId: string | null;
2281
3610
  visible: boolean;
2282
3611
  metadata: Record<string, unknown>;
3612
+ depth: number;
2283
3613
  rotation: number;
2284
3614
  materialPreset: string;
2285
3615
  width: number;
2286
- depth: number;
2287
3616
  height: number;
2288
3617
  style: "half-round" | "scoop" | "slant-box";
2289
3618
  louverCount: number;
@@ -2297,6 +3626,17 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2297
3626
  fov?: number | undefined;
2298
3627
  zoom?: number | undefined;
2299
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;
2300
3640
  slots?: Record<string, string> | undefined;
2301
3641
  material?: {
2302
3642
  id?: string | undefined;
@@ -2318,12 +3658,12 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2318
3658
  roofSegmentId?: string | undefined;
2319
3659
  } | {
2320
3660
  object: "node";
3661
+ length: number;
2321
3662
  position: [number, number, number];
2322
3663
  id: `gutter_${string}`;
2323
3664
  parentId: string | null;
2324
3665
  visible: boolean;
2325
3666
  metadata: Record<string, unknown>;
2326
- length: number;
2327
3667
  rotation: number;
2328
3668
  materialPreset: string;
2329
3669
  thickness: number;
@@ -2348,6 +3688,17 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2348
3688
  fov?: number | undefined;
2349
3689
  zoom?: number | undefined;
2350
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;
2351
3702
  slots?: Record<string, string> | undefined;
2352
3703
  material?: {
2353
3704
  id?: string | undefined;
@@ -2379,9 +3730,9 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2379
3730
  parentId: string | null;
2380
3731
  visible: boolean;
2381
3732
  metadata: Record<string, unknown>;
3733
+ depth: number;
2382
3734
  rotation: number;
2383
3735
  width: number;
2384
- depth: number;
2385
3736
  cornerBevel: number;
2386
3737
  cap: boolean;
2387
3738
  panelDepth: number;
@@ -2423,6 +3774,17 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2423
3774
  fov?: number | undefined;
2424
3775
  zoom?: number | undefined;
2425
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;
2426
3788
  material?: {
2427
3789
  id?: string | undefined;
2428
3790
  preset?: "custom" | "white" | "brick" | "concrete" | "wood" | "glass" | "metal" | "plaster" | "tile" | "marble" | undefined;
@@ -2488,6 +3850,17 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2488
3850
  fov?: number | undefined;
2489
3851
  zoom?: number | undefined;
2490
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;
2491
3864
  material?: {
2492
3865
  id?: string | undefined;
2493
3866
  preset?: "custom" | "white" | "brick" | "concrete" | "wood" | "glass" | "metal" | "plaster" | "tile" | "marble" | undefined;
@@ -2548,7 +3921,7 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2548
3921
  lanternHeight: number;
2549
3922
  lanternTopScale: number;
2550
3923
  openingAngle: number;
2551
- openingSide: "top" | "right" | "left" | "bottom";
3924
+ openingSide: "left" | "right" | "top" | "bottom";
2552
3925
  motorHousing: boolean;
2553
3926
  slideFraction: number;
2554
3927
  trackWidth: number;
@@ -2563,6 +3936,17 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2563
3936
  fov?: number | undefined;
2564
3937
  zoom?: number | undefined;
2565
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;
2566
3950
  material?: {
2567
3951
  id?: string | undefined;
2568
3952
  preset?: "custom" | "white" | "brick" | "concrete" | "wood" | "glass" | "metal" | "plaster" | "tile" | "marble" | undefined;
@@ -2608,10 +3992,10 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2608
3992
  parentId: string | null;
2609
3993
  visible: boolean;
2610
3994
  metadata: Record<string, unknown>;
3995
+ depth: number;
2611
3996
  rotation: number;
2612
3997
  children: `window_${string}`[];
2613
3998
  width: number;
2614
- depth: number;
2615
3999
  height: number;
2616
4000
  roofType: "flat" | "hip" | "gable" | "shed" | "gambrel" | "dutch" | "mansard" | "conical";
2617
4001
  roofHeight: number;
@@ -2641,6 +4025,17 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2641
4025
  fov?: number | undefined;
2642
4026
  zoom?: number | undefined;
2643
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;
2644
4039
  material?: {
2645
4040
  id?: string | undefined;
2646
4041
  preset?: "custom" | "white" | "brick" | "concrete" | "wood" | "glass" | "metal" | "plaster" | "tile" | "marble" | undefined;
@@ -2716,14 +4111,14 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2716
4111
  sideMaterialPreset?: string | undefined;
2717
4112
  } | {
2718
4113
  object: "node";
4114
+ length: number;
2719
4115
  id: `downspout_${string}`;
2720
4116
  parentId: string | null;
2721
4117
  visible: boolean;
2722
4118
  metadata: Record<string, unknown>;
2723
- length: number;
4119
+ shape: "auto" | "round" | "rect";
2724
4120
  materialPreset: string;
2725
4121
  diameter: number;
2726
- shape: "round" | "auto" | "rect";
2727
4122
  standoff: number;
2728
4123
  strapStyle: "none" | "band";
2729
4124
  strapSpacing: number;
@@ -2737,6 +4132,17 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2737
4132
  fov?: number | undefined;
2738
4133
  zoom?: number | undefined;
2739
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;
2740
4146
  slots?: Record<string, string> | undefined;
2741
4147
  material?: {
2742
4148
  id?: string | undefined;
@@ -2764,17 +4170,17 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2764
4170
  parentId: string | null;
2765
4171
  visible: boolean;
2766
4172
  metadata: Record<string, unknown>;
4173
+ shape: "round" | "rect" | "oval";
2767
4174
  path: [number, number, number][];
2768
4175
  width: number;
2769
4176
  height: number;
2770
4177
  diameter: number;
2771
- shape: "round" | "rect" | "oval";
2772
4178
  roll: number;
2773
4179
  ductMaterial: "spiral" | "sheet-metal" | "flex" | "duct-board";
2774
4180
  seamDetail: boolean;
2775
4181
  insulated: boolean;
2776
4182
  insulationR: number;
2777
- system: "supply" | "return";
4183
+ system: "return" | "supply";
2778
4184
  type: "duct-segment";
2779
4185
  name?: string | undefined;
2780
4186
  camera?: {
@@ -2784,6 +4190,17 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2784
4190
  fov?: number | undefined;
2785
4191
  zoom?: number | undefined;
2786
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;
2787
4204
  slots?: Record<string, string> | undefined;
2788
4205
  autoHangers?: boolean | undefined;
2789
4206
  hangerOverrides?: Record<string, {
@@ -2808,14 +4225,14 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2808
4225
  parentId: string | null;
2809
4226
  visible: boolean;
2810
4227
  metadata: Record<string, unknown>;
4228
+ shape: "round" | "rect" | "oval";
2811
4229
  rotation: [number, number, number];
2812
4230
  width: number;
2813
4231
  height: number;
2814
4232
  angle: number;
2815
4233
  diameter: number;
2816
- shape: "round" | "rect" | "oval";
2817
4234
  ductMaterial: "sheet-metal" | "flex" | "duct-board";
2818
- system: "supply" | "return";
4235
+ system: "return" | "supply";
2819
4236
  fittingType: "elbow" | "tee" | "cross" | "reducer" | "transition" | "end-cap" | "damper" | "access-panel" | "coupling";
2820
4237
  shape2: "round" | "rect" | "oval";
2821
4238
  width2: number;
@@ -2834,6 +4251,17 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2834
4251
  fov?: number | undefined;
2835
4252
  zoom?: number | undefined;
2836
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;
2837
4265
  slots?: Record<string, string> | undefined;
2838
4266
  inletShape?: "round" | "rect" | "oval" | undefined;
2839
4267
  outletShape?: "round" | "rect" | "oval" | undefined;
@@ -2844,11 +4272,11 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2844
4272
  parentId: string | null;
2845
4273
  visible: boolean;
2846
4274
  metadata: Record<string, unknown>;
4275
+ depth: number;
2847
4276
  rotation: number;
2848
4277
  width: number;
2849
- depth: number;
2850
- terminalType: "supply-register" | "diffuser" | "return-grille";
2851
4278
  mount: "wall" | "ceiling" | "floor";
4279
+ terminalType: "supply-register" | "diffuser" | "return-grille";
2852
4280
  collarShape: "round" | "rect" | "oval";
2853
4281
  collarDiameter: number;
2854
4282
  collarWidth: number;
@@ -2862,6 +4290,17 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2862
4290
  fov?: number | undefined;
2863
4291
  zoom?: number | undefined;
2864
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;
2865
4304
  supportSlabId?: string | undefined;
2866
4305
  } | {
2867
4306
  object: "node";
@@ -2870,9 +4309,9 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2870
4309
  parentId: string | null;
2871
4310
  visible: boolean;
2872
4311
  metadata: Record<string, unknown>;
4312
+ depth: number;
2873
4313
  rotation: number;
2874
4314
  width: number;
2875
- depth: number;
2876
4315
  height: number;
2877
4316
  equipmentType: "furnace" | "air-handler" | "condenser";
2878
4317
  supplyShape: "round" | "rect" | "oval";
@@ -2892,6 +4331,17 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2892
4331
  fov?: number | undefined;
2893
4332
  zoom?: number | undefined;
2894
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;
2895
4345
  supportSlabId?: string | undefined;
2896
4346
  } | {
2897
4347
  object: "node";
@@ -2912,6 +4362,17 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2912
4362
  fov?: number | undefined;
2913
4363
  zoom?: number | undefined;
2914
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;
2915
4376
  } | {
2916
4377
  object: "node";
2917
4378
  id: `liquid-line_${string}`;
@@ -2929,6 +4390,17 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2929
4390
  fov?: number | undefined;
2930
4391
  zoom?: number | undefined;
2931
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;
2932
4404
  } | {
2933
4405
  object: "node";
2934
4406
  id: `pipe-segment_${string}`;
@@ -2948,6 +4420,17 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2948
4420
  fov?: number | undefined;
2949
4421
  zoom?: number | undefined;
2950
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;
2951
4434
  autoHangers?: boolean | undefined;
2952
4435
  hangerOverrides?: Record<string, {
2953
4436
  fraction?: number | undefined;
@@ -2988,6 +4471,17 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
2988
4471
  fov?: number | undefined;
2989
4472
  zoom?: number | undefined;
2990
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;
2991
4485
  } | {
2992
4486
  object: "node";
2993
4487
  position: [number, number, number];
@@ -3008,27 +4502,18 @@ export declare function markSlabChangeDependents(previous: SlabNode, next: SlabN
3008
4502
  fov?: number | undefined;
3009
4503
  zoom?: number | undefined;
3010
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;
3011
4516
  }>): void;
3012
- /**
3013
- * The sculpted ground moved: every node the terrain *supports* must re-elevate.
3014
- *
3015
- * The other rules in this file gate on a footprint overlapping the changed
3016
- * surface. Terrain has no such gate — a stroke rewrites a field that spans the
3017
- * whole lot, and the resolver samples it at each node's own XZ — so the sweep is
3018
- * every floor-placed node on a storey at grade, plus every wall whose explicit
3019
- * terrain infill samples that field. During a live stroke it fires per dab, but
3020
- * dirty ids coalesce in a Set until the frame systems consume them; the scene
3021
- * graph itself is still written only once on commit.
3022
- *
3023
- * Without this a sculpt silently desyncs the scene from its own ground. Nothing
3024
- * re-runs `getFloorPlacedElevation`, so the React commit that rebinds a node
3025
- * group's base Y leaves it there: a column that was resting on a hillside drops
3026
- * to the datum and stays buried under the terrain it used to stand on.
3027
- *
3028
- * Gated on `isLevelAtSiteDatum` — the same predicate `terrainSupportLift` uses to
3029
- * decide whether it drapes at all, so the two cannot disagree about which storey
3030
- * is on the ground.
3031
- */
3032
4517
  export declare function markTerrainSupportDependents(nodes: Record<string, AnyNode>, markDirty: (id: AnyNodeId) => void): void;
3033
4518
  /**
3034
4519
  * A slab on `slabLevelId` was created/deleted or changed shape/placement: