@pascal-app/core 1.0.6 → 1.0.7

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 (940) hide show
  1. package/dist/agent-operations/__fixtures__/add-object-cases.d.ts +31 -0
  2. package/dist/agent-operations/__fixtures__/add-object-cases.d.ts.map +1 -1
  3. package/dist/agent-operations/__fixtures__/build-room-cases.d.ts.map +1 -1
  4. package/dist/agent-operations/__fixtures__/build-room-cases.js +27 -0
  5. package/dist/agent-operations/__fixtures__/cases.d.ts.map +1 -1
  6. package/dist/agent-operations/__fixtures__/cases.js +19 -11
  7. package/dist/agent-operations/__fixtures__/design-brief-cases.d.ts +25 -2
  8. package/dist/agent-operations/__fixtures__/design-brief-cases.d.ts.map +1 -1
  9. package/dist/agent-operations/__fixtures__/design-brief-cases.js +509 -66
  10. package/dist/agent-operations/__fixtures__/dressing-scenes.d.ts +30 -0
  11. package/dist/agent-operations/__fixtures__/dressing-scenes.d.ts.map +1 -0
  12. package/dist/agent-operations/__fixtures__/dressing-scenes.js +82 -0
  13. package/dist/agent-operations/__fixtures__/native-materials.d.ts +407 -9
  14. package/dist/agent-operations/__fixtures__/native-materials.d.ts.map +1 -1
  15. package/dist/agent-operations/__fixtures__/notation-cases.d.ts.map +1 -1
  16. package/dist/agent-operations/__fixtures__/notation-cases.js +14 -0
  17. package/dist/agent-operations/__fixtures__/roof-bearing-cases.d.ts +7253 -4053
  18. package/dist/agent-operations/__fixtures__/roof-bearing-cases.d.ts.map +1 -1
  19. package/dist/agent-operations/__fixtures__/room-cases.d.ts +1 -0
  20. package/dist/agent-operations/__fixtures__/room-cases.d.ts.map +1 -1
  21. package/dist/agent-operations/__fixtures__/room-cases.js +57 -1
  22. package/dist/agent-operations/__fixtures__/room-check-scenes.d.ts +51 -0
  23. package/dist/agent-operations/__fixtures__/room-check-scenes.d.ts.map +1 -0
  24. package/dist/agent-operations/__fixtures__/room-check-scenes.js +121 -0
  25. package/dist/agent-operations/__fixtures__/scene-check-cases.d.ts.map +1 -1
  26. package/dist/agent-operations/__fixtures__/scene-check-cases.js +152 -18
  27. package/dist/agent-operations/__fixtures__/search-assets-cases.d.ts.map +1 -1
  28. package/dist/agent-operations/__fixtures__/search-assets-cases.js +91 -0
  29. package/dist/agent-operations/__fixtures__/site-cases.d.ts +40 -1
  30. package/dist/agent-operations/__fixtures__/site-cases.d.ts.map +1 -1
  31. package/dist/agent-operations/__fixtures__/structure-cases.d.ts +3 -0
  32. package/dist/agent-operations/__fixtures__/structure-cases.d.ts.map +1 -1
  33. package/dist/agent-operations/__fixtures__/structure-cases.js +199 -18
  34. package/dist/agent-operations/__fixtures__/unit-cases.d.ts +6 -0
  35. package/dist/agent-operations/__fixtures__/unit-cases.d.ts.map +1 -0
  36. package/dist/agent-operations/__fixtures__/unit-cases.js +266 -0
  37. package/dist/agent-operations/__fixtures__/verify-scene-cases.d.ts +109 -73
  38. package/dist/agent-operations/__fixtures__/verify-scene-cases.d.ts.map +1 -1
  39. package/dist/agent-operations/add-column.d.ts.map +1 -1
  40. package/dist/agent-operations/add-column.js +32 -3
  41. package/dist/agent-operations/add-fence.d.ts.map +1 -1
  42. package/dist/agent-operations/add-fence.js +2 -1
  43. package/dist/agent-operations/add-level.d.ts.map +1 -1
  44. package/dist/agent-operations/add-level.js +4 -4
  45. package/dist/agent-operations/add-object.d.ts +32 -6
  46. package/dist/agent-operations/add-object.d.ts.map +1 -1
  47. package/dist/agent-operations/add-object.js +59 -12
  48. package/dist/agent-operations/add-wall.d.ts +3 -8
  49. package/dist/agent-operations/add-wall.d.ts.map +1 -1
  50. package/dist/agent-operations/add-wall.js +31 -8
  51. package/dist/agent-operations/apply-changes.d.ts.map +1 -1
  52. package/dist/agent-operations/apply-changes.js +2 -1
  53. package/dist/agent-operations/asset-catalog.d.ts +63 -0
  54. package/dist/agent-operations/asset-catalog.d.ts.map +1 -0
  55. package/dist/agent-operations/asset-catalog.js +182 -0
  56. package/dist/agent-operations/asset-views.d.ts +4 -2
  57. package/dist/agent-operations/asset-views.d.ts.map +1 -1
  58. package/dist/agent-operations/asset-views.js +1 -3
  59. package/dist/agent-operations/author-scene-checks.d.ts +38 -0
  60. package/dist/agent-operations/author-scene-checks.d.ts.map +1 -0
  61. package/dist/agent-operations/author-scene-checks.js +266 -0
  62. package/dist/agent-operations/author-scene.d.ts +54 -20
  63. package/dist/agent-operations/author-scene.d.ts.map +1 -1
  64. package/dist/agent-operations/author-scene.js +1164 -196
  65. package/dist/agent-operations/authored-scene-merge.d.ts.map +1 -1
  66. package/dist/agent-operations/authored-scene-merge.js +61 -3
  67. package/dist/agent-operations/batch.d.ts +1 -1
  68. package/dist/agent-operations/batch.d.ts.map +1 -1
  69. package/dist/agent-operations/batch.js +38 -39
  70. package/dist/agent-operations/ceiling-object-observations.d.ts.map +1 -1
  71. package/dist/agent-operations/ceiling-object-observations.js +5 -4
  72. package/dist/agent-operations/circulation-geometry.d.ts +14 -0
  73. package/dist/agent-operations/circulation-geometry.d.ts.map +1 -0
  74. package/dist/agent-operations/circulation-geometry.js +151 -0
  75. package/dist/agent-operations/circulation-graph.d.ts +72 -0
  76. package/dist/agent-operations/circulation-graph.d.ts.map +1 -0
  77. package/dist/agent-operations/circulation-graph.js +713 -0
  78. package/dist/agent-operations/circulation-non-spaces.d.ts +10 -0
  79. package/dist/agent-operations/circulation-non-spaces.d.ts.map +1 -0
  80. package/dist/agent-operations/circulation-non-spaces.js +88 -0
  81. package/dist/agent-operations/circulation-spaces.d.ts +5880 -0
  82. package/dist/agent-operations/circulation-spaces.d.ts.map +1 -0
  83. package/dist/agent-operations/circulation-spaces.js +368 -0
  84. package/dist/agent-operations/collections.d.ts.map +1 -1
  85. package/dist/agent-operations/collections.js +9 -7
  86. package/dist/agent-operations/corner-window.d.ts.map +1 -1
  87. package/dist/agent-operations/corner-window.js +2 -4
  88. package/dist/agent-operations/create-roof.d.ts.map +1 -1
  89. package/dist/agent-operations/create-roof.js +5 -7
  90. package/dist/agent-operations/create-room.d.ts +4 -1
  91. package/dist/agent-operations/create-room.d.ts.map +1 -1
  92. package/dist/agent-operations/create-room.js +7 -4
  93. package/dist/agent-operations/create-stair.js +2 -2
  94. package/dist/agent-operations/design-brief.d.ts +13 -7
  95. package/dist/agent-operations/design-brief.d.ts.map +1 -1
  96. package/dist/agent-operations/design-brief.js +172 -92
  97. package/dist/agent-operations/door-clearance.d.ts +68 -8
  98. package/dist/agent-operations/door-clearance.d.ts.map +1 -1
  99. package/dist/agent-operations/door-clearance.js +127 -20
  100. package/dist/agent-operations/dress-targets.d.ts +23 -0
  101. package/dist/agent-operations/dress-targets.d.ts.map +1 -0
  102. package/dist/agent-operations/dress-targets.js +34 -0
  103. package/dist/agent-operations/duplicate-node.d.ts +14 -0
  104. package/dist/agent-operations/duplicate-node.d.ts.map +1 -0
  105. package/dist/agent-operations/duplicate-node.js +173 -0
  106. package/dist/agent-operations/find-by-type.d.ts.map +1 -1
  107. package/dist/agent-operations/find-by-type.js +3 -0
  108. package/dist/agent-operations/furnish-room.d.ts +2 -0
  109. package/dist/agent-operations/furnish-room.d.ts.map +1 -1
  110. package/dist/agent-operations/furnish-room.js +15 -4
  111. package/dist/agent-operations/furniture-kind.d.ts +28 -1
  112. package/dist/agent-operations/furniture-kind.d.ts.map +1 -1
  113. package/dist/agent-operations/furniture-kind.js +105 -6
  114. package/dist/agent-operations/ground-reader.d.ts +10 -0
  115. package/dist/agent-operations/ground-reader.d.ts.map +1 -0
  116. package/dist/agent-operations/ground-reader.js +25 -0
  117. package/dist/agent-operations/index.d.ts +118 -12
  118. package/dist/agent-operations/index.d.ts.map +1 -1
  119. package/dist/agent-operations/index.js +26 -1
  120. package/dist/agent-operations/item-solids.d.ts +39 -0
  121. package/dist/agent-operations/item-solids.d.ts.map +1 -0
  122. package/dist/agent-operations/item-solids.js +128 -0
  123. package/dist/agent-operations/layout-clearance.d.ts +91 -11
  124. package/dist/agent-operations/layout-clearance.d.ts.map +1 -1
  125. package/dist/agent-operations/layout-clearance.js +280 -73
  126. package/dist/agent-operations/level-height-fill.d.ts.map +1 -1
  127. package/dist/agent-operations/level-height-fill.js +7 -1
  128. package/dist/agent-operations/level-reads.d.ts +5 -0
  129. package/dist/agent-operations/level-reads.d.ts.map +1 -1
  130. package/dist/agent-operations/level-reads.js +38 -2
  131. package/dist/agent-operations/list-levels.d.ts.map +1 -1
  132. package/dist/agent-operations/list-levels.js +2 -4
  133. package/dist/agent-operations/move-node.d.ts +12 -0
  134. package/dist/agent-operations/move-node.d.ts.map +1 -0
  135. package/dist/agent-operations/move-node.js +28 -0
  136. package/dist/agent-operations/move-plan.d.ts +28 -0
  137. package/dist/agent-operations/move-plan.d.ts.map +1 -0
  138. package/dist/agent-operations/move-plan.js +257 -0
  139. package/dist/agent-operations/node-patch.d.ts.map +1 -1
  140. package/dist/agent-operations/node-patch.js +15 -0
  141. package/dist/agent-operations/paint.d.ts +3 -1
  142. package/dist/agent-operations/paint.d.ts.map +1 -1
  143. package/dist/agent-operations/paint.js +14 -1
  144. package/dist/agent-operations/photo-elevation.d.ts.map +1 -1
  145. package/dist/agent-operations/photo-elevation.js +2 -1
  146. package/dist/agent-operations/place-in-room.d.ts.map +1 -1
  147. package/dist/agent-operations/place-in-room.js +1 -0
  148. package/dist/agent-operations/place-items.d.ts.map +1 -1
  149. package/dist/agent-operations/place-items.js +3 -4
  150. package/dist/agent-operations/plan-clearance.d.ts +28 -0
  151. package/dist/agent-operations/plan-clearance.d.ts.map +1 -0
  152. package/dist/agent-operations/plan-clearance.js +47 -0
  153. package/dist/agent-operations/plan-geometry.d.ts +2 -0
  154. package/dist/agent-operations/plan-geometry.d.ts.map +1 -1
  155. package/dist/agent-operations/plan-geometry.js +10 -0
  156. package/dist/agent-operations/project-files.d.ts +10 -0
  157. package/dist/agent-operations/project-files.d.ts.map +1 -1
  158. package/dist/agent-operations/reachability.d.ts +41 -0
  159. package/dist/agent-operations/reachability.d.ts.map +1 -0
  160. package/dist/agent-operations/reachability.js +199 -0
  161. package/dist/agent-operations/room-checks.d.ts +60 -0
  162. package/dist/agent-operations/room-checks.d.ts.map +1 -0
  163. package/dist/agent-operations/room-checks.js +226 -0
  164. package/dist/agent-operations/room-faces.d.ts +30 -0
  165. package/dist/agent-operations/room-faces.d.ts.map +1 -0
  166. package/dist/agent-operations/room-faces.js +31 -0
  167. package/dist/agent-operations/room-findings.d.ts +5 -2
  168. package/dist/agent-operations/room-findings.d.ts.map +1 -1
  169. package/dist/agent-operations/room-findings.js +30 -0
  170. package/dist/agent-operations/room-finishes.d.ts +87 -0
  171. package/dist/agent-operations/room-finishes.d.ts.map +1 -0
  172. package/dist/agent-operations/room-finishes.js +193 -0
  173. package/dist/agent-operations/room-floor-script.d.ts +3 -3
  174. package/dist/agent-operations/room-floor-script.js +3 -3
  175. package/dist/agent-operations/room-readings.d.ts +90 -0
  176. package/dist/agent-operations/room-readings.d.ts.map +1 -0
  177. package/dist/agent-operations/room-readings.js +369 -0
  178. package/dist/agent-operations/room-tile.d.ts +15 -0
  179. package/dist/agent-operations/room-tile.d.ts.map +1 -0
  180. package/dist/agent-operations/room-tile.js +30 -0
  181. package/dist/agent-operations/room-wet.d.ts +55 -0
  182. package/dist/agent-operations/room-wet.d.ts.map +1 -0
  183. package/dist/agent-operations/room-wet.js +203 -0
  184. package/dist/agent-operations/scene-check-policy.d.ts +5 -0
  185. package/dist/agent-operations/scene-check-policy.d.ts.map +1 -0
  186. package/dist/agent-operations/scene-check-policy.js +24 -0
  187. package/dist/agent-operations/scene-checkpoint.d.ts +10 -0
  188. package/dist/agent-operations/scene-checkpoint.d.ts.map +1 -1
  189. package/dist/agent-operations/scene-checkpoint.js +31 -0
  190. package/dist/agent-operations/scene-issue-groups.d.ts +17 -0
  191. package/dist/agent-operations/scene-issue-groups.d.ts.map +1 -0
  192. package/dist/agent-operations/scene-issue-groups.js +71 -0
  193. package/dist/agent-operations/scene-materials.d.ts +23 -0
  194. package/dist/agent-operations/scene-materials.d.ts.map +1 -1
  195. package/dist/agent-operations/scene-materials.js +41 -0
  196. package/dist/agent-operations/scene-queries.d.ts +1667 -866
  197. package/dist/agent-operations/scene-queries.d.ts.map +1 -1
  198. package/dist/agent-operations/scene-queries.js +3 -3
  199. package/dist/agent-operations/scene-review.d.ts.map +1 -1
  200. package/dist/agent-operations/scene-review.js +3 -2
  201. package/dist/agent-operations/scene-view.d.ts.map +1 -1
  202. package/dist/agent-operations/scene-view.js +91 -21
  203. package/dist/agent-operations/search-assets.d.ts +10 -6
  204. package/dist/agent-operations/search-assets.d.ts.map +1 -1
  205. package/dist/agent-operations/search-assets.js +37 -22
  206. package/dist/agent-operations/set-checkpoint.d.ts.map +1 -1
  207. package/dist/agent-operations/set-checkpoint.js +1 -0
  208. package/dist/agent-operations/set-ground-level.d.ts +1 -1
  209. package/dist/agent-operations/set-ground-level.d.ts.map +1 -1
  210. package/dist/agent-operations/set-ground-level.js +3 -14
  211. package/dist/agent-operations/site.js +3 -2
  212. package/dist/agent-operations/slab-surface-script.d.ts +25 -0
  213. package/dist/agent-operations/slab-surface-script.d.ts.map +1 -0
  214. package/dist/agent-operations/slab-surface-script.js +60 -0
  215. package/dist/agent-operations/stair-plan-footprint.d.ts +9 -0
  216. package/dist/agent-operations/stair-plan-footprint.d.ts.map +1 -0
  217. package/dist/agent-operations/stair-plan-footprint.js +50 -0
  218. package/dist/agent-operations/types.d.ts +10 -5
  219. package/dist/agent-operations/types.d.ts.map +1 -1
  220. package/dist/agent-operations/units.d.ts +26 -0
  221. package/dist/agent-operations/units.d.ts.map +1 -0
  222. package/dist/agent-operations/units.js +110 -0
  223. package/dist/agent-operations/unreachable-rooms-check.d.ts +17 -0
  224. package/dist/agent-operations/unreachable-rooms-check.d.ts.map +1 -0
  225. package/dist/agent-operations/unreachable-rooms-check.js +35 -0
  226. package/dist/agent-operations/usage-checks.d.ts +2 -0
  227. package/dist/agent-operations/usage-checks.d.ts.map +1 -0
  228. package/dist/agent-operations/usage-checks.js +12 -0
  229. package/dist/agent-operations/verify-scene.d.ts +8 -11
  230. package/dist/agent-operations/verify-scene.d.ts.map +1 -1
  231. package/dist/agent-operations/verify-scene.js +55 -11
  232. package/dist/agent-operations/wall-face-defaults.d.ts +44 -0
  233. package/dist/agent-operations/wall-face-defaults.d.ts.map +1 -0
  234. package/dist/agent-operations/wall-face-defaults.js +229 -0
  235. package/dist/agent-operations/wall-joins.d.ts +119 -0
  236. package/dist/agent-operations/wall-joins.d.ts.map +1 -0
  237. package/dist/agent-operations/wall-joins.js +308 -0
  238. package/dist/agent-operations/wall-object-observations.d.ts.map +1 -1
  239. package/dist/agent-operations/wall-object-observations.js +4 -6
  240. package/dist/agent-operations/wall-skirting.d.ts.map +1 -1
  241. package/dist/agent-operations/wall-skirting.js +2 -0
  242. package/dist/agent-operations/wall-type.d.ts +49 -0
  243. package/dist/agent-operations/wall-type.d.ts.map +1 -0
  244. package/dist/agent-operations/wall-type.js +31 -0
  245. package/dist/agent-operations/zone-coverage.d.ts +85 -0
  246. package/dist/agent-operations/zone-coverage.d.ts.map +1 -0
  247. package/dist/agent-operations/zone-coverage.js +208 -0
  248. package/dist/agent-tools/add-object.d.ts +31 -0
  249. package/dist/agent-tools/add-object.d.ts.map +1 -1
  250. package/dist/agent-tools/add-object.js +44 -7
  251. package/dist/agent-tools/assets.d.ts +4 -0
  252. package/dist/agent-tools/assets.d.ts.map +1 -1
  253. package/dist/agent-tools/assets.js +11 -1
  254. package/dist/agent-tools/author-scene.d.ts +810 -15
  255. package/dist/agent-tools/author-scene.d.ts.map +1 -1
  256. package/dist/agent-tools/author-scene.js +275 -34
  257. package/dist/agent-tools/batch.d.ts +1 -1
  258. package/dist/agent-tools/batch.d.ts.map +1 -1
  259. package/dist/agent-tools/batch.js +5 -1
  260. package/dist/agent-tools/checkpoints.js +1 -1
  261. package/dist/agent-tools/columns.d.ts +14 -0
  262. package/dist/agent-tools/columns.d.ts.map +1 -1
  263. package/dist/agent-tools/columns.js +14 -2
  264. package/dist/agent-tools/contract.d.ts +10 -0
  265. package/dist/agent-tools/contract.d.ts.map +1 -1
  266. package/dist/agent-tools/contract.js +5 -1
  267. package/dist/agent-tools/corner-window.d.ts +1 -0
  268. package/dist/agent-tools/corner-window.d.ts.map +1 -1
  269. package/dist/agent-tools/corner-window.js +1 -1
  270. package/dist/agent-tools/create-room.d.ts +85 -0
  271. package/dist/agent-tools/create-room.d.ts.map +1 -1
  272. package/dist/agent-tools/create-room.js +8 -1
  273. package/dist/agent-tools/design-brief.d.ts +513 -7
  274. package/dist/agent-tools/design-brief.d.ts.map +1 -1
  275. package/dist/agent-tools/design-brief.js +192 -14
  276. package/dist/agent-tools/designs.js +1 -1
  277. package/dist/agent-tools/find-by-type.js +1 -1
  278. package/dist/agent-tools/index.d.ts +658 -10
  279. package/dist/agent-tools/index.d.ts.map +1 -1
  280. package/dist/agent-tools/index.js +9 -1
  281. package/dist/agent-tools/levels.js +4 -4
  282. package/dist/agent-tools/move-duplicate.d.ts +65 -0
  283. package/dist/agent-tools/move-duplicate.d.ts.map +1 -0
  284. package/dist/agent-tools/move-duplicate.js +68 -0
  285. package/dist/agent-tools/paint.d.ts +6 -0
  286. package/dist/agent-tools/paint.d.ts.map +1 -1
  287. package/dist/agent-tools/paint.js +7 -3
  288. package/dist/agent-tools/photo-elevation.js +1 -1
  289. package/dist/agent-tools/project-files.d.ts +2 -2
  290. package/dist/agent-tools/project-files.d.ts.map +1 -1
  291. package/dist/agent-tools/project-files.js +1 -1
  292. package/dist/agent-tools/refusal.d.ts +9 -1
  293. package/dist/agent-tools/refusal.d.ts.map +1 -1
  294. package/dist/agent-tools/refusal.js +5 -1
  295. package/dist/agent-tools/roofs.js +1 -1
  296. package/dist/agent-tools/room-structure.d.ts +60 -0
  297. package/dist/agent-tools/room-structure.d.ts.map +1 -1
  298. package/dist/agent-tools/room-structure.js +20 -1
  299. package/dist/agent-tools/search-materials.d.ts +1 -0
  300. package/dist/agent-tools/search-materials.d.ts.map +1 -1
  301. package/dist/agent-tools/site.js +1 -1
  302. package/dist/agent-tools/stairs.js +1 -1
  303. package/dist/agent-tools/units.d.ts +84 -0
  304. package/dist/agent-tools/units.d.ts.map +1 -0
  305. package/dist/agent-tools/units.js +54 -0
  306. package/dist/agent-tools/verify-scene-usage.d.ts +44 -0
  307. package/dist/agent-tools/verify-scene-usage.d.ts.map +1 -0
  308. package/dist/agent-tools/verify-scene-usage.js +146 -0
  309. package/dist/agent-tools/verify-scene.d.ts +12 -1
  310. package/dist/agent-tools/verify-scene.d.ts.map +1 -1
  311. package/dist/agent-tools/verify-scene.js +183 -3
  312. package/dist/agent-tools/view-scene.d.ts +3 -0
  313. package/dist/agent-tools/view-scene.d.ts.map +1 -1
  314. package/dist/agent-tools/view-scene.js +4 -1
  315. package/dist/agent-tools/wall-openings.d.ts +121 -2
  316. package/dist/agent-tools/wall-openings.d.ts.map +1 -1
  317. package/dist/agent-tools/wall-openings.js +123 -18
  318. package/dist/agent-tools/walls.d.ts +30 -0
  319. package/dist/agent-tools/walls.d.ts.map +1 -1
  320. package/dist/agent-tools/walls.js +54 -2
  321. package/dist/building/__fixtures__/wall-opening-cases.d.ts +340 -195
  322. package/dist/building/__fixtures__/wall-opening-cases.d.ts.map +1 -1
  323. package/dist/building/__fixtures__/wall-opening-cases.js +13 -0
  324. package/dist/building/code-profile.d.ts +231 -0
  325. package/dist/building/code-profile.d.ts.map +1 -0
  326. package/dist/building/code-profile.js +208 -0
  327. package/dist/building/corner-window.d.ts +2 -2
  328. package/dist/building/corner-window.d.ts.map +1 -1
  329. package/dist/building/corner-window.js +11 -2
  330. package/dist/building/door-types.d.ts +1 -0
  331. package/dist/building/door-types.d.ts.map +1 -1
  332. package/dist/building/door-types.js +2 -0
  333. package/dist/building/floor-item-fit.d.ts.map +1 -1
  334. package/dist/building/floor-item-fit.js +2 -4
  335. package/dist/building/ground-level.d.ts +1 -3
  336. package/dist/building/ground-level.d.ts.map +1 -1
  337. package/dist/building/ground-level.js +3 -5
  338. package/dist/building/index.d.ts +2 -0
  339. package/dist/building/index.d.ts.map +1 -1
  340. package/dist/building/index.js +2 -0
  341. package/dist/building/level-duplication.d.ts +5951 -4351
  342. package/dist/building/level-duplication.d.ts.map +1 -1
  343. package/dist/building/level-insertion.d.ts +1 -1
  344. package/dist/building/level-wall-copy.d.ts +24 -0
  345. package/dist/building/level-wall-copy.d.ts.map +1 -0
  346. package/dist/building/level-wall-copy.js +53 -0
  347. package/dist/building/merge-windows.d.ts.map +1 -1
  348. package/dist/building/merge-windows.js +1 -0
  349. package/dist/building/opening-style-presets.d.ts +2 -0
  350. package/dist/building/opening-style-presets.d.ts.map +1 -1
  351. package/dist/building/opening-style-presets.js +26 -5
  352. package/dist/building/room-use.d.ts +26 -0
  353. package/dist/building/room-use.d.ts.map +1 -0
  354. package/dist/building/room-use.js +102 -0
  355. package/dist/building/wall-openings.d.ts +115 -7
  356. package/dist/building/wall-openings.d.ts.map +1 -1
  357. package/dist/building/wall-openings.js +121 -29
  358. package/dist/building/window-types.d.ts +1 -0
  359. package/dist/building/window-types.d.ts.map +1 -1
  360. package/dist/building/window-types.js +3 -0
  361. package/dist/coherence/__fixtures__/enclosure-scenes.d.ts +84 -0
  362. package/dist/coherence/__fixtures__/enclosure-scenes.d.ts.map +1 -0
  363. package/dist/coherence/__fixtures__/enclosure-scenes.js +44 -0
  364. package/dist/commands/structure/attached-walls.d.ts +16 -0
  365. package/dist/commands/structure/attached-walls.d.ts.map +1 -0
  366. package/dist/commands/structure/attached-walls.js +53 -0
  367. package/dist/commands/structure/index.d.ts +3 -0
  368. package/dist/commands/structure/index.d.ts.map +1 -1
  369. package/dist/commands/structure/index.js +3 -0
  370. package/dist/commands/structure/move-separators.d.ts +62 -0
  371. package/dist/commands/structure/move-separators.d.ts.map +1 -0
  372. package/dist/commands/structure/move-separators.js +346 -0
  373. package/dist/commands/structure/set-floor-foundation.d.ts +5 -0
  374. package/dist/commands/structure/set-floor-foundation.d.ts.map +1 -1
  375. package/dist/commands/structure/set-wall-geometry.d.ts.map +1 -1
  376. package/dist/commands/structure/set-wall-geometry.js +44 -11
  377. package/dist/commands/structure/set-zone-intent.d.ts +26 -0
  378. package/dist/commands/structure/set-zone-intent.d.ts.map +1 -1
  379. package/dist/commands/structure/set-zone-intent.js +107 -2
  380. package/dist/commands/structure/shared.d.ts +888 -88
  381. package/dist/commands/structure/shared.d.ts.map +1 -1
  382. package/dist/commands/structure/wall-overlap.d.ts +45 -0
  383. package/dist/commands/structure/wall-overlap.d.ts.map +1 -0
  384. package/dist/commands/structure/wall-overlap.js +289 -0
  385. package/dist/commands/structure/zone-wall-merge.d.ts +3326 -2370
  386. package/dist/commands/structure/zone-wall-merge.d.ts.map +1 -1
  387. package/dist/contracts/reference-discovery.d.ts +2 -2
  388. package/dist/contracts/reference-discovery.d.ts.map +1 -1
  389. package/dist/contracts/reference-discovery.js +5 -3
  390. package/dist/contracts/reference-inventory.d.ts.map +1 -1
  391. package/dist/contracts/reference-inventory.js +75 -24
  392. package/dist/events/bus.d.ts +15 -2
  393. package/dist/events/bus.d.ts.map +1 -1
  394. package/dist/hooks/spatial-grid/built-in-floor-placed.d.ts +40 -0
  395. package/dist/hooks/spatial-grid/built-in-floor-placed.d.ts.map +1 -0
  396. package/dist/hooks/spatial-grid/built-in-floor-placed.js +220 -0
  397. package/dist/hooks/spatial-grid/floor-placed-elevation.d.ts.map +1 -1
  398. package/dist/hooks/spatial-grid/floor-placed-elevation.js +13 -7
  399. package/dist/hooks/spatial-grid/spatial-grid-manager.d.ts +56 -1
  400. package/dist/hooks/spatial-grid/spatial-grid-manager.d.ts.map +1 -1
  401. package/dist/hooks/spatial-grid/spatial-grid-manager.js +177 -27
  402. package/dist/hooks/spatial-grid/spatial-grid-sync.d.ts +1631 -831
  403. package/dist/hooks/spatial-grid/spatial-grid-sync.d.ts.map +1 -1
  404. package/dist/hooks/spatial-grid/spatial-grid-sync.js +24 -1
  405. package/dist/hooks/spatial-grid/support-host-patch.js +10 -10
  406. package/dist/i18n/format.d.ts +41 -0
  407. package/dist/i18n/format.d.ts.map +1 -0
  408. package/dist/i18n/format.js +124 -0
  409. package/dist/i18n/index.d.ts +5 -0
  410. package/dist/i18n/index.d.ts.map +1 -0
  411. package/dist/i18n/index.js +3 -0
  412. package/dist/i18n/registry.d.ts +78 -0
  413. package/dist/i18n/registry.d.ts.map +1 -0
  414. package/dist/i18n/registry.js +252 -0
  415. package/dist/i18n/use-translate.d.ts +16 -0
  416. package/dist/i18n/use-translate.d.ts.map +1 -0
  417. package/dist/i18n/use-translate.js +23 -0
  418. package/dist/index.d.ts +32 -16
  419. package/dist/index.d.ts.map +1 -1
  420. package/dist/index.js +31 -15
  421. package/dist/lib/__fixtures__/mezzanine.d.ts +6840 -4169
  422. package/dist/lib/__fixtures__/mezzanine.d.ts.map +1 -1
  423. package/dist/lib/absorb-wall-separators.d.ts +2128 -1328
  424. package/dist/lib/absorb-wall-separators.d.ts.map +1 -1
  425. package/dist/lib/beam.d.ts +137 -0
  426. package/dist/lib/beam.d.ts.map +1 -0
  427. package/dist/lib/beam.js +297 -0
  428. package/dist/lib/below-grade-footprints.d.ts +13 -5
  429. package/dist/lib/below-grade-footprints.d.ts.map +1 -1
  430. package/dist/lib/below-grade-footprints.js +53 -10
  431. package/dist/lib/build-up.d.ts +89 -0
  432. package/dist/lib/build-up.d.ts.map +1 -0
  433. package/dist/lib/build-up.js +216 -0
  434. package/dist/lib/corner-pair.d.ts +205 -4
  435. package/dist/lib/corner-pair.d.ts.map +1 -1
  436. package/dist/lib/deck-boards.d.ts +80 -0
  437. package/dist/lib/deck-boards.d.ts.map +1 -0
  438. package/dist/lib/deck-boards.js +184 -0
  439. package/dist/lib/deck-framing.d.ts +150 -0
  440. package/dist/lib/deck-framing.d.ts.map +1 -0
  441. package/dist/lib/deck-framing.js +515 -0
  442. package/dist/lib/deepest-drawn.d.ts +3 -6
  443. package/dist/lib/deepest-drawn.d.ts.map +1 -1
  444. package/dist/lib/deepest-drawn.js +4 -8
  445. package/dist/lib/door-opening.d.ts +19 -0
  446. package/dist/lib/door-opening.d.ts.map +1 -0
  447. package/dist/lib/door-opening.js +27 -0
  448. package/dist/lib/door-operation.d.ts +2 -0
  449. package/dist/lib/door-operation.d.ts.map +1 -1
  450. package/dist/lib/door-operation.js +4 -0
  451. package/dist/lib/exterior-wall-loops.d.ts.map +1 -1
  452. package/dist/lib/exterior-wall-loops.js +2 -1
  453. package/dist/lib/finish-script.d.ts +5 -5
  454. package/dist/lib/finish-script.d.ts.map +1 -1
  455. package/dist/lib/finish-script.js +12 -5
  456. package/dist/lib/floor-footprint-name.d.ts +17 -0
  457. package/dist/lib/floor-footprint-name.d.ts.map +1 -1
  458. package/dist/lib/floor-footprint-name.js +17 -4
  459. package/dist/lib/floor-intent-changes.d.ts.map +1 -1
  460. package/dist/lib/floor-intent-changes.js +60 -35
  461. package/dist/lib/floor-opening-footprints.d.ts +1 -1
  462. package/dist/lib/floor-opening-footprints.d.ts.map +1 -1
  463. package/dist/lib/floor-opening-footprints.js +10 -4
  464. package/dist/lib/floor-plate-paint.d.ts +2 -0
  465. package/dist/lib/floor-plate-paint.d.ts.map +1 -1
  466. package/dist/lib/floor-plate-paint.js +12 -0
  467. package/dist/lib/floor-plates.d.ts +250 -0
  468. package/dist/lib/floor-plates.d.ts.map +1 -1
  469. package/dist/lib/floor-plates.js +43 -4
  470. package/dist/lib/floor-script.d.ts +35 -6
  471. package/dist/lib/floor-script.d.ts.map +1 -1
  472. package/dist/lib/floor-script.js +96 -16
  473. package/dist/lib/foundation-construction.d.ts +4 -13
  474. package/dist/lib/foundation-construction.d.ts.map +1 -1
  475. package/dist/lib/foundation-construction.js +4 -14
  476. package/dist/lib/foundation-standard.d.ts +2 -3
  477. package/dist/lib/foundation-standard.d.ts.map +1 -1
  478. package/dist/lib/foundation-standard.js +2 -3
  479. package/dist/lib/foundation-wall.d.ts +1 -2
  480. package/dist/lib/foundation-wall.d.ts.map +1 -1
  481. package/dist/lib/foundation-wall.js +1 -2
  482. package/dist/lib/framing-post.d.ts +91 -0
  483. package/dist/lib/framing-post.d.ts.map +1 -0
  484. package/dist/lib/framing-post.js +174 -0
  485. package/dist/lib/geometry-script-node.d.ts +11 -0
  486. package/dist/lib/geometry-script-node.d.ts.map +1 -1
  487. package/dist/lib/geometry-script-node.js +35 -0
  488. package/dist/lib/grade-standing.d.ts +16 -2
  489. package/dist/lib/grade-standing.d.ts.map +1 -1
  490. package/dist/lib/grade-standing.js +129 -9
  491. package/dist/lib/ground-seat.d.ts +2 -22
  492. package/dist/lib/ground-seat.d.ts.map +1 -1
  493. package/dist/lib/ground-seat.js +2 -17
  494. package/dist/lib/ground-window.d.ts +2 -1
  495. package/dist/lib/ground-window.d.ts.map +1 -1
  496. package/dist/lib/ground-window.js +5 -2
  497. package/dist/lib/level-footprints.d.ts +2 -0
  498. package/dist/lib/level-footprints.d.ts.map +1 -1
  499. package/dist/lib/level-footprints.js +7 -0
  500. package/dist/lib/opening-casing.d.ts +67 -0
  501. package/dist/lib/opening-casing.d.ts.map +1 -0
  502. package/dist/lib/opening-casing.js +131 -0
  503. package/dist/lib/opening-exterior-face.d.ts +6 -0
  504. package/dist/lib/opening-exterior-face.d.ts.map +1 -0
  505. package/dist/lib/opening-exterior-face.js +15 -0
  506. package/dist/lib/opening-floor-datum.d.ts +11 -5
  507. package/dist/lib/opening-floor-datum.d.ts.map +1 -1
  508. package/dist/lib/opening-floor-datum.js +38 -6
  509. package/dist/lib/opening-frame-depth.d.ts +18 -0
  510. package/dist/lib/opening-frame-depth.d.ts.map +1 -0
  511. package/dist/lib/opening-frame-depth.js +22 -0
  512. package/dist/lib/outdoor-room.d.ts +32 -0
  513. package/dist/lib/outdoor-room.d.ts.map +1 -0
  514. package/dist/lib/outdoor-room.js +66 -0
  515. package/dist/lib/plate-surface.d.ts +8 -0
  516. package/dist/lib/plate-surface.d.ts.map +1 -1
  517. package/dist/lib/plate-surface.js +53 -3
  518. package/dist/lib/porch-framing-sync.d.ts +46 -0
  519. package/dist/lib/porch-framing-sync.d.ts.map +1 -0
  520. package/dist/lib/porch-framing-sync.js +206 -0
  521. package/dist/lib/porch-framing.d.ts +44 -0
  522. package/dist/lib/porch-framing.d.ts.map +1 -0
  523. package/dist/lib/porch-framing.js +159 -0
  524. package/dist/lib/railing-rooms.d.ts +13 -0
  525. package/dist/lib/railing-rooms.d.ts.map +1 -0
  526. package/dist/lib/railing-rooms.js +37 -0
  527. package/dist/lib/roof-eave.d.ts +135 -0
  528. package/dist/lib/roof-eave.d.ts.map +1 -0
  529. package/dist/lib/roof-eave.js +186 -0
  530. package/dist/lib/room-floor-plate.d.ts +3 -1
  531. package/dist/lib/room-floor-plate.d.ts.map +1 -1
  532. package/dist/lib/room-floor-plate.js +7 -0
  533. package/dist/lib/space-detection.d.ts +13 -0
  534. package/dist/lib/space-detection.d.ts.map +1 -1
  535. package/dist/lib/space-detection.js +112 -24
  536. package/dist/lib/structure-kernel.d.ts +22 -9
  537. package/dist/lib/structure-kernel.d.ts.map +1 -1
  538. package/dist/lib/structure-kernel.js +146 -28
  539. package/dist/lib/structure-reconcile.d.ts +1 -1
  540. package/dist/lib/structure-reconcile.d.ts.map +1 -1
  541. package/dist/lib/structure-reconcile.js +7 -4
  542. package/dist/lib/surface-intent.d.ts +10 -0
  543. package/dist/lib/surface-intent.d.ts.map +1 -0
  544. package/dist/lib/surface-intent.js +18 -0
  545. package/dist/lib/terrain-source.d.ts.map +1 -1
  546. package/dist/lib/terrain-source.js +2 -1
  547. package/dist/lib/wall-face-script.d.ts.map +1 -1
  548. package/dist/lib/wall-face-script.js +5 -2
  549. package/dist/material-kinds.d.ts +1 -1
  550. package/dist/material-kinds.d.ts.map +1 -1
  551. package/dist/material-kinds.js +1 -0
  552. package/dist/material-library.d.ts +15 -0
  553. package/dist/material-library.d.ts.map +1 -1
  554. package/dist/material-library.js +458 -59
  555. package/dist/node-slots/door.d.ts +3 -4
  556. package/dist/node-slots/door.d.ts.map +1 -1
  557. package/dist/node-slots/door.js +4 -3
  558. package/dist/node-slots/wall.d.ts.map +1 -1
  559. package/dist/node-slots/wall.js +21 -3
  560. package/dist/node-slots/window.d.ts +2 -2
  561. package/dist/node-slots/window.d.ts.map +1 -1
  562. package/dist/node-slots/window.js +6 -1
  563. package/dist/procedural-items/design.d.ts +8 -0
  564. package/dist/procedural-items/design.d.ts.map +1 -1
  565. package/dist/procedural-items/design.js +169 -21
  566. package/dist/procedural-items/motion-controller.d.ts +2 -0
  567. package/dist/procedural-items/motion-controller.d.ts.map +1 -1
  568. package/dist/procedural-items/motion-controller.js +2 -1
  569. package/dist/registry/index.d.ts +2 -2
  570. package/dist/registry/index.d.ts.map +1 -1
  571. package/dist/registry/index.js +1 -1
  572. package/dist/registry/mechanism.d.ts +4 -1
  573. package/dist/registry/mechanism.d.ts.map +1 -1
  574. package/dist/registry/mechanism.js +10 -0
  575. package/dist/registry/types.d.ts +65 -23
  576. package/dist/registry/types.d.ts.map +1 -1
  577. package/dist/runtime/__fixtures__/live-scene.d.ts +14 -0
  578. package/dist/runtime/__fixtures__/live-scene.d.ts.map +1 -0
  579. package/dist/runtime/__fixtures__/live-scene.js +64 -0
  580. package/dist/runtime/apply.d.ts +42 -0
  581. package/dist/runtime/apply.d.ts.map +1 -0
  582. package/dist/runtime/apply.js +274 -0
  583. package/dist/runtime/dependencies.d.ts +97 -0
  584. package/dist/runtime/dependencies.d.ts.map +1 -0
  585. package/dist/runtime/dependencies.js +42 -0
  586. package/dist/runtime/ids.d.ts +11 -0
  587. package/dist/runtime/ids.d.ts.map +1 -0
  588. package/dist/runtime/ids.js +80 -0
  589. package/dist/runtime/index.d.ts +14 -0
  590. package/dist/runtime/index.d.ts.map +1 -0
  591. package/dist/runtime/index.js +11 -0
  592. package/dist/runtime/node-queries.d.ts +16 -0
  593. package/dist/runtime/node-queries.d.ts.map +1 -0
  594. package/dist/runtime/node-queries.js +30 -0
  595. package/dist/runtime/patch.d.ts +26 -0
  596. package/dist/runtime/patch.d.ts.map +1 -0
  597. package/dist/runtime/patch.js +165 -0
  598. package/dist/runtime/reader.d.ts +104 -0
  599. package/dist/runtime/reader.d.ts.map +1 -0
  600. package/dist/runtime/reader.js +455 -0
  601. package/dist/runtime/scene-runtime.d.ts +112 -0
  602. package/dist/runtime/scene-runtime.d.ts.map +1 -0
  603. package/dist/runtime/scene-runtime.js +302 -0
  604. package/dist/schema/__fixtures__/node-fixtures.d.ts.map +1 -1
  605. package/dist/schema/__fixtures__/node-fixtures.js +1 -0
  606. package/dist/schema/assembly.d.ts +3 -0
  607. package/dist/schema/assembly.d.ts.map +1 -1
  608. package/dist/schema/assembly.js +13 -0
  609. package/dist/schema/asset-url.d.ts +37 -2
  610. package/dist/schema/asset-url.d.ts.map +1 -1
  611. package/dist/schema/asset-url.js +80 -11
  612. package/dist/schema/base.d.ts +8 -0
  613. package/dist/schema/base.d.ts.map +1 -1
  614. package/dist/schema/base.js +19 -1
  615. package/dist/schema/build-up.d.ts +247 -0
  616. package/dist/schema/build-up.d.ts.map +1 -0
  617. package/dist/schema/build-up.js +83 -0
  618. package/dist/schema/geometry-source.d.ts +80 -0
  619. package/dist/schema/geometry-source.d.ts.map +1 -1
  620. package/dist/schema/geometry-source.js +38 -0
  621. package/dist/schema/index.d.ts +12 -7
  622. package/dist/schema/index.d.ts.map +1 -1
  623. package/dist/schema/index.js +12 -6
  624. package/dist/schema/material.d.ts +5 -0
  625. package/dist/schema/material.d.ts.map +1 -1
  626. package/dist/schema/material.js +6 -0
  627. package/dist/schema/nodes/beam.d.ts +264 -0
  628. package/dist/schema/nodes/beam.d.ts.map +1 -0
  629. package/dist/schema/nodes/beam.js +139 -0
  630. package/dist/schema/nodes/box-vent.d.ts +5 -0
  631. package/dist/schema/nodes/box-vent.d.ts.map +1 -1
  632. package/dist/schema/nodes/cabinet.d.ts +10 -0
  633. package/dist/schema/nodes/cabinet.d.ts.map +1 -1
  634. package/dist/schema/nodes/ceiling.d.ts +48 -0
  635. package/dist/schema/nodes/ceiling.d.ts.map +1 -1
  636. package/dist/schema/nodes/ceiling.js +5 -0
  637. package/dist/schema/nodes/chimney.d.ts +10 -0
  638. package/dist/schema/nodes/chimney.d.ts.map +1 -1
  639. package/dist/schema/nodes/column.d.ts +42 -0
  640. package/dist/schema/nodes/column.d.ts.map +1 -1
  641. package/dist/schema/nodes/column.js +11 -1
  642. package/dist/schema/nodes/cupola.d.ts +5 -0
  643. package/dist/schema/nodes/cupola.d.ts.map +1 -1
  644. package/dist/schema/nodes/door.d.ts +54 -3
  645. package/dist/schema/nodes/door.d.ts.map +1 -1
  646. package/dist/schema/nodes/door.js +41 -7
  647. package/dist/schema/nodes/dormer.d.ts +20 -0
  648. package/dist/schema/nodes/dormer.d.ts.map +1 -1
  649. package/dist/schema/nodes/downspout.d.ts +5 -0
  650. package/dist/schema/nodes/downspout.d.ts.map +1 -1
  651. package/dist/schema/nodes/elevator.d.ts +5 -0
  652. package/dist/schema/nodes/elevator.d.ts.map +1 -1
  653. package/dist/schema/nodes/eyebrow-vent.d.ts +5 -0
  654. package/dist/schema/nodes/eyebrow-vent.d.ts.map +1 -1
  655. package/dist/schema/nodes/fence.d.ts +5 -0
  656. package/dist/schema/nodes/fence.d.ts.map +1 -1
  657. package/dist/schema/nodes/guide.d.ts +14 -0
  658. package/dist/schema/nodes/guide.d.ts.map +1 -1
  659. package/dist/schema/nodes/guide.js +2 -0
  660. package/dist/schema/nodes/gutter.d.ts +5 -0
  661. package/dist/schema/nodes/gutter.d.ts.map +1 -1
  662. package/dist/schema/nodes/item.d.ts +71 -0
  663. package/dist/schema/nodes/item.d.ts.map +1 -1
  664. package/dist/schema/nodes/item.js +5 -1
  665. package/dist/schema/nodes/level.d.ts +1 -1
  666. package/dist/schema/nodes/level.d.ts.map +1 -1
  667. package/dist/schema/nodes/opening-types.d.ts +13 -0
  668. package/dist/schema/nodes/opening-types.d.ts.map +1 -1
  669. package/dist/schema/nodes/opening-types.js +8 -1
  670. package/dist/schema/nodes/railing-wall.d.ts +112 -0
  671. package/dist/schema/nodes/railing-wall.d.ts.map +1 -0
  672. package/dist/schema/nodes/railing-wall.js +160 -0
  673. package/dist/schema/nodes/ridge-vent.d.ts +5 -0
  674. package/dist/schema/nodes/ridge-vent.d.ts.map +1 -1
  675. package/dist/schema/nodes/roof-segment.d.ts +224 -1
  676. package/dist/schema/nodes/roof-segment.d.ts.map +1 -1
  677. package/dist/schema/nodes/roof-segment.js +57 -10
  678. package/dist/schema/nodes/roof-types.d.ts +11 -0
  679. package/dist/schema/nodes/roof-types.d.ts.map +1 -1
  680. package/dist/schema/nodes/roof-types.js +6 -0
  681. package/dist/schema/nodes/roof.d.ts +60 -0
  682. package/dist/schema/nodes/roof.d.ts.map +1 -1
  683. package/dist/schema/nodes/roof.js +4 -0
  684. package/dist/schema/nodes/shelf.d.ts +5 -0
  685. package/dist/schema/nodes/shelf.d.ts.map +1 -1
  686. package/dist/schema/nodes/site.d.ts +80 -0
  687. package/dist/schema/nodes/site.d.ts.map +1 -1
  688. package/dist/schema/nodes/site.js +7 -0
  689. package/dist/schema/nodes/skylight.d.ts +10 -0
  690. package/dist/schema/nodes/skylight.d.ts.map +1 -1
  691. package/dist/schema/nodes/slab.d.ts +137 -0
  692. package/dist/schema/nodes/slab.d.ts.map +1 -1
  693. package/dist/schema/nodes/slab.js +3 -0
  694. package/dist/schema/nodes/solar-panel.d.ts +10 -0
  695. package/dist/schema/nodes/solar-panel.d.ts.map +1 -1
  696. package/dist/schema/nodes/stair-segment.d.ts +5 -0
  697. package/dist/schema/nodes/stair-segment.d.ts.map +1 -1
  698. package/dist/schema/nodes/stair-structure.d.ts +69 -0
  699. package/dist/schema/nodes/stair-structure.d.ts.map +1 -0
  700. package/dist/schema/nodes/stair-structure.js +39 -0
  701. package/dist/schema/nodes/stair.d.ts +46 -0
  702. package/dist/schema/nodes/stair.d.ts.map +1 -1
  703. package/dist/schema/nodes/stair.js +3 -0
  704. package/dist/schema/nodes/turbine-vent.d.ts +5 -0
  705. package/dist/schema/nodes/turbine-vent.d.ts.map +1 -1
  706. package/dist/schema/nodes/wall.d.ts +135 -2
  707. package/dist/schema/nodes/wall.d.ts.map +1 -1
  708. package/dist/schema/nodes/wall.js +42 -6
  709. package/dist/schema/nodes/window.d.ts +66 -1
  710. package/dist/schema/nodes/window.d.ts.map +1 -1
  711. package/dist/schema/nodes/window.js +50 -5
  712. package/dist/schema/nodes/zone.d.ts +68 -0
  713. package/dist/schema/nodes/zone.d.ts.map +1 -1
  714. package/dist/schema/nodes/zone.js +32 -0
  715. package/dist/schema/scene-material.d.ts +5 -0
  716. package/dist/schema/scene-material.d.ts.map +1 -1
  717. package/dist/schema/types.d.ts +1079 -4
  718. package/dist/schema/types.d.ts.map +1 -1
  719. package/dist/schema/types.js +2 -0
  720. package/dist/schema/wall-type.d.ts +95 -0
  721. package/dist/schema/wall-type.d.ts.map +1 -0
  722. package/dist/schema/wall-type.js +32 -0
  723. package/dist/services/roof-bearing.d.ts.map +1 -1
  724. package/dist/services/roof-bearing.js +6 -3
  725. package/dist/services/roof-level.d.ts.map +1 -1
  726. package/dist/services/roof-level.js +4 -3
  727. package/dist/services/roof-move.d.ts.map +1 -1
  728. package/dist/services/roof-move.js +13 -7
  729. package/dist/services/storey.d.ts.map +1 -1
  730. package/dist/services/storey.js +13 -8
  731. package/dist/spatial/usage-field/beds.d.ts +51 -0
  732. package/dist/spatial/usage-field/beds.d.ts.map +1 -0
  733. package/dist/spatial/usage-field/beds.js +346 -0
  734. package/dist/spatial/usage-field/blocked.d.ts +28 -0
  735. package/dist/spatial/usage-field/blocked.d.ts.map +1 -0
  736. package/dist/spatial/usage-field/blocked.js +185 -0
  737. package/dist/spatial/usage-field/boxes.d.ts +17 -0
  738. package/dist/spatial/usage-field/boxes.d.ts.map +1 -0
  739. package/dist/spatial/usage-field/boxes.js +82 -0
  740. package/dist/spatial/usage-field/catalogue-shapes.d.ts +3 -0
  741. package/dist/spatial/usage-field/catalogue-shapes.d.ts.map +1 -0
  742. package/dist/spatial/usage-field/catalogue-shapes.js +257 -0
  743. package/dist/spatial/usage-field/catalogue.d.ts +6 -0
  744. package/dist/spatial/usage-field/catalogue.d.ts.map +1 -0
  745. package/dist/spatial/usage-field/catalogue.js +11 -0
  746. package/dist/spatial/usage-field/clash.d.ts +40 -0
  747. package/dist/spatial/usage-field/clash.d.ts.map +1 -0
  748. package/dist/spatial/usage-field/clash.js +187 -0
  749. package/dist/spatial/usage-field/door-stairs.d.ts +18 -0
  750. package/dist/spatial/usage-field/door-stairs.d.ts.map +1 -0
  751. package/dist/spatial/usage-field/door-stairs.js +129 -0
  752. package/dist/spatial/usage-field/entry-way.d.ts +14 -0
  753. package/dist/spatial/usage-field/entry-way.d.ts.map +1 -0
  754. package/dist/spatial/usage-field/entry-way.js +219 -0
  755. package/dist/spatial/usage-field/fences.d.ts +18 -0
  756. package/dist/spatial/usage-field/fences.d.ts.map +1 -0
  757. package/dist/spatial/usage-field/fences.js +253 -0
  758. package/dist/spatial/usage-field/field.d.ts +44 -0
  759. package/dist/spatial/usage-field/field.d.ts.map +1 -0
  760. package/dist/spatial/usage-field/field.js +145 -0
  761. package/dist/spatial/usage-field/findings.d.ts +76 -0
  762. package/dist/spatial/usage-field/findings.d.ts.map +1 -0
  763. package/dist/spatial/usage-field/findings.js +252 -0
  764. package/dist/spatial/usage-field/fixtures.d.ts +18 -0
  765. package/dist/spatial/usage-field/fixtures.d.ts.map +1 -0
  766. package/dist/spatial/usage-field/fixtures.js +160 -0
  767. package/dist/spatial/usage-field/flag.d.ts +10 -0
  768. package/dist/spatial/usage-field/flag.d.ts.map +1 -0
  769. package/dist/spatial/usage-field/flag.js +12 -0
  770. package/dist/spatial/usage-field/floors.d.ts +13 -0
  771. package/dist/spatial/usage-field/floors.d.ts.map +1 -0
  772. package/dist/spatial/usage-field/floors.js +36 -0
  773. package/dist/spatial/usage-field/index.d.ts +7 -0
  774. package/dist/spatial/usage-field/index.d.ts.map +1 -0
  775. package/dist/spatial/usage-field/index.js +5 -0
  776. package/dist/spatial/usage-field/items.d.ts +38 -0
  777. package/dist/spatial/usage-field/items.d.ts.map +1 -0
  778. package/dist/spatial/usage-field/items.js +261 -0
  779. package/dist/spatial/usage-field/labels.d.ts +8 -0
  780. package/dist/spatial/usage-field/labels.d.ts.map +1 -0
  781. package/dist/spatial/usage-field/labels.js +14 -0
  782. package/dist/spatial/usage-field/level-field.d.ts +47 -0
  783. package/dist/spatial/usage-field/level-field.d.ts.map +1 -0
  784. package/dist/spatial/usage-field/level-field.js +96 -0
  785. package/dist/spatial/usage-field/measure.d.ts +324 -0
  786. package/dist/spatial/usage-field/measure.d.ts.map +1 -0
  787. package/dist/spatial/usage-field/measure.js +458 -0
  788. package/dist/spatial/usage-field/obstacles.d.ts +63 -0
  789. package/dist/spatial/usage-field/obstacles.d.ts.map +1 -0
  790. package/dist/spatial/usage-field/obstacles.js +215 -0
  791. package/dist/spatial/usage-field/openings.d.ts +12 -0
  792. package/dist/spatial/usage-field/openings.d.ts.map +1 -0
  793. package/dist/spatial/usage-field/openings.js +162 -0
  794. package/dist/spatial/usage-field/path.d.ts +48 -0
  795. package/dist/spatial/usage-field/path.d.ts.map +1 -0
  796. package/dist/spatial/usage-field/path.js +354 -0
  797. package/dist/spatial/usage-field/pieces.d.ts +27 -0
  798. package/dist/spatial/usage-field/pieces.d.ts.map +1 -0
  799. package/dist/spatial/usage-field/pieces.js +89 -0
  800. package/dist/spatial/usage-field/shapes.d.ts +18 -0
  801. package/dist/spatial/usage-field/shapes.d.ts.map +1 -0
  802. package/dist/spatial/usage-field/shapes.js +92 -0
  803. package/dist/spatial/usage-field/stairs.d.ts +23 -0
  804. package/dist/spatial/usage-field/stairs.d.ts.map +1 -0
  805. package/dist/spatial/usage-field/stairs.js +163 -0
  806. package/dist/spatial/usage-field/support.d.ts +24 -0
  807. package/dist/spatial/usage-field/support.d.ts.map +1 -0
  808. package/dist/spatial/usage-field/support.js +46 -0
  809. package/dist/spatial/usage-field/swings.d.ts +846 -0
  810. package/dist/spatial/usage-field/swings.d.ts.map +1 -0
  811. package/dist/spatial/usage-field/swings.js +427 -0
  812. package/dist/spatial/usage-field/types.d.ts +65 -0
  813. package/dist/spatial/usage-field/types.d.ts.map +1 -0
  814. package/dist/spatial/usage-field/types.js +1 -0
  815. package/dist/spatial/usage-field/walls.d.ts +1057 -0
  816. package/dist/spatial/usage-field/walls.d.ts.map +1 -0
  817. package/dist/spatial/usage-field/walls.js +166 -0
  818. package/dist/spatial/usage-field/way-in.d.ts +26 -0
  819. package/dist/spatial/usage-field/way-in.d.ts.map +1 -0
  820. package/dist/spatial/usage-field/way-in.js +113 -0
  821. package/dist/store/actions/node-actions.d.ts +2124 -1322
  822. package/dist/store/actions/node-actions.d.ts.map +1 -1
  823. package/dist/store/actions/node-actions.js +42 -16
  824. package/dist/store/derived-node-guard.d.ts +10 -2
  825. package/dist/store/derived-node-guard.d.ts.map +1 -1
  826. package/dist/store/derived-node-guard.js +31 -11
  827. package/dist/store/document-settling.d.ts +9 -0
  828. package/dist/store/document-settling.d.ts.map +1 -0
  829. package/dist/store/document-settling.js +22 -0
  830. package/dist/store/history-control.d.ts +19 -10
  831. package/dist/store/history-control.d.ts.map +1 -1
  832. package/dist/store/history-control.js +176 -127
  833. package/dist/store/history-drafts.d.ts.map +1 -1
  834. package/dist/store/history-drafts.js +21 -17
  835. package/dist/store/live-previews.d.ts +9 -0
  836. package/dist/store/live-previews.d.ts.map +1 -0
  837. package/dist/store/live-previews.js +19 -0
  838. package/dist/store/scene-annotations.d.ts +6751 -5151
  839. package/dist/store/scene-annotations.d.ts.map +1 -1
  840. package/dist/store/scene-environment.d.ts +33 -0
  841. package/dist/store/scene-environment.d.ts.map +1 -0
  842. package/dist/store/scene-environment.js +54 -0
  843. package/dist/store/scene-hydration.d.ts.map +1 -1
  844. package/dist/store/scene-hydration.js +41 -30
  845. package/dist/store/use-interactive.d.ts +9 -3
  846. package/dist/store/use-interactive.d.ts.map +1 -1
  847. package/dist/store/use-interactive.js +43 -11
  848. package/dist/store/use-live-node-overrides.d.ts.map +1 -1
  849. package/dist/store/use-live-node-overrides.js +3 -0
  850. package/dist/store/use-scene.d.ts +25 -0
  851. package/dist/store/use-scene.d.ts.map +1 -1
  852. package/dist/store/use-scene.js +408 -336
  853. package/dist/systems/document-reconcile.d.ts +40 -0
  854. package/dist/systems/document-reconcile.d.ts.map +1 -0
  855. package/dist/systems/document-reconcile.js +159 -0
  856. package/dist/systems/elevator/elevator-opening-system.d.ts.map +1 -1
  857. package/dist/systems/elevator/elevator-opening-system.js +9 -24
  858. package/dist/systems/fence/guard-layout.d.ts +69 -0
  859. package/dist/systems/fence/guard-layout.d.ts.map +1 -0
  860. package/dist/systems/fence/guard-layout.js +194 -0
  861. package/dist/systems/owned-floor-openings.d.ts +13 -1
  862. package/dist/systems/owned-floor-openings.d.ts.map +1 -1
  863. package/dist/systems/owned-floor-openings.js +58 -2
  864. package/dist/systems/reconcile-owned-floor-openings.d.ts +3 -1
  865. package/dist/systems/reconcile-owned-floor-openings.d.ts.map +1 -1
  866. package/dist/systems/reconcile-owned-floor-openings.js +4 -4
  867. package/dist/systems/roof/roof-elevation-system.d.ts.map +1 -1
  868. package/dist/systems/roof/roof-elevation-system.js +8 -26
  869. package/dist/systems/roof/roof-elevation.d.ts +16 -1
  870. package/dist/systems/roof/roof-elevation.d.ts.map +1 -1
  871. package/dist/systems/roof/roof-elevation.js +85 -4
  872. package/dist/systems/roof/roof-footprint.d.ts +42 -1
  873. package/dist/systems/roof/roof-footprint.d.ts.map +1 -1
  874. package/dist/systems/roof/roof-footprint.js +160 -4
  875. package/dist/systems/slab/__fixtures__/floor-step.d.ts +3163 -1934
  876. package/dist/systems/slab/__fixtures__/floor-step.d.ts.map +1 -1
  877. package/dist/systems/slab/__fixtures__/raised-room.d.ts +2495 -1249
  878. package/dist/systems/slab/__fixtures__/raised-room.d.ts.map +1 -1
  879. package/dist/systems/stair/stair-clearance.d.ts +7 -0
  880. package/dist/systems/stair/stair-clearance.d.ts.map +1 -1
  881. package/dist/systems/stair/stair-clearance.js +31 -11
  882. package/dist/systems/stair/stair-construction.d.ts +8 -3
  883. package/dist/systems/stair/stair-construction.d.ts.map +1 -1
  884. package/dist/systems/stair/stair-construction.js +55 -4
  885. package/dist/systems/stair/stair-opening-preview.d.ts +889 -89
  886. package/dist/systems/stair/stair-opening-preview.d.ts.map +1 -1
  887. package/dist/systems/stair/stair-opening-system.d.ts.map +1 -1
  888. package/dist/systems/stair/stair-opening-system.js +18 -34
  889. package/dist/systems/stair/stair-presets.d.ts +36 -0
  890. package/dist/systems/stair/stair-presets.d.ts.map +1 -1
  891. package/dist/systems/stair/stair-rise-query.d.ts.map +1 -1
  892. package/dist/systems/stair/stair-rise-query.js +3 -2
  893. package/dist/systems/stair/stair-rise.d.ts.map +1 -1
  894. package/dist/systems/stair/stair-rise.js +6 -0
  895. package/dist/systems/stair/stair-sizing.d.ts +42 -11
  896. package/dist/systems/stair/stair-sizing.d.ts.map +1 -1
  897. package/dist/systems/stair/stair-sizing.js +10 -1
  898. package/dist/systems/stair/stair-structure.d.ts +277 -0
  899. package/dist/systems/stair/stair-structure.d.ts.map +1 -0
  900. package/dist/systems/stair/stair-structure.js +496 -0
  901. package/dist/systems/wall/wall-assembly.d.ts +84 -6
  902. package/dist/systems/wall/wall-assembly.d.ts.map +1 -1
  903. package/dist/systems/wall/wall-assembly.js +204 -5
  904. package/dist/systems/wall/wall-finish.d.ts +38 -2
  905. package/dist/systems/wall/wall-finish.d.ts.map +1 -1
  906. package/dist/systems/wall/wall-finish.js +70 -2
  907. package/dist/systems/wall/wall-footprint.js +2 -2
  908. package/dist/systems/wall/wall-merge.d.ts.map +1 -1
  909. package/dist/systems/wall/wall-merge.js +28 -7
  910. package/dist/systems/wall/wall-mitering.d.ts +1 -0
  911. package/dist/systems/wall/wall-mitering.d.ts.map +1 -1
  912. package/dist/systems/wall/wall-mitering.js +152 -52
  913. package/dist/systems/wall/wall-move.d.ts +23 -6
  914. package/dist/systems/wall/wall-move.d.ts.map +1 -1
  915. package/dist/systems/wall/wall-move.js +65 -0
  916. package/dist/systems/wall/wall-top.d.ts +2 -2
  917. package/dist/systems/wall/wall-top.d.ts.map +1 -1
  918. package/dist/systems/wall/wall-top.js +6 -1
  919. package/dist/systems/wall/wall-topology.d.ts +32 -1
  920. package/dist/systems/wall/wall-topology.d.ts.map +1 -1
  921. package/dist/systems/wall/wall-topology.js +118 -10
  922. package/dist/systems/wall/wall-trim-profiles.d.ts +12 -0
  923. package/dist/systems/wall/wall-trim-profiles.d.ts.map +1 -0
  924. package/dist/systems/wall/wall-trim-profiles.js +191 -0
  925. package/dist/utils/ensure-scene-openings.d.ts +6523 -4923
  926. package/dist/utils/ensure-scene-openings.d.ts.map +1 -1
  927. package/dist/utils/floor-piece-adoption.d.ts +5 -0
  928. package/dist/utils/floor-piece-adoption.d.ts.map +1 -1
  929. package/dist/utils/floor-plate-migration.d.ts +1930 -1130
  930. package/dist/utils/floor-plate-migration.d.ts.map +1 -1
  931. package/dist/utils/owned-floor-opening-migration.d.ts +888 -88
  932. package/dist/utils/owned-floor-opening-migration.d.ts.map +1 -1
  933. package/dist/utils/reconcile-structure-on-load.d.ts +1930 -1130
  934. package/dist/utils/reconcile-structure-on-load.d.ts.map +1 -1
  935. package/dist/utils/structure-id.d.ts.map +1 -1
  936. package/dist/utils/structure-id.js +4 -0
  937. package/package.json +22 -5
  938. package/dist/lib/generic-foundation.d.ts +0 -40
  939. package/dist/lib/generic-foundation.d.ts.map +0 -1
  940. package/dist/lib/generic-foundation.js +0 -200
@@ -21,7 +21,10 @@ const CATALOG = [
21
21
  piece('double-bed', 'Double bed', 'double-beds'),
22
22
  piece('bedside-table', 'Bedside table', 'coffee-tables'),
23
23
  piece('closet', 'Closet', 'wardrobes'),
24
+ piece('sofa', 'Sofa', 'sofas'),
24
25
  piece('toilet', 'Toilet', 'toilets'),
26
+ piece('fridge', 'Fridge', 'kitchen-appliances'),
27
+ { ...piece('palm', 'Palm', 'outdoor'), tags: ['tree', 'plant', 'garden'] },
25
28
  ];
26
29
  const seen = (...ids) => () => ({ checkpoints: {}, made: [], viewed: ids });
27
30
  const library = { activeLevelId: null, catalog: CATALOG };
@@ -55,11 +58,49 @@ const bounded = (quote, reading, extent) => ({
55
58
  ...(extent ? { extent } : {}),
56
59
  });
57
60
  const openAxis = (design) => ({ kind: 'open', design });
61
+ /** An open facade states its treatment: what it is clad in or carries, and the rhythm of its openings. */
62
+ export const openFacade = (design, treatment) => ({
63
+ kind: 'open',
64
+ design,
65
+ treatment,
66
+ });
67
+ /** The rooms of the house an open brief designs: two of one use, each with its own line. */
68
+ export const HOUSE_ROOMS = [
69
+ {
70
+ name: 'Master bedroom',
71
+ use: 'bedroom',
72
+ distinct: 'the parents’ room, calm and oak, the largest, with its own bathroom',
73
+ finishes: { floor: 'oak parquet', walls: 'limewashed white', tiled: false, skirting: true },
74
+ pieces: ['a king bed', 'two nightstands', 'a wardrobe'],
75
+ },
76
+ {
77
+ name: 'Children’s bedroom',
78
+ use: 'bedroom',
79
+ distinct: 'the children’s room, bright, with a desk by the window and bunk beds',
80
+ finishes: { floor: 'cork', walls: 'pale green', tiled: false, skirting: true },
81
+ pieces: ['bunk beds', 'a desk', 'a toy chest'],
82
+ },
83
+ {
84
+ name: 'Bathroom',
85
+ use: 'bathroom',
86
+ distinct: 'the family bathroom, tiled floor to ceiling, a bath under the window',
87
+ finishes: { floor: 'terrazzo tiles', walls: 'white zellige tiles', tiled: true, skirting: false },
88
+ pieces: ['a bath', 'a double basin', 'a toilet'],
89
+ },
90
+ ];
91
+ /** An open form states its massing: the plan, the volumes, whether they stand at one height. */
92
+ export const openForm = (design, massing) => ({
93
+ kind: 'open',
94
+ design,
95
+ massing,
96
+ });
58
97
  const BEDROOM_REQUEST = 'a 4 by 5 m bedroom with a double bed, two nightstands, a wardrobe, one window, one door';
59
98
  /** The owner's bedroom, read axis by axis: action, size, pieces (a minimum) and openings bounded; style, materials and dressing open. */
60
99
  export const BEDROOM_AXES = {
61
100
  action: bounded('a 4 by 5 m bedroom', 'one bedroom, not a house; inside it, making it is the job'),
62
101
  size: bounded('4 by 5 m', 'the room is 4 by 5 m'),
102
+ form: bounded('a 4 by 5 m bedroom', 'one room of 4 by 5 m, a rectangle; no building is designed'),
103
+ facade: bounded('a 4 by 5 m bedroom', 'one room: no building exterior is designed'),
63
104
  pieces: bounded('a double bed, two nightstands, a wardrobe', 'those pieces must be there; nothing says only, so more may come', 'minimum'),
64
105
  openings: bounded('one window, one door', 'exactly one window and one door'),
65
106
  style: openAxis('each piece designed in a calm oak and linen character, not defaulted'),
@@ -70,6 +111,8 @@ export const BEDROOM_AXES = {
70
111
  export const LAMP_AXES = {
71
112
  action: bounded('add a lamp', 'one object added to a room that exists; no redecoration'),
72
113
  size: openAxis('the lamp sized to the sofa it stands beside'),
114
+ form: bounded('add a lamp', 'one object in a room that exists; the building stands as it is'),
115
+ facade: bounded('add a lamp', 'one object in a room that exists; the exterior stands as it is'),
73
116
  pieces: bounded('a lamp', 'the one lamp the request names', 'exact'),
74
117
  openings: openAxis('no openings are touched by this addition'),
75
118
  style: openAxis('a sculptural paper lamp echoing the oak sofa'),
@@ -80,16 +123,27 @@ export const LAMP_AXES = {
80
123
  const LAMP_AXES_FR = {
81
124
  action: bounded('Ajoute une lampe', 'un seul objet ajouté à une pièce qui existe; aucune redécoration'),
82
125
  size: openAxis('la lampe dimensionnée selon le canapé près duquel elle se tient'),
126
+ form: bounded('Ajoute une lampe', 'un objet dans une pièce qui existe; le bâtiment reste tel qu’il est'),
127
+ facade: bounded('Ajoute une lampe', 'un objet dans une pièce qui existe; l’extérieur reste tel qu’il est'),
83
128
  pieces: bounded('une lampe', 'la seule lampe que la demande nomme', 'exact'),
84
129
  openings: openAxis('aucune ouverture n’est touchée par cet ajout'),
85
130
  style: openAxis('une lampe en papier sculpturale qui répond au canapé en chêne'),
86
131
  materials: openAxis('abat-jour en papier et pied en chêne, chauds contre le canapé'),
87
132
  dressing: bounded('Ajoute une lampe', 'la demande ajoute une lampe; la pièce n’est pas habillée davantage'),
88
133
  };
89
- /** Every axis open, for the briefs whose subject is the source or the gate, not the reading. */
134
+ /** Every axis open, for the briefs whose subject is the source or the gate, not the reading. Its open form owes `rooms`: HOUSE_ROOMS. */
90
135
  export const OPEN_AXES = {
91
136
  action: openAxis('the work the request calls for, designed as a whole'),
92
137
  size: openAxis('sizes chosen to fit the rooms they serve'),
138
+ form: openForm('a single block composed to fit the rooms it holds', {
139
+ plan: 'rectangle',
140
+ volumes: 1,
141
+ heights: 'one',
142
+ }),
143
+ facade: openFacade('a plain render facade with a free rhythm of windows', {
144
+ cladding: ['render'],
145
+ rhythm: 'free',
146
+ }),
93
147
  pieces: openAxis('the pieces each room needs, designed one by one'),
94
148
  openings: openAxis('openings placed for light and passage room by room'),
95
149
  style: openAxis('each piece designed in one calm character throughout'),
@@ -102,10 +156,6 @@ const OPEN = {
102
156
  vision: 'A calm room of oak and linen, low furniture, the bed under the window wall.',
103
157
  beyond: DRESSED,
104
158
  };
105
- const OPEN_AS_IS = {
106
- ...OPEN,
107
- asIs: [{ assetId: 'toilet', reason: 'technical equipment, as drawn in the catalog' }],
108
- };
109
159
  const IKEA = {
110
160
  axes: {
111
161
  ...OPEN_AXES,
@@ -131,9 +181,22 @@ export const CATALOG_BRIEF = {
131
181
  const ground = { levelId: 'level_ground' };
132
182
  const sofa = { design: DESIGN_EXAMPLE, hostId: 'level_ground', position: [3, 0, 2] };
133
183
  const bed = { items: [{ assetId: 'double-bed', x: 2, z: 2 }], ...ground };
134
- const wc = { items: [{ assetId: 'toilet', x: 2, z: 2 }], ...ground };
184
+ const fridge = { items: [{ assetId: 'fridge', x: 2, z: 2 }], ...ground };
185
+ const palm = { items: [{ assetId: 'palm', x: 2, z: 2 }], ...ground };
186
+ const couch = { items: [{ assetId: 'sofa', x: 2, z: 2 }], ...ground };
135
187
  const BEFORE = ['design_brief records what the request fixes', 'searched and viewed, not placed'];
136
- const OPEN_SOURCE = (pieceNamed) => `The brief left the source open: ${pieceNamed} can be made with add_object or place_design (view_assets shows the catalog's for reference), or, for technical equipment, named in the brief's asIs after view_assets, with a reason.`;
188
+ const OPEN_SOURCE = (pieceNamed) => `The brief left the source open: ${pieceNamed} cannot be placed from the catalog, pieces are made.`;
189
+ /** The facts the first refusal states about the making tools: which tool, with which input. */
190
+ const MAKING_TOOLS = [
191
+ 'add_object makes a piece (code, or piece for the object in words; parentId and position say where it goes)',
192
+ 'place_design places a designed piece (design, hostId, position)',
193
+ ];
194
+ /** What the session holds after a refusal: the pieces already refused, read back by the next call. */
195
+ const refusedBefore = (...pieces) => () => ({
196
+ checkpoints: {},
197
+ made: [],
198
+ readings: { 'brief.refusedPieces': pieces },
199
+ });
137
200
  export const DESIGN_BRIEF_CASES = [
138
201
  {
139
202
  name: 'a brief is recorded as the turn’s design record, with what it unlocks',
@@ -144,13 +207,16 @@ export const DESIGN_BRIEF_CASES = [
144
207
  source: 'open',
145
208
  vision: OPEN.vision,
146
209
  beyond: OPEN.beyond,
147
- asIs: OPEN_AS_IS.asIs,
148
210
  },
149
- context: { ...library, session: seen('toilet') },
211
+ context: library,
150
212
  readOnly: true,
151
213
  expect: {
152
- result: { status: 'recorded', brief: OPEN_AS_IS },
153
- mentions: ['add_object, place_design make the pieces', 'furnish_room places a whole stock set'],
214
+ result: { status: 'recorded', brief: OPEN },
215
+ mentions: [
216
+ 'add_object, place_design make the pieces',
217
+ 'furnish_room places a whole stock set',
218
+ 'place_items and place_in_room place technical equipment and plants from the catalog',
219
+ ],
154
220
  session: (session) => (session.designBrief?.vision === OPEN.vision ? [] : ['not kept']),
155
221
  },
156
222
  },
@@ -160,6 +226,7 @@ export const DESIGN_BRIEF_CASES = [
160
226
  scene: storeysScene,
161
227
  input: {
162
228
  axes: IKEA.axes,
229
+ rooms: HOUSE_ROOMS,
163
230
  source: 'brand',
164
231
  sourceQuote: IKEA.sourceQuote,
165
232
  brand: 'IKEA',
@@ -178,6 +245,7 @@ export const DESIGN_BRIEF_CASES = [
178
245
  scene: storeysScene,
179
246
  input: {
180
247
  axes: IKEA.axes,
248
+ rooms: HOUSE_ROOMS,
181
249
  source: 'brand',
182
250
  sourceQuote: IKEA.sourceQuote,
183
251
  vision: IKEA.vision,
@@ -191,6 +259,7 @@ export const DESIGN_BRIEF_CASES = [
191
259
  scene: storeysScene,
192
260
  input: {
193
261
  axes: OPEN_AXES,
262
+ rooms: HOUSE_ROOMS,
194
263
  source: 'catalog',
195
264
  vision: 'Furnished from the catalog.',
196
265
  beyond: nothing('catalog'),
@@ -203,6 +272,7 @@ export const DESIGN_BRIEF_CASES = [
203
272
  scene: storeysScene,
204
273
  input: {
205
274
  axes: OPEN_AXES,
275
+ rooms: HOUSE_ROOMS,
206
276
  source: 'catalog',
207
277
  sourceQuote: 'Furnished from the catalog',
208
278
  vision: 'Furnished from the catalog.',
@@ -221,6 +291,7 @@ export const DESIGN_BRIEF_CASES = [
221
291
  scene: storeysScene,
222
292
  input: {
223
293
  axes: IKEA.axes,
294
+ rooms: HOUSE_ROOMS,
224
295
  source: 'brand',
225
296
  sourceQuote: 'IKEA furniture only',
226
297
  brand: 'IKEA',
@@ -233,7 +304,7 @@ export const DESIGN_BRIEF_CASES = [
233
304
  expect: { result: { status: 'recorded', brief: { source: 'brand', sourceQuote: 'IKEA furniture only' } } },
234
305
  },
235
306
  {
236
- name: 'view_assets records what it showed, for the brief’s asIs',
307
+ name: 'view_assets records what it showed in the session',
237
308
  tool: 'view_assets',
238
309
  scene: storeysScene,
239
310
  input: { ids: ['toilet'] },
@@ -244,47 +315,6 @@ export const DESIGN_BRIEF_CASES = [
244
315
  session: (session) => (session.viewed?.includes('toilet') ? [] : ['not kept']),
245
316
  },
246
317
  },
247
- {
248
- name: 'an open brief naming a double bed, a bedside table and a closet as they are is refused: furniture is made',
249
- tool: 'design_brief',
250
- scene: storeysScene,
251
- input: {
252
- axes: OPEN.axes,
253
- source: 'open',
254
- vision: OPEN.vision,
255
- beyond: OPEN.beyond,
256
- asIs: ['double-bed', 'bedside-table', 'closet'].map((assetId) => ({
257
- assetId,
258
- reason: 'fits the room',
259
- })),
260
- },
261
- context: { ...library, session: seen('double-bed', 'bedside-table', 'closet') },
262
- expect: {
263
- refusal: 'brief_as_is_furniture',
264
- mentions: [
265
- 'Double bed is furniture: in an open brief furniture is made (add_object, place_design) or the request names a catalog source; asIs keeps technical equipment (sanitaryware, appliances).',
266
- 'Bedside table is furniture',
267
- 'Closet is furniture',
268
- ],
269
- },
270
- },
271
- {
272
- name: 'an open brief keeping a toilet not viewed is refused: look first',
273
- tool: 'design_brief',
274
- scene: storeysScene,
275
- input: {
276
- axes: OPEN.axes,
277
- source: 'open',
278
- vision: OPEN.vision,
279
- beyond: OPEN.beyond,
280
- asIs: OPEN_AS_IS.asIs,
281
- },
282
- context: library,
283
- expect: {
284
- refusal: 'brief_as_is_not_viewed',
285
- mentions: ['toilet was not viewed', 'view_assets'],
286
- },
287
- },
288
318
  {
289
319
  name: 'a brief that adds nothing says so and why',
290
320
  tool: 'design_brief',
@@ -294,6 +324,7 @@ export const DESIGN_BRIEF_CASES = [
294
324
  ...OPEN_AXES,
295
325
  dressing: bounded('catalog only', 'the request limits the pieces to the catalog'),
296
326
  },
327
+ rooms: HOUSE_ROOMS,
297
328
  source: 'catalog',
298
329
  sourceQuote: 'catalog only',
299
330
  vision: 'The catalog as it is.',
@@ -353,6 +384,7 @@ export const DESIGN_BRIEF_CASES = [
353
384
  style: openAxis('the bed and the lamp designed plainly in oak and paper'),
354
385
  materials: openAxis('oak, paper and plain cotton chosen for the two pieces'),
355
386
  },
387
+ rooms: HOUSE_ROOMS,
356
388
  source: 'open',
357
389
  vision: 'A bed and a lamp in a plain room, both designed.',
358
390
  beyond: nothing('the request says only a bed and a lamp'),
@@ -385,6 +417,7 @@ export const DESIGN_BRIEF_CASES = [
385
417
  pieces: bounded('only a bed and a lamp', 'a bed and a lamp'),
386
418
  dressing: bounded('only a bed and a lamp', 'the request limits the pieces to those two'),
387
419
  },
420
+ rooms: HOUSE_ROOMS,
388
421
  source: 'open',
389
422
  vision: 'A bed and a lamp in a plain room, both designed.',
390
423
  beyond: nothing('the request says only a bed and a lamp'),
@@ -402,6 +435,7 @@ export const DESIGN_BRIEF_CASES = [
402
435
  pieces: bounded('un lit, rien d’autre', 'a bed and nothing else', 'exact'),
403
436
  dressing: bounded('rien d’autre', 'the request limits the pieces to the bed'),
404
437
  },
438
+ rooms: HOUSE_ROOMS,
405
439
  source: 'open',
406
440
  vision: 'A bed in a plain room.',
407
441
  beyond: nothing('the request says nothing else'),
@@ -534,6 +568,7 @@ export const DESIGN_BRIEF_CASES = [
534
568
  action: bounded('a house', 'one house'),
535
569
  dressing: bounded('a house', 'read as the house alone, undressed'),
536
570
  },
571
+ rooms: HOUSE_ROOMS,
537
572
  source: 'open',
538
573
  vision: 'A house, plainly built.',
539
574
  beyond: nothing('read as the house alone'),
@@ -606,7 +641,7 @@ export const DESIGN_BRIEF_CASES = [
606
641
  expect: { result: {} },
607
642
  },
608
643
  {
609
- name: 'a batch holding one furnishing call before a brief is refused whole, whatever onRefusal says',
644
+ name: 'skip reports a missing brief per call while the batch reads still run',
610
645
  tool: 'run_batch',
611
646
  scene: storeysScene,
612
647
  input: {
@@ -618,8 +653,9 @@ export const DESIGN_BRIEF_CASES = [
618
653
  },
619
654
  context: { designBrief: null },
620
655
  expect: {
621
- refusal: 'design_brief_required',
622
- mentions: ["The batch's call 2 (place_design) is refused", 'Nothing in the batch was applied'],
656
+ result: { applied: 1, refused: 1 },
657
+ contains: { calls: [{ index: 1, tool: 'place_design', status: 'refused', code: 'design_brief_required' }] },
658
+ mentions: BEFORE,
623
659
  },
624
660
  },
625
661
  {
@@ -638,6 +674,36 @@ export const DESIGN_BRIEF_CASES = [
638
674
  context: { ...library, designBrief: OPEN },
639
675
  expect: { refusal: 'brief_source_open', mentions: [OPEN_SOURCE('double-bed')] },
640
676
  },
677
+ {
678
+ name: 'an open brief: the first refusal says which tools make the piece and with which input',
679
+ tool: 'place_items',
680
+ scene: storeysScene,
681
+ input: bed,
682
+ context: { ...library, designBrief: OPEN },
683
+ expect: { refusal: 'brief_source_open', mentions: MAKING_TOOLS },
684
+ },
685
+ {
686
+ name: 'an open brief: the same piece refused again is answered briefly, by any placing tool',
687
+ tool: 'place_in_room',
688
+ scene: storeysScene,
689
+ input: { assetId: 'double-bed', ...ground },
690
+ context: { ...library, designBrief: OPEN, session: refusedBefore('double-bed') },
691
+ expect: {
692
+ refusal: 'brief_source_open',
693
+ mentions: ["Already refused, the brief's source is open: double-bed."],
694
+ },
695
+ },
696
+ {
697
+ name: 'an open brief: a call naming a piece refused before and a new one gives the facts for the new one only',
698
+ tool: 'place_items',
699
+ scene: storeysScene,
700
+ input: { items: [...couch.items, ...bed.items], ...ground },
701
+ context: { ...library, designBrief: OPEN, session: refusedBefore('sofa') },
702
+ expect: {
703
+ refusal: 'brief_source_open',
704
+ mentions: [OPEN_SOURCE('double-bed'), ' Already refused: sofa.'],
705
+ },
706
+ },
641
707
  {
642
708
  name: 'an open brief: furnish_room, which places a whole stock set, stays closed',
643
709
  tool: 'furnish_room',
@@ -650,20 +716,28 @@ export const DESIGN_BRIEF_CASES = [
650
716
  },
651
717
  },
652
718
  {
653
- name: 'an open brief: a catalog piece named in asIs is placed as it is',
719
+ name: 'an open brief: a fridge and a palm are placed from the catalog',
654
720
  tool: 'place_items',
655
721
  scene: storeysScene,
656
- input: wc,
657
- context: { ...library, designBrief: OPEN_AS_IS },
722
+ input: { items: [...fridge.items, ...palm.items], ...ground },
723
+ context: { ...library, designBrief: OPEN },
658
724
  expect: { result: { ok: true, levelId: 'level_ground' } },
659
725
  },
660
726
  {
661
- name: 'an open brief: asIs lets that piece through and still refuses the others of the call',
727
+ name: 'an open brief: a sofa and a bed in one call are both listed in the refusal',
662
728
  tool: 'place_items',
663
729
  scene: storeysScene,
664
- input: { items: [...wc.items, ...bed.items], ...ground },
665
- context: { ...library, designBrief: OPEN_AS_IS },
666
- expect: { refusal: 'brief_source_open', mentions: [OPEN_SOURCE('double-bed')] },
730
+ input: { items: [...couch.items, ...bed.items], ...ground },
731
+ context: { ...library, designBrief: OPEN },
732
+ expect: { refusal: 'brief_source_open', mentions: [OPEN_SOURCE('sofa, double-bed')] },
733
+ },
734
+ {
735
+ name: 'a brand brief opens the catalog: the toilet is placed',
736
+ tool: 'place_items',
737
+ scene: storeysScene,
738
+ input: { items: [{ assetId: 'toilet', x: 2, z: 2 }], ...ground },
739
+ context: { ...library, designBrief: IKEA },
740
+ expect: { result: { ok: true, levelId: 'level_ground' } },
667
741
  },
668
742
  {
669
743
  name: 'a brand brief opens the catalog: the double bed is placed',
@@ -690,7 +764,7 @@ export const DESIGN_BRIEF_CASES = [
690
764
  expect: { result: { status: 'applied', applied: 1, refused: 0 } },
691
765
  },
692
766
  {
693
- name: 'a batch under an open brief refuses a catalog placement whole',
767
+ name: 'skip under an open brief makes its piece and reports the refused catalog call',
694
768
  tool: 'run_batch',
695
769
  scene: storeysScene,
696
770
  input: {
@@ -702,8 +776,377 @@ export const DESIGN_BRIEF_CASES = [
702
776
  },
703
777
  context: { ...library, designBrief: OPEN },
704
778
  expect: {
705
- refusal: 'brief_source_open',
706
- mentions: ["The batch's call 2 (place_in_room) is refused", OPEN_SOURCE('double-bed')],
779
+ result: { applied: 1, refused: 1 },
780
+ contains: { calls: [{ index: 1, tool: 'place_in_room', status: 'refused', code: 'brief_source_open' }] },
781
+ mentions: [OPEN_SOURCE('double-bed')],
782
+ },
783
+ },
784
+ {
785
+ name: 'a brief with no form axis is recorded: form is optional',
786
+ tool: 'design_brief',
787
+ scene: storeysScene,
788
+ input: {
789
+ axes: { ...BEDROOM_AXES, form: undefined },
790
+ source: 'open',
791
+ vision: 'A calm room of oak and linen.',
792
+ beyond: DRESSED,
793
+ },
794
+ expect: { result: { status: 'recorded' } },
795
+ },
796
+ {
797
+ name: 'an open form with no massing is refused, the fields named',
798
+ tool: 'design_brief',
799
+ scene: storeysScene,
800
+ input: {
801
+ axes: { ...OPEN_AXES, form: openAxis('a house composed of volumes around a forecourt') },
802
+ rooms: HOUSE_ROOMS,
803
+ source: 'open',
804
+ vision: 'A house around its forecourt.',
805
+ beyond: DRESSED,
806
+ },
807
+ expect: {
808
+ refusal: 'form_massing_missing',
809
+ mentions: ['plan, volumes, heights are absent'],
810
+ },
811
+ },
812
+ {
813
+ name: 'an open form that states only its plan is refused for the fields it leaves out',
814
+ tool: 'design_brief',
815
+ scene: storeysScene,
816
+ input: {
817
+ axes: {
818
+ ...OPEN_AXES,
819
+ form: openForm('a house composed of volumes around a forecourt', { plan: 'u' }),
820
+ },
821
+ rooms: HOUSE_ROOMS,
822
+ source: 'open',
823
+ vision: 'A house around its forecourt.',
824
+ beyond: DRESSED,
825
+ },
826
+ expect: { refusal: 'form_massing_missing', mentions: ['volumes, heights are absent'] },
827
+ },
828
+ {
829
+ name: 'a form of one volume stated as detached is refused',
830
+ tool: 'design_brief',
831
+ scene: storeysScene,
832
+ input: {
833
+ axes: {
834
+ ...OPEN_AXES,
835
+ form: openForm('a house composed of volumes around a forecourt', {
836
+ plan: 'detached',
837
+ volumes: 1,
838
+ heights: 'one',
839
+ }),
840
+ },
841
+ rooms: HOUSE_ROOMS,
842
+ source: 'open',
843
+ vision: 'A house around its forecourt.',
844
+ beyond: DRESSED,
845
+ },
846
+ expect: { refusal: 'form_massing_inconsistent', mentions: ['one volume cannot be detached'] },
847
+ },
848
+ {
849
+ name: '"Build a house" with the form open states its massing and is recorded with it',
850
+ tool: 'design_brief',
851
+ scene: storeysScene,
852
+ input: {
853
+ axes: {
854
+ ...OPEN_AXES,
855
+ form: openForm('a two-storey body with a lower wing at each end, around a forecourt', {
856
+ plan: 'u',
857
+ volumes: 3,
858
+ heights: 'several',
859
+ }),
860
+ },
861
+ rooms: HOUSE_ROOMS,
862
+ source: 'open',
863
+ vision: 'A house around its forecourt.',
864
+ beyond: DRESSED,
865
+ },
866
+ expect: {
867
+ result: {
868
+ status: 'recorded',
869
+ brief: {
870
+ axes: {
871
+ form: { kind: 'open', massing: { plan: 'u', volumes: 3, heights: 'several' } },
872
+ },
873
+ },
874
+ },
875
+ },
876
+ },
877
+ {
878
+ name: '"an L-shaped house" bounds the form by the person’s words, the plan they fix stated',
879
+ tool: 'design_brief',
880
+ scene: storeysScene,
881
+ input: {
882
+ axes: {
883
+ ...OPEN_AXES,
884
+ action: bounded('an L-shaped house', 'a house, L-shaped'),
885
+ form: { ...bounded('an L-shaped house', 'the plan is an L'), massing: { plan: 'l' } },
886
+ },
887
+ rooms: HOUSE_ROOMS,
888
+ source: 'open',
889
+ vision: 'An L-shaped house around a terrace.',
890
+ beyond: DRESSED,
891
+ },
892
+ context: { requestText: 'Build me an L-shaped house' },
893
+ expect: {
894
+ result: {
895
+ status: 'recorded',
896
+ brief: { axes: { form: { kind: 'bounded', massing: { plan: 'l' } } } },
897
+ },
898
+ },
899
+ },
900
+ {
901
+ name: 'a form bounded by words that are not in the person’s message is refused',
902
+ tool: 'design_brief',
903
+ scene: storeysScene,
904
+ input: {
905
+ axes: { ...OPEN_AXES, form: bounded('a U-shaped house', 'the plan is a U') },
906
+ rooms: HOUSE_ROOMS,
907
+ source: 'open',
908
+ vision: 'A house around its forecourt.',
909
+ beyond: DRESSED,
910
+ },
911
+ context: { requestText: 'Build me a house' },
912
+ surfaces: ['core', 'chat'],
913
+ expect: { refusal: 'axis_quote_not_in_request' },
914
+ },
915
+ {
916
+ name: 'an open form owes its rooms: a house with none is refused',
917
+ tool: 'design_brief',
918
+ scene: storeysScene,
919
+ input: { axes: OPEN_AXES, source: 'open', vision: 'A calm house.', beyond: DRESSED },
920
+ expect: { refusal: 'rooms_missing', mentions: ['rooms lists each room it builds'] },
921
+ },
922
+ {
923
+ name: 'an open form with an empty list of rooms is refused too',
924
+ tool: 'design_brief',
925
+ scene: storeysScene,
926
+ input: {
927
+ axes: OPEN_AXES,
928
+ rooms: [],
929
+ source: 'open',
930
+ vision: 'A calm house.',
931
+ beyond: DRESSED,
932
+ },
933
+ expect: { refusal: 'rooms_missing' },
934
+ },
935
+ {
936
+ name: 'a room with no distinct line is refused, the room named',
937
+ tool: 'design_brief',
938
+ scene: storeysScene,
939
+ input: {
940
+ axes: OPEN_AXES,
941
+ rooms: [HOUSE_ROOMS[0], { ...HOUSE_ROOMS[1], distinct: undefined }],
942
+ source: 'open',
943
+ vision: 'A calm house.',
944
+ beyond: DRESSED,
945
+ },
946
+ expect: { refusal: 'room_distinct_missing', mentions: ['The room "Children’s bedroom"'] },
947
+ },
948
+ {
949
+ name: 'a room whose distinct line is blank is refused like one with none',
950
+ tool: 'design_brief',
951
+ scene: storeysScene,
952
+ input: {
953
+ axes: OPEN_AXES,
954
+ rooms: [{ ...HOUSE_ROOMS[0], distinct: ' ' }],
955
+ source: 'open',
956
+ vision: 'A calm house.',
957
+ beyond: DRESSED,
958
+ },
959
+ expect: { refusal: 'room_distinct_missing' },
960
+ },
961
+ {
962
+ name: 'two rooms of one use with the same distinct line and the same pieces, in any order, are refused as copies',
963
+ tool: 'design_brief',
964
+ scene: storeysScene,
965
+ input: {
966
+ axes: OPEN_AXES,
967
+ rooms: [
968
+ HOUSE_ROOMS[0],
969
+ {
970
+ ...HOUSE_ROOMS[0],
971
+ name: 'Guest bedroom',
972
+ distinct: HOUSE_ROOMS[0].distinct.toUpperCase(),
973
+ pieces: [...HOUSE_ROOMS[0].pieces].reverse(),
974
+ },
975
+ ],
976
+ source: 'open',
977
+ vision: 'A calm house.',
978
+ beyond: DRESSED,
979
+ },
980
+ expect: {
981
+ refusal: 'rooms_identical',
982
+ mentions: ['The rooms "Master bedroom" and "Guest bedroom" are of one use'],
983
+ },
984
+ },
985
+ {
986
+ name: 'two rooms of one use with the same distinct line but their own pieces are recorded: anything subtler is a finding at the end of the turn',
987
+ tool: 'design_brief',
988
+ scene: storeysScene,
989
+ input: {
990
+ axes: OPEN_AXES,
991
+ rooms: [
992
+ HOUSE_ROOMS[0],
993
+ { ...HOUSE_ROOMS[0], name: 'Guest bedroom', pieces: ['a sofa bed', 'a reading chair'] },
994
+ ],
995
+ source: 'open',
996
+ vision: 'A calm house.',
997
+ beyond: DRESSED,
998
+ },
999
+ expect: { result: { status: 'recorded', brief: { rooms: [{ name: 'Master bedroom' }, { name: 'Guest bedroom' }] } } },
1000
+ },
1001
+ {
1002
+ name: 'a focused refit of two rooms bounds the form by its words and still lists the rooms: they are kept with the brief',
1003
+ tool: 'design_brief',
1004
+ scene: storeysScene,
1005
+ input: {
1006
+ axes: LAMP_AXES,
1007
+ rooms: [HOUSE_ROOMS[0], HOUSE_ROOMS[2]],
1008
+ source: 'open',
1009
+ vision: 'Two rooms refitted.',
1010
+ beyond: nothing('the request refits two rooms'),
1011
+ },
1012
+ context: { requestText: 'add a lamp next to the sofa' },
1013
+ expect: {
1014
+ result: { status: 'recorded', brief: { rooms: [{ use: 'bedroom' }, { use: 'bathroom' }] } },
1015
+ session: (session) => session.designBrief?.rooms?.length === 2 ? [] : ['the rooms were not kept with the brief'],
1016
+ },
1017
+ },
1018
+ {
1019
+ name: 'a brief with no facade axis is recorded: facade is optional',
1020
+ tool: 'design_brief',
1021
+ scene: storeysScene,
1022
+ input: {
1023
+ axes: { ...BEDROOM_AXES, facade: undefined },
1024
+ source: 'open',
1025
+ vision: 'A calm room of oak and linen.',
1026
+ beyond: DRESSED,
1027
+ },
1028
+ expect: { result: { status: 'recorded' } },
1029
+ },
1030
+ {
1031
+ name: 'an open facade with no treatment is refused, the fields named',
1032
+ tool: 'design_brief',
1033
+ scene: storeysScene,
1034
+ input: {
1035
+ axes: { ...OPEN_AXES, facade: openAxis('a stone manor with shuttered windows') },
1036
+ rooms: HOUSE_ROOMS,
1037
+ source: 'open',
1038
+ vision: 'A manor.',
1039
+ beyond: DRESSED,
1040
+ },
1041
+ expect: {
1042
+ refusal: 'facade_treatment_missing',
1043
+ mentions: ['Absent: cladding or elements, rhythm.'],
1044
+ },
1045
+ },
1046
+ {
1047
+ name: 'an open facade that states cladding but no rhythm is refused for the rhythm',
1048
+ tool: 'design_brief',
1049
+ scene: storeysScene,
1050
+ input: {
1051
+ axes: {
1052
+ ...OPEN_AXES,
1053
+ facade: openFacade('a stone manor with shuttered windows', { cladding: ['stone'] }),
1054
+ },
1055
+ rooms: HOUSE_ROOMS,
1056
+ source: 'open',
1057
+ vision: 'A manor.',
1058
+ beyond: DRESSED,
1059
+ },
1060
+ expect: { refusal: 'facade_treatment_missing', mentions: ['Absent: rhythm.'] },
1061
+ },
1062
+ {
1063
+ name: 'an open facade that states a rhythm but carries nothing is refused too',
1064
+ tool: 'design_brief',
1065
+ scene: storeysScene,
1066
+ input: {
1067
+ axes: {
1068
+ ...OPEN_AXES,
1069
+ facade: openFacade('a stone manor with shuttered windows', { rhythm: 'regular' }),
1070
+ },
1071
+ rooms: HOUSE_ROOMS,
1072
+ source: 'open',
1073
+ vision: 'A manor.',
1074
+ beyond: DRESSED,
1075
+ },
1076
+ expect: { refusal: 'facade_treatment_missing', mentions: ['Absent: cladding or elements.'] },
1077
+ },
1078
+ {
1079
+ name: '"Build a house" with the facade open states its treatment and is recorded with it',
1080
+ tool: 'design_brief',
1081
+ scene: storeysScene,
1082
+ input: {
1083
+ axes: {
1084
+ ...OPEN_AXES,
1085
+ facade: openFacade('a stone facade dressed with quoins, its windows shuttered', {
1086
+ cladding: ['stone'],
1087
+ bands: ['base', 'cornice'],
1088
+ elements: ['corners', 'shutters'],
1089
+ rhythm: 'regular',
1090
+ }),
1091
+ },
1092
+ rooms: HOUSE_ROOMS,
1093
+ source: 'open',
1094
+ vision: 'A manor.',
1095
+ beyond: DRESSED,
1096
+ },
1097
+ expect: {
1098
+ result: {
1099
+ status: 'recorded',
1100
+ brief: {
1101
+ axes: {
1102
+ facade: {
1103
+ kind: 'open',
1104
+ treatment: { cladding: ['stone'], rhythm: 'regular' },
1105
+ },
1106
+ },
1107
+ },
1108
+ },
1109
+ },
1110
+ },
1111
+ {
1112
+ name: '"une façade en pierre avec volets" bounds the facade by the person’s words, the treatment they fix stated',
1113
+ tool: 'design_brief',
1114
+ scene: storeysScene,
1115
+ input: {
1116
+ axes: {
1117
+ ...OPEN_AXES,
1118
+ facade: {
1119
+ ...bounded('une façade en pierre avec volets', 'stone and shutters'),
1120
+ treatment: { cladding: ['stone'], elements: ['shutters'] },
1121
+ },
1122
+ },
1123
+ rooms: HOUSE_ROOMS,
1124
+ source: 'open',
1125
+ vision: 'A stone house.',
1126
+ beyond: DRESSED,
1127
+ },
1128
+ context: { requestText: 'Construis-moi une maison avec une façade en pierre avec volets' },
1129
+ expect: {
1130
+ result: {
1131
+ status: 'recorded',
1132
+ brief: { axes: { facade: { kind: 'bounded', treatment: { cladding: ['stone'] } } } },
1133
+ },
1134
+ },
1135
+ },
1136
+ {
1137
+ name: 'rooms of one use announced apart carry no finding',
1138
+ tool: 'design_brief',
1139
+ scene: storeysScene,
1140
+ input: {
1141
+ axes: OPEN_AXES,
1142
+ rooms: HOUSE_ROOMS,
1143
+ source: 'open',
1144
+ vision: 'A house.',
1145
+ beyond: DRESSED,
1146
+ },
1147
+ expect: {
1148
+ result: { status: 'recorded' },
1149
+ check: (result) => ('findings' in result ? ['findings carried'] : []),
707
1150
  },
708
1151
  },
709
1152
  ];