@pascal-app/core 1.0.4 → 1.0.6

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,9 @@
1
+ import { type ProjectFileToolName } from '../agent-tools/project-files.js';
2
+ export type ProjectFileToolExecutor = (request: {
3
+ name: ProjectFileToolName;
4
+ projectId?: string;
5
+ input: Record<string, unknown>;
6
+ signal?: AbortSignal;
7
+ }) => Promise<unknown>;
8
+ export declare function executeProjectFileTool(name: string, raw: unknown, execute: ProjectFileToolExecutor, signal?: AbortSignal): Promise<unknown>;
9
+ //# sourceMappingURL=project-files.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-files.d.ts","sourceRoot":"","sources":["../../src/agent-operations/project-files.ts"],"names":[],"mappings":"AACA,OAAO,EAA+B,KAAK,mBAAmB,EAAE,MAAM,8BAA8B,CAAA;AAGpG,MAAM,MAAM,uBAAuB,GAAG,CAAC,OAAO,EAAE;IAC9C,IAAI,EAAE,mBAAmB,CAAA;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC9B,MAAM,CAAC,EAAE,WAAW,CAAA;CACrB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;AAEtB,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,OAAO,EACZ,OAAO,EAAE,uBAAuB,EAChC,MAAM,CAAC,EAAE,WAAW,oBA0BrB"}
@@ -0,0 +1,25 @@
1
+ import { z } from 'zod';
2
+ import { PROJECT_FILE_TOOL_CONTRACTS } from '../agent-tools/project-files.js';
3
+ import { AgentRefusal } from '../agent-tools/refusal.js';
4
+ export async function executeProjectFileTool(name, raw, execute, signal) {
5
+ const contract = PROJECT_FILE_TOOL_CONTRACTS.find((tool) => tool.name === name);
6
+ if (!contract)
7
+ throw new AgentRefusal('unknown_file_tool', 'This project file tool is not available.');
8
+ const parsed = z.object(contract.input).strict().safeParse(raw);
9
+ if (!parsed.success)
10
+ throw new AgentRefusal('invalid_file_input', 'Invalid project file input.', {
11
+ issues: parsed.error.issues,
12
+ });
13
+ const { projectId, ...input } = parsed.data;
14
+ if (name === 'upload_project_file') {
15
+ const valid = input.phase === 'text'
16
+ ? typeof input.content === 'string'
17
+ : typeof input.size === 'number' &&
18
+ (input.phase === 'prepare' ||
19
+ (typeof input.fileId === 'string' && typeof input.storageKey === 'string'));
20
+ if (!valid)
21
+ throw new AgentRefusal('invalid_file_input', 'Text uploads need content; prepare needs size; complete needs size, fileId and storageKey.');
22
+ }
23
+ signal?.throwIfAborted();
24
+ return execute({ name: contract.name, projectId, input, signal });
25
+ }
@@ -0,0 +1,18 @@
1
+ import { type SessionKeep, type SessionRecord } from './scene-checkpoint.js';
2
+ import type { SceneNodes } from './types.js';
3
+ /** What a surface lends the recorder: its scene and the session record it keeps. */
4
+ export type MadeRecorderHost = {
5
+ getNodes: () => SceneNodes;
6
+ readSession: () => SessionRecord;
7
+ keep: (keep: SessionKeep) => void;
8
+ };
9
+ /**
10
+ * Runs a call and keeps what it made in the agent's session: every node in the scene after it that
11
+ * was not before, whichever way the call wrote it (a tool of its own, a patch, a shell). Writers that
12
+ * report their own creations (`applyAgentOutcome`) say the same, and a node is made once.
13
+ *
14
+ * The session's first call also takes `start`, before anything is written. A call that replaces the
15
+ * scene (a load, a clear) begins another session, and what it lays down is not the agent's.
16
+ */
17
+ export declare function recordMade<Result>(host: MadeRecorderHost, run: () => Promise<Result>): Promise<Result>;
18
+ //# sourceMappingURL=record-made.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"record-made.d.ts","sourceRoot":"","sources":["../../src/agent-operations/record-made.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,WAAW,EAChB,KAAK,aAAa,EAEnB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAEzC,oFAAoF;AACpF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,EAAE,MAAM,UAAU,CAAA;IAC1B,WAAW,EAAE,MAAM,aAAa,CAAA;IAChC,IAAI,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,CAAA;CAClC,CAAA;AAED;;;;;;;GAOG;AACH,wBAAsB,UAAU,CAAC,MAAM,EACrC,IAAI,EAAE,gBAAgB,EACtB,GAAG,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,GACzB,OAAO,CAAC,MAAM,CAAC,CAejB"}
@@ -0,0 +1,28 @@
1
+ import { createdBetween, startOfSession, } from './scene-checkpoint.js';
2
+ /**
3
+ * Runs a call and keeps what it made in the agent's session: every node in the scene after it that
4
+ * was not before, whichever way the call wrote it (a tool of its own, a patch, a shell). Writers that
5
+ * report their own creations (`applyAgentOutcome`) say the same, and a node is made once.
6
+ *
7
+ * The session's first call also takes `start`, before anything is written. A call that replaces the
8
+ * scene (a load, a clear) begins another session, and what it lays down is not the agent's.
9
+ */
10
+ export async function recordMade(host, run) {
11
+ // A copy: a host may write its own map in place, and a "before" that grows reads nothing as new.
12
+ const before = { ...host.getNodes() };
13
+ const first = startOfSession(host.readSession(), before);
14
+ if (first)
15
+ host.keep(first);
16
+ const began = host.readSession().checkpoints.start;
17
+ try {
18
+ return await run();
19
+ }
20
+ finally {
21
+ // The session of a scene too large to remember has no start, and nothing to look back from.
22
+ if (began && host.readSession().checkpoints.start === began) {
23
+ const made = createdBetween(before, host.getNodes());
24
+ if (made.length)
25
+ host.keep({ made });
26
+ }
27
+ }
28
+ }
@@ -0,0 +1,24 @@
1
+ type Pt = [number, number];
2
+ export type RoofRectangle = {
3
+ minX: number;
4
+ maxX: number;
5
+ minZ: number;
6
+ maxZ: number;
7
+ };
8
+ export type RoofFootprint = {
9
+ rectangles: RoofRectangle[];
10
+ roofType: 'gable' | 'hip' | 'flat';
11
+ };
12
+ export declare function roofRectangles(polygons: readonly (readonly Pt[])[]): RoofFootprint;
13
+ /**
14
+ * The frame a roof is swept in: the footprint's own axes, from its longest edge, so a rotated
15
+ * building gets whole wings, not a staircase of segments along the world axes. The rotation
16
+ * convention is a roof node's: local (x, z) → (x c + z s, -x s + z c).
17
+ */
18
+ export declare function buildingFrame(polygons: readonly (readonly Pt[])[]): {
19
+ angle: number;
20
+ polygons: Pt[][];
21
+ toWorld: ([x, z]: Pt) => Pt;
22
+ };
23
+ export {};
24
+ //# sourceMappingURL=roof-footprint.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"roof-footprint.d.ts","sourceRoot":"","sources":["../../src/agent-operations/roof-footprint.ts"],"names":[],"mappings":"AAOA,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AAC1B,MAAM,MAAM,aAAa,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAA;AACtF,MAAM,MAAM,aAAa,GAAG;IAAE,UAAU,EAAE,aAAa,EAAE,CAAC;IAAC,QAAQ,EAAE,OAAO,GAAG,KAAK,GAAG,MAAM,CAAA;CAAE,CAAA;AAoE/F,wBAAgB,cAAc,CAAC,QAAQ,EAAE,SAAS,CAAC,SAAS,EAAE,EAAE,CAAC,EAAE,GAAG,aAAa,CA6HlF;AA4DD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,SAAS,CAAC,SAAS,EAAE,EAAE,CAAC,EAAE;;;sBAmB5C,EAAE,KAAG,EAAE;EAE5B"}
@@ -0,0 +1,242 @@
1
+ // The rectangles a roof is built from, one roof segment each: the footprint's wings, each as long
2
+ // as it runs inside the footprint, so they overlap where they meet. The roof renders their union,
3
+ // so a wing's hips meet the body's slopes in valleys; wings cut where they meet put a hip end each
4
+ // side of the cut, a notch along the joint. Coordinates scaled from a plan carry float noise that
5
+ // slices the footprint into hundreds of slivers, so the footprint is snapped first, balcony-thin
6
+ // strips join their larger neighbour, and a pathological footprint falls back to its bounding box.
7
+ /** Coordinates snap to 10 cm. */
8
+ const snap = (value) => Math.round(value * 10) / 10;
9
+ /** Parts thinner than this (balconies, slivers) get no roof of their own. */
10
+ const MIN_PART = 1.5;
11
+ const MAX_SEGMENTS = 24;
12
+ /** A house has up to this many wings under hips; past it the roof is flat. */
13
+ const MAX_HIP_WINGS = 6;
14
+ /** A footprint longer than this is a block, not a house: its roof is flat. */
15
+ const BLOCK_LENGTH = 30;
16
+ function inside(polygon, x, z) {
17
+ let crossed = false;
18
+ for (let i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {
19
+ const [ax, az] = polygon[i];
20
+ const [bx, bz] = polygon[j];
21
+ if (az > z !== bz > z && x < ((bx - ax) * (z - az)) / (bz - az) + ax)
22
+ crossed = !crossed;
23
+ }
24
+ return crossed;
25
+ }
26
+ /** The footprint is the union of its plates: where two slabs overlap, both cover it. */
27
+ const insideAny = (polygons, x, z) => polygons.some((polygon) => inside(polygon, x, z));
28
+ /**
29
+ * A strip of cells thinner than a part keeps only what its larger neighbour along the other axis
30
+ * also has: balconies drop out and the wings they stand on stay whole. Along z, then along x.
31
+ */
32
+ function dropThinStrips(cells, xs, zs) {
33
+ const sweep = (rows, columns, at, set, size) => {
34
+ for (let r = 0; r < rows; r++) {
35
+ if (size(r) >= MIN_PART)
36
+ continue;
37
+ const neighbours = [r - 1, r + 1].filter((n) => n >= 0 && n < rows && size(n) >= MIN_PART);
38
+ const larger = neighbours.sort((a, b) => size(b) - size(a))[0];
39
+ if (larger === undefined)
40
+ continue;
41
+ for (let c = 0; c < columns; c++)
42
+ if (at(r, c) && !at(larger, c))
43
+ set(r, c);
44
+ }
45
+ };
46
+ const nx = xs.length - 1;
47
+ const nz = zs.length - 1;
48
+ sweep(nz, nx, (j, i) => cells[i][j], (j, i) => {
49
+ cells[i][j] = false;
50
+ }, (j) => zs[j + 1] - zs[j]);
51
+ sweep(nx, nz, (i, j) => cells[i][j], (i, j) => {
52
+ cells[i][j] = false;
53
+ }, (i) => xs[i + 1] - xs[i]);
54
+ }
55
+ export function roofRectangles(polygons) {
56
+ const snapped = polygons.map((polygon) => polygon.map(([x, z]) => [snap(x), snap(z)]));
57
+ const all = snapped.flat();
58
+ const bounds = {
59
+ minX: Math.min(...all.map((point) => point[0])),
60
+ maxX: Math.max(...all.map((point) => point[0])),
61
+ minZ: Math.min(...all.map((point) => point[1])),
62
+ maxZ: Math.max(...all.map((point) => point[1])),
63
+ };
64
+ const xs = [...new Set(all.map((point) => point[0]))].sort((a, b) => a - b);
65
+ const zs = [...new Set(all.map((point) => point[1]))].sort((a, b) => a - b);
66
+ const nx = xs.length - 1;
67
+ const nz = zs.length - 1;
68
+ const cells = Array.from({ length: nx }, (_, i) => Array.from({ length: nz }, (_, j) => insideAny(snapped, (xs[i] + xs[i + 1]) / 2, (zs[j] + zs[j + 1]) / 2)));
69
+ dropThinStrips(cells, xs, zs);
70
+ // Inside cells counted from the corner, to test a rectangle in one step.
71
+ const count = Array.from({ length: nx + 1 }, () => new Array(nz + 1).fill(0));
72
+ for (let i = 0; i < nx; i++)
73
+ for (let j = 0; j < nz; j++)
74
+ count[i + 1][j + 1] =
75
+ (cells[i][j] ? 1 : 0) + count[i][j + 1] + count[i + 1][j] - count[i][j];
76
+ const filled = (i0, i1, j0, j1) => i0 >= 0 &&
77
+ j0 >= 0 &&
78
+ i1 <= nx &&
79
+ j1 <= nz &&
80
+ count[i1][j1] - count[i0][j1] - count[i1][j0] + count[i0][j0] === (i1 - i0) * (j1 - j0);
81
+ const wings = [];
82
+ for (let i0 = 0; i0 < nx; i0++)
83
+ for (let i1 = i0 + 1; i1 <= nx; i1++) {
84
+ if (!filled(i0, i1, 0, 0) && xs[i1] - xs[i0] < MIN_PART && i1 < nx)
85
+ continue;
86
+ for (let j0 = 0; j0 < nz; j0++)
87
+ for (let j1 = j0 + 1; j1 <= nz; j1++) {
88
+ if (!filled(i0, i1, j0, j1))
89
+ break;
90
+ if (xs[i1] - xs[i0] < MIN_PART || zs[j1] - zs[j0] < MIN_PART)
91
+ continue;
92
+ const extends_ = filled(i0 - 1, i1, j0, j1) ||
93
+ filled(i0, i1 + 1, j0, j1) ||
94
+ filled(i0, i1, j0 - 1, j1) ||
95
+ filled(i0, i1, j0, j1 + 1);
96
+ if (!extends_)
97
+ wings.push({ i0, i1, j0, j1 });
98
+ }
99
+ }
100
+ // Greedy: the wing covering most of what is left, the longer through the body on a tie, until
101
+ // what is left is smaller than a part.
102
+ const covered = cells.map((column) => column.map(() => false));
103
+ const area = (w) => (xs[w.i1] - xs[w.i0]) * (zs[w.j1] - zs[w.j0]);
104
+ const gain = (w) => {
105
+ let total = 0;
106
+ for (let i = w.i0; i < w.i1; i++)
107
+ for (let j = w.j0; j < w.j1; j++)
108
+ if (!covered[i][j])
109
+ total += (xs[i + 1] - xs[i]) * (zs[j + 1] - zs[j]);
110
+ return total;
111
+ };
112
+ const rectangles = [];
113
+ while (rectangles.length <= MAX_SEGMENTS) {
114
+ let best = null;
115
+ let bestGain = 0;
116
+ for (const wing of wings) {
117
+ const g = gain(wing);
118
+ if (g > bestGain + 1e-9 ||
119
+ (best && Math.abs(g - bestGain) <= 1e-9 && area(wing) > area(best))) {
120
+ best = wing;
121
+ bestGain = g;
122
+ }
123
+ }
124
+ if (!best || bestGain < MIN_PART * MIN_PART)
125
+ break;
126
+ for (let i = best.i0; i < best.i1; i++)
127
+ for (let j = best.j0; j < best.j1; j++)
128
+ covered[i][j] = true;
129
+ rectangles.push({
130
+ minX: xs[best.i0],
131
+ maxX: xs[best.i1],
132
+ minZ: zs[best.j0],
133
+ maxZ: zs[best.j1],
134
+ });
135
+ }
136
+ // Outside the footprint within a rectangle on the grid: what a roof over it adds past the house.
137
+ const inside = Array.from({ length: nx + 1 }, () => new Array(nz + 1).fill(0));
138
+ for (let i = 0; i < nx; i++)
139
+ for (let j = 0; j < nz; j++)
140
+ inside[i + 1][j + 1] =
141
+ (cells[i][j] ? (xs[i + 1] - xs[i]) * (zs[j + 1] - zs[j]) : 0) +
142
+ inside[i][j + 1] +
143
+ inside[i + 1][j] -
144
+ inside[i][j];
145
+ const at = (values, value) => values.indexOf(value);
146
+ const outside = (r) => {
147
+ const [i0, i1, j0, j1] = [at(xs, r.minX), at(xs, r.maxX), at(zs, r.minZ), at(zs, r.maxZ)];
148
+ const within = inside[i1][j1] - inside[i0][j1] - inside[i1][j0] + inside[i0][j0];
149
+ return (r.maxX - r.minX) * (r.maxZ - r.minZ) - within;
150
+ };
151
+ // Of a rectangle, how much the others cover: on the grid, cell by cell.
152
+ const coveredBy = (r, others) => {
153
+ let total = 0;
154
+ for (let i = at(xs, r.minX); i < at(xs, r.maxX); i++)
155
+ for (let j = at(zs, r.minZ); j < at(zs, r.maxZ); j++) {
156
+ const [cx, cz] = [(xs[i] + xs[i + 1]) / 2, (zs[j] + zs[j + 1]) / 2];
157
+ if (others.some((o) => cx > o.minX && cx < o.maxX && cz > o.minZ && cz < o.maxZ))
158
+ total += (xs[i + 1] - xs[i]) * (zs[j + 1] - zs[j]);
159
+ }
160
+ return total;
161
+ };
162
+ const absorbed = mergeWings(rectangles, outside, coveredBy);
163
+ const chosen = absorbed.length === 0 || absorbed.length > MAX_SEGMENTS ? [bounds] : absorbed;
164
+ const long = Math.max(bounds.maxX - bounds.minX, bounds.maxZ - bounds.minZ);
165
+ const roofType = long > BLOCK_LENGTH || chosen.length > MAX_HIP_WINGS
166
+ ? 'flat'
167
+ : chosen.length === 1
168
+ ? 'gable'
169
+ : 'hip';
170
+ return { rectangles: chosen, roofType };
171
+ }
172
+ /**
173
+ * A merge may add roof outside the house up to this share of what the wing it takes in covered on
174
+ * its own: a jog's corners against its band, not a projection's notches against its own hip.
175
+ */
176
+ const MERGE_SHARE = 0.5;
177
+ /**
178
+ * A roof runs over a jog: two wings become their bounding rectangle when that adds little roof
179
+ * outside the house against what the wing taken in covered on its own (a strip along a jog, a band
180
+ * a few decimetres proud). A garage, a projection, a courtyard's arms cover more on their own than a
181
+ * merge would add outside, and keep their hips.
182
+ */
183
+ function mergeWings(wings, outside, covered) {
184
+ const area = (r) => (r.maxX - r.minX) * (r.maxZ - r.minZ);
185
+ const union = (a, b) => ({
186
+ minX: Math.min(a.minX, b.minX),
187
+ maxX: Math.max(a.maxX, b.maxX),
188
+ minZ: Math.min(a.minZ, b.minZ),
189
+ maxZ: Math.max(a.maxZ, b.maxZ),
190
+ });
191
+ const contains = (a, b) => a.minX <= b.minX && a.maxX >= b.maxX && a.minZ <= b.minZ && a.maxZ >= b.maxZ;
192
+ let current = [...wings];
193
+ while (true) {
194
+ let best = null;
195
+ for (const keep of current)
196
+ for (const take of current) {
197
+ if (keep === take)
198
+ continue;
199
+ // What the wing taken in covers that no other wing does.
200
+ const own = area(take) -
201
+ covered(take, current.filter((r) => r !== take));
202
+ if (own <= 0)
203
+ continue;
204
+ const grown = union(keep, take);
205
+ const ratio = (outside(grown) - outside(keep)) / own;
206
+ if (ratio <= MERGE_SHARE + 1e-9 && (!best || ratio < best.ratio))
207
+ best = { keep, take, grown, ratio };
208
+ }
209
+ if (!best)
210
+ return current;
211
+ const { keep, take, grown } = best;
212
+ current = current
213
+ .map((r) => (r === keep ? grown : r))
214
+ .filter((r) => r === grown || (r !== take && !contains(grown, r)));
215
+ }
216
+ }
217
+ /**
218
+ * The frame a roof is swept in: the footprint's own axes, from its longest edge, so a rotated
219
+ * building gets whole wings, not a staircase of segments along the world axes. The rotation
220
+ * convention is a roof node's: local (x, z) → (x c + z s, -x s + z c).
221
+ */
222
+ export function buildingFrame(polygons) {
223
+ let longest = { length: 0, dx: 1, dz: 0 };
224
+ for (const polygon of polygons)
225
+ for (let i = 0; i < polygon.length; i++) {
226
+ const [ax, az] = polygon[i];
227
+ const [bx, bz] = polygon[(i + 1) % polygon.length];
228
+ const length = Math.hypot(bx - ax, bz - az);
229
+ if (length > longest.length)
230
+ longest = { length, dx: bx - ax, dz: bz - az };
231
+ }
232
+ // The local x axis runs along the longest edge, turned to the nearest quarter of the world's.
233
+ const edge = Math.atan2(-longest.dz, longest.dx);
234
+ const angle = edge - Math.round(edge / (Math.PI / 2)) * (Math.PI / 2);
235
+ const c = Math.cos(angle);
236
+ const s = Math.sin(angle);
237
+ return {
238
+ angle,
239
+ polygons: polygons.map((polygon) => polygon.map(([x, z]) => [x * c - z * s, x * s + z * c])),
240
+ toWorld: ([x, z]) => [x * c + z * s, -x * s + z * c],
241
+ };
242
+ }
@@ -0,0 +1,20 @@
1
+ import { AgentRefusal } from '../agent-tools/refusal.js';
2
+ import type { NodeWrite, SceneNodes } from './types.js';
3
+ /**
4
+ * Storey content aimed at a level serving as its building's roof level: the refusal, naming the
5
+ * storey it covers so one retry lands; null on a storey.
6
+ */
7
+ export declare function roofLevelRefusal(nodes: SceneNodes, levelId: string, what: string): AgentRefusal | null;
8
+ /** A level serving as its building's roof level holds roofs, not rooms: storey content is refused there. */
9
+ export declare function refuseRoofLevel(nodes: SceneNodes, levelId: string, what: string): void;
10
+ /**
11
+ * The rule on a write's operations, in their order, against the scene they write to: storey
12
+ * content created or moved onto a roof level (`roof_level`), a walled level declared the roof level
13
+ * (`roof_level_holds_storey`) and floor indexes putting a roof level under a storey
14
+ * (`roof_level_on_top`) are refused, naming the operation's index. A storey created at or above a
15
+ * roof level moves the roof levels up over it, and each roof the write puts on its walls' storey
16
+ * is seated (`planRoofSeats`): both appended to `ops` as operations of their own, so every index
17
+ * stays the model's. Returns a note per change.
18
+ */
19
+ export declare function seatWrittenRoofs(ops: NodeWrite[], scene: SceneNodes): string[];
20
+ //# sourceMappingURL=roof-writes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"roof-writes.d.ts","sourceRoot":"","sources":["../../src/agent-operations/roof-writes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAU,MAAM,wBAAwB,CAAA;AAc7D,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AA2BpD;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,UAAU,EACjB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,GACX,YAAY,GAAG,IAAI,CAKrB;AAED,4GAA4G;AAC5G,wBAAgB,eAAe,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAG/E;AASD;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,UAAU,GAAG,MAAM,EAAE,CA0I9E"}
@@ -0,0 +1,165 @@
1
+ import { AgentRefusal, refuse } from '../agent-tools/refusal.js';
2
+ import { getLevelDisplayName } from '../lib/level-name.js';
3
+ import { parseNode } from '../schema/index.js';
4
+ import { isRoofGeometry, isRoofLevel, isStoreyContent, liftRoofLevels, roofLevelOrderBreach, servesAsRoofLevel, storeyOf, } from '../services/roof-level.js';
5
+ import { planRoofSeats } from '../services/roof-move.js';
6
+ import { applySceneWrites } from './apply-changes.js';
7
+ /**
8
+ * The roof-level rule on writes that name every node and parent themselves (apply_patch,
9
+ * update_node, a saved graph): a roof written on the storey whose walls carry it goes to the level
10
+ * above, said in a note; what the rule cannot place is refused, naming what would work.
11
+ */
12
+ const nameOf = (nodes, id) => {
13
+ const node = nodes[id];
14
+ return node?.type === 'level' ? `${getLevelDisplayName(node)} (${id})` : id;
15
+ };
16
+ function onRoofLevel(nodes, levelId, what, details = {}) {
17
+ const storeyId = storeyOf(nodes, levelId);
18
+ return new AgentRefusal('roof_level', `${nameOf(nodes, levelId)} is a roof level, not a storey: ${what} belongs on a storey${storeyId === levelId ? '' : `, such as ${nameOf(nodes, storeyId)}, the one it covers`}. Add a storey with add_level if the building needs one.`, { ...details, levelId, storeyId });
19
+ }
20
+ /**
21
+ * Storey content aimed at a level serving as its building's roof level: the refusal, naming the
22
+ * storey it covers so one retry lands; null on a storey.
23
+ */
24
+ export function roofLevelRefusal(nodes, levelId, what) {
25
+ const level = nodes[levelId];
26
+ return level?.type === 'level' && servesAsRoofLevel(nodes, level)
27
+ ? onRoofLevel(nodes, levelId, what)
28
+ : null;
29
+ }
30
+ /** A level serving as its building's roof level holds roofs, not rooms: storey content is refused there. */
31
+ export function refuseRoofLevel(nodes, levelId, what) {
32
+ const refusal = roofLevelRefusal(nodes, levelId, what);
33
+ if (refusal)
34
+ throw refusal;
35
+ }
36
+ const roleOf = (write) => write.op === 'create'
37
+ ? write.node.metadata?.role
38
+ : write.op === 'update'
39
+ ? write.data.metadata?.role
40
+ : undefined;
41
+ /**
42
+ * The rule on a write's operations, in their order, against the scene they write to: storey
43
+ * content created or moved onto a roof level (`roof_level`), a walled level declared the roof level
44
+ * (`roof_level_holds_storey`) and floor indexes putting a roof level under a storey
45
+ * (`roof_level_on_top`) are refused, naming the operation's index. A storey created at or above a
46
+ * roof level moves the roof levels up over it, and each roof the write puts on its walls' storey
47
+ * is seated (`planRoofSeats`): both appended to `ops` as operations of their own, so every index
48
+ * stays the model's. Returns a note per change.
49
+ */
50
+ export function seatWrittenRoofs(ops, scene) {
51
+ // Parsed as the store creates them, so a level written without `children` gets its list.
52
+ const writes = ops.map((write) => {
53
+ if (write.op !== 'create')
54
+ return write;
55
+ const parsed = parseNode(write.node);
56
+ return { ...write, node: parsed.success ? parsed.data : write.node };
57
+ });
58
+ const after = applySceneWrites(scene, writes);
59
+ writes.forEach((write, index) => {
60
+ const placed = write.op === 'create'
61
+ ? {
62
+ id: write.node.id,
63
+ type: write.node.type,
64
+ parentId: write.parentId ?? write.node.parentId,
65
+ metadata: after[write.node.id]?.metadata,
66
+ }
67
+ : write.op === 'update' &&
68
+ (typeof write.data.parentId === 'string' ||
69
+ (isRoofGeometry(scene[write.id]) && !isRoofGeometry(after[write.id])))
70
+ ? after[write.id]
71
+ : null;
72
+ if (!placed?.parentId || !isStoreyContent(placed.type, placed.metadata))
73
+ return;
74
+ // A retained assembly's separately addressed children still belong to its level.
75
+ let parentId = placed.parentId;
76
+ let retainedRoofAncestor = false;
77
+ const seen = new Set();
78
+ while (after[parentId]?.type === 'item' && !seen.has(parentId)) {
79
+ seen.add(parentId);
80
+ retainedRoofAncestor ||= isRoofGeometry(after[parentId]);
81
+ const next = after[parentId]?.parentId;
82
+ if (!next)
83
+ break;
84
+ parentId = next;
85
+ }
86
+ if (!retainedRoofAncestor)
87
+ parentId = placed.parentId;
88
+ const prior = scene[parentId];
89
+ const what = `a ${placed.type}`;
90
+ if (isRoofLevel(after[parentId]))
91
+ throw onRoofLevel(after, parentId, what, { index, id: placed.id });
92
+ if (prior?.type === 'level' && servesAsRoofLevel(scene, prior))
93
+ throw onRoofLevel(scene, parentId, what, { index, id: placed.id });
94
+ });
95
+ writes.forEach((write, index) => {
96
+ const id = write.op === 'create' ? write.node.id : write.op === 'update' ? write.id : null;
97
+ const level = id ? after[id] : undefined;
98
+ if (!id || roleOf(write) !== 'roof' || isRoofLevel(scene[id]) || level?.type !== 'level')
99
+ return;
100
+ const held = [
101
+ ...new Set(level.children
102
+ .map((child) => after[child])
103
+ .filter((child) => isStoreyContent(child?.type, child?.metadata))
104
+ .map((child) => child.type)),
105
+ ];
106
+ if (held.length)
107
+ refuse('roof_level_holds_storey', `${nameOf(after, id)} holds ${held.map((type) => `a ${type}`).join(', ')}, a storey's content, so it cannot be declared the roof level: a roof level holds roofs only. create_roof puts a roof over a storey on the level the rule gives it.`, { index, id, levelId: id });
108
+ });
109
+ const floors = new Map(writes.flatMap((write) => write.op === 'update' &&
110
+ typeof write.data.level === 'number' &&
111
+ scene[write.id]?.type === 'level'
112
+ ? [[write.id, write.data.level]]
113
+ : []));
114
+ const breach = floors.size ? roofLevelOrderBreach(scene, floors) : null;
115
+ if (breach) {
116
+ const index = writes.findIndex((write) => write.op === 'update' &&
117
+ floors.has(write.id) &&
118
+ (write.id === breach.roofId || write.id === breach.storeyId));
119
+ refuse('roof_level_on_top', `This write puts ${nameOf(after, breach.roofId)}, the roof level, under the storey ${nameOf(after, breach.storeyId)}: a building's roof level stays above its storeys. Keep its floor index over theirs; a new storey goes under it (add_level).`, {
120
+ index,
121
+ id: writes[index].id,
122
+ levelId: breach.roofId,
123
+ storeyId: breach.storeyId,
124
+ });
125
+ }
126
+ const notes = [];
127
+ const appended = [];
128
+ // A storey created at or above a roof level, or a roof level created at or under a storey: the
129
+ // building's roof levels go up over its storeys.
130
+ const buildings = new Set(writes.flatMap((write) => write.op === 'create' && write.node.type === 'level' ? [after[write.node.id]?.parentId] : []));
131
+ for (const buildingId of buildings) {
132
+ if (!buildingId)
133
+ continue;
134
+ for (const { id, data } of liftRoofLevels(scene, after, buildingId)) {
135
+ appended.push({ op: 'update', id, data });
136
+ notes.push(`${nameOf(after, id)} moved up to floor index ${data.level}: a building's roof level stays above its storeys.`);
137
+ }
138
+ }
139
+ const seat = planRoofSeats(scene, applySceneWrites(after, appended));
140
+ if (seat) {
141
+ const moved = new Map(seat.changes.update.map(({ id, data }) => [id, data.parentId]));
142
+ // A parent the write creates listing a roof the seat moves would list it twice.
143
+ for (const write of ops) {
144
+ if (write.op !== 'create')
145
+ continue;
146
+ const children = write.node.children;
147
+ if (!Array.isArray(children))
148
+ continue;
149
+ const kept = children.filter((id) => {
150
+ const to = moved.get(id);
151
+ return to === undefined || to === write.node.id;
152
+ });
153
+ if (kept.length !== children.length)
154
+ write.node = { ...write.node, children: kept };
155
+ }
156
+ appended.push(...seat.changes.create.map(({ node, parentId }) => ({
157
+ op: 'create',
158
+ node,
159
+ ...(parentId ? { parentId } : {}),
160
+ })), ...seat.changes.update.map(({ id, data }) => ({ op: 'update', id, data })));
161
+ notes.push(...seat.notes);
162
+ }
163
+ ops.push(...appended);
164
+ return notes;
165
+ }
@@ -0,0 +1,54 @@
1
+ import type { SceneNodes } from './types.js';
2
+ /** A space the walls and separators enclose, where a finding about it places it. */
3
+ type SpacePlace = {
4
+ levelId: string;
5
+ /** The space's floor area, m². */
6
+ area: number;
7
+ /** A point inside the space, in plan [x, z]. */
8
+ at: [number, number];
9
+ wallIds: string[];
10
+ };
11
+ /**
12
+ * A level's rooms against the spaces its walls and separators enclose (the editor's detected
13
+ * spaces): a space no zone covers, a space several zones split, a room the walls do not close, a
14
+ * room with no name.
15
+ */
16
+ export type RoomFinding = ({
17
+ type: 'space_no_room';
18
+ message: string;
19
+ } & SpacePlace) | ({
20
+ type: 'space_many_rooms';
21
+ message: string;
22
+ zoneIds: string[];
23
+ } & SpacePlace) | {
24
+ type: 'room_not_enclosed';
25
+ message: string;
26
+ /** On a zone left generic: a room still missing a wall, or a courtyard. */
27
+ severity?: 'info';
28
+ levelId: string;
29
+ zoneId: string;
30
+ } | {
31
+ type: 'room_unnamed';
32
+ message: string;
33
+ severity: 'info';
34
+ levelId: string;
35
+ zoneId: string;
36
+ };
37
+ /**
38
+ * A room is a zone with `spaceRole: 'room'`, or a generic one walls of a room's height bound along
39
+ * most of its outline, which may be a room drawn before its last wall (no reconcile could adopt
40
+ * it) or a courtyard, so what is found on it is info; a zone garden walls bound, or no walls (an
41
+ * analysis area), is no room. Every space the walls enclose wants one zone over it (any zone: a drawn one is
42
+ * adopted as the room on load): none, or several rooms lying in it (the reconciler's "Room N"
43
+ * beside a zone drawn over it, a plan's rooms split by lines no wall draws), is a finding. Every
44
+ * room wants walls or separators closing around it, and a name. A terrace closes with separators,
45
+ * so it is enclosed; a room a person declared open (`enclosureStatus: 'open'` on a room the walls
46
+ * never derived) needs no walls; an automatic room the reconciler opened when its walls stopped
47
+ * closing it does.
48
+ */
49
+ export declare function roomFindings(nodes: SceneNodes, levelId: string, levelName: string): {
50
+ spaces: number;
51
+ issues: RoomFinding[];
52
+ };
53
+ export {};
54
+ //# sourceMappingURL=room-findings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"room-findings.d.ts","sourceRoot":"","sources":["../../src/agent-operations/room-findings.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAEzC,oFAAoF;AACpF,KAAK,UAAU,GAAG;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,kCAAkC;IAClC,IAAI,EAAE,MAAM,CAAA;IACZ,gDAAgD;IAChD,EAAE,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACpB,OAAO,EAAE,MAAM,EAAE,CAAA;CAClB,CAAA;AAED;;;;GAIG;AACH,MAAM,MAAM,WAAW,GACnB,CAAC;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,UAAU,CAAC,GACzD,CAAC;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,GAAG,UAAU,CAAC,GAC/E;IACE,IAAI,EAAE,mBAAmB,CAAA;IACzB,OAAO,EAAE,MAAM,CAAA;IACf,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;CACf,GACD;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAA;AA6EhG;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,UAAU,EACjB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,GAChB;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,WAAW,EAAE,CAAA;CAAE,CAmF3C"}