@pascal-app/core 1.0.4 → 1.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agent-operations/__fixtures__/add-object-cases.d.ts +102 -90
- package/dist/agent-operations/__fixtures__/add-object-cases.d.ts.map +1 -1
- package/dist/agent-operations/__fixtures__/add-object-cases.js +301 -1
- package/dist/agent-operations/__fixtures__/add-stair-cases.d.ts +3 -0
- package/dist/agent-operations/__fixtures__/add-stair-cases.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/add-stair-cases.js +176 -0
- package/dist/agent-operations/__fixtures__/build-room-cases.d.ts.map +1 -1
- package/dist/agent-operations/__fixtures__/build-room-cases.js +410 -40
- package/dist/agent-operations/__fixtures__/cases.d.ts +18 -3
- package/dist/agent-operations/__fixtures__/cases.d.ts.map +1 -1
- package/dist/agent-operations/__fixtures__/cases.js +183 -4
- package/dist/agent-operations/__fixtures__/corner-window-cases.d.ts +3 -0
- package/dist/agent-operations/__fixtures__/corner-window-cases.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/corner-window-cases.js +155 -0
- package/dist/agent-operations/__fixtures__/design-brief-cases.d.ts +14 -0
- package/dist/agent-operations/__fixtures__/design-brief-cases.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/design-brief-cases.js +709 -0
- package/dist/agent-operations/__fixtures__/finish-cases.d.ts +7 -0
- package/dist/agent-operations/__fixtures__/finish-cases.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/finish-cases.js +758 -0
- package/dist/agent-operations/__fixtures__/lot-info-cases.d.ts +3 -0
- package/dist/agent-operations/__fixtures__/lot-info-cases.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/lot-info-cases.js +370 -0
- package/dist/agent-operations/__fixtures__/merge-windows-cases.d.ts +3 -0
- package/dist/agent-operations/__fixtures__/merge-windows-cases.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/merge-windows-cases.js +321 -0
- package/dist/agent-operations/__fixtures__/native-materials.d.ts +2237 -0
- package/dist/agent-operations/__fixtures__/native-materials.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/native-materials.js +82 -0
- package/dist/agent-operations/__fixtures__/node-read-cases.d.ts +4 -0
- package/dist/agent-operations/__fixtures__/node-read-cases.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/node-read-cases.js +639 -0
- package/dist/agent-operations/__fixtures__/notation-cases.d.ts +24 -0
- package/dist/agent-operations/__fixtures__/notation-cases.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/notation-cases.js +356 -0
- package/dist/agent-operations/__fixtures__/place-items-cases.d.ts.map +1 -1
- package/dist/agent-operations/__fixtures__/place-items-cases.js +80 -2
- package/dist/agent-operations/__fixtures__/roof-bearing-cases.d.ts +19726 -0
- package/dist/agent-operations/__fixtures__/roof-bearing-cases.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/roof-bearing-cases.js +106 -0
- package/dist/agent-operations/__fixtures__/roof-cases.d.ts +9 -0
- package/dist/agent-operations/__fixtures__/roof-cases.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/roof-cases.js +382 -0
- package/dist/agent-operations/__fixtures__/room-cases.d.ts +2 -1
- package/dist/agent-operations/__fixtures__/room-cases.d.ts.map +1 -1
- package/dist/agent-operations/__fixtures__/room-cases.js +136 -1
- package/dist/agent-operations/__fixtures__/scene-check-cases.d.ts +4 -0
- package/dist/agent-operations/__fixtures__/scene-check-cases.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/scene-check-cases.js +417 -0
- package/dist/agent-operations/__fixtures__/search-assets-cases.d.ts.map +1 -1
- package/dist/agent-operations/__fixtures__/search-assets-cases.js +15 -3
- package/dist/agent-operations/__fixtures__/site-cases.d.ts +290 -0
- package/dist/agent-operations/__fixtures__/site-cases.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/site-cases.js +780 -0
- package/dist/agent-operations/__fixtures__/structure-cases.d.ts +1 -0
- package/dist/agent-operations/__fixtures__/structure-cases.d.ts.map +1 -1
- package/dist/agent-operations/__fixtures__/structure-cases.js +630 -3
- package/dist/agent-operations/__fixtures__/verify-scene-cases.d.ts +311 -1
- package/dist/agent-operations/__fixtures__/verify-scene-cases.d.ts.map +1 -1
- package/dist/agent-operations/__fixtures__/verify-scene-cases.js +59 -11
- package/dist/agent-operations/__fixtures__/view-assets-cases.d.ts +3 -0
- package/dist/agent-operations/__fixtures__/view-assets-cases.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/view-assets-cases.js +155 -0
- package/dist/agent-operations/__fixtures__/view-scene-cases.d.ts +50 -0
- package/dist/agent-operations/__fixtures__/view-scene-cases.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/view-scene-cases.js +425 -0
- package/dist/agent-operations/achieved.d.ts +5 -0
- package/dist/agent-operations/achieved.d.ts.map +1 -1
- package/dist/agent-operations/achieved.js +21 -1
- package/dist/agent-operations/add-column.d.ts.map +1 -1
- package/dist/agent-operations/add-column.js +3 -1
- package/dist/agent-operations/add-fence.d.ts +18 -0
- package/dist/agent-operations/add-fence.d.ts.map +1 -0
- package/dist/agent-operations/add-fence.js +48 -0
- package/dist/agent-operations/add-level.d.ts +4 -1
- package/dist/agent-operations/add-level.d.ts.map +1 -1
- package/dist/agent-operations/add-level.js +48 -12
- package/dist/agent-operations/add-object.d.ts +38 -9
- package/dist/agent-operations/add-object.d.ts.map +1 -1
- package/dist/agent-operations/add-object.js +172 -11
- package/dist/agent-operations/add-wall.d.ts +1 -3
- package/dist/agent-operations/add-wall.d.ts.map +1 -1
- package/dist/agent-operations/add-wall.js +35 -9
- package/dist/agent-operations/apply-changes.d.ts +7 -1
- package/dist/agent-operations/apply-changes.d.ts.map +1 -1
- package/dist/agent-operations/apply-changes.js +54 -22
- package/dist/agent-operations/apply-outcome.d.ts +6 -0
- package/dist/agent-operations/apply-outcome.d.ts.map +1 -1
- package/dist/agent-operations/apply-outcome.js +23 -8
- package/dist/agent-operations/asset-views.d.ts +75 -0
- package/dist/agent-operations/asset-views.d.ts.map +1 -0
- package/dist/agent-operations/asset-views.js +234 -0
- package/dist/agent-operations/author-scene.d.ts +157 -0
- package/dist/agent-operations/author-scene.d.ts.map +1 -0
- package/dist/agent-operations/author-scene.js +1076 -0
- package/dist/agent-operations/authored-scene-merge.d.ts +4 -0
- package/dist/agent-operations/authored-scene-merge.d.ts.map +1 -0
- package/dist/agent-operations/authored-scene-merge.js +96 -0
- package/dist/agent-operations/batch.d.ts +22 -0
- package/dist/agent-operations/batch.d.ts.map +1 -0
- package/dist/agent-operations/batch.js +104 -0
- package/dist/agent-operations/ceiling-object-observations.d.ts +31 -0
- package/dist/agent-operations/ceiling-object-observations.d.ts.map +1 -0
- package/dist/agent-operations/ceiling-object-observations.js +111 -0
- package/dist/agent-operations/corner-window.d.ts +19 -0
- package/dist/agent-operations/corner-window.d.ts.map +1 -0
- package/dist/agent-operations/corner-window.js +84 -0
- package/dist/agent-operations/create-roof.d.ts +32 -0
- package/dist/agent-operations/create-roof.d.ts.map +1 -0
- package/dist/agent-operations/create-roof.js +304 -0
- package/dist/agent-operations/create-room.d.ts +2 -0
- package/dist/agent-operations/create-room.d.ts.map +1 -1
- package/dist/agent-operations/create-room.js +73 -5
- package/dist/agent-operations/create-stair.d.ts +6 -28
- package/dist/agent-operations/create-stair.d.ts.map +1 -1
- package/dist/agent-operations/create-stair.js +187 -104
- package/dist/agent-operations/design-brief.d.ts +38 -0
- package/dist/agent-operations/design-brief.d.ts.map +1 -0
- package/dist/agent-operations/design-brief.js +300 -0
- package/dist/agent-operations/designs.d.ts +24 -0
- package/dist/agent-operations/designs.d.ts.map +1 -0
- package/dist/agent-operations/designs.js +48 -0
- package/dist/agent-operations/door-clearance.d.ts +16 -1
- package/dist/agent-operations/door-clearance.d.ts.map +1 -1
- package/dist/agent-operations/door-clearance.js +61 -4
- package/dist/agent-operations/duplicate-level.d.ts.map +1 -1
- package/dist/agent-operations/duplicate-level.js +2 -1
- package/dist/agent-operations/find-by-type.d.ts +14 -7
- package/dist/agent-operations/find-by-type.d.ts.map +1 -1
- package/dist/agent-operations/find-by-type.js +266 -43
- package/dist/agent-operations/furnish-room.d.ts +22 -1
- package/dist/agent-operations/furnish-room.d.ts.map +1 -1
- package/dist/agent-operations/furnish-room.js +66 -19
- package/dist/agent-operations/furniture-kind.d.ts +22 -0
- package/dist/agent-operations/furniture-kind.d.ts.map +1 -0
- package/dist/agent-operations/furniture-kind.js +69 -0
- package/dist/agent-operations/get-node.d.ts +5 -2
- package/dist/agent-operations/get-node.d.ts.map +1 -1
- package/dist/agent-operations/get-node.js +82 -10
- package/dist/agent-operations/hosted-services.d.ts +2 -1
- package/dist/agent-operations/hosted-services.d.ts.map +1 -1
- package/dist/agent-operations/index.d.ts +281 -69
- package/dist/agent-operations/index.d.ts.map +1 -1
- package/dist/agent-operations/index.js +66 -5
- package/dist/agent-operations/item-space.d.ts +22 -0
- package/dist/agent-operations/item-space.d.ts.map +1 -0
- package/dist/agent-operations/item-space.js +69 -0
- package/dist/agent-operations/layout-clearance.d.ts +52 -3
- package/dist/agent-operations/layout-clearance.d.ts.map +1 -1
- package/dist/agent-operations/layout-clearance.js +340 -30
- package/dist/agent-operations/level-height-fill.d.ts +12 -0
- package/dist/agent-operations/level-height-fill.d.ts.map +1 -0
- package/dist/agent-operations/level-height-fill.js +59 -0
- package/dist/agent-operations/level-reads.d.ts +5 -1
- package/dist/agent-operations/level-reads.d.ts.map +1 -1
- package/dist/agent-operations/level-reads.js +10 -3
- package/dist/agent-operations/list-levels.d.ts.map +1 -1
- package/dist/agent-operations/list-levels.js +23 -0
- package/dist/agent-operations/material-preset.d.ts.map +1 -1
- package/dist/agent-operations/material-preset.js +3 -9
- package/dist/agent-operations/material-refs.d.ts +7 -1
- package/dist/agent-operations/material-refs.d.ts.map +1 -1
- package/dist/agent-operations/material-refs.js +10 -5
- package/dist/agent-operations/merge-windows.d.ts +6 -0
- package/dist/agent-operations/merge-windows.d.ts.map +1 -0
- package/dist/agent-operations/merge-windows.js +27 -0
- package/dist/agent-operations/move-roofs.d.ts +9 -0
- package/dist/agent-operations/move-roofs.d.ts.map +1 -0
- package/dist/agent-operations/move-roofs.js +29 -0
- package/dist/agent-operations/paint.d.ts +2 -1
- package/dist/agent-operations/paint.d.ts.map +1 -1
- package/dist/agent-operations/paint.js +163 -53
- package/dist/agent-operations/photo-elevation.d.ts +155 -0
- package/dist/agent-operations/photo-elevation.d.ts.map +1 -0
- package/dist/agent-operations/photo-elevation.js +761 -0
- package/dist/agent-operations/place-in-room.d.ts +29 -0
- package/dist/agent-operations/place-in-room.d.ts.map +1 -0
- package/dist/agent-operations/place-in-room.js +403 -0
- package/dist/agent-operations/place-items.d.ts.map +1 -1
- package/dist/agent-operations/place-items.js +15 -2
- package/dist/agent-operations/plan-geometry.d.ts.map +1 -1
- package/dist/agent-operations/plan-geometry.js +3 -0
- package/dist/agent-operations/point-context.d.ts +139 -0
- package/dist/agent-operations/point-context.d.ts.map +1 -0
- package/dist/agent-operations/point-context.js +1 -0
- package/dist/agent-operations/project-files.d.ts +9 -0
- package/dist/agent-operations/project-files.d.ts.map +1 -0
- package/dist/agent-operations/project-files.js +25 -0
- package/dist/agent-operations/record-made.d.ts +18 -0
- package/dist/agent-operations/record-made.d.ts.map +1 -0
- package/dist/agent-operations/record-made.js +28 -0
- package/dist/agent-operations/roof-footprint.d.ts +24 -0
- package/dist/agent-operations/roof-footprint.d.ts.map +1 -0
- package/dist/agent-operations/roof-footprint.js +242 -0
- package/dist/agent-operations/roof-writes.d.ts +20 -0
- package/dist/agent-operations/roof-writes.d.ts.map +1 -0
- package/dist/agent-operations/roof-writes.js +165 -0
- package/dist/agent-operations/room-findings.d.ts +54 -0
- package/dist/agent-operations/room-findings.d.ts.map +1 -0
- package/dist/agent-operations/room-findings.js +143 -0
- package/dist/agent-operations/room-floor-script.d.ts +23 -0
- package/dist/agent-operations/room-floor-script.d.ts.map +1 -0
- package/dist/agent-operations/room-floor-script.js +54 -0
- package/dist/agent-operations/room-structure.d.ts +2 -2
- package/dist/agent-operations/room-structure.d.ts.map +1 -1
- package/dist/agent-operations/scene-checkpoint.d.ts +94 -0
- package/dist/agent-operations/scene-checkpoint.d.ts.map +1 -0
- package/dist/agent-operations/scene-checkpoint.js +176 -0
- package/dist/agent-operations/scene-queries.d.ts +3750 -3319
- package/dist/agent-operations/scene-queries.d.ts.map +1 -1
- package/dist/agent-operations/scene-queries.js +13 -23
- package/dist/agent-operations/scene-review.d.ts +52 -0
- package/dist/agent-operations/scene-review.d.ts.map +1 -0
- package/dist/agent-operations/scene-review.js +106 -0
- package/dist/agent-operations/scene-view.d.ts +82 -15
- package/dist/agent-operations/scene-view.d.ts.map +1 -1
- package/dist/agent-operations/scene-view.js +408 -51
- package/dist/agent-operations/search-assets.d.ts +2 -2
- package/dist/agent-operations/search-assets.d.ts.map +1 -1
- package/dist/agent-operations/search-assets.js +4 -3
- package/dist/agent-operations/search-materials.d.ts +9 -3
- package/dist/agent-operations/search-materials.d.ts.map +1 -1
- package/dist/agent-operations/search-materials.js +83 -29
- package/dist/agent-operations/set-checkpoint.d.ts +9 -0
- package/dist/agent-operations/set-checkpoint.d.ts.map +1 -0
- package/dist/agent-operations/set-checkpoint.js +31 -0
- package/dist/agent-operations/set-ground-level.d.ts +12 -0
- package/dist/agent-operations/set-ground-level.d.ts.map +1 -0
- package/dist/agent-operations/set-ground-level.js +61 -0
- package/dist/agent-operations/site.d.ts +21 -0
- package/dist/agent-operations/site.d.ts.map +1 -0
- package/dist/agent-operations/site.js +123 -0
- package/dist/agent-operations/types.d.ts +66 -7
- package/dist/agent-operations/types.d.ts.map +1 -1
- package/dist/agent-operations/verify-scene.d.ts +39 -5
- package/dist/agent-operations/verify-scene.d.ts.map +1 -1
- package/dist/agent-operations/verify-scene.js +223 -44
- package/dist/agent-operations/wall-face-script.d.ts +28 -0
- package/dist/agent-operations/wall-face-script.d.ts.map +1 -0
- package/dist/agent-operations/wall-face-script.js +62 -0
- package/dist/agent-operations/wall-object-observations.d.ts +41 -0
- package/dist/agent-operations/wall-object-observations.d.ts.map +1 -0
- package/dist/agent-operations/wall-object-observations.js +249 -0
- package/dist/agent-operations/wall-opening.d.ts +23 -23
- package/dist/agent-operations/wall-opening.d.ts.map +1 -1
- package/dist/agent-operations/wall-skirting.d.ts +24 -0
- package/dist/agent-operations/wall-skirting.d.ts.map +1 -0
- package/dist/agent-operations/wall-skirting.js +85 -0
- package/dist/agent-tools/add-object.d.ts +11 -7
- package/dist/agent-tools/add-object.d.ts.map +1 -1
- package/dist/agent-tools/add-object.js +17 -11
- package/dist/agent-tools/assets.d.ts +8 -0
- package/dist/agent-tools/assets.d.ts.map +1 -1
- package/dist/agent-tools/assets.js +13 -1
- package/dist/agent-tools/author-scene.d.ts +651 -0
- package/dist/agent-tools/author-scene.d.ts.map +1 -0
- package/dist/agent-tools/author-scene.js +252 -0
- package/dist/agent-tools/batch.d.ts +25 -0
- package/dist/agent-tools/batch.d.ts.map +1 -0
- package/dist/agent-tools/batch.js +61 -0
- package/dist/agent-tools/checkpoints.d.ts +13 -0
- package/dist/agent-tools/checkpoints.d.ts.map +1 -0
- package/dist/agent-tools/checkpoints.js +16 -0
- package/dist/agent-tools/clear-scene.d.ts.map +1 -1
- package/dist/agent-tools/collections.d.ts +6 -6
- package/dist/agent-tools/collections.d.ts.map +1 -1
- package/dist/agent-tools/columns.d.ts +18 -18
- package/dist/agent-tools/columns.js +2 -2
- package/dist/agent-tools/corner-window.d.ts +46 -0
- package/dist/agent-tools/corner-window.d.ts.map +1 -0
- package/dist/agent-tools/corner-window.js +47 -0
- package/dist/agent-tools/create-room.d.ts +26 -25
- package/dist/agent-tools/create-room.d.ts.map +1 -1
- package/dist/agent-tools/create-room.js +11 -4
- package/dist/agent-tools/design-brief.d.ts +408 -0
- package/dist/agent-tools/design-brief.d.ts.map +1 -0
- package/dist/agent-tools/design-brief.js +149 -0
- package/dist/agent-tools/designs.d.ts +34 -0
- package/dist/agent-tools/designs.d.ts.map +1 -0
- package/dist/agent-tools/designs.js +50 -0
- package/dist/agent-tools/fences.d.ts +28 -0
- package/dist/agent-tools/fences.d.ts.map +1 -0
- package/dist/agent-tools/fences.js +31 -0
- package/dist/agent-tools/find-by-type.d.ts +8 -1
- package/dist/agent-tools/find-by-type.d.ts.map +1 -1
- package/dist/agent-tools/find-by-type.js +23 -2
- package/dist/agent-tools/furnish-room.d.ts +10 -8
- package/dist/agent-tools/furnish-room.d.ts.map +1 -1
- package/dist/agent-tools/furnish-room.js +3 -1
- package/dist/agent-tools/hosted-services.d.ts +177 -141
- package/dist/agent-tools/hosted-services.d.ts.map +1 -1
- package/dist/agent-tools/hosted-services.js +47 -14
- package/dist/agent-tools/index.d.ts +894 -215
- package/dist/agent-tools/index.d.ts.map +1 -1
- package/dist/agent-tools/index.js +47 -3
- package/dist/agent-tools/levels.d.ts +11 -3
- package/dist/agent-tools/levels.d.ts.map +1 -1
- package/dist/agent-tools/levels.js +16 -5
- package/dist/agent-tools/measurement.d.ts +38 -20
- package/dist/agent-tools/measurement.d.ts.map +1 -1
- package/dist/agent-tools/measurement.js +117 -67
- package/dist/agent-tools/merge-windows.d.ts +10 -0
- package/dist/agent-tools/merge-windows.d.ts.map +1 -0
- package/dist/agent-tools/merge-windows.js +12 -0
- package/dist/agent-tools/nodes.d.ts.map +1 -1
- package/dist/agent-tools/nodes.js +1 -1
- package/dist/agent-tools/notation-inventory.d.ts +16 -0
- package/dist/agent-tools/notation-inventory.d.ts.map +1 -0
- package/dist/agent-tools/notation-inventory.js +105 -0
- package/dist/agent-tools/paint.d.ts +5 -5
- package/dist/agent-tools/paint.d.ts.map +1 -1
- package/dist/agent-tools/paint.js +1 -1
- package/dist/agent-tools/photo-elevation.d.ts +32 -0
- package/dist/agent-tools/photo-elevation.d.ts.map +1 -0
- package/dist/agent-tools/photo-elevation.js +73 -0
- package/dist/agent-tools/place-in-room.d.ts +35 -0
- package/dist/agent-tools/place-in-room.d.ts.map +1 -0
- package/dist/agent-tools/place-in-room.js +61 -0
- package/dist/agent-tools/place-items.d.ts +1 -1
- package/dist/agent-tools/place-items.js +2 -2
- package/dist/agent-tools/project-files.d.ts +189 -0
- package/dist/agent-tools/project-files.d.ts.map +1 -0
- package/dist/agent-tools/project-files.js +99 -0
- package/dist/agent-tools/refusal.d.ts.map +1 -1
- package/dist/agent-tools/retired.d.ts +21 -0
- package/dist/agent-tools/retired.d.ts.map +1 -0
- package/dist/agent-tools/retired.js +29 -0
- package/dist/agent-tools/roofs.d.ts +100 -0
- package/dist/agent-tools/roofs.d.ts.map +1 -0
- package/dist/agent-tools/roofs.js +96 -0
- package/dist/agent-tools/room-structure.d.ts +46 -38
- package/dist/agent-tools/room-structure.d.ts.map +1 -1
- package/dist/agent-tools/room-structure.js +30 -27
- package/dist/agent-tools/search-materials.d.ts +22 -3
- package/dist/agent-tools/search-materials.d.ts.map +1 -1
- package/dist/agent-tools/search-materials.js +13 -14
- package/dist/agent-tools/site.d.ts +27 -0
- package/dist/agent-tools/site.d.ts.map +1 -0
- package/dist/agent-tools/site.js +40 -0
- package/dist/agent-tools/sources.d.ts +12 -0
- package/dist/agent-tools/sources.d.ts.map +1 -0
- package/dist/agent-tools/sources.js +11 -0
- package/dist/agent-tools/stairs.d.ts +48 -28
- package/dist/agent-tools/stairs.d.ts.map +1 -1
- package/dist/agent-tools/stairs.js +65 -22
- package/dist/agent-tools/verify-scene.d.ts.map +1 -1
- package/dist/agent-tools/verify-scene.js +1 -1
- package/dist/agent-tools/view-scene.d.ts +50 -12
- package/dist/agent-tools/view-scene.d.ts.map +1 -1
- package/dist/agent-tools/view-scene.js +74 -31
- package/dist/agent-tools/wall-openings.d.ts +77 -73
- package/dist/agent-tools/wall-openings.d.ts.map +1 -1
- package/dist/agent-tools/wall-openings.js +9 -5
- package/dist/agent-tools/walls.d.ts +4 -4
- package/dist/agent-tools/walls.d.ts.map +1 -1
- package/dist/agent-tools/walls.js +7 -2
- package/dist/building/__fixtures__/wall-opening-cases.d.ts +454 -250
- package/dist/building/__fixtures__/wall-opening-cases.d.ts.map +1 -1
- package/dist/building/__fixtures__/wall-opening-cases.js +62 -2
- package/dist/building/corner-window.d.ts +56 -0
- package/dist/building/corner-window.d.ts.map +1 -0
- package/dist/building/corner-window.js +179 -0
- package/dist/building/ground-level.d.ts +26 -0
- package/dist/building/ground-level.d.ts.map +1 -0
- package/dist/building/ground-level.js +58 -0
- package/dist/building/index.d.ts +5 -0
- package/dist/building/index.d.ts.map +1 -1
- package/dist/building/index.js +5 -0
- package/dist/building/level-duplication.d.ts +7472 -6613
- package/dist/building/level-duplication.d.ts.map +1 -1
- package/dist/building/level-duplication.js +18 -4
- package/dist/building/level-insertion.d.ts +55 -0
- package/dist/building/level-insertion.d.ts.map +1 -0
- package/dist/building/level-insertion.js +35 -0
- package/dist/building/merge-windows.d.ts +58 -0
- package/dist/building/merge-windows.d.ts.map +1 -0
- package/dist/building/merge-windows.js +189 -0
- package/dist/building/opening-style-presets.d.ts +2 -2
- package/dist/building/opening-style-presets.d.ts.map +1 -1
- package/dist/building/photo-elevation.d.ts +125 -0
- package/dist/building/photo-elevation.d.ts.map +1 -0
- package/dist/building/photo-elevation.js +404 -0
- package/dist/building/wall-gaps.d.ts +13 -0
- package/dist/building/wall-gaps.d.ts.map +1 -0
- package/dist/building/wall-gaps.js +158 -0
- package/dist/building/wall-openings.d.ts +154 -119
- package/dist/building/wall-openings.d.ts.map +1 -1
- package/dist/building/wall-openings.js +37 -9
- package/dist/capture/schema.d.ts +22 -22
- package/dist/capture/source.d.ts.map +1 -1
- package/dist/capture/source.js +1 -1
- package/dist/commands/structure/create-zone.d.ts +12 -1
- package/dist/commands/structure/create-zone.d.ts.map +1 -1
- package/dist/commands/structure/create-zone.js +49 -0
- package/dist/commands/structure/divide-zone.d.ts +3 -3
- package/dist/commands/structure/index.d.ts +1 -1
- package/dist/commands/structure/index.d.ts.map +1 -1
- package/dist/commands/structure/index.js +1 -1
- package/dist/commands/structure/set-floor-foundation.d.ts +6 -6
- package/dist/commands/structure/set-zone-intent.d.ts +4 -0
- package/dist/commands/structure/set-zone-intent.d.ts.map +1 -1
- package/dist/commands/structure/set-zone-intent.js +19 -0
- package/dist/commands/structure/shared.d.ts +3642 -3213
- package/dist/commands/structure/shared.d.ts.map +1 -1
- package/dist/commands/structure/zone-wall-merge.d.ts +4149 -3334
- package/dist/commands/structure/zone-wall-merge.d.ts.map +1 -1
- package/dist/contracts/reference-inventory.d.ts.map +1 -1
- package/dist/contracts/reference-inventory.js +106 -26
- package/dist/events/bus.d.ts +22 -3
- package/dist/events/bus.d.ts.map +1 -1
- package/dist/events/capture-sessions.d.ts +5 -0
- package/dist/events/capture-sessions.d.ts.map +1 -0
- package/dist/events/capture-sessions.js +31 -0
- package/dist/hooks/scene-registry/scene-registry.d.ts.map +1 -1
- package/dist/hooks/spatial-grid/spatial-grid-manager.d.ts +1 -2
- package/dist/hooks/spatial-grid/spatial-grid-manager.d.ts.map +1 -1
- package/dist/hooks/spatial-grid/spatial-grid-manager.js +4 -6
- package/dist/hooks/spatial-grid/spatial-grid-sync.d.ts +3608 -3179
- package/dist/hooks/spatial-grid/spatial-grid-sync.d.ts.map +1 -1
- package/dist/hooks/spatial-grid/spatial-grid.d.ts.map +1 -1
- package/dist/hooks/spatial-grid/support-host-patch.d.ts.map +1 -1
- package/dist/hooks/spatial-grid/support-host-patch.js +11 -2
- package/dist/hooks/spatial-grid/use-spatial-query.d.ts +3 -3
- package/dist/hooks/spatial-grid/wall-spatial-grid.d.ts.map +1 -1
- package/dist/index.d.ts +37 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +36 -9
- package/dist/lib/__fixtures__/mezzanine.d.ts +11800 -10132
- package/dist/lib/__fixtures__/mezzanine.d.ts.map +1 -1
- package/dist/lib/absorb-wall-separators.d.ts +3642 -3213
- package/dist/lib/absorb-wall-separators.d.ts.map +1 -1
- package/dist/lib/angle-accumulator.d.ts.map +1 -1
- package/dist/lib/artifact-store.d.ts.map +1 -1
- package/dist/lib/below-grade-footprints.d.ts +65 -0
- package/dist/lib/below-grade-footprints.d.ts.map +1 -0
- package/dist/lib/below-grade-footprints.js +181 -0
- package/dist/lib/building-footprint.d.ts +33 -0
- package/dist/lib/building-footprint.d.ts.map +1 -0
- package/dist/lib/building-footprint.js +89 -0
- package/dist/lib/corner-pair.d.ts +1129 -0
- package/dist/lib/corner-pair.d.ts.map +1 -0
- package/dist/lib/corner-pair.js +130 -0
- package/dist/lib/corner-snap.d.ts +54 -0
- package/dist/lib/corner-snap.d.ts.map +1 -0
- package/dist/lib/corner-snap.js +125 -0
- package/dist/lib/critically-damped.d.ts +11 -0
- package/dist/lib/critically-damped.d.ts.map +1 -0
- package/dist/lib/critically-damped.js +14 -0
- package/dist/lib/deepest-drawn.d.ts +18 -0
- package/dist/lib/deepest-drawn.d.ts.map +1 -0
- package/dist/lib/deepest-drawn.js +65 -0
- package/dist/lib/door-operation.d.ts +1 -1
- package/dist/lib/exterior-wall-loops.d.ts +17 -0
- package/dist/lib/exterior-wall-loops.d.ts.map +1 -0
- package/dist/lib/exterior-wall-loops.js +334 -0
- package/dist/lib/finish-script.d.ts +61 -0
- package/dist/lib/finish-script.d.ts.map +1 -0
- package/dist/lib/finish-script.js +86 -0
- package/dist/lib/floor-intent-changes.d.ts.map +1 -1
- package/dist/lib/floor-intent-changes.js +4 -4
- package/dist/lib/floor-plate-paint.d.ts +3 -1
- package/dist/lib/floor-plate-paint.d.ts.map +1 -1
- package/dist/lib/floor-plate-paint.js +24 -4
- package/dist/lib/floor-plates.d.ts +50 -50
- package/dist/lib/floor-script.d.ts +24 -0
- package/dist/lib/floor-script.d.ts.map +1 -0
- package/dist/lib/floor-script.js +51 -0
- package/dist/lib/foundation-construction.d.ts +73 -0
- package/dist/lib/foundation-construction.d.ts.map +1 -0
- package/dist/lib/foundation-construction.js +242 -0
- package/dist/lib/foundation-standard.d.ts +30 -0
- package/dist/lib/foundation-standard.d.ts.map +1 -0
- package/dist/lib/foundation-standard.js +30 -0
- package/dist/lib/foundation-wall.d.ts +36 -0
- package/dist/lib/foundation-wall.d.ts.map +1 -0
- package/dist/lib/foundation-wall.js +66 -0
- package/dist/lib/generic-foundation.d.ts +40 -0
- package/dist/lib/generic-foundation.d.ts.map +1 -0
- package/dist/lib/generic-foundation.js +200 -0
- package/dist/lib/geometry-script-node.d.ts +32 -3
- package/dist/lib/geometry-script-node.d.ts.map +1 -1
- package/dist/lib/geometry-script-node.js +26 -0
- package/dist/lib/grade-standing.d.ts +38 -0
- package/dist/lib/grade-standing.d.ts.map +1 -0
- package/dist/lib/grade-standing.js +137 -0
- package/dist/lib/ground-level.d.ts +20 -0
- package/dist/lib/ground-level.d.ts.map +1 -0
- package/dist/lib/ground-level.js +49 -0
- package/dist/lib/ground-over-part.d.ts +13 -0
- package/dist/lib/ground-over-part.d.ts.map +1 -0
- package/dist/lib/ground-over-part.js +94 -0
- package/dist/lib/ground-seat.d.ts +47 -0
- package/dist/lib/ground-seat.d.ts.map +1 -0
- package/dist/lib/ground-seat.js +61 -0
- package/dist/lib/ground-window.d.ts +39 -0
- package/dist/lib/ground-window.d.ts.map +1 -0
- package/dist/lib/ground-window.js +147 -0
- package/dist/lib/opening-floor-datum.d.ts.map +1 -1
- package/dist/lib/opening-floor-datum.js +2 -3
- package/dist/lib/own-floor-intent.d.ts.map +1 -1
- package/dist/lib/own-floor-intent.js +4 -4
- package/dist/lib/plate-surface.d.ts.map +1 -1
- package/dist/lib/plate-surface.js +3 -1
- package/dist/lib/point-ask.d.ts +9 -0
- package/dist/lib/point-ask.d.ts.map +1 -0
- package/dist/lib/point-ask.js +36 -0
- package/dist/lib/room-drawn-floor.d.ts +1 -1
- package/dist/lib/room-drawn-floor.d.ts.map +1 -1
- package/dist/lib/room-floor-feasibility.d.ts.map +1 -1
- package/dist/lib/room-floor-feasibility.js +3 -3
- package/dist/lib/room-graph.d.ts.map +1 -1
- package/dist/lib/room-graph.js +2 -0
- package/dist/lib/room-name.d.ts +2 -0
- package/dist/lib/room-name.d.ts.map +1 -1
- package/dist/lib/room-name.js +2 -0
- package/dist/lib/room-topology-index.d.ts.map +1 -1
- package/dist/lib/room-topology-index.js +1 -1
- package/dist/lib/room-zone-adoption.d.ts.map +1 -1
- package/dist/lib/script-inputs-key.d.ts +3 -0
- package/dist/lib/script-inputs-key.d.ts.map +1 -0
- package/dist/lib/script-inputs-key.js +13 -0
- package/dist/lib/setback-envelope.d.ts +95 -5
- package/dist/lib/setback-envelope.d.ts.map +1 -1
- package/dist/lib/setback-envelope.js +351 -35
- package/dist/lib/site-flatwork.d.ts +11 -0
- package/dist/lib/site-flatwork.d.ts.map +1 -0
- package/dist/lib/site-flatwork.js +11 -0
- package/dist/lib/site-ground-height.d.ts +13 -0
- package/dist/lib/site-ground-height.d.ts.map +1 -0
- package/dist/lib/site-ground-height.js +16 -0
- package/dist/lib/site-placement.d.ts +362 -0
- package/dist/lib/site-placement.d.ts.map +1 -0
- package/dist/lib/site-placement.js +942 -0
- package/dist/lib/snap-ease.d.ts +20 -0
- package/dist/lib/snap-ease.d.ts.map +1 -0
- package/dist/lib/snap-ease.js +50 -0
- package/dist/lib/structure-kernel.d.ts +1 -1
- package/dist/lib/structure-kernel.d.ts.map +1 -1
- package/dist/lib/structure-kernel.js +2 -0
- package/dist/lib/surface-support-references.d.ts +4 -0
- package/dist/lib/surface-support-references.d.ts.map +1 -0
- package/dist/lib/surface-support-references.js +19 -0
- package/dist/lib/terrain-support-query.d.ts +10 -0
- package/dist/lib/terrain-support-query.d.ts.map +1 -1
- package/dist/lib/terrain-support-query.js +1 -1
- package/dist/lib/wall-face-script.d.ts +66 -0
- package/dist/lib/wall-face-script.d.ts.map +1 -0
- package/dist/lib/wall-face-script.js +235 -0
- package/dist/lib/zone-colors.d.ts +1 -1
- package/dist/lib/zone-colors.d.ts.map +1 -1
- package/dist/lib/zone-quantities.d.ts.map +1 -1
- package/dist/lib/zone-quantities.js +4 -5
- package/dist/material-kinds.d.ts +9 -0
- package/dist/material-kinds.d.ts.map +1 -0
- package/dist/material-kinds.js +30 -0
- package/dist/material-library.d.ts +4 -4
- package/dist/material-library.d.ts.map +1 -1
- package/dist/material-library.js +72 -26
- package/dist/node-slots/index.d.ts +1 -0
- package/dist/node-slots/index.d.ts.map +1 -1
- package/dist/node-slots/index.js +7 -1
- package/dist/node-slots/roof.d.ts +5 -0
- package/dist/node-slots/roof.d.ts.map +1 -0
- package/dist/node-slots/roof.js +12 -0
- package/dist/node-slots/stair.d.ts +2 -0
- package/dist/node-slots/stair.d.ts.map +1 -1
- package/dist/node-slots/stair.js +6 -2
- package/dist/procedural-items/design-placement.d.ts.map +1 -1
- package/dist/procedural-items/design.d.ts +19 -19
- package/dist/procedural-items/fixtures.d.ts +297 -297
- package/dist/procedural-items/fixtures.d.ts.map +1 -1
- package/dist/procedural-items/integration.d.ts +106 -106
- package/dist/procedural-items/joints.d.ts +4 -4
- package/dist/procedural-items/library-colors.d.ts +22 -22
- package/dist/procedural-items/library-colors.d.ts.map +1 -1
- package/dist/procedural-items/motion-controller.d.ts.map +1 -1
- package/dist/procedural-items/node.d.ts +291 -291
- package/dist/procedural-items/query.d.ts +1 -1
- package/dist/procedural-items/query.d.ts.map +1 -1
- package/dist/procedural-items/recipe.d.ts +11 -11
- package/dist/procedural-items/recipe.d.ts.map +1 -1
- package/dist/procedural-items/section.d.ts.map +1 -1
- package/dist/registry/index.d.ts +1 -1
- package/dist/registry/index.d.ts.map +1 -1
- package/dist/registry/scene-api.d.ts +1 -0
- package/dist/registry/scene-api.d.ts.map +1 -1
- package/dist/registry/scene-api.js +3 -0
- package/dist/registry/subtree.d.ts.map +1 -1
- package/dist/registry/subtree.js +2 -0
- package/dist/registry/types.d.ts +120 -1
- package/dist/registry/types.d.ts.map +1 -1
- package/dist/schema/assembly.d.ts +41 -41
- package/dist/schema/asset-url.d.ts +1 -1
- package/dist/schema/asset-url.d.ts.map +1 -1
- package/dist/schema/base.d.ts +9 -9
- package/dist/schema/base.d.ts.map +1 -1
- package/dist/schema/camera.d.ts +1 -1
- package/dist/schema/collection-templates.d.ts +20 -20
- package/dist/schema/collection-templates.d.ts.map +1 -1
- package/dist/schema/geometry-metadata.d.ts +7 -7
- package/dist/schema/geometry-metadata.d.ts.map +1 -1
- package/dist/schema/geometry-source.d.ts +26 -16
- package/dist/schema/geometry-source.d.ts.map +1 -1
- package/dist/schema/geometry-source.js +14 -0
- package/dist/schema/index.d.ts +10 -7
- package/dist/schema/index.d.ts.map +1 -1
- package/dist/schema/index.js +10 -7
- package/dist/schema/material.d.ts +33 -33
- package/dist/schema/nodes/barrel-roof.d.ts +3 -0
- package/dist/schema/nodes/barrel-roof.d.ts.map +1 -0
- package/dist/schema/nodes/barrel-roof.js +11 -0
- package/dist/schema/nodes/block.d.ts +8 -8
- package/dist/schema/nodes/box-vent.d.ts +13 -13
- package/dist/schema/nodes/building.d.ts +9 -8
- package/dist/schema/nodes/building.d.ts.map +1 -1
- package/dist/schema/nodes/building.js +2 -0
- package/dist/schema/nodes/cabinet.d.ts +130 -129
- package/dist/schema/nodes/cabinet.d.ts.map +1 -1
- package/dist/schema/nodes/cabinet.js +1 -1
- package/dist/schema/nodes/ceiling.d.ts +15 -15
- package/dist/schema/nodes/chimney.d.ts +23 -23
- package/dist/schema/nodes/column.d.ts +207 -199
- package/dist/schema/nodes/column.d.ts.map +1 -1
- package/dist/schema/nodes/column.js +2 -0
- package/dist/schema/nodes/construction-dimension.d.ts +34 -34
- package/dist/schema/nodes/cupola.d.ts +15 -15
- package/dist/schema/nodes/curtain-wall.d.ts +21 -20
- package/dist/schema/nodes/curtain-wall.d.ts.map +1 -1
- package/dist/schema/nodes/curtain-wall.js +23 -0
- package/dist/schema/nodes/door.d.ts +50 -43
- package/dist/schema/nodes/door.d.ts.map +1 -1
- package/dist/schema/nodes/door.js +19 -0
- package/dist/schema/nodes/dormer.d.ts +37 -36
- package/dist/schema/nodes/dormer.d.ts.map +1 -1
- package/dist/schema/nodes/downspout.d.ts +17 -17
- package/dist/schema/nodes/duct-fitting.d.ts +24 -24
- package/dist/schema/nodes/duct-segment.d.ts +14 -14
- package/dist/schema/nodes/duct-terminal.d.ts +12 -12
- package/dist/schema/nodes/elevator.d.ts +15 -15
- package/dist/schema/nodes/eyebrow-vent.d.ts +13 -13
- package/dist/schema/nodes/fence-feature.d.ts +37 -37
- package/dist/schema/nodes/fence-types.d.ts +32 -0
- package/dist/schema/nodes/fence-types.d.ts.map +1 -0
- package/dist/schema/nodes/fence-types.js +22 -0
- package/dist/schema/nodes/fence.d.ts +43 -72
- package/dist/schema/nodes/fence.d.ts.map +1 -1
- package/dist/schema/nodes/fence.js +4 -20
- package/dist/schema/nodes/floor-opening.d.ts +8 -8
- package/dist/schema/nodes/guide.d.ts +8 -8
- package/dist/schema/nodes/gutter.d.ts +14 -14
- package/dist/schema/nodes/gutter.d.ts.map +1 -1
- package/dist/schema/nodes/gutter.js +6 -5
- package/dist/schema/nodes/hvac-equipment.d.ts +13 -13
- package/dist/schema/nodes/imported-mesh.d.ts +8 -8
- package/dist/schema/nodes/item.d.ts +30 -25
- package/dist/schema/nodes/item.d.ts.map +1 -1
- package/dist/schema/nodes/lean-to-extension.d.ts +36 -36
- package/dist/schema/nodes/level.d.ts +9 -9
- package/dist/schema/nodes/lineset.d.ts +8 -8
- package/dist/schema/nodes/liquid-line.d.ts +8 -8
- package/dist/schema/nodes/measurement.d.ts +8 -8
- package/dist/schema/nodes/opening-types.d.ts +13 -13
- package/dist/schema/nodes/opening-types.d.ts.map +1 -1
- package/dist/schema/nodes/pipe-fitting.d.ts +15 -15
- package/dist/schema/nodes/pipe-segment.d.ts +11 -11
- package/dist/schema/nodes/pipe-trap.d.ts +9 -9
- package/dist/schema/nodes/ridge-vent.d.ts +14 -14
- package/dist/schema/nodes/ridge-vent.d.ts.map +1 -1
- package/dist/schema/nodes/ridge-vent.js +3 -1
- package/dist/schema/nodes/roof-glazing-config.d.ts +90 -0
- package/dist/schema/nodes/roof-glazing-config.d.ts.map +1 -0
- package/dist/schema/nodes/roof-glazing-config.js +34 -0
- package/dist/schema/nodes/roof-glazing.d.ts +57 -0
- package/dist/schema/nodes/roof-glazing.d.ts.map +1 -0
- package/dist/schema/nodes/roof-glazing.js +514 -0
- package/dist/schema/nodes/roof-segment-resize.d.ts +4 -0
- package/dist/schema/nodes/roof-segment-resize.d.ts.map +1 -0
- package/dist/schema/nodes/roof-segment-resize.js +21 -0
- package/dist/schema/nodes/roof-segment-shape.d.ts +5 -0
- package/dist/schema/nodes/roof-segment-shape.d.ts.map +1 -1
- package/dist/schema/nodes/roof-segment-shape.js +44 -0
- package/dist/schema/nodes/roof-segment-walls.d.ts +1 -1
- package/dist/schema/nodes/roof-segment-walls.d.ts.map +1 -1
- package/dist/schema/nodes/roof-segment-walls.js +24 -0
- package/dist/schema/nodes/roof-segment.d.ts +153 -46
- package/dist/schema/nodes/roof-segment.d.ts.map +1 -1
- package/dist/schema/nodes/roof-segment.js +91 -20
- package/dist/schema/nodes/roof-types.d.ts +14 -0
- package/dist/schema/nodes/roof-types.d.ts.map +1 -0
- package/dist/schema/nodes/roof-types.js +14 -0
- package/dist/schema/nodes/roof.d.ts +49 -49
- package/dist/schema/nodes/scan.d.ts +8 -8
- package/dist/schema/nodes/separator.d.ts +8 -8
- package/dist/schema/nodes/shelf.d.ts +16 -16
- package/dist/schema/nodes/site-facts.d.ts +64 -0
- package/dist/schema/nodes/site-facts.d.ts.map +1 -0
- package/dist/schema/nodes/site-facts.js +73 -0
- package/dist/schema/nodes/site.d.ts +105 -63
- package/dist/schema/nodes/site.d.ts.map +1 -1
- package/dist/schema/nodes/site.js +7 -70
- package/dist/schema/nodes/skylight.d.ts +41 -41
- package/dist/schema/nodes/skylight.d.ts.map +1 -1
- package/dist/schema/nodes/slab.d.ts +21 -21
- package/dist/schema/nodes/solar-panel.d.ts +21 -21
- package/dist/schema/nodes/spawn.d.ts +8 -8
- package/dist/schema/nodes/stair-construction.d.ts +3 -3
- package/dist/schema/nodes/stair-defaults.d.ts +16 -0
- package/dist/schema/nodes/stair-defaults.d.ts.map +1 -0
- package/dist/schema/nodes/stair-defaults.js +15 -0
- package/dist/schema/nodes/stair-segment.d.ts +22 -22
- package/dist/schema/nodes/stair-types.d.ts +29 -0
- package/dist/schema/nodes/stair-types.d.ts.map +1 -0
- package/dist/schema/nodes/stair-types.js +23 -0
- package/dist/schema/nodes/stair.d.ts +51 -75
- package/dist/schema/nodes/stair.d.ts.map +1 -1
- package/dist/schema/nodes/stair.js +6 -20
- package/dist/schema/nodes/structural-grid.d.ts +8 -8
- package/dist/schema/nodes/surface-hole-metadata.d.ts +2 -2
- package/dist/schema/nodes/turbine-vent.d.ts +13 -13
- package/dist/schema/nodes/unit.d.ts +10 -10
- package/dist/schema/nodes/unit.d.ts.map +1 -1
- package/dist/schema/nodes/wall.d.ts +479 -146
- package/dist/schema/nodes/wall.d.ts.map +1 -1
- package/dist/schema/nodes/wall.js +19 -0
- package/dist/schema/nodes/window.d.ts +55 -39
- package/dist/schema/nodes/window.d.ts.map +1 -1
- package/dist/schema/nodes/window.js +10 -0
- package/dist/schema/nodes/zone.d.ts +231 -12
- package/dist/schema/nodes/zone.d.ts.map +1 -1
- package/dist/schema/nodes/zone.js +10 -0
- package/dist/schema/provenance.d.ts +21 -21
- package/dist/schema/scene-material.d.ts +5 -5
- package/dist/schema/site-presentation.d.ts +100 -0
- package/dist/schema/site-presentation.d.ts.map +1 -0
- package/dist/schema/site-presentation.js +83 -0
- package/dist/schema/types.d.ts +1954 -1414
- package/dist/schema/types.d.ts.map +1 -1
- package/dist/services/__fixtures__/wall-plane-top-boundary-repro.d.ts.map +1 -1
- package/dist/services/index.d.ts +5 -1
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/index.js +5 -1
- package/dist/services/level-height.d.ts.map +1 -1
- package/dist/services/level-height.js +7 -3
- package/dist/services/port-connectivity.d.ts +4 -0
- package/dist/services/port-connectivity.d.ts.map +1 -1
- package/dist/services/port-connectivity.js +35 -0
- package/dist/services/project-file-sink.d.ts +9 -0
- package/dist/services/project-file-sink.d.ts.map +1 -0
- package/dist/services/project-file-sink.js +13 -0
- package/dist/services/roof-bearing.d.ts +62 -0
- package/dist/services/roof-bearing.d.ts.map +1 -0
- package/dist/services/roof-bearing.js +234 -0
- package/dist/services/roof-level.d.ts +121 -0
- package/dist/services/roof-level.d.ts.map +1 -0
- package/dist/services/roof-level.js +280 -0
- package/dist/services/roof-move.d.ts +83 -0
- package/dist/services/roof-move.d.ts.map +1 -0
- package/dist/services/roof-move.js +316 -0
- package/dist/services/stair-surface-snap.d.ts +14 -0
- package/dist/services/stair-surface-snap.d.ts.map +1 -0
- package/dist/services/stair-surface-snap.js +116 -0
- package/dist/services/storey-datum.d.ts +12 -0
- package/dist/services/storey-datum.d.ts.map +1 -0
- package/dist/services/storey-datum.js +18 -0
- package/dist/services/storey.d.ts +51 -5
- package/dist/services/storey.d.ts.map +1 -1
- package/dist/services/storey.js +125 -8
- package/dist/solar-panel-presets.d.ts +2 -2
- package/dist/store/actions/node-actions.d.ts +3613 -3182
- package/dist/store/actions/node-actions.d.ts.map +1 -1
- package/dist/store/actions/node-actions.js +46 -1
- package/dist/store/derived-node-guard.d.ts.map +1 -1
- package/dist/store/history-control.d.ts +39 -0
- package/dist/store/history-control.d.ts.map +1 -1
- package/dist/store/history-control.js +84 -4
- package/dist/store/scene-annotations.d.ts +7267 -6409
- package/dist/store/scene-annotations.d.ts.map +1 -1
- package/dist/store/scene-preview.d.ts +16 -0
- package/dist/store/scene-preview.d.ts.map +1 -0
- package/dist/store/scene-preview.js +144 -0
- package/dist/store/use-live-node-overrides.d.ts.map +1 -1
- package/dist/store/use-live-terrain.d.ts.map +1 -1
- package/dist/store/use-live-transforms.d.ts.map +1 -1
- package/dist/store/use-scene.d.ts.map +1 -1
- package/dist/store/use-scene.js +37 -4
- package/dist/systems/elevator/elevator-dispatch.js +1 -1
- package/dist/systems/fence/fence-features.d.ts.map +1 -1
- package/dist/systems/owned-floor-openings.d.ts.map +1 -1
- package/dist/systems/owned-floor-openings.js +24 -3
- package/dist/systems/roof/roof-elevation-system.d.ts.map +1 -1
- package/dist/systems/roof/roof-elevation-system.js +9 -3
- package/dist/systems/roof/roof-elevation.d.ts +5 -0
- package/dist/systems/roof/roof-elevation.d.ts.map +1 -1
- package/dist/systems/roof/roof-elevation.js +91 -62
- package/dist/systems/slab/__fixtures__/floor-step.d.ts +4623 -3516
- package/dist/systems/slab/__fixtures__/floor-step.d.ts.map +1 -1
- package/dist/systems/slab/__fixtures__/raised-room.d.ts +5149 -4076
- package/dist/systems/slab/__fixtures__/raised-room.d.ts.map +1 -1
- package/dist/systems/slab/slab-support.d.ts +6 -3
- package/dist/systems/slab/slab-support.d.ts.map +1 -1
- package/dist/systems/slab/slab-support.js +78 -10
- package/dist/systems/stair/stair-detail-budget.d.ts +2 -2
- package/dist/systems/stair/stair-detail-budget.d.ts.map +1 -1
- package/dist/systems/stair/stair-footprint.d.ts +6 -0
- package/dist/systems/stair/stair-footprint.d.ts.map +1 -1
- package/dist/systems/stair/stair-footprint.js +27 -14
- package/dist/systems/stair/stair-layout.d.ts +2 -2
- package/dist/systems/stair/stair-opening-preview.d.ts +3643 -3214
- package/dist/systems/stair/stair-opening-preview.d.ts.map +1 -1
- package/dist/systems/stair/stair-presets.d.ts +73 -65
- package/dist/systems/stair/stair-presets.d.ts.map +1 -1
- package/dist/systems/stair/stair-presets.js +16 -9
- package/dist/systems/stair/stair-rail-path.d.ts +1 -1
- package/dist/systems/stair/stair-rise-query.d.ts +16 -0
- package/dist/systems/stair/stair-rise-query.d.ts.map +1 -1
- package/dist/systems/stair/stair-rise-query.js +57 -7
- package/dist/systems/stair/stair-sizing.d.ts +101 -99
- package/dist/systems/stair/stair-sizing.d.ts.map +1 -1
- package/dist/systems/wall/wall-assembly.d.ts +11 -0
- package/dist/systems/wall/wall-assembly.d.ts.map +1 -1
- package/dist/systems/wall/wall-assembly.js +21 -0
- package/dist/systems/wall/wall-curve.d.ts +5 -0
- package/dist/systems/wall/wall-curve.d.ts.map +1 -1
- package/dist/systems/wall/wall-curve.js +13 -0
- package/dist/systems/wall/wall-frame.d.ts.map +1 -1
- package/dist/systems/wall/wall-frame.js +8 -0
- package/dist/systems/wall/wall-room-sides.d.ts +8 -0
- package/dist/systems/wall/wall-room-sides.d.ts.map +1 -1
- package/dist/systems/wall/wall-room-sides.js +60 -7
- package/dist/systems/wall/wall-top.d.ts +7 -4
- package/dist/systems/wall/wall-top.d.ts.map +1 -1
- package/dist/systems/wall/wall-top.js +14 -6
- package/dist/systems/wall/wall-topology.d.ts +4 -0
- package/dist/systems/wall/wall-topology.d.ts.map +1 -1
- package/dist/systems/wall/wall-topology.js +4 -2
- package/dist/systems/wall/wall-trim.d.ts +7 -0
- package/dist/systems/wall/wall-trim.d.ts.map +1 -0
- package/dist/systems/wall/wall-trim.js +10 -0
- package/dist/utils/clone-scene-graph.d.ts.map +1 -1
- package/dist/utils/clone-scene-graph.js +8 -0
- package/dist/utils/ensure-scene-openings.d.ts +7420 -6562
- package/dist/utils/ensure-scene-openings.d.ts.map +1 -1
- package/dist/utils/floor-piece-adoption.d.ts +2 -2
- package/dist/utils/floor-plate-migration.d.ts +3746 -3317
- package/dist/utils/floor-plate-migration.d.ts.map +1 -1
- package/dist/utils/floor-plate-migration.js +2 -2
- package/dist/utils/heal-scene-graph.d.ts +12 -0
- package/dist/utils/heal-scene-graph.d.ts.map +1 -1
- package/dist/utils/heal-scene-graph.js +40 -23
- package/dist/utils/legacy-wall-datums.d.ts.map +1 -1
- package/dist/utils/legacy-wall-datums.js +2 -2
- package/dist/utils/owned-floor-opening-migration.d.ts +3642 -3213
- package/dist/utils/owned-floor-opening-migration.d.ts.map +1 -1
- package/dist/utils/reconcile-structure-on-load.d.ts +3730 -7777
- package/dist/utils/reconcile-structure-on-load.d.ts.map +1 -1
- package/dist/utils/scene-migrations.d.ts +1 -1
- package/dist/utils/scene-migrations.d.ts.map +1 -1
- package/dist/utils/scene-migrations.js +1 -1
- package/dist/utils/semantic-equal.d.ts +3 -0
- package/dist/utils/semantic-equal.d.ts.map +1 -0
- package/dist/utils/semantic-equal.js +26 -0
- package/dist/utils/structure-id.d.ts.map +1 -1
- package/dist/utils/types.d.ts.map +1 -1
- package/dist/utils/wall-face-migration.d.ts +1 -1
- package/dist/utils/wall-face-migration.d.ts.map +1 -1
- package/package.json +36 -10
|
@@ -1,17 +1,32 @@
|
|
|
1
1
|
import { levelBuildingId } from '../building/level-duplication.js';
|
|
2
|
+
import { levelGradeStanding } from '../lib/grade-standing.js';
|
|
3
|
+
import { groundSeat } from '../lib/ground-seat.js';
|
|
2
4
|
import { getLevelDisplayName } from '../lib/level-name.js';
|
|
5
|
+
import { HIDDEN_SITE_NOTE } from '../lib/node-visibility.js';
|
|
6
|
+
import { wallSupportForNodes } from '../lib/opening-floor-datum.js';
|
|
3
7
|
import { detectOpenWallEnds } from '../lib/room-graph.js';
|
|
8
|
+
import { siteBrief } from '../lib/site-placement.js';
|
|
9
|
+
import { nodeRegistry } from '../registry/index.js';
|
|
4
10
|
import { AnyNode as AnyNodeSchema } from '../schema/index.js';
|
|
5
|
-
import {
|
|
11
|
+
import { nodeSchemaForKind } from '../schema/compiled-node-parsers.js';
|
|
12
|
+
import { isCeilingGeometry } from '../services/roof-level.js';
|
|
13
|
+
import { isRoofOnStoreyWalls } from '../services/roof-move.js';
|
|
14
|
+
import { getStoredLevelHeight, getWallCoveringSlabs, getWallTop } from '../services/storey.js';
|
|
15
|
+
import { getStoreyDatum } from '../services/storey-datum.js';
|
|
6
16
|
import { computeSegmentTransforms, rotateXZ } from '../systems/stair/stair-footprint.js';
|
|
7
|
-
import { resolveStairTotalRise } from '../systems/stair/stair-rise-query.js';
|
|
17
|
+
import { resolveStairTotalRise, stairClimbsToNoStorey, stairReachesStoreyAbove, } from '../systems/stair/stair-rise-query.js';
|
|
8
18
|
import { measureStair } from '../systems/stair/stair-sizing.js';
|
|
9
19
|
import { checkOpeningWithinWall, formatOpeningBoundsIssue } from '../validation/opening-bounds.js';
|
|
20
|
+
import { ceilingObjectObservations, } from './ceiling-object-observations.js';
|
|
10
21
|
import { layoutIssuesFromScene } from './layout-clearance.js';
|
|
11
22
|
import { wallResolvedHeight } from './level-reads.js';
|
|
12
23
|
import { pointInPolygon, polygonContainsPolygon } from './plan-geometry.js';
|
|
24
|
+
import { roomFindings } from './room-findings.js';
|
|
25
|
+
import { EMPTY_SESSION } from './scene-checkpoint.js';
|
|
13
26
|
import { changesSince } from './scene-measure.js';
|
|
14
27
|
import { contentCounts, levelIdOf, levelRole, levelsOf, nodesOnLevel, } from './scene-queries.js';
|
|
28
|
+
import { reviewSince } from './scene-review.js';
|
|
29
|
+
import { wallObjectObservations } from './wall-object-observations.js';
|
|
15
30
|
export const CHECKPOINT_ORDER = 100;
|
|
16
31
|
const checks = [];
|
|
17
32
|
const reports = [];
|
|
@@ -131,32 +146,90 @@ function parentListsChild(parent, childId) {
|
|
|
131
146
|
child.id === childId);
|
|
132
147
|
});
|
|
133
148
|
}
|
|
134
|
-
|
|
149
|
+
/** How many of a kind no schema knows an issue names. */
|
|
150
|
+
const UNKNOWN_KIND_IDS = 5;
|
|
151
|
+
/**
|
|
152
|
+
* A stored node with the fields its schema defaults filled where it lacks them (a level stored with
|
|
153
|
+
* no `children`), else the node itself: a host reads its own state by identity (the editor's
|
|
154
|
+
* rendered-mesh evidence checks the node is the store's current one).
|
|
155
|
+
*/
|
|
156
|
+
function withDefaults(node, parsed) {
|
|
157
|
+
const stored = node;
|
|
158
|
+
const filled = Object.entries(parsed).filter(([key, value]) => stored[key] === undefined && value !== undefined);
|
|
159
|
+
return filled.length === 0 ? node : { ...node, ...Object.fromEntries(filled) };
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Every node checked by its kind's schema: the host's where it lends one, else the registered
|
|
163
|
+
* kind's, else core's. The checks that measure read each node with its defaults filled. A node its schema
|
|
164
|
+
* rejects is listed field by field and left `unread`: they could not read it. A node of a kind no
|
|
165
|
+
* schema here knows (a plugin's, where the plugin is not loaded) is counted by kind and kept as
|
|
166
|
+
* stored: the checks never read it.
|
|
167
|
+
*/
|
|
168
|
+
function checkSchemas(scene, hostSchema) {
|
|
135
169
|
const errors = [];
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
170
|
+
const unknownKinds = new Map();
|
|
171
|
+
const unread = new Set();
|
|
172
|
+
const measured = {};
|
|
173
|
+
for (const [id, node] of Object.entries(scene)) {
|
|
174
|
+
const type = node?.type;
|
|
175
|
+
const schema = typeof type === 'string' && type !== ''
|
|
176
|
+
? (hostSchema?.(type) ?? nodeRegistry.get(type)?.schema ?? nodeSchemaForKind(type))
|
|
177
|
+
: AnyNodeSchema;
|
|
178
|
+
if (!schema) {
|
|
179
|
+
unknownKinds.set(String(type), [...(unknownKinds.get(String(type)) ?? []), id]);
|
|
180
|
+
measured[id] = node;
|
|
181
|
+
continue;
|
|
182
|
+
}
|
|
183
|
+
const parsed = schema.safeParse(node);
|
|
184
|
+
if (parsed.success) {
|
|
185
|
+
measured[id] = withDefaults(node, parsed.data);
|
|
139
186
|
continue;
|
|
187
|
+
}
|
|
140
188
|
for (const issue of parsed.error.issues)
|
|
141
189
|
errors.push({ nodeId: id, path: issue.path.join('.'), message: issue.message });
|
|
190
|
+
unread.add(id);
|
|
142
191
|
}
|
|
143
|
-
return errors;
|
|
192
|
+
return { errors, unknownKinds, unread, measured };
|
|
144
193
|
}
|
|
145
194
|
/**
|
|
146
|
-
* `verify_scene`: a self-check after complex edits. Per-level content and
|
|
147
|
-
* practical problem found, typed:
|
|
148
|
-
* with no
|
|
149
|
-
*
|
|
195
|
+
* `verify_scene`: a self-check after complex edits. Per-level content, roles and enclosed spaces,
|
|
196
|
+
* then every practical problem found, typed: spaces with no room, rooms the walls do not close or
|
|
197
|
+
* with no name, rooms missing floors or ceilings, roof levels misused, storeys with no stair,
|
|
198
|
+
* openings off their wall, stairs off their slab, blocked doors, overlapping furniture, and every
|
|
199
|
+
* field a node's schema rejects, by node and path; a kind no schema here knows, once per kind.
|
|
150
200
|
*/
|
|
151
|
-
export const verifyScene = (
|
|
201
|
+
export const verifyScene = (scene, input, context) => {
|
|
202
|
+
const { errors, unknownKinds, unread, measured: nodes } = checkSchemas(scene, context.nodeSchema);
|
|
152
203
|
const onLevel = (levelId) => nodesOnLevel(nodes, levelId);
|
|
153
204
|
const ofType = (content, type) => content.filter((node) => node.type === type);
|
|
205
|
+
// A level holding a node its schema rejects is measured once that node is fixed: around it, a
|
|
206
|
+
// room would read open for the wall left out, a door off its wall, a sofa far from any wall. So
|
|
207
|
+
// are its building's stairs, which a level, a slab or a stair left out would change.
|
|
208
|
+
const unreadOn = new Map();
|
|
209
|
+
const holdingUnread = new Set();
|
|
210
|
+
for (const id of unread) {
|
|
211
|
+
const levelId = levelIdOf(scene, id);
|
|
212
|
+
if (levelId)
|
|
213
|
+
unreadOn.set(levelId, [...(unreadOn.get(levelId) ?? []), id]);
|
|
214
|
+
for (let at = scene[id]?.parentId; at && !holdingUnread.has(at); at = scene[at]?.parentId)
|
|
215
|
+
holdingUnread.add(at);
|
|
216
|
+
}
|
|
217
|
+
// What the checks across levels read: the scene without the levels that wait.
|
|
218
|
+
const settled = unreadOn.size === 0
|
|
219
|
+
? nodes
|
|
220
|
+
: Object.fromEntries(Object.entries(nodes).filter(([id]) => !unreadOn.has(levelIdOf(scene, id) ?? '')));
|
|
221
|
+
// A roof level holds the roof, no rooms.
|
|
222
|
+
const rooms = new Map();
|
|
154
223
|
const levels = levelsOf(nodes).map((level) => {
|
|
155
224
|
const content = contentCounts(onLevel(level.id));
|
|
156
225
|
const { role, metadataRole, referenceLevelId } = levelRole(nodes, level);
|
|
226
|
+
const levelName = getLevelDisplayName(level);
|
|
227
|
+
const found = role === 'roof' ? { spaces: 0, issues: [] } : roomFindings(nodes, level.id, levelName);
|
|
228
|
+
rooms.set(level.id, found.issues);
|
|
229
|
+
const unreadIds = unreadOn.get(level.id);
|
|
157
230
|
return {
|
|
158
231
|
levelId: level.id,
|
|
159
|
-
levelName
|
|
232
|
+
levelName,
|
|
160
233
|
floorIndex: level.level,
|
|
161
234
|
role,
|
|
162
235
|
metadataRole,
|
|
@@ -166,15 +239,22 @@ export const verifyScene = (nodes, input, context) => {
|
|
|
166
239
|
isActive: level.id === context.activeLevelId,
|
|
167
240
|
isEmpty: Object.values(content).every((count) => count === 0),
|
|
168
241
|
content,
|
|
242
|
+
/** The spaces its walls and separators enclose. */
|
|
243
|
+
spaces: found.spaces,
|
|
244
|
+
/** Nodes on it its schema rejects: its counts leave them out, its findings wait for them. */
|
|
245
|
+
...(unreadIds && { unread: unreadIds }),
|
|
169
246
|
};
|
|
170
247
|
});
|
|
248
|
+
const buildingOf = (levelId) => levelBuildingId(nodes, nodes[levelId]);
|
|
171
249
|
const issues = [];
|
|
172
250
|
const report = (type, message, informational = false) => issues.push({ type, message, ...(informational ? { severity: 'info' } : {}) });
|
|
173
|
-
const empty = levels.filter((level) => level.isEmpty);
|
|
251
|
+
const empty = levels.filter((level) => level.isEmpty && !level.unread);
|
|
174
252
|
if (empty.length > 0)
|
|
175
253
|
report('empty_levels', `${empty.length} empty level(s): ${empty.map((level) => `${level.levelName} (${level.levelId})`).join(', ')}`);
|
|
176
254
|
for (const level of levels) {
|
|
177
255
|
const { content, levelName } = level;
|
|
256
|
+
if (level.unread)
|
|
257
|
+
continue;
|
|
178
258
|
// A free-standing wall (garden wall, half wall) is legitimate, not something to repair.
|
|
179
259
|
for (const end of detectOpenWallEnds(nodes, level.levelId)) {
|
|
180
260
|
if (end.reason === 'isolated')
|
|
@@ -190,15 +270,27 @@ export const verifyScene = (nodes, input, context) => {
|
|
|
190
270
|
});
|
|
191
271
|
}
|
|
192
272
|
if (level.role === 'roof') {
|
|
193
|
-
|
|
273
|
+
// Roof geometry a plugin draws (roof planes) is no `roof` node, and is still the roof.
|
|
274
|
+
if (onLevel(level.levelId).length === 0)
|
|
194
275
|
report('roof_level_no_roof', `${levelName} is a roof support level but has no roof geometry; add or move roof geometry there rather than deleting the support level to satisfy story count`);
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
276
|
+
const retainedCeilings = onLevel(level.levelId).filter((node) => node.type === 'item' && isCeilingGeometry(node)).length;
|
|
277
|
+
if (occupiedContent(content) - retainedCeilings > 0)
|
|
278
|
+
report('roof_level_occupied', `${levelName} is a roof support level but contains occupied-story content; move rooms, walls, stairs, slabs, native room ceilings, and ordinary items to an occupied story; roof geometry and classified retained ceiling shells can stay`);
|
|
279
|
+
// An empty storey counts: it is a floor still to be built, and the roof goes above it.
|
|
280
|
+
const storeyAbove = levels.find((other) => other.isOccupiedStory &&
|
|
281
|
+
other.floorIndex > level.floorIndex &&
|
|
282
|
+
buildingOf(other.levelId) === buildingOf(level.levelId));
|
|
283
|
+
if (storeyAbove)
|
|
284
|
+
report('roof_level_not_on_top', `${levelName} is a roof level below the storey ${storeyAbove.levelName} (${storeyAbove.levelId}): exploded and solo views show its roof inside the building. A building's roof level stays above its storeys: move the storey under it, or the roof onto the roof level on top.`);
|
|
200
285
|
continue;
|
|
201
286
|
}
|
|
287
|
+
// The ground line: a basement the stack stands at grade is drawn over the terrain, not in it.
|
|
288
|
+
const asNodes = nodes;
|
|
289
|
+
if (level.floorIndex < 0 && levelGradeStanding(asNodes, level.levelId) === 'at-grade')
|
|
290
|
+
report('basement_at_grade', `${levelName} is floor index ${level.floorIndex}, below the ground floor, but its floor stands at grade (${(getStoreyDatum(nodes, level.levelId)?.floorElevation ?? 0).toFixed(2)} m): its walls rise from the terrain instead of standing down in it. set_ground_level on the level that stands at grade (the floor over it) seats the building, and the levels under it read below grade.`, true);
|
|
291
|
+
const seat = groundSeat(asNodes, buildingOf(level.levelId) ?? '');
|
|
292
|
+
if (seat?.levelId === level.levelId && seat.explicit && !seat.seated)
|
|
293
|
+
report('ground_level_unseated', `${levelName} is the ground floor, but its floor datum stands ${seat.offset.toFixed(2)} m ${seat.offset > 0 ? 'over' : 'under'} grade (${seat.gradeElevation.toFixed(2)} m); a seated ground floor stands between grade and ${seat.aboveGrade} m (the top of the ${seat.foundation.construction.label} foundation) over it. set_ground_level on it seats the building.`, true);
|
|
202
294
|
if (content.walls > 0 && content.zones === 0)
|
|
203
295
|
report('walls_no_zones', `${levelName} has walls but no zones/rooms`);
|
|
204
296
|
if (content.zones > 0 && content.slabs === 0)
|
|
@@ -207,8 +299,36 @@ export const verifyScene = (nodes, input, context) => {
|
|
|
207
299
|
report('zones_no_ceilings', `${levelName} has zones but no ceilings`);
|
|
208
300
|
if (content.walls > 0 && content.doors === 0)
|
|
209
301
|
report('walls_no_doors', `${levelName} has walls but no doors`);
|
|
210
|
-
|
|
211
|
-
|
|
302
|
+
issues.push(...rooms.get(level.levelId));
|
|
303
|
+
// A roof standing on the walls of the storey holding it: the ones move_roofs_to_roof_level
|
|
304
|
+
// takes off. A porch's on its posts, a lower wing's on the walls below, are where they belong.
|
|
305
|
+
const onWalls = nodes[level.levelId].children.filter((id) => isRoofOnStoreyWalls(nodes, id));
|
|
306
|
+
if (onWalls.length > 0)
|
|
307
|
+
report('roof_mixed_in_storey', `${levelName} mixes roof geometry with occupied-level content; place roofs on a dedicated roof level for solo/exploded level views. On its own walls: ${onWalls.join(', ')}; move_roofs_to_roof_level with levelId ${level.levelId} moves them there as they stand (never delete and rebuild them); by hand, "Move to the roof level" on the roof's panel`);
|
|
308
|
+
}
|
|
309
|
+
for (const level of levels) {
|
|
310
|
+
for (const wall of ofType(onLevel(level.levelId), 'wall')) {
|
|
311
|
+
const base = wallSupportForNodes(wall, nodes).elevation;
|
|
312
|
+
const wallTop = getWallTop(wall, level.levelId, nodes, base);
|
|
313
|
+
for (const { slab, top: slabTop, underside: slabUnderside } of getWallCoveringSlabs(wall, level.levelId, nodes)) {
|
|
314
|
+
const penetration = Math.max(0, Math.min(wallTop, slabTop) - Math.max(base, slabUnderside));
|
|
315
|
+
const coplanar = Math.abs(wallTop - slabTop) <= 1e-6;
|
|
316
|
+
if (penetration <= 1e-6 && !coplanar)
|
|
317
|
+
continue;
|
|
318
|
+
issues.push({
|
|
319
|
+
type: 'wall_covering_slab_contact',
|
|
320
|
+
message: `Wall ${wall.id} top at ${wallTop.toFixed(3)}m intersects covering slab ${slab.id} [${slabUnderside.toFixed(3)}, ${slabTop.toFixed(3)}]m${coplanar ? ' and is coplanar with its walking surface' : ''}; check the wall height or the slab opening.`,
|
|
321
|
+
wallId: wall.id,
|
|
322
|
+
slabId: slab.id,
|
|
323
|
+
levelId: level.levelId,
|
|
324
|
+
wallTop,
|
|
325
|
+
slabUnderside,
|
|
326
|
+
slabTop,
|
|
327
|
+
penetration,
|
|
328
|
+
coplanar,
|
|
329
|
+
});
|
|
330
|
+
}
|
|
331
|
+
}
|
|
212
332
|
}
|
|
213
333
|
// Storeys are counted per building: separate buildings need no stair between them, and a wall
|
|
214
334
|
// can only span the storeys of its own building.
|
|
@@ -220,17 +340,20 @@ export const verifyScene = (nodes, input, context) => {
|
|
|
220
340
|
const buildingId = levelBuildingId(nodes, node) ?? '';
|
|
221
341
|
storeysByBuilding.set(buildingId, [...(storeysByBuilding.get(buildingId) ?? []), level]);
|
|
222
342
|
}
|
|
343
|
+
// Porch or deck steps, a flight to no level, stand on a storey without connecting it to another.
|
|
223
344
|
for (const [buildingId, storeys] of storeysByBuilding) {
|
|
224
345
|
if (storeys.length < 2)
|
|
225
346
|
continue;
|
|
226
|
-
|
|
347
|
+
if (holdingUnread.has(buildingId))
|
|
348
|
+
continue;
|
|
349
|
+
const connected = levels
|
|
227
350
|
.filter((level) => {
|
|
228
351
|
const node = nodes[level.levelId];
|
|
229
352
|
return (levelBuildingId(nodes, node) ?? '') === buildingId;
|
|
230
353
|
})
|
|
231
|
-
.
|
|
232
|
-
if (
|
|
233
|
-
report('missing_stair', `${nodes[buildingId]?.name ?? 'The building'} has ${storeys.length} storeys and no stair: add one on the ground floor, in the hall or entry, to connect them.`);
|
|
354
|
+
.some((level) => ofType(onLevel(level.levelId), 'stair').some((stair) => stairReachesStoreyAbove(stair, nodes)));
|
|
355
|
+
if (!connected)
|
|
356
|
+
report('missing_stair', `${nodes[buildingId]?.name ?? 'The building'} has ${storeys.length} storeys and no stair between them: add one on the ground floor, in the hall or entry, to connect them.`);
|
|
234
357
|
}
|
|
235
358
|
for (const storeys of storeysByBuilding.values()) {
|
|
236
359
|
if (storeys.length < 2)
|
|
@@ -245,7 +368,7 @@ export const verifyScene = (nodes, input, context) => {
|
|
|
245
368
|
}
|
|
246
369
|
}
|
|
247
370
|
}
|
|
248
|
-
for (const node of Object.values(
|
|
371
|
+
for (const node of Object.values(settled)) {
|
|
249
372
|
if (node.type !== 'door' && node.type !== 'window')
|
|
250
373
|
continue;
|
|
251
374
|
const parent = node.parentId ? nodes[node.parentId] : undefined;
|
|
@@ -260,16 +383,20 @@ export const verifyScene = (nodes, input, context) => {
|
|
|
260
383
|
for (const issue of checkOpeningWithinWall(node, parent, wallResolvedHeight(nodes, parent)))
|
|
261
384
|
report(issue.kind === 'along_wall' ? 'opening_outside_wall' : 'opening_outside_height', formatOpeningBoundsIssue(issue));
|
|
262
385
|
}
|
|
263
|
-
for (const stair of Object.values(
|
|
386
|
+
for (const stair of Object.values(settled).filter((node) => node.type === 'stair')) {
|
|
387
|
+
const sourceLevelId = levelIdOf(nodes, stair.id);
|
|
388
|
+
if (sourceLevelId && holdingUnread.has(buildingOf(sourceLevelId) ?? ''))
|
|
389
|
+
continue;
|
|
264
390
|
const stairName = stair.name ?? stair.id;
|
|
265
391
|
for (const diagnostic of measureStair(stair, nodes).diagnostics)
|
|
266
392
|
report(`stair_${diagnostic.code.replaceAll('-', '_')}`, `Stair ${stairName}: ${diagnostic.message}`, diagnostic.code.endsWith('-target'));
|
|
267
|
-
const sourceLevelId = levelIdOf(nodes, stair.id);
|
|
268
393
|
if (sourceLevelId) {
|
|
269
394
|
const sourceName = nodes[sourceLevelId]?.name ?? sourceLevelId;
|
|
270
395
|
const footprints = stairFootprintPolygons(nodes, stair);
|
|
271
396
|
const sourceSlabs = ofType(onLevel(sourceLevelId), 'slab');
|
|
397
|
+
// Porch, deck or garden steps start on the ground, off the floor slab.
|
|
272
398
|
if (sourceSlabs.length > 0 &&
|
|
399
|
+
!stairClimbsToNoStorey(stair, nodes) &&
|
|
273
400
|
footprints.some((footprint) => !sourceSlabs.some((slab) => polygonContainsPolygon(slab.polygon, footprint))))
|
|
274
401
|
report('stair_outside_slab', `Stair ${stairName} footprint extends outside source floor slab on ${sourceName}`);
|
|
275
402
|
for (const wall of ofType(onLevel(sourceLevelId), 'wall'))
|
|
@@ -310,25 +437,73 @@ export const verifyScene = (nodes, input, context) => {
|
|
|
310
437
|
report('stair_opening_outside_slab', `Stair ${stairName} opening extends outside slab ${slab.name ?? slab.id}`);
|
|
311
438
|
}
|
|
312
439
|
}
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
440
|
+
// Where each building stands on its lot: past the lot line or into the required yards is a
|
|
441
|
+
// problem, off-centre is not.
|
|
442
|
+
for (const building of Object.values(nodes)) {
|
|
443
|
+
if (building.type !== 'building')
|
|
444
|
+
continue;
|
|
445
|
+
const brief = siteBrief(nodes, { buildingId: building.id });
|
|
446
|
+
if (!brief)
|
|
447
|
+
continue;
|
|
448
|
+
const name = building.name ?? 'The building';
|
|
449
|
+
if (brief.buildable.state === 'none')
|
|
450
|
+
report('buildable_area_none', `The setbacks leave nothing to build on this lot: check the site's setbacks before standing ${name} on it.`);
|
|
451
|
+
const footprint = brief.footprint;
|
|
452
|
+
if (!footprint)
|
|
453
|
+
continue;
|
|
454
|
+
const sides = footprint.overhang.sides.join(', ');
|
|
455
|
+
if (footprint.fit === 'outside')
|
|
456
|
+
report('footprint_outside_site', `${name} reaches ${footprint.overhang.lotM.toFixed(1)} m past the lot line (${sides}): place_building centres it in the buildable area; a plan bigger than the lot needs saying so.`);
|
|
457
|
+
else if (footprint.fit === 'lot' && brief.buildable.state !== 'none')
|
|
458
|
+
report('footprint_outside_setbacks', `${name} stands ${footprint.overhang.setbacksM.toFixed(1)} m into the required yards (${sides}): place_building centres it in the buildable area.`);
|
|
459
|
+
}
|
|
460
|
+
for (const { nodeId, path, message } of errors)
|
|
461
|
+
issues.push({
|
|
462
|
+
type: 'schema_invalid',
|
|
463
|
+
message: `Schema: ${path ? `${nodeId}.${path}` : nodeId} ${message}`,
|
|
464
|
+
nodeId,
|
|
465
|
+
path,
|
|
466
|
+
});
|
|
467
|
+
for (const [kind, nodeIds] of unknownKinds)
|
|
468
|
+
issues.push({
|
|
469
|
+
type: 'schema_unknown_kind',
|
|
470
|
+
message: `No schema here knows kind ${kind} (${nodeIds.length} node${nodeIds.length === 1 ? '' : 's'}): a plugin's, not checked here.`,
|
|
471
|
+
severity: 'info',
|
|
472
|
+
kind,
|
|
473
|
+
count: nodeIds.length,
|
|
474
|
+
nodeIds: nodeIds.slice(0, UNKNOWN_KIND_IDS),
|
|
475
|
+
});
|
|
476
|
+
// A hidden site, read as stored: a malformed one is still hidden.
|
|
477
|
+
for (const [id, site] of Object.entries(scene))
|
|
478
|
+
if (site?.type === 'site' && site.visible === false)
|
|
479
|
+
issues.push({
|
|
480
|
+
type: 'site_hidden',
|
|
481
|
+
message: `Site ${id} is hidden. ${HIDDEN_SITE_NOTE}`,
|
|
482
|
+
severity: 'info',
|
|
483
|
+
nodeId: id,
|
|
484
|
+
});
|
|
318
485
|
// Door keep-outs and item–item footprint overlaps (rotation-aware).
|
|
319
|
-
issues.push(...layoutIssuesFromScene(Object.values(
|
|
486
|
+
issues.push(...layoutIssuesFromScene(Object.values(settled)));
|
|
487
|
+
issues.push(...ceilingObjectObservations(settled));
|
|
488
|
+
issues.push(...wallObjectObservations(settled));
|
|
320
489
|
for (const check of checks)
|
|
321
490
|
if (check.order < CHECKPOINT_ORDER)
|
|
322
|
-
issues.push(...check.run(
|
|
491
|
+
issues.push(...check.run(settled, input ?? {}));
|
|
323
492
|
// What the edits since the host's checkpoint lost, by place.
|
|
324
|
-
const
|
|
325
|
-
? changesSince(context.checkpoint,
|
|
493
|
+
const hosted = context.checkpoint
|
|
494
|
+
? changesSince(context.checkpoint, scene)
|
|
326
495
|
: null;
|
|
327
|
-
if (
|
|
328
|
-
issues.push(...
|
|
496
|
+
if (hosted)
|
|
497
|
+
issues.push(...hosted.issues);
|
|
498
|
+
// The look back: what the agent did since a moment it named. The places the registered families
|
|
499
|
+
// lost count as issues, as a window gone from its place always did.
|
|
500
|
+
const session = context.session ?? EMPTY_SESSION;
|
|
501
|
+
const since = typeof input?.since === 'string' ? reviewSince(session, input.since, scene) : null;
|
|
502
|
+
if (since?.places)
|
|
503
|
+
issues.push(...since.places.issues);
|
|
329
504
|
for (const check of checks)
|
|
330
505
|
if (check.order >= CHECKPOINT_ORDER)
|
|
331
|
-
issues.push(...check.run(
|
|
506
|
+
issues.push(...check.run(settled, input ?? {}));
|
|
332
507
|
const occupiedStoryCount = levels.filter((level) => level.isOccupiedStory).length;
|
|
333
508
|
return {
|
|
334
509
|
result: {
|
|
@@ -342,12 +517,16 @@ export const verifyScene = (nodes, input, context) => {
|
|
|
342
517
|
levels,
|
|
343
518
|
emptyLevelIds: empty.map((level) => level.levelId),
|
|
344
519
|
issues,
|
|
345
|
-
hasIssues: issues.some((issue) => issue.severity
|
|
520
|
+
hasIssues: issues.some((issue) => !('severity' in issue && issue.severity === 'info')),
|
|
346
521
|
...authoredObjects(nodes),
|
|
347
522
|
...Object.assign({}, ...reports.map((report) => report.run(nodes))),
|
|
348
|
-
...(
|
|
349
|
-
|
|
523
|
+
...(Object.keys(session.checkpoints).length
|
|
524
|
+
? { checkpoints: Object.keys(session.checkpoints) }
|
|
525
|
+
: {}),
|
|
526
|
+
...(hosted && {
|
|
527
|
+
sinceCheckpoint: { name: context.checkpoint.name, changes: hosted.changes },
|
|
350
528
|
}),
|
|
529
|
+
...(since && { since }),
|
|
351
530
|
},
|
|
352
531
|
};
|
|
353
532
|
};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { type WallFaceScriptInputs } from '../lib/wall-face-script.js';
|
|
2
|
+
import { type CompiledGeometryScript } from '../schema/index.js';
|
|
3
|
+
import type { WallFace } from '../schema/nodes/wall.js';
|
|
4
|
+
import type { AgentOperation } from './types.js';
|
|
5
|
+
export type SetWallFaceScriptInput = {
|
|
6
|
+
wallId: string;
|
|
7
|
+
face: WallFace;
|
|
8
|
+
/** The module compiled for `inputs` (`wallFaceScriptInputs` of the face, read before compiling). */
|
|
9
|
+
compiled: CompiledGeometryScript;
|
|
10
|
+
inputs: WallFaceScriptInputs;
|
|
11
|
+
/** Metres above the face's base the script stops at; absent, it covers the whole face. */
|
|
12
|
+
toHeight?: number;
|
|
13
|
+
} | {
|
|
14
|
+
wallId: string;
|
|
15
|
+
face: WallFace;
|
|
16
|
+
remove: true;
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* `setWallFaceScript`: one wall face's finish built by a three.js module, or the module taken off.
|
|
20
|
+
* The host reads the face (`wallFaceScriptInputs`), compiles the module for it (geometry-script
|
|
21
|
+
* `inputs`: the module reads `params.outline`, `params.holes`, `params.base`, `params.thickness`
|
|
22
|
+
* in the face's frame) and stores the artifacts; this writes the result on the wall, with the key
|
|
23
|
+
* of the face it was built for. When the wall or its openings change the script is stale and
|
|
24
|
+
* `refreshFinishScripts` runs it again. A script to the top owns the face's colours: paint on that
|
|
25
|
+
* face is refused while it is there.
|
|
26
|
+
*/
|
|
27
|
+
export declare const setWallFaceScript: AgentOperation<SetWallFaceScriptInput>;
|
|
28
|
+
//# sourceMappingURL=wall-face-script.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wall-face-script.d.ts","sourceRoot":"","sources":["../../src/agent-operations/wall-face-script.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,oBAAoB,EAG1B,MAAM,yBAAyB,CAAA;AAChC,OAAO,EAAE,KAAK,sBAAsB,EAAiC,MAAM,WAAW,CAAA;AACtF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAE7C,MAAM,MAAM,sBAAsB,GAC9B;IACE,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,QAAQ,CAAA;IACd,oGAAoG;IACpG,QAAQ,EAAE,sBAAsB,CAAA;IAChC,MAAM,EAAE,oBAAoB,CAAA;IAC5B,0FAA0F;IAC1F,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,GACD;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,IAAI,CAAA;CAAE,CAAA;AAIpD;;;;;;;;GAQG;AACH,eAAO,MAAM,iBAAiB,EAAE,cAAc,CAAC,sBAAsB,CAoEpE,CAAA"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { refuse } from '../agent-tools/refusal.js';
|
|
2
|
+
import { scriptedSize } from '../lib/geometry-script-node.js';
|
|
3
|
+
import { wallFaceScriptInputs, wallFaceScriptRecord, } from '../lib/wall-face-script.js';
|
|
4
|
+
import { WallFaceScript } from '../schema/index.js';
|
|
5
|
+
const round = (value) => Math.round(value * 1000) / 1000;
|
|
6
|
+
/**
|
|
7
|
+
* `setWallFaceScript`: one wall face's finish built by a three.js module, or the module taken off.
|
|
8
|
+
* The host reads the face (`wallFaceScriptInputs`), compiles the module for it (geometry-script
|
|
9
|
+
* `inputs`: the module reads `params.outline`, `params.holes`, `params.base`, `params.thickness`
|
|
10
|
+
* in the face's frame) and stores the artifacts; this writes the result on the wall, with the key
|
|
11
|
+
* of the face it was built for. When the wall or its openings change the script is stale and
|
|
12
|
+
* `refreshFinishScripts` runs it again. A script to the top owns the face's colours: paint on that
|
|
13
|
+
* face is refused while it is there.
|
|
14
|
+
*/
|
|
15
|
+
export const setWallFaceScript = (nodes, input) => {
|
|
16
|
+
const wall = nodes[input.wallId];
|
|
17
|
+
if (wall?.type !== 'wall')
|
|
18
|
+
refuse('target_not_found', `${input.wallId} is not a wall in the scene: nothing was changed.`, {
|
|
19
|
+
target: input.wallId,
|
|
20
|
+
});
|
|
21
|
+
const name = wall.name?.trim() || wall.id;
|
|
22
|
+
const { face } = input;
|
|
23
|
+
if ('remove' in input) {
|
|
24
|
+
if (!wall.finishScripts?.[face])
|
|
25
|
+
return { result: { ok: true, wallId: wall.id, face, removed: false } };
|
|
26
|
+
const { [face]: _, ...kept } = wall.finishScripts;
|
|
27
|
+
const finishScripts = Object.keys(kept).length ? kept : undefined;
|
|
28
|
+
return {
|
|
29
|
+
result: { ok: true, wallId: wall.id, face, removed: true },
|
|
30
|
+
changes: { update: [{ id: wall.id, data: { finishScripts } }] },
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
const { compiled, toHeight } = input;
|
|
34
|
+
if (compiled.language !== 'three')
|
|
35
|
+
refuse('three_only', `A wall face script is a three.js module: it is given the face, which a Blender build is not. Nothing was changed on ${name}.`, { target: wall.id });
|
|
36
|
+
if (toHeight !== undefined && !(toHeight > 0))
|
|
37
|
+
refuse('invalid_height', `toHeight is metres above the face's base, above 0: nothing was changed on ${name}.`, {
|
|
38
|
+
target: wall.id,
|
|
39
|
+
});
|
|
40
|
+
if (!wallFaceScriptInputs(nodes, wall.id, face, toHeight))
|
|
41
|
+
refuse('no_face', `${name}'s face ${face} has nothing a script can build on (a curved or curtain wall, or no height): nothing was changed.`, { target: wall.id });
|
|
42
|
+
const { min, max } = compiled.manifest.bounds;
|
|
43
|
+
if (![...min, ...max].every(Number.isFinite))
|
|
44
|
+
refuse('unmeasurable_object', `${name}'s face script built geometry that cannot be measured: a mesh in it has a position, rotation or scale that is not a number. Nothing was changed.`, { target: wall.id });
|
|
45
|
+
const script = WallFaceScript.parse(wallFaceScriptRecord(compiled, input.inputs, toHeight, wall.finishScripts?.[face]));
|
|
46
|
+
return {
|
|
47
|
+
result: {
|
|
48
|
+
ok: true,
|
|
49
|
+
wallId: wall.id,
|
|
50
|
+
face,
|
|
51
|
+
size: scriptedSize(compiled.manifest).map(round),
|
|
52
|
+
slots: compiled.manifest.slots.map((slot) => slot.id),
|
|
53
|
+
triangles: compiled.manifest.triangles,
|
|
54
|
+
note: toHeight === undefined
|
|
55
|
+
? `The script owns the colours of ${name}'s face ${face}: painting that face is refused until the script is removed. It runs again whenever the wall or its openings change.`
|
|
56
|
+
: `The script builds ${name}'s face ${face} up to ${round(toHeight)} m; the face above stays paintable. It runs again whenever the wall or its openings change.`,
|
|
57
|
+
},
|
|
58
|
+
changes: {
|
|
59
|
+
update: [{ id: wall.id, data: { finishScripts: { ...wall.finishScripts, [face]: script } } }],
|
|
60
|
+
},
|
|
61
|
+
};
|
|
62
|
+
};
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { type Ring } from '../lib/polygon-boolean.js';
|
|
2
|
+
import type { AnyNode } from '../schema/index.js';
|
|
3
|
+
type Vec3 = [number, number, number];
|
|
4
|
+
export type WallObjectFace = {
|
|
5
|
+
normal: Vec3;
|
|
6
|
+
depth: number;
|
|
7
|
+
polygon: Ring;
|
|
8
|
+
};
|
|
9
|
+
/** Geometry evidence in the host wall's local frame, after all corrective model transforms. */
|
|
10
|
+
export type WallObjectGeometry = {
|
|
11
|
+
corners: Vec3[];
|
|
12
|
+
faces: WallObjectFace[];
|
|
13
|
+
};
|
|
14
|
+
type Evidence = {
|
|
15
|
+
severity?: 'info';
|
|
16
|
+
itemId: string;
|
|
17
|
+
wallId: string;
|
|
18
|
+
levelId: string;
|
|
19
|
+
side: 'front' | 'back';
|
|
20
|
+
coordinateFrame: 'building';
|
|
21
|
+
bounds?: {
|
|
22
|
+
min: Vec3;
|
|
23
|
+
max: Vec3;
|
|
24
|
+
};
|
|
25
|
+
evidence: 'script_bounds' | 'rendered_bounds' | 'rendered_faces' | 'mount_orientation';
|
|
26
|
+
};
|
|
27
|
+
export type WallObjectObservation = Evidence & {
|
|
28
|
+
type: 'item_wall_body_overlap' | 'item_through_wall' | 'item_faces_wall' | 'item_wall_coplanar_face' | 'item_wall_object_coplanar_face';
|
|
29
|
+
message: string;
|
|
30
|
+
overlapDepthMeters?: number;
|
|
31
|
+
beyondOppositeFaceMeters?: number;
|
|
32
|
+
overlapAreaSquareMeters?: number;
|
|
33
|
+
frontDotOutward?: number;
|
|
34
|
+
otherItemId?: string;
|
|
35
|
+
separationMeters?: number;
|
|
36
|
+
toleranceMeters?: number;
|
|
37
|
+
};
|
|
38
|
+
/** Bounds contact is not exact mesh intersection; rendered face patches are assessed only when supplied. */
|
|
39
|
+
export declare function wallObjectObservations(nodes: Readonly<Record<string, AnyNode>>, rendered?: Readonly<Record<string, WallObjectGeometry>>): WallObjectObservation[];
|
|
40
|
+
export {};
|
|
41
|
+
//# sourceMappingURL=wall-object-observations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wall-object-observations.d.ts","sourceRoot":"","sources":["../../src/agent-operations/wall-object-observations.ts"],"names":[],"mappings":"AACA,OAAO,EAKL,KAAK,IAAI,EAEV,MAAM,wBAAwB,CAAA;AAQ/B,OAAO,KAAK,EAAE,OAAO,EAAsB,MAAM,WAAW,CAAA;AAI5D,KAAK,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;AACpC,MAAM,MAAM,cAAc,GAAG;IAAE,MAAM,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,IAAI,CAAA;CAAE,CAAA;AAC3E,+FAA+F;AAC/F,MAAM,MAAM,kBAAkB,GAAG;IAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAAC,KAAK,EAAE,cAAc,EAAE,CAAA;CAAE,CAAA;AAC7E,KAAK,QAAQ,GAAG;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,OAAO,GAAG,MAAM,CAAA;IACtB,eAAe,EAAE,UAAU,CAAA;IAC3B,MAAM,CAAC,EAAE;QAAE,GAAG,EAAE,IAAI,CAAC;QAAC,GAAG,EAAE,IAAI,CAAA;KAAE,CAAA;IACjC,QAAQ,EAAE,eAAe,GAAG,iBAAiB,GAAG,gBAAgB,GAAG,mBAAmB,CAAA;CACvF,CAAA;AACD,MAAM,MAAM,qBAAqB,GAAG,QAAQ,GAAG;IAC7C,IAAI,EACA,wBAAwB,GACxB,mBAAmB,GACnB,iBAAiB,GACjB,yBAAyB,GACzB,gCAAgC,CAAA;IACpC,OAAO,EAAE,MAAM,CAAA;IACf,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,wBAAwB,CAAC,EAAE,MAAM,CAAA;IACjC,uBAAuB,CAAC,EAAE,MAAM,CAAA;IAChC,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB,CAAA;AAiID,4GAA4G;AAC5G,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EACxC,QAAQ,GAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAM,GAC1D,qBAAqB,EAAE,CAoJzB"}
|