@pascal-app/core 1.0.5 → 1.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agent-operations/__fixtures__/add-object-cases.d.ts +31 -0
- package/dist/agent-operations/__fixtures__/add-object-cases.d.ts.map +1 -1
- package/dist/agent-operations/__fixtures__/build-room-cases.d.ts.map +1 -1
- package/dist/agent-operations/__fixtures__/build-room-cases.js +27 -0
- package/dist/agent-operations/__fixtures__/cases.d.ts.map +1 -1
- package/dist/agent-operations/__fixtures__/cases.js +19 -11
- package/dist/agent-operations/__fixtures__/design-brief-cases.d.ts +25 -2
- package/dist/agent-operations/__fixtures__/design-brief-cases.d.ts.map +1 -1
- package/dist/agent-operations/__fixtures__/design-brief-cases.js +509 -66
- package/dist/agent-operations/__fixtures__/dressing-scenes.d.ts +30 -0
- package/dist/agent-operations/__fixtures__/dressing-scenes.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/dressing-scenes.js +82 -0
- package/dist/agent-operations/__fixtures__/native-materials.d.ts +407 -9
- package/dist/agent-operations/__fixtures__/native-materials.d.ts.map +1 -1
- package/dist/agent-operations/__fixtures__/notation-cases.d.ts.map +1 -1
- package/dist/agent-operations/__fixtures__/notation-cases.js +14 -0
- package/dist/agent-operations/__fixtures__/roof-bearing-cases.d.ts +7253 -4053
- package/dist/agent-operations/__fixtures__/roof-bearing-cases.d.ts.map +1 -1
- package/dist/agent-operations/__fixtures__/room-cases.d.ts +1 -0
- package/dist/agent-operations/__fixtures__/room-cases.d.ts.map +1 -1
- package/dist/agent-operations/__fixtures__/room-cases.js +57 -1
- package/dist/agent-operations/__fixtures__/room-check-scenes.d.ts +51 -0
- package/dist/agent-operations/__fixtures__/room-check-scenes.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/room-check-scenes.js +121 -0
- package/dist/agent-operations/__fixtures__/scene-check-cases.d.ts.map +1 -1
- package/dist/agent-operations/__fixtures__/scene-check-cases.js +152 -18
- package/dist/agent-operations/__fixtures__/search-assets-cases.d.ts.map +1 -1
- package/dist/agent-operations/__fixtures__/search-assets-cases.js +91 -0
- package/dist/agent-operations/__fixtures__/site-cases.d.ts +40 -1
- package/dist/agent-operations/__fixtures__/site-cases.d.ts.map +1 -1
- package/dist/agent-operations/__fixtures__/structure-cases.d.ts +3 -0
- package/dist/agent-operations/__fixtures__/structure-cases.d.ts.map +1 -1
- package/dist/agent-operations/__fixtures__/structure-cases.js +199 -18
- package/dist/agent-operations/__fixtures__/unit-cases.d.ts +6 -0
- package/dist/agent-operations/__fixtures__/unit-cases.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/unit-cases.js +266 -0
- package/dist/agent-operations/__fixtures__/verify-scene-cases.d.ts +109 -73
- package/dist/agent-operations/__fixtures__/verify-scene-cases.d.ts.map +1 -1
- package/dist/agent-operations/add-column.d.ts.map +1 -1
- package/dist/agent-operations/add-column.js +32 -3
- package/dist/agent-operations/add-fence.d.ts.map +1 -1
- package/dist/agent-operations/add-fence.js +2 -1
- package/dist/agent-operations/add-level.d.ts.map +1 -1
- package/dist/agent-operations/add-level.js +4 -4
- package/dist/agent-operations/add-object.d.ts +32 -6
- package/dist/agent-operations/add-object.d.ts.map +1 -1
- package/dist/agent-operations/add-object.js +59 -12
- package/dist/agent-operations/add-wall.d.ts +3 -8
- package/dist/agent-operations/add-wall.d.ts.map +1 -1
- package/dist/agent-operations/add-wall.js +31 -8
- package/dist/agent-operations/apply-changes.d.ts.map +1 -1
- package/dist/agent-operations/apply-changes.js +2 -1
- package/dist/agent-operations/asset-catalog.d.ts +63 -0
- package/dist/agent-operations/asset-catalog.d.ts.map +1 -0
- package/dist/agent-operations/asset-catalog.js +182 -0
- package/dist/agent-operations/asset-views.d.ts +4 -2
- package/dist/agent-operations/asset-views.d.ts.map +1 -1
- package/dist/agent-operations/asset-views.js +1 -3
- package/dist/agent-operations/author-scene-checks.d.ts +38 -0
- package/dist/agent-operations/author-scene-checks.d.ts.map +1 -0
- package/dist/agent-operations/author-scene-checks.js +266 -0
- package/dist/agent-operations/author-scene.d.ts +54 -20
- package/dist/agent-operations/author-scene.d.ts.map +1 -1
- package/dist/agent-operations/author-scene.js +1164 -196
- package/dist/agent-operations/authored-scene-merge.d.ts.map +1 -1
- package/dist/agent-operations/authored-scene-merge.js +61 -3
- package/dist/agent-operations/batch.d.ts +1 -1
- package/dist/agent-operations/batch.d.ts.map +1 -1
- package/dist/agent-operations/batch.js +38 -39
- package/dist/agent-operations/ceiling-object-observations.d.ts.map +1 -1
- package/dist/agent-operations/ceiling-object-observations.js +5 -4
- package/dist/agent-operations/circulation-geometry.d.ts +14 -0
- package/dist/agent-operations/circulation-geometry.d.ts.map +1 -0
- package/dist/agent-operations/circulation-geometry.js +151 -0
- package/dist/agent-operations/circulation-graph.d.ts +72 -0
- package/dist/agent-operations/circulation-graph.d.ts.map +1 -0
- package/dist/agent-operations/circulation-graph.js +713 -0
- package/dist/agent-operations/circulation-non-spaces.d.ts +10 -0
- package/dist/agent-operations/circulation-non-spaces.d.ts.map +1 -0
- package/dist/agent-operations/circulation-non-spaces.js +88 -0
- package/dist/agent-operations/circulation-spaces.d.ts +5880 -0
- package/dist/agent-operations/circulation-spaces.d.ts.map +1 -0
- package/dist/agent-operations/circulation-spaces.js +368 -0
- package/dist/agent-operations/collections.d.ts.map +1 -1
- package/dist/agent-operations/collections.js +9 -7
- package/dist/agent-operations/corner-window.d.ts.map +1 -1
- package/dist/agent-operations/corner-window.js +2 -4
- package/dist/agent-operations/create-roof.d.ts.map +1 -1
- package/dist/agent-operations/create-roof.js +5 -7
- package/dist/agent-operations/create-room.d.ts +4 -1
- package/dist/agent-operations/create-room.d.ts.map +1 -1
- package/dist/agent-operations/create-room.js +7 -4
- package/dist/agent-operations/create-stair.js +2 -2
- package/dist/agent-operations/design-brief.d.ts +13 -7
- package/dist/agent-operations/design-brief.d.ts.map +1 -1
- package/dist/agent-operations/design-brief.js +172 -92
- package/dist/agent-operations/door-clearance.d.ts +68 -8
- package/dist/agent-operations/door-clearance.d.ts.map +1 -1
- package/dist/agent-operations/door-clearance.js +127 -20
- package/dist/agent-operations/dress-targets.d.ts +23 -0
- package/dist/agent-operations/dress-targets.d.ts.map +1 -0
- package/dist/agent-operations/dress-targets.js +34 -0
- package/dist/agent-operations/duplicate-node.d.ts +14 -0
- package/dist/agent-operations/duplicate-node.d.ts.map +1 -0
- package/dist/agent-operations/duplicate-node.js +173 -0
- package/dist/agent-operations/find-by-type.d.ts.map +1 -1
- package/dist/agent-operations/find-by-type.js +3 -0
- package/dist/agent-operations/furnish-room.d.ts +2 -0
- package/dist/agent-operations/furnish-room.d.ts.map +1 -1
- package/dist/agent-operations/furnish-room.js +15 -4
- package/dist/agent-operations/furniture-kind.d.ts +28 -1
- package/dist/agent-operations/furniture-kind.d.ts.map +1 -1
- package/dist/agent-operations/furniture-kind.js +105 -6
- package/dist/agent-operations/ground-reader.d.ts +10 -0
- package/dist/agent-operations/ground-reader.d.ts.map +1 -0
- package/dist/agent-operations/ground-reader.js +25 -0
- package/dist/agent-operations/index.d.ts +118 -12
- package/dist/agent-operations/index.d.ts.map +1 -1
- package/dist/agent-operations/index.js +26 -1
- package/dist/agent-operations/item-solids.d.ts +39 -0
- package/dist/agent-operations/item-solids.d.ts.map +1 -0
- package/dist/agent-operations/item-solids.js +128 -0
- package/dist/agent-operations/layout-clearance.d.ts +91 -11
- package/dist/agent-operations/layout-clearance.d.ts.map +1 -1
- package/dist/agent-operations/layout-clearance.js +280 -73
- package/dist/agent-operations/level-height-fill.d.ts.map +1 -1
- package/dist/agent-operations/level-height-fill.js +7 -1
- package/dist/agent-operations/level-reads.d.ts +5 -0
- package/dist/agent-operations/level-reads.d.ts.map +1 -1
- package/dist/agent-operations/level-reads.js +38 -2
- package/dist/agent-operations/list-levels.d.ts.map +1 -1
- package/dist/agent-operations/list-levels.js +2 -4
- package/dist/agent-operations/move-node.d.ts +12 -0
- package/dist/agent-operations/move-node.d.ts.map +1 -0
- package/dist/agent-operations/move-node.js +28 -0
- package/dist/agent-operations/move-plan.d.ts +28 -0
- package/dist/agent-operations/move-plan.d.ts.map +1 -0
- package/dist/agent-operations/move-plan.js +257 -0
- package/dist/agent-operations/node-patch.d.ts.map +1 -1
- package/dist/agent-operations/node-patch.js +15 -0
- package/dist/agent-operations/paint.d.ts +3 -1
- package/dist/agent-operations/paint.d.ts.map +1 -1
- package/dist/agent-operations/paint.js +14 -1
- package/dist/agent-operations/photo-elevation.d.ts.map +1 -1
- package/dist/agent-operations/photo-elevation.js +2 -1
- package/dist/agent-operations/place-in-room.d.ts.map +1 -1
- package/dist/agent-operations/place-in-room.js +1 -0
- package/dist/agent-operations/place-items.d.ts.map +1 -1
- package/dist/agent-operations/place-items.js +3 -4
- package/dist/agent-operations/plan-clearance.d.ts +28 -0
- package/dist/agent-operations/plan-clearance.d.ts.map +1 -0
- package/dist/agent-operations/plan-clearance.js +47 -0
- package/dist/agent-operations/plan-geometry.d.ts +2 -0
- package/dist/agent-operations/plan-geometry.d.ts.map +1 -1
- package/dist/agent-operations/plan-geometry.js +10 -0
- package/dist/agent-operations/project-files.d.ts +10 -0
- package/dist/agent-operations/project-files.d.ts.map +1 -1
- package/dist/agent-operations/reachability.d.ts +41 -0
- package/dist/agent-operations/reachability.d.ts.map +1 -0
- package/dist/agent-operations/reachability.js +199 -0
- package/dist/agent-operations/room-checks.d.ts +60 -0
- package/dist/agent-operations/room-checks.d.ts.map +1 -0
- package/dist/agent-operations/room-checks.js +226 -0
- package/dist/agent-operations/room-faces.d.ts +30 -0
- package/dist/agent-operations/room-faces.d.ts.map +1 -0
- package/dist/agent-operations/room-faces.js +31 -0
- package/dist/agent-operations/room-findings.d.ts +5 -2
- package/dist/agent-operations/room-findings.d.ts.map +1 -1
- package/dist/agent-operations/room-findings.js +30 -0
- package/dist/agent-operations/room-finishes.d.ts +87 -0
- package/dist/agent-operations/room-finishes.d.ts.map +1 -0
- package/dist/agent-operations/room-finishes.js +193 -0
- package/dist/agent-operations/room-floor-script.d.ts +3 -3
- package/dist/agent-operations/room-floor-script.js +3 -3
- package/dist/agent-operations/room-readings.d.ts +90 -0
- package/dist/agent-operations/room-readings.d.ts.map +1 -0
- package/dist/agent-operations/room-readings.js +369 -0
- package/dist/agent-operations/room-tile.d.ts +15 -0
- package/dist/agent-operations/room-tile.d.ts.map +1 -0
- package/dist/agent-operations/room-tile.js +30 -0
- package/dist/agent-operations/room-wet.d.ts +55 -0
- package/dist/agent-operations/room-wet.d.ts.map +1 -0
- package/dist/agent-operations/room-wet.js +203 -0
- package/dist/agent-operations/scene-check-policy.d.ts +5 -0
- package/dist/agent-operations/scene-check-policy.d.ts.map +1 -0
- package/dist/agent-operations/scene-check-policy.js +24 -0
- package/dist/agent-operations/scene-checkpoint.d.ts +10 -0
- package/dist/agent-operations/scene-checkpoint.d.ts.map +1 -1
- package/dist/agent-operations/scene-checkpoint.js +31 -0
- package/dist/agent-operations/scene-issue-groups.d.ts +17 -0
- package/dist/agent-operations/scene-issue-groups.d.ts.map +1 -0
- package/dist/agent-operations/scene-issue-groups.js +71 -0
- package/dist/agent-operations/scene-materials.d.ts +23 -0
- package/dist/agent-operations/scene-materials.d.ts.map +1 -1
- package/dist/agent-operations/scene-materials.js +41 -0
- package/dist/agent-operations/scene-queries.d.ts +1667 -866
- package/dist/agent-operations/scene-queries.d.ts.map +1 -1
- package/dist/agent-operations/scene-queries.js +3 -3
- package/dist/agent-operations/scene-review.d.ts.map +1 -1
- package/dist/agent-operations/scene-review.js +3 -2
- package/dist/agent-operations/scene-view.d.ts.map +1 -1
- package/dist/agent-operations/scene-view.js +91 -21
- package/dist/agent-operations/search-assets.d.ts +10 -6
- package/dist/agent-operations/search-assets.d.ts.map +1 -1
- package/dist/agent-operations/search-assets.js +37 -22
- package/dist/agent-operations/set-checkpoint.d.ts.map +1 -1
- package/dist/agent-operations/set-checkpoint.js +1 -0
- package/dist/agent-operations/set-ground-level.d.ts +1 -1
- package/dist/agent-operations/set-ground-level.d.ts.map +1 -1
- package/dist/agent-operations/set-ground-level.js +3 -14
- package/dist/agent-operations/site.js +3 -2
- package/dist/agent-operations/slab-surface-script.d.ts +25 -0
- package/dist/agent-operations/slab-surface-script.d.ts.map +1 -0
- package/dist/agent-operations/slab-surface-script.js +60 -0
- package/dist/agent-operations/stair-plan-footprint.d.ts +9 -0
- package/dist/agent-operations/stair-plan-footprint.d.ts.map +1 -0
- package/dist/agent-operations/stair-plan-footprint.js +50 -0
- package/dist/agent-operations/types.d.ts +10 -5
- package/dist/agent-operations/types.d.ts.map +1 -1
- package/dist/agent-operations/units.d.ts +26 -0
- package/dist/agent-operations/units.d.ts.map +1 -0
- package/dist/agent-operations/units.js +110 -0
- package/dist/agent-operations/unreachable-rooms-check.d.ts +17 -0
- package/dist/agent-operations/unreachable-rooms-check.d.ts.map +1 -0
- package/dist/agent-operations/unreachable-rooms-check.js +35 -0
- package/dist/agent-operations/usage-checks.d.ts +2 -0
- package/dist/agent-operations/usage-checks.d.ts.map +1 -0
- package/dist/agent-operations/usage-checks.js +12 -0
- package/dist/agent-operations/verify-scene.d.ts +8 -11
- package/dist/agent-operations/verify-scene.d.ts.map +1 -1
- package/dist/agent-operations/verify-scene.js +55 -11
- package/dist/agent-operations/wall-face-defaults.d.ts +44 -0
- package/dist/agent-operations/wall-face-defaults.d.ts.map +1 -0
- package/dist/agent-operations/wall-face-defaults.js +229 -0
- package/dist/agent-operations/wall-joins.d.ts +119 -0
- package/dist/agent-operations/wall-joins.d.ts.map +1 -0
- package/dist/agent-operations/wall-joins.js +308 -0
- package/dist/agent-operations/wall-object-observations.d.ts.map +1 -1
- package/dist/agent-operations/wall-object-observations.js +4 -6
- package/dist/agent-operations/wall-skirting.d.ts.map +1 -1
- package/dist/agent-operations/wall-skirting.js +2 -0
- package/dist/agent-operations/wall-type.d.ts +49 -0
- package/dist/agent-operations/wall-type.d.ts.map +1 -0
- package/dist/agent-operations/wall-type.js +31 -0
- package/dist/agent-operations/zone-coverage.d.ts +85 -0
- package/dist/agent-operations/zone-coverage.d.ts.map +1 -0
- package/dist/agent-operations/zone-coverage.js +208 -0
- package/dist/agent-tools/add-object.d.ts +31 -0
- package/dist/agent-tools/add-object.d.ts.map +1 -1
- package/dist/agent-tools/add-object.js +44 -7
- package/dist/agent-tools/assets.d.ts +4 -0
- package/dist/agent-tools/assets.d.ts.map +1 -1
- package/dist/agent-tools/assets.js +11 -1
- package/dist/agent-tools/author-scene.d.ts +810 -15
- package/dist/agent-tools/author-scene.d.ts.map +1 -1
- package/dist/agent-tools/author-scene.js +275 -34
- package/dist/agent-tools/batch.d.ts +1 -1
- package/dist/agent-tools/batch.d.ts.map +1 -1
- package/dist/agent-tools/batch.js +5 -1
- package/dist/agent-tools/checkpoints.js +1 -1
- package/dist/agent-tools/columns.d.ts +14 -0
- package/dist/agent-tools/columns.d.ts.map +1 -1
- package/dist/agent-tools/columns.js +14 -2
- package/dist/agent-tools/contract.d.ts +10 -0
- package/dist/agent-tools/contract.d.ts.map +1 -1
- package/dist/agent-tools/contract.js +5 -1
- package/dist/agent-tools/corner-window.d.ts +1 -0
- package/dist/agent-tools/corner-window.d.ts.map +1 -1
- package/dist/agent-tools/corner-window.js +1 -1
- package/dist/agent-tools/create-room.d.ts +85 -0
- package/dist/agent-tools/create-room.d.ts.map +1 -1
- package/dist/agent-tools/create-room.js +8 -1
- package/dist/agent-tools/design-brief.d.ts +513 -7
- package/dist/agent-tools/design-brief.d.ts.map +1 -1
- package/dist/agent-tools/design-brief.js +192 -14
- package/dist/agent-tools/designs.js +1 -1
- package/dist/agent-tools/find-by-type.js +1 -1
- package/dist/agent-tools/index.d.ts +658 -10
- package/dist/agent-tools/index.d.ts.map +1 -1
- package/dist/agent-tools/index.js +9 -1
- package/dist/agent-tools/levels.js +4 -4
- package/dist/agent-tools/move-duplicate.d.ts +65 -0
- package/dist/agent-tools/move-duplicate.d.ts.map +1 -0
- package/dist/agent-tools/move-duplicate.js +68 -0
- package/dist/agent-tools/paint.d.ts +6 -0
- package/dist/agent-tools/paint.d.ts.map +1 -1
- package/dist/agent-tools/paint.js +7 -3
- package/dist/agent-tools/photo-elevation.js +1 -1
- package/dist/agent-tools/project-files.d.ts +2 -2
- package/dist/agent-tools/project-files.d.ts.map +1 -1
- package/dist/agent-tools/project-files.js +1 -1
- package/dist/agent-tools/refusal.d.ts +9 -1
- package/dist/agent-tools/refusal.d.ts.map +1 -1
- package/dist/agent-tools/refusal.js +5 -1
- package/dist/agent-tools/roofs.js +1 -1
- package/dist/agent-tools/room-structure.d.ts +60 -0
- package/dist/agent-tools/room-structure.d.ts.map +1 -1
- package/dist/agent-tools/room-structure.js +20 -1
- package/dist/agent-tools/search-materials.d.ts +1 -0
- package/dist/agent-tools/search-materials.d.ts.map +1 -1
- package/dist/agent-tools/site.js +1 -1
- package/dist/agent-tools/stairs.js +1 -1
- package/dist/agent-tools/units.d.ts +84 -0
- package/dist/agent-tools/units.d.ts.map +1 -0
- package/dist/agent-tools/units.js +54 -0
- package/dist/agent-tools/verify-scene-usage.d.ts +44 -0
- package/dist/agent-tools/verify-scene-usage.d.ts.map +1 -0
- package/dist/agent-tools/verify-scene-usage.js +146 -0
- package/dist/agent-tools/verify-scene.d.ts +12 -1
- package/dist/agent-tools/verify-scene.d.ts.map +1 -1
- package/dist/agent-tools/verify-scene.js +183 -3
- package/dist/agent-tools/view-scene.d.ts +3 -0
- package/dist/agent-tools/view-scene.d.ts.map +1 -1
- package/dist/agent-tools/view-scene.js +4 -1
- package/dist/agent-tools/wall-openings.d.ts +121 -2
- package/dist/agent-tools/wall-openings.d.ts.map +1 -1
- package/dist/agent-tools/wall-openings.js +123 -18
- package/dist/agent-tools/walls.d.ts +30 -0
- package/dist/agent-tools/walls.d.ts.map +1 -1
- package/dist/agent-tools/walls.js +54 -2
- package/dist/building/__fixtures__/wall-opening-cases.d.ts +340 -195
- package/dist/building/__fixtures__/wall-opening-cases.d.ts.map +1 -1
- package/dist/building/__fixtures__/wall-opening-cases.js +13 -0
- package/dist/building/code-profile.d.ts +231 -0
- package/dist/building/code-profile.d.ts.map +1 -0
- package/dist/building/code-profile.js +208 -0
- package/dist/building/corner-window.d.ts +2 -2
- package/dist/building/corner-window.d.ts.map +1 -1
- package/dist/building/corner-window.js +11 -2
- package/dist/building/door-types.d.ts +1 -0
- package/dist/building/door-types.d.ts.map +1 -1
- package/dist/building/door-types.js +2 -0
- package/dist/building/floor-item-fit.d.ts.map +1 -1
- package/dist/building/floor-item-fit.js +2 -4
- package/dist/building/ground-level.d.ts +1 -3
- package/dist/building/ground-level.d.ts.map +1 -1
- package/dist/building/ground-level.js +3 -5
- package/dist/building/index.d.ts +2 -0
- package/dist/building/index.d.ts.map +1 -1
- package/dist/building/index.js +2 -0
- package/dist/building/level-duplication.d.ts +5951 -4351
- package/dist/building/level-duplication.d.ts.map +1 -1
- package/dist/building/level-insertion.d.ts +1 -1
- package/dist/building/level-wall-copy.d.ts +24 -0
- package/dist/building/level-wall-copy.d.ts.map +1 -0
- package/dist/building/level-wall-copy.js +53 -0
- package/dist/building/merge-windows.d.ts.map +1 -1
- package/dist/building/merge-windows.js +1 -0
- package/dist/building/opening-style-presets.d.ts +2 -0
- package/dist/building/opening-style-presets.d.ts.map +1 -1
- package/dist/building/opening-style-presets.js +26 -5
- package/dist/building/room-use.d.ts +26 -0
- package/dist/building/room-use.d.ts.map +1 -0
- package/dist/building/room-use.js +102 -0
- package/dist/building/wall-openings.d.ts +115 -7
- package/dist/building/wall-openings.d.ts.map +1 -1
- package/dist/building/wall-openings.js +121 -29
- package/dist/building/window-types.d.ts +1 -0
- package/dist/building/window-types.d.ts.map +1 -1
- package/dist/building/window-types.js +3 -0
- package/dist/coherence/__fixtures__/enclosure-scenes.d.ts +84 -0
- package/dist/coherence/__fixtures__/enclosure-scenes.d.ts.map +1 -0
- package/dist/coherence/__fixtures__/enclosure-scenes.js +44 -0
- package/dist/commands/structure/attached-walls.d.ts +16 -0
- package/dist/commands/structure/attached-walls.d.ts.map +1 -0
- package/dist/commands/structure/attached-walls.js +53 -0
- package/dist/commands/structure/index.d.ts +3 -0
- package/dist/commands/structure/index.d.ts.map +1 -1
- package/dist/commands/structure/index.js +3 -0
- package/dist/commands/structure/move-separators.d.ts +62 -0
- package/dist/commands/structure/move-separators.d.ts.map +1 -0
- package/dist/commands/structure/move-separators.js +346 -0
- package/dist/commands/structure/set-floor-foundation.d.ts +5 -0
- package/dist/commands/structure/set-floor-foundation.d.ts.map +1 -1
- package/dist/commands/structure/set-wall-geometry.d.ts.map +1 -1
- package/dist/commands/structure/set-wall-geometry.js +44 -11
- package/dist/commands/structure/set-zone-intent.d.ts +26 -0
- package/dist/commands/structure/set-zone-intent.d.ts.map +1 -1
- package/dist/commands/structure/set-zone-intent.js +107 -2
- package/dist/commands/structure/shared.d.ts +888 -88
- package/dist/commands/structure/shared.d.ts.map +1 -1
- package/dist/commands/structure/wall-overlap.d.ts +45 -0
- package/dist/commands/structure/wall-overlap.d.ts.map +1 -0
- package/dist/commands/structure/wall-overlap.js +289 -0
- package/dist/commands/structure/zone-wall-merge.d.ts +3326 -2370
- package/dist/commands/structure/zone-wall-merge.d.ts.map +1 -1
- package/dist/contracts/reference-discovery.d.ts +2 -2
- package/dist/contracts/reference-discovery.d.ts.map +1 -1
- package/dist/contracts/reference-discovery.js +5 -3
- package/dist/contracts/reference-inventory.d.ts.map +1 -1
- package/dist/contracts/reference-inventory.js +75 -24
- package/dist/events/bus.d.ts +15 -2
- package/dist/events/bus.d.ts.map +1 -1
- package/dist/hooks/spatial-grid/built-in-floor-placed.d.ts +40 -0
- package/dist/hooks/spatial-grid/built-in-floor-placed.d.ts.map +1 -0
- package/dist/hooks/spatial-grid/built-in-floor-placed.js +220 -0
- package/dist/hooks/spatial-grid/floor-placed-elevation.d.ts.map +1 -1
- package/dist/hooks/spatial-grid/floor-placed-elevation.js +13 -7
- package/dist/hooks/spatial-grid/spatial-grid-manager.d.ts +56 -1
- package/dist/hooks/spatial-grid/spatial-grid-manager.d.ts.map +1 -1
- package/dist/hooks/spatial-grid/spatial-grid-manager.js +177 -27
- package/dist/hooks/spatial-grid/spatial-grid-sync.d.ts +1631 -831
- package/dist/hooks/spatial-grid/spatial-grid-sync.d.ts.map +1 -1
- package/dist/hooks/spatial-grid/spatial-grid-sync.js +24 -1
- package/dist/hooks/spatial-grid/support-host-patch.js +10 -10
- package/dist/i18n/format.d.ts +41 -0
- package/dist/i18n/format.d.ts.map +1 -0
- package/dist/i18n/format.js +124 -0
- package/dist/i18n/index.d.ts +5 -0
- package/dist/i18n/index.d.ts.map +1 -0
- package/dist/i18n/index.js +3 -0
- package/dist/i18n/registry.d.ts +78 -0
- package/dist/i18n/registry.d.ts.map +1 -0
- package/dist/i18n/registry.js +252 -0
- package/dist/i18n/use-translate.d.ts +16 -0
- package/dist/i18n/use-translate.d.ts.map +1 -0
- package/dist/i18n/use-translate.js +23 -0
- package/dist/index.d.ts +32 -16
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +31 -15
- package/dist/lib/__fixtures__/mezzanine.d.ts +6840 -4169
- package/dist/lib/__fixtures__/mezzanine.d.ts.map +1 -1
- package/dist/lib/absorb-wall-separators.d.ts +2128 -1328
- package/dist/lib/absorb-wall-separators.d.ts.map +1 -1
- package/dist/lib/beam.d.ts +137 -0
- package/dist/lib/beam.d.ts.map +1 -0
- package/dist/lib/beam.js +297 -0
- package/dist/lib/below-grade-footprints.d.ts +13 -5
- package/dist/lib/below-grade-footprints.d.ts.map +1 -1
- package/dist/lib/below-grade-footprints.js +53 -10
- package/dist/lib/build-up.d.ts +89 -0
- package/dist/lib/build-up.d.ts.map +1 -0
- package/dist/lib/build-up.js +216 -0
- package/dist/lib/corner-pair.d.ts +205 -4
- package/dist/lib/corner-pair.d.ts.map +1 -1
- package/dist/lib/deck-boards.d.ts +80 -0
- package/dist/lib/deck-boards.d.ts.map +1 -0
- package/dist/lib/deck-boards.js +184 -0
- package/dist/lib/deck-framing.d.ts +150 -0
- package/dist/lib/deck-framing.d.ts.map +1 -0
- package/dist/lib/deck-framing.js +515 -0
- package/dist/lib/deepest-drawn.d.ts +3 -6
- package/dist/lib/deepest-drawn.d.ts.map +1 -1
- package/dist/lib/deepest-drawn.js +4 -8
- package/dist/lib/door-opening.d.ts +19 -0
- package/dist/lib/door-opening.d.ts.map +1 -0
- package/dist/lib/door-opening.js +27 -0
- package/dist/lib/door-operation.d.ts +2 -0
- package/dist/lib/door-operation.d.ts.map +1 -1
- package/dist/lib/door-operation.js +4 -0
- package/dist/lib/exterior-wall-loops.d.ts.map +1 -1
- package/dist/lib/exterior-wall-loops.js +2 -1
- package/dist/lib/finish-script.d.ts +5 -5
- package/dist/lib/finish-script.d.ts.map +1 -1
- package/dist/lib/finish-script.js +12 -5
- package/dist/lib/floor-footprint-name.d.ts +17 -0
- package/dist/lib/floor-footprint-name.d.ts.map +1 -1
- package/dist/lib/floor-footprint-name.js +17 -4
- package/dist/lib/floor-intent-changes.d.ts.map +1 -1
- package/dist/lib/floor-intent-changes.js +60 -35
- package/dist/lib/floor-opening-footprints.d.ts +1 -1
- package/dist/lib/floor-opening-footprints.d.ts.map +1 -1
- package/dist/lib/floor-opening-footprints.js +10 -4
- package/dist/lib/floor-plate-paint.d.ts +2 -0
- package/dist/lib/floor-plate-paint.d.ts.map +1 -1
- package/dist/lib/floor-plate-paint.js +12 -0
- package/dist/lib/floor-plates.d.ts +250 -0
- package/dist/lib/floor-plates.d.ts.map +1 -1
- package/dist/lib/floor-plates.js +43 -4
- package/dist/lib/floor-script.d.ts +35 -6
- package/dist/lib/floor-script.d.ts.map +1 -1
- package/dist/lib/floor-script.js +96 -16
- package/dist/lib/foundation-construction.d.ts +4 -13
- package/dist/lib/foundation-construction.d.ts.map +1 -1
- package/dist/lib/foundation-construction.js +4 -14
- package/dist/lib/foundation-standard.d.ts +2 -3
- package/dist/lib/foundation-standard.d.ts.map +1 -1
- package/dist/lib/foundation-standard.js +2 -3
- package/dist/lib/foundation-wall.d.ts +1 -2
- package/dist/lib/foundation-wall.d.ts.map +1 -1
- package/dist/lib/foundation-wall.js +1 -2
- package/dist/lib/framing-post.d.ts +91 -0
- package/dist/lib/framing-post.d.ts.map +1 -0
- package/dist/lib/framing-post.js +174 -0
- package/dist/lib/geometry-script-node.d.ts +11 -0
- package/dist/lib/geometry-script-node.d.ts.map +1 -1
- package/dist/lib/geometry-script-node.js +35 -0
- package/dist/lib/grade-standing.d.ts +16 -2
- package/dist/lib/grade-standing.d.ts.map +1 -1
- package/dist/lib/grade-standing.js +129 -9
- package/dist/lib/ground-seat.d.ts +2 -22
- package/dist/lib/ground-seat.d.ts.map +1 -1
- package/dist/lib/ground-seat.js +2 -17
- package/dist/lib/ground-window.d.ts +2 -1
- package/dist/lib/ground-window.d.ts.map +1 -1
- package/dist/lib/ground-window.js +5 -2
- package/dist/lib/level-footprints.d.ts +2 -0
- package/dist/lib/level-footprints.d.ts.map +1 -1
- package/dist/lib/level-footprints.js +7 -0
- package/dist/lib/opening-casing.d.ts +67 -0
- package/dist/lib/opening-casing.d.ts.map +1 -0
- package/dist/lib/opening-casing.js +131 -0
- package/dist/lib/opening-exterior-face.d.ts +6 -0
- package/dist/lib/opening-exterior-face.d.ts.map +1 -0
- package/dist/lib/opening-exterior-face.js +15 -0
- package/dist/lib/opening-floor-datum.d.ts +11 -5
- package/dist/lib/opening-floor-datum.d.ts.map +1 -1
- package/dist/lib/opening-floor-datum.js +38 -6
- package/dist/lib/opening-frame-depth.d.ts +18 -0
- package/dist/lib/opening-frame-depth.d.ts.map +1 -0
- package/dist/lib/opening-frame-depth.js +22 -0
- package/dist/lib/outdoor-room.d.ts +32 -0
- package/dist/lib/outdoor-room.d.ts.map +1 -0
- package/dist/lib/outdoor-room.js +66 -0
- package/dist/lib/plate-surface.d.ts +8 -0
- package/dist/lib/plate-surface.d.ts.map +1 -1
- package/dist/lib/plate-surface.js +53 -3
- package/dist/lib/porch-framing-sync.d.ts +46 -0
- package/dist/lib/porch-framing-sync.d.ts.map +1 -0
- package/dist/lib/porch-framing-sync.js +206 -0
- package/dist/lib/porch-framing.d.ts +44 -0
- package/dist/lib/porch-framing.d.ts.map +1 -0
- package/dist/lib/porch-framing.js +159 -0
- package/dist/lib/railing-rooms.d.ts +13 -0
- package/dist/lib/railing-rooms.d.ts.map +1 -0
- package/dist/lib/railing-rooms.js +37 -0
- package/dist/lib/roof-eave.d.ts +135 -0
- package/dist/lib/roof-eave.d.ts.map +1 -0
- package/dist/lib/roof-eave.js +186 -0
- package/dist/lib/room-floor-plate.d.ts +3 -1
- package/dist/lib/room-floor-plate.d.ts.map +1 -1
- package/dist/lib/room-floor-plate.js +7 -0
- package/dist/lib/space-detection.d.ts +13 -0
- package/dist/lib/space-detection.d.ts.map +1 -1
- package/dist/lib/space-detection.js +112 -24
- package/dist/lib/structure-kernel.d.ts +22 -9
- package/dist/lib/structure-kernel.d.ts.map +1 -1
- package/dist/lib/structure-kernel.js +146 -28
- package/dist/lib/structure-reconcile.d.ts +1 -1
- package/dist/lib/structure-reconcile.d.ts.map +1 -1
- package/dist/lib/structure-reconcile.js +7 -4
- package/dist/lib/surface-intent.d.ts +10 -0
- package/dist/lib/surface-intent.d.ts.map +1 -0
- package/dist/lib/surface-intent.js +18 -0
- package/dist/lib/terrain-source.d.ts.map +1 -1
- package/dist/lib/terrain-source.js +2 -1
- package/dist/lib/wall-face-script.d.ts.map +1 -1
- package/dist/lib/wall-face-script.js +5 -2
- package/dist/material-kinds.d.ts +1 -1
- package/dist/material-kinds.d.ts.map +1 -1
- package/dist/material-kinds.js +1 -0
- package/dist/material-library.d.ts +15 -0
- package/dist/material-library.d.ts.map +1 -1
- package/dist/material-library.js +458 -59
- package/dist/node-slots/door.d.ts +3 -4
- package/dist/node-slots/door.d.ts.map +1 -1
- package/dist/node-slots/door.js +4 -3
- package/dist/node-slots/wall.d.ts.map +1 -1
- package/dist/node-slots/wall.js +21 -3
- package/dist/node-slots/window.d.ts +2 -2
- package/dist/node-slots/window.d.ts.map +1 -1
- package/dist/node-slots/window.js +6 -1
- package/dist/procedural-items/design.d.ts +8 -0
- package/dist/procedural-items/design.d.ts.map +1 -1
- package/dist/procedural-items/design.js +169 -21
- package/dist/procedural-items/motion-controller.d.ts +2 -0
- package/dist/procedural-items/motion-controller.d.ts.map +1 -1
- package/dist/procedural-items/motion-controller.js +2 -1
- package/dist/registry/index.d.ts +2 -2
- package/dist/registry/index.d.ts.map +1 -1
- package/dist/registry/index.js +1 -1
- package/dist/registry/mechanism.d.ts +4 -1
- package/dist/registry/mechanism.d.ts.map +1 -1
- package/dist/registry/mechanism.js +10 -0
- package/dist/registry/types.d.ts +65 -23
- package/dist/registry/types.d.ts.map +1 -1
- package/dist/runtime/__fixtures__/live-scene.d.ts +14 -0
- package/dist/runtime/__fixtures__/live-scene.d.ts.map +1 -0
- package/dist/runtime/__fixtures__/live-scene.js +64 -0
- package/dist/runtime/apply.d.ts +42 -0
- package/dist/runtime/apply.d.ts.map +1 -0
- package/dist/runtime/apply.js +274 -0
- package/dist/runtime/dependencies.d.ts +97 -0
- package/dist/runtime/dependencies.d.ts.map +1 -0
- package/dist/runtime/dependencies.js +42 -0
- package/dist/runtime/ids.d.ts +11 -0
- package/dist/runtime/ids.d.ts.map +1 -0
- package/dist/runtime/ids.js +80 -0
- package/dist/runtime/index.d.ts +14 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/index.js +11 -0
- package/dist/runtime/node-queries.d.ts +16 -0
- package/dist/runtime/node-queries.d.ts.map +1 -0
- package/dist/runtime/node-queries.js +30 -0
- package/dist/runtime/patch.d.ts +26 -0
- package/dist/runtime/patch.d.ts.map +1 -0
- package/dist/runtime/patch.js +165 -0
- package/dist/runtime/reader.d.ts +104 -0
- package/dist/runtime/reader.d.ts.map +1 -0
- package/dist/runtime/reader.js +455 -0
- package/dist/runtime/scene-runtime.d.ts +112 -0
- package/dist/runtime/scene-runtime.d.ts.map +1 -0
- package/dist/runtime/scene-runtime.js +302 -0
- package/dist/schema/__fixtures__/node-fixtures.d.ts.map +1 -1
- package/dist/schema/__fixtures__/node-fixtures.js +1 -0
- package/dist/schema/assembly.d.ts +3 -0
- package/dist/schema/assembly.d.ts.map +1 -1
- package/dist/schema/assembly.js +13 -0
- package/dist/schema/asset-url.d.ts +37 -2
- package/dist/schema/asset-url.d.ts.map +1 -1
- package/dist/schema/asset-url.js +80 -11
- package/dist/schema/base.d.ts +8 -0
- package/dist/schema/base.d.ts.map +1 -1
- package/dist/schema/base.js +19 -1
- package/dist/schema/build-up.d.ts +247 -0
- package/dist/schema/build-up.d.ts.map +1 -0
- package/dist/schema/build-up.js +83 -0
- package/dist/schema/geometry-source.d.ts +80 -0
- package/dist/schema/geometry-source.d.ts.map +1 -1
- package/dist/schema/geometry-source.js +38 -0
- package/dist/schema/index.d.ts +12 -7
- package/dist/schema/index.d.ts.map +1 -1
- package/dist/schema/index.js +12 -6
- package/dist/schema/material.d.ts +5 -0
- package/dist/schema/material.d.ts.map +1 -1
- package/dist/schema/material.js +6 -0
- package/dist/schema/nodes/beam.d.ts +264 -0
- package/dist/schema/nodes/beam.d.ts.map +1 -0
- package/dist/schema/nodes/beam.js +139 -0
- package/dist/schema/nodes/box-vent.d.ts +5 -0
- package/dist/schema/nodes/box-vent.d.ts.map +1 -1
- package/dist/schema/nodes/cabinet.d.ts +10 -0
- package/dist/schema/nodes/cabinet.d.ts.map +1 -1
- package/dist/schema/nodes/ceiling.d.ts +48 -0
- package/dist/schema/nodes/ceiling.d.ts.map +1 -1
- package/dist/schema/nodes/ceiling.js +5 -0
- package/dist/schema/nodes/chimney.d.ts +10 -0
- package/dist/schema/nodes/chimney.d.ts.map +1 -1
- package/dist/schema/nodes/column.d.ts +42 -0
- package/dist/schema/nodes/column.d.ts.map +1 -1
- package/dist/schema/nodes/column.js +11 -1
- package/dist/schema/nodes/cupola.d.ts +5 -0
- package/dist/schema/nodes/cupola.d.ts.map +1 -1
- package/dist/schema/nodes/door.d.ts +54 -3
- package/dist/schema/nodes/door.d.ts.map +1 -1
- package/dist/schema/nodes/door.js +41 -7
- package/dist/schema/nodes/dormer.d.ts +20 -0
- package/dist/schema/nodes/dormer.d.ts.map +1 -1
- package/dist/schema/nodes/downspout.d.ts +5 -0
- package/dist/schema/nodes/downspout.d.ts.map +1 -1
- package/dist/schema/nodes/elevator.d.ts +5 -0
- package/dist/schema/nodes/elevator.d.ts.map +1 -1
- package/dist/schema/nodes/eyebrow-vent.d.ts +5 -0
- package/dist/schema/nodes/eyebrow-vent.d.ts.map +1 -1
- package/dist/schema/nodes/fence.d.ts +5 -0
- package/dist/schema/nodes/fence.d.ts.map +1 -1
- package/dist/schema/nodes/guide.d.ts +14 -0
- package/dist/schema/nodes/guide.d.ts.map +1 -1
- package/dist/schema/nodes/guide.js +2 -0
- package/dist/schema/nodes/gutter.d.ts +5 -0
- package/dist/schema/nodes/gutter.d.ts.map +1 -1
- package/dist/schema/nodes/item.d.ts +71 -0
- package/dist/schema/nodes/item.d.ts.map +1 -1
- package/dist/schema/nodes/item.js +5 -1
- package/dist/schema/nodes/level.d.ts +1 -1
- package/dist/schema/nodes/level.d.ts.map +1 -1
- package/dist/schema/nodes/opening-types.d.ts +13 -0
- package/dist/schema/nodes/opening-types.d.ts.map +1 -1
- package/dist/schema/nodes/opening-types.js +8 -1
- package/dist/schema/nodes/railing-wall.d.ts +112 -0
- package/dist/schema/nodes/railing-wall.d.ts.map +1 -0
- package/dist/schema/nodes/railing-wall.js +160 -0
- package/dist/schema/nodes/ridge-vent.d.ts +5 -0
- package/dist/schema/nodes/ridge-vent.d.ts.map +1 -1
- package/dist/schema/nodes/roof-segment.d.ts +224 -1
- package/dist/schema/nodes/roof-segment.d.ts.map +1 -1
- package/dist/schema/nodes/roof-segment.js +57 -10
- package/dist/schema/nodes/roof-types.d.ts +11 -0
- package/dist/schema/nodes/roof-types.d.ts.map +1 -1
- package/dist/schema/nodes/roof-types.js +6 -0
- package/dist/schema/nodes/roof.d.ts +60 -0
- package/dist/schema/nodes/roof.d.ts.map +1 -1
- package/dist/schema/nodes/roof.js +4 -0
- package/dist/schema/nodes/shelf.d.ts +5 -0
- package/dist/schema/nodes/shelf.d.ts.map +1 -1
- package/dist/schema/nodes/site.d.ts +80 -0
- package/dist/schema/nodes/site.d.ts.map +1 -1
- package/dist/schema/nodes/site.js +7 -0
- package/dist/schema/nodes/skylight.d.ts +10 -0
- package/dist/schema/nodes/skylight.d.ts.map +1 -1
- package/dist/schema/nodes/slab.d.ts +137 -0
- package/dist/schema/nodes/slab.d.ts.map +1 -1
- package/dist/schema/nodes/slab.js +3 -0
- package/dist/schema/nodes/solar-panel.d.ts +10 -0
- package/dist/schema/nodes/solar-panel.d.ts.map +1 -1
- package/dist/schema/nodes/stair-segment.d.ts +5 -0
- package/dist/schema/nodes/stair-segment.d.ts.map +1 -1
- package/dist/schema/nodes/stair-structure.d.ts +69 -0
- package/dist/schema/nodes/stair-structure.d.ts.map +1 -0
- package/dist/schema/nodes/stair-structure.js +39 -0
- package/dist/schema/nodes/stair.d.ts +46 -0
- package/dist/schema/nodes/stair.d.ts.map +1 -1
- package/dist/schema/nodes/stair.js +3 -0
- package/dist/schema/nodes/turbine-vent.d.ts +5 -0
- package/dist/schema/nodes/turbine-vent.d.ts.map +1 -1
- package/dist/schema/nodes/wall.d.ts +135 -2
- package/dist/schema/nodes/wall.d.ts.map +1 -1
- package/dist/schema/nodes/wall.js +42 -6
- package/dist/schema/nodes/window.d.ts +66 -1
- package/dist/schema/nodes/window.d.ts.map +1 -1
- package/dist/schema/nodes/window.js +50 -5
- package/dist/schema/nodes/zone.d.ts +68 -0
- package/dist/schema/nodes/zone.d.ts.map +1 -1
- package/dist/schema/nodes/zone.js +32 -0
- package/dist/schema/scene-material.d.ts +5 -0
- package/dist/schema/scene-material.d.ts.map +1 -1
- package/dist/schema/types.d.ts +1079 -4
- package/dist/schema/types.d.ts.map +1 -1
- package/dist/schema/types.js +2 -0
- package/dist/schema/wall-type.d.ts +95 -0
- package/dist/schema/wall-type.d.ts.map +1 -0
- package/dist/schema/wall-type.js +32 -0
- package/dist/services/roof-bearing.d.ts.map +1 -1
- package/dist/services/roof-bearing.js +6 -3
- package/dist/services/roof-level.d.ts.map +1 -1
- package/dist/services/roof-level.js +4 -3
- package/dist/services/roof-move.d.ts.map +1 -1
- package/dist/services/roof-move.js +13 -7
- package/dist/services/storey.d.ts.map +1 -1
- package/dist/services/storey.js +13 -8
- package/dist/spatial/usage-field/beds.d.ts +51 -0
- package/dist/spatial/usage-field/beds.d.ts.map +1 -0
- package/dist/spatial/usage-field/beds.js +346 -0
- package/dist/spatial/usage-field/blocked.d.ts +28 -0
- package/dist/spatial/usage-field/blocked.d.ts.map +1 -0
- package/dist/spatial/usage-field/blocked.js +185 -0
- package/dist/spatial/usage-field/boxes.d.ts +17 -0
- package/dist/spatial/usage-field/boxes.d.ts.map +1 -0
- package/dist/spatial/usage-field/boxes.js +82 -0
- package/dist/spatial/usage-field/catalogue-shapes.d.ts +3 -0
- package/dist/spatial/usage-field/catalogue-shapes.d.ts.map +1 -0
- package/dist/spatial/usage-field/catalogue-shapes.js +257 -0
- package/dist/spatial/usage-field/catalogue.d.ts +6 -0
- package/dist/spatial/usage-field/catalogue.d.ts.map +1 -0
- package/dist/spatial/usage-field/catalogue.js +11 -0
- package/dist/spatial/usage-field/clash.d.ts +40 -0
- package/dist/spatial/usage-field/clash.d.ts.map +1 -0
- package/dist/spatial/usage-field/clash.js +187 -0
- package/dist/spatial/usage-field/door-stairs.d.ts +18 -0
- package/dist/spatial/usage-field/door-stairs.d.ts.map +1 -0
- package/dist/spatial/usage-field/door-stairs.js +129 -0
- package/dist/spatial/usage-field/entry-way.d.ts +14 -0
- package/dist/spatial/usage-field/entry-way.d.ts.map +1 -0
- package/dist/spatial/usage-field/entry-way.js +219 -0
- package/dist/spatial/usage-field/fences.d.ts +18 -0
- package/dist/spatial/usage-field/fences.d.ts.map +1 -0
- package/dist/spatial/usage-field/fences.js +253 -0
- package/dist/spatial/usage-field/field.d.ts +44 -0
- package/dist/spatial/usage-field/field.d.ts.map +1 -0
- package/dist/spatial/usage-field/field.js +145 -0
- package/dist/spatial/usage-field/findings.d.ts +76 -0
- package/dist/spatial/usage-field/findings.d.ts.map +1 -0
- package/dist/spatial/usage-field/findings.js +252 -0
- package/dist/spatial/usage-field/fixtures.d.ts +18 -0
- package/dist/spatial/usage-field/fixtures.d.ts.map +1 -0
- package/dist/spatial/usage-field/fixtures.js +160 -0
- package/dist/spatial/usage-field/flag.d.ts +10 -0
- package/dist/spatial/usage-field/flag.d.ts.map +1 -0
- package/dist/spatial/usage-field/flag.js +12 -0
- package/dist/spatial/usage-field/floors.d.ts +13 -0
- package/dist/spatial/usage-field/floors.d.ts.map +1 -0
- package/dist/spatial/usage-field/floors.js +36 -0
- package/dist/spatial/usage-field/index.d.ts +7 -0
- package/dist/spatial/usage-field/index.d.ts.map +1 -0
- package/dist/spatial/usage-field/index.js +5 -0
- package/dist/spatial/usage-field/items.d.ts +38 -0
- package/dist/spatial/usage-field/items.d.ts.map +1 -0
- package/dist/spatial/usage-field/items.js +261 -0
- package/dist/spatial/usage-field/labels.d.ts +8 -0
- package/dist/spatial/usage-field/labels.d.ts.map +1 -0
- package/dist/spatial/usage-field/labels.js +14 -0
- package/dist/spatial/usage-field/level-field.d.ts +47 -0
- package/dist/spatial/usage-field/level-field.d.ts.map +1 -0
- package/dist/spatial/usage-field/level-field.js +96 -0
- package/dist/spatial/usage-field/measure.d.ts +324 -0
- package/dist/spatial/usage-field/measure.d.ts.map +1 -0
- package/dist/spatial/usage-field/measure.js +458 -0
- package/dist/spatial/usage-field/obstacles.d.ts +63 -0
- package/dist/spatial/usage-field/obstacles.d.ts.map +1 -0
- package/dist/spatial/usage-field/obstacles.js +215 -0
- package/dist/spatial/usage-field/openings.d.ts +12 -0
- package/dist/spatial/usage-field/openings.d.ts.map +1 -0
- package/dist/spatial/usage-field/openings.js +162 -0
- package/dist/spatial/usage-field/path.d.ts +48 -0
- package/dist/spatial/usage-field/path.d.ts.map +1 -0
- package/dist/spatial/usage-field/path.js +354 -0
- package/dist/spatial/usage-field/pieces.d.ts +27 -0
- package/dist/spatial/usage-field/pieces.d.ts.map +1 -0
- package/dist/spatial/usage-field/pieces.js +89 -0
- package/dist/spatial/usage-field/shapes.d.ts +18 -0
- package/dist/spatial/usage-field/shapes.d.ts.map +1 -0
- package/dist/spatial/usage-field/shapes.js +92 -0
- package/dist/spatial/usage-field/stairs.d.ts +23 -0
- package/dist/spatial/usage-field/stairs.d.ts.map +1 -0
- package/dist/spatial/usage-field/stairs.js +163 -0
- package/dist/spatial/usage-field/support.d.ts +24 -0
- package/dist/spatial/usage-field/support.d.ts.map +1 -0
- package/dist/spatial/usage-field/support.js +46 -0
- package/dist/spatial/usage-field/swings.d.ts +846 -0
- package/dist/spatial/usage-field/swings.d.ts.map +1 -0
- package/dist/spatial/usage-field/swings.js +427 -0
- package/dist/spatial/usage-field/types.d.ts +65 -0
- package/dist/spatial/usage-field/types.d.ts.map +1 -0
- package/dist/spatial/usage-field/types.js +1 -0
- package/dist/spatial/usage-field/walls.d.ts +1057 -0
- package/dist/spatial/usage-field/walls.d.ts.map +1 -0
- package/dist/spatial/usage-field/walls.js +166 -0
- package/dist/spatial/usage-field/way-in.d.ts +26 -0
- package/dist/spatial/usage-field/way-in.d.ts.map +1 -0
- package/dist/spatial/usage-field/way-in.js +113 -0
- package/dist/store/actions/node-actions.d.ts +2124 -1322
- package/dist/store/actions/node-actions.d.ts.map +1 -1
- package/dist/store/actions/node-actions.js +42 -16
- package/dist/store/derived-node-guard.d.ts +10 -2
- package/dist/store/derived-node-guard.d.ts.map +1 -1
- package/dist/store/derived-node-guard.js +31 -11
- package/dist/store/document-settling.d.ts +9 -0
- package/dist/store/document-settling.d.ts.map +1 -0
- package/dist/store/document-settling.js +22 -0
- package/dist/store/history-control.d.ts +19 -10
- package/dist/store/history-control.d.ts.map +1 -1
- package/dist/store/history-control.js +176 -127
- package/dist/store/history-drafts.d.ts.map +1 -1
- package/dist/store/history-drafts.js +21 -17
- package/dist/store/live-previews.d.ts +9 -0
- package/dist/store/live-previews.d.ts.map +1 -0
- package/dist/store/live-previews.js +19 -0
- package/dist/store/scene-annotations.d.ts +6751 -5151
- package/dist/store/scene-annotations.d.ts.map +1 -1
- package/dist/store/scene-environment.d.ts +33 -0
- package/dist/store/scene-environment.d.ts.map +1 -0
- package/dist/store/scene-environment.js +54 -0
- package/dist/store/scene-hydration.d.ts.map +1 -1
- package/dist/store/scene-hydration.js +41 -30
- package/dist/store/use-interactive.d.ts +9 -3
- package/dist/store/use-interactive.d.ts.map +1 -1
- package/dist/store/use-interactive.js +43 -11
- package/dist/store/use-live-node-overrides.d.ts.map +1 -1
- package/dist/store/use-live-node-overrides.js +3 -0
- package/dist/store/use-scene.d.ts +25 -0
- package/dist/store/use-scene.d.ts.map +1 -1
- package/dist/store/use-scene.js +408 -336
- package/dist/systems/document-reconcile.d.ts +40 -0
- package/dist/systems/document-reconcile.d.ts.map +1 -0
- package/dist/systems/document-reconcile.js +159 -0
- package/dist/systems/elevator/elevator-opening-system.d.ts.map +1 -1
- package/dist/systems/elevator/elevator-opening-system.js +9 -24
- package/dist/systems/fence/guard-layout.d.ts +69 -0
- package/dist/systems/fence/guard-layout.d.ts.map +1 -0
- package/dist/systems/fence/guard-layout.js +194 -0
- package/dist/systems/owned-floor-openings.d.ts +13 -1
- package/dist/systems/owned-floor-openings.d.ts.map +1 -1
- package/dist/systems/owned-floor-openings.js +58 -2
- package/dist/systems/reconcile-owned-floor-openings.d.ts +3 -1
- package/dist/systems/reconcile-owned-floor-openings.d.ts.map +1 -1
- package/dist/systems/reconcile-owned-floor-openings.js +4 -4
- package/dist/systems/roof/roof-elevation-system.d.ts.map +1 -1
- package/dist/systems/roof/roof-elevation-system.js +8 -26
- package/dist/systems/roof/roof-elevation.d.ts +16 -1
- package/dist/systems/roof/roof-elevation.d.ts.map +1 -1
- package/dist/systems/roof/roof-elevation.js +85 -4
- package/dist/systems/roof/roof-footprint.d.ts +42 -1
- package/dist/systems/roof/roof-footprint.d.ts.map +1 -1
- package/dist/systems/roof/roof-footprint.js +160 -4
- package/dist/systems/slab/__fixtures__/floor-step.d.ts +3163 -1934
- package/dist/systems/slab/__fixtures__/floor-step.d.ts.map +1 -1
- package/dist/systems/slab/__fixtures__/raised-room.d.ts +2495 -1249
- package/dist/systems/slab/__fixtures__/raised-room.d.ts.map +1 -1
- package/dist/systems/stair/stair-clearance.d.ts +7 -0
- package/dist/systems/stair/stair-clearance.d.ts.map +1 -1
- package/dist/systems/stair/stair-clearance.js +31 -11
- package/dist/systems/stair/stair-construction.d.ts +8 -3
- package/dist/systems/stair/stair-construction.d.ts.map +1 -1
- package/dist/systems/stair/stair-construction.js +55 -4
- package/dist/systems/stair/stair-opening-preview.d.ts +889 -89
- package/dist/systems/stair/stair-opening-preview.d.ts.map +1 -1
- package/dist/systems/stair/stair-opening-system.d.ts.map +1 -1
- package/dist/systems/stair/stair-opening-system.js +18 -34
- package/dist/systems/stair/stair-presets.d.ts +36 -0
- package/dist/systems/stair/stair-presets.d.ts.map +1 -1
- package/dist/systems/stair/stair-rise-query.d.ts.map +1 -1
- package/dist/systems/stair/stair-rise-query.js +3 -2
- package/dist/systems/stair/stair-rise.d.ts.map +1 -1
- package/dist/systems/stair/stair-rise.js +6 -0
- package/dist/systems/stair/stair-sizing.d.ts +42 -11
- package/dist/systems/stair/stair-sizing.d.ts.map +1 -1
- package/dist/systems/stair/stair-sizing.js +10 -1
- package/dist/systems/stair/stair-structure.d.ts +277 -0
- package/dist/systems/stair/stair-structure.d.ts.map +1 -0
- package/dist/systems/stair/stair-structure.js +496 -0
- package/dist/systems/wall/wall-assembly.d.ts +84 -6
- package/dist/systems/wall/wall-assembly.d.ts.map +1 -1
- package/dist/systems/wall/wall-assembly.js +204 -5
- package/dist/systems/wall/wall-finish.d.ts +38 -2
- package/dist/systems/wall/wall-finish.d.ts.map +1 -1
- package/dist/systems/wall/wall-finish.js +70 -2
- package/dist/systems/wall/wall-footprint.js +2 -2
- package/dist/systems/wall/wall-merge.d.ts.map +1 -1
- package/dist/systems/wall/wall-merge.js +28 -7
- package/dist/systems/wall/wall-mitering.d.ts +1 -0
- package/dist/systems/wall/wall-mitering.d.ts.map +1 -1
- package/dist/systems/wall/wall-mitering.js +152 -52
- package/dist/systems/wall/wall-move.d.ts +23 -6
- package/dist/systems/wall/wall-move.d.ts.map +1 -1
- package/dist/systems/wall/wall-move.js +65 -0
- package/dist/systems/wall/wall-top.d.ts +2 -2
- package/dist/systems/wall/wall-top.d.ts.map +1 -1
- package/dist/systems/wall/wall-top.js +6 -1
- package/dist/systems/wall/wall-topology.d.ts +32 -1
- package/dist/systems/wall/wall-topology.d.ts.map +1 -1
- package/dist/systems/wall/wall-topology.js +118 -10
- package/dist/systems/wall/wall-trim-profiles.d.ts +12 -0
- package/dist/systems/wall/wall-trim-profiles.d.ts.map +1 -0
- package/dist/systems/wall/wall-trim-profiles.js +191 -0
- package/dist/utils/ensure-scene-openings.d.ts +6523 -4923
- package/dist/utils/ensure-scene-openings.d.ts.map +1 -1
- package/dist/utils/floor-piece-adoption.d.ts +5 -0
- package/dist/utils/floor-piece-adoption.d.ts.map +1 -1
- package/dist/utils/floor-plate-migration.d.ts +1930 -1130
- package/dist/utils/floor-plate-migration.d.ts.map +1 -1
- package/dist/utils/owned-floor-opening-migration.d.ts +888 -88
- package/dist/utils/owned-floor-opening-migration.d.ts.map +1 -1
- package/dist/utils/reconcile-structure-on-load.d.ts +1930 -1130
- package/dist/utils/reconcile-structure-on-load.d.ts.map +1 -1
- package/dist/utils/structure-id.d.ts.map +1 -1
- package/dist/utils/structure-id.js +4 -0
- package/package.json +22 -5
- package/dist/lib/generic-foundation.d.ts +0 -40
- package/dist/lib/generic-foundation.d.ts.map +0 -1
- package/dist/lib/generic-foundation.js +0 -200
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
import { type ObjectPiece } from '../agent-tools/add-object.js';
|
|
1
2
|
import { type ScriptedNode } from '../lib/geometry-script-node.js';
|
|
2
3
|
import { type AnyNode, type CompiledGeometryScript, type GeometryScriptLanguage, type GeometryScriptParamValue, type WallFace } from '../schema/index.js';
|
|
3
|
-
import type { AgentOperation, BatchedObject } from './types.js';
|
|
4
|
+
import type { AgentContext, AgentOperation, BatchedObject } from './types.js';
|
|
4
5
|
export type AddObjectInput = {
|
|
5
6
|
/** Absent for a params-only edit: the host compiled the object's stored script. */
|
|
6
7
|
code?: string;
|
|
@@ -11,12 +12,19 @@ export type AddObjectInput = {
|
|
|
11
12
|
/** Degrees about Y, as the contract parses it. */
|
|
12
13
|
rotation?: number;
|
|
13
14
|
side?: 'front' | 'back';
|
|
15
|
+
/** The module's slot colours as written, not their library matches. */
|
|
16
|
+
exact?: boolean;
|
|
14
17
|
name?: string;
|
|
15
18
|
description?: string;
|
|
16
19
|
tags?: string[];
|
|
17
20
|
category?: string;
|
|
18
21
|
/** What the object stands in for; kept in `metadata.reason`, listed by verify_scene. */
|
|
19
22
|
reason?: string;
|
|
23
|
+
/**
|
|
24
|
+
* Roof geometry (`metadata.role: 'roof'`) for a roof level: not storey content, so the storey's
|
|
25
|
+
* wall and slab shape refusals do not apply. Set by author_scene, not by the tool's contract.
|
|
26
|
+
*/
|
|
27
|
+
role?: 'roof';
|
|
20
28
|
/** What the surface's compile produced from `code` (compiled before the operation runs). */
|
|
21
29
|
compiled: CompiledGeometryScript;
|
|
22
30
|
};
|
|
@@ -41,6 +49,20 @@ export declare function requireAddObjectReason(input: {
|
|
|
41
49
|
nodeId?: string;
|
|
42
50
|
reason?: string;
|
|
43
51
|
}): void;
|
|
52
|
+
/** A piece to make from words (`add_object`'s `piece`): what a maker reads, and where it lands. */
|
|
53
|
+
export type PlannedPiece = {
|
|
54
|
+
id: string;
|
|
55
|
+
description: string;
|
|
56
|
+
size: [number, number, number];
|
|
57
|
+
mount: ObjectPiece['mount'];
|
|
58
|
+
/** The add_object call, without code, that places it once its module lands; null: made only. */
|
|
59
|
+
place: Omit<AddObjectInput, 'compiled' | 'code'> | null;
|
|
60
|
+
};
|
|
61
|
+
/** The piece path of add_object, before any host makes it: the same refusals on every surface. */
|
|
62
|
+
export declare function planPiece(input: Omit<AddObjectInput, 'compiled'> & {
|
|
63
|
+
piece: ObjectPiece;
|
|
64
|
+
language?: unknown;
|
|
65
|
+
}): PlannedPiece;
|
|
44
66
|
export declare const addObject: AgentOperation<AddObjectInput>;
|
|
45
67
|
/**
|
|
46
68
|
* `add_object` inside run_batch: the batch's host built the module before the batch ran (a compile
|
|
@@ -57,7 +79,7 @@ export declare const addObjectInBatch: AgentOperation<Omit<AddObjectInput, 'comp
|
|
|
57
79
|
export declare function buildBatchObjects(calls: readonly {
|
|
58
80
|
tool?: unknown;
|
|
59
81
|
input?: unknown;
|
|
60
|
-
}[], build: (input: Omit<AddObjectInput, 'compiled'>) => Promise<CompiledGeometryScript
|
|
82
|
+
}[], build: (input: Omit<AddObjectInput, 'compiled'>) => Promise<CompiledGeometryScript>, designBrief?: AgentContext['designBrief']): Promise<Record<number, BatchedObject>>;
|
|
61
83
|
export type RescriptOpeningInput = {
|
|
62
84
|
description?: string;
|
|
63
85
|
category?: string;
|
|
@@ -107,22 +129,26 @@ export declare function refuseParamsWithoutScript(nodes: Record<string, AnyNode>
|
|
|
107
129
|
* fields would no longer match the geometry. Restating the current value passes.
|
|
108
130
|
*/
|
|
109
131
|
export declare function scriptedFieldRefusal(node: AnyNode, data: Record<string, unknown>): string | null;
|
|
110
|
-
/**
|
|
132
|
+
/**
|
|
133
|
+
* What `get_source` reads: a scripted node, a room's floor script, a slab's surface script, or a
|
|
134
|
+
* wall face's script.
|
|
135
|
+
*/
|
|
111
136
|
export type ScriptReadable = Pick<ScriptedNode, 'name' | 'source'> & {
|
|
112
137
|
id: string;
|
|
113
|
-
type: ScriptedNode['type'] | 'zone' | 'wall';
|
|
138
|
+
type: ScriptedNode['type'] | 'zone' | 'slab' | 'wall';
|
|
114
139
|
/** The wall face whose script it is. */
|
|
115
140
|
face?: WallFace;
|
|
116
141
|
};
|
|
117
142
|
/**
|
|
118
143
|
* The script `get_source` reads at `nodeId`: an authored object's, a room's floor script by its
|
|
119
|
-
* zone id, or a wall's face script (`face`, which a wall
|
|
144
|
+
* zone id, a slab's surface script by its slab id, or a wall's face script (`face`, which a wall
|
|
145
|
+
* with one scripted face may leave out).
|
|
120
146
|
*/
|
|
121
147
|
export declare function readableScript(nodes: Record<string, AnyNode>, nodeId: string, face?: WallFace): ScriptReadable;
|
|
122
148
|
/** What `get_source` answers once the host has the module's text. */
|
|
123
149
|
export declare function readSourceResult(node: ScriptReadable, code: string): {
|
|
124
150
|
nodeId: string;
|
|
125
|
-
type: "column" | "door" | "item" | "wall" | "window" | "zone";
|
|
151
|
+
type: "column" | "door" | "item" | "slab" | "wall" | "window" | "zone";
|
|
126
152
|
face?: WallFace | undefined;
|
|
127
153
|
name: string | undefined;
|
|
128
154
|
language: "bpy" | "three";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add-object.d.ts","sourceRoot":"","sources":["../../src/agent-operations/add-object.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"add-object.d.ts","sourceRoot":"","sources":["../../src/agent-operations/add-object.ts"],"names":[],"mappings":"AACA,OAAO,EAAiB,KAAK,WAAW,EAAE,MAAM,2BAA2B,CAAA;AAI3E,OAAO,EAKL,KAAK,YAAY,EAIlB,MAAM,6BAA6B,CAAA;AAGpC,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,sBAAsB,EAC3B,KAAK,sBAAsB,EAE3B,KAAK,wBAAwB,EAM7B,KAAK,QAAQ,EACd,MAAM,WAAW,CAAA;AAOlB,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,EAAc,MAAM,SAAS,CAAA;AAItF,MAAM,MAAM,cAAc,GAAG;IAC3B,mFAAmF;IACnF,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAA;IACjD,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;IACnB,kDAAkD;IAClD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,CAAA;IACvB,uEAAuE;IACvE,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,wFAAwF;IACxF,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,4FAA4F;IAC5F,QAAQ,EAAE,sBAAsB,CAAA;CACjC,CAAA;AA6CD;;;GAGG;AACH,eAAO,MAAM,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAa1C,CAAA;AAwID;;;;;;;GAOG;AACH;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,QAMjF;AAED,mGAAmG;AACnG,MAAM,MAAM,YAAY,GAAG;IACzB,EAAE,EAAE,MAAM,CAAA;IACV,WAAW,EAAE,MAAM,CAAA;IACnB,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IAC9B,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,CAAA;IAC3B,gGAAgG;IAChG,KAAK,EAAE,IAAI,CAAC,cAAc,EAAE,UAAU,GAAG,MAAM,CAAC,GAAG,IAAI,CAAA;CACxD,CAAA;AAED,kGAAkG;AAClG,wBAAgB,SAAS,CACvB,KAAK,EAAE,IAAI,CAAC,cAAc,EAAE,UAAU,CAAC,GAAG;IAAE,KAAK,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,GACnF,YAAY,CAiBd;AAED,eAAO,MAAM,SAAS,EAAE,cAAc,CAAC,cAAc,CA+HpD,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,EAAE,cAAc,CAAC,IAAI,CAAC,cAAc,EAAE,UAAU,CAAC,CAkB7E,CAAA;AAKD;;;;;GAKG;AACH,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,SAAS;IAAE,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,EAAE,EACrD,KAAK,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,cAAc,EAAE,UAAU,CAAC,KAAK,OAAO,CAAC,sBAAsB,CAAC,EACnF,WAAW,CAAC,EAAE,YAAY,CAAC,aAAa,CAAC,GACxC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CA4CxC;AAED,MAAM,MAAM,oBAAoB,GAAG;IACjC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;IACnB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,8EAA8E;IAC9E,QAAQ,EAAE,sBAAsB,CAAA;CACjC,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,eAAe,EAAE,cAAc,CAAC,oBAAoB,CA2DhE,CAAA;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,OAAO,GAAG,SAAS,EACzB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,wBAAwB,CAAC,GAAG,SAAS,GAC3D,MAAM,CAAC,MAAM,EAAE,wBAAwB,CAAC,GAAG,SAAS,CAEtD;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,OAAO,GAAG,SAAS,EACzB,KAAK,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,sBAAsB,CAAA;CAAE,GAC1D,sBAAsB,CAGxB;AAED,qFAAqF;AACrF,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,YAAY,CAU3F;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,KAAK,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAC1D,IAAI,CAKN;AASD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,IAAI,CAUhG;AAED;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,QAAQ,CAAC,GAAG;IACnE,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,YAAY,CAAC,MAAM,CAAC,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAA;IACrD,wCAAwC;IACxC,IAAI,CAAC,EAAE,QAAQ,CAAA;CAChB,CAAA;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,QAAQ,GACd,cAAc,CAqChB;AAED,qEAAqE;AACrE,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM;;;;;;;;;;;;;;;;;;;EAalE"}
|
|
@@ -3,13 +3,16 @@ import { addObjectTool } from '../agent-tools/add-object.js';
|
|
|
3
3
|
import { isAgentRefusal, refuse } from '../agent-tools/refusal.js';
|
|
4
4
|
import { CATALOG_SOURCE } from '../agent-tools/sources.js';
|
|
5
5
|
import { artifactUrl } from '../lib/artifact-store.js';
|
|
6
|
-
import { isScriptedNode, matchScriptSlotsToLibrary, requireMeasured, scriptedSize, scriptInteractive, scriptSource, } from '../lib/geometry-script-node.js';
|
|
6
|
+
import { isScriptedNode, matchScriptSlotsToLibrary, rebuiltInteractive, requireMeasured, scriptedSize, scriptInteractive, scriptSource, } from '../lib/geometry-script-node.js';
|
|
7
7
|
import { geometryRestingHeight, resettledPosition } from '../lib/geometry-surfaces.js';
|
|
8
8
|
import { area, intersection, union } from '../lib/polygon-boolean.js';
|
|
9
9
|
import { generateId, ItemNode, } from '../schema/index.js';
|
|
10
10
|
import { achievedChanges } from './achieved.js';
|
|
11
|
+
import { requireFurnishing } from './design-brief.js';
|
|
11
12
|
import { targetLevel } from './level-target.js';
|
|
12
13
|
import { roofLevelRefusal } from './roof-writes.js';
|
|
14
|
+
import { exactColorMaterial, exactScriptSlots } from './scene-materials.js';
|
|
15
|
+
import { queryNodes } from './scene-queries.js';
|
|
13
16
|
const ATTACH = {
|
|
14
17
|
floor: undefined,
|
|
15
18
|
wall: 'wall',
|
|
@@ -22,11 +25,14 @@ const HOSTS = {
|
|
|
22
25
|
'wall-side': ['wall'],
|
|
23
26
|
ceiling: ['ceiling'],
|
|
24
27
|
};
|
|
25
|
-
function scriptAsset(compiled, input,
|
|
28
|
+
function scriptAsset(compiled, input, previousNode) {
|
|
29
|
+
const previous = previousNode?.asset;
|
|
26
30
|
const { min, max } = compiled.manifest.bounds;
|
|
27
31
|
const restingHeight = geometryRestingHeight(compiled.manifest);
|
|
28
32
|
const attachTo = ATTACH[compiled.mount];
|
|
29
|
-
const interactive =
|
|
33
|
+
const interactive = previousNode
|
|
34
|
+
? rebuiltInteractive(compiled.manifest, previousNode)
|
|
35
|
+
: scriptInteractive(compiled.manifest);
|
|
30
36
|
return {
|
|
31
37
|
id: `script_${compiled.sha256.slice(0, 16)}`,
|
|
32
38
|
category: input.category ?? previous?.category ?? 'object',
|
|
@@ -97,7 +103,7 @@ const FLOOR_SHARE = 0.5;
|
|
|
97
103
|
* the compile measured, turned and placed as the object will be.
|
|
98
104
|
*/
|
|
99
105
|
function shareOverFloor(nodes, levelId, compiled, input) {
|
|
100
|
-
const slabs =
|
|
106
|
+
const slabs = queryNodes(nodes, { type: 'slab', parentId: levelId });
|
|
101
107
|
const { min, max } = compiled.manifest.bounds;
|
|
102
108
|
const footprintArea = (max[0] - min[0]) * (max[2] - min[2]);
|
|
103
109
|
if (slabs.length === 0 || !(footprintArea > 0))
|
|
@@ -183,10 +189,40 @@ export function requireAddObjectReason(input) {
|
|
|
183
189
|
if (!input.nodeId && !input.reason?.trim())
|
|
184
190
|
refuse('reason_required', 'Give its design intent (reason): why the authored shape, size or style suits the request. The scene check lists every authored object with its reason; no catalog-exhaustion proof is required.');
|
|
185
191
|
}
|
|
192
|
+
/** The piece path of add_object, before any host makes it: the same refusals on every surface. */
|
|
193
|
+
export function planPiece(input) {
|
|
194
|
+
if (input.code)
|
|
195
|
+
refuse('piece_with_code', 'Pass code or piece, not both: piece has Pascal write the module.');
|
|
196
|
+
if (input.nodeId)
|
|
197
|
+
refuse('piece_on_edit', 'piece makes a new object; to change an object, pass its nodeId with code or params.');
|
|
198
|
+
requireAddObjectReason(input);
|
|
199
|
+
const { piece, params: _params, language: _language, code: _code, ...place } = input;
|
|
200
|
+
return {
|
|
201
|
+
id: piece.id ?? generateId('piece'),
|
|
202
|
+
description: piece.description,
|
|
203
|
+
size: [piece.size.width, piece.size.height, piece.size.depth],
|
|
204
|
+
mount: piece.mount ?? 'floor',
|
|
205
|
+
place: place.position || place.parentId ? place : null,
|
|
206
|
+
};
|
|
207
|
+
}
|
|
186
208
|
export const addObject = (nodes, input, context) => {
|
|
187
209
|
const { compiled } = input;
|
|
188
210
|
requireMeasured(compiled, { label: input.name, nodeId: input.nodeId, tool: 'add_object' });
|
|
189
211
|
const rotation = input.rotation === undefined ? undefined : [0, (input.rotation * Math.PI) / 180, 0];
|
|
212
|
+
const createdMaterials = [];
|
|
213
|
+
const slotsOf = (matched) => {
|
|
214
|
+
if (!input.exact)
|
|
215
|
+
return matched;
|
|
216
|
+
const materials = { ...context.materials };
|
|
217
|
+
return exactScriptSlots(compiled.manifest, matched, (hex, surface) => {
|
|
218
|
+
const resolved = exactColorMaterial(context.materials && materials, hex, surface);
|
|
219
|
+
if (resolved.created) {
|
|
220
|
+
materials[resolved.sceneMaterial.id] = resolved.sceneMaterial;
|
|
221
|
+
createdMaterials.push(resolved.sceneMaterial);
|
|
222
|
+
}
|
|
223
|
+
return resolved.ref;
|
|
224
|
+
});
|
|
225
|
+
};
|
|
190
226
|
if (input.nodeId) {
|
|
191
227
|
if (nodes[input.nodeId]?.type === 'column')
|
|
192
228
|
refuse('use_column_tool', `Rebuild ${input.nodeId} with add_column and nodeId.`, {
|
|
@@ -205,8 +241,8 @@ export const addObject = (nodes, input, context) => {
|
|
|
205
241
|
rotation: rotation ?? previous.rotation,
|
|
206
242
|
...(input.side === undefined ? {} : { side: input.side }),
|
|
207
243
|
source: scriptSource(compiled, itemSourceMeta(input), previous.source),
|
|
208
|
-
slots: matchScriptSlotsToLibrary(compiled.manifest, previous.slots, previous.source?.manifest),
|
|
209
|
-
asset: scriptAsset(compiled, input, previous
|
|
244
|
+
slots: slotsOf(matchScriptSlotsToLibrary(compiled.manifest, previous.slots, previous.source?.manifest)),
|
|
245
|
+
asset: scriptAsset(compiled, input, previous),
|
|
210
246
|
...(input.reason ? { metadata: { ...previous.metadata, reason: input.reason } } : {}),
|
|
211
247
|
});
|
|
212
248
|
// Children resting on or hanging from the object follow its new geometry.
|
|
@@ -230,6 +266,7 @@ export const addObject = (nodes, input, context) => {
|
|
|
230
266
|
{ id: next.id, data: next },
|
|
231
267
|
...resettled.map(({ id, position }) => ({ id, data: { position } })),
|
|
232
268
|
],
|
|
269
|
+
...(createdMaterials.length ? { materials: createdMaterials } : {}),
|
|
233
270
|
},
|
|
234
271
|
};
|
|
235
272
|
}
|
|
@@ -240,7 +277,7 @@ export const addObject = (nodes, input, context) => {
|
|
|
240
277
|
if (!hosts.includes(parent.type)) {
|
|
241
278
|
refuse('wrong_host', `A ${compiled.mount} object goes on a ${hosts.join(' or ')}, not on a ${parent.type}. Pass parentId of a ${hosts[0]}, or change \`mount\`.`, { mount: compiled.mount, parentType: parent.type });
|
|
242
279
|
}
|
|
243
|
-
if (compiled.mount === 'floor' && parent.type === 'level') {
|
|
280
|
+
if (compiled.mount === 'floor' && parent.type === 'level' && input.role !== 'roof') {
|
|
244
281
|
// Given no host while the roof level is in view (a roof just placed selects it), the object
|
|
245
282
|
// belongs on the storey it covers; one named onto the roof level goes up with the roof (a
|
|
246
283
|
// chimney cap, a gable louvre).
|
|
@@ -267,9 +304,9 @@ export const addObject = (nodes, input, context) => {
|
|
|
267
304
|
0,
|
|
268
305
|
],
|
|
269
306
|
source: scriptSource(compiled, itemSourceMeta(input)),
|
|
270
|
-
slots: matchScriptSlotsToLibrary(compiled.manifest),
|
|
307
|
+
slots: slotsOf(matchScriptSlotsToLibrary(compiled.manifest)),
|
|
271
308
|
asset,
|
|
272
|
-
metadata: { reason: input.reason },
|
|
309
|
+
metadata: { reason: input.reason, ...(input.role ? { role: input.role } : {}) },
|
|
273
310
|
});
|
|
274
311
|
const hint = [
|
|
275
312
|
typeHint(input),
|
|
@@ -281,7 +318,10 @@ export const addObject = (nodes, input, context) => {
|
|
|
281
318
|
.join(' ');
|
|
282
319
|
return {
|
|
283
320
|
result: { ...summary(node, compiled, []), ...(hint ? { hint } : {}) },
|
|
284
|
-
changes: {
|
|
321
|
+
changes: {
|
|
322
|
+
create: [{ node, parentId: parent.id }],
|
|
323
|
+
...(createdMaterials.length ? { materials: createdMaterials } : {}),
|
|
324
|
+
},
|
|
285
325
|
};
|
|
286
326
|
};
|
|
287
327
|
/**
|
|
@@ -309,7 +349,7 @@ const BATCH_COMPILES_AT_ONCE = 3;
|
|
|
309
349
|
* that refuses) is kept with its own message, so the batch reports it and the others stand. A call
|
|
310
350
|
* whose input does not parse is left out: the batch refuses it with the contract's message.
|
|
311
351
|
*/
|
|
312
|
-
export async function buildBatchObjects(calls, build) {
|
|
352
|
+
export async function buildBatchObjects(calls, build, designBrief) {
|
|
313
353
|
const parse = z.object(addObjectTool.input);
|
|
314
354
|
const built = {};
|
|
315
355
|
const edited = new Set();
|
|
@@ -338,6 +378,7 @@ export async function buildBatchObjects(calls, build) {
|
|
|
338
378
|
const worker = async () => {
|
|
339
379
|
for (let job = jobs[next++]; job; job = jobs[next++]) {
|
|
340
380
|
try {
|
|
381
|
+
requireFurnishing('add_object', job.input, designBrief);
|
|
341
382
|
requireAddObjectReason(job.input);
|
|
342
383
|
built[job.index] = { compiled: await build(job.input) };
|
|
343
384
|
}
|
|
@@ -477,7 +518,8 @@ export function scriptedFieldRefusal(node, data) {
|
|
|
477
518
|
}
|
|
478
519
|
/**
|
|
479
520
|
* The script `get_source` reads at `nodeId`: an authored object's, a room's floor script by its
|
|
480
|
-
* zone id, or a wall's face script (`face`, which a wall
|
|
521
|
+
* zone id, a slab's surface script by its slab id, or a wall's face script (`face`, which a wall
|
|
522
|
+
* with one scripted face may leave out).
|
|
481
523
|
*/
|
|
482
524
|
export function readableScript(nodes, nodeId, face) {
|
|
483
525
|
const node = nodes[nodeId];
|
|
@@ -499,6 +541,11 @@ export function readableScript(nodes, nodeId, face) {
|
|
|
499
541
|
});
|
|
500
542
|
return { id: node.id, type: 'wall', name: node.name, source, face: read };
|
|
501
543
|
}
|
|
544
|
+
if (node?.type === 'slab') {
|
|
545
|
+
if (!node.surfaceScript)
|
|
546
|
+
refuse('not_authored', `${node.name || nodeId} has no surface script.`, { id: nodeId });
|
|
547
|
+
return { id: node.id, type: 'slab', name: node.name, source: node.surfaceScript };
|
|
548
|
+
}
|
|
502
549
|
if (node?.type !== 'zone')
|
|
503
550
|
return authoredObject(nodes, nodeId);
|
|
504
551
|
if (!node.floor?.script)
|
|
@@ -1,13 +1,8 @@
|
|
|
1
|
-
import { type LevelTargetInput } from './level-target.js';
|
|
2
1
|
import type { AgentOperation } from './types.js';
|
|
3
|
-
type AddWallInput =
|
|
4
|
-
start: number[];
|
|
5
|
-
end: number[];
|
|
6
|
-
thickness?: number;
|
|
7
|
-
height?: number;
|
|
8
|
-
curveOffset?: number;
|
|
9
|
-
};
|
|
2
|
+
type AddWallInput = z.infer<z.ZodObject<typeof addWallTool.input>>;
|
|
10
3
|
/** `add_wall`: one wall between two points, named as the editor names walls. */
|
|
11
4
|
export declare const addWall: AgentOperation<AddWallInput>;
|
|
5
|
+
import type { z } from 'zod';
|
|
6
|
+
import type { addWallTool } from '../agent-tools/walls.js';
|
|
12
7
|
export {};
|
|
13
8
|
//# sourceMappingURL=add-wall.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add-wall.d.ts","sourceRoot":"","sources":["../../src/agent-operations/add-wall.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"add-wall.d.ts","sourceRoot":"","sources":["../../src/agent-operations/add-wall.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAI7C,KAAK,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC,CAAA;AAElE,gFAAgF;AAChF,eAAO,MAAM,OAAO,EAAE,cAAc,CAAC,YAAY,CAoGhD,CAAA;AAED,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAC5B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA"}
|
|
@@ -3,16 +3,25 @@ import { levelFootprintLoops } from '../lib/building-footprint.js';
|
|
|
3
3
|
import { foundationReadingOfLevel } from '../lib/foundation-construction.js';
|
|
4
4
|
import { foundationWallRule, levelHoldsFoundationWalls, withFoundationConstruction, } from '../lib/foundation-wall.js';
|
|
5
5
|
import { lotOverhang } from '../lib/site-placement.js';
|
|
6
|
-
import { WallNode } from '../schema/index.js';
|
|
6
|
+
import { railingWallDefaults, WallNode } from '../schema/index.js';
|
|
7
7
|
import { normalizeWallCurveOffset } from '../systems/wall/wall-curve.js';
|
|
8
8
|
import { WALL_MIN_LENGTH } from '../systems/wall/wall-topology.js';
|
|
9
9
|
import { applySceneChanges } from './apply-changes.js';
|
|
10
10
|
import { targetLevel } from './level-target.js';
|
|
11
11
|
import { refuseRoofLevel } from './roof-writes.js';
|
|
12
|
+
import { queryNodes } from './scene-queries.js';
|
|
13
|
+
import { wallTypePatch } from './wall-type.js';
|
|
12
14
|
/** `add_wall`: one wall between two points, named as the editor names walls. */
|
|
13
15
|
export const addWall = (nodes, input, context) => {
|
|
14
16
|
const level = targetLevel(nodes, input, context);
|
|
15
17
|
refuseRoofLevel(nodes, level.id, 'a wall');
|
|
18
|
+
const railing = input.wallType === 'railing';
|
|
19
|
+
if (input.railing && !railing)
|
|
20
|
+
refuse('not_a_railing', 'railing settings require wallType railing.');
|
|
21
|
+
if (railing && input.type !== undefined)
|
|
22
|
+
refuse('railing_wall', 'A railing has no assembly: omit type.');
|
|
23
|
+
const guardDefaults = railing ? railingWallDefaults(input.railing?.style) : undefined;
|
|
24
|
+
const guard = guardDefaults ? { ...guardDefaults.railing, ...input.railing } : undefined;
|
|
16
25
|
const start = input.start;
|
|
17
26
|
const end = input.end;
|
|
18
27
|
const length = Math.hypot(end[0] - start[0], end[1] - start[1]);
|
|
@@ -21,7 +30,8 @@ export const addWall = (nodes, input, context) => {
|
|
|
21
30
|
const curveOffset = input.curveOffset
|
|
22
31
|
? normalizeWallCurveOffset({ start, end }, input.curveOffset)
|
|
23
32
|
: 0;
|
|
24
|
-
const walls =
|
|
33
|
+
const walls = queryNodes(nodes, { type: 'wall' }).length;
|
|
34
|
+
const assembly = input.type === undefined ? {} : wallTypePatch(nodes, input.type);
|
|
25
35
|
const drawn = WallNode.parse({
|
|
26
36
|
name: `Wall ${walls + 1}`,
|
|
27
37
|
parentId: level.id,
|
|
@@ -30,14 +40,27 @@ export const addWall = (nodes, input, context) => {
|
|
|
30
40
|
...(input.thickness === undefined ? {} : { thickness: input.thickness }),
|
|
31
41
|
...(input.height === undefined ? {} : { height: input.height }),
|
|
32
42
|
...(curveOffset ? { curveOffset } : {}),
|
|
43
|
+
...assembly,
|
|
44
|
+
...(input.wallType === undefined ? {} : { wallType: input.wallType }),
|
|
45
|
+
...(guardDefaults && guard
|
|
46
|
+
? {
|
|
47
|
+
...guardDefaults,
|
|
48
|
+
railing: guard,
|
|
49
|
+
height: input.height ?? guardDefaults.height,
|
|
50
|
+
thickness: guard.postSize,
|
|
51
|
+
}
|
|
52
|
+
: {}),
|
|
33
53
|
});
|
|
34
|
-
const [wall] =
|
|
35
|
-
|
|
36
|
-
drawn,
|
|
37
|
-
], [drawn], { thickness: input.thickness });
|
|
54
|
+
const [wall] = railing
|
|
55
|
+
? [drawn]
|
|
56
|
+
: withFoundationConstruction(nodes, level.id, [...queryNodes(nodes, { type: 'wall', parentId: level.id }), drawn], [drawn], { thickness: input.thickness, ...assembly });
|
|
38
57
|
const reading = foundationReadingOfLevel(nodes, level.id);
|
|
39
|
-
const foundation = wall.assembly !== undefined;
|
|
40
|
-
const partition = !
|
|
58
|
+
const foundation = input.type === undefined && wall.assembly !== undefined;
|
|
59
|
+
const partition = !railing &&
|
|
60
|
+
!foundation &&
|
|
61
|
+
input.type === undefined &&
|
|
62
|
+
input.thickness === undefined &&
|
|
63
|
+
levelHoldsFoundationWalls(nodes, level.id);
|
|
41
64
|
// the wall's mitred band, curve and all: what crosses the lot line, not only its centreline
|
|
42
65
|
const after = applySceneChanges(nodes, { create: [{ node: wall, parentId: level.id }] });
|
|
43
66
|
const site = lotOverhang(after, level.id, levelFootprintLoops(after, after[level.id], null, new Set([wall.id])));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apply-changes.d.ts","sourceRoot":"","sources":["../../src/agent-operations/apply-changes.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"apply-changes.d.ts","sourceRoot":"","sources":["../../src/agent-operations/apply-changes.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAA6B,MAAM,WAAW,CAAA;AACnE,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAelE;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,SAAS,SAAS,EAAE,GAC3B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAoCzB;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,UAAU,EACjB,OAAO,EAAE,YAAY,GAAG,SAAS,GAChC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAUzB;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,SAAS,YAAY,EAAE,GAC5B,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC,GAAG,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,CAyC7E"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { draftOf } from '../runtime/reader.js';
|
|
1
2
|
const childrenOf = (node) => node && 'children' in node && Array.isArray(node.children) ? node.children : null;
|
|
2
3
|
/**
|
|
3
4
|
* A node with a patch applied. A field the patch sets to `undefined` is removed, as the store's
|
|
@@ -16,7 +17,7 @@ function patched(node, data) {
|
|
|
16
17
|
* it. A create is written as given; parse it first for its schema's defaults.
|
|
17
18
|
*/
|
|
18
19
|
export function applySceneWrites(nodes, writes) {
|
|
19
|
-
const next =
|
|
20
|
+
const next = draftOf(nodes);
|
|
20
21
|
const setChildren = (parentId, edit) => {
|
|
21
22
|
const parent = parentId ? next[parentId] : undefined;
|
|
22
23
|
const children = childrenOf(parent);
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import type { AssetInput } from '../schema/index.js';
|
|
2
|
+
import type { AgentContext, SceneNodes } from './types.js';
|
|
3
|
+
/** One search of an item library: its words (none lists the library), a category, at most `limit` hits. */
|
|
4
|
+
export type AssetSearchQuery = {
|
|
5
|
+
text?: string;
|
|
6
|
+
category?: string;
|
|
7
|
+
limit: number;
|
|
8
|
+
};
|
|
9
|
+
export type AssetSearchResult = {
|
|
10
|
+
/** The best hits first, at most the query's limit. */
|
|
11
|
+
items: AssetInput[];
|
|
12
|
+
/** Every item the query matches. */
|
|
13
|
+
total: number;
|
|
14
|
+
/** The categories of every match, most first, where the host counts them: a cut search names them to narrow by. */
|
|
15
|
+
categories?: {
|
|
16
|
+
name: string;
|
|
17
|
+
count: number;
|
|
18
|
+
}[];
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* An item library a host searches where it is kept (a database) instead of handing every item
|
|
22
|
+
* over: ranked hits per query, and the items a call names, by id. A library of 100k items is
|
|
23
|
+
* never held whole by a session or a browser tab.
|
|
24
|
+
*/
|
|
25
|
+
export type AssetCatalogSource = {
|
|
26
|
+
search(query: AssetSearchQuery): Promise<AssetSearchResult>;
|
|
27
|
+
byId(ids: readonly string[]): Promise<AssetInput[]>;
|
|
28
|
+
};
|
|
29
|
+
/** What a host's agent tools place from: every item (a built-in list), or a source it searches. */
|
|
30
|
+
export type AssetCatalog = readonly AssetInput[] | AssetCatalogSource;
|
|
31
|
+
export declare const isAssetCatalogSource: (catalog: AssetCatalog) => catalog is AssetCatalogSource;
|
|
32
|
+
/**
|
|
33
|
+
* Items in the order search_assets lists them for `text` (`rank`); items that rank alike keep the
|
|
34
|
+
* order they came in. A host that finds hits its own way (a database's fusion) orders them so too.
|
|
35
|
+
*/
|
|
36
|
+
export declare function rankAssets(items: readonly AssetInput[], text: string): AssetInput[];
|
|
37
|
+
/**
|
|
38
|
+
* A search of a list held whole: the items whose name, id, category or tags hold every word of
|
|
39
|
+
* the query, best first (`rankAssets`, then by name), with the categories of all of them.
|
|
40
|
+
*/
|
|
41
|
+
export declare function searchAssetList(items: readonly AssetInput[], { text, category, limit }: AssetSearchQuery): AssetSearchResult;
|
|
42
|
+
/** A list served as a source: searched as `searchAssetList` does, items by id. */
|
|
43
|
+
export declare function assetCatalogSource(items: readonly AssetInput[]): AssetCatalogSource;
|
|
44
|
+
/** The key of a search in `catalogSearches`: its words, category and limit. */
|
|
45
|
+
export declare const assetSearchKey: ({ text, category, limit }: AssetSearchQuery) => string;
|
|
46
|
+
/** The searches a `search_assets` input runs, one per query, as its operation reads them. */
|
|
47
|
+
export declare function assetSearchesOf(input: unknown): AssetSearchQuery[];
|
|
48
|
+
/**
|
|
49
|
+
* What a call reads of the library, alone or in a batch: the searches of `search_assets`, and the
|
|
50
|
+
* ids the others look up — the items placed or viewed, furnish_room's set for its room type, the
|
|
51
|
+
* catalog items a paint with no role finishes (their models list the surfaces).
|
|
52
|
+
*/
|
|
53
|
+
export declare function catalogReads(nodes: SceneNodes, tool: string, input: unknown): {
|
|
54
|
+
ids: string[];
|
|
55
|
+
searches: AssetSearchQuery[];
|
|
56
|
+
};
|
|
57
|
+
/**
|
|
58
|
+
* What a call reads of the host's library, read before it as the operations are sync. A list is
|
|
59
|
+
* handed over whole. A source answers the call's searches (`catalogSearches`) and gives the items
|
|
60
|
+
* the call names (`catalog`), so a call that names none reads nothing.
|
|
61
|
+
*/
|
|
62
|
+
export declare function readCatalog(nodes: SceneNodes, tool: string, input: unknown, catalog: AssetCatalog): Promise<Pick<AgentContext, 'catalog' | 'catalogSearches'>>;
|
|
63
|
+
//# sourceMappingURL=asset-catalog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"asset-catalog.d.ts","sourceRoot":"","sources":["../../src/agent-operations/asset-catalog.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AAI3C,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAEvD,2GAA2G;AAC3G,MAAM,MAAM,gBAAgB,GAAG;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAA;AAElF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,sDAAsD;IACtD,KAAK,EAAE,UAAU,EAAE,CAAA;IACnB,oCAAoC;IACpC,KAAK,EAAE,MAAM,CAAA;IACb,mHAAmH;IACnH,UAAU,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;CAC/C,CAAA;AAED;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,MAAM,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAA;IAC3D,IAAI,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAAA;CACpD,CAAA;AAED,mGAAmG;AACnG,MAAM,MAAM,YAAY,GAAG,SAAS,UAAU,EAAE,GAAG,kBAAkB,CAAA;AAErE,eAAO,MAAM,oBAAoB,YAAa,YAAY,KAAG,OAAO,IAAI,kBAC/C,CAAA;AA4DzB;;;GAGG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,SAAS,UAAU,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,EAAE,CAKnF;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,SAAS,UAAU,EAAE,EAC5B,EAAE,IAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,gBAAgB,GAC/C,iBAAiB,CAiBnB;AAED,kFAAkF;AAClF,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,SAAS,UAAU,EAAE,GAAG,kBAAkB,CAMnF;AAED,+EAA+E;AAC/E,eAAO,MAAM,cAAc,8BAAoC,gBAAgB,KAAG,MACjC,CAAA;AAKjD,6FAA6F;AAC7F,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,gBAAgB,EAAE,CAalE;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,UAAU,EACjB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,OAAO,GACb;IAAE,GAAG,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,EAAE,gBAAgB,EAAE,CAAA;CAAE,CAqCjD;AAED;;;;GAIG;AACH,wBAAsB,WAAW,CAC/B,KAAK,EAAE,UAAU,EACjB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,YAAY,GACpB,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,GAAG,iBAAiB,CAAC,CAAC,CAe5D"}
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
import { SEARCH_ASSETS_LIMIT } from '../agent-tools/assets.js';
|
|
2
|
+
import { roleLessPaints } from './asset-views.js';
|
|
3
|
+
import { placedAssets } from './design-brief.js';
|
|
4
|
+
import { FURNISH_ROOM_ASSETS } from './furnish-room.js';
|
|
5
|
+
export const isAssetCatalogSource = (catalog) => !Array.isArray(catalog);
|
|
6
|
+
const wordsOf = (text) => text
|
|
7
|
+
.toLowerCase()
|
|
8
|
+
.split(/[^\p{L}\p{N}]+/u)
|
|
9
|
+
.filter(Boolean);
|
|
10
|
+
function matches(item, text, category) {
|
|
11
|
+
if (category && item.category !== category)
|
|
12
|
+
return false;
|
|
13
|
+
const haystack = [
|
|
14
|
+
item.id,
|
|
15
|
+
item.name,
|
|
16
|
+
item.category,
|
|
17
|
+
...(item.tags ?? []),
|
|
18
|
+
...(item.functionTags ?? []),
|
|
19
|
+
]
|
|
20
|
+
.join(' ')
|
|
21
|
+
.toLowerCase();
|
|
22
|
+
return text
|
|
23
|
+
.toLowerCase()
|
|
24
|
+
.split(/\s+/)
|
|
25
|
+
.filter(Boolean)
|
|
26
|
+
.every((term) => haystack.includes(term));
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* How well an item answers a query, lower first: 0 is its name or id exactly, else the weakest of
|
|
30
|
+
* the query's words, 1 a word of the name ("bed" in "Platform Bed"), 2 starting one ("Bedside
|
|
31
|
+
* Table"), 3 starting a word of the category, 4 of a tag, 5 inside the name, 6 anywhere else. The
|
|
32
|
+
* sum orders items whose weakest word ties.
|
|
33
|
+
*/
|
|
34
|
+
function rank(item, query) {
|
|
35
|
+
const whole = query.trim().toLowerCase().replace(/\s+/g, ' ');
|
|
36
|
+
if (whole === item.name.trim().toLowerCase().replace(/\s+/g, ' ') ||
|
|
37
|
+
whole === item.id.toLowerCase())
|
|
38
|
+
return [0, 0];
|
|
39
|
+
const name = item.name.toLowerCase();
|
|
40
|
+
const nameWords = wordsOf(item.name);
|
|
41
|
+
const categoryWords = wordsOf(item.category);
|
|
42
|
+
const tagWords = [...(item.tags ?? []), ...(item.functionTags ?? [])].flatMap(wordsOf);
|
|
43
|
+
const startsOne = (words, word) => words.some((w) => w.startsWith(word));
|
|
44
|
+
const ranks = wordsOf(query).map((word) => nameWords.includes(word)
|
|
45
|
+
? 1
|
|
46
|
+
: startsOne(nameWords, word)
|
|
47
|
+
? 2
|
|
48
|
+
: startsOne(categoryWords, word)
|
|
49
|
+
? 3
|
|
50
|
+
: startsOne(tagWords, word)
|
|
51
|
+
? 4
|
|
52
|
+
: name.includes(word)
|
|
53
|
+
? 5
|
|
54
|
+
: 6);
|
|
55
|
+
return [Math.max(0, ...ranks), ranks.reduce((sum, value) => sum + value, 0)];
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Items in the order search_assets lists them for `text` (`rank`); items that rank alike keep the
|
|
59
|
+
* order they came in. A host that finds hits its own way (a database's fusion) orders them so too.
|
|
60
|
+
*/
|
|
61
|
+
export function rankAssets(items, text) {
|
|
62
|
+
return items
|
|
63
|
+
.map((item) => ({ item, rank: rank(item, text) }))
|
|
64
|
+
.sort((a, b) => a.rank[0] - b.rank[0] || a.rank[1] - b.rank[1])
|
|
65
|
+
.map(({ item }) => item);
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* A search of a list held whole: the items whose name, id, category or tags hold every word of
|
|
69
|
+
* the query, best first (`rankAssets`, then by name), with the categories of all of them.
|
|
70
|
+
*/
|
|
71
|
+
export function searchAssetList(items, { text = '', category, limit }) {
|
|
72
|
+
const found = rankAssets(
|
|
73
|
+
// Stable: items of one name keep the list's order.
|
|
74
|
+
items
|
|
75
|
+
.filter((item) => matches(item, text, category))
|
|
76
|
+
.sort((a, b) => a.name.localeCompare(b.name, 'en')), text);
|
|
77
|
+
const counts = new Map();
|
|
78
|
+
for (const item of found)
|
|
79
|
+
counts.set(item.category, (counts.get(item.category) ?? 0) + 1);
|
|
80
|
+
return {
|
|
81
|
+
items: found.slice(0, limit),
|
|
82
|
+
total: found.length,
|
|
83
|
+
categories: [...counts]
|
|
84
|
+
.sort((a, b) => b[1] - a[1] || a[0].localeCompare(b[0], 'en'))
|
|
85
|
+
.map(([name, count]) => ({ name, count })),
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
/** A list served as a source: searched as `searchAssetList` does, items by id. */
|
|
89
|
+
export function assetCatalogSource(items) {
|
|
90
|
+
const byId = new Map(items.map((item) => [item.id, item]));
|
|
91
|
+
return {
|
|
92
|
+
search: async (query) => searchAssetList(items, query),
|
|
93
|
+
byId: async (ids) => ids.flatMap((id) => byId.get(id) ?? []),
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
/** The key of a search in `catalogSearches`: its words, category and limit. */
|
|
97
|
+
export const assetSearchKey = ({ text = '', category, limit }) => JSON.stringify([text, category ?? null, limit]);
|
|
98
|
+
const asRecord = (value) => typeof value === 'object' && value !== null ? value : {};
|
|
99
|
+
/** The searches a `search_assets` input runs, one per query, as its operation reads them. */
|
|
100
|
+
export function assetSearchesOf(input) {
|
|
101
|
+
const { queries, limit } = asRecord(input);
|
|
102
|
+
return (Array.isArray(queries) ? queries : []).flatMap((entry) => {
|
|
103
|
+
const { query, category } = asRecord(entry);
|
|
104
|
+
if (typeof query !== 'string')
|
|
105
|
+
return [];
|
|
106
|
+
return [
|
|
107
|
+
{
|
|
108
|
+
text: query,
|
|
109
|
+
...(typeof category === 'string' && { category }),
|
|
110
|
+
limit: typeof limit === 'number' ? limit : SEARCH_ASSETS_LIMIT,
|
|
111
|
+
},
|
|
112
|
+
];
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* What a call reads of the library, alone or in a batch: the searches of `search_assets`, and the
|
|
117
|
+
* ids the others look up — the items placed or viewed, furnish_room's set for its room type, the
|
|
118
|
+
* catalog items a paint with no role finishes (their models list the surfaces).
|
|
119
|
+
*/
|
|
120
|
+
export function catalogReads(nodes, tool, input) {
|
|
121
|
+
const ids = new Set();
|
|
122
|
+
const searches = [];
|
|
123
|
+
const visit = (name, args) => {
|
|
124
|
+
switch (name) {
|
|
125
|
+
case 'run_batch':
|
|
126
|
+
for (const call of Array.isArray(args.calls) ? args.calls : []) {
|
|
127
|
+
const batched = asRecord(call);
|
|
128
|
+
if (batched.tool !== 'run_batch')
|
|
129
|
+
visit(batched.tool, asRecord(batched.input));
|
|
130
|
+
}
|
|
131
|
+
return;
|
|
132
|
+
case 'search_assets':
|
|
133
|
+
searches.push(...assetSearchesOf(args));
|
|
134
|
+
return;
|
|
135
|
+
case 'view_assets':
|
|
136
|
+
for (const id of Array.isArray(args.ids) ? args.ids : [])
|
|
137
|
+
if (typeof id === 'string')
|
|
138
|
+
ids.add(id);
|
|
139
|
+
return;
|
|
140
|
+
case 'furnish_room': {
|
|
141
|
+
const roomType = String(args.roomType);
|
|
142
|
+
for (const id of Object.hasOwn(FURNISH_ROOM_ASSETS, roomType)
|
|
143
|
+
? FURNISH_ROOM_ASSETS[roomType]
|
|
144
|
+
: [])
|
|
145
|
+
ids.add(id);
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
if (typeof name !== 'string')
|
|
150
|
+
return;
|
|
151
|
+
for (const id of placedAssets(name, args))
|
|
152
|
+
ids.add(id);
|
|
153
|
+
for (const { targets } of roleLessPaints(name, args))
|
|
154
|
+
for (const target of targets) {
|
|
155
|
+
const node = typeof target === 'string' ? nodes[target] : undefined;
|
|
156
|
+
if (node?.type === 'item' && node.asset?.id)
|
|
157
|
+
ids.add(node.asset.id);
|
|
158
|
+
}
|
|
159
|
+
};
|
|
160
|
+
visit(tool, asRecord(input));
|
|
161
|
+
return { ids: [...ids], searches };
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* What a call reads of the host's library, read before it as the operations are sync. A list is
|
|
165
|
+
* handed over whole. A source answers the call's searches (`catalogSearches`) and gives the items
|
|
166
|
+
* the call names (`catalog`), so a call that names none reads nothing.
|
|
167
|
+
*/
|
|
168
|
+
export async function readCatalog(nodes, tool, input, catalog) {
|
|
169
|
+
if (!isAssetCatalogSource(catalog))
|
|
170
|
+
return { catalog };
|
|
171
|
+
const { ids, searches } = catalogReads(nodes, tool, input);
|
|
172
|
+
const [items, answers] = await Promise.all([
|
|
173
|
+
ids.length ? catalog.byId(ids) : [],
|
|
174
|
+
Promise.all(searches.map((query) => catalog.search(query))),
|
|
175
|
+
]);
|
|
176
|
+
return {
|
|
177
|
+
catalog: items,
|
|
178
|
+
...(searches.length && {
|
|
179
|
+
catalogSearches: Object.fromEntries(searches.map((query, index) => [assetSearchKey(query), answers[index]])),
|
|
180
|
+
}),
|
|
181
|
+
};
|
|
182
|
+
}
|