@pascal-app/core 1.0.1 → 1.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1116) hide show
  1. package/dist/agent-operations/__fixtures__/add-object-cases.d.ts +235 -0
  2. package/dist/agent-operations/__fixtures__/add-object-cases.d.ts.map +1 -0
  3. package/dist/agent-operations/__fixtures__/add-object-cases.js +129 -0
  4. package/dist/agent-operations/__fixtures__/build-room-cases.d.ts +4 -0
  5. package/dist/agent-operations/__fixtures__/build-room-cases.d.ts.map +1 -0
  6. package/dist/agent-operations/__fixtures__/build-room-cases.js +635 -0
  7. package/dist/agent-operations/__fixtures__/cases.d.ts +52 -0
  8. package/dist/agent-operations/__fixtures__/cases.d.ts.map +1 -0
  9. package/dist/agent-operations/__fixtures__/cases.js +689 -0
  10. package/dist/agent-operations/__fixtures__/find-by-type-cases.d.ts +7 -0
  11. package/dist/agent-operations/__fixtures__/find-by-type-cases.d.ts.map +1 -0
  12. package/dist/agent-operations/__fixtures__/find-by-type-cases.js +21 -0
  13. package/dist/agent-operations/__fixtures__/place-items-cases.d.ts +17 -0
  14. package/dist/agent-operations/__fixtures__/place-items-cases.d.ts.map +1 -0
  15. package/dist/agent-operations/__fixtures__/place-items-cases.js +506 -0
  16. package/dist/agent-operations/__fixtures__/room-cases.d.ts +3 -0
  17. package/dist/agent-operations/__fixtures__/room-cases.d.ts.map +1 -0
  18. package/dist/agent-operations/__fixtures__/room-cases.js +338 -0
  19. package/dist/agent-operations/__fixtures__/search-assets-cases.d.ts +5 -0
  20. package/dist/agent-operations/__fixtures__/search-assets-cases.d.ts.map +1 -0
  21. package/dist/agent-operations/__fixtures__/search-assets-cases.js +137 -0
  22. package/dist/agent-operations/__fixtures__/structure-cases.d.ts +6 -0
  23. package/dist/agent-operations/__fixtures__/structure-cases.d.ts.map +1 -0
  24. package/dist/agent-operations/__fixtures__/structure-cases.js +588 -0
  25. package/dist/agent-operations/__fixtures__/verify-scene-cases.d.ts +3 -0
  26. package/dist/agent-operations/__fixtures__/verify-scene-cases.d.ts.map +1 -0
  27. package/dist/agent-operations/__fixtures__/verify-scene-cases.js +302 -0
  28. package/dist/agent-operations/achieved.d.ts +16 -0
  29. package/dist/agent-operations/achieved.d.ts.map +1 -0
  30. package/dist/agent-operations/achieved.js +28 -0
  31. package/dist/agent-operations/add-column.d.ts +23 -0
  32. package/dist/agent-operations/add-column.d.ts.map +1 -0
  33. package/dist/agent-operations/add-column.js +97 -0
  34. package/dist/agent-operations/add-level.d.ts +14 -0
  35. package/dist/agent-operations/add-level.d.ts.map +1 -0
  36. package/dist/agent-operations/add-level.js +94 -0
  37. package/dist/agent-operations/add-object.d.ts +114 -0
  38. package/dist/agent-operations/add-object.d.ts.map +1 -0
  39. package/dist/agent-operations/add-object.js +361 -0
  40. package/dist/agent-operations/add-wall.d.ts +15 -0
  41. package/dist/agent-operations/add-wall.d.ts.map +1 -0
  42. package/dist/agent-operations/add-wall.js +47 -0
  43. package/dist/agent-operations/apply-changes.d.ts +16 -0
  44. package/dist/agent-operations/apply-changes.d.ts.map +1 -0
  45. package/dist/agent-operations/apply-changes.js +93 -0
  46. package/dist/agent-operations/apply-outcome.d.ts +15 -0
  47. package/dist/agent-operations/apply-outcome.d.ts.map +1 -0
  48. package/dist/agent-operations/apply-outcome.js +18 -0
  49. package/dist/agent-operations/collections.d.ts +28 -0
  50. package/dist/agent-operations/collections.d.ts.map +1 -0
  51. package/dist/agent-operations/collections.js +130 -0
  52. package/dist/agent-operations/create-room.d.ts +36 -0
  53. package/dist/agent-operations/create-room.d.ts.map +1 -0
  54. package/dist/agent-operations/create-room.js +177 -0
  55. package/dist/agent-operations/create-stair.d.ts +33 -0
  56. package/dist/agent-operations/create-stair.d.ts.map +1 -0
  57. package/dist/agent-operations/create-stair.js +247 -0
  58. package/dist/agent-operations/delete-node.d.ts +6 -0
  59. package/dist/agent-operations/delete-node.d.ts.map +1 -0
  60. package/dist/agent-operations/delete-node.js +9 -0
  61. package/dist/agent-operations/door-clearance.d.ts +135 -0
  62. package/dist/agent-operations/door-clearance.d.ts.map +1 -0
  63. package/dist/agent-operations/door-clearance.js +334 -0
  64. package/dist/agent-operations/duplicate-level.d.ts +12 -0
  65. package/dist/agent-operations/duplicate-level.d.ts.map +1 -0
  66. package/dist/agent-operations/duplicate-level.js +54 -0
  67. package/dist/agent-operations/find-by-type.d.ts +11 -0
  68. package/dist/agent-operations/find-by-type.d.ts.map +1 -0
  69. package/dist/agent-operations/find-by-type.js +94 -0
  70. package/dist/agent-operations/furnish-room.d.ts +18 -0
  71. package/dist/agent-operations/furnish-room.d.ts.map +1 -0
  72. package/dist/agent-operations/furnish-room.js +259 -0
  73. package/dist/agent-operations/get-node.d.ts +9 -0
  74. package/dist/agent-operations/get-node.d.ts.map +1 -0
  75. package/dist/agent-operations/get-node.js +33 -0
  76. package/dist/agent-operations/hosted-services.d.ts +13 -0
  77. package/dist/agent-operations/hosted-services.d.ts.map +1 -0
  78. package/dist/agent-operations/hosted-services.js +22 -0
  79. package/dist/agent-operations/index.d.ts +277 -0
  80. package/dist/agent-operations/index.d.ts.map +1 -0
  81. package/dist/agent-operations/index.js +80 -0
  82. package/dist/agent-operations/layout-clearance.d.ts +108 -0
  83. package/dist/agent-operations/layout-clearance.d.ts.map +1 -0
  84. package/dist/agent-operations/layout-clearance.js +190 -0
  85. package/dist/agent-operations/level-reads.d.ts +33 -0
  86. package/dist/agent-operations/level-reads.d.ts.map +1 -0
  87. package/dist/agent-operations/level-reads.js +161 -0
  88. package/dist/agent-operations/level-target.d.ts +11 -0
  89. package/dist/agent-operations/level-target.d.ts.map +1 -0
  90. package/dist/agent-operations/level-target.js +29 -0
  91. package/dist/agent-operations/list-levels.d.ts +4 -0
  92. package/dist/agent-operations/list-levels.d.ts.map +1 -0
  93. package/dist/agent-operations/list-levels.js +31 -0
  94. package/dist/agent-operations/material-preset.d.ts +11 -0
  95. package/dist/agent-operations/material-preset.d.ts.map +1 -0
  96. package/dist/agent-operations/material-preset.js +74 -0
  97. package/dist/agent-operations/material-refs.d.ts +24 -0
  98. package/dist/agent-operations/material-refs.d.ts.map +1 -0
  99. package/dist/agent-operations/material-refs.js +100 -0
  100. package/dist/agent-operations/node-patch.d.ts +3 -0
  101. package/dist/agent-operations/node-patch.d.ts.map +1 -0
  102. package/dist/agent-operations/node-patch.js +114 -0
  103. package/dist/agent-operations/paint.d.ts +21 -0
  104. package/dist/agent-operations/paint.d.ts.map +1 -0
  105. package/dist/agent-operations/paint.js +219 -0
  106. package/dist/agent-operations/place-items.d.ts +20 -0
  107. package/dist/agent-operations/place-items.d.ts.map +1 -0
  108. package/dist/agent-operations/place-items.js +226 -0
  109. package/dist/agent-operations/plan-geometry.d.ts +24 -0
  110. package/dist/agent-operations/plan-geometry.d.ts.map +1 -0
  111. package/dist/agent-operations/plan-geometry.js +94 -0
  112. package/dist/agent-operations/room-structure.d.ts +87 -0
  113. package/dist/agent-operations/room-structure.d.ts.map +1 -0
  114. package/dist/agent-operations/room-structure.js +144 -0
  115. package/dist/agent-operations/scene-materials.d.ts +15 -0
  116. package/dist/agent-operations/scene-materials.d.ts.map +1 -0
  117. package/dist/agent-operations/scene-materials.js +62 -0
  118. package/dist/agent-operations/scene-measure.d.ts +73 -0
  119. package/dist/agent-operations/scene-measure.d.ts.map +1 -0
  120. package/dist/agent-operations/scene-measure.js +73 -0
  121. package/dist/agent-operations/scene-queries.d.ts +4510 -0
  122. package/dist/agent-operations/scene-queries.d.ts.map +1 -0
  123. package/dist/agent-operations/scene-queries.js +84 -0
  124. package/dist/agent-operations/scene-view.d.ts +98 -0
  125. package/dist/agent-operations/scene-view.d.ts.map +1 -0
  126. package/dist/agent-operations/scene-view.js +559 -0
  127. package/dist/agent-operations/search-assets.d.ts +14 -0
  128. package/dist/agent-operations/search-assets.d.ts.map +1 -0
  129. package/dist/agent-operations/search-assets.js +42 -0
  130. package/dist/agent-operations/search-materials.d.ts +12 -0
  131. package/dist/agent-operations/search-materials.d.ts.map +1 -0
  132. package/dist/agent-operations/search-materials.js +111 -0
  133. package/dist/agent-operations/stairs.d.ts +5 -0
  134. package/dist/agent-operations/stairs.d.ts.map +1 -0
  135. package/dist/agent-operations/stairs.js +70 -0
  136. package/dist/agent-operations/types.d.ts +59 -0
  137. package/dist/agent-operations/types.d.ts.map +1 -0
  138. package/dist/agent-operations/types.js +1 -0
  139. package/dist/agent-operations/verify-scene.d.ts +50 -0
  140. package/dist/agent-operations/verify-scene.d.ts.map +1 -0
  141. package/dist/agent-operations/verify-scene.js +369 -0
  142. package/dist/agent-operations/wall-opening.d.ts +65 -0
  143. package/dist/agent-operations/wall-opening.d.ts.map +1 -0
  144. package/dist/agent-operations/wall-opening.js +55 -0
  145. package/dist/agent-tools/achieved.d.ts +9 -0
  146. package/dist/agent-tools/achieved.d.ts.map +1 -0
  147. package/dist/agent-tools/achieved.js +8 -0
  148. package/dist/agent-tools/add-object.d.ts +43 -0
  149. package/dist/agent-tools/add-object.d.ts.map +1 -0
  150. package/dist/agent-tools/add-object.js +86 -0
  151. package/dist/agent-tools/assets.d.ts +13 -0
  152. package/dist/agent-tools/assets.d.ts.map +1 -0
  153. package/dist/agent-tools/assets.js +18 -0
  154. package/dist/agent-tools/clear-scene.d.ts +10 -0
  155. package/dist/agent-tools/clear-scene.d.ts.map +1 -0
  156. package/dist/agent-tools/clear-scene.js +9 -0
  157. package/dist/agent-tools/collections.d.ts +35 -0
  158. package/dist/agent-tools/collections.d.ts.map +1 -0
  159. package/dist/agent-tools/collections.js +31 -0
  160. package/dist/agent-tools/columns.d.ts +44 -0
  161. package/dist/agent-tools/columns.d.ts.map +1 -0
  162. package/dist/agent-tools/columns.js +59 -0
  163. package/dist/agent-tools/contract.d.ts +68 -0
  164. package/dist/agent-tools/contract.d.ts.map +1 -0
  165. package/dist/agent-tools/contract.js +1 -0
  166. package/dist/agent-tools/create-room.d.ts +63 -0
  167. package/dist/agent-tools/create-room.d.ts.map +1 -0
  168. package/dist/agent-tools/create-room.js +90 -0
  169. package/dist/agent-tools/find-by-type.d.ts +11 -0
  170. package/dist/agent-tools/find-by-type.d.ts.map +1 -0
  171. package/dist/agent-tools/find-by-type.js +14 -0
  172. package/dist/agent-tools/furnish-room.d.ts +26 -0
  173. package/dist/agent-tools/furnish-room.d.ts.map +1 -0
  174. package/dist/agent-tools/furnish-room.js +35 -0
  175. package/dist/agent-tools/hosted-services.d.ts +402 -0
  176. package/dist/agent-tools/hosted-services.d.ts.map +1 -0
  177. package/dist/agent-tools/hosted-services.js +148 -0
  178. package/dist/agent-tools/index.d.ts +864 -0
  179. package/dist/agent-tools/index.d.ts.map +1 -0
  180. package/dist/agent-tools/index.js +82 -0
  181. package/dist/agent-tools/levels.d.ts +72 -0
  182. package/dist/agent-tools/levels.d.ts.map +1 -0
  183. package/dist/agent-tools/levels.js +76 -0
  184. package/dist/agent-tools/measurement.d.ts +37 -0
  185. package/dist/agent-tools/measurement.d.ts.map +1 -0
  186. package/dist/agent-tools/measurement.js +94 -0
  187. package/dist/agent-tools/node-id.d.ts +3 -0
  188. package/dist/agent-tools/node-id.d.ts.map +1 -0
  189. package/dist/agent-tools/node-id.js +2 -0
  190. package/dist/agent-tools/nodes.d.ts +17 -0
  191. package/dist/agent-tools/nodes.d.ts.map +1 -0
  192. package/dist/agent-tools/nodes.js +13 -0
  193. package/dist/agent-tools/paint.d.ts +46 -0
  194. package/dist/agent-tools/paint.d.ts.map +1 -0
  195. package/dist/agent-tools/paint.js +29 -0
  196. package/dist/agent-tools/place-items.d.ts +19 -0
  197. package/dist/agent-tools/place-items.d.ts.map +1 -0
  198. package/dist/agent-tools/place-items.js +29 -0
  199. package/dist/agent-tools/refusal.d.ts +20 -0
  200. package/dist/agent-tools/refusal.d.ts.map +1 -0
  201. package/dist/agent-tools/refusal.js +29 -0
  202. package/dist/agent-tools/room-structure.d.ts +438 -0
  203. package/dist/agent-tools/room-structure.d.ts.map +1 -0
  204. package/dist/agent-tools/room-structure.js +207 -0
  205. package/dist/agent-tools/search-materials.d.ts +20 -0
  206. package/dist/agent-tools/search-materials.d.ts.map +1 -0
  207. package/dist/agent-tools/search-materials.js +32 -0
  208. package/dist/agent-tools/stairs.d.ts +86 -0
  209. package/dist/agent-tools/stairs.d.ts.map +1 -0
  210. package/dist/agent-tools/stairs.js +103 -0
  211. package/dist/agent-tools/verify-scene.d.ts +13 -0
  212. package/dist/agent-tools/verify-scene.d.ts.map +1 -0
  213. package/dist/agent-tools/verify-scene.js +21 -0
  214. package/dist/agent-tools/view-scene.d.ts +43 -0
  215. package/dist/agent-tools/view-scene.d.ts.map +1 -0
  216. package/dist/agent-tools/view-scene.js +80 -0
  217. package/dist/agent-tools/wall-openings.d.ts +163 -0
  218. package/dist/agent-tools/wall-openings.d.ts.map +1 -0
  219. package/dist/agent-tools/wall-openings.js +144 -0
  220. package/dist/agent-tools/walls.d.ts +21 -0
  221. package/dist/agent-tools/walls.d.ts.map +1 -0
  222. package/dist/agent-tools/walls.js +30 -0
  223. package/dist/agent-tools/write-target.d.ts +12 -0
  224. package/dist/agent-tools/write-target.d.ts.map +1 -0
  225. package/dist/agent-tools/write-target.js +10 -0
  226. package/dist/building/__fixtures__/wall-opening-cases.d.ts +736 -0
  227. package/dist/building/__fixtures__/wall-opening-cases.d.ts.map +1 -0
  228. package/dist/building/__fixtures__/wall-opening-cases.js +307 -0
  229. package/dist/building/door-types.d.ts +22 -0
  230. package/dist/building/door-types.d.ts.map +1 -0
  231. package/dist/building/door-types.js +167 -0
  232. package/dist/building/floor-item-fit.d.ts +38 -0
  233. package/dist/building/floor-item-fit.d.ts.map +1 -0
  234. package/dist/building/floor-item-fit.js +47 -0
  235. package/dist/building/index.d.ts +7 -0
  236. package/dist/building/index.d.ts.map +1 -0
  237. package/dist/building/index.js +6 -0
  238. package/dist/building/level-duplication.d.ts +8983 -0
  239. package/dist/building/level-duplication.d.ts.map +1 -0
  240. package/dist/building/level-duplication.js +314 -0
  241. package/dist/building/opening-style-presets.d.ts +46 -0
  242. package/dist/building/opening-style-presets.d.ts.map +1 -0
  243. package/dist/building/opening-style-presets.js +195 -0
  244. package/dist/building/wall-openings.d.ts +445 -0
  245. package/dist/building/wall-openings.d.ts.map +1 -0
  246. package/dist/building/wall-openings.js +231 -0
  247. package/dist/building/window-types.d.ts +17 -0
  248. package/dist/building/window-types.d.ts.map +1 -0
  249. package/dist/building/window-types.js +31 -0
  250. package/dist/commands/structure/apply-zone-transform.d.ts +23 -0
  251. package/dist/commands/structure/apply-zone-transform.d.ts.map +1 -0
  252. package/dist/commands/structure/apply-zone-transform.js +55 -0
  253. package/dist/commands/structure/create-mezzanine.d.ts +12 -0
  254. package/dist/commands/structure/create-mezzanine.d.ts.map +1 -0
  255. package/dist/commands/structure/create-mezzanine.js +46 -0
  256. package/dist/commands/structure/create-zone.d.ts +32 -0
  257. package/dist/commands/structure/create-zone.d.ts.map +1 -0
  258. package/dist/commands/structure/create-zone.js +126 -0
  259. package/dist/commands/structure/delete-zone.d.ts +51 -0
  260. package/dist/commands/structure/delete-zone.d.ts.map +1 -0
  261. package/dist/commands/structure/delete-zone.js +354 -0
  262. package/dist/commands/structure/divide-zone.d.ts +38 -0
  263. package/dist/commands/structure/divide-zone.d.ts.map +1 -0
  264. package/dist/commands/structure/divide-zone.js +186 -0
  265. package/dist/commands/structure/duplicate-zone.d.ts +7 -0
  266. package/dist/commands/structure/duplicate-zone.d.ts.map +1 -0
  267. package/dist/commands/structure/duplicate-zone.js +21 -0
  268. package/dist/commands/structure/floor-opening.d.ts +36 -0
  269. package/dist/commands/structure/floor-opening.d.ts.map +1 -0
  270. package/dist/commands/structure/floor-opening.js +124 -0
  271. package/dist/commands/structure/index.d.ts +22 -0
  272. package/dist/commands/structure/index.d.ts.map +1 -0
  273. package/dist/commands/structure/index.js +20 -0
  274. package/dist/commands/structure/lock-outside-faces.d.ts +12 -0
  275. package/dist/commands/structure/lock-outside-faces.d.ts.map +1 -0
  276. package/dist/commands/structure/lock-outside-faces.js +32 -0
  277. package/dist/commands/structure/merge-zones.d.ts +5 -0
  278. package/dist/commands/structure/merge-zones.d.ts.map +1 -0
  279. package/dist/commands/structure/merge-zones.js +22 -0
  280. package/dist/commands/structure/mezzanine-content.d.ts +16 -0
  281. package/dist/commands/structure/mezzanine-content.d.ts.map +1 -0
  282. package/dist/commands/structure/mezzanine-content.js +109 -0
  283. package/dist/commands/structure/plan-mezzanine-stair.d.ts +7 -0
  284. package/dist/commands/structure/plan-mezzanine-stair.d.ts.map +1 -0
  285. package/dist/commands/structure/plan-mezzanine-stair.js +127 -0
  286. package/dist/commands/structure/plan-wall-deletion.d.ts +9 -0
  287. package/dist/commands/structure/plan-wall-deletion.d.ts.map +1 -0
  288. package/dist/commands/structure/plan-wall-deletion.js +151 -0
  289. package/dist/commands/structure/rebase-floor-reference.d.ts +7 -0
  290. package/dist/commands/structure/rebase-floor-reference.d.ts.map +1 -0
  291. package/dist/commands/structure/rebase-floor-reference.js +90 -0
  292. package/dist/commands/structure/resize-mezzanine.d.ts +8 -0
  293. package/dist/commands/structure/resize-mezzanine.d.ts.map +1 -0
  294. package/dist/commands/structure/resize-mezzanine.js +43 -0
  295. package/dist/commands/structure/rotate-zone.d.ts +8 -0
  296. package/dist/commands/structure/rotate-zone.d.ts.map +1 -0
  297. package/dist/commands/structure/rotate-zone.js +28 -0
  298. package/dist/commands/structure/set-floor-foundation.d.ts +62 -0
  299. package/dist/commands/structure/set-floor-foundation.d.ts.map +1 -0
  300. package/dist/commands/structure/set-floor-foundation.js +162 -0
  301. package/dist/commands/structure/set-room-floor-construction.d.ts +8 -0
  302. package/dist/commands/structure/set-room-floor-construction.d.ts.map +1 -0
  303. package/dist/commands/structure/set-room-floor-construction.js +72 -0
  304. package/dist/commands/structure/set-wall-geometry.d.ts +10 -0
  305. package/dist/commands/structure/set-wall-geometry.d.ts.map +1 -0
  306. package/dist/commands/structure/set-wall-geometry.js +52 -0
  307. package/dist/commands/structure/set-zone-edges.d.ts +14 -0
  308. package/dist/commands/structure/set-zone-edges.d.ts.map +1 -0
  309. package/dist/commands/structure/set-zone-edges.js +143 -0
  310. package/dist/commands/structure/set-zone-intent.d.ts +39 -0
  311. package/dist/commands/structure/set-zone-intent.d.ts.map +1 -0
  312. package/dist/commands/structure/set-zone-intent.js +125 -0
  313. package/dist/commands/structure/shared.d.ts +4512 -0
  314. package/dist/commands/structure/shared.d.ts.map +1 -0
  315. package/dist/commands/structure/shared.js +102 -0
  316. package/dist/commands/structure/transform-zone.d.ts +23 -0
  317. package/dist/commands/structure/transform-zone.d.ts.map +1 -0
  318. package/dist/commands/structure/transform-zone.js +472 -0
  319. package/dist/commands/structure/validate-mezzanine.d.ts +5 -0
  320. package/dist/commands/structure/validate-mezzanine.d.ts.map +1 -0
  321. package/dist/commands/structure/validate-mezzanine.js +46 -0
  322. package/dist/commands/structure/zone-crossings.d.ts +8 -0
  323. package/dist/commands/structure/zone-crossings.d.ts.map +1 -0
  324. package/dist/commands/structure/zone-crossings.js +162 -0
  325. package/dist/commands/structure/zone-drop.d.ts +4 -0
  326. package/dist/commands/structure/zone-drop.d.ts.map +1 -0
  327. package/dist/commands/structure/zone-drop.js +68 -0
  328. package/dist/commands/structure/zone-insertion.d.ts +4 -0
  329. package/dist/commands/structure/zone-insertion.d.ts.map +1 -0
  330. package/dist/commands/structure/zone-insertion.js +200 -0
  331. package/dist/commands/structure/zone-transform-content.d.ts +6 -0
  332. package/dist/commands/structure/zone-transform-content.d.ts.map +1 -0
  333. package/dist/commands/structure/zone-transform-content.js +117 -0
  334. package/dist/commands/structure/zone-wall-merge.d.ts +4977 -0
  335. package/dist/commands/structure/zone-wall-merge.d.ts.map +1 -0
  336. package/dist/commands/structure/zone-wall-merge.js +135 -0
  337. package/dist/contracts/reference-discovery.d.ts +18 -0
  338. package/dist/contracts/reference-discovery.d.ts.map +1 -0
  339. package/dist/contracts/reference-discovery.js +100 -0
  340. package/dist/contracts/reference-inventory.d.ts +44 -0
  341. package/dist/contracts/reference-inventory.d.ts.map +1 -0
  342. package/dist/contracts/reference-inventory.js +872 -0
  343. package/dist/events/bus.d.ts +70 -9
  344. package/dist/events/bus.d.ts.map +1 -1
  345. package/dist/hooks/scene-registry/item-clip-registry.d.ts +6 -3
  346. package/dist/hooks/scene-registry/item-clip-registry.d.ts.map +1 -1
  347. package/dist/hooks/scene-registry/item-clip-registry.js +2 -1
  348. package/dist/hooks/spatial-grid/floor-placed-elevation.d.ts.map +1 -1
  349. package/dist/hooks/spatial-grid/floor-placed-elevation.js +15 -1
  350. package/dist/hooks/spatial-grid/spatial-grid-manager.d.ts +3 -2
  351. package/dist/hooks/spatial-grid/spatial-grid-manager.d.ts.map +1 -1
  352. package/dist/hooks/spatial-grid/spatial-grid-manager.js +53 -66
  353. package/dist/hooks/spatial-grid/spatial-grid-sync.d.ts +1650 -131
  354. package/dist/hooks/spatial-grid/spatial-grid-sync.d.ts.map +1 -1
  355. package/dist/hooks/spatial-grid/spatial-grid-sync.js +86 -83
  356. package/dist/hooks/spatial-grid/support-host-patch.d.ts +1 -0
  357. package/dist/hooks/spatial-grid/support-host-patch.d.ts.map +1 -1
  358. package/dist/hooks/spatial-grid/support-host-patch.js +12 -5
  359. package/dist/index.d.ts +83 -13
  360. package/dist/index.d.ts.map +1 -1
  361. package/dist/index.js +78 -11
  362. package/dist/lib/__bench__/near-linear-walls.d.ts +2 -0
  363. package/dist/lib/__bench__/near-linear-walls.d.ts.map +1 -0
  364. package/dist/lib/__bench__/near-linear-walls.js +24 -0
  365. package/dist/lib/__bench__/structure-preview.bench.d.ts +2 -0
  366. package/dist/lib/__bench__/structure-preview.bench.d.ts.map +1 -0
  367. package/dist/lib/__bench__/structure-preview.bench.js +72 -0
  368. package/dist/lib/__fixtures__/mezzanine.d.ts +13968 -0
  369. package/dist/lib/__fixtures__/mezzanine.d.ts.map +1 -0
  370. package/dist/lib/__fixtures__/mezzanine.js +43 -0
  371. package/dist/lib/absorb-wall-separators.d.ts +4483 -0
  372. package/dist/lib/absorb-wall-separators.d.ts.map +1 -0
  373. package/dist/lib/absorb-wall-separators.js +65 -0
  374. package/dist/lib/angle-accumulator.d.ts +3 -0
  375. package/dist/lib/angle-accumulator.d.ts.map +1 -0
  376. package/dist/lib/angle-accumulator.js +13 -0
  377. package/dist/lib/artifact-store.d.ts +31 -0
  378. package/dist/lib/artifact-store.d.ts.map +1 -0
  379. package/dist/lib/artifact-store.js +42 -0
  380. package/dist/lib/assembly-stack.d.ts +54 -0
  381. package/dist/lib/assembly-stack.d.ts.map +1 -0
  382. package/dist/lib/assembly-stack.js +52 -0
  383. package/dist/lib/asset-storage.d.ts.map +1 -1
  384. package/dist/lib/asset-storage.js +3 -0
  385. package/dist/lib/canonical-opening-ring.d.ts +3 -0
  386. package/dist/lib/canonical-opening-ring.d.ts.map +1 -0
  387. package/dist/lib/canonical-opening-ring.js +14 -0
  388. package/dist/lib/ceiling-children.d.ts +8 -0
  389. package/dist/lib/ceiling-children.d.ts.map +1 -0
  390. package/dist/lib/ceiling-children.js +36 -0
  391. package/dist/lib/ceiling-surface.d.ts +40 -0
  392. package/dist/lib/ceiling-surface.d.ts.map +1 -0
  393. package/dist/lib/ceiling-surface.js +65 -0
  394. package/dist/lib/cutter-host.d.ts +5 -0
  395. package/dist/lib/cutter-host.d.ts.map +1 -0
  396. package/dist/lib/cutter-host.js +30 -0
  397. package/dist/lib/floor-construction-lift.d.ts +4 -0
  398. package/dist/lib/floor-construction-lift.d.ts.map +1 -0
  399. package/dist/lib/floor-construction-lift.js +54 -0
  400. package/dist/lib/floor-footprint-key.d.ts +3 -0
  401. package/dist/lib/floor-footprint-key.d.ts.map +1 -0
  402. package/dist/lib/floor-footprint-key.js +9 -0
  403. package/dist/lib/floor-footprint-name.d.ts +11 -0
  404. package/dist/lib/floor-footprint-name.d.ts.map +1 -0
  405. package/dist/lib/floor-footprint-name.js +52 -0
  406. package/dist/lib/floor-foundation-datum.d.ts +31 -0
  407. package/dist/lib/floor-foundation-datum.d.ts.map +1 -0
  408. package/dist/lib/floor-foundation-datum.js +226 -0
  409. package/dist/lib/floor-foundation-stack.d.ts +16 -0
  410. package/dist/lib/floor-foundation-stack.d.ts.map +1 -0
  411. package/dist/lib/floor-foundation-stack.js +214 -0
  412. package/dist/lib/floor-intent-changes.d.ts +10 -0
  413. package/dist/lib/floor-intent-changes.d.ts.map +1 -0
  414. package/dist/lib/floor-intent-changes.js +461 -0
  415. package/dist/lib/floor-opening-footprints.d.ts +24 -0
  416. package/dist/lib/floor-opening-footprints.d.ts.map +1 -0
  417. package/dist/lib/floor-opening-footprints.js +127 -0
  418. package/dist/lib/floor-opening-intent.d.ts +16 -0
  419. package/dist/lib/floor-opening-intent.d.ts.map +1 -0
  420. package/dist/lib/floor-opening-intent.js +82 -0
  421. package/dist/lib/floor-plate-id.d.ts +5 -0
  422. package/dist/lib/floor-plate-id.d.ts.map +1 -0
  423. package/dist/lib/floor-plate-id.js +20 -0
  424. package/dist/lib/floor-plate-paint.d.ts +8 -0
  425. package/dist/lib/floor-plate-paint.d.ts.map +1 -0
  426. package/dist/lib/floor-plate-paint.js +11 -0
  427. package/dist/lib/floor-plates.d.ts +211 -0
  428. package/dist/lib/floor-plates.d.ts.map +1 -0
  429. package/dist/lib/floor-plates.js +729 -0
  430. package/dist/lib/floor-room-faces.d.ts +5 -0
  431. package/dist/lib/floor-room-faces.d.ts.map +1 -0
  432. package/dist/lib/floor-room-faces.js +29 -0
  433. package/dist/lib/floor-step-finish.d.ts +49 -0
  434. package/dist/lib/floor-step-finish.d.ts.map +1 -0
  435. package/dist/lib/floor-step-finish.js +128 -0
  436. package/dist/lib/geometry-script-node.d.ts +82 -0
  437. package/dist/lib/geometry-script-node.d.ts.map +1 -0
  438. package/dist/lib/geometry-script-node.js +147 -0
  439. package/dist/lib/geometry-surfaces.d.ts +61 -0
  440. package/dist/lib/geometry-surfaces.d.ts.map +1 -0
  441. package/dist/lib/geometry-surfaces.js +156 -0
  442. package/dist/lib/item-slab-support.d.ts +14 -0
  443. package/dist/lib/item-slab-support.d.ts.map +1 -0
  444. package/dist/lib/item-slab-support.js +40 -0
  445. package/dist/lib/level-footprints.d.ts +23 -0
  446. package/dist/lib/level-footprints.d.ts.map +1 -0
  447. package/dist/lib/level-footprints.js +398 -0
  448. package/dist/lib/level-name.d.ts +7 -0
  449. package/dist/lib/level-name.d.ts.map +1 -1
  450. package/dist/lib/level-name.js +11 -3
  451. package/dist/lib/new-zone.d.ts +10 -0
  452. package/dist/lib/new-zone.d.ts.map +1 -0
  453. package/dist/lib/new-zone.js +10 -0
  454. package/dist/lib/node-ancestry.d.ts +30 -0
  455. package/dist/lib/node-ancestry.d.ts.map +1 -0
  456. package/dist/lib/node-ancestry.js +76 -0
  457. package/dist/lib/node-visibility.d.ts +12 -0
  458. package/dist/lib/node-visibility.d.ts.map +1 -0
  459. package/dist/lib/node-visibility.js +12 -0
  460. package/dist/lib/object-cuts.d.ts +11 -0
  461. package/dist/lib/object-cuts.d.ts.map +1 -0
  462. package/dist/lib/object-cuts.js +63 -0
  463. package/dist/lib/opening-floor-datum.d.ts +24 -0
  464. package/dist/lib/opening-floor-datum.d.ts.map +1 -0
  465. package/dist/lib/opening-floor-datum.js +145 -0
  466. package/dist/lib/own-floor-intent.d.ts +15 -0
  467. package/dist/lib/own-floor-intent.d.ts.map +1 -0
  468. package/dist/lib/own-floor-intent.js +201 -0
  469. package/dist/lib/plate-reference.d.ts +3 -0
  470. package/dist/lib/plate-reference.d.ts.map +1 -0
  471. package/dist/lib/plate-reference.js +91 -0
  472. package/dist/lib/plate-surface.d.ts +120 -0
  473. package/dist/lib/plate-surface.d.ts.map +1 -0
  474. package/dist/lib/plate-surface.js +725 -0
  475. package/dist/lib/polygon-boolean.d.ts +17 -0
  476. package/dist/lib/polygon-boolean.d.ts.map +1 -0
  477. package/dist/lib/polygon-boolean.js +195 -0
  478. package/dist/lib/polygon-label.d.ts +7 -0
  479. package/dist/lib/polygon-label.d.ts.map +1 -0
  480. package/dist/lib/polygon-label.js +94 -0
  481. package/dist/lib/room-drawn-floor.d.ts +29 -0
  482. package/dist/lib/room-drawn-floor.d.ts.map +1 -0
  483. package/dist/lib/room-drawn-floor.js +88 -0
  484. package/dist/lib/room-floor-choices.d.ts +11 -0
  485. package/dist/lib/room-floor-choices.d.ts.map +1 -0
  486. package/dist/lib/room-floor-choices.js +60 -0
  487. package/dist/lib/room-floor-feasibility.d.ts +25 -0
  488. package/dist/lib/room-floor-feasibility.d.ts.map +1 -0
  489. package/dist/lib/room-floor-feasibility.js +293 -0
  490. package/dist/lib/room-floor-plate.d.ts +3 -0
  491. package/dist/lib/room-floor-plate.d.ts.map +1 -0
  492. package/dist/lib/room-floor-plate.js +4 -0
  493. package/dist/lib/room-graph.d.ts +79 -0
  494. package/dist/lib/room-graph.d.ts.map +1 -0
  495. package/dist/lib/room-graph.js +1265 -0
  496. package/dist/lib/room-name.d.ts +10 -0
  497. package/dist/lib/room-name.d.ts.map +1 -0
  498. package/dist/lib/room-name.js +22 -0
  499. package/dist/lib/room-topology-index.d.ts +53 -5
  500. package/dist/lib/room-topology-index.d.ts.map +1 -1
  501. package/dist/lib/room-topology-index.js +176 -30
  502. package/dist/lib/room-vertical-placement.d.ts +12 -0
  503. package/dist/lib/room-vertical-placement.d.ts.map +1 -0
  504. package/dist/lib/room-vertical-placement.js +28 -0
  505. package/dist/lib/room-zone-adoption.d.ts +74 -0
  506. package/dist/lib/room-zone-adoption.d.ts.map +1 -0
  507. package/dist/lib/room-zone-adoption.js +150 -0
  508. package/dist/lib/setback-envelope.d.ts +73 -0
  509. package/dist/lib/setback-envelope.d.ts.map +1 -0
  510. package/dist/lib/setback-envelope.js +506 -0
  511. package/dist/lib/slab-polygon.d.ts.map +1 -1
  512. package/dist/lib/slab-polygon.js +33 -12
  513. package/dist/lib/slots.d.ts +20 -0
  514. package/dist/lib/slots.d.ts.map +1 -1
  515. package/dist/lib/slots.js +44 -0
  516. package/dist/lib/space-detection.d.ts +14 -94
  517. package/dist/lib/space-detection.d.ts.map +1 -1
  518. package/dist/lib/space-detection.js +244 -1616
  519. package/dist/lib/structure-commit.d.ts +38 -0
  520. package/dist/lib/structure-commit.d.ts.map +1 -0
  521. package/dist/lib/structure-commit.js +52 -0
  522. package/dist/lib/structure-kernel.d.ts +66 -0
  523. package/dist/lib/structure-kernel.d.ts.map +1 -0
  524. package/dist/lib/structure-kernel.js +735 -0
  525. package/dist/lib/structure-reconcile.d.ts +15 -0
  526. package/dist/lib/structure-reconcile.d.ts.map +1 -0
  527. package/dist/lib/structure-reconcile.js +218 -0
  528. package/dist/lib/terrain-contours.d.ts +29 -0
  529. package/dist/lib/terrain-contours.d.ts.map +1 -0
  530. package/dist/lib/terrain-contours.js +199 -0
  531. package/dist/lib/terrain-source-persisted.d.ts +42 -0
  532. package/dist/lib/terrain-source-persisted.d.ts.map +1 -0
  533. package/dist/lib/terrain-source-persisted.js +68 -0
  534. package/dist/lib/terrain-source.d.ts +2 -40
  535. package/dist/lib/terrain-source.d.ts.map +1 -1
  536. package/dist/lib/terrain-source.js +2 -68
  537. package/dist/lib/terrain-support-query.d.ts +83 -0
  538. package/dist/lib/terrain-support-query.d.ts.map +1 -0
  539. package/dist/lib/terrain-support-query.js +187 -0
  540. package/dist/lib/terrain-support.d.ts +1 -77
  541. package/dist/lib/terrain-support.d.ts.map +1 -1
  542. package/dist/lib/terrain-support.js +3 -181
  543. package/dist/lib/unit-containment.js +2 -2
  544. package/dist/lib/unit-report.d.ts.map +1 -1
  545. package/dist/lib/unit-report.js +5 -4
  546. package/dist/lib/zone-colors.d.ts +11 -0
  547. package/dist/lib/zone-colors.d.ts.map +1 -0
  548. package/dist/lib/zone-colors.js +32 -0
  549. package/dist/lib/zone-quantities.d.ts.map +1 -1
  550. package/dist/lib/zone-quantities.js +113 -223
  551. package/dist/material-library.d.ts +9 -1
  552. package/dist/material-library.d.ts.map +1 -1
  553. package/dist/material-library.js +550 -1
  554. package/dist/node-slots/block.d.ts +7 -0
  555. package/dist/node-slots/block.d.ts.map +1 -0
  556. package/dist/node-slots/block.js +27 -0
  557. package/dist/node-slots/cabinet.d.ts +4 -0
  558. package/dist/node-slots/cabinet.d.ts.map +1 -0
  559. package/dist/node-slots/cabinet.js +24 -0
  560. package/dist/node-slots/ceiling.d.ts +6 -0
  561. package/dist/node-slots/ceiling.d.ts.map +1 -0
  562. package/dist/node-slots/ceiling.js +7 -0
  563. package/dist/node-slots/column.d.ts +9 -0
  564. package/dist/node-slots/column.d.ts.map +1 -0
  565. package/dist/node-slots/column.js +24 -0
  566. package/dist/node-slots/door.d.ts +9 -0
  567. package/dist/node-slots/door.d.ts.map +1 -0
  568. package/dist/node-slots/door.js +20 -0
  569. package/dist/node-slots/duct.d.ts +5 -0
  570. package/dist/node-slots/duct.d.ts.map +1 -0
  571. package/dist/node-slots/duct.js +5 -0
  572. package/dist/node-slots/elevator.d.ts +9 -0
  573. package/dist/node-slots/elevator.d.ts.map +1 -0
  574. package/dist/node-slots/elevator.js +17 -0
  575. package/dist/node-slots/fence.d.ts +10 -0
  576. package/dist/node-slots/fence.d.ts.map +1 -0
  577. package/dist/node-slots/fence.js +23 -0
  578. package/dist/node-slots/index.d.ts +25 -0
  579. package/dist/node-slots/index.d.ts.map +1 -0
  580. package/dist/node-slots/index.js +92 -0
  581. package/dist/node-slots/lean-to-extension.d.ts +5 -0
  582. package/dist/node-slots/lean-to-extension.d.ts.map +1 -0
  583. package/dist/node-slots/lean-to-extension.js +15 -0
  584. package/dist/node-slots/procedural-item.d.ts +4 -0
  585. package/dist/node-slots/procedural-item.d.ts.map +1 -0
  586. package/dist/node-slots/procedural-item.js +3 -0
  587. package/dist/node-slots/roof-accessories.d.ts +9 -0
  588. package/dist/node-slots/roof-accessories.d.ts.map +1 -0
  589. package/dist/node-slots/roof-accessories.js +34 -0
  590. package/dist/node-slots/shelf.d.ts +9 -0
  591. package/dist/node-slots/shelf.d.ts.map +1 -0
  592. package/dist/node-slots/shelf.js +30 -0
  593. package/dist/node-slots/slab.d.ts +7 -0
  594. package/dist/node-slots/slab.d.ts.map +1 -0
  595. package/dist/node-slots/slab.js +21 -0
  596. package/dist/node-slots/stair.d.ts +8 -0
  597. package/dist/node-slots/stair.d.ts.map +1 -0
  598. package/dist/node-slots/stair.js +17 -0
  599. package/dist/node-slots/wall.d.ts +12 -0
  600. package/dist/node-slots/wall.d.ts.map +1 -0
  601. package/dist/node-slots/wall.js +55 -0
  602. package/dist/node-slots/window.d.ts +5 -0
  603. package/dist/node-slots/window.d.ts.map +1 -0
  604. package/dist/node-slots/window.js +11 -0
  605. package/dist/procedural-items/design-placement.d.ts +49 -0
  606. package/dist/procedural-items/design-placement.d.ts.map +1 -0
  607. package/dist/procedural-items/design-placement.js +129 -0
  608. package/dist/procedural-items/design.d.ts +261 -0
  609. package/dist/procedural-items/design.d.ts.map +1 -0
  610. package/dist/procedural-items/design.js +707 -0
  611. package/dist/procedural-items/fixtures.d.ts +464 -24
  612. package/dist/procedural-items/fixtures.d.ts.map +1 -1
  613. package/dist/procedural-items/index.d.ts +5 -0
  614. package/dist/procedural-items/index.d.ts.map +1 -1
  615. package/dist/procedural-items/index.js +5 -0
  616. package/dist/procedural-items/integration.d.ts +127 -6
  617. package/dist/procedural-items/integration.d.ts.map +1 -1
  618. package/dist/procedural-items/joints.d.ts +56 -0
  619. package/dist/procedural-items/joints.d.ts.map +1 -0
  620. package/dist/procedural-items/joints.js +251 -0
  621. package/dist/procedural-items/library-colors.d.ts +12 -0
  622. package/dist/procedural-items/library-colors.d.ts.map +1 -1
  623. package/dist/procedural-items/library-colors.js +37 -3
  624. package/dist/procedural-items/motion-controller.d.ts +29 -0
  625. package/dist/procedural-items/motion-controller.d.ts.map +1 -0
  626. package/dist/procedural-items/motion-controller.js +130 -0
  627. package/dist/procedural-items/node.d.ts +490 -24
  628. package/dist/procedural-items/node.d.ts.map +1 -1
  629. package/dist/procedural-items/query.d.ts +19 -1
  630. package/dist/procedural-items/query.d.ts.map +1 -1
  631. package/dist/procedural-items/query.js +131 -48
  632. package/dist/procedural-items/recipe.d.ts +258 -14
  633. package/dist/procedural-items/recipe.d.ts.map +1 -1
  634. package/dist/procedural-items/recipe.js +933 -61
  635. package/dist/procedural-items/section.d.ts +27 -0
  636. package/dist/procedural-items/section.d.ts.map +1 -0
  637. package/dist/procedural-items/section.js +237 -0
  638. package/dist/procedural-items/spatial.d.ts +21 -0
  639. package/dist/procedural-items/spatial.d.ts.map +1 -1
  640. package/dist/procedural-items/spatial.js +90 -0
  641. package/dist/registry/handles.d.ts +30 -1
  642. package/dist/registry/handles.d.ts.map +1 -1
  643. package/dist/registry/index.d.ts +7 -5
  644. package/dist/registry/index.d.ts.map +1 -1
  645. package/dist/registry/index.js +4 -2
  646. package/dist/registry/mechanism.d.ts +9 -0
  647. package/dist/registry/mechanism.d.ts.map +1 -0
  648. package/dist/registry/mechanism.js +21 -0
  649. package/dist/registry/registry.d.ts +6 -3
  650. package/dist/registry/registry.d.ts.map +1 -1
  651. package/dist/registry/registry.js +59 -22
  652. package/dist/registry/scene-api.d.ts +20 -0
  653. package/dist/registry/scene-api.d.ts.map +1 -1
  654. package/dist/registry/scene-api.js +26 -13
  655. package/dist/registry/subtree.d.ts +8 -0
  656. package/dist/registry/subtree.d.ts.map +1 -1
  657. package/dist/registry/subtree.js +59 -0
  658. package/dist/registry/types.d.ts +352 -13
  659. package/dist/registry/types.d.ts.map +1 -1
  660. package/dist/schema/__fixtures__/node-fixtures.d.ts.map +1 -1
  661. package/dist/schema/__fixtures__/node-fixtures.js +2 -0
  662. package/dist/schema/assembly.d.ts +153 -0
  663. package/dist/schema/assembly.d.ts.map +1 -0
  664. package/dist/schema/assembly.js +155 -0
  665. package/dist/schema/asset-url.d.ts +2 -1
  666. package/dist/schema/asset-url.d.ts.map +1 -1
  667. package/dist/schema/asset-url.js +5 -2
  668. package/dist/schema/base.d.ts +26 -0
  669. package/dist/schema/base.d.ts.map +1 -1
  670. package/dist/schema/base.js +2 -0
  671. package/dist/schema/collection-templates.d.ts +46 -0
  672. package/dist/schema/collection-templates.d.ts.map +1 -0
  673. package/dist/schema/collection-templates.js +14 -0
  674. package/dist/schema/collections.d.ts +7 -0
  675. package/dist/schema/collections.d.ts.map +1 -1
  676. package/dist/schema/cut.d.ts +29 -0
  677. package/dist/schema/cut.d.ts.map +1 -0
  678. package/dist/schema/cut.js +50 -0
  679. package/dist/schema/geometry-metadata.d.ts +51 -0
  680. package/dist/schema/geometry-metadata.d.ts.map +1 -0
  681. package/dist/schema/geometry-metadata.js +57 -0
  682. package/dist/schema/geometry-source.d.ts +250 -0
  683. package/dist/schema/geometry-source.d.ts.map +1 -0
  684. package/dist/schema/geometry-source.js +130 -0
  685. package/dist/schema/index.d.ts +20 -7
  686. package/dist/schema/index.d.ts.map +1 -1
  687. package/dist/schema/index.js +22 -5
  688. package/dist/schema/nodes/block.d.ts +28 -2
  689. package/dist/schema/nodes/block.d.ts.map +1 -1
  690. package/dist/schema/nodes/block.js +22 -9
  691. package/dist/schema/nodes/box-vent.d.ts +26 -0
  692. package/dist/schema/nodes/box-vent.d.ts.map +1 -1
  693. package/dist/schema/nodes/building.d.ts +26 -0
  694. package/dist/schema/nodes/building.d.ts.map +1 -1
  695. package/dist/schema/nodes/cabinet.d.ts +61 -9
  696. package/dist/schema/nodes/cabinet.d.ts.map +1 -1
  697. package/dist/schema/nodes/ceiling.d.ts +37 -0
  698. package/dist/schema/nodes/ceiling.d.ts.map +1 -1
  699. package/dist/schema/nodes/ceiling.js +8 -0
  700. package/dist/schema/nodes/chimney.d.ts +26 -0
  701. package/dist/schema/nodes/chimney.d.ts.map +1 -1
  702. package/dist/schema/nodes/column.d.ts +126 -0
  703. package/dist/schema/nodes/column.d.ts.map +1 -1
  704. package/dist/schema/nodes/column.js +2 -0
  705. package/dist/schema/nodes/construction-dimension.d.ts +26 -0
  706. package/dist/schema/nodes/construction-dimension.d.ts.map +1 -1
  707. package/dist/schema/nodes/cupola.d.ts +26 -0
  708. package/dist/schema/nodes/cupola.d.ts.map +1 -1
  709. package/dist/schema/nodes/curtain-wall.d.ts +129 -0
  710. package/dist/schema/nodes/curtain-wall.d.ts.map +1 -0
  711. package/dist/schema/nodes/curtain-wall.js +49 -0
  712. package/dist/schema/nodes/door.d.ts +141 -22
  713. package/dist/schema/nodes/door.d.ts.map +1 -1
  714. package/dist/schema/nodes/door.js +18 -33
  715. package/dist/schema/nodes/dormer.d.ts +28 -2
  716. package/dist/schema/nodes/dormer.d.ts.map +1 -1
  717. package/dist/schema/nodes/downspout.d.ts +27 -1
  718. package/dist/schema/nodes/downspout.d.ts.map +1 -1
  719. package/dist/schema/nodes/duct-fitting.d.ts +27 -1
  720. package/dist/schema/nodes/duct-fitting.d.ts.map +1 -1
  721. package/dist/schema/nodes/duct-segment.d.ts +27 -1
  722. package/dist/schema/nodes/duct-segment.d.ts.map +1 -1
  723. package/dist/schema/nodes/duct-terminal.d.ts +26 -0
  724. package/dist/schema/nodes/duct-terminal.d.ts.map +1 -1
  725. package/dist/schema/nodes/elevator.d.ts +26 -0
  726. package/dist/schema/nodes/elevator.d.ts.map +1 -1
  727. package/dist/schema/nodes/eyebrow-vent.d.ts +26 -0
  728. package/dist/schema/nodes/eyebrow-vent.d.ts.map +1 -1
  729. package/dist/schema/nodes/fence-feature.d.ts +141 -0
  730. package/dist/schema/nodes/fence-feature.d.ts.map +1 -0
  731. package/dist/schema/nodes/fence-feature.js +21 -0
  732. package/dist/schema/nodes/fence.d.ts +186 -0
  733. package/dist/schema/nodes/fence.d.ts.map +1 -1
  734. package/dist/schema/nodes/fence.js +92 -7
  735. package/dist/schema/nodes/floor-opening.d.ts +61 -0
  736. package/dist/schema/nodes/floor-opening.d.ts.map +1 -0
  737. package/dist/schema/nodes/floor-opening.js +17 -0
  738. package/dist/schema/nodes/guide.d.ts +26 -0
  739. package/dist/schema/nodes/guide.d.ts.map +1 -1
  740. package/dist/schema/nodes/gutter.d.ts +26 -0
  741. package/dist/schema/nodes/gutter.d.ts.map +1 -1
  742. package/dist/schema/nodes/hvac-equipment.d.ts +26 -0
  743. package/dist/schema/nodes/hvac-equipment.d.ts.map +1 -1
  744. package/dist/schema/nodes/imported-mesh.d.ts +26 -0
  745. package/dist/schema/nodes/imported-mesh.d.ts.map +1 -1
  746. package/dist/schema/nodes/item.d.ts +153 -2
  747. package/dist/schema/nodes/item.d.ts.map +1 -1
  748. package/dist/schema/nodes/item.js +13 -0
  749. package/dist/schema/nodes/lean-to-extension.d.ts +26 -0
  750. package/dist/schema/nodes/lean-to-extension.d.ts.map +1 -1
  751. package/dist/schema/nodes/level.d.ts +27 -1
  752. package/dist/schema/nodes/level.d.ts.map +1 -1
  753. package/dist/schema/nodes/lineset.d.ts +26 -0
  754. package/dist/schema/nodes/lineset.d.ts.map +1 -1
  755. package/dist/schema/nodes/liquid-line.d.ts +26 -0
  756. package/dist/schema/nodes/liquid-line.d.ts.map +1 -1
  757. package/dist/schema/nodes/measurement.d.ts +26 -0
  758. package/dist/schema/nodes/measurement.d.ts.map +1 -1
  759. package/dist/schema/nodes/opening-types.d.ts +41 -0
  760. package/dist/schema/nodes/opening-types.d.ts.map +1 -0
  761. package/dist/schema/nodes/opening-types.js +48 -0
  762. package/dist/schema/nodes/pipe-fitting.d.ts +26 -0
  763. package/dist/schema/nodes/pipe-fitting.d.ts.map +1 -1
  764. package/dist/schema/nodes/pipe-segment.d.ts +26 -0
  765. package/dist/schema/nodes/pipe-segment.d.ts.map +1 -1
  766. package/dist/schema/nodes/pipe-trap.d.ts +26 -0
  767. package/dist/schema/nodes/pipe-trap.d.ts.map +1 -1
  768. package/dist/schema/nodes/ridge-vent.d.ts +26 -0
  769. package/dist/schema/nodes/ridge-vent.d.ts.map +1 -1
  770. package/dist/schema/nodes/roof-segment-walls.d.ts.map +1 -1
  771. package/dist/schema/nodes/roof-segment-walls.js +2 -1
  772. package/dist/schema/nodes/roof-segment.d.ts +30 -2
  773. package/dist/schema/nodes/roof-segment.d.ts.map +1 -1
  774. package/dist/schema/nodes/roof-segment.js +9 -0
  775. package/dist/schema/nodes/roof.d.ts +101 -0
  776. package/dist/schema/nodes/roof.d.ts.map +1 -1
  777. package/dist/schema/nodes/roof.js +6 -0
  778. package/dist/schema/nodes/scan.d.ts +26 -0
  779. package/dist/schema/nodes/scan.d.ts.map +1 -1
  780. package/dist/schema/nodes/separator.d.ts +50 -0
  781. package/dist/schema/nodes/separator.d.ts.map +1 -0
  782. package/dist/schema/nodes/separator.js +8 -0
  783. package/dist/schema/nodes/shelf.d.ts +26 -0
  784. package/dist/schema/nodes/shelf.d.ts.map +1 -1
  785. package/dist/schema/nodes/site.d.ts +192 -0
  786. package/dist/schema/nodes/site.d.ts.map +1 -1
  787. package/dist/schema/nodes/site.js +178 -1
  788. package/dist/schema/nodes/skylight.d.ts +30 -4
  789. package/dist/schema/nodes/skylight.d.ts.map +1 -1
  790. package/dist/schema/nodes/slab.d.ts +84 -0
  791. package/dist/schema/nodes/slab.d.ts.map +1 -1
  792. package/dist/schema/nodes/slab.js +37 -2
  793. package/dist/schema/nodes/solar-panel.d.ts +26 -0
  794. package/dist/schema/nodes/solar-panel.d.ts.map +1 -1
  795. package/dist/schema/nodes/spawn.d.ts +26 -0
  796. package/dist/schema/nodes/spawn.d.ts.map +1 -1
  797. package/dist/schema/nodes/stair-construction.d.ts +21 -0
  798. package/dist/schema/nodes/stair-construction.d.ts.map +1 -0
  799. package/dist/schema/nodes/stair-construction.js +13 -0
  800. package/dist/schema/nodes/stair-design-targets.d.ts +9 -0
  801. package/dist/schema/nodes/stair-design-targets.d.ts.map +1 -0
  802. package/dist/schema/nodes/stair-design-targets.js +7 -0
  803. package/dist/schema/nodes/stair-segment.d.ts +72 -4
  804. package/dist/schema/nodes/stair-segment.d.ts.map +1 -1
  805. package/dist/schema/nodes/stair-segment.js +13 -0
  806. package/dist/schema/nodes/stair.d.ts +119 -2
  807. package/dist/schema/nodes/stair.d.ts.map +1 -1
  808. package/dist/schema/nodes/stair.js +59 -2
  809. package/dist/schema/nodes/structural-grid.d.ts +26 -0
  810. package/dist/schema/nodes/structural-grid.d.ts.map +1 -1
  811. package/dist/schema/nodes/surface-hole-metadata.d.ts +3 -0
  812. package/dist/schema/nodes/surface-hole-metadata.d.ts.map +1 -1
  813. package/dist/schema/nodes/surface-hole-metadata.js +2 -1
  814. package/dist/schema/nodes/surface-paint-region.d.ts +14 -0
  815. package/dist/schema/nodes/surface-paint-region.d.ts.map +1 -0
  816. package/dist/schema/nodes/surface-paint-region.js +12 -0
  817. package/dist/schema/nodes/turbine-vent.d.ts +26 -0
  818. package/dist/schema/nodes/turbine-vent.d.ts.map +1 -1
  819. package/dist/schema/nodes/unit.d.ts +26 -0
  820. package/dist/schema/nodes/unit.d.ts.map +1 -1
  821. package/dist/schema/nodes/wall.d.ts +423 -59
  822. package/dist/schema/nodes/wall.d.ts.map +1 -1
  823. package/dist/schema/nodes/wall.js +188 -186
  824. package/dist/schema/nodes/window.d.ts +139 -20
  825. package/dist/schema/nodes/window.d.ts.map +1 -1
  826. package/dist/schema/nodes/window.js +12 -14
  827. package/dist/schema/nodes/zone.d.ts +69 -1
  828. package/dist/schema/nodes/zone.d.ts.map +1 -1
  829. package/dist/schema/nodes/zone.js +46 -0
  830. package/dist/schema/provenance.d.ts +118 -0
  831. package/dist/schema/provenance.d.ts.map +1 -0
  832. package/dist/schema/provenance.js +76 -0
  833. package/dist/schema/source-ref.d.ts +23 -0
  834. package/dist/schema/source-ref.d.ts.map +1 -0
  835. package/dist/schema/source-ref.js +29 -0
  836. package/dist/schema/types.d.ts +3389 -67
  837. package/dist/schema/types.d.ts.map +1 -1
  838. package/dist/schema/types.js +7 -0
  839. package/dist/services/__fixtures__/hosting.d.ts +3 -0
  840. package/dist/services/__fixtures__/hosting.d.ts.map +1 -0
  841. package/dist/services/__fixtures__/hosting.js +9 -0
  842. package/dist/services/__fixtures__/shelf-surface-rows.d.ts +4 -0
  843. package/dist/services/__fixtures__/shelf-surface-rows.d.ts.map +1 -0
  844. package/dist/services/__fixtures__/shelf-surface-rows.js +18 -0
  845. package/dist/services/alignment-anchors.d.ts +2 -1
  846. package/dist/services/alignment-anchors.d.ts.map +1 -1
  847. package/dist/services/alignment-anchors.js +9 -6
  848. package/dist/services/hosting.d.ts +3 -0
  849. package/dist/services/hosting.d.ts.map +1 -1
  850. package/dist/services/hosting.js +24 -7
  851. package/dist/services/index.d.ts +4 -4
  852. package/dist/services/index.d.ts.map +1 -1
  853. package/dist/services/index.js +4 -4
  854. package/dist/services/level-height.d.ts.map +1 -1
  855. package/dist/services/level-height.js +6 -4
  856. package/dist/services/snap.d.ts +3 -0
  857. package/dist/services/snap.d.ts.map +1 -1
  858. package/dist/services/snap.js +11 -0
  859. package/dist/services/storey.d.ts +21 -1
  860. package/dist/services/storey.d.ts.map +1 -1
  861. package/dist/services/storey.js +94 -8
  862. package/dist/services/surface-hosting.d.ts +6 -2
  863. package/dist/services/surface-hosting.d.ts.map +1 -1
  864. package/dist/services/surface-hosting.js +51 -11
  865. package/dist/store/actions/node-actions.d.ts +4563 -8
  866. package/dist/store/actions/node-actions.d.ts.map +1 -1
  867. package/dist/store/actions/node-actions.js +497 -269
  868. package/dist/store/derived-node-guard.d.ts +84 -0
  869. package/dist/store/derived-node-guard.d.ts.map +1 -0
  870. package/dist/store/derived-node-guard.js +586 -0
  871. package/dist/store/history-control.d.ts +34 -0
  872. package/dist/store/history-control.d.ts.map +1 -1
  873. package/dist/store/history-control.js +99 -1
  874. package/dist/store/history-drafts.d.ts +48 -0
  875. package/dist/store/history-drafts.d.ts.map +1 -0
  876. package/dist/store/history-drafts.js +403 -0
  877. package/dist/store/history-invalidation.d.ts.map +1 -1
  878. package/dist/store/history-invalidation.js +1 -0
  879. package/dist/store/item-interaction.d.ts +28 -0
  880. package/dist/store/item-interaction.d.ts.map +1 -0
  881. package/dist/store/item-interaction.js +34 -0
  882. package/dist/store/registered-node-defaults.d.ts +11 -0
  883. package/dist/store/registered-node-defaults.d.ts.map +1 -0
  884. package/dist/store/registered-node-defaults.js +25 -0
  885. package/dist/store/scene-annotations.d.ts +8969 -0
  886. package/dist/store/scene-annotations.d.ts.map +1 -0
  887. package/dist/store/scene-annotations.js +107 -0
  888. package/dist/store/use-interactive.d.ts +23 -1
  889. package/dist/store/use-interactive.d.ts.map +1 -1
  890. package/dist/store/use-interactive.js +128 -5
  891. package/dist/store/use-scene.d.ts +68 -12
  892. package/dist/store/use-scene.d.ts.map +1 -1
  893. package/dist/store/use-scene.js +429 -306
  894. package/dist/systems/elevator/elevator-opening-sync.d.ts.map +1 -1
  895. package/dist/systems/elevator/elevator-opening-sync.js +4 -6
  896. package/dist/systems/elevator/elevator-opening-system.d.ts.map +1 -1
  897. package/dist/systems/elevator/elevator-opening-system.js +12 -6
  898. package/dist/systems/elevator/elevator-service.d.ts.map +1 -1
  899. package/dist/systems/elevator/elevator-service.js +8 -3
  900. package/dist/systems/fence/fence-centerline.d.ts.map +1 -1
  901. package/dist/systems/fence/fence-centerline.js +6 -5
  902. package/dist/systems/fence/fence-features.d.ts +36 -0
  903. package/dist/systems/fence/fence-features.d.ts.map +1 -0
  904. package/dist/systems/fence/fence-features.js +105 -0
  905. package/dist/systems/fence/fence-spline.d.ts +8 -5
  906. package/dist/systems/fence/fence-spline.d.ts.map +1 -1
  907. package/dist/systems/fence/fence-spline.js +51 -16
  908. package/dist/systems/owned-floor-openings.d.ts +9 -0
  909. package/dist/systems/owned-floor-openings.d.ts.map +1 -0
  910. package/dist/systems/owned-floor-openings.js +326 -0
  911. package/dist/systems/reconcile-owned-floor-openings.d.ts +3 -0
  912. package/dist/systems/reconcile-owned-floor-openings.d.ts.map +1 -0
  913. package/dist/systems/reconcile-owned-floor-openings.js +25 -0
  914. package/dist/systems/slab/__fixtures__/doorway-steps.d.ts +8 -0
  915. package/dist/systems/slab/__fixtures__/doorway-steps.d.ts.map +1 -0
  916. package/dist/systems/slab/__fixtures__/doorway-steps.js +62 -0
  917. package/dist/systems/slab/__fixtures__/floor-step.d.ts +5636 -0
  918. package/dist/systems/slab/__fixtures__/floor-step.d.ts.map +1 -0
  919. package/dist/systems/slab/__fixtures__/floor-step.js +66 -0
  920. package/dist/systems/slab/__fixtures__/raised-room.d.ts +5775 -0
  921. package/dist/systems/slab/__fixtures__/raised-room.d.ts.map +1 -0
  922. package/dist/systems/slab/__fixtures__/raised-room.js +54 -0
  923. package/dist/systems/slab/ensure-slab-openings.d.ts +9 -0
  924. package/dist/systems/slab/ensure-slab-openings.d.ts.map +1 -0
  925. package/dist/systems/slab/ensure-slab-openings.js +41 -0
  926. package/dist/systems/slab/slab-support.d.ts +25 -6
  927. package/dist/systems/slab/slab-support.d.ts.map +1 -1
  928. package/dist/systems/slab/slab-support.js +471 -54
  929. package/dist/systems/stair/stair-base-elevation.d.ts +3 -0
  930. package/dist/systems/stair/stair-base-elevation.d.ts.map +1 -0
  931. package/dist/systems/stair/stair-base-elevation.js +49 -0
  932. package/dist/systems/stair/stair-clearance.d.ts +39 -0
  933. package/dist/systems/stair/stair-clearance.d.ts.map +1 -0
  934. package/dist/systems/stair/stair-clearance.js +508 -0
  935. package/dist/systems/stair/stair-construction.d.ts +37 -0
  936. package/dist/systems/stair/stair-construction.d.ts.map +1 -0
  937. package/dist/systems/stair/stair-construction.js +314 -0
  938. package/dist/systems/stair/stair-detail-budget.d.ts +13 -0
  939. package/dist/systems/stair/stair-detail-budget.d.ts.map +1 -0
  940. package/dist/systems/stair/stair-detail-budget.js +64 -0
  941. package/dist/systems/stair/stair-flight.d.ts +2 -2
  942. package/dist/systems/stair/stair-flight.d.ts.map +1 -1
  943. package/dist/systems/stair/stair-flight.js +4 -3
  944. package/dist/systems/stair/stair-floor-footprints.d.ts +7 -0
  945. package/dist/systems/stair/stair-floor-footprints.d.ts.map +1 -0
  946. package/dist/systems/stair/stair-floor-footprints.js +113 -0
  947. package/dist/systems/stair/stair-footprint.d.ts +3 -1
  948. package/dist/systems/stair/stair-footprint.d.ts.map +1 -1
  949. package/dist/systems/stair/stair-footprint.js +97 -44
  950. package/dist/systems/stair/stair-layout.d.ts +39 -0
  951. package/dist/systems/stair/stair-layout.d.ts.map +1 -0
  952. package/dist/systems/stair/stair-layout.js +58 -0
  953. package/dist/systems/stair/stair-opening-preview.d.ts +1650 -84
  954. package/dist/systems/stair/stair-opening-preview.d.ts.map +1 -1
  955. package/dist/systems/stair/stair-opening-sync.d.ts +8 -2
  956. package/dist/systems/stair/stair-opening-sync.d.ts.map +1 -1
  957. package/dist/systems/stair/stair-opening-sync.js +136 -315
  958. package/dist/systems/stair/stair-opening-system.d.ts.map +1 -1
  959. package/dist/systems/stair/stair-opening-system.js +40 -8
  960. package/dist/systems/stair/stair-presets.d.ts +276 -0
  961. package/dist/systems/stair/stair-presets.d.ts.map +1 -0
  962. package/dist/systems/stair/stair-presets.js +151 -0
  963. package/dist/systems/stair/stair-rail-budget.d.ts +6 -0
  964. package/dist/systems/stair/stair-rail-budget.d.ts.map +1 -0
  965. package/dist/systems/stair/stair-rail-budget.js +36 -0
  966. package/dist/systems/stair/stair-rail-path.d.ts +22 -0
  967. package/dist/systems/stair/stair-rail-path.d.ts.map +1 -0
  968. package/dist/systems/stair/stair-rail-path.js +497 -0
  969. package/dist/systems/stair/stair-rise-edit.d.ts +9 -0
  970. package/dist/systems/stair/stair-rise-edit.d.ts.map +1 -0
  971. package/dist/systems/stair/stair-rise-edit.js +46 -0
  972. package/dist/systems/stair/stair-rise-query.d.ts +24 -0
  973. package/dist/systems/stair/stair-rise-query.d.ts.map +1 -0
  974. package/dist/systems/stair/stair-rise-query.js +125 -0
  975. package/dist/systems/stair/stair-rise.d.ts +4 -19
  976. package/dist/systems/stair/stair-rise.d.ts.map +1 -1
  977. package/dist/systems/stair/stair-rise.js +8 -71
  978. package/dist/systems/stair/stair-sizing.d.ts +414 -0
  979. package/dist/systems/stair/stair-sizing.d.ts.map +1 -0
  980. package/dist/systems/stair/stair-sizing.js +255 -0
  981. package/dist/systems/stair/stair-sweep-edit.d.ts +7 -0
  982. package/dist/systems/stair/stair-sweep-edit.d.ts.map +1 -0
  983. package/dist/systems/stair/stair-sweep-edit.js +8 -0
  984. package/dist/systems/stair/stair-walking-line.d.ts +5 -0
  985. package/dist/systems/stair/stair-walking-line.d.ts.map +1 -0
  986. package/dist/systems/stair/stair-walking-line.js +91 -0
  987. package/dist/systems/stair/stair-winder.d.ts +36 -0
  988. package/dist/systems/stair/stair-winder.d.ts.map +1 -0
  989. package/dist/systems/stair/stair-winder.js +173 -0
  990. package/dist/systems/wall/wall-assembly.d.ts +234 -0
  991. package/dist/systems/wall/wall-assembly.d.ts.map +1 -0
  992. package/dist/systems/wall/wall-assembly.js +854 -0
  993. package/dist/systems/wall/wall-curve.d.ts +2 -1
  994. package/dist/systems/wall/wall-curve.d.ts.map +1 -1
  995. package/dist/systems/wall/wall-curve.js +21 -5
  996. package/dist/systems/wall/wall-finish.d.ts +102 -0
  997. package/dist/systems/wall/wall-finish.d.ts.map +1 -0
  998. package/dist/systems/wall/wall-finish.js +264 -0
  999. package/dist/systems/wall/wall-footprint.d.ts +3 -0
  1000. package/dist/systems/wall/wall-footprint.d.ts.map +1 -1
  1001. package/dist/systems/wall/wall-footprint.js +15 -13
  1002. package/dist/systems/wall/wall-frame.d.ts +45 -0
  1003. package/dist/systems/wall/wall-frame.d.ts.map +1 -0
  1004. package/dist/systems/wall/wall-frame.js +162 -0
  1005. package/dist/systems/wall/wall-layer-bands.d.ts +38 -0
  1006. package/dist/systems/wall/wall-layer-bands.d.ts.map +1 -0
  1007. package/dist/systems/wall/wall-layer-bands.js +109 -0
  1008. package/dist/systems/wall/wall-merge.d.ts +57 -0
  1009. package/dist/systems/wall/wall-merge.d.ts.map +1 -0
  1010. package/dist/systems/wall/wall-merge.js +411 -0
  1011. package/dist/systems/wall/wall-mitering.d.ts +6 -5
  1012. package/dist/systems/wall/wall-mitering.d.ts.map +1 -1
  1013. package/dist/systems/wall/wall-mitering.js +70 -20
  1014. package/dist/systems/wall/wall-operations.d.ts +28 -0
  1015. package/dist/systems/wall/wall-operations.d.ts.map +1 -0
  1016. package/dist/systems/wall/wall-operations.js +146 -0
  1017. package/dist/systems/wall/wall-paint-plan.d.ts +30 -0
  1018. package/dist/systems/wall/wall-paint-plan.d.ts.map +1 -0
  1019. package/dist/systems/wall/wall-paint-plan.js +167 -0
  1020. package/dist/systems/wall/wall-room-sides.d.ts +6 -0
  1021. package/dist/systems/wall/wall-room-sides.d.ts.map +1 -0
  1022. package/dist/systems/wall/wall-room-sides.js +14 -0
  1023. package/dist/systems/wall/wall-step-openings.d.ts +17 -0
  1024. package/dist/systems/wall/wall-step-openings.d.ts.map +1 -0
  1025. package/dist/systems/wall/wall-step-openings.js +32 -0
  1026. package/dist/systems/wall/wall-top.d.ts +2 -6
  1027. package/dist/systems/wall/wall-top.d.ts.map +1 -1
  1028. package/dist/systems/wall/wall-top.js +3 -9
  1029. package/dist/systems/wall/wall-topology.d.ts +28 -0
  1030. package/dist/systems/wall/wall-topology.d.ts.map +1 -1
  1031. package/dist/systems/wall/wall-topology.js +458 -9
  1032. package/dist/utils/clone-scene-graph.d.ts +6 -0
  1033. package/dist/utils/clone-scene-graph.d.ts.map +1 -1
  1034. package/dist/utils/clone-scene-graph.js +123 -15
  1035. package/dist/utils/ensure-scene-openings.d.ts +8965 -0
  1036. package/dist/utils/ensure-scene-openings.d.ts.map +1 -0
  1037. package/dist/utils/ensure-scene-openings.js +29 -0
  1038. package/dist/utils/exterior-threshold-migration.d.ts +4 -0
  1039. package/dist/utils/exterior-threshold-migration.d.ts.map +1 -0
  1040. package/dist/utils/exterior-threshold-migration.js +114 -0
  1041. package/dist/utils/floor-follow-migration.d.ts +3 -0
  1042. package/dist/utils/floor-follow-migration.d.ts.map +1 -0
  1043. package/dist/utils/floor-follow-migration.js +29 -0
  1044. package/dist/utils/floor-opening-migration.d.ts +13 -0
  1045. package/dist/utils/floor-opening-migration.d.ts.map +1 -0
  1046. package/dist/utils/floor-opening-migration.js +148 -0
  1047. package/dist/utils/floor-piece-adoption.d.ts +50 -0
  1048. package/dist/utils/floor-piece-adoption.d.ts.map +1 -0
  1049. package/dist/utils/floor-piece-adoption.js +182 -0
  1050. package/dist/utils/floor-plate-migration.d.ts +4507 -0
  1051. package/dist/utils/floor-plate-migration.d.ts.map +1 -0
  1052. package/dist/utils/floor-plate-migration.js +1360 -0
  1053. package/dist/utils/heal-plan-coordinates.d.ts +2 -0
  1054. package/dist/utils/heal-plan-coordinates.d.ts.map +1 -0
  1055. package/dist/utils/heal-plan-coordinates.js +69 -0
  1056. package/dist/utils/heal-scene-graph.d.ts +20 -6
  1057. package/dist/utils/heal-scene-graph.d.ts.map +1 -1
  1058. package/dist/utils/heal-scene-graph.js +61 -16
  1059. package/dist/utils/legacy-material-slots.d.ts +23 -0
  1060. package/dist/utils/legacy-material-slots.d.ts.map +1 -0
  1061. package/dist/utils/legacy-material-slots.js +120 -0
  1062. package/dist/utils/legacy-opening-datums.d.ts +11 -0
  1063. package/dist/utils/legacy-opening-datums.d.ts.map +1 -0
  1064. package/dist/utils/legacy-opening-datums.js +92 -0
  1065. package/dist/utils/legacy-wall-datums.d.ts +6 -0
  1066. package/dist/utils/legacy-wall-datums.d.ts.map +1 -0
  1067. package/dist/utils/legacy-wall-datums.js +199 -0
  1068. package/dist/utils/load-migration.d.ts +28 -0
  1069. package/dist/utils/load-migration.d.ts.map +1 -0
  1070. package/dist/utils/load-migration.js +89 -0
  1071. package/dist/utils/node-defaults.d.ts +37 -0
  1072. package/dist/utils/node-defaults.d.ts.map +1 -0
  1073. package/dist/utils/node-defaults.js +96 -0
  1074. package/dist/utils/normalize-legacy-structure.d.ts +2 -0
  1075. package/dist/utils/normalize-legacy-structure.d.ts.map +1 -0
  1076. package/dist/utils/normalize-legacy-structure.js +61 -0
  1077. package/dist/utils/omit-undefined.d.ts +2 -0
  1078. package/dist/utils/omit-undefined.d.ts.map +1 -0
  1079. package/dist/utils/omit-undefined.js +17 -0
  1080. package/dist/utils/owned-floor-opening-migration.d.ts +4489 -0
  1081. package/dist/utils/owned-floor-opening-migration.d.ts.map +1 -0
  1082. package/dist/utils/owned-floor-opening-migration.js +365 -0
  1083. package/dist/utils/reconcile-structure-on-load.d.ts +8965 -0
  1084. package/dist/utils/reconcile-structure-on-load.d.ts.map +1 -0
  1085. package/dist/utils/reconcile-structure-on-load.js +307 -0
  1086. package/dist/utils/room-zone-migration.d.ts +18 -0
  1087. package/dist/utils/room-zone-migration.d.ts.map +1 -0
  1088. package/dist/utils/room-zone-migration.js +258 -0
  1089. package/dist/utils/scene-migrations.d.ts +16 -1
  1090. package/dist/utils/scene-migrations.d.ts.map +1 -1
  1091. package/dist/utils/scene-migrations.js +15 -1
  1092. package/dist/utils/structure-id.d.ts +4 -0
  1093. package/dist/utils/structure-id.d.ts.map +1 -0
  1094. package/dist/utils/structure-id.js +115 -0
  1095. package/dist/utils/vertical-scene-migration.d.ts +8 -8
  1096. package/dist/utils/vertical-scene-migration.d.ts.map +1 -1
  1097. package/dist/utils/vertical-scene-migration.js +18 -8
  1098. package/dist/utils/wall-assembly-migration.d.ts +14 -0
  1099. package/dist/utils/wall-assembly-migration.d.ts.map +1 -0
  1100. package/dist/utils/wall-assembly-migration.js +23 -0
  1101. package/dist/utils/wall-face-migration.d.ts +23 -0
  1102. package/dist/utils/wall-face-migration.d.ts.map +1 -0
  1103. package/dist/utils/wall-face-migration.js +246 -0
  1104. package/dist/validation/opening-bounds.d.ts +36 -0
  1105. package/dist/validation/opening-bounds.d.ts.map +1 -0
  1106. package/dist/validation/opening-bounds.js +34 -0
  1107. package/dist/validation/validate-build-json.d.ts +2 -0
  1108. package/dist/validation/validate-build-json.d.ts.map +1 -1
  1109. package/dist/validation/validate-build-json.js +48 -1
  1110. package/package.json +37 -4
  1111. package/dist/services/surface-hosting-procedural-parity.fixtures.d.ts +0 -13
  1112. package/dist/services/surface-hosting-procedural-parity.fixtures.d.ts.map +0 -1
  1113. package/dist/services/surface-hosting-procedural-parity.fixtures.js +0 -4691
  1114. package/dist/services/surface-hosting-shelf-parity.fixtures.d.ts +0 -1060
  1115. package/dist/services/surface-hosting-shelf-parity.fixtures.d.ts.map +0 -1
  1116. package/dist/services/surface-hosting-shelf-parity.fixtures.js +0 -3127
@@ -0,0 +1,369 @@
1
+ import { levelBuildingId } from '../building/level-duplication.js';
2
+ import { getLevelDisplayName } from '../lib/level-name.js';
3
+ import { detectOpenWallEnds } from '../lib/room-graph.js';
4
+ import { AnyNode as AnyNodeSchema } from '../schema/index.js';
5
+ import { getStoredLevelHeight } from '../services/storey.js';
6
+ import { computeSegmentTransforms, rotateXZ } from '../systems/stair/stair-footprint.js';
7
+ import { resolveStairTotalRise } from '../systems/stair/stair-rise-query.js';
8
+ import { measureStair } from '../systems/stair/stair-sizing.js';
9
+ import { checkOpeningWithinWall, formatOpeningBoundsIssue } from '../validation/opening-bounds.js';
10
+ import { layoutIssuesFromScene } from './layout-clearance.js';
11
+ import { wallResolvedHeight } from './level-reads.js';
12
+ import { pointInPolygon, polygonContainsPolygon } from './plan-geometry.js';
13
+ import { changesSince } from './scene-measure.js';
14
+ import { contentCounts, levelIdOf, levelRole, levelsOf, nodesOnLevel, } from './scene-queries.js';
15
+ export const CHECKPOINT_ORDER = 100;
16
+ const checks = [];
17
+ const reports = [];
18
+ /** Adds a report's fields to every verify_scene from now on; registering again replaces it. */
19
+ export function registerSceneReport(report) {
20
+ const at = reports.findIndex((known) => known.name === report.name);
21
+ if (at >= 0)
22
+ reports[at] = report;
23
+ else
24
+ reports.push(report);
25
+ }
26
+ /** Runs a check in every verify_scene from now on; registering a check again replaces it. */
27
+ export function registerSceneCheck(check) {
28
+ const at = checks.findIndex((known) => known.name === check.name);
29
+ if (at >= 0)
30
+ checks[at] = check;
31
+ else
32
+ checks.push(check);
33
+ checks.sort((a, b) => a.order - b.order);
34
+ }
35
+ const occupiedContent = (counts) => counts.walls +
36
+ counts.zones +
37
+ counts.doors +
38
+ counts.windows +
39
+ counts.items +
40
+ counts.slabs +
41
+ counts.ceilings +
42
+ counts.stairs;
43
+ function toWorldPlanPoint(stair, localX, localZ) {
44
+ const [worldX, worldZ] = rotateXZ(localX, localZ, stair.rotation ?? 0);
45
+ return [stair.position[0] + worldX, stair.position[2] + worldZ];
46
+ }
47
+ function stairFootprintPolygons(nodes, stair) {
48
+ if (stair.stairType === 'curved' || stair.stairType === 'spiral') {
49
+ const radius = Math.max(0.05, stair.innerRadius ?? 0.9) + Math.max(stair.width ?? 1, 0.4);
50
+ return [
51
+ Array.from({ length: 24 }).map((_, index) => {
52
+ const angle = (index / 24) * Math.PI * 2;
53
+ return toWorldPlanPoint(stair, Math.cos(angle) * radius, Math.sin(angle) * radius);
54
+ }),
55
+ ];
56
+ }
57
+ const segments = (stair.children ?? [])
58
+ .map((childId) => nodes[childId])
59
+ .filter((node) => node?.type === 'stair-segment');
60
+ const usableSegments = segments.length > 0
61
+ ? segments
62
+ : [
63
+ {
64
+ width: stair.width ?? 1,
65
+ length: 3,
66
+ height: resolveStairTotalRise(stair, nodes),
67
+ stepCount: stair.stepCount ?? 10,
68
+ attachmentSide: 'front',
69
+ },
70
+ ];
71
+ const transforms = computeSegmentTransforms(usableSegments);
72
+ return usableSegments.map((segment, index) => {
73
+ const transform = transforms[index] ?? {
74
+ position: [0, 0, 0],
75
+ rotation: 0,
76
+ };
77
+ const halfWidth = segment.width / 2;
78
+ const corners = [
79
+ [-halfWidth, 0],
80
+ [halfWidth, 0],
81
+ [halfWidth, segment.length],
82
+ [-halfWidth, segment.length],
83
+ ];
84
+ return corners.map(([localX, localZ]) => {
85
+ const [rx, rz] = rotateXZ(localX, localZ, transform.rotation);
86
+ return toWorldPlanPoint(stair, transform.position[0] + rx, transform.position[2] + rz);
87
+ });
88
+ });
89
+ }
90
+ function wallSamplePoints(wall) {
91
+ return [0.25, 0.5, 0.75].map((t) => [
92
+ wall.start[0] + (wall.end[0] - wall.start[0]) * t,
93
+ wall.start[1] + (wall.end[1] - wall.start[1]) * t,
94
+ ]);
95
+ }
96
+ function levelNumber(nodes, levelId) {
97
+ const node = levelId ? nodes[levelId] : undefined;
98
+ return node?.type === 'level' ? node.level : undefined;
99
+ }
100
+ function targetLevelIdsForStair(nodes, stair) {
101
+ const fromLevelId = stair.fromLevelId ?? levelIdOf(nodes, stair.id);
102
+ const toLevelId = stair.toLevelId ?? fromLevelId;
103
+ const fromLevel = levelNumber(nodes, fromLevelId);
104
+ const toLevel = levelNumber(nodes, toLevelId);
105
+ if (fromLevel === undefined || toLevel === undefined)
106
+ return toLevelId ? [toLevelId] : [];
107
+ const low = Math.min(fromLevel, toLevel);
108
+ const high = Math.max(fromLevel, toLevel);
109
+ const fromLevelNode = fromLevelId ? nodes[fromLevelId] : undefined;
110
+ const buildingId = fromLevelNode?.type === 'level'
111
+ ? levelBuildingId(nodes, fromLevelNode)
112
+ : null;
113
+ return levelsOf(nodes)
114
+ .filter((level) => level.level > low && level.level <= high)
115
+ .filter((level) => !buildingId || levelBuildingId(nodes, level) === buildingId)
116
+ .map((level) => level.id);
117
+ }
118
+ function holeBelongsToStair(surface, holeIndex, stairId) {
119
+ const metadata = surface.holeMetadata?.[holeIndex];
120
+ return metadata?.source === 'stair' && metadata.stairId === stairId;
121
+ }
122
+ function parentListsChild(parent, childId) {
123
+ if (!('children' in parent && Array.isArray(parent.children)))
124
+ return false;
125
+ return parent.children.some((child) => {
126
+ if (typeof child === 'string')
127
+ return child === childId;
128
+ return (child !== null &&
129
+ typeof child === 'object' &&
130
+ 'id' in child &&
131
+ child.id === childId);
132
+ });
133
+ }
134
+ function schemaErrors(nodes) {
135
+ const errors = [];
136
+ for (const [id, node] of Object.entries(nodes)) {
137
+ const parsed = AnyNodeSchema.safeParse(node);
138
+ if (parsed.success)
139
+ continue;
140
+ for (const issue of parsed.error.issues)
141
+ errors.push({ nodeId: id, path: issue.path.join('.'), message: issue.message });
142
+ }
143
+ return errors;
144
+ }
145
+ /**
146
+ * `verify_scene`: a self-check after complex edits. Per-level content and roles, then every
147
+ * practical problem found, typed: rooms missing floors or ceilings, roof levels misused, storeys
148
+ * with no stair, openings off their wall, stairs off their slab, blocked doors, overlapping
149
+ * furniture, nodes their schema rejects.
150
+ */
151
+ export const verifyScene = (nodes, input, context) => {
152
+ const onLevel = (levelId) => nodesOnLevel(nodes, levelId);
153
+ const ofType = (content, type) => content.filter((node) => node.type === type);
154
+ const levels = levelsOf(nodes).map((level) => {
155
+ const content = contentCounts(onLevel(level.id));
156
+ const { role, metadataRole, referenceLevelId } = levelRole(nodes, level);
157
+ return {
158
+ levelId: level.id,
159
+ levelName: getLevelDisplayName(level),
160
+ floorIndex: level.level,
161
+ role,
162
+ metadataRole,
163
+ isOccupiedStory: role === 'occupied',
164
+ isSupportLevel: role !== 'occupied',
165
+ referenceLevelId,
166
+ isActive: level.id === context.activeLevelId,
167
+ isEmpty: Object.values(content).every((count) => count === 0),
168
+ content,
169
+ };
170
+ });
171
+ const issues = [];
172
+ const report = (type, message, informational = false) => issues.push({ type, message, ...(informational ? { severity: 'info' } : {}) });
173
+ const empty = levels.filter((level) => level.isEmpty);
174
+ if (empty.length > 0)
175
+ report('empty_levels', `${empty.length} empty level(s): ${empty.map((level) => `${level.levelName} (${level.levelId})`).join(', ')}`);
176
+ for (const level of levels) {
177
+ const { content, levelName } = level;
178
+ // A free-standing wall (garden wall, half wall) is legitimate, not something to repair.
179
+ for (const end of detectOpenWallEnds(nodes, level.levelId)) {
180
+ if (end.reason === 'isolated')
181
+ continue;
182
+ issues.push({
183
+ type: 'wall_open_end',
184
+ message: `Wall ${end.wallId} ${end.end} is open on ${levelName}: ${end.reason}${end.candidate ? `; nearest wall ${end.candidate.wallId}` : ''}`,
185
+ wallId: end.wallId,
186
+ end: end.end,
187
+ reason: end.reason,
188
+ ...(end.gap !== undefined ? { gap: end.gap } : {}),
189
+ ...(end.candidate ? { nearestWallId: end.candidate.wallId } : {}),
190
+ });
191
+ }
192
+ if (level.role === 'roof') {
193
+ if (content.roofs === 0)
194
+ report('roof_level_no_roof', `${levelName} is a roof support level but has no roof geometry; add or move roof geometry there rather than deleting the support level to satisfy story count`);
195
+ if (occupiedContent(content) > 0)
196
+ report('roof_level_occupied', `${levelName} is a roof support level but contains occupied-story content; move rooms, walls, stairs, slabs, ceilings, and items to an occupied story and keep the roof level for roof geometry only`);
197
+ const reference = level.referenceLevelId ? nodes[level.referenceLevelId] : undefined;
198
+ if (reference?.type === 'level' && level.floorIndex <= reference.level)
199
+ report('roof_level_below_reference', `${levelName} roof support level should be above its reference occupied level ${reference.name ?? reference.id}`);
200
+ continue;
201
+ }
202
+ if (content.walls > 0 && content.zones === 0)
203
+ report('walls_no_zones', `${levelName} has walls but no zones/rooms`);
204
+ if (content.zones > 0 && content.slabs === 0)
205
+ report('zones_no_slabs', `${levelName} has zones but no slabs/floors`);
206
+ if (content.zones > 0 && content.ceilings === 0)
207
+ report('zones_no_ceilings', `${levelName} has zones but no ceilings`);
208
+ if (content.walls > 0 && content.doors === 0)
209
+ report('walls_no_doors', `${levelName} has walls but no doors`);
210
+ if (content.roofs > 0 && (content.walls > 0 || content.zones > 0 || content.stairs > 0))
211
+ report('roof_mixed_in_storey', `${levelName} mixes roof geometry with occupied-level content; place roofs on a dedicated roof level for solo/exploded level views`);
212
+ }
213
+ // Storeys are counted per building: separate buildings need no stair between them, and a wall
214
+ // can only span the storeys of its own building.
215
+ const storeysByBuilding = new Map();
216
+ for (const level of levels) {
217
+ if (!level.isOccupiedStory)
218
+ continue;
219
+ const node = nodes[level.levelId];
220
+ const buildingId = levelBuildingId(nodes, node) ?? '';
221
+ storeysByBuilding.set(buildingId, [...(storeysByBuilding.get(buildingId) ?? []), level]);
222
+ }
223
+ for (const [buildingId, storeys] of storeysByBuilding) {
224
+ if (storeys.length < 2)
225
+ continue;
226
+ const stairs = levels
227
+ .filter((level) => {
228
+ const node = nodes[level.levelId];
229
+ return (levelBuildingId(nodes, node) ?? '') === buildingId;
230
+ })
231
+ .reduce((sum, level) => sum + level.content.stairs, 0);
232
+ if (stairs === 0)
233
+ report('missing_stair', `${nodes[buildingId]?.name ?? 'The building'} has ${storeys.length} storeys and no stair: add one on the ground floor, in the hall or entry, to connect them.`);
234
+ }
235
+ for (const storeys of storeysByBuilding.values()) {
236
+ if (storeys.length < 2)
237
+ continue;
238
+ for (const level of storeys) {
239
+ const node = nodes[level.levelId];
240
+ const expectedHeight = getStoredLevelHeight(node);
241
+ for (const wall of ofType(onLevel(level.levelId), 'wall')) {
242
+ const wallHeight = wallResolvedHeight(nodes, wall);
243
+ if (wallHeight > expectedHeight + 0.25)
244
+ report('wall_spans_storeys', `Wall ${wall.name ?? wall.id} on ${node.name ?? node.id} is ${wallHeight}m high; multi-story exterior walls should be split into level-owned story walls`);
245
+ }
246
+ }
247
+ }
248
+ for (const node of Object.values(nodes)) {
249
+ if (node.type !== 'door' && node.type !== 'window')
250
+ continue;
251
+ const parent = node.parentId ? nodes[node.parentId] : undefined;
252
+ if (parent?.type !== 'wall') {
253
+ report('opening_not_on_wall', `${node.type} ${node.id} is not parented to a wall`);
254
+ continue;
255
+ }
256
+ if (node.wallId !== parent.id)
257
+ report('opening_wall_mismatch', `${node.type} ${node.id} has wallId ${node.wallId ?? 'unset'} but is parented to wall ${parent.id}`);
258
+ if (!parentListsChild(parent, node.id))
259
+ report('opening_not_listed', `${node.type} ${node.id} is not listed in wall ${parent.id} children`);
260
+ for (const issue of checkOpeningWithinWall(node, parent, wallResolvedHeight(nodes, parent)))
261
+ report(issue.kind === 'along_wall' ? 'opening_outside_wall' : 'opening_outside_height', formatOpeningBoundsIssue(issue));
262
+ }
263
+ for (const stair of Object.values(nodes).filter((node) => node.type === 'stair')) {
264
+ const stairName = stair.name ?? stair.id;
265
+ for (const diagnostic of measureStair(stair, nodes).diagnostics)
266
+ report(`stair_${diagnostic.code.replaceAll('-', '_')}`, `Stair ${stairName}: ${diagnostic.message}`, diagnostic.code.endsWith('-target'));
267
+ const sourceLevelId = levelIdOf(nodes, stair.id);
268
+ if (sourceLevelId) {
269
+ const sourceName = nodes[sourceLevelId]?.name ?? sourceLevelId;
270
+ const footprints = stairFootprintPolygons(nodes, stair);
271
+ const sourceSlabs = ofType(onLevel(sourceLevelId), 'slab');
272
+ if (sourceSlabs.length > 0 &&
273
+ footprints.some((footprint) => !sourceSlabs.some((slab) => polygonContainsPolygon(slab.polygon, footprint))))
274
+ report('stair_outside_slab', `Stair ${stairName} footprint extends outside source floor slab on ${sourceName}`);
275
+ for (const wall of ofType(onLevel(sourceLevelId), 'wall'))
276
+ if (footprints.some((footprint) => wallSamplePoints(wall).some((point) => pointInPolygon(point, footprint, false))))
277
+ report('stair_obstructed', `Wall ${wall.name ?? wall.id} obstructs stair ${stairName} on ${sourceName}`);
278
+ }
279
+ if ((stair.slabOpeningMode ?? 'none') !== 'destination')
280
+ continue;
281
+ const targetLevelIds = targetLevelIdsForStair(nodes, stair);
282
+ if (targetLevelIds.length === 0)
283
+ report('stair_opening_no_target', `Stair ${stairName} requests a slab opening but has no target level`);
284
+ for (const targetLevelId of targetLevelIds) {
285
+ const targetName = nodes[targetLevelId]?.name ?? targetLevelId;
286
+ const targetSlabs = ofType(onLevel(targetLevelId), 'slab');
287
+ if (targetSlabs.length === 0) {
288
+ report('stair_target_no_slab', `Stair ${stairName} targets ${targetName} but it has no slab`);
289
+ continue;
290
+ }
291
+ const holes = targetSlabs.flatMap((slab) => (slab.holes ?? [])
292
+ .map((hole, index) => ({ slab, hole, index }))
293
+ .filter((entry) => holeBelongsToStair(entry.slab, entry.index, stair.id)));
294
+ // Since owned floor openings, the stair owns a floor-opening on the floor above, and the
295
+ // slab hole it cuts names the opening, not the stair (else 14 false reports on one build).
296
+ const owned = onLevel(targetLevelId).filter((node) => node.type === 'floor-opening' &&
297
+ node.source === 'stair' &&
298
+ node.ownerId === stair.id &&
299
+ node.drawnOn === 'floor');
300
+ for (const opening of owned) {
301
+ const slab = targetSlabs.find((candidate) => candidate.id === opening.surfaceId) ?? targetSlabs[0];
302
+ holes.push({ slab, hole: opening.polygon, index: -1 });
303
+ }
304
+ if (holes.length === 0) {
305
+ report('stair_no_opening', `Stair ${stairName} has no destination slab opening on ${targetName}`);
306
+ continue;
307
+ }
308
+ for (const { slab, hole } of holes)
309
+ if (!polygonContainsPolygon(slab.polygon, hole))
310
+ report('stair_opening_outside_slab', `Stair ${stairName} opening extends outside slab ${slab.name ?? slab.id}`);
311
+ }
312
+ }
313
+ const errors = schemaErrors(nodes);
314
+ for (const error of errors.slice(0, 5))
315
+ report('schema_invalid', `Schema: ${error.nodeId}.${error.path} ${error.message}`);
316
+ if (errors.length > 5)
317
+ report('schema_invalid', `Schema: ${errors.length - 5} additional validation errors`);
318
+ // Door keep-outs and item–item footprint overlaps (rotation-aware).
319
+ issues.push(...layoutIssuesFromScene(Object.values(nodes)));
320
+ for (const check of checks)
321
+ if (check.order < CHECKPOINT_ORDER)
322
+ issues.push(...check.run(nodes, input ?? {}));
323
+ // What the edits since the host's checkpoint lost, by place.
324
+ const since = context.checkpoint
325
+ ? changesSince(context.checkpoint, nodes)
326
+ : null;
327
+ if (since)
328
+ issues.push(...since.issues);
329
+ for (const check of checks)
330
+ if (check.order >= CHECKPOINT_ORDER)
331
+ issues.push(...check.run(nodes, input ?? {}));
332
+ const occupiedStoryCount = levels.filter((level) => level.isOccupiedStory).length;
333
+ return {
334
+ result: {
335
+ ok: true,
336
+ valid: errors.length === 0,
337
+ levelCount: levels.length,
338
+ occupiedStoryCount,
339
+ supportLevelCount: levels.length - occupiedStoryCount,
340
+ roofLevelIds: levels.filter((level) => level.role === 'roof').map((level) => level.levelId),
341
+ activeLevelId: context.activeLevelId,
342
+ levels,
343
+ emptyLevelIds: empty.map((level) => level.levelId),
344
+ issues,
345
+ hasIssues: issues.some((issue) => issue.severity !== 'info'),
346
+ ...authoredObjects(nodes),
347
+ ...Object.assign({}, ...reports.map((report) => report.run(nodes))),
348
+ ...(since && {
349
+ sinceCheckpoint: { name: context.checkpoint.name, changes: since.changes },
350
+ }),
351
+ },
352
+ };
353
+ };
354
+ /** Objects built by add_object, with what each stands in for: each is a gap in what Pascal builds. */
355
+ function authoredObjects(nodes) {
356
+ const objects = Object.values(nodes)
357
+ .flatMap((node) => node.type === 'item' && node.source
358
+ ? [
359
+ {
360
+ id: node.id,
361
+ name: node.name ?? node.asset.name,
362
+ category: node.asset.category,
363
+ reason: typeof node.metadata?.reason === 'string' ? node.metadata.reason : null,
364
+ },
365
+ ]
366
+ : [])
367
+ .sort((a, b) => a.name.localeCompare(b.name) || a.id.localeCompare(b.id));
368
+ return objects.length ? { authoredObjects: objects } : {};
369
+ }
@@ -0,0 +1,65 @@
1
+ import { type WallOpeningInput } from '../building/wall-openings.js';
2
+ import { type Achieved } from './achieved.js';
3
+ import type { SceneChanges, SceneNodes } from './types.js';
4
+ /**
5
+ * add_door and add_window for every surface: the editor's placement rules (`planWallOpening`),
6
+ * the node to create, and the one result the MCP and the chat both pass through as it is.
7
+ */
8
+ export declare function addWallOpening(nodes: SceneNodes, input: WallOpeningInput): {
9
+ changes: SceneChanges;
10
+ result: {
11
+ message: string;
12
+ achieved: Achieved;
13
+ sillHeight?: number | undefined;
14
+ wallId: string;
15
+ localX: number;
16
+ t: number;
17
+ wallLength: number;
18
+ clamped: boolean;
19
+ coordinateSystem: "wall-local-meters";
20
+ doorId: `door_${string}` | `window_${string}`;
21
+ ok: true;
22
+ } | {
23
+ message: string;
24
+ achieved: Achieved;
25
+ sillHeight?: number | undefined;
26
+ wallId: string;
27
+ localX: number;
28
+ t: number;
29
+ wallLength: number;
30
+ clamped: boolean;
31
+ coordinateSystem: "wall-local-meters";
32
+ windowId: `door_${string}` | `window_${string}`;
33
+ ok: true;
34
+ };
35
+ };
36
+ /**
37
+ * add_door / add_window with a nodeId, rebuilt from its script: the same answer as a new opening,
38
+ * read from where it stands after the rebuild, with what the script reported.
39
+ */
40
+ export declare function rebuiltOpeningResult(nodesAfter: SceneNodes, nodeId: string, summary: Record<string, unknown>, achieved: Achieved): {
41
+ achieved: Achieved;
42
+ message: string;
43
+ sillHeight?: number | undefined;
44
+ wallId: string;
45
+ localX: number;
46
+ t: number;
47
+ wallLength: number;
48
+ clamped: boolean;
49
+ coordinateSystem: "wall-local-meters";
50
+ doorId: string;
51
+ ok: true;
52
+ } | {
53
+ achieved: Achieved;
54
+ message: string;
55
+ sillHeight?: number | undefined;
56
+ wallId: string;
57
+ localX: number;
58
+ t: number;
59
+ wallLength: number;
60
+ clamped: boolean;
61
+ coordinateSystem: "wall-local-meters";
62
+ windowId: string;
63
+ ok: true;
64
+ };
65
+ //# sourceMappingURL=wall-opening.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wall-opening.d.ts","sourceRoot":"","sources":["../../src/agent-operations/wall-opening.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AAClF,OAAO,EAAE,KAAK,QAAQ,EAAmB,MAAM,YAAY,CAAA;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAEvD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqBxE;AAUD;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,QAAQ,EAAE,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;EAwBnB"}
@@ -0,0 +1,55 @@
1
+ import { planWallOpening } from '../building/wall-openings.js';
2
+ import { achievedChanges } from './achieved.js';
3
+ /**
4
+ * add_door and add_window for every surface: the editor's placement rules (`planWallOpening`),
5
+ * the node to create, and the one result the MCP and the chat both pass through as it is.
6
+ */
7
+ export function addWallOpening(nodes, input) {
8
+ const plan = planWallOpening(nodes, input);
9
+ const changes = {
10
+ create: [{ node: plan.node, parentId: plan.wallId }],
11
+ };
12
+ return {
13
+ changes,
14
+ result: {
15
+ ok: true,
16
+ ...(input.kind === 'door' ? { doorId: plan.node.id } : { windowId: plan.node.id }),
17
+ wallId: plan.wallId,
18
+ localX: plan.localX,
19
+ t: plan.t,
20
+ wallLength: plan.wallLength,
21
+ clamped: plan.clamped,
22
+ coordinateSystem: 'wall-local-meters',
23
+ ...(plan.sillHeight === undefined ? {} : { sillHeight: plan.sillHeight }),
24
+ message: `Added ${input.kind} "${plan.node.name}" on wall ${plan.wallId}${plan.clamped ? ', slid to fit' : ''}`,
25
+ achieved: achievedChanges(nodes, changes),
26
+ },
27
+ };
28
+ }
29
+ /**
30
+ * add_door / add_window with a nodeId, rebuilt from its script: the same answer as a new opening,
31
+ * read from where it stands after the rebuild, with what the script reported.
32
+ */
33
+ export function rebuiltOpeningResult(nodesAfter, nodeId, summary, achieved) {
34
+ const node = nodesAfter[nodeId];
35
+ const wall = node.wallId
36
+ ? nodesAfter[node.wallId]
37
+ : undefined;
38
+ const wallLength = wall?.type === 'wall'
39
+ ? Math.hypot(wall.end[0] - wall.start[0], wall.end[1] - wall.start[1])
40
+ : 0;
41
+ return {
42
+ ok: true,
43
+ ...(node.type === 'door' ? { doorId: nodeId } : { windowId: nodeId }),
44
+ wallId: node.wallId ?? '',
45
+ localX: node.position[0],
46
+ t: wallLength ? node.position[0] / wallLength : 0,
47
+ wallLength,
48
+ clamped: false,
49
+ coordinateSystem: 'wall-local-meters',
50
+ ...(node.type === 'window' ? { sillHeight: node.position[1] - node.height / 2 } : {}),
51
+ message: `Rebuilt ${node.type} "${node.name ?? nodeId}" from its script`,
52
+ ...summary,
53
+ achieved,
54
+ };
55
+ }
@@ -0,0 +1,9 @@
1
+ import { z } from 'zod';
2
+ /** What the scene holds after a call that changes it (agent-operations `achievedChanges`). */
3
+ export declare const achievedOutput: z.ZodObject<{
4
+ created: z.ZodRecord<z.ZodString, z.ZodNumber>;
5
+ updated: z.ZodNumber;
6
+ deleted: z.ZodRecord<z.ZodString, z.ZodNumber>;
7
+ unchanged: z.ZodOptional<z.ZodLiteral<true>>;
8
+ }, z.core.$strip>;
9
+ //# sourceMappingURL=achieved.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"achieved.d.ts","sourceRoot":"","sources":["../../src/agent-tools/achieved.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,8FAA8F;AAC9F,eAAO,MAAM,cAAc;;;;;iBAKzB,CAAA"}
@@ -0,0 +1,8 @@
1
+ import { z } from 'zod';
2
+ /** What the scene holds after a call that changes it (agent-operations `achievedChanges`). */
3
+ export const achievedOutput = z.object({
4
+ created: z.record(z.string(), z.number()),
5
+ updated: z.number(),
6
+ deleted: z.record(z.string(), z.number()),
7
+ unchanged: z.literal(true).optional(),
8
+ });
@@ -0,0 +1,43 @@
1
+ import { z } from 'zod';
2
+ /** The `params` field every scripted tool shares (add_object, add_window, add_door, add_column). */
3
+ export declare const scriptParams: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodNumber, z.ZodBoolean, z.ZodString]>>>;
4
+ /** The `language` field every scripted tool shares. */
5
+ export declare const scriptLanguage: z.ZodOptional<z.ZodEnum<{
6
+ three: "three";
7
+ bpy: "bpy";
8
+ }>>;
9
+ export declare const addObjectTool: {
10
+ name: string;
11
+ title: string;
12
+ description: string;
13
+ input: {
14
+ name: z.ZodOptional<z.ZodString>;
15
+ category: z.ZodOptional<z.ZodString>;
16
+ reason: z.ZodOptional<z.ZodString>;
17
+ description: z.ZodOptional<z.ZodString>;
18
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
19
+ code: z.ZodOptional<z.ZodString>;
20
+ language: z.ZodOptional<z.ZodEnum<{
21
+ three: "three";
22
+ bpy: "bpy";
23
+ }>>;
24
+ params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodNumber, z.ZodBoolean, z.ZodString]>>>;
25
+ nodeId: z.ZodOptional<z.ZodString>;
26
+ parentId: z.ZodOptional<z.ZodString>;
27
+ position: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
28
+ rotation: z.ZodOptional<z.ZodPipe<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>, z.ZodTransform<number, string | number>>>;
29
+ side: z.ZodOptional<z.ZodEnum<{
30
+ front: "front";
31
+ back: "back";
32
+ }>>;
33
+ };
34
+ };
35
+ export declare const getSourceTool: {
36
+ name: string;
37
+ title: string;
38
+ description: string;
39
+ input: {
40
+ nodeId: z.ZodString;
41
+ };
42
+ };
43
+ //# sourceMappingURL=add-object.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add-object.d.ts","sourceRoot":"","sources":["../../src/agent-tools/add-object.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAmCvB,oGAAoG;AACpG,eAAO,MAAM,YAAY,wGAKtB,CAAA;AAEH,uDAAuD;AACvD,eAAO,MAAM,cAAc;;;GAE1B,CAAA;AAED,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;CAiDzB,CAAA;AAED,eAAO,MAAM,aAAa;;;;;;;CAQzB,CAAA"}
@@ -0,0 +1,86 @@
1
+ import { z } from 'zod';
2
+ import { geometryMetaFields } from '../schema/geometry-metadata.js';
3
+ import { GeometryScriptLanguage } from '../schema/geometry-source.js';
4
+ import { measurement } from './measurement.js';
5
+ import { NodeId } from './node-id.js';
6
+ const DESCRIPTION = `Build an object by writing a plain three.js module, the way you would in any three.js project. Use it for what the catalog and the structure tools cannot reproduce faithfully: custom columns and capitals, mouldings and trim, panels, lanterns and fixtures, exposed beams, vaulted or tray ceiling bodies, canopies, a porch, railings, built-ins. Pascal runs the module in a sandbox, stores the result and places it as one object the user can move, paint, and ask you to edit again.
7
+
8
+ Module shape (import THREE from the three package as usual; the addons below too):
9
+ // also available: three/addons/utils/BufferGeometryUtils.js, three/addons/geometries/{RoundedBoxGeometry,ConvexGeometry,LoftGeometry,ParametricGeometry}.js, three-bvh-csg (Brush, Evaluator, SUBTRACTION, ADDITION, INTERSECTION)
10
+ export const params = { width: { default: 4.8, min: 3, max: 8, step: 0.1, unit: 'm', label: 'Width' } }
11
+ export const mount = 'floor' // 'floor' | 'wall-side' (on a wall face) | 'wall' (through a wall, like a window) | 'ceiling'
12
+ export default function build({ params, THREE }) { const group = new THREE.Group(); /* … */ return group }
13
+
14
+ One object is one feature that changes together: a porch, a railing run, a fireplace surround, a ceiling with its beams. Never a whole house, and never walls, rooms, floors, roofs, stairs, doors or windows: those have their own tools. A new object says what it stands in for (reason): the scene check lists every authored object with its reason, so each names something Pascal has no type for. On a floor, a plain box with a wall's size or a floor plate is refused with the tool to use (use_walls, use_slab); a detailed object with a wall's size (a bookcase, a screen), or one named after something Pascal builds, is built with a hint naming the tool.
15
+
16
+ Conventions (they make the object work in Pascal; follow them):
17
+ - Metres, Y up, modelled as it stands. Pascal puts the bottom-centre of the bounds at the placement point; for wall-side the back face sits on the wall and the object faces +Z.
18
+ - Paint: name every material slot_<finish> (slot_trim, slot_frame, slot_metal) and reuse one material per finish; a material named "glass" renders as glass.
19
+ - Parts: name the few groups a person would point at part:<id> (part:column_left, part:canopy, part:landing), usually 2–24, a group per part, not every mesh. Set userData.type on parts someone would look for: column, beam, slab, roof, railing, panel, trim, step, light.
20
+ - Lights: add a THREE.PointLight or SpotLight named light:<id> where the bulb is; it becomes a switchable light.
21
+ - Motion: put THREE.AnimationClips on the returned group's .animations, as in any three.js project; tracks target <objectName>.<property> or <object.uuid>.<property> and may use any transform property (position, rotation, rotation[y], quaternion, scale); material and visibility tracks do not animate. A clip named open becomes the object's open/close control (close plays a clip named close, or open reversed); a clip named loop runs continuously; every other clip gets its own play toggle labelled with its name (name it for the person: "Twirl", "Music"). Write as many clips as the object needs.
22
+ - Cuts: a mesh named cutout cuts only the mounted host; cut:wall, cut:ceiling and cut:slab require that host kind (floor items cut their support slab). The hidden cutter must reach the host; walls use its real shape, ceilings and slabs its through-hole footprint.
23
+ - Sockets: an empty Object3D named anchor:<id> marks where other things attach.
24
+ - No textures, network or DOM. At most 300k triangles, 32 materials, 60 m per side.
25
+
26
+ Blender instead (language 'bpy'): when the shape is easier with Blender's modelling (bevelled or rounded edges, subdivision-smooth and organic forms, booleans, curves and text, solidify, array, screw and other modifiers), write a bpy module:
27
+ import bpy, bmesh
28
+ PARAMS = {"width": {"default": 1.8, "min": 1.2, "max": 2.6, "step": 0.05, "unit": "m", "label": "Width"}}
29
+ MOUNT = "floor"
30
+ def build(params): ... # add objects to the empty scene; everything in it is exported, modifiers applied
31
+ The same conventions in Blender terms: metres, Z up, the front faces -Y (Blender's Front view); part:<id>, light:<id> (a light object; its custom property intensity sets the brightness, default 2), anchor:<id> (an empty), cutout, cut:wall|ceiling|slab and collider are object names; userData is the object's custom properties (obj["type"] = "panel"); slot_<finish> are material names. A clip is one action named open, close, loop or anything else, assigned to every object that moves in it. Use the data API and bmesh, not operators that need a 3D viewport. A Blender build takes a few seconds.
32
+
33
+ Edit: pass nodeId with new code and/or params (params alone rebuild the stored script; read it first with get_source to change the code); identity, placement, paint and the params you leave out are kept. The result lists the size, parts, slots, lights, animations and params.`;
34
+ /** The `params` field every scripted tool shares (add_object, add_window, add_door, add_column). */
35
+ export const scriptParams = z
36
+ .record(z.string(), z.union([z.number(), z.boolean(), z.string()]))
37
+ .optional()
38
+ .describe("Values for the params the module declares; on an edit, each one you leave out keeps its current value (clamped to the param's range) and a param new to the code starts at its default.");
39
+ /** The `language` field every scripted tool shares. */
40
+ export const scriptLanguage = GeometryScriptLanguage.optional().describe("The code's language: 'three' (default) for a three.js module, 'bpy' for a Blender module (see add_object). On an edit it defaults to the language the object was built in.");
41
+ export const addObjectTool = {
42
+ name: 'add_object',
43
+ title: 'Build object',
44
+ description: DESCRIPTION,
45
+ input: {
46
+ code: z
47
+ .string()
48
+ .min(1)
49
+ .max(48_000)
50
+ .optional()
51
+ .describe('The module (see the tool description). Required to create; omit to rebuild an object with new params.'),
52
+ language: scriptLanguage,
53
+ params: scriptParams,
54
+ nodeId: NodeId.optional().describe('Edit this existing authored object instead of creating one.'),
55
+ parentId: NodeId.optional().describe('Host for a new object: a level (default: the floor in view), a wall (wall / wall-side mounts), a ceiling, or an item it rests on.'),
56
+ position: z
57
+ .array(z.number())
58
+ .length(3)
59
+ .optional()
60
+ .describe('Placement in the host frame, metres. Level: [x, y, z] (y = 0 on the floor). Wall: [distance along the wall from its start, height of the bottom, 0].'),
61
+ rotation: measurement('angle', 'deg', {
62
+ description: 'Y-axis rotation (default: 0).',
63
+ }).optional(),
64
+ side: z
65
+ .enum(['front', 'back'])
66
+ .optional()
67
+ .describe('Which wall face a wall-side object sits on.'),
68
+ ...geometryMetaFields,
69
+ name: geometryMetaFields.name.describe('What the user would call it ("Front porch").'),
70
+ category: geometryMetaFields.category.describe('What it is, one word or two ("porch", "lantern", "ceiling", "trim").'),
71
+ reason: z
72
+ .string()
73
+ .min(1)
74
+ .max(200)
75
+ .optional()
76
+ .describe('What it stands in for: why no Pascal tool or catalog item builds it ("no cornice type"). Required to create; an edit keeps it unless given.'),
77
+ },
78
+ };
79
+ export const getSourceTool = {
80
+ name: 'get_source',
81
+ title: 'Read object script',
82
+ description: 'The module (three.js or Blender bpy, named by language) an object (or a window, door or column built from code) runs, with its params and their current values. Read it before changing its code, then pass the edited module back with the same nodeId: to add_object for an object, to add_window / add_door / add_column for their respective kinds.',
83
+ input: {
84
+ nodeId: NodeId.describe('An object, window, door or column built from code.'),
85
+ },
86
+ };