@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
@@ -1,6 +1,6 @@
1
1
  import { createZone, cutFloorOpening, divideZone, structureChangeBatch } from '../../commands/structure/index.js';
2
2
  import { reconcileSceneStructure } from '../../lib/structure-reconcile.js';
3
- import { BuildingNode, ItemNode, LevelNode } from '../../schema/index.js';
3
+ import { BuildingNode, ItemNode, LevelNode, } from '../../schema/index.js';
4
4
  import { applySceneChanges } from '../apply-changes.js';
5
5
  function kitchenScene({ divided, hatch, lamp } = {}) {
6
6
  const names = {
@@ -65,6 +65,31 @@ function kitchenScene({ divided, hatch, lamp } = {}) {
65
65
  }
66
66
  return { nodes, rootNodeIds: [building.id] };
67
67
  }
68
+ const LIT = { artificialLight: true, mechanicalVentilation: true };
69
+ /** The kitchen with metadata already on its zone: what a plan import or an earlier edit left. */
70
+ function withKitchenMetadata(metadata) {
71
+ const scene = kitchenScene();
72
+ scene.nodes.zone_kitchen = { ...scene.nodes.zone_kitchen, metadata };
73
+ return scene;
74
+ }
75
+ export function paintedKitchenScene() {
76
+ const scene = kitchenScene({ divided: true });
77
+ scene.nodes.zone_kitchen = {
78
+ ...scene.nodes.zone_kitchen,
79
+ wallMaterial: 'library:preset-white',
80
+ wallOverrides: [{ wallId: 'wall_north', face: 'a', finish: 'library:local-tile' }],
81
+ };
82
+ scene.nodes.zone_pantry = {
83
+ ...scene.nodes.zone_pantry,
84
+ wallMaterial: 'library:pantry-blue',
85
+ wallOverrides: [{ wallId: 'wall_south', face: 'a', finish: 'library:pantry-tile' }],
86
+ };
87
+ scene.nodes.wall_north = {
88
+ ...scene.nodes.wall_north,
89
+ faceRegions: [{ id: 'wainscot', face: 'a', v1: 0.9, finish: 'library:wood' }],
90
+ };
91
+ return scene;
92
+ }
68
93
  /** The kitchen's floor plate: the reconciler names it from its footprint. */
69
94
  const plateId = Object.values(kitchenScene().nodes).find((node) => node.type === 'slab' && node.plateRole === 'base').id;
70
95
  /** The scene holds this many nodes of each type: rooms and separators the call minted. */
@@ -190,6 +215,88 @@ export const ROOM_CASES = [
190
215
  after: { zone_kitchen: { name: 'Studio', floor: { finish: 'wood' } } },
191
216
  },
192
217
  },
218
+ {
219
+ name: 'declares a room lit and ventilated by artificial means, beside the rest of its metadata',
220
+ tool: 'set_zone_intent',
221
+ scene: () => withKitchenMetadata({ note: 'from the plan' }),
222
+ input: {
223
+ zoneId: 'zone_kitchen',
224
+ patch: { daylight: { artificialLight: true, mechanicalVentilation: true } },
225
+ },
226
+ expect: {
227
+ result: { changes: 1 },
228
+ check: (_result, nodes) => JSON.stringify(nodes.zone_kitchen.metadata) ===
229
+ JSON.stringify({ note: 'from the plan', daylight: LIT })
230
+ ? []
231
+ : [`metadata must hold the note and the declaration: ${JSON.stringify(nodes.zone_kitchen.metadata)}`],
232
+ },
233
+ },
234
+ {
235
+ name: 'a null daylight clears the declaration and keeps the rest of the metadata',
236
+ tool: 'set_zone_intent',
237
+ scene: () => withKitchenMetadata({ note: 'from the plan', daylight: LIT }),
238
+ input: { zoneId: 'zone_kitchen', patch: { daylight: null } },
239
+ expect: {
240
+ result: { changes: 1 },
241
+ check: (_result, nodes) => JSON.stringify(nodes.zone_kitchen.metadata) ===
242
+ JSON.stringify({ note: 'from the plan' })
243
+ ? []
244
+ : [`metadata must hold the note alone: ${JSON.stringify(nodes.zone_kitchen.metadata)}`],
245
+ },
246
+ },
247
+ // Single public writes: room commands deliberately are not batchable.
248
+ ...[
249
+ ['omitting wall intent retains chosen white', { name: 'Studio' }, 'library:preset-white'],
250
+ ['a wall intent string replaces chosen white', { wallMaterial: 'library:blue' }, 'library:blue'],
251
+ ['an empty wall intent string remains a string', { wallMaterial: '' }, ''],
252
+ ['null clears room wall intent without clearing local paint', { wallMaterial: null }, undefined],
253
+ ].map(([name, patch, wallMaterial]) => ({
254
+ name,
255
+ tool: 'set_zone_intent',
256
+ scene: paintedKitchenScene,
257
+ input: { zoneId: 'zone_kitchen', patch },
258
+ expect: {
259
+ result: { changes: 1 },
260
+ after: {
261
+ zone_kitchen: {
262
+ wallOverrides: [{ wallId: 'wall_north', face: 'a', finish: 'library:local-tile' }],
263
+ },
264
+ zone_pantry: {
265
+ wallMaterial: 'library:pantry-blue',
266
+ wallOverrides: [{ wallId: 'wall_south', face: 'a', finish: 'library:pantry-tile' }],
267
+ },
268
+ wall_north: {
269
+ faceRegions: [{ id: 'wainscot', face: 'a', v1: 0.9, finish: 'library:wood' }],
270
+ },
271
+ },
272
+ check: (_result, nodes) => nodes.zone_kitchen.wallMaterial === wallMaterial
273
+ ? []
274
+ : [`persisted wallMaterial must be ${String(wallMaterial)}`],
275
+ },
276
+ })),
277
+ {
278
+ name: 'adjacent rooms read independent wall defaults and local paint',
279
+ tool: 'get_zones',
280
+ scene: paintedKitchenScene,
281
+ input: { levelId: 'level_rooms' },
282
+ expect: {
283
+ result: {},
284
+ contains: {
285
+ zones: [
286
+ {
287
+ id: 'zone_kitchen',
288
+ wallMaterial: 'library:preset-white',
289
+ wallOverrides: [{ wallId: 'wall_north', face: 'a', finish: 'library:local-tile' }],
290
+ },
291
+ {
292
+ id: 'zone_pantry',
293
+ wallMaterial: 'library:pantry-blue',
294
+ wallOverrides: [{ wallId: 'wall_south', face: 'a', finish: 'library:pantry-tile' }],
295
+ },
296
+ ],
297
+ },
298
+ },
299
+ },
193
300
  {
194
301
  name: 'a floor key no room has is a conflict that says what to choose',
195
302
  tool: 'set_zone_intent',
@@ -213,6 +320,20 @@ export const ROOM_CASES = [
213
320
  check: holds({ zone: 1, wall: 4 }),
214
321
  },
215
322
  },
323
+ {
324
+ name: 'a turn in degrees: half a turn about its centre, then moved',
325
+ tool: 'move_zone',
326
+ scene: kitchenScene,
327
+ input: { zoneId: 'zone_kitchen', rotate: { angle: '180°' }, translate: [10, 0] },
328
+ expect: {
329
+ result: { zoneId: 'zone_kitchen' },
330
+ check: (_result, nodes) => {
331
+ const wall = nodes.wall_south;
332
+ const off = [...wall.start, ...wall.end].some((value, i) => Math.abs(value - [18, 4, 10, 4][i]) > 1e-9);
333
+ return off ? [`wall_south runs ${wall.start} → ${wall.end}, not 18,4 → 10,4`] : [];
334
+ },
335
+ },
336
+ },
216
337
  {
217
338
  name: 'duplicates a room, its ceiling lamp hung on the copy’s ceiling',
218
339
  tool: 'duplicate_zone',
@@ -313,6 +434,13 @@ export const ROOM_CASES = [
313
434
  input: { zoneId: 'zone_kitchen', patch: { thickness: 0.3 } },
314
435
  expect: { result: {}, after: { [plateId]: { thickness: 0.3 } } },
315
436
  },
437
+ {
438
+ name: 'a slab thickness in feet, as the person said it',
439
+ tool: 'set_room_floor_construction',
440
+ scene: kitchenScene,
441
+ input: { zoneId: 'zone_kitchen', patch: { thickness: '1 ft' } },
442
+ expect: { result: {}, after: { [plateId]: { thickness: 0.3048 } } },
443
+ },
316
444
  {
317
445
  name: 'sets a footprint reference datum',
318
446
  tool: 'rebase_floor_reference',
@@ -320,6 +448,13 @@ export const ROOM_CASES = [
320
448
  input: { slabId: plateId, referenceFloorElevation: 0.2 },
321
449
  expect: { result: {}, after: { [plateId]: { referenceFloorElevation: 0.2 } } },
322
450
  },
451
+ {
452
+ name: 'a reference datum in inches',
453
+ tool: 'rebase_floor_reference',
454
+ scene: kitchenScene,
455
+ input: { slabId: plateId, referenceFloorElevation: '8 in' },
456
+ expect: { result: {}, after: { [plateId]: { referenceFloorElevation: 0.2032 } } },
457
+ },
323
458
  {
324
459
  name: 'adds a mezzanine over part of a room',
325
460
  tool: 'create_mezzanine',
@@ -0,0 +1,4 @@
1
+ import type { AgentToolCase } from './cases.js';
2
+ export declare const VALIDATE_SCENE_CASES: AgentToolCase[];
3
+ export declare const CHECK_ROOMS_CASES: AgentToolCase[];
4
+ //# sourceMappingURL=scene-check-cases.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scene-check-cases.d.ts","sourceRoot":"","sources":["../../../src/agent-operations/__fixtures__/scene-check-cases.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,aAAa,EAAc,MAAM,SAAS,CAAA;AA+GxD,eAAO,MAAM,oBAAoB,EAAE,aAAa,EAgQ/C,CAAA;AAED,eAAO,MAAM,iBAAiB,EAAE,aAAa,EA6T5C,CAAA"}
@@ -0,0 +1,417 @@
1
+ import { CeilingNode, DoorNode, ItemNode, SeparatorNode, SiteNode, SlabNode, StairNode, StairSegmentNode, WallNode, ZoneNode, } from '../../schema/index.js';
2
+ import { building, level, ROOM, room, scene, stairOn } from './verify-scene-cases.js';
3
+ /** A closed ring of walls on a level, with a door so the level has one. */
4
+ function wallRing(levelId, tag, ring, open = false) {
5
+ const walls = (open ? ring.slice(0, -1) : ring).map((start, i) => WallNode.parse({
6
+ id: `wall_${tag}_${i}`,
7
+ parentId: levelId,
8
+ start,
9
+ end: ring[(i + 1) % ring.length],
10
+ height: 2.5,
11
+ }));
12
+ const host = walls[0];
13
+ const door = DoorNode.parse({
14
+ id: `door_${tag}`,
15
+ parentId: host.id,
16
+ wallId: host.id,
17
+ position: [1, 1.05, 0],
18
+ });
19
+ return [...walls, door];
20
+ }
21
+ const rect = (x0, z0, x1, z1) => [
22
+ [x0, z0],
23
+ [x1, z0],
24
+ [x1, z1],
25
+ [x0, z1],
26
+ ];
27
+ const roomZone = (id, levelId, name, polygon, extra = {}) => ZoneNode.parse({ id, parentId: levelId, name, polygon, spaceRole: 'room', ...extra });
28
+ const ground = (...nodes) => scene(building(), level('level_0', 0), ...nodes);
29
+ /** A finished room on the ground floor: its walls, a door, its room zone, floor and ceiling. */
30
+ const finished = (tag, name, ring = ROOM) => [
31
+ ...wallRing('level_0', tag, ring),
32
+ roomZone(`zone_${tag}`, 'level_0', name, ring),
33
+ SlabNode.parse({ id: `slab_${tag}`, parentId: 'level_0', polygon: ring }),
34
+ CeilingNode.parse({ id: `ceiling_${tag}`, parentId: 'level_0', polygon: ring }),
35
+ ];
36
+ const living = () => finished('living', 'Living');
37
+ /** A finished storey, but nodes as a stored scene may hold them: rejected by their schema. */
38
+ const withNodes = (...extra) => ({
39
+ nodes: {
40
+ ...ground(...room('level_0', 'ground')).nodes,
41
+ ...Object.fromEntries(extra.map((node) => [node.id, node])),
42
+ },
43
+ rootNodeIds: ['building_main'],
44
+ });
45
+ /** A node of a plugin's kind no schema here knows. */
46
+ const pluginNode = (id, type) => ({
47
+ object: 'node',
48
+ id,
49
+ type,
50
+ parentId: 'level_0',
51
+ visible: true,
52
+ metadata: {},
53
+ });
54
+ const badZone = (id, fields) => ({
55
+ ...ZoneNode.parse({ id, parentId: 'level_0', name: 'Patio', polygon: rect(10, 0, 12, 2) }),
56
+ ...fields,
57
+ });
58
+ const verify = (name, build, expect) => ({
59
+ name,
60
+ tool: 'verify_scene',
61
+ scene: build,
62
+ input: {},
63
+ ...(expect.surfaces && { surfaces: expect.surfaces }),
64
+ expect: {
65
+ result: expect.result ?? {},
66
+ ...(expect.contains && { contains: { issues: expect.contains } }),
67
+ ...(expect.lacks && { lacks: { issues: expect.lacks } }),
68
+ ...(expect.mentions && { mentions: expect.mentions }),
69
+ ...(expect.check && { check: (result) => expect.check(result) }),
70
+ },
71
+ });
72
+ const issuesOf = (result, type) => result.issues.filter((issue) => issue.type === type);
73
+ export const VALIDATE_SCENE_CASES = [
74
+ verify('validate_scene {} on a valid scene ({ valid: true, errors: [], warnings: [] }): valid, no schema_invalid, no site_hidden', () => ground(...room('level_0', 'ground')), {
75
+ result: { valid: true, hasIssues: false },
76
+ lacks: [{ type: 'schema_invalid' }, { type: 'site_hidden' }],
77
+ }),
78
+ verify("validate_scene {} with a hidden site (valid, a warning on the site's visible): valid, site_hidden (info) on the site, the scene still clean", () => {
79
+ const site = SiteNode.parse({ id: 'site_lot', visible: false });
80
+ return { nodes: { [site.id]: site }, rootNodeIds: [site.id] };
81
+ }, {
82
+ result: { valid: true, hasIssues: false },
83
+ contains: [{ type: 'site_hidden', nodeId: 'site_lot', severity: 'info' }],
84
+ mentions: ['stay visible'],
85
+ }),
86
+ verify('validate_scene {} with a field its schema rejects (valid: false, the error by node and path): valid false, schema_invalid with nodeId and path', () => withNodes(badZone('zone_bad', { color: 5 })), {
87
+ result: { valid: false, hasIssues: true },
88
+ contains: [{ type: 'schema_invalid', nodeId: 'zone_bad', path: 'color' }],
89
+ mentions: ['Schema: zone_bad.color'],
90
+ }),
91
+ verify('validate_scene {} on a node with two rejected fields (one error per path): one schema_invalid per path', () => withNodes(badZone('zone_bad', { color: 5, roomNumber: 7 })), {
92
+ contains: [
93
+ { type: 'schema_invalid', nodeId: 'zone_bad', path: 'color' },
94
+ { type: 'schema_invalid', nodeId: 'zone_bad', path: 'roomNumber' },
95
+ ],
96
+ }),
97
+ verify('validate_scene {} with seven rejected nodes (all seven listed): all seven schema_invalid, where verify_scene listed five', () => withNodes(...Array.from({ length: 7 }, (_, i) => badZone(`zone_bad${i}`, { color: i }))), {
98
+ result: { valid: false },
99
+ check: (result) => {
100
+ const ids = issuesOf(result, 'schema_invalid').map((issue) => issue.nodeId);
101
+ const expected = Array.from({ length: 7 }, (_, i) => `zone_bad${i}`);
102
+ return expected.every((id) => ids.includes(id)) && ids.length === 7
103
+ ? []
104
+ : [`schema_invalid on ${ids.join(', ')}, not one on each of the seven zones`];
105
+ },
106
+ }),
107
+ // A plugin's node on a surface without the plugin: method.ts calls these expected, so they are
108
+ // named once per kind, as info, where validate_scene listed zod's whole list of kinds per node.
109
+ verify('validate_scene {} with a node of no known kind (its type rejected): schema_unknown_kind (info) names the kind and the node, and the scene stays valid', () => withNodes(pluginNode('gadget_odd', 'gadget')), {
110
+ result: { valid: true, hasIssues: false },
111
+ contains: [
112
+ {
113
+ type: 'schema_unknown_kind',
114
+ severity: 'info',
115
+ kind: 'gadget',
116
+ count: 1,
117
+ nodeIds: ['gadget_odd'],
118
+ },
119
+ ],
120
+ lacks: [{ type: 'schema_invalid' }],
121
+ }),
122
+ verify("validate_scene {} with 300 nodes of a plugin's kind (300 errors of the whole list of kinds): one schema_unknown_kind with the count and five ids, the answer small", () => withNodes(...Array.from({ length: 300 }, (_, i) => pluginNode(`beam_${i}`, 'acme:beam'))), {
123
+ result: { valid: true, hasIssues: false },
124
+ contains: [{ type: 'schema_unknown_kind', kind: 'acme:beam', count: 300 }],
125
+ check: (result) => {
126
+ const found = issuesOf(result, 'schema_unknown_kind');
127
+ const size = JSON.stringify(result).length;
128
+ return [
129
+ ...(found.length === 1 && found[0].nodeIds.length === 5
130
+ ? []
131
+ : [`${found.length} schema_unknown_kind, not one naming five of the nodes`]),
132
+ ...(size < 8_000 ? [] : [`the answer is ${size} bytes`]),
133
+ ];
134
+ },
135
+ }),
136
+ verify('validate_scene {} with a node whose type is empty (its type rejected): schema_invalid on it, no kind of that name', () => withNodes(pluginNode('wall_garbage', '')), {
137
+ result: { valid: false },
138
+ contains: [{ type: 'schema_invalid', nodeId: 'wall_garbage' }],
139
+ lacks: [{ type: 'schema_unknown_kind' }],
140
+ }),
141
+ verify("validate_scene {} with malformed geometry (a zone's polygon, a wall's start null): every error, the other checks reading around those nodes", () => {
142
+ const graph = withNodes(badZone('zone_bad', { polygon: null }));
143
+ const wall = graph.nodes.wall_ground;
144
+ graph.nodes.wall_ground = { ...wall, start: null };
145
+ return graph;
146
+ }, {
147
+ result: { valid: false, hasIssues: true },
148
+ contains: [
149
+ { type: 'schema_invalid', nodeId: 'zone_bad', path: 'polygon' },
150
+ { type: 'schema_invalid', nodeId: 'wall_ground', path: 'start' },
151
+ ],
152
+ }),
153
+ verify("validate_scene {} with a hidden site its schema rejects (the error and the hidden site's warning): schema_invalid and site_hidden on the site", () => {
154
+ const site = { ...SiteNode.parse({ id: 'site_lot', visible: false }), children: null };
155
+ return { nodes: { [site.id]: site }, rootNodeIds: [site.id] };
156
+ }, {
157
+ result: { valid: false },
158
+ contains: [
159
+ { type: 'schema_invalid', nodeId: 'site_lot', path: 'children' },
160
+ { type: 'site_hidden', nodeId: 'site_lot' },
161
+ ],
162
+ }),
163
+ verify('validate_scene {} on a level stored with no children, which its schema fills (valid): valid, the level read with none', () => {
164
+ const graph = ground();
165
+ const { children: _, ...stored } = graph.nodes.level_0;
166
+ graph.nodes.level_0 = stored;
167
+ return graph;
168
+ }, { result: { valid: true, levels: [{ levelId: 'level_0' }] } }),
169
+ // Measured around a wall it could not read, the room would read open, its door off its wall and
170
+ // the level with no door: the level waits for the fix.
171
+ verify("validate_scene {} with a finished room's wall its schema rejects (the error alone): schema_invalid on the wall, the level unread, no finding read around it", () => {
172
+ const graph = ground(...living());
173
+ graph.nodes.wall_living_0 = { ...graph.nodes.wall_living_0, thickness: 'thick' };
174
+ return graph;
175
+ }, {
176
+ result: { valid: false, levels: [{ levelId: 'level_0', unread: ['wall_living_0'] }] },
177
+ contains: [{ type: 'schema_invalid', nodeId: 'wall_living_0', path: 'thickness' }],
178
+ lacks: [
179
+ { type: 'room_not_enclosed' },
180
+ { type: 'space_no_room' },
181
+ { type: 'opening_not_on_wall' },
182
+ { type: 'walls_no_doors' },
183
+ { type: 'wall_open_end' },
184
+ ],
185
+ }),
186
+ verify("validate_scene {} with the wall a fridge stands against rejected by its schema (the error alone): no item_mid_room read around it", () => {
187
+ const graph = withNodes(ItemNode.parse({
188
+ id: 'item_fridge',
189
+ parentId: 'level_0',
190
+ position: [3.6, 0, 1.5],
191
+ asset: {
192
+ id: 'fridge',
193
+ name: 'fridge',
194
+ category: 'furniture',
195
+ thumbnail: '/items/fridge/thumbnail.webp',
196
+ src: '/items/fridge/model.glb',
197
+ dimensions: [0.7, 1.8, 0.72],
198
+ },
199
+ }));
200
+ graph.nodes.wall_ground_1 = { ...graph.nodes.wall_ground_1, thickness: 'thick' };
201
+ return graph;
202
+ }, {
203
+ result: { valid: false, levels: [{ levelId: 'level_0', unread: ['wall_ground_1'] }] },
204
+ lacks: [{ type: 'item_mid_room' }],
205
+ }),
206
+ verify("validate_scene {} with the slab a stair arrives on rejected by its schema (the error alone): no stair finding read around it", () => {
207
+ const graph = scene(building(), level('level_0', 0), level('level_1', 1), StairNode.parse({
208
+ id: 'stair_main',
209
+ parentId: 'level_0',
210
+ fromLevelId: 'level_0',
211
+ toLevelId: 'level_1',
212
+ position: [2, 0, 0],
213
+ slabOpeningMode: 'destination',
214
+ }), StairSegmentNode.parse({
215
+ id: 'sseg_main',
216
+ parentId: 'stair_main',
217
+ height: 3.8,
218
+ length: 5,
219
+ stepCount: 20,
220
+ }), SlabNode.parse({
221
+ id: 'slab_upper',
222
+ parentId: 'level_1',
223
+ polygon: rect(-2, -2, 8, 8),
224
+ plateRole: 'base',
225
+ elevation: 1,
226
+ }));
227
+ graph.nodes.slab_upper = { ...graph.nodes.slab_upper, thickness: 'thick' };
228
+ return graph;
229
+ }, {
230
+ result: { valid: false },
231
+ check: (result) => {
232
+ const stairs = result.issues.filter((issue) => issue.type.startsWith('stair_'));
233
+ return stairs.length === 0 ? [] : [`stair findings ${stairs.map((issue) => issue.type)}`];
234
+ },
235
+ }),
236
+ verify('validate_scene {} with a storey its schema rejects, the one stair on it (the error alone): schema_invalid on the level, no missing_stair read around it', () => {
237
+ const graph = scene(building(), level('level_0', 0), level('level_1', 1), level('level_2', 2), ...room('level_0', 'ground'), ...room('level_1', 'first'), ...room('level_2', 'second'), ...stairOn('level_0'));
238
+ graph.nodes.level_0 = { ...graph.nodes.level_0, height: 'tall' };
239
+ return graph;
240
+ }, {
241
+ result: { valid: false },
242
+ contains: [{ type: 'schema_invalid', nodeId: 'level_0', path: 'height' }],
243
+ lacks: [{ type: 'missing_stair' }],
244
+ }),
245
+ ];
246
+ export const CHECK_ROOMS_CASES = [
247
+ verify('check_rooms { levelId } counts ("4 walls, 1 detected spaces, 1 zones"): the level\'s content.walls, spaces and content.zones', () => ground(...living()), {
248
+ result: {
249
+ hasIssues: false,
250
+ levels: [{ levelId: 'level_0', content: { walls: 4, zones: 1 }, spaces: 1 }],
251
+ },
252
+ lacks: [
253
+ { type: 'space_no_room' },
254
+ { type: 'space_many_rooms' },
255
+ { type: 'room_not_enclosed' },
256
+ { type: 'room_unnamed' },
257
+ ],
258
+ }),
259
+ verify('check_rooms { levelId } on a space two drawn zones split beside the room the walls gave it ("space … : Room 1 + Kitchen + Dining"): space_many_rooms with the three zones', () => ground(...wallRing('level_0', 'plan', ROOM), roomZone('zone_room1', 'level_0', 'Room 1', ROOM, { autoFromWalls: true }), ZoneNode.parse({
260
+ id: 'zone_kitchen',
261
+ parentId: 'level_0',
262
+ name: 'Kitchen',
263
+ polygon: rect(0, 0, 2, 3),
264
+ }), ZoneNode.parse({
265
+ id: 'zone_dining',
266
+ parentId: 'level_0',
267
+ name: 'Dining',
268
+ polygon: rect(2, 0, 4, 3),
269
+ })), {
270
+ result: { hasIssues: true, levels: [{ levelId: 'level_0', spaces: 1 }] },
271
+ contains: [{ type: 'space_many_rooms', levelId: 'level_0' }],
272
+ check: (result) => {
273
+ const found = issuesOf(result, 'space_many_rooms');
274
+ const ids = (found[0]?.zoneIds ?? []);
275
+ return found.length === 1 &&
276
+ ids.length === 3 &&
277
+ ids.includes('zone_kitchen') &&
278
+ ids.includes('zone_dining')
279
+ ? []
280
+ : [`${found.length} space_many_rooms over ${ids.join(', ')}: one, over the three zones`];
281
+ },
282
+ }),
283
+ verify('check_rooms { levelId } on a room drawn inside the room the walls gave a space, its twin ("space … : Room 1 + Kitchen"): space_many_rooms with both', () => ground(...wallRing('level_0', 'twin', ROOM), roomZone('zone_room1', 'level_0', 'Room 1', ROOM, { autoFromWalls: true }), roomZone('zone_kitchen', 'level_0', 'Kitchen', rect(0.5, 0.5, 3.5, 2.5))), {
284
+ contains: [{ type: 'space_many_rooms', levelId: 'level_0' }],
285
+ check: (result) => {
286
+ const ids = (issuesOf(result, 'space_many_rooms')[0]?.zoneIds ?? []);
287
+ return ids.length === 2 && ids.includes('zone_kitchen')
288
+ ? []
289
+ : [`space_many_rooms over ${ids.join(', ')}: the room and its twin`];
290
+ },
291
+ }),
292
+ verify('zones no room inside a room (areas no walls bound, an open-air study) do not split the space', () => ground(...living(), ZoneNode.parse({
293
+ id: 'zone_daylight',
294
+ parentId: 'level_0',
295
+ name: 'Daylight study',
296
+ polygon: rect(1, 1, 3, 2),
297
+ hasFloor: false,
298
+ hasCeiling: false,
299
+ }), ZoneNode.parse({
300
+ id: 'zone_reading',
301
+ parentId: 'level_0',
302
+ name: 'Reading area',
303
+ polygon: rect(1, 1.2, 2, 2.2),
304
+ })), { lacks: [{ type: 'space_many_rooms' }] }),
305
+ verify('a mezzanine over its room does not split the space', () => ground(...living(), roomZone('zone_mezzanine', 'level_0', 'Mezzanine', rect(0, 0, 2, 3), {
306
+ floor: { support: 'open', elevation: 1.4 },
307
+ })), { lacks: [{ type: 'space_many_rooms' }] }),
308
+ // A store (the MCP's, the editor's) numbers a room for every space its walls enclose when it
309
+ // loads a scene, and the reconciler after every edit, so a space with no zone is a graph read as
310
+ // stored or a level mid-edit: these run on the core runner, which reads the graph as declared.
311
+ verify('check_rooms { levelId } on a space the walls enclose with no zone ("space … NO ZONE"): space_no_room with the level, its walls, area and a point in it', () => ground(...wallRing('level_0', 'bare', ROOM)), {
312
+ surfaces: ['core'],
313
+ result: { hasIssues: true, levels: [{ levelId: 'level_0', spaces: 1 }] },
314
+ contains: [{ type: 'space_no_room', levelId: 'level_0' }],
315
+ check: (result) => {
316
+ const [found] = issuesOf(result, 'space_no_room');
317
+ const walls = ['wall_bare_0', 'wall_bare_1', 'wall_bare_2', 'wall_bare_3'];
318
+ const [x, z] = found.at;
319
+ return [
320
+ ...([...found.wallIds].sort().join() === walls.join()
321
+ ? []
322
+ : [`walls ${found.wallIds}, not ${walls}`]),
323
+ ...(found.area > 10 && found.area <= 12
324
+ ? []
325
+ : [`area ${found.area} m², not the 4 × 3 m room inside its walls`]),
326
+ ...(x > 0 && x < 4 && z > 0 && z < 3 ? [] : [`(${x}, ${z}) is outside the space`]),
327
+ ];
328
+ },
329
+ }),
330
+ verify('check_rooms { levelId } on a room a new wall split in two, its zone over one half ("space … NO ZONE" for the other): space_no_room on the uncovered half only', () => ground(...wallRing('level_0', 'hall', rect(0, 0, 6, 3)), WallNode.parse({ id: 'wall_split', parentId: 'level_0', start: [3, 0], end: [3, 3] }), roomZone('zone_west', 'level_0', 'Study', rect(0, 0, 3, 3))), {
331
+ surfaces: ['core'],
332
+ result: { levels: [{ levelId: 'level_0', spaces: 2 }] },
333
+ check: (result) => {
334
+ const found = issuesOf(result, 'space_no_room');
335
+ const [x] = (found[0]?.at ?? [0, 0]);
336
+ return found.length === 1 && x > 3
337
+ ? []
338
+ : [`${found.length} space_no_room, the first at x ${x}: one, east of the new wall`];
339
+ },
340
+ }),
341
+ verify('check_rooms { levelId } on a zone its walls do not close ("zone … walls do not close around it"): room_not_enclosed on the room', () => ground(...wallRing('level_0', 'open', ROOM, true), roomZone('zone_open', 'level_0', 'Kitchen', ROOM)), {
342
+ result: { hasIssues: true, levels: [{ levelId: 'level_0', spaces: 0 }] },
343
+ contains: [{ type: 'room_not_enclosed', levelId: 'level_0', zoneId: 'zone_open' }],
344
+ mentions: ['Kitchen'],
345
+ }),
346
+ verify('check_rooms { levelId } on a zone named Room ("zone "Room" … unnamed"): room_unnamed (info) on the room', () => ground(...finished('placeholder', 'Room')), {
347
+ result: { hasIssues: false },
348
+ contains: [
349
+ { type: 'room_unnamed', levelId: 'level_0', zoneId: 'zone_placeholder', severity: 'info' },
350
+ ],
351
+ }),
352
+ verify('check_rooms { levelId } on a zone with a blank name ("zone "" … unnamed"): room_unnamed on the room', () => ground(...finished('blank', ' ')), { contains: [{ type: 'room_unnamed', zoneId: 'zone_blank' }] }),
353
+ verify('check_rooms { levelId } on an upper storey: verify_scene reads every level, the finding names its level', () => scene(building(), level('level_0', 0), level('level_1', 1), ...living(), ...wallRing('level_1', 'loft', ROOM, true), roomZone('zone_loft', 'level_1', 'Loft', ROOM)), {
354
+ contains: [{ type: 'room_not_enclosed', levelId: 'level_1', zoneId: 'zone_loft' }],
355
+ lacks: [{ type: 'room_not_enclosed', levelId: 'level_0' }],
356
+ }),
357
+ verify('check_rooms { levelId } on a room the reconciler opened when a wall went ("… walls do not close around it"): room_not_enclosed', () => ground(...wallRing('level_0', 'gone', ROOM, true), roomZone('zone_gone', 'level_0', 'Kitchen', ROOM, {
358
+ autoFromWalls: true,
359
+ enclosureStatus: 'open',
360
+ })), { contains: [{ type: 'room_not_enclosed', zoneId: 'zone_gone' }] }),
361
+ verify('check_rooms { levelId } on a zone three walls bound, left generic as set_zone draws one no room adopts ("… walls do not close around it"): room_not_enclosed, info, as it may be a courtyard', () => ground(...wallRing('level_0', 'drawn', ROOM, true), ZoneNode.parse({ id: 'zone_drawn', parentId: 'level_0', name: 'Kitchen', polygon: ROOM })), {
362
+ contains: [{ type: 'room_not_enclosed', zoneId: 'zone_drawn', severity: 'info' }],
363
+ mentions: ['a room missing a wall or a courtyard'],
364
+ }),
365
+ verify('check_rooms { levelId } on such a zone named Zone ("… walls do not close around it unnamed"): room_not_enclosed and room_unnamed', () => ground(...wallRing('level_0', 'drawn', ROOM, true), ZoneNode.parse({ id: 'zone_drawn', parentId: 'level_0', name: 'Zone', polygon: ROOM })), {
366
+ contains: [
367
+ { type: 'room_not_enclosed', zoneId: 'zone_drawn' },
368
+ { type: 'room_unnamed', zoneId: 'zone_drawn' },
369
+ ],
370
+ }),
371
+ // What check_rooms called open or unnamed and Pascal does not: a terrace closes with
372
+ // separators; a person can declare a room open; a zone no walls bound (a garden, a site or
373
+ // analysis area, one along a single house wall) is no room.
374
+ verify('a terrace closed by separators, no walls of its own, is enclosed', () => ground(...living(), ...rect(6, 0, 9, 3).map((start, i, ring) => SeparatorNode.parse({
375
+ id: `separator_terrace_${i}`,
376
+ parentId: 'level_0',
377
+ start,
378
+ end: ring[(i + 1) % ring.length],
379
+ })), roomZone('zone_terrace', 'level_0', 'Terrace', rect(6, 0, 9, 3), { hasCeiling: false })), { lacks: [{ type: 'room_not_enclosed' }, { type: 'space_no_room' }] }),
380
+ verify('a room declared open, and zones no walls bound, need no walls', () => ground(...living(), roomZone('zone_porch', 'level_0', 'Porch', rect(0, -2, 4, 0), {
381
+ enclosureStatus: 'open',
382
+ }), ZoneNode.parse({
383
+ id: 'zone_garden',
384
+ parentId: 'level_0',
385
+ name: 'Zone',
386
+ polygon: rect(6, 0, 10, 4),
387
+ }), ZoneNode.parse({
388
+ id: 'zone_yard',
389
+ parentId: 'level_0',
390
+ name: 'Yard',
391
+ polygon: rect(0, 3, 4, 7),
392
+ })), { lacks: [{ type: 'room_not_enclosed' }, { type: 'room_unnamed' }] }),
393
+ verify("a courtyard the house's rooms bound on three sides is no defect: room_not_enclosed on it is info, and the scene clean", () => ground(...finished('west', 'Living', rect(0, 0, 3, 5)), ...finished('east', 'Kitchen', rect(7, 0, 10, 5)), ...finished('north', 'Hall', rect(3, -3, 7, 0)), ZoneNode.parse({
394
+ id: 'zone_court',
395
+ parentId: 'level_0',
396
+ name: 'Courtyard',
397
+ polygon: rect(3, 0, 7, 5),
398
+ })), {
399
+ result: { hasIssues: false },
400
+ contains: [{ type: 'room_not_enclosed', zoneId: 'zone_court', severity: 'info' }],
401
+ }),
402
+ verify('a courtyard behind 0.6 m garden walls is no room', () => {
403
+ const court = rect(6, 0, 10, 3);
404
+ return ground(...living(), ...court.slice(0, -1).map((start, i) => WallNode.parse({
405
+ id: `wall_garden_${i}`,
406
+ parentId: 'level_0',
407
+ start,
408
+ end: court[i + 1],
409
+ height: 0.6,
410
+ })), ZoneNode.parse({
411
+ id: 'zone_court',
412
+ parentId: 'level_0',
413
+ name: 'Courtyard',
414
+ polygon: court,
415
+ }));
416
+ }, { lacks: [{ type: 'room_not_enclosed' }] }),
417
+ ];
@@ -1 +1 @@
1
- {"version":3,"file":"search-assets-cases.d.ts","sourceRoot":"","sources":["../../../src/agent-operations/__fixtures__/search-assets-cases.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,KAAK,EAAE,aAAa,EAAc,MAAM,SAAS,CAAA;AA2BxD,eAAO,MAAM,OAAO,EAAE,UAAU,EAM/B,CAAA;AAKD,eAAO,MAAM,mBAAmB,EAAE,aAAa,EA+G9C,CAAA"}
1
+ {"version":3,"file":"search-assets-cases.d.ts","sourceRoot":"","sources":["../../../src/agent-operations/__fixtures__/search-assets-cases.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,KAAK,EAAE,aAAa,EAAc,MAAM,SAAS,CAAA;AA2BxD,eAAO,MAAM,OAAO,EAAE,UAAU,EAM/B,CAAA;AAKD,eAAO,MAAM,mBAAmB,EAAE,aAAa,EA2H9C,CAAA"}
@@ -52,6 +52,18 @@ export const SEARCH_ASSETS_CASES = [
52
52
  },
53
53
  },
54
54
  },
55
+ {
56
+ name: 'a search that finds something says nothing of other sources',
57
+ tool: 'search_assets',
58
+ scene: noScene,
59
+ input: { queries: [{ query: 'sofa' }] },
60
+ context: library,
61
+ expect: {
62
+ result: { total: 1 },
63
+ absent: ['hint'],
64
+ check: (result) => (JSON.stringify(result).includes('add_object') ? ['names add_object'] : []),
65
+ },
66
+ },
55
67
  {
56
68
  name: 'every word of a query must match',
57
69
  tool: 'search_assets',
@@ -98,7 +110,7 @@ export const SEARCH_ASSETS_CASES = [
98
110
  },
99
111
  },
100
112
  {
101
- name: 'a fixture the library lacks points to add_object, not to a design of its own',
113
+ name: 'a fixture the library lacks names the other sources there are, as a fact',
102
114
  tool: 'search_assets',
103
115
  scene: noScene,
104
116
  input: { queries: [{ query: 'wall light' }] },
@@ -107,7 +119,7 @@ export const SEARCH_ASSETS_CASES = [
107
119
  result: {
108
120
  total: 0,
109
121
  groups: [{ query: 'wall light', total: 0, results: [] }],
110
- hint: 'Nothing in the library matches "wall light". Build what it lacks with add_object.',
122
+ hint: 'Nothing in the library matches "wall light". add_object builds an object of any shape and size, place_design places a procedural design.',
111
123
  },
112
124
  },
113
125
  },
@@ -121,7 +133,7 @@ export const SEARCH_ASSETS_CASES = [
121
133
  result: {
122
134
  total: 1,
123
135
  groups: [{ total: 1 }, { query: 'gazebo', total: 0 }, { query: 'sconce', total: 0 }],
124
- hint: 'Nothing in the library matches "gazebo", "sconce". Build what it lacks with add_object.',
136
+ hint: 'Nothing in the library matches "gazebo", "sconce". add_object builds an object of any shape and size, place_design places a procedural design.',
125
137
  },
126
138
  },
127
139
  },