@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.
- package/dist/agent-operations/__fixtures__/add-object-cases.d.ts +31 -0
- package/dist/agent-operations/__fixtures__/add-object-cases.d.ts.map +1 -1
- package/dist/agent-operations/__fixtures__/build-room-cases.d.ts.map +1 -1
- package/dist/agent-operations/__fixtures__/build-room-cases.js +27 -0
- package/dist/agent-operations/__fixtures__/cases.d.ts.map +1 -1
- package/dist/agent-operations/__fixtures__/cases.js +19 -11
- package/dist/agent-operations/__fixtures__/design-brief-cases.d.ts +25 -2
- package/dist/agent-operations/__fixtures__/design-brief-cases.d.ts.map +1 -1
- package/dist/agent-operations/__fixtures__/design-brief-cases.js +509 -66
- package/dist/agent-operations/__fixtures__/dressing-scenes.d.ts +30 -0
- package/dist/agent-operations/__fixtures__/dressing-scenes.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/dressing-scenes.js +82 -0
- package/dist/agent-operations/__fixtures__/native-materials.d.ts +407 -9
- package/dist/agent-operations/__fixtures__/native-materials.d.ts.map +1 -1
- package/dist/agent-operations/__fixtures__/notation-cases.d.ts.map +1 -1
- package/dist/agent-operations/__fixtures__/notation-cases.js +14 -0
- package/dist/agent-operations/__fixtures__/roof-bearing-cases.d.ts +7253 -4053
- package/dist/agent-operations/__fixtures__/roof-bearing-cases.d.ts.map +1 -1
- package/dist/agent-operations/__fixtures__/room-cases.d.ts +1 -0
- package/dist/agent-operations/__fixtures__/room-cases.d.ts.map +1 -1
- package/dist/agent-operations/__fixtures__/room-cases.js +57 -1
- package/dist/agent-operations/__fixtures__/room-check-scenes.d.ts +51 -0
- package/dist/agent-operations/__fixtures__/room-check-scenes.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/room-check-scenes.js +121 -0
- package/dist/agent-operations/__fixtures__/scene-check-cases.d.ts.map +1 -1
- package/dist/agent-operations/__fixtures__/scene-check-cases.js +152 -18
- package/dist/agent-operations/__fixtures__/search-assets-cases.d.ts.map +1 -1
- package/dist/agent-operations/__fixtures__/search-assets-cases.js +91 -0
- package/dist/agent-operations/__fixtures__/site-cases.d.ts +40 -1
- package/dist/agent-operations/__fixtures__/site-cases.d.ts.map +1 -1
- package/dist/agent-operations/__fixtures__/structure-cases.d.ts +3 -0
- package/dist/agent-operations/__fixtures__/structure-cases.d.ts.map +1 -1
- package/dist/agent-operations/__fixtures__/structure-cases.js +199 -18
- package/dist/agent-operations/__fixtures__/unit-cases.d.ts +6 -0
- package/dist/agent-operations/__fixtures__/unit-cases.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/unit-cases.js +266 -0
- package/dist/agent-operations/__fixtures__/verify-scene-cases.d.ts +109 -73
- package/dist/agent-operations/__fixtures__/verify-scene-cases.d.ts.map +1 -1
- package/dist/agent-operations/add-column.d.ts.map +1 -1
- package/dist/agent-operations/add-column.js +32 -3
- package/dist/agent-operations/add-fence.d.ts.map +1 -1
- package/dist/agent-operations/add-fence.js +2 -1
- package/dist/agent-operations/add-level.d.ts.map +1 -1
- package/dist/agent-operations/add-level.js +4 -4
- package/dist/agent-operations/add-object.d.ts +32 -6
- package/dist/agent-operations/add-object.d.ts.map +1 -1
- package/dist/agent-operations/add-object.js +59 -12
- package/dist/agent-operations/add-wall.d.ts +3 -8
- package/dist/agent-operations/add-wall.d.ts.map +1 -1
- package/dist/agent-operations/add-wall.js +31 -8
- package/dist/agent-operations/apply-changes.d.ts.map +1 -1
- package/dist/agent-operations/apply-changes.js +2 -1
- package/dist/agent-operations/asset-catalog.d.ts +63 -0
- package/dist/agent-operations/asset-catalog.d.ts.map +1 -0
- package/dist/agent-operations/asset-catalog.js +182 -0
- package/dist/agent-operations/asset-views.d.ts +4 -2
- package/dist/agent-operations/asset-views.d.ts.map +1 -1
- package/dist/agent-operations/asset-views.js +1 -3
- package/dist/agent-operations/author-scene-checks.d.ts +38 -0
- package/dist/agent-operations/author-scene-checks.d.ts.map +1 -0
- package/dist/agent-operations/author-scene-checks.js +266 -0
- package/dist/agent-operations/author-scene.d.ts +54 -20
- package/dist/agent-operations/author-scene.d.ts.map +1 -1
- package/dist/agent-operations/author-scene.js +1164 -196
- package/dist/agent-operations/authored-scene-merge.d.ts.map +1 -1
- package/dist/agent-operations/authored-scene-merge.js +61 -3
- package/dist/agent-operations/batch.d.ts +1 -1
- package/dist/agent-operations/batch.d.ts.map +1 -1
- package/dist/agent-operations/batch.js +38 -39
- package/dist/agent-operations/ceiling-object-observations.d.ts.map +1 -1
- package/dist/agent-operations/ceiling-object-observations.js +5 -4
- package/dist/agent-operations/circulation-geometry.d.ts +14 -0
- package/dist/agent-operations/circulation-geometry.d.ts.map +1 -0
- package/dist/agent-operations/circulation-geometry.js +151 -0
- package/dist/agent-operations/circulation-graph.d.ts +72 -0
- package/dist/agent-operations/circulation-graph.d.ts.map +1 -0
- package/dist/agent-operations/circulation-graph.js +713 -0
- package/dist/agent-operations/circulation-non-spaces.d.ts +10 -0
- package/dist/agent-operations/circulation-non-spaces.d.ts.map +1 -0
- package/dist/agent-operations/circulation-non-spaces.js +88 -0
- package/dist/agent-operations/circulation-spaces.d.ts +5880 -0
- package/dist/agent-operations/circulation-spaces.d.ts.map +1 -0
- package/dist/agent-operations/circulation-spaces.js +368 -0
- package/dist/agent-operations/collections.d.ts.map +1 -1
- package/dist/agent-operations/collections.js +9 -7
- package/dist/agent-operations/corner-window.d.ts.map +1 -1
- package/dist/agent-operations/corner-window.js +2 -4
- package/dist/agent-operations/create-roof.d.ts.map +1 -1
- package/dist/agent-operations/create-roof.js +5 -7
- package/dist/agent-operations/create-room.d.ts +4 -1
- package/dist/agent-operations/create-room.d.ts.map +1 -1
- package/dist/agent-operations/create-room.js +7 -4
- package/dist/agent-operations/create-stair.js +2 -2
- package/dist/agent-operations/design-brief.d.ts +13 -7
- package/dist/agent-operations/design-brief.d.ts.map +1 -1
- package/dist/agent-operations/design-brief.js +172 -92
- package/dist/agent-operations/door-clearance.d.ts +68 -8
- package/dist/agent-operations/door-clearance.d.ts.map +1 -1
- package/dist/agent-operations/door-clearance.js +127 -20
- package/dist/agent-operations/dress-targets.d.ts +23 -0
- package/dist/agent-operations/dress-targets.d.ts.map +1 -0
- package/dist/agent-operations/dress-targets.js +34 -0
- package/dist/agent-operations/duplicate-node.d.ts +14 -0
- package/dist/agent-operations/duplicate-node.d.ts.map +1 -0
- package/dist/agent-operations/duplicate-node.js +173 -0
- package/dist/agent-operations/find-by-type.d.ts.map +1 -1
- package/dist/agent-operations/find-by-type.js +3 -0
- package/dist/agent-operations/furnish-room.d.ts +2 -0
- package/dist/agent-operations/furnish-room.d.ts.map +1 -1
- package/dist/agent-operations/furnish-room.js +15 -4
- package/dist/agent-operations/furniture-kind.d.ts +28 -1
- package/dist/agent-operations/furniture-kind.d.ts.map +1 -1
- package/dist/agent-operations/furniture-kind.js +105 -6
- package/dist/agent-operations/ground-reader.d.ts +10 -0
- package/dist/agent-operations/ground-reader.d.ts.map +1 -0
- package/dist/agent-operations/ground-reader.js +25 -0
- package/dist/agent-operations/index.d.ts +118 -12
- package/dist/agent-operations/index.d.ts.map +1 -1
- package/dist/agent-operations/index.js +26 -1
- package/dist/agent-operations/item-solids.d.ts +39 -0
- package/dist/agent-operations/item-solids.d.ts.map +1 -0
- package/dist/agent-operations/item-solids.js +128 -0
- package/dist/agent-operations/layout-clearance.d.ts +91 -11
- package/dist/agent-operations/layout-clearance.d.ts.map +1 -1
- package/dist/agent-operations/layout-clearance.js +280 -73
- package/dist/agent-operations/level-height-fill.d.ts.map +1 -1
- package/dist/agent-operations/level-height-fill.js +7 -1
- package/dist/agent-operations/level-reads.d.ts +5 -0
- package/dist/agent-operations/level-reads.d.ts.map +1 -1
- package/dist/agent-operations/level-reads.js +38 -2
- package/dist/agent-operations/list-levels.d.ts.map +1 -1
- package/dist/agent-operations/list-levels.js +2 -4
- package/dist/agent-operations/move-node.d.ts +12 -0
- package/dist/agent-operations/move-node.d.ts.map +1 -0
- package/dist/agent-operations/move-node.js +28 -0
- package/dist/agent-operations/move-plan.d.ts +28 -0
- package/dist/agent-operations/move-plan.d.ts.map +1 -0
- package/dist/agent-operations/move-plan.js +257 -0
- package/dist/agent-operations/node-patch.d.ts.map +1 -1
- package/dist/agent-operations/node-patch.js +15 -0
- package/dist/agent-operations/paint.d.ts +3 -1
- package/dist/agent-operations/paint.d.ts.map +1 -1
- package/dist/agent-operations/paint.js +14 -1
- package/dist/agent-operations/photo-elevation.d.ts.map +1 -1
- package/dist/agent-operations/photo-elevation.js +2 -1
- package/dist/agent-operations/place-in-room.d.ts.map +1 -1
- package/dist/agent-operations/place-in-room.js +1 -0
- package/dist/agent-operations/place-items.d.ts.map +1 -1
- package/dist/agent-operations/place-items.js +3 -4
- package/dist/agent-operations/plan-clearance.d.ts +28 -0
- package/dist/agent-operations/plan-clearance.d.ts.map +1 -0
- package/dist/agent-operations/plan-clearance.js +47 -0
- package/dist/agent-operations/plan-geometry.d.ts +2 -0
- package/dist/agent-operations/plan-geometry.d.ts.map +1 -1
- package/dist/agent-operations/plan-geometry.js +10 -0
- package/dist/agent-operations/project-files.d.ts +10 -0
- package/dist/agent-operations/project-files.d.ts.map +1 -1
- package/dist/agent-operations/reachability.d.ts +41 -0
- package/dist/agent-operations/reachability.d.ts.map +1 -0
- package/dist/agent-operations/reachability.js +199 -0
- package/dist/agent-operations/room-checks.d.ts +60 -0
- package/dist/agent-operations/room-checks.d.ts.map +1 -0
- package/dist/agent-operations/room-checks.js +226 -0
- package/dist/agent-operations/room-faces.d.ts +30 -0
- package/dist/agent-operations/room-faces.d.ts.map +1 -0
- package/dist/agent-operations/room-faces.js +31 -0
- package/dist/agent-operations/room-findings.d.ts +5 -2
- package/dist/agent-operations/room-findings.d.ts.map +1 -1
- package/dist/agent-operations/room-findings.js +30 -0
- package/dist/agent-operations/room-finishes.d.ts +87 -0
- package/dist/agent-operations/room-finishes.d.ts.map +1 -0
- package/dist/agent-operations/room-finishes.js +193 -0
- package/dist/agent-operations/room-floor-script.d.ts +3 -3
- package/dist/agent-operations/room-floor-script.js +3 -3
- package/dist/agent-operations/room-readings.d.ts +90 -0
- package/dist/agent-operations/room-readings.d.ts.map +1 -0
- package/dist/agent-operations/room-readings.js +369 -0
- package/dist/agent-operations/room-tile.d.ts +15 -0
- package/dist/agent-operations/room-tile.d.ts.map +1 -0
- package/dist/agent-operations/room-tile.js +30 -0
- package/dist/agent-operations/room-wet.d.ts +55 -0
- package/dist/agent-operations/room-wet.d.ts.map +1 -0
- package/dist/agent-operations/room-wet.js +203 -0
- package/dist/agent-operations/scene-check-policy.d.ts +5 -0
- package/dist/agent-operations/scene-check-policy.d.ts.map +1 -0
- package/dist/agent-operations/scene-check-policy.js +24 -0
- package/dist/agent-operations/scene-checkpoint.d.ts +10 -0
- package/dist/agent-operations/scene-checkpoint.d.ts.map +1 -1
- package/dist/agent-operations/scene-checkpoint.js +31 -0
- package/dist/agent-operations/scene-issue-groups.d.ts +17 -0
- package/dist/agent-operations/scene-issue-groups.d.ts.map +1 -0
- package/dist/agent-operations/scene-issue-groups.js +71 -0
- package/dist/agent-operations/scene-materials.d.ts +23 -0
- package/dist/agent-operations/scene-materials.d.ts.map +1 -1
- package/dist/agent-operations/scene-materials.js +41 -0
- package/dist/agent-operations/scene-queries.d.ts +1667 -866
- package/dist/agent-operations/scene-queries.d.ts.map +1 -1
- package/dist/agent-operations/scene-queries.js +3 -3
- package/dist/agent-operations/scene-review.d.ts.map +1 -1
- package/dist/agent-operations/scene-review.js +3 -2
- package/dist/agent-operations/scene-view.d.ts.map +1 -1
- package/dist/agent-operations/scene-view.js +91 -21
- package/dist/agent-operations/search-assets.d.ts +10 -6
- package/dist/agent-operations/search-assets.d.ts.map +1 -1
- package/dist/agent-operations/search-assets.js +37 -22
- package/dist/agent-operations/set-checkpoint.d.ts.map +1 -1
- package/dist/agent-operations/set-checkpoint.js +1 -0
- package/dist/agent-operations/set-ground-level.d.ts +1 -1
- package/dist/agent-operations/set-ground-level.d.ts.map +1 -1
- package/dist/agent-operations/set-ground-level.js +3 -14
- package/dist/agent-operations/site.js +3 -2
- package/dist/agent-operations/slab-surface-script.d.ts +25 -0
- package/dist/agent-operations/slab-surface-script.d.ts.map +1 -0
- package/dist/agent-operations/slab-surface-script.js +60 -0
- package/dist/agent-operations/stair-plan-footprint.d.ts +9 -0
- package/dist/agent-operations/stair-plan-footprint.d.ts.map +1 -0
- package/dist/agent-operations/stair-plan-footprint.js +50 -0
- package/dist/agent-operations/types.d.ts +10 -5
- package/dist/agent-operations/types.d.ts.map +1 -1
- package/dist/agent-operations/units.d.ts +26 -0
- package/dist/agent-operations/units.d.ts.map +1 -0
- package/dist/agent-operations/units.js +110 -0
- package/dist/agent-operations/unreachable-rooms-check.d.ts +17 -0
- package/dist/agent-operations/unreachable-rooms-check.d.ts.map +1 -0
- package/dist/agent-operations/unreachable-rooms-check.js +35 -0
- package/dist/agent-operations/usage-checks.d.ts +2 -0
- package/dist/agent-operations/usage-checks.d.ts.map +1 -0
- package/dist/agent-operations/usage-checks.js +12 -0
- package/dist/agent-operations/verify-scene.d.ts +8 -11
- package/dist/agent-operations/verify-scene.d.ts.map +1 -1
- package/dist/agent-operations/verify-scene.js +55 -11
- package/dist/agent-operations/wall-face-defaults.d.ts +44 -0
- package/dist/agent-operations/wall-face-defaults.d.ts.map +1 -0
- package/dist/agent-operations/wall-face-defaults.js +229 -0
- package/dist/agent-operations/wall-joins.d.ts +119 -0
- package/dist/agent-operations/wall-joins.d.ts.map +1 -0
- package/dist/agent-operations/wall-joins.js +308 -0
- package/dist/agent-operations/wall-object-observations.d.ts.map +1 -1
- package/dist/agent-operations/wall-object-observations.js +4 -6
- package/dist/agent-operations/wall-skirting.d.ts.map +1 -1
- package/dist/agent-operations/wall-skirting.js +2 -0
- package/dist/agent-operations/wall-type.d.ts +49 -0
- package/dist/agent-operations/wall-type.d.ts.map +1 -0
- package/dist/agent-operations/wall-type.js +31 -0
- package/dist/agent-operations/zone-coverage.d.ts +85 -0
- package/dist/agent-operations/zone-coverage.d.ts.map +1 -0
- package/dist/agent-operations/zone-coverage.js +208 -0
- package/dist/agent-tools/add-object.d.ts +31 -0
- package/dist/agent-tools/add-object.d.ts.map +1 -1
- package/dist/agent-tools/add-object.js +44 -7
- package/dist/agent-tools/assets.d.ts +4 -0
- package/dist/agent-tools/assets.d.ts.map +1 -1
- package/dist/agent-tools/assets.js +11 -1
- package/dist/agent-tools/author-scene.d.ts +810 -15
- package/dist/agent-tools/author-scene.d.ts.map +1 -1
- package/dist/agent-tools/author-scene.js +275 -34
- package/dist/agent-tools/batch.d.ts +1 -1
- package/dist/agent-tools/batch.d.ts.map +1 -1
- package/dist/agent-tools/batch.js +5 -1
- package/dist/agent-tools/checkpoints.js +1 -1
- package/dist/agent-tools/columns.d.ts +14 -0
- package/dist/agent-tools/columns.d.ts.map +1 -1
- package/dist/agent-tools/columns.js +14 -2
- package/dist/agent-tools/contract.d.ts +10 -0
- package/dist/agent-tools/contract.d.ts.map +1 -1
- package/dist/agent-tools/contract.js +5 -1
- package/dist/agent-tools/corner-window.d.ts +1 -0
- package/dist/agent-tools/corner-window.d.ts.map +1 -1
- package/dist/agent-tools/corner-window.js +1 -1
- package/dist/agent-tools/create-room.d.ts +85 -0
- package/dist/agent-tools/create-room.d.ts.map +1 -1
- package/dist/agent-tools/create-room.js +8 -1
- package/dist/agent-tools/design-brief.d.ts +513 -7
- package/dist/agent-tools/design-brief.d.ts.map +1 -1
- package/dist/agent-tools/design-brief.js +192 -14
- package/dist/agent-tools/designs.js +1 -1
- package/dist/agent-tools/find-by-type.js +1 -1
- package/dist/agent-tools/index.d.ts +658 -10
- package/dist/agent-tools/index.d.ts.map +1 -1
- package/dist/agent-tools/index.js +9 -1
- package/dist/agent-tools/levels.js +4 -4
- package/dist/agent-tools/move-duplicate.d.ts +65 -0
- package/dist/agent-tools/move-duplicate.d.ts.map +1 -0
- package/dist/agent-tools/move-duplicate.js +68 -0
- package/dist/agent-tools/paint.d.ts +6 -0
- package/dist/agent-tools/paint.d.ts.map +1 -1
- package/dist/agent-tools/paint.js +7 -3
- package/dist/agent-tools/photo-elevation.js +1 -1
- package/dist/agent-tools/project-files.d.ts +2 -2
- package/dist/agent-tools/project-files.d.ts.map +1 -1
- package/dist/agent-tools/project-files.js +1 -1
- package/dist/agent-tools/refusal.d.ts +9 -1
- package/dist/agent-tools/refusal.d.ts.map +1 -1
- package/dist/agent-tools/refusal.js +5 -1
- package/dist/agent-tools/roofs.js +1 -1
- package/dist/agent-tools/room-structure.d.ts +60 -0
- package/dist/agent-tools/room-structure.d.ts.map +1 -1
- package/dist/agent-tools/room-structure.js +20 -1
- package/dist/agent-tools/search-materials.d.ts +1 -0
- package/dist/agent-tools/search-materials.d.ts.map +1 -1
- package/dist/agent-tools/site.js +1 -1
- package/dist/agent-tools/stairs.js +1 -1
- package/dist/agent-tools/units.d.ts +84 -0
- package/dist/agent-tools/units.d.ts.map +1 -0
- package/dist/agent-tools/units.js +54 -0
- package/dist/agent-tools/verify-scene-usage.d.ts +44 -0
- package/dist/agent-tools/verify-scene-usage.d.ts.map +1 -0
- package/dist/agent-tools/verify-scene-usage.js +146 -0
- package/dist/agent-tools/verify-scene.d.ts +12 -1
- package/dist/agent-tools/verify-scene.d.ts.map +1 -1
- package/dist/agent-tools/verify-scene.js +183 -3
- package/dist/agent-tools/view-scene.d.ts +3 -0
- package/dist/agent-tools/view-scene.d.ts.map +1 -1
- package/dist/agent-tools/view-scene.js +4 -1
- package/dist/agent-tools/wall-openings.d.ts +121 -2
- package/dist/agent-tools/wall-openings.d.ts.map +1 -1
- package/dist/agent-tools/wall-openings.js +123 -18
- package/dist/agent-tools/walls.d.ts +30 -0
- package/dist/agent-tools/walls.d.ts.map +1 -1
- package/dist/agent-tools/walls.js +54 -2
- package/dist/building/__fixtures__/wall-opening-cases.d.ts +340 -195
- package/dist/building/__fixtures__/wall-opening-cases.d.ts.map +1 -1
- package/dist/building/__fixtures__/wall-opening-cases.js +13 -0
- package/dist/building/code-profile.d.ts +231 -0
- package/dist/building/code-profile.d.ts.map +1 -0
- package/dist/building/code-profile.js +208 -0
- package/dist/building/corner-window.d.ts +2 -2
- package/dist/building/corner-window.d.ts.map +1 -1
- package/dist/building/corner-window.js +11 -2
- package/dist/building/door-types.d.ts +1 -0
- package/dist/building/door-types.d.ts.map +1 -1
- package/dist/building/door-types.js +2 -0
- package/dist/building/floor-item-fit.d.ts.map +1 -1
- package/dist/building/floor-item-fit.js +2 -4
- package/dist/building/ground-level.d.ts +1 -3
- package/dist/building/ground-level.d.ts.map +1 -1
- package/dist/building/ground-level.js +3 -5
- package/dist/building/index.d.ts +2 -0
- package/dist/building/index.d.ts.map +1 -1
- package/dist/building/index.js +2 -0
- package/dist/building/level-duplication.d.ts +5951 -4351
- package/dist/building/level-duplication.d.ts.map +1 -1
- package/dist/building/level-insertion.d.ts +1 -1
- package/dist/building/level-wall-copy.d.ts +24 -0
- package/dist/building/level-wall-copy.d.ts.map +1 -0
- package/dist/building/level-wall-copy.js +53 -0
- package/dist/building/merge-windows.d.ts.map +1 -1
- package/dist/building/merge-windows.js +1 -0
- package/dist/building/opening-style-presets.d.ts +2 -0
- package/dist/building/opening-style-presets.d.ts.map +1 -1
- package/dist/building/opening-style-presets.js +26 -5
- package/dist/building/room-use.d.ts +26 -0
- package/dist/building/room-use.d.ts.map +1 -0
- package/dist/building/room-use.js +102 -0
- package/dist/building/wall-openings.d.ts +115 -7
- package/dist/building/wall-openings.d.ts.map +1 -1
- package/dist/building/wall-openings.js +121 -29
- package/dist/building/window-types.d.ts +1 -0
- package/dist/building/window-types.d.ts.map +1 -1
- package/dist/building/window-types.js +3 -0
- package/dist/coherence/__fixtures__/enclosure-scenes.d.ts +84 -0
- package/dist/coherence/__fixtures__/enclosure-scenes.d.ts.map +1 -0
- package/dist/coherence/__fixtures__/enclosure-scenes.js +44 -0
- package/dist/commands/structure/attached-walls.d.ts +16 -0
- package/dist/commands/structure/attached-walls.d.ts.map +1 -0
- package/dist/commands/structure/attached-walls.js +53 -0
- package/dist/commands/structure/index.d.ts +3 -0
- package/dist/commands/structure/index.d.ts.map +1 -1
- package/dist/commands/structure/index.js +3 -0
- package/dist/commands/structure/move-separators.d.ts +62 -0
- package/dist/commands/structure/move-separators.d.ts.map +1 -0
- package/dist/commands/structure/move-separators.js +346 -0
- package/dist/commands/structure/set-floor-foundation.d.ts +5 -0
- package/dist/commands/structure/set-floor-foundation.d.ts.map +1 -1
- package/dist/commands/structure/set-wall-geometry.d.ts.map +1 -1
- package/dist/commands/structure/set-wall-geometry.js +44 -11
- package/dist/commands/structure/set-zone-intent.d.ts +26 -0
- package/dist/commands/structure/set-zone-intent.d.ts.map +1 -1
- package/dist/commands/structure/set-zone-intent.js +107 -2
- package/dist/commands/structure/shared.d.ts +888 -88
- package/dist/commands/structure/shared.d.ts.map +1 -1
- package/dist/commands/structure/wall-overlap.d.ts +45 -0
- package/dist/commands/structure/wall-overlap.d.ts.map +1 -0
- package/dist/commands/structure/wall-overlap.js +289 -0
- package/dist/commands/structure/zone-wall-merge.d.ts +3326 -2370
- package/dist/commands/structure/zone-wall-merge.d.ts.map +1 -1
- package/dist/contracts/reference-discovery.d.ts +2 -2
- package/dist/contracts/reference-discovery.d.ts.map +1 -1
- package/dist/contracts/reference-discovery.js +5 -3
- package/dist/contracts/reference-inventory.d.ts.map +1 -1
- package/dist/contracts/reference-inventory.js +75 -24
- package/dist/events/bus.d.ts +15 -2
- package/dist/events/bus.d.ts.map +1 -1
- package/dist/hooks/spatial-grid/built-in-floor-placed.d.ts +40 -0
- package/dist/hooks/spatial-grid/built-in-floor-placed.d.ts.map +1 -0
- package/dist/hooks/spatial-grid/built-in-floor-placed.js +220 -0
- package/dist/hooks/spatial-grid/floor-placed-elevation.d.ts.map +1 -1
- package/dist/hooks/spatial-grid/floor-placed-elevation.js +13 -7
- package/dist/hooks/spatial-grid/spatial-grid-manager.d.ts +56 -1
- package/dist/hooks/spatial-grid/spatial-grid-manager.d.ts.map +1 -1
- package/dist/hooks/spatial-grid/spatial-grid-manager.js +177 -27
- package/dist/hooks/spatial-grid/spatial-grid-sync.d.ts +1631 -831
- package/dist/hooks/spatial-grid/spatial-grid-sync.d.ts.map +1 -1
- package/dist/hooks/spatial-grid/spatial-grid-sync.js +24 -1
- package/dist/hooks/spatial-grid/support-host-patch.js +10 -10
- package/dist/i18n/format.d.ts +41 -0
- package/dist/i18n/format.d.ts.map +1 -0
- package/dist/i18n/format.js +124 -0
- package/dist/i18n/index.d.ts +5 -0
- package/dist/i18n/index.d.ts.map +1 -0
- package/dist/i18n/index.js +3 -0
- package/dist/i18n/registry.d.ts +78 -0
- package/dist/i18n/registry.d.ts.map +1 -0
- package/dist/i18n/registry.js +252 -0
- package/dist/i18n/use-translate.d.ts +16 -0
- package/dist/i18n/use-translate.d.ts.map +1 -0
- package/dist/i18n/use-translate.js +23 -0
- package/dist/index.d.ts +32 -16
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +31 -15
- package/dist/lib/__fixtures__/mezzanine.d.ts +6840 -4169
- package/dist/lib/__fixtures__/mezzanine.d.ts.map +1 -1
- package/dist/lib/absorb-wall-separators.d.ts +2128 -1328
- package/dist/lib/absorb-wall-separators.d.ts.map +1 -1
- package/dist/lib/beam.d.ts +137 -0
- package/dist/lib/beam.d.ts.map +1 -0
- package/dist/lib/beam.js +297 -0
- package/dist/lib/below-grade-footprints.d.ts +13 -5
- package/dist/lib/below-grade-footprints.d.ts.map +1 -1
- package/dist/lib/below-grade-footprints.js +53 -10
- package/dist/lib/build-up.d.ts +89 -0
- package/dist/lib/build-up.d.ts.map +1 -0
- package/dist/lib/build-up.js +216 -0
- package/dist/lib/corner-pair.d.ts +205 -4
- package/dist/lib/corner-pair.d.ts.map +1 -1
- package/dist/lib/deck-boards.d.ts +80 -0
- package/dist/lib/deck-boards.d.ts.map +1 -0
- package/dist/lib/deck-boards.js +184 -0
- package/dist/lib/deck-framing.d.ts +150 -0
- package/dist/lib/deck-framing.d.ts.map +1 -0
- package/dist/lib/deck-framing.js +515 -0
- package/dist/lib/deepest-drawn.d.ts +3 -6
- package/dist/lib/deepest-drawn.d.ts.map +1 -1
- package/dist/lib/deepest-drawn.js +4 -8
- package/dist/lib/door-opening.d.ts +19 -0
- package/dist/lib/door-opening.d.ts.map +1 -0
- package/dist/lib/door-opening.js +27 -0
- package/dist/lib/door-operation.d.ts +2 -0
- package/dist/lib/door-operation.d.ts.map +1 -1
- package/dist/lib/door-operation.js +4 -0
- package/dist/lib/exterior-wall-loops.d.ts.map +1 -1
- package/dist/lib/exterior-wall-loops.js +2 -1
- package/dist/lib/finish-script.d.ts +5 -5
- package/dist/lib/finish-script.d.ts.map +1 -1
- package/dist/lib/finish-script.js +12 -5
- package/dist/lib/floor-footprint-name.d.ts +17 -0
- package/dist/lib/floor-footprint-name.d.ts.map +1 -1
- package/dist/lib/floor-footprint-name.js +17 -4
- package/dist/lib/floor-intent-changes.d.ts.map +1 -1
- package/dist/lib/floor-intent-changes.js +60 -35
- package/dist/lib/floor-opening-footprints.d.ts +1 -1
- package/dist/lib/floor-opening-footprints.d.ts.map +1 -1
- package/dist/lib/floor-opening-footprints.js +10 -4
- package/dist/lib/floor-plate-paint.d.ts +2 -0
- package/dist/lib/floor-plate-paint.d.ts.map +1 -1
- package/dist/lib/floor-plate-paint.js +12 -0
- package/dist/lib/floor-plates.d.ts +250 -0
- package/dist/lib/floor-plates.d.ts.map +1 -1
- package/dist/lib/floor-plates.js +43 -4
- package/dist/lib/floor-script.d.ts +35 -6
- package/dist/lib/floor-script.d.ts.map +1 -1
- package/dist/lib/floor-script.js +96 -16
- package/dist/lib/foundation-construction.d.ts +4 -13
- package/dist/lib/foundation-construction.d.ts.map +1 -1
- package/dist/lib/foundation-construction.js +4 -14
- package/dist/lib/foundation-standard.d.ts +2 -3
- package/dist/lib/foundation-standard.d.ts.map +1 -1
- package/dist/lib/foundation-standard.js +2 -3
- package/dist/lib/foundation-wall.d.ts +1 -2
- package/dist/lib/foundation-wall.d.ts.map +1 -1
- package/dist/lib/foundation-wall.js +1 -2
- package/dist/lib/framing-post.d.ts +91 -0
- package/dist/lib/framing-post.d.ts.map +1 -0
- package/dist/lib/framing-post.js +174 -0
- package/dist/lib/geometry-script-node.d.ts +11 -0
- package/dist/lib/geometry-script-node.d.ts.map +1 -1
- package/dist/lib/geometry-script-node.js +35 -0
- package/dist/lib/grade-standing.d.ts +16 -2
- package/dist/lib/grade-standing.d.ts.map +1 -1
- package/dist/lib/grade-standing.js +129 -9
- package/dist/lib/ground-seat.d.ts +2 -22
- package/dist/lib/ground-seat.d.ts.map +1 -1
- package/dist/lib/ground-seat.js +2 -17
- package/dist/lib/ground-window.d.ts +2 -1
- package/dist/lib/ground-window.d.ts.map +1 -1
- package/dist/lib/ground-window.js +5 -2
- package/dist/lib/level-footprints.d.ts +2 -0
- package/dist/lib/level-footprints.d.ts.map +1 -1
- package/dist/lib/level-footprints.js +7 -0
- package/dist/lib/opening-casing.d.ts +67 -0
- package/dist/lib/opening-casing.d.ts.map +1 -0
- package/dist/lib/opening-casing.js +131 -0
- package/dist/lib/opening-exterior-face.d.ts +6 -0
- package/dist/lib/opening-exterior-face.d.ts.map +1 -0
- package/dist/lib/opening-exterior-face.js +15 -0
- package/dist/lib/opening-floor-datum.d.ts +11 -5
- package/dist/lib/opening-floor-datum.d.ts.map +1 -1
- package/dist/lib/opening-floor-datum.js +38 -6
- package/dist/lib/opening-frame-depth.d.ts +18 -0
- package/dist/lib/opening-frame-depth.d.ts.map +1 -0
- package/dist/lib/opening-frame-depth.js +22 -0
- package/dist/lib/outdoor-room.d.ts +32 -0
- package/dist/lib/outdoor-room.d.ts.map +1 -0
- package/dist/lib/outdoor-room.js +66 -0
- package/dist/lib/plate-surface.d.ts +8 -0
- package/dist/lib/plate-surface.d.ts.map +1 -1
- package/dist/lib/plate-surface.js +53 -3
- package/dist/lib/porch-framing-sync.d.ts +46 -0
- package/dist/lib/porch-framing-sync.d.ts.map +1 -0
- package/dist/lib/porch-framing-sync.js +206 -0
- package/dist/lib/porch-framing.d.ts +44 -0
- package/dist/lib/porch-framing.d.ts.map +1 -0
- package/dist/lib/porch-framing.js +159 -0
- package/dist/lib/railing-rooms.d.ts +13 -0
- package/dist/lib/railing-rooms.d.ts.map +1 -0
- package/dist/lib/railing-rooms.js +37 -0
- package/dist/lib/roof-eave.d.ts +135 -0
- package/dist/lib/roof-eave.d.ts.map +1 -0
- package/dist/lib/roof-eave.js +186 -0
- package/dist/lib/room-floor-plate.d.ts +3 -1
- package/dist/lib/room-floor-plate.d.ts.map +1 -1
- package/dist/lib/room-floor-plate.js +7 -0
- package/dist/lib/space-detection.d.ts +13 -0
- package/dist/lib/space-detection.d.ts.map +1 -1
- package/dist/lib/space-detection.js +112 -24
- package/dist/lib/structure-kernel.d.ts +22 -9
- package/dist/lib/structure-kernel.d.ts.map +1 -1
- package/dist/lib/structure-kernel.js +146 -28
- package/dist/lib/structure-reconcile.d.ts +1 -1
- package/dist/lib/structure-reconcile.d.ts.map +1 -1
- package/dist/lib/structure-reconcile.js +7 -4
- package/dist/lib/surface-intent.d.ts +10 -0
- package/dist/lib/surface-intent.d.ts.map +1 -0
- package/dist/lib/surface-intent.js +18 -0
- package/dist/lib/terrain-source.d.ts.map +1 -1
- package/dist/lib/terrain-source.js +2 -1
- package/dist/lib/wall-face-script.d.ts.map +1 -1
- package/dist/lib/wall-face-script.js +5 -2
- package/dist/material-kinds.d.ts +1 -1
- package/dist/material-kinds.d.ts.map +1 -1
- package/dist/material-kinds.js +1 -0
- package/dist/material-library.d.ts +15 -0
- package/dist/material-library.d.ts.map +1 -1
- package/dist/material-library.js +458 -59
- package/dist/node-slots/door.d.ts +3 -4
- package/dist/node-slots/door.d.ts.map +1 -1
- package/dist/node-slots/door.js +4 -3
- package/dist/node-slots/wall.d.ts.map +1 -1
- package/dist/node-slots/wall.js +21 -3
- package/dist/node-slots/window.d.ts +2 -2
- package/dist/node-slots/window.d.ts.map +1 -1
- package/dist/node-slots/window.js +6 -1
- package/dist/procedural-items/design.d.ts +8 -0
- package/dist/procedural-items/design.d.ts.map +1 -1
- package/dist/procedural-items/design.js +169 -21
- package/dist/procedural-items/motion-controller.d.ts +2 -0
- package/dist/procedural-items/motion-controller.d.ts.map +1 -1
- package/dist/procedural-items/motion-controller.js +2 -1
- package/dist/registry/index.d.ts +2 -2
- package/dist/registry/index.d.ts.map +1 -1
- package/dist/registry/index.js +1 -1
- package/dist/registry/mechanism.d.ts +4 -1
- package/dist/registry/mechanism.d.ts.map +1 -1
- package/dist/registry/mechanism.js +10 -0
- package/dist/registry/types.d.ts +65 -23
- package/dist/registry/types.d.ts.map +1 -1
- package/dist/runtime/__fixtures__/live-scene.d.ts +14 -0
- package/dist/runtime/__fixtures__/live-scene.d.ts.map +1 -0
- package/dist/runtime/__fixtures__/live-scene.js +64 -0
- package/dist/runtime/apply.d.ts +42 -0
- package/dist/runtime/apply.d.ts.map +1 -0
- package/dist/runtime/apply.js +274 -0
- package/dist/runtime/dependencies.d.ts +97 -0
- package/dist/runtime/dependencies.d.ts.map +1 -0
- package/dist/runtime/dependencies.js +42 -0
- package/dist/runtime/ids.d.ts +11 -0
- package/dist/runtime/ids.d.ts.map +1 -0
- package/dist/runtime/ids.js +80 -0
- package/dist/runtime/index.d.ts +14 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/index.js +11 -0
- package/dist/runtime/node-queries.d.ts +16 -0
- package/dist/runtime/node-queries.d.ts.map +1 -0
- package/dist/runtime/node-queries.js +30 -0
- package/dist/runtime/patch.d.ts +26 -0
- package/dist/runtime/patch.d.ts.map +1 -0
- package/dist/runtime/patch.js +165 -0
- package/dist/runtime/reader.d.ts +104 -0
- package/dist/runtime/reader.d.ts.map +1 -0
- package/dist/runtime/reader.js +455 -0
- package/dist/runtime/scene-runtime.d.ts +112 -0
- package/dist/runtime/scene-runtime.d.ts.map +1 -0
- package/dist/runtime/scene-runtime.js +302 -0
- package/dist/schema/__fixtures__/node-fixtures.d.ts.map +1 -1
- package/dist/schema/__fixtures__/node-fixtures.js +1 -0
- package/dist/schema/assembly.d.ts +3 -0
- package/dist/schema/assembly.d.ts.map +1 -1
- package/dist/schema/assembly.js +13 -0
- package/dist/schema/asset-url.d.ts +37 -2
- package/dist/schema/asset-url.d.ts.map +1 -1
- package/dist/schema/asset-url.js +80 -11
- package/dist/schema/base.d.ts +8 -0
- package/dist/schema/base.d.ts.map +1 -1
- package/dist/schema/base.js +19 -1
- package/dist/schema/build-up.d.ts +247 -0
- package/dist/schema/build-up.d.ts.map +1 -0
- package/dist/schema/build-up.js +83 -0
- package/dist/schema/geometry-source.d.ts +80 -0
- package/dist/schema/geometry-source.d.ts.map +1 -1
- package/dist/schema/geometry-source.js +38 -0
- package/dist/schema/index.d.ts +12 -7
- package/dist/schema/index.d.ts.map +1 -1
- package/dist/schema/index.js +12 -6
- package/dist/schema/material.d.ts +5 -0
- package/dist/schema/material.d.ts.map +1 -1
- package/dist/schema/material.js +6 -0
- package/dist/schema/nodes/beam.d.ts +264 -0
- package/dist/schema/nodes/beam.d.ts.map +1 -0
- package/dist/schema/nodes/beam.js +139 -0
- package/dist/schema/nodes/box-vent.d.ts +5 -0
- package/dist/schema/nodes/box-vent.d.ts.map +1 -1
- package/dist/schema/nodes/cabinet.d.ts +10 -0
- package/dist/schema/nodes/cabinet.d.ts.map +1 -1
- package/dist/schema/nodes/ceiling.d.ts +48 -0
- package/dist/schema/nodes/ceiling.d.ts.map +1 -1
- package/dist/schema/nodes/ceiling.js +5 -0
- package/dist/schema/nodes/chimney.d.ts +10 -0
- package/dist/schema/nodes/chimney.d.ts.map +1 -1
- package/dist/schema/nodes/column.d.ts +42 -0
- package/dist/schema/nodes/column.d.ts.map +1 -1
- package/dist/schema/nodes/column.js +11 -1
- package/dist/schema/nodes/cupola.d.ts +5 -0
- package/dist/schema/nodes/cupola.d.ts.map +1 -1
- package/dist/schema/nodes/door.d.ts +54 -3
- package/dist/schema/nodes/door.d.ts.map +1 -1
- package/dist/schema/nodes/door.js +41 -7
- package/dist/schema/nodes/dormer.d.ts +20 -0
- package/dist/schema/nodes/dormer.d.ts.map +1 -1
- package/dist/schema/nodes/downspout.d.ts +5 -0
- package/dist/schema/nodes/downspout.d.ts.map +1 -1
- package/dist/schema/nodes/elevator.d.ts +5 -0
- package/dist/schema/nodes/elevator.d.ts.map +1 -1
- package/dist/schema/nodes/eyebrow-vent.d.ts +5 -0
- package/dist/schema/nodes/eyebrow-vent.d.ts.map +1 -1
- package/dist/schema/nodes/fence.d.ts +5 -0
- package/dist/schema/nodes/fence.d.ts.map +1 -1
- package/dist/schema/nodes/guide.d.ts +14 -0
- package/dist/schema/nodes/guide.d.ts.map +1 -1
- package/dist/schema/nodes/guide.js +2 -0
- package/dist/schema/nodes/gutter.d.ts +5 -0
- package/dist/schema/nodes/gutter.d.ts.map +1 -1
- package/dist/schema/nodes/item.d.ts +71 -0
- package/dist/schema/nodes/item.d.ts.map +1 -1
- package/dist/schema/nodes/item.js +5 -1
- package/dist/schema/nodes/level.d.ts +1 -1
- package/dist/schema/nodes/level.d.ts.map +1 -1
- package/dist/schema/nodes/opening-types.d.ts +13 -0
- package/dist/schema/nodes/opening-types.d.ts.map +1 -1
- package/dist/schema/nodes/opening-types.js +8 -1
- package/dist/schema/nodes/railing-wall.d.ts +112 -0
- package/dist/schema/nodes/railing-wall.d.ts.map +1 -0
- package/dist/schema/nodes/railing-wall.js +160 -0
- package/dist/schema/nodes/ridge-vent.d.ts +5 -0
- package/dist/schema/nodes/ridge-vent.d.ts.map +1 -1
- package/dist/schema/nodes/roof-segment.d.ts +224 -1
- package/dist/schema/nodes/roof-segment.d.ts.map +1 -1
- package/dist/schema/nodes/roof-segment.js +57 -10
- package/dist/schema/nodes/roof-types.d.ts +11 -0
- package/dist/schema/nodes/roof-types.d.ts.map +1 -1
- package/dist/schema/nodes/roof-types.js +6 -0
- package/dist/schema/nodes/roof.d.ts +60 -0
- package/dist/schema/nodes/roof.d.ts.map +1 -1
- package/dist/schema/nodes/roof.js +4 -0
- package/dist/schema/nodes/shelf.d.ts +5 -0
- package/dist/schema/nodes/shelf.d.ts.map +1 -1
- package/dist/schema/nodes/site.d.ts +80 -0
- package/dist/schema/nodes/site.d.ts.map +1 -1
- package/dist/schema/nodes/site.js +7 -0
- package/dist/schema/nodes/skylight.d.ts +10 -0
- package/dist/schema/nodes/skylight.d.ts.map +1 -1
- package/dist/schema/nodes/slab.d.ts +137 -0
- package/dist/schema/nodes/slab.d.ts.map +1 -1
- package/dist/schema/nodes/slab.js +3 -0
- package/dist/schema/nodes/solar-panel.d.ts +10 -0
- package/dist/schema/nodes/solar-panel.d.ts.map +1 -1
- package/dist/schema/nodes/stair-segment.d.ts +5 -0
- package/dist/schema/nodes/stair-segment.d.ts.map +1 -1
- package/dist/schema/nodes/stair-structure.d.ts +69 -0
- package/dist/schema/nodes/stair-structure.d.ts.map +1 -0
- package/dist/schema/nodes/stair-structure.js +39 -0
- package/dist/schema/nodes/stair.d.ts +46 -0
- package/dist/schema/nodes/stair.d.ts.map +1 -1
- package/dist/schema/nodes/stair.js +3 -0
- package/dist/schema/nodes/turbine-vent.d.ts +5 -0
- package/dist/schema/nodes/turbine-vent.d.ts.map +1 -1
- package/dist/schema/nodes/wall.d.ts +135 -2
- package/dist/schema/nodes/wall.d.ts.map +1 -1
- package/dist/schema/nodes/wall.js +42 -6
- package/dist/schema/nodes/window.d.ts +66 -1
- package/dist/schema/nodes/window.d.ts.map +1 -1
- package/dist/schema/nodes/window.js +50 -5
- package/dist/schema/nodes/zone.d.ts +68 -0
- package/dist/schema/nodes/zone.d.ts.map +1 -1
- package/dist/schema/nodes/zone.js +32 -0
- package/dist/schema/scene-material.d.ts +5 -0
- package/dist/schema/scene-material.d.ts.map +1 -1
- package/dist/schema/types.d.ts +1079 -4
- package/dist/schema/types.d.ts.map +1 -1
- package/dist/schema/types.js +2 -0
- package/dist/schema/wall-type.d.ts +95 -0
- package/dist/schema/wall-type.d.ts.map +1 -0
- package/dist/schema/wall-type.js +32 -0
- package/dist/services/roof-bearing.d.ts.map +1 -1
- package/dist/services/roof-bearing.js +6 -3
- package/dist/services/roof-level.d.ts.map +1 -1
- package/dist/services/roof-level.js +4 -3
- package/dist/services/roof-move.d.ts.map +1 -1
- package/dist/services/roof-move.js +13 -7
- package/dist/services/storey.d.ts.map +1 -1
- package/dist/services/storey.js +13 -8
- package/dist/spatial/usage-field/beds.d.ts +51 -0
- package/dist/spatial/usage-field/beds.d.ts.map +1 -0
- package/dist/spatial/usage-field/beds.js +346 -0
- package/dist/spatial/usage-field/blocked.d.ts +28 -0
- package/dist/spatial/usage-field/blocked.d.ts.map +1 -0
- package/dist/spatial/usage-field/blocked.js +185 -0
- package/dist/spatial/usage-field/boxes.d.ts +17 -0
- package/dist/spatial/usage-field/boxes.d.ts.map +1 -0
- package/dist/spatial/usage-field/boxes.js +82 -0
- package/dist/spatial/usage-field/catalogue-shapes.d.ts +3 -0
- package/dist/spatial/usage-field/catalogue-shapes.d.ts.map +1 -0
- package/dist/spatial/usage-field/catalogue-shapes.js +257 -0
- package/dist/spatial/usage-field/catalogue.d.ts +6 -0
- package/dist/spatial/usage-field/catalogue.d.ts.map +1 -0
- package/dist/spatial/usage-field/catalogue.js +11 -0
- package/dist/spatial/usage-field/clash.d.ts +40 -0
- package/dist/spatial/usage-field/clash.d.ts.map +1 -0
- package/dist/spatial/usage-field/clash.js +187 -0
- package/dist/spatial/usage-field/door-stairs.d.ts +18 -0
- package/dist/spatial/usage-field/door-stairs.d.ts.map +1 -0
- package/dist/spatial/usage-field/door-stairs.js +129 -0
- package/dist/spatial/usage-field/entry-way.d.ts +14 -0
- package/dist/spatial/usage-field/entry-way.d.ts.map +1 -0
- package/dist/spatial/usage-field/entry-way.js +219 -0
- package/dist/spatial/usage-field/fences.d.ts +18 -0
- package/dist/spatial/usage-field/fences.d.ts.map +1 -0
- package/dist/spatial/usage-field/fences.js +253 -0
- package/dist/spatial/usage-field/field.d.ts +44 -0
- package/dist/spatial/usage-field/field.d.ts.map +1 -0
- package/dist/spatial/usage-field/field.js +145 -0
- package/dist/spatial/usage-field/findings.d.ts +76 -0
- package/dist/spatial/usage-field/findings.d.ts.map +1 -0
- package/dist/spatial/usage-field/findings.js +252 -0
- package/dist/spatial/usage-field/fixtures.d.ts +18 -0
- package/dist/spatial/usage-field/fixtures.d.ts.map +1 -0
- package/dist/spatial/usage-field/fixtures.js +160 -0
- package/dist/spatial/usage-field/flag.d.ts +10 -0
- package/dist/spatial/usage-field/flag.d.ts.map +1 -0
- package/dist/spatial/usage-field/flag.js +12 -0
- package/dist/spatial/usage-field/floors.d.ts +13 -0
- package/dist/spatial/usage-field/floors.d.ts.map +1 -0
- package/dist/spatial/usage-field/floors.js +36 -0
- package/dist/spatial/usage-field/index.d.ts +7 -0
- package/dist/spatial/usage-field/index.d.ts.map +1 -0
- package/dist/spatial/usage-field/index.js +5 -0
- package/dist/spatial/usage-field/items.d.ts +38 -0
- package/dist/spatial/usage-field/items.d.ts.map +1 -0
- package/dist/spatial/usage-field/items.js +261 -0
- package/dist/spatial/usage-field/labels.d.ts +8 -0
- package/dist/spatial/usage-field/labels.d.ts.map +1 -0
- package/dist/spatial/usage-field/labels.js +14 -0
- package/dist/spatial/usage-field/level-field.d.ts +47 -0
- package/dist/spatial/usage-field/level-field.d.ts.map +1 -0
- package/dist/spatial/usage-field/level-field.js +96 -0
- package/dist/spatial/usage-field/measure.d.ts +324 -0
- package/dist/spatial/usage-field/measure.d.ts.map +1 -0
- package/dist/spatial/usage-field/measure.js +458 -0
- package/dist/spatial/usage-field/obstacles.d.ts +63 -0
- package/dist/spatial/usage-field/obstacles.d.ts.map +1 -0
- package/dist/spatial/usage-field/obstacles.js +215 -0
- package/dist/spatial/usage-field/openings.d.ts +12 -0
- package/dist/spatial/usage-field/openings.d.ts.map +1 -0
- package/dist/spatial/usage-field/openings.js +162 -0
- package/dist/spatial/usage-field/path.d.ts +48 -0
- package/dist/spatial/usage-field/path.d.ts.map +1 -0
- package/dist/spatial/usage-field/path.js +354 -0
- package/dist/spatial/usage-field/pieces.d.ts +27 -0
- package/dist/spatial/usage-field/pieces.d.ts.map +1 -0
- package/dist/spatial/usage-field/pieces.js +89 -0
- package/dist/spatial/usage-field/shapes.d.ts +18 -0
- package/dist/spatial/usage-field/shapes.d.ts.map +1 -0
- package/dist/spatial/usage-field/shapes.js +92 -0
- package/dist/spatial/usage-field/stairs.d.ts +23 -0
- package/dist/spatial/usage-field/stairs.d.ts.map +1 -0
- package/dist/spatial/usage-field/stairs.js +163 -0
- package/dist/spatial/usage-field/support.d.ts +24 -0
- package/dist/spatial/usage-field/support.d.ts.map +1 -0
- package/dist/spatial/usage-field/support.js +46 -0
- package/dist/spatial/usage-field/swings.d.ts +846 -0
- package/dist/spatial/usage-field/swings.d.ts.map +1 -0
- package/dist/spatial/usage-field/swings.js +427 -0
- package/dist/spatial/usage-field/types.d.ts +65 -0
- package/dist/spatial/usage-field/types.d.ts.map +1 -0
- package/dist/spatial/usage-field/types.js +1 -0
- package/dist/spatial/usage-field/walls.d.ts +1057 -0
- package/dist/spatial/usage-field/walls.d.ts.map +1 -0
- package/dist/spatial/usage-field/walls.js +166 -0
- package/dist/spatial/usage-field/way-in.d.ts +26 -0
- package/dist/spatial/usage-field/way-in.d.ts.map +1 -0
- package/dist/spatial/usage-field/way-in.js +113 -0
- package/dist/store/actions/node-actions.d.ts +2124 -1322
- package/dist/store/actions/node-actions.d.ts.map +1 -1
- package/dist/store/actions/node-actions.js +42 -16
- package/dist/store/derived-node-guard.d.ts +10 -2
- package/dist/store/derived-node-guard.d.ts.map +1 -1
- package/dist/store/derived-node-guard.js +31 -11
- package/dist/store/document-settling.d.ts +9 -0
- package/dist/store/document-settling.d.ts.map +1 -0
- package/dist/store/document-settling.js +22 -0
- package/dist/store/history-control.d.ts +19 -10
- package/dist/store/history-control.d.ts.map +1 -1
- package/dist/store/history-control.js +176 -127
- package/dist/store/history-drafts.d.ts.map +1 -1
- package/dist/store/history-drafts.js +21 -17
- package/dist/store/live-previews.d.ts +9 -0
- package/dist/store/live-previews.d.ts.map +1 -0
- package/dist/store/live-previews.js +19 -0
- package/dist/store/scene-annotations.d.ts +6751 -5151
- package/dist/store/scene-annotations.d.ts.map +1 -1
- package/dist/store/scene-environment.d.ts +33 -0
- package/dist/store/scene-environment.d.ts.map +1 -0
- package/dist/store/scene-environment.js +54 -0
- package/dist/store/scene-hydration.d.ts.map +1 -1
- package/dist/store/scene-hydration.js +41 -30
- package/dist/store/use-interactive.d.ts +9 -3
- package/dist/store/use-interactive.d.ts.map +1 -1
- package/dist/store/use-interactive.js +43 -11
- package/dist/store/use-live-node-overrides.d.ts.map +1 -1
- package/dist/store/use-live-node-overrides.js +3 -0
- package/dist/store/use-scene.d.ts +25 -0
- package/dist/store/use-scene.d.ts.map +1 -1
- package/dist/store/use-scene.js +408 -336
- package/dist/systems/document-reconcile.d.ts +40 -0
- package/dist/systems/document-reconcile.d.ts.map +1 -0
- package/dist/systems/document-reconcile.js +159 -0
- package/dist/systems/elevator/elevator-opening-system.d.ts.map +1 -1
- package/dist/systems/elevator/elevator-opening-system.js +9 -24
- package/dist/systems/fence/guard-layout.d.ts +69 -0
- package/dist/systems/fence/guard-layout.d.ts.map +1 -0
- package/dist/systems/fence/guard-layout.js +194 -0
- package/dist/systems/owned-floor-openings.d.ts +13 -1
- package/dist/systems/owned-floor-openings.d.ts.map +1 -1
- package/dist/systems/owned-floor-openings.js +58 -2
- package/dist/systems/reconcile-owned-floor-openings.d.ts +3 -1
- package/dist/systems/reconcile-owned-floor-openings.d.ts.map +1 -1
- package/dist/systems/reconcile-owned-floor-openings.js +4 -4
- package/dist/systems/roof/roof-elevation-system.d.ts.map +1 -1
- package/dist/systems/roof/roof-elevation-system.js +8 -26
- package/dist/systems/roof/roof-elevation.d.ts +16 -1
- package/dist/systems/roof/roof-elevation.d.ts.map +1 -1
- package/dist/systems/roof/roof-elevation.js +85 -4
- package/dist/systems/roof/roof-footprint.d.ts +42 -1
- package/dist/systems/roof/roof-footprint.d.ts.map +1 -1
- package/dist/systems/roof/roof-footprint.js +160 -4
- package/dist/systems/slab/__fixtures__/floor-step.d.ts +3163 -1934
- package/dist/systems/slab/__fixtures__/floor-step.d.ts.map +1 -1
- package/dist/systems/slab/__fixtures__/raised-room.d.ts +2495 -1249
- package/dist/systems/slab/__fixtures__/raised-room.d.ts.map +1 -1
- package/dist/systems/stair/stair-clearance.d.ts +7 -0
- package/dist/systems/stair/stair-clearance.d.ts.map +1 -1
- package/dist/systems/stair/stair-clearance.js +31 -11
- package/dist/systems/stair/stair-construction.d.ts +8 -3
- package/dist/systems/stair/stair-construction.d.ts.map +1 -1
- package/dist/systems/stair/stair-construction.js +55 -4
- package/dist/systems/stair/stair-opening-preview.d.ts +889 -89
- package/dist/systems/stair/stair-opening-preview.d.ts.map +1 -1
- package/dist/systems/stair/stair-opening-system.d.ts.map +1 -1
- package/dist/systems/stair/stair-opening-system.js +18 -34
- package/dist/systems/stair/stair-presets.d.ts +36 -0
- package/dist/systems/stair/stair-presets.d.ts.map +1 -1
- package/dist/systems/stair/stair-rise-query.d.ts.map +1 -1
- package/dist/systems/stair/stair-rise-query.js +3 -2
- package/dist/systems/stair/stair-rise.d.ts.map +1 -1
- package/dist/systems/stair/stair-rise.js +6 -0
- package/dist/systems/stair/stair-sizing.d.ts +42 -11
- package/dist/systems/stair/stair-sizing.d.ts.map +1 -1
- package/dist/systems/stair/stair-sizing.js +10 -1
- package/dist/systems/stair/stair-structure.d.ts +277 -0
- package/dist/systems/stair/stair-structure.d.ts.map +1 -0
- package/dist/systems/stair/stair-structure.js +496 -0
- package/dist/systems/wall/wall-assembly.d.ts +84 -6
- package/dist/systems/wall/wall-assembly.d.ts.map +1 -1
- package/dist/systems/wall/wall-assembly.js +204 -5
- package/dist/systems/wall/wall-finish.d.ts +38 -2
- package/dist/systems/wall/wall-finish.d.ts.map +1 -1
- package/dist/systems/wall/wall-finish.js +70 -2
- package/dist/systems/wall/wall-footprint.js +2 -2
- package/dist/systems/wall/wall-merge.d.ts.map +1 -1
- package/dist/systems/wall/wall-merge.js +28 -7
- package/dist/systems/wall/wall-mitering.d.ts +1 -0
- package/dist/systems/wall/wall-mitering.d.ts.map +1 -1
- package/dist/systems/wall/wall-mitering.js +152 -52
- package/dist/systems/wall/wall-move.d.ts +23 -6
- package/dist/systems/wall/wall-move.d.ts.map +1 -1
- package/dist/systems/wall/wall-move.js +65 -0
- package/dist/systems/wall/wall-top.d.ts +2 -2
- package/dist/systems/wall/wall-top.d.ts.map +1 -1
- package/dist/systems/wall/wall-top.js +6 -1
- package/dist/systems/wall/wall-topology.d.ts +32 -1
- package/dist/systems/wall/wall-topology.d.ts.map +1 -1
- package/dist/systems/wall/wall-topology.js +118 -10
- package/dist/systems/wall/wall-trim-profiles.d.ts +12 -0
- package/dist/systems/wall/wall-trim-profiles.d.ts.map +1 -0
- package/dist/systems/wall/wall-trim-profiles.js +191 -0
- package/dist/utils/ensure-scene-openings.d.ts +6523 -4923
- package/dist/utils/ensure-scene-openings.d.ts.map +1 -1
- package/dist/utils/floor-piece-adoption.d.ts +5 -0
- package/dist/utils/floor-piece-adoption.d.ts.map +1 -1
- package/dist/utils/floor-plate-migration.d.ts +1930 -1130
- package/dist/utils/floor-plate-migration.d.ts.map +1 -1
- package/dist/utils/owned-floor-opening-migration.d.ts +888 -88
- package/dist/utils/owned-floor-opening-migration.d.ts.map +1 -1
- package/dist/utils/reconcile-structure-on-load.d.ts +1930 -1130
- package/dist/utils/reconcile-structure-on-load.d.ts.map +1 -1
- package/dist/utils/structure-id.d.ts.map +1 -1
- package/dist/utils/structure-id.js +4 -0
- package/package.json +22 -5
- package/dist/lib/generic-foundation.d.ts +0 -40
- package/dist/lib/generic-foundation.d.ts.map +0 -1
- package/dist/lib/generic-foundation.js +0 -200
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { computeSegmentTransforms, rotateXZ } from '../systems/stair/stair-footprint.js';
|
|
2
|
+
import { resolveStairTotalRise } from '../systems/stair/stair-rise-query.js';
|
|
3
|
+
function toWorldPlanPoint(stair, localX, localZ) {
|
|
4
|
+
const [worldX, worldZ] = rotateXZ(localX, localZ, stair.rotation ?? 0);
|
|
5
|
+
return [stair.position[0] + worldX, stair.position[2] + worldZ];
|
|
6
|
+
}
|
|
7
|
+
/** The floor a stair stands on, in its level's plan frame: a straight stair's segments, a curved or spiral stair's turning circle. */
|
|
8
|
+
export function stairFootprintPolygons(nodes, stair) {
|
|
9
|
+
if (stair.stairType === 'curved' || stair.stairType === 'spiral') {
|
|
10
|
+
const radius = Math.max(0.05, stair.innerRadius ?? 0.9) + Math.max(stair.width ?? 1, 0.4);
|
|
11
|
+
return [
|
|
12
|
+
Array.from({ length: 24 }).map((_, index) => {
|
|
13
|
+
const angle = (index / 24) * Math.PI * 2;
|
|
14
|
+
return toWorldPlanPoint(stair, Math.cos(angle) * radius, Math.sin(angle) * radius);
|
|
15
|
+
}),
|
|
16
|
+
];
|
|
17
|
+
}
|
|
18
|
+
const segments = (stair.children ?? [])
|
|
19
|
+
.map((childId) => nodes[childId])
|
|
20
|
+
.filter((node) => node?.type === 'stair-segment');
|
|
21
|
+
const usableSegments = segments.length > 0
|
|
22
|
+
? segments
|
|
23
|
+
: [
|
|
24
|
+
{
|
|
25
|
+
width: stair.width ?? 1,
|
|
26
|
+
length: 3,
|
|
27
|
+
height: resolveStairTotalRise(stair, nodes),
|
|
28
|
+
stepCount: stair.stepCount ?? 10,
|
|
29
|
+
attachmentSide: 'front',
|
|
30
|
+
},
|
|
31
|
+
];
|
|
32
|
+
const transforms = computeSegmentTransforms(usableSegments);
|
|
33
|
+
return usableSegments.map((segment, index) => {
|
|
34
|
+
const transform = transforms[index] ?? {
|
|
35
|
+
position: [0, 0, 0],
|
|
36
|
+
rotation: 0,
|
|
37
|
+
};
|
|
38
|
+
const halfWidth = segment.width / 2;
|
|
39
|
+
const corners = [
|
|
40
|
+
[-halfWidth, 0],
|
|
41
|
+
[halfWidth, 0],
|
|
42
|
+
[halfWidth, segment.length],
|
|
43
|
+
[-halfWidth, segment.length],
|
|
44
|
+
];
|
|
45
|
+
return corners.map(([localX, localZ]) => {
|
|
46
|
+
const [rx, rz] = rotateXZ(localX, localZ, transform.rotation);
|
|
47
|
+
return toWorldPlanPoint(stair, transform.position[0] + rx, transform.position[2] + rz);
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
}
|
|
@@ -1,17 +1,20 @@
|
|
|
1
1
|
import type { ZodType } from 'zod';
|
|
2
2
|
import type { DesignBrief } from '../agent-tools/design-brief.js';
|
|
3
3
|
import type { AnyNode, AssetInput, Collection, CompiledGeometryScript, SceneMaterial, SceneMaterialId } from '../schema/index.js';
|
|
4
|
+
import type { AssetSearchResult } from './asset-catalog.js';
|
|
4
5
|
import type { AssetViewFacts } from './asset-views.js';
|
|
5
6
|
import type { SessionKeep, SessionRecord } from './scene-checkpoint.js';
|
|
6
7
|
export type SceneNodes = Readonly<Record<string, AnyNode>>;
|
|
7
8
|
/**
|
|
8
9
|
* What a surface knows beyond the scene: the chat knows the floor a person is viewing; a host
|
|
9
10
|
* passes the agent's session so far (the moments it named, what it made), which verify_scene
|
|
10
|
-
* compares the scene with. A host with an item library
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
11
|
+
* compares the scene with. A host with an item library reads what the call needs of it before
|
|
12
|
+
* the call, as the operations are sync (`readCatalog`): a list held whole (the standalone MCP's
|
|
13
|
+
* built-in one) is the `catalog`; a library searched where it is kept (the chat's and the hosted
|
|
14
|
+
* MCP's published library) gives the items the call names as `catalog` and its search answers as
|
|
15
|
+
* `catalogSearches`. A host that can store scene materials with the nodes that use them passes
|
|
16
|
+
* the scene's `materials`: paint then checks scene refs against them and keeps a native material
|
|
17
|
+
* as one.
|
|
15
18
|
*/
|
|
16
19
|
export type AgentContext = {
|
|
17
20
|
activeLevelId: string | null;
|
|
@@ -30,6 +33,8 @@ export type AgentContext = {
|
|
|
30
33
|
/** The agent's session so far. The host keeps it where its sessions live; it is never scene data. */
|
|
31
34
|
session?: SessionRecord;
|
|
32
35
|
catalog?: readonly AssetInput[];
|
|
36
|
+
/** The library's answers to the call's searches, by `assetSearchKey`; set, they are what search_assets lists. */
|
|
37
|
+
catalogSearches?: Readonly<Record<string, AssetSearchResult>>;
|
|
33
38
|
/**
|
|
34
39
|
* What a host read about catalog items before the call, by item id (`assetViewNeeds` says
|
|
35
40
|
* which): their pictures for view_assets, the names of their paintable surfaces for it and for
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/agent-operations/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,CAAA;AAClC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AAC9D,OAAO,KAAK,EACV,OAAO,EACP,UAAU,EACV,UAAU,EACV,sBAAsB,EACtB,aAAa,EACb,eAAe,EAChB,MAAM,WAAW,CAAA;AAClB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAEpE,MAAM,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;AAE1D
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/agent-operations/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { type UnitKind } from '../schema/index.js';
|
|
2
|
+
import type { AgentOperation } from './types.js';
|
|
3
|
+
type CreateUnitInput = {
|
|
4
|
+
buildingId?: string;
|
|
5
|
+
name: string;
|
|
6
|
+
kind?: UnitKind;
|
|
7
|
+
color?: string;
|
|
8
|
+
memberZoneIds?: string[];
|
|
9
|
+
move?: boolean;
|
|
10
|
+
};
|
|
11
|
+
type SetUnitMembersInput = {
|
|
12
|
+
unitId: string;
|
|
13
|
+
memberZoneIds: string[];
|
|
14
|
+
move?: boolean;
|
|
15
|
+
};
|
|
16
|
+
type ListUnitsInput = {
|
|
17
|
+
buildingId?: string;
|
|
18
|
+
};
|
|
19
|
+
/** `create_unit`: a unit under its building, holding the zones named. */
|
|
20
|
+
export declare const createUnit: AgentOperation<CreateUnitInput>;
|
|
21
|
+
/** `set_unit_members`: the unit's rooms from now on. */
|
|
22
|
+
export declare const setUnitMembers: AgentOperation<SetUnitMembersInput>;
|
|
23
|
+
/** `list_units`: every unit of a building, or of the scene, with its report. */
|
|
24
|
+
export declare const listUnits: AgentOperation<ListUnitsInput>;
|
|
25
|
+
export {};
|
|
26
|
+
//# sourceMappingURL=units.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"units.d.ts","sourceRoot":"","sources":["../../src/agent-operations/units.ts"],"names":[],"mappings":"AAEA,OAAO,EAAqB,KAAK,QAAQ,EAA2B,MAAM,WAAW,CAAA;AAGrF,OAAO,KAAK,EAAE,cAAc,EAA4B,MAAM,SAAS,CAAA;AAEvE,KAAK,eAAe,GAAG;IACrB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,QAAQ,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;IACxB,IAAI,CAAC,EAAE,OAAO,CAAA;CACf,CAAA;AAED,KAAK,mBAAmB,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,EAAE,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,CAAA;AAEtF,KAAK,cAAc,GAAG;IAAE,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AAsE7C,yEAAyE;AACzE,eAAO,MAAM,UAAU,EAAE,cAAc,CAAC,eAAe,CA4BtD,CAAA;AAED,wDAAwD;AACxD,eAAO,MAAM,cAAc,EAAE,cAAc,CAAC,mBAAmB,CA4B9D,CAAA;AAED,gFAAgF;AAChF,eAAO,MAAM,SAAS,EAAE,cAAc,CAAC,cAAc,CAUpD,CAAA"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { refuse } from '../agent-tools/refusal.js';
|
|
2
|
+
import { buildUnitReport } from '../lib/unit-report.js';
|
|
3
|
+
import { UnitNode } from '../schema/index.js';
|
|
4
|
+
import { targetBuilding } from './add-level.js';
|
|
5
|
+
import { queryNodes } from './scene-queries.js';
|
|
6
|
+
const unitsOf = (nodes, buildingId) => queryNodes(nodes, { type: 'unit' }).filter((unit) => unit.parentId === buildingId);
|
|
7
|
+
/**
|
|
8
|
+
* The zones as the unit may hold them: each one a zone on a level of the building, in no other
|
|
9
|
+
* unit of it unless the call moves it, each once. Answers the members and the units that lose one.
|
|
10
|
+
*/
|
|
11
|
+
function memberZones(nodes, building, zoneIds, except, move) {
|
|
12
|
+
const levelIds = new Set(queryNodes(nodes, { type: 'level' })
|
|
13
|
+
.filter((level) => level.parentId === building.id ||
|
|
14
|
+
building.children.includes(level.id))
|
|
15
|
+
.map((level) => level.id));
|
|
16
|
+
const others = unitsOf(nodes, building.id).filter((unit) => unit.id !== except);
|
|
17
|
+
const leaving = new Map();
|
|
18
|
+
const members = [];
|
|
19
|
+
for (const zoneId of new Set(zoneIds)) {
|
|
20
|
+
const zone = nodes[zoneId];
|
|
21
|
+
if (!zone)
|
|
22
|
+
refuse('zone_not_found', `Zone not found: ${zoneId}.`, { zoneId });
|
|
23
|
+
if (zone.type !== 'zone')
|
|
24
|
+
refuse('zone_not_found', `Node ${zoneId} is a ${zone.type}, not a zone.`, {
|
|
25
|
+
zoneId,
|
|
26
|
+
type: zone.type,
|
|
27
|
+
});
|
|
28
|
+
if (!zone.parentId || !levelIds.has(zone.parentId))
|
|
29
|
+
refuse('zone_outside_building', `Zone ${zoneId} (${zone.name}) is not on a level of building ${building.id}.`, { zoneId, buildingId: building.id });
|
|
30
|
+
const holder = others.find((unit) => unit.members.includes(zone.id));
|
|
31
|
+
if (holder) {
|
|
32
|
+
if (!move)
|
|
33
|
+
refuse('zone_in_other_unit', `Zone ${zoneId} (${zone.name}) is already in unit ${holder.id} (${holder.name}). Pass move: true to move it.`, { zoneId, unitId: holder.id, unitName: holder.name });
|
|
34
|
+
leaving.set(holder.id, (leaving.get(holder.id) ?? new Set()).add(zone.id));
|
|
35
|
+
}
|
|
36
|
+
members.push(zone.id);
|
|
37
|
+
}
|
|
38
|
+
const released = [...leaving].map(([unitId, zones]) => ({
|
|
39
|
+
id: unitId,
|
|
40
|
+
data: { members: nodes[unitId].members.filter((id) => !zones.has(id)) },
|
|
41
|
+
}));
|
|
42
|
+
const moved = [...leaving.values()].reduce((n, zones) => n + zones.size, 0);
|
|
43
|
+
return { members, released, moved };
|
|
44
|
+
}
|
|
45
|
+
const describe = (unit) => ({
|
|
46
|
+
unitId: unit.id,
|
|
47
|
+
name: unit.name,
|
|
48
|
+
kind: unit.kind,
|
|
49
|
+
color: unit.color,
|
|
50
|
+
members: unit.members,
|
|
51
|
+
});
|
|
52
|
+
/** `create_unit`: a unit under its building, holding the zones named. */
|
|
53
|
+
export const createUnit = (nodes, input, context) => {
|
|
54
|
+
const building = targetBuilding(nodes, input.buildingId, context);
|
|
55
|
+
const { members, released, moved } = memberZones(nodes, building, input.memberZoneIds ?? [], null, input.move);
|
|
56
|
+
const unit = UnitNode.parse({
|
|
57
|
+
parentId: building.id,
|
|
58
|
+
name: input.name,
|
|
59
|
+
...(input.kind ? { kind: input.kind } : {}),
|
|
60
|
+
...(input.color ? { color: input.color } : {}),
|
|
61
|
+
members,
|
|
62
|
+
});
|
|
63
|
+
return {
|
|
64
|
+
result: {
|
|
65
|
+
...describe(unit),
|
|
66
|
+
buildingId: building.id,
|
|
67
|
+
memberCount: members.length,
|
|
68
|
+
message: `Made ${unit.kind} "${unit.name}" in ${building.name ?? building.id} with ${members.length} room${members.length === 1 ? '' : 's'}${moved ? `, ${moved} moved from ${released.length === 1 ? 'another unit' : 'other units'}` : ''}.`,
|
|
69
|
+
},
|
|
70
|
+
changes: {
|
|
71
|
+
create: [{ node: unit, parentId: building.id }],
|
|
72
|
+
...(released.length ? { update: released } : {}),
|
|
73
|
+
},
|
|
74
|
+
};
|
|
75
|
+
};
|
|
76
|
+
/** `set_unit_members`: the unit's rooms from now on. */
|
|
77
|
+
export const setUnitMembers = (nodes, input) => {
|
|
78
|
+
const unit = nodes[input.unitId];
|
|
79
|
+
if (!unit)
|
|
80
|
+
refuse('unit_not_found', `Unit not found: ${input.unitId}.`, { unitId: input.unitId });
|
|
81
|
+
if (unit.type !== 'unit')
|
|
82
|
+
refuse('unit_not_found', `Node ${input.unitId} is a ${unit.type}, not a unit.`, {
|
|
83
|
+
unitId: input.unitId,
|
|
84
|
+
type: unit.type,
|
|
85
|
+
});
|
|
86
|
+
const building = unit.parentId ? nodes[unit.parentId] : undefined;
|
|
87
|
+
if (building?.type !== 'building')
|
|
88
|
+
refuse('building_not_found', `Unit ${unit.id} is in no building.`, { unitId: unit.id });
|
|
89
|
+
const { members, released, moved } = memberZones(nodes, building, input.memberZoneIds, unit.id, input.move);
|
|
90
|
+
const next = { ...unit, members };
|
|
91
|
+
return {
|
|
92
|
+
result: {
|
|
93
|
+
...describe(next),
|
|
94
|
+
buildingId: building.id,
|
|
95
|
+
memberCount: members.length,
|
|
96
|
+
message: `"${unit.name}" now holds ${members.length} room${members.length === 1 ? '' : 's'}${moved ? `, ${moved} moved from ${released.length === 1 ? 'another unit' : 'other units'}` : ''}.`,
|
|
97
|
+
},
|
|
98
|
+
changes: { update: [{ id: unit.id, data: { members } }, ...released] },
|
|
99
|
+
};
|
|
100
|
+
};
|
|
101
|
+
/** `list_units`: every unit of a building, or of the scene, with its report. */
|
|
102
|
+
export const listUnits = (nodes, input, context) => {
|
|
103
|
+
const building = input.buildingId ? targetBuilding(nodes, input.buildingId, context) : null;
|
|
104
|
+
const units = queryNodes(nodes, { type: 'unit' }).filter((unit) => !building || unit.parentId === building.id);
|
|
105
|
+
return {
|
|
106
|
+
result: {
|
|
107
|
+
units: units.map((unit) => ({ ...describe(unit), report: buildUnitReport(unit, nodes) })),
|
|
108
|
+
},
|
|
109
|
+
};
|
|
110
|
+
};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { SceneNodes } from './types.js';
|
|
2
|
+
export type RoomUnreachableIssue = {
|
|
3
|
+
type: 'room_unreachable';
|
|
4
|
+
message: string;
|
|
5
|
+
severity: 'warning';
|
|
6
|
+
nodeIds: string[];
|
|
7
|
+
levelIds: string[];
|
|
8
|
+
spaceId?: string;
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* A room no walk from outside reaches through the doors, openings, open edges, stairs and lifts the
|
|
12
|
+
* scene models. A level no entrance reaches is one fact about the level, said by the storey checks;
|
|
13
|
+
* a room whose route crosses geometry the reading cannot measure is not named (its access is unknown,
|
|
14
|
+
* not missing).
|
|
15
|
+
*/
|
|
16
|
+
export declare function unreachableRoomIssues(nodes: SceneNodes): RoomUnreachableIssue[];
|
|
17
|
+
//# sourceMappingURL=unreachable-rooms-check.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unreachable-rooms-check.d.ts","sourceRoot":"","sources":["../../src/agent-operations/unreachable-rooms-check.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAGzC,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,EAAE,kBAAkB,CAAA;IACxB,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,SAAS,CAAA;IACnB,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,CAAA;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,UAAU,GAAG,oBAAoB,EAAE,CAe/E"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { circulationDiagnostics } from './reachability.js';
|
|
2
|
+
import { registerSceneCheck } from './verify-scene.js';
|
|
3
|
+
/**
|
|
4
|
+
* A room no walk from outside reaches through the doors, openings, open edges, stairs and lifts the
|
|
5
|
+
* scene models. A level no entrance reaches is one fact about the level, said by the storey checks;
|
|
6
|
+
* a room whose route crosses geometry the reading cannot measure is not named (its access is unknown,
|
|
7
|
+
* not missing).
|
|
8
|
+
*/
|
|
9
|
+
export function unreachableRoomIssues(nodes) {
|
|
10
|
+
return circulationDiagnostics(nodes).flatMap((reading) => reading.type === 'room_unreachable'
|
|
11
|
+
? [
|
|
12
|
+
{
|
|
13
|
+
type: 'room_unreachable',
|
|
14
|
+
message: reading.message,
|
|
15
|
+
severity: 'warning',
|
|
16
|
+
nodeIds: reading.nodeIds,
|
|
17
|
+
levelIds: reading.levelIds ?? [],
|
|
18
|
+
...(reading.spaceId ? { spaceId: reading.spaceId } : {}),
|
|
19
|
+
},
|
|
20
|
+
]
|
|
21
|
+
: []);
|
|
22
|
+
}
|
|
23
|
+
registerSceneCheck({
|
|
24
|
+
name: 'unreachable rooms',
|
|
25
|
+
order: 80,
|
|
26
|
+
run: (nodes) => {
|
|
27
|
+
try {
|
|
28
|
+
return unreachableRoomIssues(nodes);
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
// A scene the circulation graph cannot walk is the schema check's to report.
|
|
32
|
+
return [];
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usage-checks.d.ts","sourceRoot":"","sources":["../../src/agent-operations/usage-checks.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { usageIssues } from '../spatial/usage-field/findings.js';
|
|
2
|
+
import { sdfChecksOn } from '../spatial/usage-field/flag.js';
|
|
3
|
+
import { registerSceneCheck } from './verify-scene.js';
|
|
4
|
+
/**
|
|
5
|
+
* Passages, turning circles, pockets and wall objects, measured on the real shapes of the scene
|
|
6
|
+
* (`spatial/usage-field`). Off unless a host turns usage checks on; off, it adds nothing.
|
|
7
|
+
*/
|
|
8
|
+
registerSceneCheck({
|
|
9
|
+
name: 'usage',
|
|
10
|
+
order: 60,
|
|
11
|
+
run: (nodes) => (sdfChecksOn() ? usageIssues(nodes) : []),
|
|
12
|
+
});
|
|
@@ -1,13 +1,17 @@
|
|
|
1
1
|
import { type OpenWallEnd } from '../lib/room-graph.js';
|
|
2
|
+
import type { UsageIssue } from '../spatial/usage-field/findings.js';
|
|
2
3
|
import { type CeilingObjectObservation } from './ceiling-object-observations.js';
|
|
4
|
+
import type { RoomCheckIssue } from './room-checks.js';
|
|
3
5
|
import { type RoomFinding } from './room-findings.js';
|
|
4
|
-
import type { AgentOperation, SceneNodes } from './types.js';
|
|
6
|
+
import type { AgentContext, AgentOperation, SceneNodes } from './types.js';
|
|
7
|
+
import type { RoomUnreachableIssue } from './unreachable-rooms-check.js';
|
|
8
|
+
import { type WallEndShortIssue, type WallNearlyAlignedIssue } from './wall-joins.js';
|
|
5
9
|
import { type WallObjectObservation } from './wall-object-observations.js';
|
|
6
10
|
/** A problem verify_scene found, typed so it can be counted and acted on. */
|
|
7
11
|
export type SceneIssue = CeilingObjectObservation | WallObjectObservation | RoomFinding | {
|
|
8
12
|
type: string;
|
|
9
13
|
message: string;
|
|
10
|
-
severity?: 'info';
|
|
14
|
+
severity?: 'info' | 'warning';
|
|
11
15
|
} | {
|
|
12
16
|
type: 'schema_invalid';
|
|
13
17
|
message: string;
|
|
@@ -47,7 +51,7 @@ export type SceneIssue = CeilingObjectObservation | WallObjectObservation | Room
|
|
|
47
51
|
reason: Exclude<OpenWallEnd['reason'], 'isolated'>;
|
|
48
52
|
gap?: number;
|
|
49
53
|
nearestWallId?: string;
|
|
50
|
-
};
|
|
54
|
+
} | WallEndShortIssue | WallNearlyAlignedIssue | UsageIssue | RoomCheckIssue | RoomUnreachableIssue;
|
|
51
55
|
/** What verify_scene was asked: its contract's input, which other modules may extend. */
|
|
52
56
|
export type VerifySceneInput = Readonly<Record<string, unknown>>;
|
|
53
57
|
/**
|
|
@@ -58,7 +62,7 @@ export type VerifySceneInput = Readonly<Record<string, unknown>>;
|
|
|
58
62
|
export type SceneCheck = {
|
|
59
63
|
name: string;
|
|
60
64
|
order: number;
|
|
61
|
-
run: (nodes: SceneNodes, input: VerifySceneInput) => SceneIssue[];
|
|
65
|
+
run: (nodes: SceneNodes, input: VerifySceneInput, context: AgentContext) => SceneIssue[];
|
|
62
66
|
};
|
|
63
67
|
export declare const CHECKPOINT_ORDER = 100;
|
|
64
68
|
/**
|
|
@@ -73,12 +77,5 @@ export type SceneReport = {
|
|
|
73
77
|
export declare function registerSceneReport(report: SceneReport): void;
|
|
74
78
|
/** Runs a check in every verify_scene from now on; registering a check again replaces it. */
|
|
75
79
|
export declare function registerSceneCheck(check: SceneCheck): void;
|
|
76
|
-
/**
|
|
77
|
-
* `verify_scene`: a self-check after complex edits. Per-level content, roles and enclosed spaces,
|
|
78
|
-
* then every practical problem found, typed: spaces with no room, rooms the walls do not close or
|
|
79
|
-
* with no name, rooms missing floors or ceilings, roof levels misused, storeys with no stair,
|
|
80
|
-
* openings off their wall, stairs off their slab, blocked doors, overlapping furniture, and every
|
|
81
|
-
* field a node's schema rejects, by node and path; a kind no schema here knows, once per kind.
|
|
82
|
-
*/
|
|
83
80
|
export declare const verifyScene: AgentOperation<VerifySceneInput | undefined>;
|
|
84
81
|
//# sourceMappingURL=verify-scene.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify-scene.d.ts","sourceRoot":"","sources":["../../src/agent-operations/verify-scene.ts"],"names":[],"mappings":"AAMA,OAAO,EAAsB,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"verify-scene.d.ts","sourceRoot":"","sources":["../../src/agent-operations/verify-scene.ts"],"names":[],"mappings":"AAMA,OAAO,EAAsB,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAexE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAA;AAajE,OAAO,EACL,KAAK,wBAAwB,EAE9B,MAAM,+BAA+B,CAAA;AAItC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AACnD,OAAO,EAAE,KAAK,WAAW,EAAgB,MAAM,iBAAiB,CAAA;AAgBhE,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACvE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AACrE,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,sBAAsB,EAI5B,MAAM,cAAc,CAAA;AACrB,OAAO,EAAE,KAAK,qBAAqB,EAA0B,MAAM,4BAA4B,CAAA;AAE/F,6EAA6E;AAC7E,MAAM,MAAM,UAAU,GAClB,wBAAwB,GACxB,qBAAqB,GACrB,WAAW,GACX;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,GAChE;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACzE;IACE,IAAI,EAAE,qBAAqB,CAAA;IAC3B,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,6BAA6B;IAC7B,OAAO,EAAE,MAAM,EAAE,CAAA;CAClB,GACD;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC1E;IACE,IAAI,EAAE,4BAA4B,CAAA;IAClC,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,aAAa,EAAE,MAAM,CAAA;IACrB,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,OAAO,CAAA;CAClB,GACD;IACE,IAAI,EAAE,eAAe,CAAA;IACrB,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,GAAG,EAAE,WAAW,CAAC,KAAK,CAAC,CAAA;IACvB,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,UAAU,CAAC,CAAA;IAClD,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB,GACD,iBAAiB,GACjB,sBAAsB,GACtB,UAAU,GACV,cAAc,GACd,oBAAoB,CAAA;AAExB,yFAAyF;AACzF,MAAM,MAAM,gBAAgB,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;AAEhE;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,gBAAgB,EAAE,OAAO,EAAE,YAAY,KAAK,UAAU,EAAE,CAAA;CACzF,CAAA;AAED,eAAO,MAAM,gBAAgB,MAAM,CAAA;AAInC;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAAA;AAI/F,+FAA+F;AAC/F,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,WAAW,QAItD;AAED,6FAA6F;AAC7F,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,UAAU,QAKnD;AAsLD,eAAO,MAAM,WAAW,EAAE,cAAc,CAAC,gBAAgB,GAAG,SAAS,CAwfpE,CAAA"}
|
|
@@ -7,13 +7,13 @@ import { wallSupportForNodes } from '../lib/opening-floor-datum.js';
|
|
|
7
7
|
import { detectOpenWallEnds } from '../lib/room-graph.js';
|
|
8
8
|
import { siteBrief } from '../lib/site-placement.js';
|
|
9
9
|
import { nodeRegistry } from '../registry/index.js';
|
|
10
|
-
import { AnyNode as AnyNodeSchema } from '../schema/index.js';
|
|
10
|
+
import { AnyNode as AnyNodeSchema, } from '../schema/index.js';
|
|
11
11
|
import { nodeSchemaForKind } from '../schema/compiled-node-parsers.js';
|
|
12
12
|
import { isCeilingGeometry } from '../services/roof-level.js';
|
|
13
13
|
import { isRoofOnStoreyWalls } from '../services/roof-move.js';
|
|
14
14
|
import { getStoredLevelHeight, getWallCoveringSlabs, getWallTop } from '../services/storey.js';
|
|
15
15
|
import { getStoreyDatum } from '../services/storey-datum.js';
|
|
16
|
-
import { computeSegmentTransforms, rotateXZ } from '../systems/stair/stair-footprint.js';
|
|
16
|
+
import { computeSegmentTransforms, rotateXZ, stairArrivalOpening, } from '../systems/stair/stair-footprint.js';
|
|
17
17
|
import { resolveStairTotalRise, stairClimbsToNoStorey, stairReachesStoreyAbove, } from '../systems/stair/stair-rise-query.js';
|
|
18
18
|
import { measureStair } from '../systems/stair/stair-sizing.js';
|
|
19
19
|
import { checkOpeningWithinWall, formatOpeningBoundsIssue } from '../validation/opening-bounds.js';
|
|
@@ -22,10 +22,14 @@ import { layoutIssuesFromScene } from './layout-clearance.js';
|
|
|
22
22
|
import { wallResolvedHeight } from './level-reads.js';
|
|
23
23
|
import { pointInPolygon, polygonContainsPolygon } from './plan-geometry.js';
|
|
24
24
|
import { roomFindings } from './room-findings.js';
|
|
25
|
+
import { roomIssueScope } from './room-readings.js';
|
|
26
|
+
import { withoutDuplicatePockets } from './scene-check-policy.js';
|
|
25
27
|
import { EMPTY_SESSION } from './scene-checkpoint.js';
|
|
28
|
+
import { sceneIssueGroups } from './scene-issue-groups.js';
|
|
26
29
|
import { changesSince } from './scene-measure.js';
|
|
27
|
-
import { contentCounts, levelIdOf, levelRole, levelsOf, nodesOnLevel, } from './scene-queries.js';
|
|
30
|
+
import { contentCounts, levelIdOf, levelRole, levelsOf, nodesOnLevel, queryNodes, } from './scene-queries.js';
|
|
28
31
|
import { reviewSince } from './scene-review.js';
|
|
32
|
+
import { wallBodies, wallEndShortIssues, wallNearlyAlignedIssues, } from './wall-joins.js';
|
|
29
33
|
import { wallObjectObservations } from './wall-object-observations.js';
|
|
30
34
|
export const CHECKPOINT_ORDER = 100;
|
|
31
35
|
const checks = [];
|
|
@@ -198,6 +202,8 @@ function checkSchemas(scene, hostSchema) {
|
|
|
198
202
|
* openings off their wall, stairs off their slab, blocked doors, overlapping furniture, and every
|
|
199
203
|
* field a node's schema rejects, by node and path; a kind no schema here knows, once per kind.
|
|
200
204
|
*/
|
|
205
|
+
/** A flight of this many risers or fewer is a step up to a door, not a staircase: no going or comfort target applies. */
|
|
206
|
+
const SHORT_FLIGHT_STEPS = 3;
|
|
201
207
|
export const verifyScene = (scene, input, context) => {
|
|
202
208
|
const { errors, unknownKinds, unread, measured: nodes } = checkSchemas(scene, context.nodeSchema);
|
|
203
209
|
const onLevel = (levelId) => nodesOnLevel(nodes, levelId);
|
|
@@ -217,7 +223,9 @@ export const verifyScene = (scene, input, context) => {
|
|
|
217
223
|
// What the checks across levels read: the scene without the levels that wait.
|
|
218
224
|
const settled = unreadOn.size === 0
|
|
219
225
|
? nodes
|
|
220
|
-
: Object.fromEntries(
|
|
226
|
+
: Object.fromEntries(
|
|
227
|
+
// biome-ignore lint/plugin: verify_scene reads the whole scene
|
|
228
|
+
Object.entries(nodes).filter(([id]) => !unreadOn.has(levelIdOf(scene, id) ?? '')));
|
|
221
229
|
// A roof level holds the roof, no rooms.
|
|
222
230
|
const rooms = new Map();
|
|
223
231
|
const levels = levelsOf(nodes).map((level) => {
|
|
@@ -255,6 +263,8 @@ export const verifyScene = (scene, input, context) => {
|
|
|
255
263
|
const { content, levelName } = level;
|
|
256
264
|
if (level.unread)
|
|
257
265
|
continue;
|
|
266
|
+
const bodies = wallBodies(onLevel(level.levelId).filter((node) => node.type === 'wall'));
|
|
267
|
+
issues.push(...wallEndShortIssues({ levelId: level.levelId, levelName, bodies }), ...wallNearlyAlignedIssues({ levelId: level.levelId, levelName, bodies }));
|
|
258
268
|
// A free-standing wall (garden wall, half wall) is legitimate, not something to repair.
|
|
259
269
|
for (const end of detectOpenWallEnds(nodes, level.levelId)) {
|
|
260
270
|
if (end.reason === 'isolated')
|
|
@@ -290,7 +300,7 @@ export const verifyScene = (scene, input, context) => {
|
|
|
290
300
|
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
301
|
const seat = groundSeat(asNodes, buildingOf(level.levelId) ?? '');
|
|
292
302
|
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
|
|
303
|
+
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 on it. set_ground_level on it seats the building.`, true);
|
|
294
304
|
if (content.walls > 0 && content.zones === 0)
|
|
295
305
|
report('walls_no_zones', `${levelName} has walls but no zones/rooms`);
|
|
296
306
|
if (content.zones > 0 && content.slabs === 0)
|
|
@@ -388,8 +398,14 @@ export const verifyScene = (scene, input, context) => {
|
|
|
388
398
|
if (sourceLevelId && holdingUnread.has(buildingOf(sourceLevelId) ?? ''))
|
|
389
399
|
continue;
|
|
390
400
|
const stairName = stair.name ?? stair.id;
|
|
391
|
-
|
|
401
|
+
const measured = measureStair(stair, nodes);
|
|
402
|
+
for (const diagnostic of measured.diagnostics) {
|
|
403
|
+
// the going and comfort rules are a staircase's: a step or two up to a door has none to miss
|
|
404
|
+
if (measured.riserCount <= SHORT_FLIGHT_STEPS &&
|
|
405
|
+
(diagnostic.code === 'comfort-target' || diagnostic.code === 'going-target'))
|
|
406
|
+
continue;
|
|
392
407
|
report(`stair_${diagnostic.code.replaceAll('-', '_')}`, `Stair ${stairName}: ${diagnostic.message}`, diagnostic.code.endsWith('-target'));
|
|
408
|
+
}
|
|
393
409
|
if (sourceLevelId) {
|
|
394
410
|
const sourceName = nodes[sourceLevelId]?.name ?? sourceLevelId;
|
|
395
411
|
const footprints = stairFootprintPolygons(nodes, stair);
|
|
@@ -403,6 +419,30 @@ export const verifyScene = (scene, input, context) => {
|
|
|
403
419
|
if (footprints.some((footprint) => wallSamplePoints(wall).some((point) => pointInPolygon(point, footprint, false))))
|
|
404
420
|
report('stair_obstructed', `Wall ${wall.name ?? wall.id} obstructs stair ${stairName} on ${sourceName}`);
|
|
405
421
|
}
|
|
422
|
+
// Where it arrives: inside a room of the floor it climbs to, no wall across its top step or
|
|
423
|
+
// standing in the opening it cuts.
|
|
424
|
+
const arrival = stairArrivalOpening(stair, nodes);
|
|
425
|
+
for (const targetLevelId of targetLevelIdsForStair(nodes, stair)) {
|
|
426
|
+
if (targetLevelId === sourceLevelId || arrival.length === 0)
|
|
427
|
+
continue;
|
|
428
|
+
const targetName = nodes[targetLevelId]?.name ?? targetLevelId;
|
|
429
|
+
const target = onLevel(targetLevelId);
|
|
430
|
+
const zones = ofType(target, 'zone');
|
|
431
|
+
const centre = [
|
|
432
|
+
arrival.reduce((sum, [x]) => sum + x, 0) / arrival.length,
|
|
433
|
+
arrival.reduce((sum, [, z]) => sum + z, 0) / arrival.length,
|
|
434
|
+
];
|
|
435
|
+
if (zones.length > 0 && !zones.some((zone) => pointInPolygon(centre, zone.polygon)))
|
|
436
|
+
report('stair_arrives_outside_room', `Stair ${stairName} arrives on ${targetName} outside every room: move it so its top step lands in a hall or a room`);
|
|
437
|
+
const opened = target.filter((node) => node.type === 'floor-opening' && node.source === 'stair' && node.ownerId === stair.id);
|
|
438
|
+
for (const wall of ofType(target, 'wall')) {
|
|
439
|
+
const points = wallSamplePoints(wall);
|
|
440
|
+
if (points.some((point) => pointInPolygon(point, arrival, false)))
|
|
441
|
+
report('stair_arrival_blocked', `Wall ${wall.name ?? wall.id} on ${targetName} crosses the top of stair ${stairName}`);
|
|
442
|
+
else if (opened.some((opening) => points.some((point) => pointInPolygon(point, opening.polygon, false))))
|
|
443
|
+
report('stair_opening_wall', `Wall ${wall.name ?? wall.id} on ${targetName} stands in the floor opening of stair ${stairName}`);
|
|
444
|
+
}
|
|
445
|
+
}
|
|
406
446
|
if ((stair.slabOpeningMode ?? 'none') !== 'destination')
|
|
407
447
|
continue;
|
|
408
448
|
const targetLevelIds = targetLevelIdsForStair(nodes, stair);
|
|
@@ -439,9 +479,7 @@ export const verifyScene = (scene, input, context) => {
|
|
|
439
479
|
}
|
|
440
480
|
// Where each building stands on its lot: past the lot line or into the required yards is a
|
|
441
481
|
// problem, off-centre is not.
|
|
442
|
-
for (const building of
|
|
443
|
-
if (building.type !== 'building')
|
|
444
|
-
continue;
|
|
482
|
+
for (const building of queryNodes(nodes, { type: 'building' })) {
|
|
445
483
|
const brief = siteBrief(nodes, { buildingId: building.id });
|
|
446
484
|
if (!brief)
|
|
447
485
|
continue;
|
|
@@ -488,7 +526,7 @@ export const verifyScene = (scene, input, context) => {
|
|
|
488
526
|
issues.push(...wallObjectObservations(settled));
|
|
489
527
|
for (const check of checks)
|
|
490
528
|
if (check.order < CHECKPOINT_ORDER)
|
|
491
|
-
issues.push(...check.run(settled, input ?? {}));
|
|
529
|
+
issues.push(...check.run(settled, input ?? {}, context));
|
|
492
530
|
// What the edits since the host's checkpoint lost, by place.
|
|
493
531
|
const hosted = context.checkpoint
|
|
494
532
|
? changesSince(context.checkpoint, scene)
|
|
@@ -503,8 +541,10 @@ export const verifyScene = (scene, input, context) => {
|
|
|
503
541
|
issues.push(...since.places.issues);
|
|
504
542
|
for (const check of checks)
|
|
505
543
|
if (check.order >= CHECKPOINT_ORDER)
|
|
506
|
-
issues.push(...check.run(settled, input ?? {}));
|
|
544
|
+
issues.push(...check.run(settled, input ?? {}, context));
|
|
507
545
|
const occupiedStoryCount = levels.filter((level) => level.isOccupiedStory).length;
|
|
546
|
+
issues.splice(0, issues.length, ...withoutDuplicatePockets(issues));
|
|
547
|
+
const issueGroups = sceneIssueGroups(issues, nodes);
|
|
508
548
|
return {
|
|
509
549
|
result: {
|
|
510
550
|
ok: true,
|
|
@@ -517,6 +557,9 @@ export const verifyScene = (scene, input, context) => {
|
|
|
517
557
|
levels,
|
|
518
558
|
emptyLevelIds: empty.map((level) => level.levelId),
|
|
519
559
|
issues,
|
|
560
|
+
...(typeof input?.room === 'string' && { roomScope: roomIssueScope(nodes, input.room) }),
|
|
561
|
+
issueGroups,
|
|
562
|
+
issueCount: issues.length,
|
|
520
563
|
hasIssues: issues.some((issue) => !('severity' in issue && issue.severity === 'info')),
|
|
521
564
|
...authoredObjects(nodes),
|
|
522
565
|
...Object.assign({}, ...reports.map((report) => report.run(nodes))),
|
|
@@ -532,6 +575,7 @@ export const verifyScene = (scene, input, context) => {
|
|
|
532
575
|
};
|
|
533
576
|
/** Objects built by add_object, with what each stands in for: each is a gap in what Pascal builds. */
|
|
534
577
|
function authoredObjects(nodes) {
|
|
578
|
+
// biome-ignore lint/plugin: verify_scene reads the whole scene
|
|
535
579
|
const objects = Object.values(nodes)
|
|
536
580
|
.flatMap((node) => node.type === 'item' && node.source
|
|
537
581
|
? [
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { WallFace } from '../schema/index.js';
|
|
2
|
+
import type { SceneNodes } from './types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Every visible wall face at the default finish, read from the walls themselves and not through a
|
|
5
|
+
* room: a stub that stands inside a room on no boundary, a partition side no zone looks at, an outside
|
|
6
|
+
* face, all show the viewer's fallback finish the same. A face is read where somebody wrote nothing for
|
|
7
|
+
* it: no slot, no legacy finish, no room finish over it, no paint region on the stretch, no finish
|
|
8
|
+
* script, and, on the exterior side, no assembly cladding. What is not visible is not read: the end
|
|
9
|
+
* of a wall that runs into another wall's body (a face inside a body of the same height or more) is
|
|
10
|
+
* no face. What is not modelled: a paint region that covers part of a face's height counts as covering
|
|
11
|
+
* its stretch, and a curved wall's buried ends are not cut.
|
|
12
|
+
*/
|
|
13
|
+
type Interval = [number, number];
|
|
14
|
+
export type DefaultWallFace = {
|
|
15
|
+
wallId: string;
|
|
16
|
+
wallName: string;
|
|
17
|
+
levelId: string;
|
|
18
|
+
levelName: string;
|
|
19
|
+
face: WallFace;
|
|
20
|
+
/** Metres of the face at the default, visible stretches only. */
|
|
21
|
+
metres: number;
|
|
22
|
+
/** Metres along the wall's reference line, each stretch. */
|
|
23
|
+
stretches: Interval[];
|
|
24
|
+
/** Plan points (x, z) on the wall's reference line where the first stretch starts and the last ends. */
|
|
25
|
+
from: [number, number];
|
|
26
|
+
to: [number, number];
|
|
27
|
+
/** The rooms that stand on this face along its default stretches. */
|
|
28
|
+
facing: string[];
|
|
29
|
+
/** With none facing: the rooms the wall stands inside, on no boundary. */
|
|
30
|
+
standsIn: string[];
|
|
31
|
+
};
|
|
32
|
+
export type WallFaceReading = {
|
|
33
|
+
/** Visible wall faces read (a face with a visible stretch of `MIN_STRETCH_M` or more). */
|
|
34
|
+
faces: number;
|
|
35
|
+
metres: number;
|
|
36
|
+
defaults: DefaultWallFace[];
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* Every wall face of the scene read for the default finish. Walls that are hidden, curtain walls and
|
|
40
|
+
* walls on a roof level are left out; a scene whose walls cannot be walked reads as no faces.
|
|
41
|
+
*/
|
|
42
|
+
export declare function readWallFaces(nodes: SceneNodes): WallFaceReading;
|
|
43
|
+
export {};
|
|
44
|
+
//# sourceMappingURL=wall-face-defaults.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wall-face-defaults.d.ts","sourceRoot":"","sources":["../../src/agent-operations/wall-face-defaults.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAsB,MAAM,WAAW,CAAA;AAoB7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAEzC;;;;;;;;;GASG;AAEH,KAAK,QAAQ,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AAWhC,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,QAAQ,CAAA;IACd,iEAAiE;IACjE,MAAM,EAAE,MAAM,CAAA;IACd,4DAA4D;IAC5D,SAAS,EAAE,QAAQ,EAAE,CAAA;IACrB,wGAAwG;IACxG,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACtB,EAAE,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACpB,qEAAqE;IACrE,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,0EAA0E;IAC1E,QAAQ,EAAE,MAAM,EAAE,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,0FAA0F;IAC1F,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,eAAe,EAAE,CAAA;CAC5B,CAAA;AAgID;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,eAAe,CA0EhE"}
|