@pascal-app/core 1.0.4 → 1.0.5

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 (866) hide show
  1. package/dist/agent-operations/__fixtures__/add-object-cases.d.ts +102 -90
  2. package/dist/agent-operations/__fixtures__/add-object-cases.d.ts.map +1 -1
  3. package/dist/agent-operations/__fixtures__/add-object-cases.js +301 -1
  4. package/dist/agent-operations/__fixtures__/add-stair-cases.d.ts +3 -0
  5. package/dist/agent-operations/__fixtures__/add-stair-cases.d.ts.map +1 -0
  6. package/dist/agent-operations/__fixtures__/add-stair-cases.js +176 -0
  7. package/dist/agent-operations/__fixtures__/build-room-cases.d.ts.map +1 -1
  8. package/dist/agent-operations/__fixtures__/build-room-cases.js +410 -40
  9. package/dist/agent-operations/__fixtures__/cases.d.ts +18 -3
  10. package/dist/agent-operations/__fixtures__/cases.d.ts.map +1 -1
  11. package/dist/agent-operations/__fixtures__/cases.js +183 -4
  12. package/dist/agent-operations/__fixtures__/corner-window-cases.d.ts +3 -0
  13. package/dist/agent-operations/__fixtures__/corner-window-cases.d.ts.map +1 -0
  14. package/dist/agent-operations/__fixtures__/corner-window-cases.js +155 -0
  15. package/dist/agent-operations/__fixtures__/design-brief-cases.d.ts +14 -0
  16. package/dist/agent-operations/__fixtures__/design-brief-cases.d.ts.map +1 -0
  17. package/dist/agent-operations/__fixtures__/design-brief-cases.js +709 -0
  18. package/dist/agent-operations/__fixtures__/finish-cases.d.ts +7 -0
  19. package/dist/agent-operations/__fixtures__/finish-cases.d.ts.map +1 -0
  20. package/dist/agent-operations/__fixtures__/finish-cases.js +758 -0
  21. package/dist/agent-operations/__fixtures__/lot-info-cases.d.ts +3 -0
  22. package/dist/agent-operations/__fixtures__/lot-info-cases.d.ts.map +1 -0
  23. package/dist/agent-operations/__fixtures__/lot-info-cases.js +370 -0
  24. package/dist/agent-operations/__fixtures__/merge-windows-cases.d.ts +3 -0
  25. package/dist/agent-operations/__fixtures__/merge-windows-cases.d.ts.map +1 -0
  26. package/dist/agent-operations/__fixtures__/merge-windows-cases.js +321 -0
  27. package/dist/agent-operations/__fixtures__/native-materials.d.ts +2237 -0
  28. package/dist/agent-operations/__fixtures__/native-materials.d.ts.map +1 -0
  29. package/dist/agent-operations/__fixtures__/native-materials.js +82 -0
  30. package/dist/agent-operations/__fixtures__/node-read-cases.d.ts +4 -0
  31. package/dist/agent-operations/__fixtures__/node-read-cases.d.ts.map +1 -0
  32. package/dist/agent-operations/__fixtures__/node-read-cases.js +639 -0
  33. package/dist/agent-operations/__fixtures__/notation-cases.d.ts +24 -0
  34. package/dist/agent-operations/__fixtures__/notation-cases.d.ts.map +1 -0
  35. package/dist/agent-operations/__fixtures__/notation-cases.js +356 -0
  36. package/dist/agent-operations/__fixtures__/place-items-cases.d.ts.map +1 -1
  37. package/dist/agent-operations/__fixtures__/place-items-cases.js +80 -2
  38. package/dist/agent-operations/__fixtures__/roof-bearing-cases.d.ts +19726 -0
  39. package/dist/agent-operations/__fixtures__/roof-bearing-cases.d.ts.map +1 -0
  40. package/dist/agent-operations/__fixtures__/roof-bearing-cases.js +106 -0
  41. package/dist/agent-operations/__fixtures__/roof-cases.d.ts +9 -0
  42. package/dist/agent-operations/__fixtures__/roof-cases.d.ts.map +1 -0
  43. package/dist/agent-operations/__fixtures__/roof-cases.js +382 -0
  44. package/dist/agent-operations/__fixtures__/room-cases.d.ts +2 -1
  45. package/dist/agent-operations/__fixtures__/room-cases.d.ts.map +1 -1
  46. package/dist/agent-operations/__fixtures__/room-cases.js +136 -1
  47. package/dist/agent-operations/__fixtures__/scene-check-cases.d.ts +4 -0
  48. package/dist/agent-operations/__fixtures__/scene-check-cases.d.ts.map +1 -0
  49. package/dist/agent-operations/__fixtures__/scene-check-cases.js +417 -0
  50. package/dist/agent-operations/__fixtures__/search-assets-cases.d.ts.map +1 -1
  51. package/dist/agent-operations/__fixtures__/search-assets-cases.js +15 -3
  52. package/dist/agent-operations/__fixtures__/site-cases.d.ts +290 -0
  53. package/dist/agent-operations/__fixtures__/site-cases.d.ts.map +1 -0
  54. package/dist/agent-operations/__fixtures__/site-cases.js +780 -0
  55. package/dist/agent-operations/__fixtures__/structure-cases.d.ts +1 -0
  56. package/dist/agent-operations/__fixtures__/structure-cases.d.ts.map +1 -1
  57. package/dist/agent-operations/__fixtures__/structure-cases.js +630 -3
  58. package/dist/agent-operations/__fixtures__/verify-scene-cases.d.ts +311 -1
  59. package/dist/agent-operations/__fixtures__/verify-scene-cases.d.ts.map +1 -1
  60. package/dist/agent-operations/__fixtures__/verify-scene-cases.js +59 -11
  61. package/dist/agent-operations/__fixtures__/view-assets-cases.d.ts +3 -0
  62. package/dist/agent-operations/__fixtures__/view-assets-cases.d.ts.map +1 -0
  63. package/dist/agent-operations/__fixtures__/view-assets-cases.js +155 -0
  64. package/dist/agent-operations/__fixtures__/view-scene-cases.d.ts +50 -0
  65. package/dist/agent-operations/__fixtures__/view-scene-cases.d.ts.map +1 -0
  66. package/dist/agent-operations/__fixtures__/view-scene-cases.js +425 -0
  67. package/dist/agent-operations/achieved.d.ts +5 -0
  68. package/dist/agent-operations/achieved.d.ts.map +1 -1
  69. package/dist/agent-operations/achieved.js +21 -1
  70. package/dist/agent-operations/add-column.d.ts.map +1 -1
  71. package/dist/agent-operations/add-column.js +3 -1
  72. package/dist/agent-operations/add-fence.d.ts +18 -0
  73. package/dist/agent-operations/add-fence.d.ts.map +1 -0
  74. package/dist/agent-operations/add-fence.js +48 -0
  75. package/dist/agent-operations/add-level.d.ts +4 -1
  76. package/dist/agent-operations/add-level.d.ts.map +1 -1
  77. package/dist/agent-operations/add-level.js +48 -12
  78. package/dist/agent-operations/add-object.d.ts +38 -9
  79. package/dist/agent-operations/add-object.d.ts.map +1 -1
  80. package/dist/agent-operations/add-object.js +172 -11
  81. package/dist/agent-operations/add-wall.d.ts +1 -3
  82. package/dist/agent-operations/add-wall.d.ts.map +1 -1
  83. package/dist/agent-operations/add-wall.js +35 -9
  84. package/dist/agent-operations/apply-changes.d.ts +7 -1
  85. package/dist/agent-operations/apply-changes.d.ts.map +1 -1
  86. package/dist/agent-operations/apply-changes.js +54 -22
  87. package/dist/agent-operations/apply-outcome.d.ts +6 -0
  88. package/dist/agent-operations/apply-outcome.d.ts.map +1 -1
  89. package/dist/agent-operations/apply-outcome.js +23 -8
  90. package/dist/agent-operations/asset-views.d.ts +75 -0
  91. package/dist/agent-operations/asset-views.d.ts.map +1 -0
  92. package/dist/agent-operations/asset-views.js +234 -0
  93. package/dist/agent-operations/author-scene.d.ts +157 -0
  94. package/dist/agent-operations/author-scene.d.ts.map +1 -0
  95. package/dist/agent-operations/author-scene.js +1076 -0
  96. package/dist/agent-operations/authored-scene-merge.d.ts +4 -0
  97. package/dist/agent-operations/authored-scene-merge.d.ts.map +1 -0
  98. package/dist/agent-operations/authored-scene-merge.js +96 -0
  99. package/dist/agent-operations/batch.d.ts +22 -0
  100. package/dist/agent-operations/batch.d.ts.map +1 -0
  101. package/dist/agent-operations/batch.js +104 -0
  102. package/dist/agent-operations/ceiling-object-observations.d.ts +31 -0
  103. package/dist/agent-operations/ceiling-object-observations.d.ts.map +1 -0
  104. package/dist/agent-operations/ceiling-object-observations.js +111 -0
  105. package/dist/agent-operations/corner-window.d.ts +19 -0
  106. package/dist/agent-operations/corner-window.d.ts.map +1 -0
  107. package/dist/agent-operations/corner-window.js +84 -0
  108. package/dist/agent-operations/create-roof.d.ts +32 -0
  109. package/dist/agent-operations/create-roof.d.ts.map +1 -0
  110. package/dist/agent-operations/create-roof.js +304 -0
  111. package/dist/agent-operations/create-room.d.ts +2 -0
  112. package/dist/agent-operations/create-room.d.ts.map +1 -1
  113. package/dist/agent-operations/create-room.js +73 -5
  114. package/dist/agent-operations/create-stair.d.ts +6 -28
  115. package/dist/agent-operations/create-stair.d.ts.map +1 -1
  116. package/dist/agent-operations/create-stair.js +187 -104
  117. package/dist/agent-operations/design-brief.d.ts +38 -0
  118. package/dist/agent-operations/design-brief.d.ts.map +1 -0
  119. package/dist/agent-operations/design-brief.js +300 -0
  120. package/dist/agent-operations/designs.d.ts +24 -0
  121. package/dist/agent-operations/designs.d.ts.map +1 -0
  122. package/dist/agent-operations/designs.js +48 -0
  123. package/dist/agent-operations/door-clearance.d.ts +16 -1
  124. package/dist/agent-operations/door-clearance.d.ts.map +1 -1
  125. package/dist/agent-operations/door-clearance.js +61 -4
  126. package/dist/agent-operations/duplicate-level.d.ts.map +1 -1
  127. package/dist/agent-operations/duplicate-level.js +2 -1
  128. package/dist/agent-operations/find-by-type.d.ts +14 -7
  129. package/dist/agent-operations/find-by-type.d.ts.map +1 -1
  130. package/dist/agent-operations/find-by-type.js +266 -43
  131. package/dist/agent-operations/furnish-room.d.ts +22 -1
  132. package/dist/agent-operations/furnish-room.d.ts.map +1 -1
  133. package/dist/agent-operations/furnish-room.js +66 -19
  134. package/dist/agent-operations/furniture-kind.d.ts +22 -0
  135. package/dist/agent-operations/furniture-kind.d.ts.map +1 -0
  136. package/dist/agent-operations/furniture-kind.js +69 -0
  137. package/dist/agent-operations/get-node.d.ts +5 -2
  138. package/dist/agent-operations/get-node.d.ts.map +1 -1
  139. package/dist/agent-operations/get-node.js +82 -10
  140. package/dist/agent-operations/hosted-services.d.ts +2 -1
  141. package/dist/agent-operations/hosted-services.d.ts.map +1 -1
  142. package/dist/agent-operations/index.d.ts +281 -69
  143. package/dist/agent-operations/index.d.ts.map +1 -1
  144. package/dist/agent-operations/index.js +66 -5
  145. package/dist/agent-operations/item-space.d.ts +22 -0
  146. package/dist/agent-operations/item-space.d.ts.map +1 -0
  147. package/dist/agent-operations/item-space.js +69 -0
  148. package/dist/agent-operations/layout-clearance.d.ts +52 -3
  149. package/dist/agent-operations/layout-clearance.d.ts.map +1 -1
  150. package/dist/agent-operations/layout-clearance.js +340 -30
  151. package/dist/agent-operations/level-height-fill.d.ts +12 -0
  152. package/dist/agent-operations/level-height-fill.d.ts.map +1 -0
  153. package/dist/agent-operations/level-height-fill.js +59 -0
  154. package/dist/agent-operations/level-reads.d.ts +5 -1
  155. package/dist/agent-operations/level-reads.d.ts.map +1 -1
  156. package/dist/agent-operations/level-reads.js +10 -3
  157. package/dist/agent-operations/list-levels.d.ts.map +1 -1
  158. package/dist/agent-operations/list-levels.js +23 -0
  159. package/dist/agent-operations/material-preset.d.ts.map +1 -1
  160. package/dist/agent-operations/material-preset.js +3 -9
  161. package/dist/agent-operations/material-refs.d.ts +7 -1
  162. package/dist/agent-operations/material-refs.d.ts.map +1 -1
  163. package/dist/agent-operations/material-refs.js +10 -5
  164. package/dist/agent-operations/merge-windows.d.ts +6 -0
  165. package/dist/agent-operations/merge-windows.d.ts.map +1 -0
  166. package/dist/agent-operations/merge-windows.js +27 -0
  167. package/dist/agent-operations/move-roofs.d.ts +9 -0
  168. package/dist/agent-operations/move-roofs.d.ts.map +1 -0
  169. package/dist/agent-operations/move-roofs.js +29 -0
  170. package/dist/agent-operations/paint.d.ts +2 -1
  171. package/dist/agent-operations/paint.d.ts.map +1 -1
  172. package/dist/agent-operations/paint.js +163 -53
  173. package/dist/agent-operations/photo-elevation.d.ts +155 -0
  174. package/dist/agent-operations/photo-elevation.d.ts.map +1 -0
  175. package/dist/agent-operations/photo-elevation.js +761 -0
  176. package/dist/agent-operations/place-in-room.d.ts +29 -0
  177. package/dist/agent-operations/place-in-room.d.ts.map +1 -0
  178. package/dist/agent-operations/place-in-room.js +403 -0
  179. package/dist/agent-operations/place-items.d.ts.map +1 -1
  180. package/dist/agent-operations/place-items.js +15 -2
  181. package/dist/agent-operations/plan-geometry.d.ts.map +1 -1
  182. package/dist/agent-operations/plan-geometry.js +3 -0
  183. package/dist/agent-operations/point-context.d.ts +139 -0
  184. package/dist/agent-operations/point-context.d.ts.map +1 -0
  185. package/dist/agent-operations/point-context.js +1 -0
  186. package/dist/agent-operations/project-files.d.ts +9 -0
  187. package/dist/agent-operations/project-files.d.ts.map +1 -0
  188. package/dist/agent-operations/project-files.js +25 -0
  189. package/dist/agent-operations/record-made.d.ts +18 -0
  190. package/dist/agent-operations/record-made.d.ts.map +1 -0
  191. package/dist/agent-operations/record-made.js +28 -0
  192. package/dist/agent-operations/roof-footprint.d.ts +24 -0
  193. package/dist/agent-operations/roof-footprint.d.ts.map +1 -0
  194. package/dist/agent-operations/roof-footprint.js +242 -0
  195. package/dist/agent-operations/roof-writes.d.ts +20 -0
  196. package/dist/agent-operations/roof-writes.d.ts.map +1 -0
  197. package/dist/agent-operations/roof-writes.js +165 -0
  198. package/dist/agent-operations/room-findings.d.ts +54 -0
  199. package/dist/agent-operations/room-findings.d.ts.map +1 -0
  200. package/dist/agent-operations/room-findings.js +143 -0
  201. package/dist/agent-operations/room-floor-script.d.ts +23 -0
  202. package/dist/agent-operations/room-floor-script.d.ts.map +1 -0
  203. package/dist/agent-operations/room-floor-script.js +54 -0
  204. package/dist/agent-operations/room-structure.d.ts +2 -2
  205. package/dist/agent-operations/room-structure.d.ts.map +1 -1
  206. package/dist/agent-operations/scene-checkpoint.d.ts +94 -0
  207. package/dist/agent-operations/scene-checkpoint.d.ts.map +1 -0
  208. package/dist/agent-operations/scene-checkpoint.js +176 -0
  209. package/dist/agent-operations/scene-queries.d.ts +3750 -3319
  210. package/dist/agent-operations/scene-queries.d.ts.map +1 -1
  211. package/dist/agent-operations/scene-queries.js +13 -23
  212. package/dist/agent-operations/scene-review.d.ts +52 -0
  213. package/dist/agent-operations/scene-review.d.ts.map +1 -0
  214. package/dist/agent-operations/scene-review.js +106 -0
  215. package/dist/agent-operations/scene-view.d.ts +82 -15
  216. package/dist/agent-operations/scene-view.d.ts.map +1 -1
  217. package/dist/agent-operations/scene-view.js +408 -51
  218. package/dist/agent-operations/search-assets.d.ts +2 -2
  219. package/dist/agent-operations/search-assets.d.ts.map +1 -1
  220. package/dist/agent-operations/search-assets.js +4 -3
  221. package/dist/agent-operations/search-materials.d.ts +9 -3
  222. package/dist/agent-operations/search-materials.d.ts.map +1 -1
  223. package/dist/agent-operations/search-materials.js +83 -29
  224. package/dist/agent-operations/set-checkpoint.d.ts +9 -0
  225. package/dist/agent-operations/set-checkpoint.d.ts.map +1 -0
  226. package/dist/agent-operations/set-checkpoint.js +31 -0
  227. package/dist/agent-operations/set-ground-level.d.ts +12 -0
  228. package/dist/agent-operations/set-ground-level.d.ts.map +1 -0
  229. package/dist/agent-operations/set-ground-level.js +61 -0
  230. package/dist/agent-operations/site.d.ts +21 -0
  231. package/dist/agent-operations/site.d.ts.map +1 -0
  232. package/dist/agent-operations/site.js +123 -0
  233. package/dist/agent-operations/types.d.ts +66 -7
  234. package/dist/agent-operations/types.d.ts.map +1 -1
  235. package/dist/agent-operations/verify-scene.d.ts +39 -5
  236. package/dist/agent-operations/verify-scene.d.ts.map +1 -1
  237. package/dist/agent-operations/verify-scene.js +223 -44
  238. package/dist/agent-operations/wall-face-script.d.ts +28 -0
  239. package/dist/agent-operations/wall-face-script.d.ts.map +1 -0
  240. package/dist/agent-operations/wall-face-script.js +62 -0
  241. package/dist/agent-operations/wall-object-observations.d.ts +41 -0
  242. package/dist/agent-operations/wall-object-observations.d.ts.map +1 -0
  243. package/dist/agent-operations/wall-object-observations.js +249 -0
  244. package/dist/agent-operations/wall-opening.d.ts +23 -23
  245. package/dist/agent-operations/wall-opening.d.ts.map +1 -1
  246. package/dist/agent-operations/wall-skirting.d.ts +24 -0
  247. package/dist/agent-operations/wall-skirting.d.ts.map +1 -0
  248. package/dist/agent-operations/wall-skirting.js +85 -0
  249. package/dist/agent-tools/add-object.d.ts +11 -7
  250. package/dist/agent-tools/add-object.d.ts.map +1 -1
  251. package/dist/agent-tools/add-object.js +17 -11
  252. package/dist/agent-tools/assets.d.ts +8 -0
  253. package/dist/agent-tools/assets.d.ts.map +1 -1
  254. package/dist/agent-tools/assets.js +13 -1
  255. package/dist/agent-tools/author-scene.d.ts +651 -0
  256. package/dist/agent-tools/author-scene.d.ts.map +1 -0
  257. package/dist/agent-tools/author-scene.js +252 -0
  258. package/dist/agent-tools/batch.d.ts +25 -0
  259. package/dist/agent-tools/batch.d.ts.map +1 -0
  260. package/dist/agent-tools/batch.js +61 -0
  261. package/dist/agent-tools/checkpoints.d.ts +13 -0
  262. package/dist/agent-tools/checkpoints.d.ts.map +1 -0
  263. package/dist/agent-tools/checkpoints.js +16 -0
  264. package/dist/agent-tools/clear-scene.d.ts.map +1 -1
  265. package/dist/agent-tools/collections.d.ts +6 -6
  266. package/dist/agent-tools/collections.d.ts.map +1 -1
  267. package/dist/agent-tools/columns.d.ts +18 -18
  268. package/dist/agent-tools/columns.js +2 -2
  269. package/dist/agent-tools/corner-window.d.ts +46 -0
  270. package/dist/agent-tools/corner-window.d.ts.map +1 -0
  271. package/dist/agent-tools/corner-window.js +47 -0
  272. package/dist/agent-tools/create-room.d.ts +26 -25
  273. package/dist/agent-tools/create-room.d.ts.map +1 -1
  274. package/dist/agent-tools/create-room.js +11 -4
  275. package/dist/agent-tools/design-brief.d.ts +408 -0
  276. package/dist/agent-tools/design-brief.d.ts.map +1 -0
  277. package/dist/agent-tools/design-brief.js +149 -0
  278. package/dist/agent-tools/designs.d.ts +34 -0
  279. package/dist/agent-tools/designs.d.ts.map +1 -0
  280. package/dist/agent-tools/designs.js +50 -0
  281. package/dist/agent-tools/fences.d.ts +28 -0
  282. package/dist/agent-tools/fences.d.ts.map +1 -0
  283. package/dist/agent-tools/fences.js +31 -0
  284. package/dist/agent-tools/find-by-type.d.ts +8 -1
  285. package/dist/agent-tools/find-by-type.d.ts.map +1 -1
  286. package/dist/agent-tools/find-by-type.js +23 -2
  287. package/dist/agent-tools/furnish-room.d.ts +10 -8
  288. package/dist/agent-tools/furnish-room.d.ts.map +1 -1
  289. package/dist/agent-tools/furnish-room.js +3 -1
  290. package/dist/agent-tools/hosted-services.d.ts +177 -141
  291. package/dist/agent-tools/hosted-services.d.ts.map +1 -1
  292. package/dist/agent-tools/hosted-services.js +47 -14
  293. package/dist/agent-tools/index.d.ts +894 -215
  294. package/dist/agent-tools/index.d.ts.map +1 -1
  295. package/dist/agent-tools/index.js +47 -3
  296. package/dist/agent-tools/levels.d.ts +11 -3
  297. package/dist/agent-tools/levels.d.ts.map +1 -1
  298. package/dist/agent-tools/levels.js +16 -5
  299. package/dist/agent-tools/measurement.d.ts +38 -20
  300. package/dist/agent-tools/measurement.d.ts.map +1 -1
  301. package/dist/agent-tools/measurement.js +117 -67
  302. package/dist/agent-tools/merge-windows.d.ts +10 -0
  303. package/dist/agent-tools/merge-windows.d.ts.map +1 -0
  304. package/dist/agent-tools/merge-windows.js +12 -0
  305. package/dist/agent-tools/nodes.d.ts.map +1 -1
  306. package/dist/agent-tools/nodes.js +1 -1
  307. package/dist/agent-tools/notation-inventory.d.ts +16 -0
  308. package/dist/agent-tools/notation-inventory.d.ts.map +1 -0
  309. package/dist/agent-tools/notation-inventory.js +105 -0
  310. package/dist/agent-tools/paint.d.ts +5 -5
  311. package/dist/agent-tools/paint.d.ts.map +1 -1
  312. package/dist/agent-tools/paint.js +1 -1
  313. package/dist/agent-tools/photo-elevation.d.ts +32 -0
  314. package/dist/agent-tools/photo-elevation.d.ts.map +1 -0
  315. package/dist/agent-tools/photo-elevation.js +73 -0
  316. package/dist/agent-tools/place-in-room.d.ts +35 -0
  317. package/dist/agent-tools/place-in-room.d.ts.map +1 -0
  318. package/dist/agent-tools/place-in-room.js +61 -0
  319. package/dist/agent-tools/place-items.d.ts +1 -1
  320. package/dist/agent-tools/place-items.js +2 -2
  321. package/dist/agent-tools/project-files.d.ts +189 -0
  322. package/dist/agent-tools/project-files.d.ts.map +1 -0
  323. package/dist/agent-tools/project-files.js +99 -0
  324. package/dist/agent-tools/refusal.d.ts.map +1 -1
  325. package/dist/agent-tools/retired.d.ts +21 -0
  326. package/dist/agent-tools/retired.d.ts.map +1 -0
  327. package/dist/agent-tools/retired.js +29 -0
  328. package/dist/agent-tools/roofs.d.ts +100 -0
  329. package/dist/agent-tools/roofs.d.ts.map +1 -0
  330. package/dist/agent-tools/roofs.js +96 -0
  331. package/dist/agent-tools/room-structure.d.ts +46 -38
  332. package/dist/agent-tools/room-structure.d.ts.map +1 -1
  333. package/dist/agent-tools/room-structure.js +30 -27
  334. package/dist/agent-tools/search-materials.d.ts +22 -3
  335. package/dist/agent-tools/search-materials.d.ts.map +1 -1
  336. package/dist/agent-tools/search-materials.js +13 -14
  337. package/dist/agent-tools/site.d.ts +27 -0
  338. package/dist/agent-tools/site.d.ts.map +1 -0
  339. package/dist/agent-tools/site.js +40 -0
  340. package/dist/agent-tools/sources.d.ts +12 -0
  341. package/dist/agent-tools/sources.d.ts.map +1 -0
  342. package/dist/agent-tools/sources.js +11 -0
  343. package/dist/agent-tools/stairs.d.ts +48 -28
  344. package/dist/agent-tools/stairs.d.ts.map +1 -1
  345. package/dist/agent-tools/stairs.js +65 -22
  346. package/dist/agent-tools/verify-scene.d.ts.map +1 -1
  347. package/dist/agent-tools/verify-scene.js +1 -1
  348. package/dist/agent-tools/view-scene.d.ts +50 -12
  349. package/dist/agent-tools/view-scene.d.ts.map +1 -1
  350. package/dist/agent-tools/view-scene.js +74 -31
  351. package/dist/agent-tools/wall-openings.d.ts +77 -73
  352. package/dist/agent-tools/wall-openings.d.ts.map +1 -1
  353. package/dist/agent-tools/wall-openings.js +9 -5
  354. package/dist/agent-tools/walls.d.ts +4 -4
  355. package/dist/agent-tools/walls.d.ts.map +1 -1
  356. package/dist/agent-tools/walls.js +7 -2
  357. package/dist/building/__fixtures__/wall-opening-cases.d.ts +454 -250
  358. package/dist/building/__fixtures__/wall-opening-cases.d.ts.map +1 -1
  359. package/dist/building/__fixtures__/wall-opening-cases.js +62 -2
  360. package/dist/building/corner-window.d.ts +56 -0
  361. package/dist/building/corner-window.d.ts.map +1 -0
  362. package/dist/building/corner-window.js +179 -0
  363. package/dist/building/ground-level.d.ts +26 -0
  364. package/dist/building/ground-level.d.ts.map +1 -0
  365. package/dist/building/ground-level.js +58 -0
  366. package/dist/building/index.d.ts +5 -0
  367. package/dist/building/index.d.ts.map +1 -1
  368. package/dist/building/index.js +5 -0
  369. package/dist/building/level-duplication.d.ts +7472 -6613
  370. package/dist/building/level-duplication.d.ts.map +1 -1
  371. package/dist/building/level-duplication.js +18 -4
  372. package/dist/building/level-insertion.d.ts +55 -0
  373. package/dist/building/level-insertion.d.ts.map +1 -0
  374. package/dist/building/level-insertion.js +35 -0
  375. package/dist/building/merge-windows.d.ts +58 -0
  376. package/dist/building/merge-windows.d.ts.map +1 -0
  377. package/dist/building/merge-windows.js +189 -0
  378. package/dist/building/opening-style-presets.d.ts +2 -2
  379. package/dist/building/opening-style-presets.d.ts.map +1 -1
  380. package/dist/building/photo-elevation.d.ts +125 -0
  381. package/dist/building/photo-elevation.d.ts.map +1 -0
  382. package/dist/building/photo-elevation.js +404 -0
  383. package/dist/building/wall-gaps.d.ts +13 -0
  384. package/dist/building/wall-gaps.d.ts.map +1 -0
  385. package/dist/building/wall-gaps.js +158 -0
  386. package/dist/building/wall-openings.d.ts +154 -119
  387. package/dist/building/wall-openings.d.ts.map +1 -1
  388. package/dist/building/wall-openings.js +37 -9
  389. package/dist/capture/schema.d.ts +22 -22
  390. package/dist/capture/source.d.ts.map +1 -1
  391. package/dist/capture/source.js +1 -1
  392. package/dist/commands/structure/create-zone.d.ts +12 -1
  393. package/dist/commands/structure/create-zone.d.ts.map +1 -1
  394. package/dist/commands/structure/create-zone.js +49 -0
  395. package/dist/commands/structure/divide-zone.d.ts +3 -3
  396. package/dist/commands/structure/index.d.ts +1 -1
  397. package/dist/commands/structure/index.d.ts.map +1 -1
  398. package/dist/commands/structure/index.js +1 -1
  399. package/dist/commands/structure/set-floor-foundation.d.ts +6 -6
  400. package/dist/commands/structure/set-zone-intent.d.ts +4 -0
  401. package/dist/commands/structure/set-zone-intent.d.ts.map +1 -1
  402. package/dist/commands/structure/set-zone-intent.js +19 -0
  403. package/dist/commands/structure/shared.d.ts +3642 -3213
  404. package/dist/commands/structure/shared.d.ts.map +1 -1
  405. package/dist/commands/structure/zone-wall-merge.d.ts +4149 -3334
  406. package/dist/commands/structure/zone-wall-merge.d.ts.map +1 -1
  407. package/dist/contracts/reference-inventory.d.ts.map +1 -1
  408. package/dist/contracts/reference-inventory.js +106 -26
  409. package/dist/events/bus.d.ts +22 -3
  410. package/dist/events/bus.d.ts.map +1 -1
  411. package/dist/events/capture-sessions.d.ts +5 -0
  412. package/dist/events/capture-sessions.d.ts.map +1 -0
  413. package/dist/events/capture-sessions.js +31 -0
  414. package/dist/hooks/scene-registry/scene-registry.d.ts.map +1 -1
  415. package/dist/hooks/spatial-grid/spatial-grid-manager.d.ts +1 -2
  416. package/dist/hooks/spatial-grid/spatial-grid-manager.d.ts.map +1 -1
  417. package/dist/hooks/spatial-grid/spatial-grid-manager.js +4 -6
  418. package/dist/hooks/spatial-grid/spatial-grid-sync.d.ts +3608 -3179
  419. package/dist/hooks/spatial-grid/spatial-grid-sync.d.ts.map +1 -1
  420. package/dist/hooks/spatial-grid/spatial-grid.d.ts.map +1 -1
  421. package/dist/hooks/spatial-grid/support-host-patch.d.ts.map +1 -1
  422. package/dist/hooks/spatial-grid/support-host-patch.js +11 -2
  423. package/dist/hooks/spatial-grid/use-spatial-query.d.ts +3 -3
  424. package/dist/hooks/spatial-grid/wall-spatial-grid.d.ts.map +1 -1
  425. package/dist/index.d.ts +37 -9
  426. package/dist/index.d.ts.map +1 -1
  427. package/dist/index.js +36 -9
  428. package/dist/lib/__fixtures__/mezzanine.d.ts +11800 -10132
  429. package/dist/lib/__fixtures__/mezzanine.d.ts.map +1 -1
  430. package/dist/lib/absorb-wall-separators.d.ts +3642 -3213
  431. package/dist/lib/absorb-wall-separators.d.ts.map +1 -1
  432. package/dist/lib/angle-accumulator.d.ts.map +1 -1
  433. package/dist/lib/artifact-store.d.ts.map +1 -1
  434. package/dist/lib/below-grade-footprints.d.ts +65 -0
  435. package/dist/lib/below-grade-footprints.d.ts.map +1 -0
  436. package/dist/lib/below-grade-footprints.js +181 -0
  437. package/dist/lib/building-footprint.d.ts +33 -0
  438. package/dist/lib/building-footprint.d.ts.map +1 -0
  439. package/dist/lib/building-footprint.js +89 -0
  440. package/dist/lib/corner-pair.d.ts +1129 -0
  441. package/dist/lib/corner-pair.d.ts.map +1 -0
  442. package/dist/lib/corner-pair.js +130 -0
  443. package/dist/lib/corner-snap.d.ts +54 -0
  444. package/dist/lib/corner-snap.d.ts.map +1 -0
  445. package/dist/lib/corner-snap.js +125 -0
  446. package/dist/lib/critically-damped.d.ts +11 -0
  447. package/dist/lib/critically-damped.d.ts.map +1 -0
  448. package/dist/lib/critically-damped.js +14 -0
  449. package/dist/lib/deepest-drawn.d.ts +18 -0
  450. package/dist/lib/deepest-drawn.d.ts.map +1 -0
  451. package/dist/lib/deepest-drawn.js +65 -0
  452. package/dist/lib/door-operation.d.ts +1 -1
  453. package/dist/lib/exterior-wall-loops.d.ts +17 -0
  454. package/dist/lib/exterior-wall-loops.d.ts.map +1 -0
  455. package/dist/lib/exterior-wall-loops.js +334 -0
  456. package/dist/lib/finish-script.d.ts +61 -0
  457. package/dist/lib/finish-script.d.ts.map +1 -0
  458. package/dist/lib/finish-script.js +86 -0
  459. package/dist/lib/floor-intent-changes.d.ts.map +1 -1
  460. package/dist/lib/floor-intent-changes.js +4 -4
  461. package/dist/lib/floor-plate-paint.d.ts +3 -1
  462. package/dist/lib/floor-plate-paint.d.ts.map +1 -1
  463. package/dist/lib/floor-plate-paint.js +24 -4
  464. package/dist/lib/floor-plates.d.ts +50 -50
  465. package/dist/lib/floor-script.d.ts +24 -0
  466. package/dist/lib/floor-script.d.ts.map +1 -0
  467. package/dist/lib/floor-script.js +51 -0
  468. package/dist/lib/foundation-construction.d.ts +73 -0
  469. package/dist/lib/foundation-construction.d.ts.map +1 -0
  470. package/dist/lib/foundation-construction.js +242 -0
  471. package/dist/lib/foundation-standard.d.ts +30 -0
  472. package/dist/lib/foundation-standard.d.ts.map +1 -0
  473. package/dist/lib/foundation-standard.js +30 -0
  474. package/dist/lib/foundation-wall.d.ts +36 -0
  475. package/dist/lib/foundation-wall.d.ts.map +1 -0
  476. package/dist/lib/foundation-wall.js +66 -0
  477. package/dist/lib/generic-foundation.d.ts +40 -0
  478. package/dist/lib/generic-foundation.d.ts.map +1 -0
  479. package/dist/lib/generic-foundation.js +200 -0
  480. package/dist/lib/geometry-script-node.d.ts +32 -3
  481. package/dist/lib/geometry-script-node.d.ts.map +1 -1
  482. package/dist/lib/geometry-script-node.js +26 -0
  483. package/dist/lib/grade-standing.d.ts +38 -0
  484. package/dist/lib/grade-standing.d.ts.map +1 -0
  485. package/dist/lib/grade-standing.js +137 -0
  486. package/dist/lib/ground-level.d.ts +20 -0
  487. package/dist/lib/ground-level.d.ts.map +1 -0
  488. package/dist/lib/ground-level.js +49 -0
  489. package/dist/lib/ground-over-part.d.ts +13 -0
  490. package/dist/lib/ground-over-part.d.ts.map +1 -0
  491. package/dist/lib/ground-over-part.js +94 -0
  492. package/dist/lib/ground-seat.d.ts +47 -0
  493. package/dist/lib/ground-seat.d.ts.map +1 -0
  494. package/dist/lib/ground-seat.js +61 -0
  495. package/dist/lib/ground-window.d.ts +39 -0
  496. package/dist/lib/ground-window.d.ts.map +1 -0
  497. package/dist/lib/ground-window.js +147 -0
  498. package/dist/lib/opening-floor-datum.d.ts.map +1 -1
  499. package/dist/lib/opening-floor-datum.js +2 -3
  500. package/dist/lib/own-floor-intent.d.ts.map +1 -1
  501. package/dist/lib/own-floor-intent.js +4 -4
  502. package/dist/lib/plate-surface.d.ts.map +1 -1
  503. package/dist/lib/plate-surface.js +3 -1
  504. package/dist/lib/point-ask.d.ts +9 -0
  505. package/dist/lib/point-ask.d.ts.map +1 -0
  506. package/dist/lib/point-ask.js +36 -0
  507. package/dist/lib/room-drawn-floor.d.ts +1 -1
  508. package/dist/lib/room-drawn-floor.d.ts.map +1 -1
  509. package/dist/lib/room-floor-feasibility.d.ts.map +1 -1
  510. package/dist/lib/room-floor-feasibility.js +3 -3
  511. package/dist/lib/room-graph.d.ts.map +1 -1
  512. package/dist/lib/room-graph.js +2 -0
  513. package/dist/lib/room-name.d.ts +2 -0
  514. package/dist/lib/room-name.d.ts.map +1 -1
  515. package/dist/lib/room-name.js +2 -0
  516. package/dist/lib/room-topology-index.d.ts.map +1 -1
  517. package/dist/lib/room-topology-index.js +1 -1
  518. package/dist/lib/room-zone-adoption.d.ts.map +1 -1
  519. package/dist/lib/script-inputs-key.d.ts +3 -0
  520. package/dist/lib/script-inputs-key.d.ts.map +1 -0
  521. package/dist/lib/script-inputs-key.js +13 -0
  522. package/dist/lib/setback-envelope.d.ts +95 -5
  523. package/dist/lib/setback-envelope.d.ts.map +1 -1
  524. package/dist/lib/setback-envelope.js +351 -35
  525. package/dist/lib/site-flatwork.d.ts +11 -0
  526. package/dist/lib/site-flatwork.d.ts.map +1 -0
  527. package/dist/lib/site-flatwork.js +11 -0
  528. package/dist/lib/site-ground-height.d.ts +13 -0
  529. package/dist/lib/site-ground-height.d.ts.map +1 -0
  530. package/dist/lib/site-ground-height.js +16 -0
  531. package/dist/lib/site-placement.d.ts +362 -0
  532. package/dist/lib/site-placement.d.ts.map +1 -0
  533. package/dist/lib/site-placement.js +942 -0
  534. package/dist/lib/snap-ease.d.ts +20 -0
  535. package/dist/lib/snap-ease.d.ts.map +1 -0
  536. package/dist/lib/snap-ease.js +50 -0
  537. package/dist/lib/structure-kernel.d.ts +1 -1
  538. package/dist/lib/structure-kernel.d.ts.map +1 -1
  539. package/dist/lib/structure-kernel.js +2 -0
  540. package/dist/lib/surface-support-references.d.ts +4 -0
  541. package/dist/lib/surface-support-references.d.ts.map +1 -0
  542. package/dist/lib/surface-support-references.js +19 -0
  543. package/dist/lib/terrain-support-query.d.ts +10 -0
  544. package/dist/lib/terrain-support-query.d.ts.map +1 -1
  545. package/dist/lib/terrain-support-query.js +1 -1
  546. package/dist/lib/wall-face-script.d.ts +66 -0
  547. package/dist/lib/wall-face-script.d.ts.map +1 -0
  548. package/dist/lib/wall-face-script.js +235 -0
  549. package/dist/lib/zone-colors.d.ts +1 -1
  550. package/dist/lib/zone-colors.d.ts.map +1 -1
  551. package/dist/lib/zone-quantities.d.ts.map +1 -1
  552. package/dist/lib/zone-quantities.js +4 -5
  553. package/dist/material-kinds.d.ts +9 -0
  554. package/dist/material-kinds.d.ts.map +1 -0
  555. package/dist/material-kinds.js +30 -0
  556. package/dist/material-library.d.ts +4 -4
  557. package/dist/material-library.d.ts.map +1 -1
  558. package/dist/material-library.js +72 -26
  559. package/dist/node-slots/index.d.ts +1 -0
  560. package/dist/node-slots/index.d.ts.map +1 -1
  561. package/dist/node-slots/index.js +7 -1
  562. package/dist/node-slots/roof.d.ts +5 -0
  563. package/dist/node-slots/roof.d.ts.map +1 -0
  564. package/dist/node-slots/roof.js +12 -0
  565. package/dist/node-slots/stair.d.ts +2 -0
  566. package/dist/node-slots/stair.d.ts.map +1 -1
  567. package/dist/node-slots/stair.js +6 -2
  568. package/dist/procedural-items/design-placement.d.ts.map +1 -1
  569. package/dist/procedural-items/design.d.ts +19 -19
  570. package/dist/procedural-items/fixtures.d.ts +297 -297
  571. package/dist/procedural-items/fixtures.d.ts.map +1 -1
  572. package/dist/procedural-items/integration.d.ts +106 -106
  573. package/dist/procedural-items/joints.d.ts +4 -4
  574. package/dist/procedural-items/library-colors.d.ts +22 -22
  575. package/dist/procedural-items/library-colors.d.ts.map +1 -1
  576. package/dist/procedural-items/motion-controller.d.ts.map +1 -1
  577. package/dist/procedural-items/node.d.ts +291 -291
  578. package/dist/procedural-items/query.d.ts +1 -1
  579. package/dist/procedural-items/query.d.ts.map +1 -1
  580. package/dist/procedural-items/recipe.d.ts +11 -11
  581. package/dist/procedural-items/recipe.d.ts.map +1 -1
  582. package/dist/procedural-items/section.d.ts.map +1 -1
  583. package/dist/registry/index.d.ts +1 -1
  584. package/dist/registry/index.d.ts.map +1 -1
  585. package/dist/registry/scene-api.d.ts +1 -0
  586. package/dist/registry/scene-api.d.ts.map +1 -1
  587. package/dist/registry/scene-api.js +3 -0
  588. package/dist/registry/subtree.d.ts.map +1 -1
  589. package/dist/registry/subtree.js +2 -0
  590. package/dist/registry/types.d.ts +120 -1
  591. package/dist/registry/types.d.ts.map +1 -1
  592. package/dist/schema/assembly.d.ts +41 -41
  593. package/dist/schema/asset-url.d.ts +1 -1
  594. package/dist/schema/asset-url.d.ts.map +1 -1
  595. package/dist/schema/base.d.ts +9 -9
  596. package/dist/schema/base.d.ts.map +1 -1
  597. package/dist/schema/camera.d.ts +1 -1
  598. package/dist/schema/collection-templates.d.ts +20 -20
  599. package/dist/schema/collection-templates.d.ts.map +1 -1
  600. package/dist/schema/geometry-metadata.d.ts +7 -7
  601. package/dist/schema/geometry-metadata.d.ts.map +1 -1
  602. package/dist/schema/geometry-source.d.ts +26 -16
  603. package/dist/schema/geometry-source.d.ts.map +1 -1
  604. package/dist/schema/geometry-source.js +14 -0
  605. package/dist/schema/index.d.ts +10 -7
  606. package/dist/schema/index.d.ts.map +1 -1
  607. package/dist/schema/index.js +10 -7
  608. package/dist/schema/material.d.ts +33 -33
  609. package/dist/schema/nodes/barrel-roof.d.ts +3 -0
  610. package/dist/schema/nodes/barrel-roof.d.ts.map +1 -0
  611. package/dist/schema/nodes/barrel-roof.js +11 -0
  612. package/dist/schema/nodes/block.d.ts +8 -8
  613. package/dist/schema/nodes/box-vent.d.ts +13 -13
  614. package/dist/schema/nodes/building.d.ts +9 -8
  615. package/dist/schema/nodes/building.d.ts.map +1 -1
  616. package/dist/schema/nodes/building.js +2 -0
  617. package/dist/schema/nodes/cabinet.d.ts +130 -129
  618. package/dist/schema/nodes/cabinet.d.ts.map +1 -1
  619. package/dist/schema/nodes/cabinet.js +1 -1
  620. package/dist/schema/nodes/ceiling.d.ts +15 -15
  621. package/dist/schema/nodes/chimney.d.ts +23 -23
  622. package/dist/schema/nodes/column.d.ts +207 -199
  623. package/dist/schema/nodes/column.d.ts.map +1 -1
  624. package/dist/schema/nodes/column.js +2 -0
  625. package/dist/schema/nodes/construction-dimension.d.ts +34 -34
  626. package/dist/schema/nodes/cupola.d.ts +15 -15
  627. package/dist/schema/nodes/curtain-wall.d.ts +21 -20
  628. package/dist/schema/nodes/curtain-wall.d.ts.map +1 -1
  629. package/dist/schema/nodes/curtain-wall.js +23 -0
  630. package/dist/schema/nodes/door.d.ts +50 -43
  631. package/dist/schema/nodes/door.d.ts.map +1 -1
  632. package/dist/schema/nodes/door.js +19 -0
  633. package/dist/schema/nodes/dormer.d.ts +37 -36
  634. package/dist/schema/nodes/dormer.d.ts.map +1 -1
  635. package/dist/schema/nodes/downspout.d.ts +17 -17
  636. package/dist/schema/nodes/duct-fitting.d.ts +24 -24
  637. package/dist/schema/nodes/duct-segment.d.ts +14 -14
  638. package/dist/schema/nodes/duct-terminal.d.ts +12 -12
  639. package/dist/schema/nodes/elevator.d.ts +15 -15
  640. package/dist/schema/nodes/eyebrow-vent.d.ts +13 -13
  641. package/dist/schema/nodes/fence-feature.d.ts +37 -37
  642. package/dist/schema/nodes/fence-types.d.ts +32 -0
  643. package/dist/schema/nodes/fence-types.d.ts.map +1 -0
  644. package/dist/schema/nodes/fence-types.js +22 -0
  645. package/dist/schema/nodes/fence.d.ts +43 -72
  646. package/dist/schema/nodes/fence.d.ts.map +1 -1
  647. package/dist/schema/nodes/fence.js +4 -20
  648. package/dist/schema/nodes/floor-opening.d.ts +8 -8
  649. package/dist/schema/nodes/guide.d.ts +8 -8
  650. package/dist/schema/nodes/gutter.d.ts +14 -14
  651. package/dist/schema/nodes/gutter.d.ts.map +1 -1
  652. package/dist/schema/nodes/gutter.js +6 -5
  653. package/dist/schema/nodes/hvac-equipment.d.ts +13 -13
  654. package/dist/schema/nodes/imported-mesh.d.ts +8 -8
  655. package/dist/schema/nodes/item.d.ts +30 -25
  656. package/dist/schema/nodes/item.d.ts.map +1 -1
  657. package/dist/schema/nodes/lean-to-extension.d.ts +36 -36
  658. package/dist/schema/nodes/level.d.ts +9 -9
  659. package/dist/schema/nodes/lineset.d.ts +8 -8
  660. package/dist/schema/nodes/liquid-line.d.ts +8 -8
  661. package/dist/schema/nodes/measurement.d.ts +8 -8
  662. package/dist/schema/nodes/opening-types.d.ts +13 -13
  663. package/dist/schema/nodes/opening-types.d.ts.map +1 -1
  664. package/dist/schema/nodes/pipe-fitting.d.ts +15 -15
  665. package/dist/schema/nodes/pipe-segment.d.ts +11 -11
  666. package/dist/schema/nodes/pipe-trap.d.ts +9 -9
  667. package/dist/schema/nodes/ridge-vent.d.ts +14 -14
  668. package/dist/schema/nodes/ridge-vent.d.ts.map +1 -1
  669. package/dist/schema/nodes/ridge-vent.js +3 -1
  670. package/dist/schema/nodes/roof-glazing-config.d.ts +90 -0
  671. package/dist/schema/nodes/roof-glazing-config.d.ts.map +1 -0
  672. package/dist/schema/nodes/roof-glazing-config.js +34 -0
  673. package/dist/schema/nodes/roof-glazing.d.ts +57 -0
  674. package/dist/schema/nodes/roof-glazing.d.ts.map +1 -0
  675. package/dist/schema/nodes/roof-glazing.js +514 -0
  676. package/dist/schema/nodes/roof-segment-resize.d.ts +4 -0
  677. package/dist/schema/nodes/roof-segment-resize.d.ts.map +1 -0
  678. package/dist/schema/nodes/roof-segment-resize.js +21 -0
  679. package/dist/schema/nodes/roof-segment-shape.d.ts +5 -0
  680. package/dist/schema/nodes/roof-segment-shape.d.ts.map +1 -1
  681. package/dist/schema/nodes/roof-segment-shape.js +44 -0
  682. package/dist/schema/nodes/roof-segment-walls.d.ts +1 -1
  683. package/dist/schema/nodes/roof-segment-walls.d.ts.map +1 -1
  684. package/dist/schema/nodes/roof-segment-walls.js +24 -0
  685. package/dist/schema/nodes/roof-segment.d.ts +153 -46
  686. package/dist/schema/nodes/roof-segment.d.ts.map +1 -1
  687. package/dist/schema/nodes/roof-segment.js +91 -20
  688. package/dist/schema/nodes/roof-types.d.ts +14 -0
  689. package/dist/schema/nodes/roof-types.d.ts.map +1 -0
  690. package/dist/schema/nodes/roof-types.js +14 -0
  691. package/dist/schema/nodes/roof.d.ts +49 -49
  692. package/dist/schema/nodes/scan.d.ts +8 -8
  693. package/dist/schema/nodes/separator.d.ts +8 -8
  694. package/dist/schema/nodes/shelf.d.ts +16 -16
  695. package/dist/schema/nodes/site-facts.d.ts +64 -0
  696. package/dist/schema/nodes/site-facts.d.ts.map +1 -0
  697. package/dist/schema/nodes/site-facts.js +73 -0
  698. package/dist/schema/nodes/site.d.ts +105 -63
  699. package/dist/schema/nodes/site.d.ts.map +1 -1
  700. package/dist/schema/nodes/site.js +7 -70
  701. package/dist/schema/nodes/skylight.d.ts +41 -41
  702. package/dist/schema/nodes/skylight.d.ts.map +1 -1
  703. package/dist/schema/nodes/slab.d.ts +21 -21
  704. package/dist/schema/nodes/solar-panel.d.ts +21 -21
  705. package/dist/schema/nodes/spawn.d.ts +8 -8
  706. package/dist/schema/nodes/stair-construction.d.ts +3 -3
  707. package/dist/schema/nodes/stair-defaults.d.ts +16 -0
  708. package/dist/schema/nodes/stair-defaults.d.ts.map +1 -0
  709. package/dist/schema/nodes/stair-defaults.js +15 -0
  710. package/dist/schema/nodes/stair-segment.d.ts +22 -22
  711. package/dist/schema/nodes/stair-types.d.ts +29 -0
  712. package/dist/schema/nodes/stair-types.d.ts.map +1 -0
  713. package/dist/schema/nodes/stair-types.js +23 -0
  714. package/dist/schema/nodes/stair.d.ts +51 -75
  715. package/dist/schema/nodes/stair.d.ts.map +1 -1
  716. package/dist/schema/nodes/stair.js +6 -20
  717. package/dist/schema/nodes/structural-grid.d.ts +8 -8
  718. package/dist/schema/nodes/surface-hole-metadata.d.ts +2 -2
  719. package/dist/schema/nodes/turbine-vent.d.ts +13 -13
  720. package/dist/schema/nodes/unit.d.ts +10 -10
  721. package/dist/schema/nodes/unit.d.ts.map +1 -1
  722. package/dist/schema/nodes/wall.d.ts +479 -146
  723. package/dist/schema/nodes/wall.d.ts.map +1 -1
  724. package/dist/schema/nodes/wall.js +19 -0
  725. package/dist/schema/nodes/window.d.ts +55 -39
  726. package/dist/schema/nodes/window.d.ts.map +1 -1
  727. package/dist/schema/nodes/window.js +10 -0
  728. package/dist/schema/nodes/zone.d.ts +231 -12
  729. package/dist/schema/nodes/zone.d.ts.map +1 -1
  730. package/dist/schema/nodes/zone.js +10 -0
  731. package/dist/schema/provenance.d.ts +21 -21
  732. package/dist/schema/scene-material.d.ts +5 -5
  733. package/dist/schema/site-presentation.d.ts +100 -0
  734. package/dist/schema/site-presentation.d.ts.map +1 -0
  735. package/dist/schema/site-presentation.js +83 -0
  736. package/dist/schema/types.d.ts +1954 -1414
  737. package/dist/schema/types.d.ts.map +1 -1
  738. package/dist/services/__fixtures__/wall-plane-top-boundary-repro.d.ts.map +1 -1
  739. package/dist/services/index.d.ts +5 -1
  740. package/dist/services/index.d.ts.map +1 -1
  741. package/dist/services/index.js +5 -1
  742. package/dist/services/level-height.d.ts.map +1 -1
  743. package/dist/services/level-height.js +7 -3
  744. package/dist/services/port-connectivity.d.ts +4 -0
  745. package/dist/services/port-connectivity.d.ts.map +1 -1
  746. package/dist/services/port-connectivity.js +35 -0
  747. package/dist/services/project-file-sink.d.ts +9 -0
  748. package/dist/services/project-file-sink.d.ts.map +1 -0
  749. package/dist/services/project-file-sink.js +13 -0
  750. package/dist/services/roof-bearing.d.ts +62 -0
  751. package/dist/services/roof-bearing.d.ts.map +1 -0
  752. package/dist/services/roof-bearing.js +234 -0
  753. package/dist/services/roof-level.d.ts +121 -0
  754. package/dist/services/roof-level.d.ts.map +1 -0
  755. package/dist/services/roof-level.js +280 -0
  756. package/dist/services/roof-move.d.ts +83 -0
  757. package/dist/services/roof-move.d.ts.map +1 -0
  758. package/dist/services/roof-move.js +316 -0
  759. package/dist/services/stair-surface-snap.d.ts +14 -0
  760. package/dist/services/stair-surface-snap.d.ts.map +1 -0
  761. package/dist/services/stair-surface-snap.js +116 -0
  762. package/dist/services/storey-datum.d.ts +12 -0
  763. package/dist/services/storey-datum.d.ts.map +1 -0
  764. package/dist/services/storey-datum.js +18 -0
  765. package/dist/services/storey.d.ts +51 -5
  766. package/dist/services/storey.d.ts.map +1 -1
  767. package/dist/services/storey.js +125 -8
  768. package/dist/solar-panel-presets.d.ts +2 -2
  769. package/dist/store/actions/node-actions.d.ts +3613 -3182
  770. package/dist/store/actions/node-actions.d.ts.map +1 -1
  771. package/dist/store/actions/node-actions.js +46 -1
  772. package/dist/store/derived-node-guard.d.ts.map +1 -1
  773. package/dist/store/history-control.d.ts +39 -0
  774. package/dist/store/history-control.d.ts.map +1 -1
  775. package/dist/store/history-control.js +84 -4
  776. package/dist/store/scene-annotations.d.ts +7267 -6409
  777. package/dist/store/scene-annotations.d.ts.map +1 -1
  778. package/dist/store/scene-preview.d.ts +16 -0
  779. package/dist/store/scene-preview.d.ts.map +1 -0
  780. package/dist/store/scene-preview.js +144 -0
  781. package/dist/store/use-live-node-overrides.d.ts.map +1 -1
  782. package/dist/store/use-live-terrain.d.ts.map +1 -1
  783. package/dist/store/use-live-transforms.d.ts.map +1 -1
  784. package/dist/store/use-scene.d.ts.map +1 -1
  785. package/dist/store/use-scene.js +37 -4
  786. package/dist/systems/elevator/elevator-dispatch.js +1 -1
  787. package/dist/systems/fence/fence-features.d.ts.map +1 -1
  788. package/dist/systems/owned-floor-openings.d.ts.map +1 -1
  789. package/dist/systems/owned-floor-openings.js +24 -3
  790. package/dist/systems/roof/roof-elevation-system.d.ts.map +1 -1
  791. package/dist/systems/roof/roof-elevation-system.js +9 -3
  792. package/dist/systems/roof/roof-elevation.d.ts +5 -0
  793. package/dist/systems/roof/roof-elevation.d.ts.map +1 -1
  794. package/dist/systems/roof/roof-elevation.js +91 -62
  795. package/dist/systems/slab/__fixtures__/floor-step.d.ts +4623 -3516
  796. package/dist/systems/slab/__fixtures__/floor-step.d.ts.map +1 -1
  797. package/dist/systems/slab/__fixtures__/raised-room.d.ts +5149 -4076
  798. package/dist/systems/slab/__fixtures__/raised-room.d.ts.map +1 -1
  799. package/dist/systems/slab/slab-support.d.ts +6 -3
  800. package/dist/systems/slab/slab-support.d.ts.map +1 -1
  801. package/dist/systems/slab/slab-support.js +78 -10
  802. package/dist/systems/stair/stair-detail-budget.d.ts +2 -2
  803. package/dist/systems/stair/stair-detail-budget.d.ts.map +1 -1
  804. package/dist/systems/stair/stair-footprint.d.ts +6 -0
  805. package/dist/systems/stair/stair-footprint.d.ts.map +1 -1
  806. package/dist/systems/stair/stair-footprint.js +27 -14
  807. package/dist/systems/stair/stair-layout.d.ts +2 -2
  808. package/dist/systems/stair/stair-opening-preview.d.ts +3643 -3214
  809. package/dist/systems/stair/stair-opening-preview.d.ts.map +1 -1
  810. package/dist/systems/stair/stair-presets.d.ts +73 -65
  811. package/dist/systems/stair/stair-presets.d.ts.map +1 -1
  812. package/dist/systems/stair/stair-presets.js +16 -9
  813. package/dist/systems/stair/stair-rail-path.d.ts +1 -1
  814. package/dist/systems/stair/stair-rise-query.d.ts +16 -0
  815. package/dist/systems/stair/stair-rise-query.d.ts.map +1 -1
  816. package/dist/systems/stair/stair-rise-query.js +57 -7
  817. package/dist/systems/stair/stair-sizing.d.ts +101 -99
  818. package/dist/systems/stair/stair-sizing.d.ts.map +1 -1
  819. package/dist/systems/wall/wall-assembly.d.ts +11 -0
  820. package/dist/systems/wall/wall-assembly.d.ts.map +1 -1
  821. package/dist/systems/wall/wall-assembly.js +21 -0
  822. package/dist/systems/wall/wall-curve.d.ts +5 -0
  823. package/dist/systems/wall/wall-curve.d.ts.map +1 -1
  824. package/dist/systems/wall/wall-curve.js +13 -0
  825. package/dist/systems/wall/wall-frame.d.ts.map +1 -1
  826. package/dist/systems/wall/wall-frame.js +8 -0
  827. package/dist/systems/wall/wall-room-sides.d.ts +8 -0
  828. package/dist/systems/wall/wall-room-sides.d.ts.map +1 -1
  829. package/dist/systems/wall/wall-room-sides.js +60 -7
  830. package/dist/systems/wall/wall-top.d.ts +7 -4
  831. package/dist/systems/wall/wall-top.d.ts.map +1 -1
  832. package/dist/systems/wall/wall-top.js +14 -6
  833. package/dist/systems/wall/wall-topology.d.ts +4 -0
  834. package/dist/systems/wall/wall-topology.d.ts.map +1 -1
  835. package/dist/systems/wall/wall-topology.js +4 -2
  836. package/dist/systems/wall/wall-trim.d.ts +7 -0
  837. package/dist/systems/wall/wall-trim.d.ts.map +1 -0
  838. package/dist/systems/wall/wall-trim.js +10 -0
  839. package/dist/utils/clone-scene-graph.d.ts.map +1 -1
  840. package/dist/utils/clone-scene-graph.js +8 -0
  841. package/dist/utils/ensure-scene-openings.d.ts +7420 -6562
  842. package/dist/utils/ensure-scene-openings.d.ts.map +1 -1
  843. package/dist/utils/floor-piece-adoption.d.ts +2 -2
  844. package/dist/utils/floor-plate-migration.d.ts +3746 -3317
  845. package/dist/utils/floor-plate-migration.d.ts.map +1 -1
  846. package/dist/utils/floor-plate-migration.js +2 -2
  847. package/dist/utils/heal-scene-graph.d.ts +12 -0
  848. package/dist/utils/heal-scene-graph.d.ts.map +1 -1
  849. package/dist/utils/heal-scene-graph.js +40 -23
  850. package/dist/utils/legacy-wall-datums.d.ts.map +1 -1
  851. package/dist/utils/legacy-wall-datums.js +2 -2
  852. package/dist/utils/owned-floor-opening-migration.d.ts +3642 -3213
  853. package/dist/utils/owned-floor-opening-migration.d.ts.map +1 -1
  854. package/dist/utils/reconcile-structure-on-load.d.ts +3730 -7777
  855. package/dist/utils/reconcile-structure-on-load.d.ts.map +1 -1
  856. package/dist/utils/scene-migrations.d.ts +1 -1
  857. package/dist/utils/scene-migrations.d.ts.map +1 -1
  858. package/dist/utils/scene-migrations.js +1 -1
  859. package/dist/utils/semantic-equal.d.ts +3 -0
  860. package/dist/utils/semantic-equal.d.ts.map +1 -0
  861. package/dist/utils/semantic-equal.js +26 -0
  862. package/dist/utils/structure-id.d.ts.map +1 -1
  863. package/dist/utils/types.d.ts.map +1 -1
  864. package/dist/utils/wall-face-migration.d.ts +1 -1
  865. package/dist/utils/wall-face-migration.d.ts.map +1 -1
  866. package/package.json +36 -10
@@ -0,0 +1 @@
1
+ {"version":3,"file":"corner-pair.d.ts","sourceRoot":"","sources":["../../src/lib/corner-pair.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AAE9D;;;GAGG;AAEH,KAAK,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;AAC9C,MAAM,MAAM,OAAO,GAAG,OAAO,GAAG,KAAK,CAAA;AAMrC;;;GAGG;AACH,eAAO,MAAM,cAAc,MAAM,CAAA;AACjC,gFAAgF;AAChF,eAAO,MAAM,qBAAqB,KAAK,CAAA;AAEvC,sFAAsF;AACtF,eAAO,MAAM,gBAAgB,UAAW,MAAM,YAC0B,CAAA;AAExE;;;GAGG;AACH,eAAO,MAAM,aAAa,WAChB,IAAI,CAAC,UAAU,EAAE,YAAY,GAAG,cAAc,GAAG,aAAa,GAAG,QAAQ,CAAC,YAK9B,CAAA;AAItD,eAAO,MAAM,YAAY,SAAU,QAAQ,WAAmC,CAAA;AAC9E,eAAO,MAAM,YAAY,SAAU,QAAQ,OAAO,OAAO,qBAChB,CAAA;AAEzC,sEAAsE;AACtE,wBAAgB,aAAa,CAC3B,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,aAAa,UAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IActB;AAED,gGAAgG;AAChG,wBAAgB,WAAW,CACzB,CAAC,EAAE;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,GAAG,EAAE,OAAO,CAAA;CAAE,EACnC,CAAC,EAAE;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,GAAG,EAAE,OAAO,CAAA;CAAE,UAUpC;AAED,yDAAyD;AACzD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAGxF;AAED,sGAAsG;AACtG,wBAAgB,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,GAAG,IAAI,CAMhF;AAED,gFAAgF;AAChF,wBAAgB,YAAY,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,GAAG,MAAM,CAIrF;AAED,gGAAgG;AAChG,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,UAAU,EAClB,KAAK,SAAiB,GACrB,OAAO,GAAG,IAAI,CAQhB;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU;UA4BzC,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SAOzB;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,MAAM,GACf;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;CAAE,EAAE,CAWpD"}
@@ -0,0 +1,130 @@
1
+ /** How close a wall's end must be to a point to meet there (m). */
2
+ const AT = 1e-3;
3
+ /** How close a window's edge must be to its wall's end to be one side of a corner pair (m). */
4
+ const REACHES = 0.01;
5
+ /**
6
+ * How near a corner a window counts as being at it, to wrap it or join it to the window on the
7
+ * other wall (m); a window this near is slid to the corner when it joins.
8
+ */
9
+ export const CORNER_REACH_M = 0.3;
10
+ /** A corner this close to folded back or to straight is no corner (degrees). */
11
+ export const DEGENERATE_CORNER_DEG = 10;
12
+ /** Whether two walls meeting at `angle` (degrees) make a corner a window can wrap. */
13
+ export const isWrappableAngle = (angle) => angle >= DEGENERATE_CORNER_DEG && angle <= 180 - DEGENERATE_CORNER_DEG;
14
+ /**
15
+ * Whether the glass of a window fuses at a corner: a fixed, rectangular, framed window's does. The
16
+ * other families keep their frames, so their sides meet at the frames as at a post.
17
+ */
18
+ export const fusesAtCorner = (window) => !window.source &&
19
+ window.openingKind !== 'opening' &&
20
+ (window.windowType ?? 'fixed') === 'fixed' &&
21
+ (window.openingShape ?? 'rectangle') === 'rectangle';
22
+ const distance = (a, b) => Math.hypot(a[0] - b[0], a[1] - b[1]);
23
+ export const wallLengthOf = (wall) => distance(wall.start, wall.end);
24
+ export const wallEndPoint = (wall, end) => end === 'start' ? wall.start : wall.end;
25
+ /** The walls of a level ending at a point, with the end that does. */
26
+ export function wallsEndingAt(nodes, levelId, point, includeCurved = false) {
27
+ return Object.values(nodes).flatMap((node) => {
28
+ if (node.type !== 'wall' ||
29
+ (levelId && node.parentId !== levelId) ||
30
+ (node.curveOffset && !includeCurved))
31
+ return [];
32
+ const wall = node;
33
+ const end = distance(wall.start, point) <= AT ? 'start' : distance(wall.end, point) <= AT ? 'end' : null;
34
+ return end ? [{ wall, end }] : [];
35
+ });
36
+ }
37
+ /** The angle two walls make at the corner they share, between their directions away from it. */
38
+ export function cornerAngle(a, b) {
39
+ const away = ({ wall, end }) => {
40
+ const [from, to] = end === 'start' ? [wall.start, wall.end] : [wall.end, wall.start];
41
+ const length = distance(from, to);
42
+ return [(to[0] - from[0]) / length, (to[1] - from[1]) / length];
43
+ };
44
+ const [u, v] = [away(a), away(b)];
45
+ const cos = Math.max(-1, Math.min(1, u[0] * v[0] + u[1] * v[1]));
46
+ return (Math.acos(cos) * 180) / Math.PI;
47
+ }
48
+ /** Whether a window's edge reaches `end` of its wall. */
49
+ export function windowReachesEnd(nodes, window, end) {
50
+ const wall = nodes[window.parentId ?? ''];
51
+ return wall?.type === 'wall' && Math.abs(windowEndGap(wall, window, end)) <= REACHES;
52
+ }
53
+ /** The end of its wall a window's edge reaches, if it reaches one; `start` when it spans the wall. */
54
+ export function windowCornerEnd(nodes, window) {
55
+ return windowReachesEnd(nodes, window, 'start')
56
+ ? 'start'
57
+ : windowReachesEnd(nodes, window, 'end')
58
+ ? 'end'
59
+ : null;
60
+ }
61
+ /** How far a window's edge is from an end of its wall (m); negative past it. */
62
+ export function windowEndGap(wall, window, end) {
63
+ return end === 'start'
64
+ ? window.position[0] - window.width / 2
65
+ : wallLengthOf(wall) - (window.position[0] + window.width / 2);
66
+ }
67
+ /** The end of its wall a window is within `reach` of, the nearer if both; null when neither. */
68
+ export function windowNearCornerEnd(nodes, window, reach = CORNER_REACH_M) {
69
+ const wall = nodes[window.parentId ?? ''];
70
+ if (wall?.type !== 'wall')
71
+ return null;
72
+ const gaps = ['start', 'end']
73
+ .map((end) => ({ end, gap: windowEndGap(wall, window, end) }))
74
+ .filter(({ gap }) => gap <= reach)
75
+ .sort((a, b) => a.gap - b.gap);
76
+ return gaps[0]?.end ?? null;
77
+ }
78
+ /**
79
+ * A window's corner pair: its wall, the end it runs to, the partner on the other wall and the
80
+ * angle between the walls; null when it has none. A `corner` that no longer makes one is no pair:
81
+ * the partner gone or not naming it back, either side moved off its corner, or the walls no longer
82
+ * meeting there on one level at an angle a window wraps.
83
+ */
84
+ export function cornerPair(nodes, window) {
85
+ const corner = window.corner;
86
+ const partner = corner ? nodes[corner.partnerId] : undefined;
87
+ if (!corner || partner?.type !== 'window')
88
+ return null;
89
+ const other = partner;
90
+ if (other.corner?.partnerId !== window.id)
91
+ return null;
92
+ if (!windowReachesEnd(nodes, window, corner.end) ||
93
+ !windowReachesEnd(nodes, other, other.corner.end))
94
+ return null;
95
+ const [wall, partnerWall] = [nodes[window.parentId ?? ''], nodes[other.parentId ?? '']];
96
+ if (wall?.type !== 'wall' || partnerWall?.type !== 'wall' || wall.id === partnerWall.id)
97
+ return null;
98
+ if (wall.parentId !== partnerWall.parentId ||
99
+ distance(wallEndPoint(wall, corner.end), wallEndPoint(partnerWall, other.corner.end)) > AT)
100
+ return null;
101
+ const angle = cornerAngle({ wall: wall, end: corner.end }, { wall: partnerWall, end: other.corner.end });
102
+ if (!isWrappableAngle(angle))
103
+ return null;
104
+ return {
105
+ wall: wall,
106
+ end: corner.end,
107
+ partner: other,
108
+ partnerWall,
109
+ angle,
110
+ post: corner.post,
111
+ };
112
+ }
113
+ /**
114
+ * The updates that clear a window's `corner`, and its partner's when the partner names it back:
115
+ * Unwrap, and what a move, a delete or a merge leaves when the window is no longer one side of
116
+ * that pair. Whether the pair still holds or not, so a broken link is never left behind.
117
+ */
118
+ export function cornerLinkClears(nodes, windowId) {
119
+ const window = nodes[windowId];
120
+ const corner = window?.type === 'window' ? window.corner : undefined;
121
+ if (!corner)
122
+ return [];
123
+ const partner = nodes[corner.partnerId];
124
+ return [
125
+ { id: windowId, data: { corner: undefined } },
126
+ ...(partner?.type === 'window' && partner.corner?.partnerId === windowId
127
+ ? [{ id: partner.id, data: { corner: undefined } }]
128
+ : []),
129
+ ];
130
+ }
@@ -0,0 +1,54 @@
1
+ import type { AnyNode, WallNode } from '../schema/index.js';
2
+ import { type WallEnd } from './corner-pair.js';
3
+ /**
4
+ * Placing or dragging a window near a corner: inside the corner zone the window snaps its edge to
5
+ * the corner and the window waiting on the other wall, if any, is found, so the tool can highlight
6
+ * it and say the two will join. Pure: the tools read the answer.
7
+ */
8
+ type Nodes = Readonly<Record<string, AnyNode>>;
9
+ /** How near a corner the zone starts (m): a window's edge this close to a wall's end snaps to it. */
10
+ export declare const CORNER_SNAP_ENTER_M = 0.3;
11
+ /** How far out the zone reaches for a window already snapped (m), so its edge does not flicker. */
12
+ export declare const CORNER_SNAP_EXIT_M: number;
13
+ export type CornerSnap = {
14
+ /** The end of the window's wall the corner is at. */
15
+ end: WallEnd;
16
+ /** The window's centre along its wall once snapped (m). */
17
+ centreX: number;
18
+ corner: [number, number];
19
+ otherWall: WallNode;
20
+ otherEnd: WallEnd;
21
+ /** The window waiting at the other wall's corner, the nearest, if one is. */
22
+ waitingId: string | null;
23
+ };
24
+ /**
25
+ * Why a wall end in the zone is not a corner window's: a lone wall, a T-junction, a curved or
26
+ * curtain wall, a flat angle or a full wall would otherwise give no sign, so the hint says it. With
27
+ * a window waiting, why the two cannot join: an opening in the way of sliding them to the corner,
28
+ * or the waiting window too tall for this wall.
29
+ */
30
+ export type CornerBlockReason = 'free_end' | 'several_walls' | 'angle' | 'curved' | 'curtain' | 'no_room' | 'in_the_way' | 'too_tall';
31
+ export type CornerBlock = {
32
+ reason: CornerBlockReason;
33
+ end: WallEnd;
34
+ };
35
+ export type CornerInput = {
36
+ wallId: string;
37
+ /** Where the window's centre is along its wall (m). */
38
+ centreX: number;
39
+ width: number;
40
+ /** The window's height and the sill it stands at (m), for the match the other wall would take. */
41
+ height?: number;
42
+ sillHeight?: number;
43
+ /** The window being dragged: never the one waiting. */
44
+ ignoreId?: string;
45
+ /** The end snapped to or blocked at the last time, so the zone is wider while the window stays in it. */
46
+ held?: WallEnd | null;
47
+ };
48
+ /** The snap and the block for one window position: at most one of them is set. */
49
+ export declare function evaluateCorner(nodes: Nodes, input: CornerInput): {
50
+ snap: CornerSnap | null;
51
+ block: CornerBlock | null;
52
+ };
53
+ export {};
54
+ //# sourceMappingURL=corner-snap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"corner-snap.d.ts","sourceRoot":"","sources":["../../src/lib/corner-snap.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAc,MAAM,WAAW,CAAA;AAC9D,OAAO,EAKL,KAAK,OAAO,EAMb,MAAM,eAAe,CAAA;AAEtB;;;;GAIG;AAEH,KAAK,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;AAE9C,qGAAqG;AACrG,eAAO,MAAM,mBAAmB,MAAiB,CAAA;AACjD,mGAAmG;AACnG,eAAO,MAAM,kBAAkB,QAAuB,CAAA;AAEtD,MAAM,MAAM,UAAU,GAAG;IACvB,qDAAqD;IACrD,GAAG,EAAE,OAAO,CAAA;IACZ,2DAA2D;IAC3D,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACxB,SAAS,EAAE,QAAQ,CAAA;IACnB,QAAQ,EAAE,OAAO,CAAA;IACjB,6EAA6E;IAC7E,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;CACzB,CAAA;AAED;;;;;GAKG;AACH,MAAM,MAAM,iBAAiB,GACzB,UAAU,GACV,eAAe,GACf,OAAO,GACP,QAAQ,GACR,SAAS,GACT,SAAS,GACT,YAAY,GACZ,UAAU,CAAA;AAEd,MAAM,MAAM,WAAW,GAAG;IAAE,MAAM,EAAE,iBAAiB,CAAC;IAAC,GAAG,EAAE,OAAO,CAAA;CAAE,CAAA;AAErE,MAAM,MAAM,WAAW,GAAG;IACxB,MAAM,EAAE,MAAM,CAAA;IACd,uDAAuD;IACvD,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,kGAAkG;IAClG,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,uDAAuD;IACvD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,yGAAyG;IACzG,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,CAAA;CACtB,CAAA;AAoHD,kFAAkF;AAClF,wBAAgB,cAAc,CAC5B,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,WAAW,GACjB;IAAE,IAAI,EAAE,UAAU,GAAG,IAAI,CAAC;IAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAAA;CAAE,CAMxD"}
@@ -0,0 +1,125 @@
1
+ import { isAgentRefusal } from '../agent-tools/refusal.js';
2
+ import { mergeWindows } from '../building/merge-windows.js';
3
+ import { planWallOpening } from '../building/wall-openings.js';
4
+ import { CORNER_REACH_M, cornerAngle, cornerPair, isWrappableAngle, wallEndPoint, wallLengthOf, wallsEndingAt, windowEndGap, windowNearCornerEnd, } from './corner-pair.js';
5
+ /** How near a corner the zone starts (m): a window's edge this close to a wall's end snaps to it. */
6
+ export const CORNER_SNAP_ENTER_M = CORNER_REACH_M;
7
+ /** How far out the zone reaches for a window already snapped (m), so its edge does not flicker. */
8
+ export const CORNER_SNAP_EXIT_M = CORNER_REACH_M + 0.1;
9
+ const isCurved = (wall) => Boolean(wall.curveOffset);
10
+ const isCurtain = (wall) => wall.wallType === 'curtain';
11
+ function evaluate(nodes, input) {
12
+ const wall = nodes[input.wallId];
13
+ if (wall?.type !== 'wall')
14
+ return null;
15
+ const length = wallLengthOf(wall);
16
+ if (input.width > length)
17
+ return null;
18
+ const gaps = ['start', 'end']
19
+ .map((end) => ({
20
+ end,
21
+ gap: end === 'start'
22
+ ? input.centreX - input.width / 2
23
+ : length - (input.centreX + input.width / 2),
24
+ }))
25
+ .filter(({ end, gap }) => gap <= (input.held === end ? CORNER_SNAP_EXIT_M : CORNER_SNAP_ENTER_M))
26
+ .sort((a, b) => a.gap - b.gap);
27
+ const end = gaps[0]?.end;
28
+ if (!end)
29
+ return null;
30
+ const blocked = (reason) => ({ block: { reason, end } });
31
+ if (isCurved(wall))
32
+ return blocked('curved');
33
+ const point = wallEndPoint(wall, end);
34
+ // Curved walls are counted here only to be named: they never make a corner window.
35
+ const others = wallsEndingAt(nodes, wall.parentId ?? undefined, point, true).filter((meeting) => meeting.wall.id !== wall.id);
36
+ if (others.some((meeting) => isCurved(meeting.wall)))
37
+ return blocked('curved');
38
+ if (others.length === 0)
39
+ return blocked('free_end');
40
+ if (others.length > 1)
41
+ return blocked('several_walls');
42
+ const { wall: otherWall, end: otherEnd } = others[0];
43
+ if (isCurtain(wall) || isCurtain(otherWall))
44
+ return blocked('curtain');
45
+ const angle = cornerAngle({ wall: wall, end }, { wall: otherWall, end: otherEnd });
46
+ if (!isWrappableAngle(angle))
47
+ return blocked('angle');
48
+ const waiting = Object.values(nodes)
49
+ .filter((node) => node.type === 'window' &&
50
+ node.parentId === otherWall.id &&
51
+ node.id !== input.ignoreId &&
52
+ // Free, or the partner of the window being dragged: dropped back, the pair holds.
53
+ [undefined, input.ignoreId].includes(cornerPair(nodes, node)?.partner.id) &&
54
+ !node.metadata?.isTransient &&
55
+ windowNearCornerEnd(nodes, node) === otherEnd)
56
+ .sort((a, b) => windowEndGap(otherWall, a, otherEnd) - windowEndGap(otherWall, b, otherEnd))[0];
57
+ const centreX = end === 'start' ? input.width / 2 : length - input.width / 2;
58
+ // With a window waiting, the click merges the two: where that merge would be refused, the corner
59
+ // says why rather than placing a plain window on the click.
60
+ const self = input.ignoreId ? nodes[input.ignoreId] : undefined;
61
+ if (waiting && self?.type === 'window') {
62
+ const height = input.height ?? self.height;
63
+ const sill = input.sillHeight ?? self.position[1] - self.height / 2;
64
+ const placed = {
65
+ ...self,
66
+ parentId: wall.id,
67
+ width: input.width,
68
+ height,
69
+ position: [centreX, sill + height / 2, self.position[2]],
70
+ corner: undefined,
71
+ };
72
+ try {
73
+ mergeWindows({ ...nodes, [placed.id]: placed }, waiting.id, placed.id);
74
+ }
75
+ catch (error) {
76
+ if (!isAgentRefusal(error))
77
+ throw error;
78
+ return error.code === 'height_exceeds_wall'
79
+ ? blocked('too_tall')
80
+ : error.code === 'opening_overlap'
81
+ ? blocked('in_the_way')
82
+ : null;
83
+ }
84
+ }
85
+ // With none waiting the click makes the match on the other wall: if that wall cannot take it,
86
+ // the corner is not offered.
87
+ if (!waiting) {
88
+ const otherLength = wallLengthOf(otherWall);
89
+ const width = Math.min(input.width, otherLength);
90
+ const height = input.height ?? 1.5;
91
+ try {
92
+ planWallOpening(nodes, {
93
+ kind: 'window',
94
+ wallId: otherWall.id,
95
+ t: (otherEnd === 'start' ? width / 2 : otherLength - width / 2) / otherLength,
96
+ width,
97
+ height,
98
+ ...(input.sillHeight === undefined ? {} : { sillHeight: input.sillHeight }),
99
+ });
100
+ }
101
+ catch (error) {
102
+ if (isAgentRefusal(error))
103
+ return blocked('no_room');
104
+ throw error;
105
+ }
106
+ }
107
+ return {
108
+ snap: {
109
+ end,
110
+ centreX,
111
+ corner: [point[0], point[1]],
112
+ otherWall,
113
+ otherEnd,
114
+ waitingId: waiting?.id ?? null,
115
+ },
116
+ };
117
+ }
118
+ /** The snap and the block for one window position: at most one of them is set. */
119
+ export function evaluateCorner(nodes, input) {
120
+ const found = evaluate(nodes, input);
121
+ return {
122
+ snap: found && 'snap' in found ? found.snap : null,
123
+ block: found && 'block' in found ? found.block : null,
124
+ };
125
+ }
@@ -0,0 +1,11 @@
1
+ /**
2
+ * One step of a critically damped spring (the exact solution, so frames of any length take the same
3
+ * path): it settles on `target` in about `response` seconds without overshooting, and a new target
4
+ * turns it around from where it is, carrying its speed. The camera that follows a build and the roof
5
+ * that lifts out of its way move this way.
6
+ */
7
+ export declare function criticallyDamped(state: {
8
+ x: number;
9
+ v: number;
10
+ }, target: number, response: number, dt: number): void;
11
+ //# sourceMappingURL=critically-damped.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"critically-damped.d.ts","sourceRoot":"","sources":["../../src/lib/critically-damped.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,EAC/B,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,EAAE,EAAE,MAAM,GACT,IAAI,CAON"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * One step of a critically damped spring (the exact solution, so frames of any length take the same
3
+ * path): it settles on `target` in about `response` seconds without overshooting, and a new target
4
+ * turns it around from where it is, carrying its speed. The camera that follows a build and the roof
5
+ * that lifts out of its way move this way.
6
+ */
7
+ export function criticallyDamped(state, target, response, dt) {
8
+ const omega = (2 * Math.PI) / Math.max(1e-3, response);
9
+ const offset = state.x - target;
10
+ const carry = state.v + omega * offset;
11
+ const decay = Math.exp(-omega * dt);
12
+ state.x = target + (offset + carry * dt) * decay;
13
+ state.v = (state.v - omega * carry * dt) * decay;
14
+ }
@@ -0,0 +1,18 @@
1
+ import type { AnyNode, AnyNodeId } from '../schema/index.js';
2
+ type Nodes = Record<AnyNodeId, AnyNode>;
3
+ /**
4
+ * The lowest the site's ground lies: the sculpted terrain's lowest height where the site has one,
5
+ * the flat plane everywhere else. How far a dive under the ground is measured from.
6
+ */
7
+ export declare function lowestGroundY(nodes: Nodes): number;
8
+ /**
9
+ * The world Y of the deepest thing the scene draws: the bottom of the footing under the lowest floor
10
+ * slab (its underside less a footing's thickness; never above the walls' base, as the footing
11
+ * itself is). A recessed slab (a basin) is drawn down to its own underside, with no footing under
12
+ * it. Site flatwork (a lawn, a driveway) is not a floor of the house and counts for nothing. A
13
+ * footing under a floor at or over grade sits about as deep, and never nearer the dive's own floor,
14
+ * so the floors alone decide. `null` for a scene with no floor.
15
+ */
16
+ export declare function deepestDrawnY(nodes: Nodes): number | null;
17
+ export {};
18
+ //# sourceMappingURL=deepest-drawn.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deepest-drawn.d.ts","sourceRoot":"","sources":["../../src/lib/deepest-drawn.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAQnD,KAAK,KAAK,GAAG,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;AAIvC;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAclD;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,GAAG,IAAI,CAsBzD"}
@@ -0,0 +1,65 @@
1
+ import { getLevelElevations } from '../services/storey.js';
2
+ import { FOUNDATION_STANDARD } from './foundation-standard.js';
3
+ import { isSiteFlatwork } from './site-flatwork.js';
4
+ import { FLAT_GROUND_Y } from './site-ground-height.js';
5
+ import { heightAtSample } from './terrain-field.js';
6
+ import { terrainFieldOf } from './terrain-source.js';
7
+ const lowestHeight = new WeakMap();
8
+ /**
9
+ * The lowest the site's ground lies: the sculpted terrain's lowest height where the site has one,
10
+ * the flat plane everywhere else. How far a dive under the ground is measured from.
11
+ */
12
+ export function lowestGroundY(nodes) {
13
+ const site = Object.values(nodes).find((node) => node.type === 'site');
14
+ const field = site ? terrainFieldOf(site) : null;
15
+ if (!field)
16
+ return FLAT_GROUND_Y;
17
+ let lowest = lowestHeight.get(field);
18
+ if (lowest === undefined) {
19
+ lowest = Number.POSITIVE_INFINITY;
20
+ for (let row = 0; row < field.rows; row += 1)
21
+ for (let col = 0; col < field.cols; col += 1)
22
+ lowest = Math.min(lowest, heightAtSample(field, col, row));
23
+ if (!Number.isFinite(lowest))
24
+ lowest = FLAT_GROUND_Y;
25
+ lowestHeight.set(field, lowest);
26
+ }
27
+ return lowest;
28
+ }
29
+ /**
30
+ * The world Y of the deepest thing the scene draws: the bottom of the footing under the lowest floor
31
+ * slab (its underside less a footing's thickness; never above the walls' base, as the footing
32
+ * itself is). A recessed slab (a basin) is drawn down to its own underside, with no footing under
33
+ * it. Site flatwork (a lawn, a driveway) is not a floor of the house and counts for nothing. A
34
+ * footing under a floor at or over grade sits about as deep, and never nearer the dive's own floor,
35
+ * so the floors alone decide. `null` for a scene with no floor.
36
+ */
37
+ export function deepestDrawnY(nodes) {
38
+ const elevations = getLevelElevations(nodes);
39
+ let deepest = null;
40
+ for (const node of Object.values(nodes)) {
41
+ if (node.type !== 'level')
42
+ continue;
43
+ const elevation = elevations.get(node.id);
44
+ if (!elevation)
45
+ continue;
46
+ const building = elevation.buildingId ? nodes[elevation.buildingId] : undefined;
47
+ const planeY = (building?.type === 'building' ? building.position[1] : 0) + elevation.baseY;
48
+ let floorUnderside = planeY;
49
+ let basinUnderside = Number.POSITIVE_INFINITY;
50
+ for (const id of node.children) {
51
+ const child = nodes[id];
52
+ if (child?.type !== 'slab' || isSiteFlatwork(child))
53
+ continue;
54
+ const underside = planeY + child.elevation - child.thickness;
55
+ if (child.recessed === true)
56
+ basinUnderside = Math.min(basinUnderside, underside);
57
+ else
58
+ floorUnderside = Math.min(floorUnderside, underside);
59
+ }
60
+ const bottom = Math.min(floorUnderside - FOUNDATION_STANDARD.footingThickness, basinUnderside);
61
+ if (deepest === null || bottom < deepest)
62
+ deepest = bottom;
63
+ }
64
+ return deepest;
65
+ }
@@ -1,7 +1,7 @@
1
1
  import type { DoorNode, DoorType } from '../schema/nodes/door.js';
2
2
  export declare const SECTIONAL_GARAGE_RENDER_OPEN_SCALE = 0.88;
3
3
  export declare function clampDoorOperationState(value: number | undefined): number;
4
- export declare function isOperationDoorType(doorType: DoorType | DoorNode['doorType'] | string | undefined): doorType is "folding" | "pocket" | "barn" | "sliding" | "garage-sectional" | "garage-rollup" | "garage-tiltup";
4
+ export declare function isOperationDoorType(doorType: DoorType | DoorNode['doorType'] | string | undefined): doorType is "barn" | "folding" | "garage-rollup" | "garage-sectional" | "garage-tiltup" | "pocket" | "sliding";
5
5
  export declare function getDoorRenderOpenAmount(doorType: DoorType | DoorNode['doorType'], operationState: number | undefined): number;
6
6
  export declare function getGarageVisibleOpeningRatio(doorType: DoorType | DoorNode['doorType'], operationState: number | undefined): number;
7
7
  //# sourceMappingURL=door-operation.d.ts.map
@@ -0,0 +1,17 @@
1
+ import type { WallNode } from '../schema/index.js';
2
+ import { type SpaceBoundaryFace } from './room-graph.js';
3
+ /**
4
+ * The outside loops of a storey's walls. Wall ends within `joinTolerance` metres are one corner: a
5
+ * millimetre by default; a vectorised plan's near-miss corners may need a few centimetres.
6
+ */
7
+ export declare function exteriorWallLoops(walls: WallNode[], joinTolerance?: number): SpaceBoundaryFace[][];
8
+ /** The outlines of a storey's walls: each outside loop as a polygon on the walls' centrelines. */
9
+ export declare function exteriorWallOutlines(walls: WallNode[], joinTolerance?: number): [number, number][][];
10
+ /**
11
+ * The walls a closed circuit of walls encloses: not on the storey's outline and strictly inside one
12
+ * of its outside loops (a partition, as opposed to a wall that holds the outside back). A wall no
13
+ * closed circuit surrounds (an open run, the first walls of a plan, a wall drawn outside) is not
14
+ * enclosed.
15
+ */
16
+ export declare function enclosedWallIds(walls: WallNode[], joinTolerance?: number): Set<WallNode['id']>;
17
+ //# sourceMappingURL=exterior-wall-loops.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exterior-wall-loops.d.ts","sourceRoot":"","sources":["../../src/lib/exterior-wall-loops.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAEzC,OAAO,EAOL,KAAK,iBAAiB,EAEvB,MAAM,cAAc,CAAA;AAwVrB;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,QAAQ,EAAE,EACjB,aAAa,SAA0B,GACtC,iBAAiB,EAAE,EAAE,CAEvB;AAED,kGAAkG;AAClG,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,QAAQ,EAAE,EACjB,aAAa,SAA0B,GACtC,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,EAAE,CAEtB;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,QAAQ,EAAE,EACjB,aAAa,SAA0B,GACtC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAmBrB"}