@pascal-app/core 1.0.6 → 1.1.0
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 +411 -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 +13804 -10600
- 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 +37 -1
- 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 +1163 -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 +5881 -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 +39 -3
- 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 +259 -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 +2525 -1723
- 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 +59 -13
- 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 +5 -7
- 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 +181 -35
- 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 +4667 -3065
- 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 +5 -3
- 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 +134 -12
- package/dist/building/wall-openings.d.ts.map +1 -1
- package/dist/building/wall-openings.js +182 -41
- 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 +889 -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 +2897 -1938
- 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 -25
- 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 +62 -2
- package/dist/hooks/spatial-grid/spatial-grid-manager.d.ts.map +1 -1
- package/dist/hooks/spatial-grid/spatial-grid-manager.js +207 -36
- package/dist/hooks/spatial-grid/spatial-grid-sync.d.ts +2915 -2114
- package/dist/hooks/spatial-grid/spatial-grid-sync.d.ts.map +1 -1
- package/dist/hooks/spatial-grid/spatial-grid-sync.js +32 -5
- 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 +43 -20
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +42 -19
- package/dist/lib/__fixtures__/mezzanine.d.ts +10900 -8225
- package/dist/lib/__fixtures__/mezzanine.d.ts.map +1 -1
- package/dist/lib/absorb-wall-separators.d.ts +1629 -828
- 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-mode.d.ts +11 -0
- package/dist/lib/build-mode.d.ts.map +1 -0
- package/dist/lib/build-mode.js +24 -0
- 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 +207 -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-interaction.d.ts +14 -0
- package/dist/lib/door-interaction.d.ts.map +1 -0
- package/dist/lib/door-interaction.js +62 -0
- 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/elevator-support.d.ts +15 -0
- package/dist/lib/elevator-support.d.ts.map +1 -0
- package/dist/lib/elevator-support.js +40 -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 +66 -39
- 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/hierarchy.d.ts +19 -0
- package/dist/lib/hierarchy.d.ts.map +1 -0
- package/dist/lib/hierarchy.js +53 -0
- 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 +40 -8
- 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/own-floor-intent.d.ts.map +1 -1
- package/dist/lib/own-floor-intent.js +2 -2
- 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/polygon-boolean.d.ts.map +1 -1
- package/dist/lib/polygon-boolean.js +2 -1
- 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-elevation.d.ts +12 -0
- package/dist/lib/room-floor-elevation.d.ts.map +1 -0
- package/dist/lib/room-floor-elevation.js +41 -0
- package/dist/lib/room-floor-feasibility.d.ts.map +1 -1
- package/dist/lib/room-floor-feasibility.js +1 -1
- 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 +113 -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 +8 -5
- package/dist/lib/window-interaction.d.ts +16 -0
- package/dist/lib/window-interaction.d.ts.map +1 -0
- package/dist/lib/window-interaction.js +82 -0
- package/dist/lib/zone-quantities.js +1 -1
- 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/column.d.ts +5 -0
- package/dist/node-slots/column.d.ts.map +1 -1
- package/dist/node-slots/column.js +10 -0
- 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 +3 -3
- package/dist/registry/index.d.ts.map +1 -1
- package/dist/registry/index.js +2 -2
- 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/registry.d.ts +5 -0
- package/dist/registry/registry.d.ts.map +1 -1
- package/dist/registry/registry.js +10 -0
- package/dist/registry/types.d.ts +89 -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-resize.d.ts.map +1 -1
- package/dist/schema/nodes/roof-segment-resize.js +2 -2
- package/dist/schema/nodes/roof-segment.d.ts +226 -1
- package/dist/schema/nodes/roof-segment.d.ts.map +1 -1
- package/dist/schema/nodes/roof-segment.js +97 -12
- 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 +136 -2
- package/dist/schema/nodes/wall.d.ts.map +1 -1
- package/dist/schema/nodes/wall.js +48 -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 +1080 -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/index.d.ts +1 -1
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/index.js +1 -1
- package/dist/services/movement.d.ts +7 -0
- package/dist/services/movement.d.ts.map +1 -1
- package/dist/services/movement.js +13 -0
- package/dist/services/port-connectivity.d.ts +15 -6
- package/dist/services/port-connectivity.d.ts.map +1 -1
- package/dist/services/port-connectivity.js +83 -17
- package/dist/services/roof-bearing.d.ts.map +1 -1
- package/dist/services/roof-bearing.js +8 -4
- 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 +6 -1
- package/dist/services/storey.d.ts.map +1 -1
- package/dist/services/storey.js +24 -10
- 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 +847 -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 +1059 -0
- package/dist/spatial/usage-field/walls.d.ts.map +1 -0
- package/dist/spatial/usage-field/walls.js +180 -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 +1467 -664
- package/dist/store/actions/node-actions.d.ts.map +1 -1
- package/dist/store/actions/node-actions.js +65 -21
- 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 +33 -12
- 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 +5409 -3807
- 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-geometry.d.ts +25 -0
- package/dist/systems/elevator/elevator-geometry.d.ts.map +1 -1
- package/dist/systems/elevator/elevator-geometry.js +40 -8
- package/dist/systems/elevator/elevator-opening-sync.d.ts.map +1 -1
- package/dist/systems/elevator/elevator-opening-sync.js +4 -35
- 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/elevator/elevator-runtime.d.ts.map +1 -1
- package/dist/systems/elevator/elevator-runtime.js +95 -18
- package/dist/systems/elevator/elevator-service.d.ts.map +1 -1
- package/dist/systems/elevator/elevator-service.js +24 -4
- 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 +87 -5
- 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 +2714 -1481
- package/dist/systems/slab/__fixtures__/floor-step.d.ts.map +1 -1
- package/dist/systems/slab/__fixtures__/raised-room.d.ts +3815 -2565
- 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 +1630 -829
- 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-curve.d.ts +10 -0
- package/dist/systems/wall/wall-curve.d.ts.map +1 -1
- package/dist/systems/wall/wall-curve.js +38 -0
- 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-frame.d.ts.map +1 -1
- package/dist/systems/wall/wall-frame.js +8 -0
- package/dist/systems/wall/wall-merge.d.ts +9 -1
- package/dist/systems/wall/wall-merge.d.ts.map +1 -1
- package/dist/systems/wall/wall-merge.js +66 -13
- 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 +11 -4
- package/dist/systems/wall/wall-top.d.ts.map +1 -1
- package/dist/systems/wall/wall-top.js +28 -7
- 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 +137 -11
- 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 +4663 -3061
- 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 +3372 -2571
- package/dist/utils/floor-plate-migration.d.ts.map +1 -1
- package/dist/utils/measurement-format.d.ts +27 -0
- package/dist/utils/measurement-format.d.ts.map +1 -0
- package/dist/utils/measurement-format.js +143 -0
- package/dist/utils/owned-floor-opening-migration.d.ts +1629 -828
- package/dist/utils/owned-floor-opening-migration.d.ts.map +1 -1
- package/dist/utils/reconcile-structure-on-load.d.ts +2308 -1507
- 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/dist/validation/validate-build-json.d.ts.map +1 -1
- package/dist/validation/validate-build-json.js +3 -1
- 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":"
|
|
1
|
+
{"version":3,"file":"verify-scene.d.ts","sourceRoot":"","sources":["../../src/agent-operations/verify-scene.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,19 +1,20 @@
|
|
|
1
1
|
import { levelBuildingId } from '../building/level-duplication.js';
|
|
2
2
|
import { levelGradeStanding } from '../lib/grade-standing.js';
|
|
3
3
|
import { groundSeat } from '../lib/ground-seat.js';
|
|
4
|
+
import { hierarchyCycleErrors } from '../lib/hierarchy.js';
|
|
4
5
|
import { getLevelDisplayName } from '../lib/level-name.js';
|
|
5
6
|
import { HIDDEN_SITE_NOTE } from '../lib/node-visibility.js';
|
|
6
7
|
import { wallSupportForNodes } from '../lib/opening-floor-datum.js';
|
|
7
8
|
import { detectOpenWallEnds } from '../lib/room-graph.js';
|
|
8
9
|
import { siteBrief } from '../lib/site-placement.js';
|
|
9
10
|
import { nodeRegistry } from '../registry/index.js';
|
|
10
|
-
import { AnyNode as AnyNodeSchema } from '../schema/index.js';
|
|
11
|
+
import { AnyNode as AnyNodeSchema, } from '../schema/index.js';
|
|
11
12
|
import { nodeSchemaForKind } from '../schema/compiled-node-parsers.js';
|
|
12
13
|
import { isCeilingGeometry } from '../services/roof-level.js';
|
|
13
14
|
import { isRoofOnStoreyWalls } from '../services/roof-move.js';
|
|
14
15
|
import { getStoredLevelHeight, getWallCoveringSlabs, getWallTop } from '../services/storey.js';
|
|
15
16
|
import { getStoreyDatum } from '../services/storey-datum.js';
|
|
16
|
-
import { computeSegmentTransforms, rotateXZ } from '../systems/stair/stair-footprint.js';
|
|
17
|
+
import { computeSegmentTransforms, rotateXZ, stairArrivalOpening, } from '../systems/stair/stair-footprint.js';
|
|
17
18
|
import { resolveStairTotalRise, stairClimbsToNoStorey, stairReachesStoreyAbove, } from '../systems/stair/stair-rise-query.js';
|
|
18
19
|
import { measureStair } from '../systems/stair/stair-sizing.js';
|
|
19
20
|
import { checkOpeningWithinWall, formatOpeningBoundsIssue } from '../validation/opening-bounds.js';
|
|
@@ -22,10 +23,14 @@ import { layoutIssuesFromScene } from './layout-clearance.js';
|
|
|
22
23
|
import { wallResolvedHeight } from './level-reads.js';
|
|
23
24
|
import { pointInPolygon, polygonContainsPolygon } from './plan-geometry.js';
|
|
24
25
|
import { roomFindings } from './room-findings.js';
|
|
26
|
+
import { roomIssueScope } from './room-readings.js';
|
|
27
|
+
import { withoutDuplicatePockets } from './scene-check-policy.js';
|
|
25
28
|
import { EMPTY_SESSION } from './scene-checkpoint.js';
|
|
29
|
+
import { sceneIssueGroups } from './scene-issue-groups.js';
|
|
26
30
|
import { changesSince } from './scene-measure.js';
|
|
27
|
-
import { contentCounts, levelIdOf, levelRole, levelsOf, nodesOnLevel, } from './scene-queries.js';
|
|
31
|
+
import { contentCounts, levelIdOf, levelRole, levelsOf, nodesOnLevel, queryNodes, } from './scene-queries.js';
|
|
28
32
|
import { reviewSince } from './scene-review.js';
|
|
33
|
+
import { wallBodies, wallEndShortIssues, wallNearlyAlignedIssues, } from './wall-joins.js';
|
|
29
34
|
import { wallObjectObservations } from './wall-object-observations.js';
|
|
30
35
|
export const CHECKPOINT_ORDER = 100;
|
|
31
36
|
const checks = [];
|
|
@@ -163,7 +168,7 @@ function withDefaults(node, parsed) {
|
|
|
163
168
|
* kind's, else core's. The checks that measure read each node with its defaults filled. A node its schema
|
|
164
169
|
* rejects is listed field by field and left `unread`: they could not read it. A node of a kind no
|
|
165
170
|
* 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.
|
|
171
|
+
* stored: the checks never read it. Each node on a parent cycle is listed by its `parentId`.
|
|
167
172
|
*/
|
|
168
173
|
function checkSchemas(scene, hostSchema) {
|
|
169
174
|
const errors = [];
|
|
@@ -189,6 +194,7 @@ function checkSchemas(scene, hostSchema) {
|
|
|
189
194
|
errors.push({ nodeId: id, path: issue.path.join('.'), message: issue.message });
|
|
190
195
|
unread.add(id);
|
|
191
196
|
}
|
|
197
|
+
errors.push(...hierarchyCycleErrors(scene));
|
|
192
198
|
return { errors, unknownKinds, unread, measured };
|
|
193
199
|
}
|
|
194
200
|
/**
|
|
@@ -198,6 +204,8 @@ function checkSchemas(scene, hostSchema) {
|
|
|
198
204
|
* openings off their wall, stairs off their slab, blocked doors, overlapping furniture, and every
|
|
199
205
|
* field a node's schema rejects, by node and path; a kind no schema here knows, once per kind.
|
|
200
206
|
*/
|
|
207
|
+
/** A flight of this many risers or fewer is a step up to a door, not a staircase: no going or comfort target applies. */
|
|
208
|
+
const SHORT_FLIGHT_STEPS = 3;
|
|
201
209
|
export const verifyScene = (scene, input, context) => {
|
|
202
210
|
const { errors, unknownKinds, unread, measured: nodes } = checkSchemas(scene, context.nodeSchema);
|
|
203
211
|
const onLevel = (levelId) => nodesOnLevel(nodes, levelId);
|
|
@@ -217,7 +225,9 @@ export const verifyScene = (scene, input, context) => {
|
|
|
217
225
|
// What the checks across levels read: the scene without the levels that wait.
|
|
218
226
|
const settled = unreadOn.size === 0
|
|
219
227
|
? nodes
|
|
220
|
-
: Object.fromEntries(
|
|
228
|
+
: Object.fromEntries(
|
|
229
|
+
// biome-ignore lint/plugin: verify_scene reads the whole scene
|
|
230
|
+
Object.entries(nodes).filter(([id]) => !unreadOn.has(levelIdOf(scene, id) ?? '')));
|
|
221
231
|
// A roof level holds the roof, no rooms.
|
|
222
232
|
const rooms = new Map();
|
|
223
233
|
const levels = levelsOf(nodes).map((level) => {
|
|
@@ -255,6 +265,8 @@ export const verifyScene = (scene, input, context) => {
|
|
|
255
265
|
const { content, levelName } = level;
|
|
256
266
|
if (level.unread)
|
|
257
267
|
continue;
|
|
268
|
+
const bodies = wallBodies(onLevel(level.levelId).filter((node) => node.type === 'wall'));
|
|
269
|
+
issues.push(...wallEndShortIssues({ levelId: level.levelId, levelName, bodies }), ...wallNearlyAlignedIssues({ levelId: level.levelId, levelName, bodies }));
|
|
258
270
|
// A free-standing wall (garden wall, half wall) is legitimate, not something to repair.
|
|
259
271
|
for (const end of detectOpenWallEnds(nodes, level.levelId)) {
|
|
260
272
|
if (end.reason === 'isolated')
|
|
@@ -290,7 +302,7 @@ export const verifyScene = (scene, input, context) => {
|
|
|
290
302
|
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
303
|
const seat = groundSeat(asNodes, buildingOf(level.levelId) ?? '');
|
|
292
304
|
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
|
|
305
|
+
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
306
|
if (content.walls > 0 && content.zones === 0)
|
|
295
307
|
report('walls_no_zones', `${levelName} has walls but no zones/rooms`);
|
|
296
308
|
if (content.zones > 0 && content.slabs === 0)
|
|
@@ -309,7 +321,7 @@ export const verifyScene = (scene, input, context) => {
|
|
|
309
321
|
for (const level of levels) {
|
|
310
322
|
for (const wall of ofType(onLevel(level.levelId), 'wall')) {
|
|
311
323
|
const base = wallSupportForNodes(wall, nodes).elevation;
|
|
312
|
-
const wallTop = getWallTop(wall, level.levelId, nodes, base);
|
|
324
|
+
const wallTop = Math.max(getWallTop(wall, level.levelId, nodes, base, 0), getWallTop(wall, level.levelId, nodes, base, 1));
|
|
313
325
|
for (const { slab, top: slabTop, underside: slabUnderside } of getWallCoveringSlabs(wall, level.levelId, nodes)) {
|
|
314
326
|
const penetration = Math.max(0, Math.min(wallTop, slabTop) - Math.max(base, slabUnderside));
|
|
315
327
|
const coplanar = Math.abs(wallTop - slabTop) <= 1e-6;
|
|
@@ -388,8 +400,14 @@ export const verifyScene = (scene, input, context) => {
|
|
|
388
400
|
if (sourceLevelId && holdingUnread.has(buildingOf(sourceLevelId) ?? ''))
|
|
389
401
|
continue;
|
|
390
402
|
const stairName = stair.name ?? stair.id;
|
|
391
|
-
|
|
403
|
+
const measured = measureStair(stair, nodes);
|
|
404
|
+
for (const diagnostic of measured.diagnostics) {
|
|
405
|
+
// the going and comfort rules are a staircase's: a step or two up to a door has none to miss
|
|
406
|
+
if (measured.riserCount <= SHORT_FLIGHT_STEPS &&
|
|
407
|
+
(diagnostic.code === 'comfort-target' || diagnostic.code === 'going-target'))
|
|
408
|
+
continue;
|
|
392
409
|
report(`stair_${diagnostic.code.replaceAll('-', '_')}`, `Stair ${stairName}: ${diagnostic.message}`, diagnostic.code.endsWith('-target'));
|
|
410
|
+
}
|
|
393
411
|
if (sourceLevelId) {
|
|
394
412
|
const sourceName = nodes[sourceLevelId]?.name ?? sourceLevelId;
|
|
395
413
|
const footprints = stairFootprintPolygons(nodes, stair);
|
|
@@ -403,6 +421,30 @@ export const verifyScene = (scene, input, context) => {
|
|
|
403
421
|
if (footprints.some((footprint) => wallSamplePoints(wall).some((point) => pointInPolygon(point, footprint, false))))
|
|
404
422
|
report('stair_obstructed', `Wall ${wall.name ?? wall.id} obstructs stair ${stairName} on ${sourceName}`);
|
|
405
423
|
}
|
|
424
|
+
// Where it arrives: inside a room of the floor it climbs to, no wall across its top step or
|
|
425
|
+
// standing in the opening it cuts.
|
|
426
|
+
const arrival = stairArrivalOpening(stair, nodes);
|
|
427
|
+
for (const targetLevelId of targetLevelIdsForStair(nodes, stair)) {
|
|
428
|
+
if (targetLevelId === sourceLevelId || arrival.length === 0)
|
|
429
|
+
continue;
|
|
430
|
+
const targetName = nodes[targetLevelId]?.name ?? targetLevelId;
|
|
431
|
+
const target = onLevel(targetLevelId);
|
|
432
|
+
const zones = ofType(target, 'zone');
|
|
433
|
+
const centre = [
|
|
434
|
+
arrival.reduce((sum, [x]) => sum + x, 0) / arrival.length,
|
|
435
|
+
arrival.reduce((sum, [, z]) => sum + z, 0) / arrival.length,
|
|
436
|
+
];
|
|
437
|
+
if (zones.length > 0 && !zones.some((zone) => pointInPolygon(centre, zone.polygon)))
|
|
438
|
+
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`);
|
|
439
|
+
const opened = target.filter((node) => node.type === 'floor-opening' && node.source === 'stair' && node.ownerId === stair.id);
|
|
440
|
+
for (const wall of ofType(target, 'wall')) {
|
|
441
|
+
const points = wallSamplePoints(wall);
|
|
442
|
+
if (points.some((point) => pointInPolygon(point, arrival, false)))
|
|
443
|
+
report('stair_arrival_blocked', `Wall ${wall.name ?? wall.id} on ${targetName} crosses the top of stair ${stairName}`);
|
|
444
|
+
else if (opened.some((opening) => points.some((point) => pointInPolygon(point, opening.polygon, false))))
|
|
445
|
+
report('stair_opening_wall', `Wall ${wall.name ?? wall.id} on ${targetName} stands in the floor opening of stair ${stairName}`);
|
|
446
|
+
}
|
|
447
|
+
}
|
|
406
448
|
if ((stair.slabOpeningMode ?? 'none') !== 'destination')
|
|
407
449
|
continue;
|
|
408
450
|
const targetLevelIds = targetLevelIdsForStair(nodes, stair);
|
|
@@ -439,9 +481,7 @@ export const verifyScene = (scene, input, context) => {
|
|
|
439
481
|
}
|
|
440
482
|
// Where each building stands on its lot: past the lot line or into the required yards is a
|
|
441
483
|
// problem, off-centre is not.
|
|
442
|
-
for (const building of
|
|
443
|
-
if (building.type !== 'building')
|
|
444
|
-
continue;
|
|
484
|
+
for (const building of queryNodes(nodes, { type: 'building' })) {
|
|
445
485
|
const brief = siteBrief(nodes, { buildingId: building.id });
|
|
446
486
|
if (!brief)
|
|
447
487
|
continue;
|
|
@@ -488,7 +528,7 @@ export const verifyScene = (scene, input, context) => {
|
|
|
488
528
|
issues.push(...wallObjectObservations(settled));
|
|
489
529
|
for (const check of checks)
|
|
490
530
|
if (check.order < CHECKPOINT_ORDER)
|
|
491
|
-
issues.push(...check.run(settled, input ?? {}));
|
|
531
|
+
issues.push(...check.run(settled, input ?? {}, context));
|
|
492
532
|
// What the edits since the host's checkpoint lost, by place.
|
|
493
533
|
const hosted = context.checkpoint
|
|
494
534
|
? changesSince(context.checkpoint, scene)
|
|
@@ -503,8 +543,10 @@ export const verifyScene = (scene, input, context) => {
|
|
|
503
543
|
issues.push(...since.places.issues);
|
|
504
544
|
for (const check of checks)
|
|
505
545
|
if (check.order >= CHECKPOINT_ORDER)
|
|
506
|
-
issues.push(...check.run(settled, input ?? {}));
|
|
546
|
+
issues.push(...check.run(settled, input ?? {}, context));
|
|
507
547
|
const occupiedStoryCount = levels.filter((level) => level.isOccupiedStory).length;
|
|
548
|
+
issues.splice(0, issues.length, ...withoutDuplicatePockets(issues));
|
|
549
|
+
const issueGroups = sceneIssueGroups(issues, nodes);
|
|
508
550
|
return {
|
|
509
551
|
result: {
|
|
510
552
|
ok: true,
|
|
@@ -517,6 +559,9 @@ export const verifyScene = (scene, input, context) => {
|
|
|
517
559
|
levels,
|
|
518
560
|
emptyLevelIds: empty.map((level) => level.levelId),
|
|
519
561
|
issues,
|
|
562
|
+
...(typeof input?.room === 'string' && { roomScope: roomIssueScope(nodes, input.room) }),
|
|
563
|
+
issueGroups,
|
|
564
|
+
issueCount: issues.length,
|
|
520
565
|
hasIssues: issues.some((issue) => !('severity' in issue && issue.severity === 'info')),
|
|
521
566
|
...authoredObjects(nodes),
|
|
522
567
|
...Object.assign({}, ...reports.map((report) => report.run(nodes))),
|
|
@@ -532,6 +577,7 @@ export const verifyScene = (scene, input, context) => {
|
|
|
532
577
|
};
|
|
533
578
|
/** Objects built by add_object, with what each stands in for: each is a gap in what Pascal builds. */
|
|
534
579
|
function authoredObjects(nodes) {
|
|
580
|
+
// biome-ignore lint/plugin: verify_scene reads the whole scene
|
|
535
581
|
const objects = Object.values(nodes)
|
|
536
582
|
.flatMap((node) => node.type === 'item' && node.source
|
|
537
583
|
? [
|
|
@@ -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"}
|