@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
@@ -2,109 +2,122 @@ import { refuse } from '../agent-tools/refusal.js';
2
2
  import { levelBuildingId } from '../building/level-duplication.js';
3
3
  import { cutFloorOpening } from '../commands/structure/floor-opening.js';
4
4
  import { adjacentLevelId } from '../lib/floor-opening-intent.js';
5
+ import { area, intersection } from '../lib/polygon-boolean.js';
5
6
  import { generateId, LevelNode, StairNode } from '../schema/index.js';
6
7
  import { DEFAULT_LEVEL_HEIGHT } from '../services/level-height.js';
8
+ import { getLevelFloorToFloorHeight } from '../services/storey.js';
7
9
  import { planOwnedFloorOpenings } from '../systems/owned-floor-openings.js';
8
- import { planStairCreation } from '../systems/stair/stair-sizing.js';
9
- import { refuseRoofLevel } from './add-wall.js';
10
+ import { rotateXZ, stairArrivalOpening, stairFootprintAABB, stairSegmentFootprints, } from '../systems/stair/stair-footprint.js';
11
+ import { planStairPreset } from '../systems/stair/stair-presets.js';
10
12
  import { applySceneChanges } from './apply-changes.js';
11
13
  import { requireLevel, targetLevel } from './level-target.js';
12
14
  import { finishSurface, requireMaterialRef } from './material-refs.js';
13
- import { pointInPolygon } from './plan-geometry.js';
15
+ import { refuseRoofLevel } from './roof-writes.js';
14
16
  import { levelsOf } from './scene-queries.js';
15
17
  /** The margin round a stair's opening when none is given, as the editor's stair tool cuts it. */
16
18
  const OPENING_MARGIN = 0.08;
19
+ const KIND = { straight: 'a staircase', l: 'an L staircase', u: 'a U staircase' };
20
+ const round = (value) => Math.round(value * 1000) / 1000;
17
21
  /**
18
- * The opening as asked, in level metres: its size plus the margin on every side, round its centre
19
- * (by default the middle of the flight, along the climb), turned as asked (by default with the
20
- * flight). An item's turn: local (dx, dz) goes to (cx + dx·cos + dz·sin, cz − dx·sin + dz·cos).
22
+ * The opening as asked, in level metres: its size plus the margin on every side, round its centre,
23
+ * turned as asked. By default it is the stair's footprint in the stair's own frame (`box`), turned
24
+ * with the stair.
21
25
  */
22
- function openingRing(stair, input) {
26
+ function openingRing(stair, box, input) {
23
27
  const margin = input.openingOffset ?? OPENING_MARGIN;
24
28
  const half = [
25
- (input.openingWidth ?? stair.width) / 2 + margin,
26
- (input.openingLength ?? stair.length) / 2 + margin,
29
+ (input.openingWidth ?? box.maxX - box.minX) / 2 + margin,
30
+ (input.openingLength ?? box.maxZ - box.minZ) / 2 + margin,
27
31
  ];
32
+ const middle = rotateXZ((box.minX + box.maxX) / 2, (box.minZ + box.maxZ) / 2, stair.rotation);
28
33
  const [cx, cz] = input.openingCenter ?? [
29
- stair.x + (stair.length / 2) * Math.sin(stair.turn),
30
- stair.z + (stair.length / 2) * Math.cos(stair.turn),
34
+ stair.position[0] + middle[0],
35
+ stair.position[2] + middle[1],
31
36
  ];
32
- const turn = input.openingRotation === undefined ? stair.turn : (input.openingRotation * Math.PI) / 180;
33
- const [cos, sin] = [Math.cos(turn), Math.sin(turn)];
37
+ const turn = input.openingRotation === undefined ? stair.rotation : (input.openingRotation * Math.PI) / 180;
34
38
  return [
35
- [-half[0], -half[1]],
36
- [half[0], -half[1]],
37
- [half[0], half[1]],
38
- [-half[0], half[1]],
39
- ].map(([dx, dz]) => [cx + dx * cos + dz * sin, cz - dx * sin + dz * cos]);
39
+ [-1, -1],
40
+ [1, -1],
41
+ [1, 1],
42
+ [-1, 1],
43
+ ].map(([sx, sz]) => {
44
+ const [dx, dz] = rotateXZ(sx * half[0], sz * half[1], turn);
45
+ return [cx + dx, cz + dz];
46
+ });
47
+ }
48
+ /** The flights and landings, as fit_stair lays them out; a layout that cannot be built is refused. */
49
+ function planFlights(draft, nodes, options) {
50
+ try {
51
+ return planStairPreset(draft, nodes, options);
52
+ }
53
+ catch (error) {
54
+ if (error instanceof RangeError)
55
+ refuse('stair_layout', `${error.message}.`, {
56
+ layout: options.layout,
57
+ ...(options.stepCount === undefined ? {} : { steps: options.stepCount }),
58
+ ...(options.lowerStepCount === undefined ? {} : { lowerSteps: options.lowerStepCount }),
59
+ });
60
+ throw error;
61
+ }
40
62
  }
41
63
  /**
42
- * `create_stair`: a straight flight placed as the editor's stair tool places one — rising to the
43
- * next level (made when there is none), its floor openings owned and cut by the stair. With the
44
- * opening controls create_stair_between_levels had, the opening is cut as given instead, owned by
45
- * the stair as main's are, and the stair's own opening is off so nothing is cut twice.
64
+ * `create_stair`: a straight, L or U stair placed as the editor's stair tool places one — rising to
65
+ * the next level (made when there is none), its floor openings owned and cut by the stair — or a
66
+ * flight to no level, which rises as asked and cuts nothing. With the opening controls
67
+ * create_stair_between_levels had, the opening is cut as given instead, owned by the stair as main's
68
+ * are, and the stair's own opening is off so nothing is cut twice.
46
69
  */
47
70
  export const createStair = (nodes, input, context) => {
48
71
  const from = targetLevel(nodes, input, context);
49
72
  refuseRoofLevel(nodes, from.id, 'a stair');
73
+ const layout = input.layout ?? 'straight';
74
+ if (layout === 'straight' && (input.turn || input.lowerSteps !== undefined))
75
+ refuse('stair_layout_required', 'turn and lowerSteps shape an L or U stair: give layout "l" or "u", or leave them out.', { levelId: from.id });
50
76
  const preset = input.materialPreset === undefined
51
77
  ? undefined
52
78
  : requireMaterialRef(input.materialPreset, 'materialPreset', finishSurface('stair'));
79
+ const railingPreset = input.railingMaterial === undefined
80
+ ? undefined
81
+ : requireMaterialRef(input.railingMaterial, 'railingMaterial');
82
+ const toNoLevel = input.toLevelId === null;
83
+ // An opening of its own size, centre or turn, or through a surface named.
84
+ const shaped = [
85
+ input.destinationSlabId,
86
+ input.sourceCeilingId,
87
+ input.openingWidth,
88
+ input.openingLength,
89
+ input.openingCenter,
90
+ input.openingRotation,
91
+ ].some((value) => value !== undefined);
92
+ if (toNoLevel &&
93
+ (shaped ||
94
+ input.openingOffset !== undefined ||
95
+ input.createDestinationSlabOpening ||
96
+ input.createSourceCeilingOpening))
97
+ refuse('no_level_above', 'A flight to no level cuts no opening: name the level it arrives on (toLevelId), or leave the opening out.', { levelId: from.id });
53
98
  if (input.destinationSlabId && nodes[input.destinationSlabId]?.type !== 'slab')
54
99
  refuse('slab_not_found', `No slab ${input.destinationSlabId}: name the slab the flight arrives through, or leave it out.`, { slabId: input.destinationSlabId });
55
100
  if (input.sourceCeilingId && nodes[input.sourceCeilingId]?.type !== 'ceiling')
56
101
  refuse('ceiling_not_found', `No ceiling ${input.sourceCeilingId}: name the ceiling the flight rises through, or leave it out.`, { ceilingId: input.sourceCeilingId });
57
- const cutFloor = input.createDestinationSlabOpening !== false;
58
- const cutCeiling = input.createSourceCeilingOpening !== false;
59
- const asGiven = cutFloor !== cutCeiling ||
60
- [
61
- input.destinationSlabId,
62
- input.sourceCeilingId,
63
- input.openingWidth,
64
- input.openingLength,
65
- input.openingCenter,
66
- input.openingRotation,
67
- ].some((value) => value !== undefined);
102
+ const cutFloor = !toNoLevel && input.createDestinationSlabOpening !== false;
103
+ const cutCeiling = !toNoLevel && input.createSourceCeilingOpening !== false;
104
+ const asGiven = cutFloor !== cutCeiling || shaped;
68
105
  const owned = cutFloor && cutCeiling && !asGiven;
69
- const buildingId = levelBuildingId(nodes, from);
70
- const building = buildingId ? nodes[buildingId] : undefined;
71
- if (building?.type !== 'building')
72
- refuse('no_building', `Level ${from.id} is not in a building, so it has no floor above.`, {
73
- levelId: from.id,
74
- });
75
- const floors = levelsOf(nodes).filter((level) => level.parentId === building.id || building.children.includes(level.id));
76
106
  const changes = {
77
107
  create: [],
78
108
  update: [],
79
109
  delete: [],
80
110
  collections: {},
81
111
  };
82
- let upper = input.toLevelId
83
- ? requireLevel(nodes, input.toLevelId)
84
- : floors.find((level) => level.level > from.level);
85
- if (upper && (upper.level <= from.level || !floors.includes(upper)))
86
- refuse('not_above', `${upper.id} is not above ${from.id} in its building: a flight rises to a higher floor.`, { levelId: from.id, toLevelId: upper.id });
87
- if (upper)
88
- refuseRoofLevel(nodes, upper.id, 'a stair');
89
- // The flight cuts the slab of the floor it arrives at and the ceiling of the one it leaves.
90
- if (input.destinationSlabId && nodes[input.destinationSlabId].parentId !== upper?.id)
91
- refuse('slab_not_on_level', `Slab ${input.destinationSlabId} is not on ${upper?.id ?? 'the floor above'}, the floor the flight arrives at: name a slab there, or leave it out.`, { slabId: input.destinationSlabId, levelId: upper?.id ?? null });
92
- if (input.sourceCeilingId && nodes[input.sourceCeilingId].parentId !== from.id)
93
- refuse('ceiling_not_on_level', `Ceiling ${input.sourceCeilingId} is not on ${from.id}, the floor the flight leaves: name a ceiling there, or leave it out.`, { ceilingId: input.sourceCeilingId, levelId: from.id });
94
- if (!upper) {
95
- upper = LevelNode.parse({
96
- parentId: building.id,
97
- level: from.level + 1,
98
- height: DEFAULT_LEVEL_HEIGHT,
99
- children: [],
100
- });
101
- changes.create.push({ node: upper, parentId: building.id });
102
- }
112
+ const upper = toNoLevel ? undefined : levelAbove(nodes, from, input, changes);
103
113
  const withUpper = applySceneChanges(nodes, changes);
104
114
  const rotation = input.rotation ?? 0;
105
115
  const width = input.width ?? 1;
106
116
  const stairs = Object.values(nodes).filter((node) => node.type === 'stair').length;
107
117
  const railingMode = input.railingMode ?? 'both';
118
+ // A flight to no level rises as asked, else its storey's height, and keeps that rise; one to a
119
+ // level follows the storey (no totalRise) and keeps tracking it.
120
+ const totalRise = input.height ?? (toNoLevel ? getLevelFloorToFloorHeight(from.id, nodes) : undefined);
108
121
  const draft = StairNode.parse({
109
122
  parentId: from.id,
110
123
  name: input.name ?? `Staircase ${stairs + 1}`,
@@ -113,20 +126,21 @@ export const createStair = (nodes, input, context) => {
113
126
  stairType: 'straight',
114
127
  uniformRisers: true,
115
128
  fromLevelId: from.id,
116
- toLevelId: upper.id,
129
+ toLevelId: upper?.id ?? null,
117
130
  slabOpeningMode: owned ? 'destination' : 'none',
118
131
  openingOffset: input.openingOffset ?? OPENING_MARGIN,
119
132
  width,
120
133
  railingMode,
134
+ ...(input.railingStyle ? { railingStyle: input.railingStyle } : {}),
135
+ ...(railingPreset ? { railingMaterialPreset: railingPreset } : {}),
121
136
  ...(preset ? { materialPreset: preset } : {}),
122
- // No height: the flight follows its storey (no totalRise) and keeps tracking it.
123
- ...(input.height === undefined ? {} : { totalRise: input.height }),
137
+ ...(totalRise === undefined ? {} : { totalRise }),
124
138
  ...(asGiven ? { metadata: { openingManaged: 'floor-opening' } } : {}),
125
139
  children: [],
126
140
  });
127
- // As main sizes a new flight: the run and the risers from the stair's design targets unless
128
- // given, the rise resolved against what the flight stands on and arrives at.
129
- const { flight } = planStairCreation(draft, {
141
+ // As main sizes a new stair: the risers and the run from the stair's design targets unless given,
142
+ // the rise resolved against what the stair stands on and arrives at.
143
+ const plan = planFlights(draft, {
130
144
  ...withUpper,
131
145
  [from.id]: {
132
146
  ...withUpper[from.id],
@@ -134,16 +148,16 @@ export const createStair = (nodes, input, context) => {
134
148
  },
135
149
  [draft.id]: draft,
136
150
  }, {
151
+ layout,
152
+ turn: input.turn,
137
153
  width,
138
- attachmentSide: 'front',
139
- fillToFloor: true,
140
- ...(input.length === undefined ? {} : { length: input.length }),
141
- ...(input.steps === undefined ? {} : { stepCount: input.steps }),
154
+ stepCount: input.steps,
155
+ runLength: input.length,
156
+ lowerStepCount: input.lowerSteps,
142
157
  });
143
- const segment = { ...flight, ...(preset ? { materialPreset: preset } : {}) };
144
- const { length, stepCount } = segment;
145
- const stair = StairNode.parse({ ...draft, stepCount, children: [segment.id] });
146
- changes.create.push({ node: stair, parentId: from.id }, { node: { ...segment, parentId: stair.id }, parentId: stair.id });
158
+ const stair = plan.stair;
159
+ const segments = plan.segments.map((segment) => preset ? { ...segment, materialPreset: preset } : segment);
160
+ changes.create.push({ node: stair, parentId: from.id }, ...segments.map((segment) => ({ node: segment, parentId: stair.id })));
147
161
  // The editor's opening pass: the stair owns a floor opening in each floor it passes; the live
148
162
  // opening systems then find it in place. Openings as given are cut as main cuts them: owned by
149
163
  // the stair, with the pose the live systems move them by.
@@ -151,27 +165,37 @@ export const createStair = (nodes, input, context) => {
151
165
  // A hole in the slab above, not one in the ceiling below: the floor upstairs is open.
152
166
  let slabHoleCut = false;
153
167
  const built = applySceneChanges(nodes, changes);
154
- const polygon = asGiven
155
- ? openingRing({ x: input.x, z: input.z, turn: stair.rotation, width, length }, input)
156
- : [];
157
- // The surface the opening falls in, not the storey's first: a floor of several rooms has a
158
- // slab (and a ceiling below) per room.
159
- const centre = [
160
- polygon.reduce((sum, [x]) => sum + x, 0) / (polygon.length || 1),
161
- polygon.reduce((sum, [, z]) => sum + z, 0) / (polygon.length || 1),
162
- ];
163
- const over = (type, levelId) => Object.values(built).find((node) => node.type === type &&
164
- node.parentId === levelId &&
165
- pointInPolygon(centre, node.polygon));
166
- const destinationSlab = input.destinationSlabId
167
- ? built[input.destinationSlabId]
168
- : over('slab', upper.id);
168
+ const footprint = stairFootprintAABB(stair, built);
169
+ // The footprint in the stair's own frame: the opening as given by default, and the box its owner
170
+ // pose keeps so the opening follows the stair's shape.
171
+ const local = stairFootprintAABB({ ...stair, position: [0, 0, 0], rotation: 0 }, built);
172
+ const polygon = asGiven ? openingRing(stair, local, input) : [];
173
+ // The surface over the flights and landings, not the storey's first: a floor of several rooms
174
+ // has a slab (and a ceiling below) per room, and an L's inside corner may lie in another.
175
+ const outlines = stairSegmentFootprints(stair, built);
176
+ const over = (type, levelId) => {
177
+ let most = 1e-6;
178
+ let surface;
179
+ for (const node of Object.values(built)) {
180
+ if (node.type !== type || node.parentId !== levelId)
181
+ continue;
182
+ const covered = outlines.reduce((sum, outline) => sum + area(intersection(node.polygon, outline)), 0);
183
+ if (covered > most)
184
+ [most, surface] = [covered, node];
185
+ }
186
+ return surface;
187
+ };
188
+ const destinationSlab = !upper
189
+ ? undefined
190
+ : input.destinationSlabId
191
+ ? built[input.destinationSlabId]
192
+ : over('slab', upper.id);
169
193
  const sourceCeiling = input.sourceCeilingId
170
194
  ? built[input.sourceCeilingId]
171
195
  : over('ceiling', from.id);
172
196
  const floorCut = asGiven && cutFloor && !!destinationSlab;
173
197
  const ceilingCut = asGiven && cutCeiling && !!sourceCeiling;
174
- const adjacent = adjacentLevelId(built, upper.id, -1) === from.id;
198
+ const adjacent = !!upper && adjacentLevelId(built, upper.id, -1) === from.id;
175
199
  const opened = (levelId, drawnOn, cutsAdjacent) => cutFloorOpening(built, {
176
200
  levelId,
177
201
  polygon,
@@ -184,7 +208,7 @@ export const createStair = (nodes, input, context) => {
184
208
  const patches = owned
185
209
  ? planOwnedFloorOpenings(built, { ownerIds: new Set([stair.id]) })
186
210
  : [
187
- ...(floorCut ? opened(upper.id, 'floor', ceilingCut && adjacent) : []),
211
+ ...(floorCut && upper ? opened(upper.id, 'floor', ceilingCut && adjacent) : []),
188
212
  ...(ceilingCut && (!floorCut || !adjacent) ? opened(from.id, 'ceiling', false) : []),
189
213
  ];
190
214
  for (const patch of patches) {
@@ -198,7 +222,8 @@ export const createStair = (nodes, input, context) => {
198
222
  position: stair.position,
199
223
  rotation: stair.rotation,
200
224
  width,
201
- runLength: length,
225
+ runLength: segments[0].length,
226
+ footprint: local,
202
227
  },
203
228
  ownerOpeningTarget: patch.node.drawnOn === 'ceiling' ? 'source' : 'destination',
204
229
  },
@@ -216,32 +241,90 @@ export const createStair = (nodes, input, context) => {
216
241
  else
217
242
  changes.delete.push(patch.id);
218
243
  }
219
- const createdUpperLevel = !nodes[upper.id];
220
- const arrival = upper.name ?? `level ${upper.level}`;
244
+ const flights = segments.filter((segment) => segment.segmentType === 'stair');
245
+ const rise = round(segments.reduce((sum, segment) => sum + segment.height, 0));
246
+ const length = round(flights.reduce((sum, flight) => sum + flight.length, 0));
247
+ const arrivalEdge = stairArrivalOpening(stair, built);
248
+ const arrival = arrivalEdge.length
249
+ ? [
250
+ round(arrivalEdge.reduce((sum, [x]) => sum + x, 0) / arrivalEdge.length),
251
+ round(arrivalEdge.reduce((sum, [, z]) => sum + z, 0) / arrivalEdge.length),
252
+ ]
253
+ : undefined;
254
+ const createdUpperLevel = !!upper && !nodes[upper.id];
255
+ const arrivesOn = upper ? (upper.name ?? `level ${upper.level}`) : undefined;
256
+ const at = `${KIND[layout]} at (${input.x}, ${input.z}) with ${stair.stepCount} steps`;
221
257
  return {
222
258
  result: {
223
259
  ok: true,
224
260
  stairId: stair.id,
225
- segmentId: segment.id,
261
+ segmentIds: stair.children,
226
262
  fromLevelId: from.id,
227
- upperLevelId: upper.id,
263
+ upperLevelId: upper?.id ?? null,
228
264
  createdUpperLevel,
229
- stepCount,
230
- rise: Math.round(segment.height * 1000) / 1000,
265
+ layout,
266
+ ...(layout === 'straight' ? {} : { turn: input.turn ?? 'left' }),
267
+ stepCount: stair.stepCount,
268
+ rise,
231
269
  rotation,
232
270
  width,
233
271
  length,
234
272
  railingMode,
273
+ footprint: {
274
+ minX: round(footprint.minX),
275
+ minZ: round(footprint.minZ),
276
+ maxX: round(footprint.maxX),
277
+ maxZ: round(footprint.maxZ),
278
+ },
279
+ ...(arrival ? { arrival } : {}),
235
280
  slabHoleCut,
236
281
  ...(openingIds.length ? { openingIds } : {}),
237
282
  ...(floorCut ? { destinationSlabId: destinationSlab.id } : {}),
238
283
  ...(ceilingCut ? { sourceCeilingId: sourceCeiling.id } : {}),
239
- message: openingIds.length
240
- ? `Created a staircase at (${input.x}, ${input.z}) with ${stepCount} steps up to ${arrival}, its ${asGiven ? 'opening cut as given' : 'floor opening cut'}.`
241
- : !cutFloor && !cutCeiling
242
- ? `Created a staircase at (${input.x}, ${input.z}) with ${stepCount} steps up to ${arrival}${createdUpperLevel ? ' (created for it)' : ''}, with no opening, as asked.`
243
- : `Created a staircase at (${input.x}, ${input.z}) with ${stepCount} steps up to ${arrival}${createdUpperLevel ? ' (created for it)' : ''}, but no floor there covers the flight, so no opening was cut. Add or align the upper floor over the stair's footprint.`,
284
+ message: !upper
285
+ ? `Created ${at} rising ${rise} m to no level, so it cuts no opening.`
286
+ : openingIds.length
287
+ ? `Created ${at} up to ${arrivesOn}, its ${asGiven ? 'opening cut as given' : 'floor opening cut'}.`
288
+ : !cutFloor && !cutCeiling
289
+ ? `Created ${at} up to ${arrivesOn}${createdUpperLevel ? ' (created for it)' : ''}, with no opening, as asked.`
290
+ : `Created ${at} up to ${arrivesOn}${createdUpperLevel ? ' (created for it)' : ''}, but no floor there covers the flight, so no opening was cut. Add or align the upper floor over the stair's footprint.`,
244
291
  },
245
292
  changes,
246
293
  };
247
294
  };
295
+ /**
296
+ * The level a stair arrives on: the one named, else the next one up its building, else a blank
297
+ * level made above for it (added to `changes`). Refused: no building, a level not above, a roof
298
+ * level, a slab or ceiling named on another storey.
299
+ */
300
+ function levelAbove(nodes, from, input, changes) {
301
+ const buildingId = levelBuildingId(nodes, from);
302
+ const building = buildingId ? nodes[buildingId] : undefined;
303
+ if (building?.type !== 'building')
304
+ refuse('no_building', `Level ${from.id} is not in a building, so it has no floor above.`, {
305
+ levelId: from.id,
306
+ });
307
+ const floors = levelsOf(nodes).filter((level) => level.parentId === building.id || building.children.includes(level.id));
308
+ const upper = input.toLevelId
309
+ ? requireLevel(nodes, input.toLevelId)
310
+ : floors.find((level) => level.level > from.level);
311
+ if (upper && (upper.level <= from.level || !floors.includes(upper)))
312
+ refuse('not_above', `${upper.id} is not above ${from.id} in its building: a flight rises to a higher floor.`, { levelId: from.id, toLevelId: upper.id });
313
+ if (upper)
314
+ refuseRoofLevel(nodes, upper.id, 'a stair');
315
+ // The flight cuts the slab of the floor it arrives at and the ceiling of the one it leaves.
316
+ if (input.destinationSlabId && nodes[input.destinationSlabId].parentId !== upper?.id)
317
+ refuse('slab_not_on_level', `Slab ${input.destinationSlabId} is not on ${upper?.id ?? 'the floor above'}, the floor the flight arrives at: name a slab there, or leave it out.`, { slabId: input.destinationSlabId, levelId: upper?.id ?? null });
318
+ if (input.sourceCeilingId && nodes[input.sourceCeilingId].parentId !== from.id)
319
+ refuse('ceiling_not_on_level', `Ceiling ${input.sourceCeilingId} is not on ${from.id}, the floor the flight leaves: name a ceiling there, or leave it out.`, { ceilingId: input.sourceCeilingId, levelId: from.id });
320
+ if (upper)
321
+ return upper;
322
+ const made = LevelNode.parse({
323
+ parentId: building.id,
324
+ level: from.level + 1,
325
+ height: DEFAULT_LEVEL_HEIGHT,
326
+ children: [],
327
+ });
328
+ changes.create.push({ node: made, parentId: building.id });
329
+ return made;
330
+ }
@@ -0,0 +1,38 @@
1
+ import { type DesignBrief, type DesignBriefInput } from '../agent-tools/design-brief.js';
2
+ import { AgentRefusal } from '../agent-tools/refusal.js';
3
+ import type { AssetInput } from '../schema/index.js';
4
+ import type { AgentOperation } from './types.js';
5
+ /**
6
+ * Furnishing follows the turn's design brief. A host that gates keeps the brief in force
7
+ * (`AgentContext.designBrief`, null while there is none) and each furnishing tool asks
8
+ * `requireFurnishing` before it runs, inside `run_batch` too. A host that does not gate leaves the
9
+ * context's brief out and nothing is refused (Pro, a person's own tools).
10
+ */
11
+ export declare const NO_BRIEF = "Furnishing follows the turn's design brief: design_brief records what the request fixes, what it leaves open and where objects come from; until then the catalog can be searched and viewed, not placed, and no furnishing is made.";
12
+ export declare function isTechnicalEquipment(item: Pick<AssetInput, 'category' | 'functionTags'>): boolean;
13
+ /** The pieces `beyond` names, flattened: the brief's own list of the dressing. */
14
+ export declare function dressingOf(beyond: DesignBriefInput['beyond']): string[];
15
+ /** Whether `design_brief` reads the item library: an open brief naming pieces as they are. */
16
+ export declare function briefReadsCatalog(tool: string, input: unknown): boolean;
17
+ /**
18
+ * Why a furnishing call may not run under this brief, or null. `brief` null is no brief yet. An
19
+ * `add_object` that names a `nodeId` edits an object that stands: it places and makes nothing.
20
+ * A batch holding a refused call is refused whole: the gate says nothing about its other calls.
21
+ */
22
+ export declare function furnishingRefusal(tool: string, input: unknown, brief: DesignBrief | null): AgentRefusal | null;
23
+ /** Throws the refusal when the host gates and the call may not run; a host with no brief to keep passes. */
24
+ export declare function requireFurnishing(tool: string, input: unknown, brief: DesignBrief | null | undefined): void;
25
+ /** The operation of a furnishing tool, refusing as `requireFurnishing` says before it runs. */
26
+ export declare function gatedByBrief<Input>(tool: string, operation: AgentOperation<Input>): AgentOperation<Input>;
27
+ /** What a brief opens and leaves closed, as facts. */
28
+ export declare function briefUnlocks(brief: DesignBrief): {
29
+ unlocks: string[];
30
+ closed: string[];
31
+ };
32
+ /**
33
+ * `design_brief`: the request read as a brief, recorded as the turn's design record. The operation
34
+ * echoes it with what it opens and hands it back for the host to keep with the session; nothing in
35
+ * the scene changes.
36
+ */
37
+ export declare const designBrief: AgentOperation<DesignBriefInput>;
38
+ //# sourceMappingURL=design-brief.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"design-brief.d.ts","sourceRoot":"","sources":["../../src/agent-operations/design-brief.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,WAAW,EAChB,KAAK,gBAAgB,EAGtB,MAAM,6BAA6B,CAAA;AACpC,OAAO,EAAE,YAAY,EAAU,MAAM,wBAAwB,CAAA;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AAC3C,OAAO,KAAK,EAAgB,cAAc,EAAE,MAAM,SAAS,CAAA;AAE3D;;;;;GAKG;AAEH,eAAO,MAAM,QAAQ,wOACkN,CAAA;AAwBvO,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,UAAU,GAAG,cAAc,CAAC,GAAG,OAAO,CAGjG;AAyGD,kFAAkF;AAClF,wBAAgB,UAAU,CAAC,MAAM,EAAE,gBAAgB,CAAC,QAAQ,CAAC,GAAG,MAAM,EAAE,CAEvE;AAiCD,8FAA8F;AAC9F,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAGvE;AAuCD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,OAAO,EACd,KAAK,EAAE,WAAW,GAAG,IAAI,GACxB,YAAY,GAAG,IAAI,CAwCrB;AAED,4GAA4G;AAC5G,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,OAAO,EACd,KAAK,EAAE,WAAW,GAAG,IAAI,GAAG,SAAS,GACpC,IAAI,CAIN;AAED,+FAA+F;AAC/F,wBAAgB,YAAY,CAAC,KAAK,EAChC,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,cAAc,CAAC,KAAK,CAAC,GAC/B,cAAc,CAAC,KAAK,CAAC,CAKvB;AAED,sDAAsD;AACtD,wBAAgB,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG;IAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAyBxF;AAED;;;;GAIG;AACH,eAAO,MAAM,WAAW,EAAE,cAAc,CAAC,gBAAgB,CAqCxD,CAAA"}