@pascal-app/core 1.0.3 → 1.0.4
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 +235 -0
- package/dist/agent-operations/__fixtures__/add-object-cases.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/add-object-cases.js +129 -0
- package/dist/agent-operations/__fixtures__/build-room-cases.d.ts +4 -0
- package/dist/agent-operations/__fixtures__/build-room-cases.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/build-room-cases.js +635 -0
- package/dist/agent-operations/__fixtures__/cases.d.ts +52 -0
- package/dist/agent-operations/__fixtures__/cases.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/cases.js +689 -0
- package/dist/agent-operations/__fixtures__/find-by-type-cases.d.ts +7 -0
- package/dist/agent-operations/__fixtures__/find-by-type-cases.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/find-by-type-cases.js +21 -0
- package/dist/agent-operations/__fixtures__/place-items-cases.d.ts +17 -0
- package/dist/agent-operations/__fixtures__/place-items-cases.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/place-items-cases.js +506 -0
- package/dist/agent-operations/__fixtures__/room-cases.d.ts +3 -0
- package/dist/agent-operations/__fixtures__/room-cases.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/room-cases.js +338 -0
- package/dist/agent-operations/__fixtures__/search-assets-cases.d.ts +5 -0
- package/dist/agent-operations/__fixtures__/search-assets-cases.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/search-assets-cases.js +137 -0
- package/dist/agent-operations/__fixtures__/structure-cases.d.ts +6 -0
- package/dist/agent-operations/__fixtures__/structure-cases.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/structure-cases.js +588 -0
- package/dist/agent-operations/__fixtures__/verify-scene-cases.d.ts +3 -0
- package/dist/agent-operations/__fixtures__/verify-scene-cases.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/verify-scene-cases.js +302 -0
- package/dist/agent-operations/achieved.d.ts +16 -0
- package/dist/agent-operations/achieved.d.ts.map +1 -0
- package/dist/agent-operations/achieved.js +28 -0
- package/dist/agent-operations/add-column.d.ts +23 -0
- package/dist/agent-operations/add-column.d.ts.map +1 -0
- package/dist/agent-operations/add-column.js +97 -0
- package/dist/agent-operations/add-level.d.ts +14 -0
- package/dist/agent-operations/add-level.d.ts.map +1 -0
- package/dist/agent-operations/add-level.js +94 -0
- package/dist/agent-operations/add-object.d.ts +114 -0
- package/dist/agent-operations/add-object.d.ts.map +1 -0
- package/dist/agent-operations/add-object.js +361 -0
- package/dist/agent-operations/add-wall.d.ts +15 -0
- package/dist/agent-operations/add-wall.d.ts.map +1 -0
- package/dist/agent-operations/add-wall.js +47 -0
- package/dist/agent-operations/apply-changes.d.ts +16 -0
- package/dist/agent-operations/apply-changes.d.ts.map +1 -0
- package/dist/agent-operations/apply-changes.js +93 -0
- package/dist/agent-operations/apply-outcome.d.ts +15 -0
- package/dist/agent-operations/apply-outcome.d.ts.map +1 -0
- package/dist/agent-operations/apply-outcome.js +18 -0
- package/dist/agent-operations/collections.d.ts +28 -0
- package/dist/agent-operations/collections.d.ts.map +1 -0
- package/dist/agent-operations/collections.js +130 -0
- package/dist/agent-operations/create-room.d.ts +36 -0
- package/dist/agent-operations/create-room.d.ts.map +1 -0
- package/dist/agent-operations/create-room.js +177 -0
- package/dist/agent-operations/create-stair.d.ts +33 -0
- package/dist/agent-operations/create-stair.d.ts.map +1 -0
- package/dist/agent-operations/create-stair.js +247 -0
- package/dist/agent-operations/delete-node.d.ts +6 -0
- package/dist/agent-operations/delete-node.d.ts.map +1 -0
- package/dist/agent-operations/delete-node.js +9 -0
- package/dist/agent-operations/door-clearance.d.ts +135 -0
- package/dist/agent-operations/door-clearance.d.ts.map +1 -0
- package/dist/agent-operations/door-clearance.js +334 -0
- package/dist/agent-operations/duplicate-level.d.ts +12 -0
- package/dist/agent-operations/duplicate-level.d.ts.map +1 -0
- package/dist/agent-operations/duplicate-level.js +54 -0
- package/dist/agent-operations/find-by-type.d.ts +11 -0
- package/dist/agent-operations/find-by-type.d.ts.map +1 -0
- package/dist/agent-operations/find-by-type.js +94 -0
- package/dist/agent-operations/furnish-room.d.ts +18 -0
- package/dist/agent-operations/furnish-room.d.ts.map +1 -0
- package/dist/agent-operations/furnish-room.js +259 -0
- package/dist/agent-operations/get-node.d.ts +9 -0
- package/dist/agent-operations/get-node.d.ts.map +1 -0
- package/dist/agent-operations/get-node.js +33 -0
- package/dist/agent-operations/hosted-services.d.ts +13 -0
- package/dist/agent-operations/hosted-services.d.ts.map +1 -0
- package/dist/agent-operations/hosted-services.js +22 -0
- package/dist/agent-operations/index.d.ts +277 -0
- package/dist/agent-operations/index.d.ts.map +1 -0
- package/dist/agent-operations/index.js +80 -0
- package/dist/agent-operations/layout-clearance.d.ts +108 -0
- package/dist/agent-operations/layout-clearance.d.ts.map +1 -0
- package/dist/agent-operations/layout-clearance.js +190 -0
- package/dist/agent-operations/level-reads.d.ts +33 -0
- package/dist/agent-operations/level-reads.d.ts.map +1 -0
- package/dist/agent-operations/level-reads.js +161 -0
- package/dist/agent-operations/level-target.d.ts +11 -0
- package/dist/agent-operations/level-target.d.ts.map +1 -0
- package/dist/agent-operations/level-target.js +29 -0
- package/dist/agent-operations/list-levels.d.ts +4 -0
- package/dist/agent-operations/list-levels.d.ts.map +1 -0
- package/dist/agent-operations/list-levels.js +31 -0
- package/dist/agent-operations/material-preset.d.ts +11 -0
- package/dist/agent-operations/material-preset.d.ts.map +1 -0
- package/dist/agent-operations/material-preset.js +74 -0
- package/dist/agent-operations/material-refs.d.ts +24 -0
- package/dist/agent-operations/material-refs.d.ts.map +1 -0
- package/dist/agent-operations/material-refs.js +100 -0
- package/dist/agent-operations/node-patch.d.ts +3 -0
- package/dist/agent-operations/node-patch.d.ts.map +1 -0
- package/dist/agent-operations/node-patch.js +114 -0
- package/dist/agent-operations/paint.d.ts +21 -0
- package/dist/agent-operations/paint.d.ts.map +1 -0
- package/dist/agent-operations/paint.js +219 -0
- package/dist/agent-operations/place-items.d.ts +20 -0
- package/dist/agent-operations/place-items.d.ts.map +1 -0
- package/dist/agent-operations/place-items.js +226 -0
- package/dist/agent-operations/plan-geometry.d.ts +24 -0
- package/dist/agent-operations/plan-geometry.d.ts.map +1 -0
- package/dist/agent-operations/plan-geometry.js +94 -0
- package/dist/agent-operations/room-structure.d.ts +87 -0
- package/dist/agent-operations/room-structure.d.ts.map +1 -0
- package/dist/agent-operations/room-structure.js +144 -0
- package/dist/agent-operations/scene-materials.d.ts +15 -0
- package/dist/agent-operations/scene-materials.d.ts.map +1 -0
- package/dist/agent-operations/scene-materials.js +62 -0
- package/dist/agent-operations/scene-measure.d.ts +73 -0
- package/dist/agent-operations/scene-measure.d.ts.map +1 -0
- package/dist/agent-operations/scene-measure.js +73 -0
- package/dist/agent-operations/scene-queries.d.ts +4510 -0
- package/dist/agent-operations/scene-queries.d.ts.map +1 -0
- package/dist/agent-operations/scene-queries.js +84 -0
- package/dist/agent-operations/scene-view.d.ts +98 -0
- package/dist/agent-operations/scene-view.d.ts.map +1 -0
- package/dist/agent-operations/scene-view.js +559 -0
- package/dist/agent-operations/search-assets.d.ts +14 -0
- package/dist/agent-operations/search-assets.d.ts.map +1 -0
- package/dist/agent-operations/search-assets.js +42 -0
- package/dist/agent-operations/search-materials.d.ts +12 -0
- package/dist/agent-operations/search-materials.d.ts.map +1 -0
- package/dist/agent-operations/search-materials.js +111 -0
- package/dist/agent-operations/stairs.d.ts +5 -0
- package/dist/agent-operations/stairs.d.ts.map +1 -0
- package/dist/agent-operations/stairs.js +70 -0
- package/dist/agent-operations/types.d.ts +59 -0
- package/dist/agent-operations/types.d.ts.map +1 -0
- package/dist/agent-operations/types.js +1 -0
- package/dist/agent-operations/verify-scene.d.ts +50 -0
- package/dist/agent-operations/verify-scene.d.ts.map +1 -0
- package/dist/agent-operations/verify-scene.js +369 -0
- package/dist/agent-operations/wall-opening.d.ts +65 -0
- package/dist/agent-operations/wall-opening.d.ts.map +1 -0
- package/dist/agent-operations/wall-opening.js +55 -0
- package/dist/agent-tools/achieved.d.ts +9 -0
- package/dist/agent-tools/achieved.d.ts.map +1 -0
- package/dist/agent-tools/achieved.js +8 -0
- package/dist/agent-tools/add-object.d.ts +43 -0
- package/dist/agent-tools/add-object.d.ts.map +1 -0
- package/dist/agent-tools/add-object.js +86 -0
- package/dist/agent-tools/assets.d.ts +13 -0
- package/dist/agent-tools/assets.d.ts.map +1 -0
- package/dist/agent-tools/assets.js +18 -0
- package/dist/agent-tools/clear-scene.d.ts +10 -0
- package/dist/agent-tools/clear-scene.d.ts.map +1 -0
- package/dist/agent-tools/clear-scene.js +9 -0
- package/dist/agent-tools/collections.d.ts +35 -0
- package/dist/agent-tools/collections.d.ts.map +1 -0
- package/dist/agent-tools/collections.js +31 -0
- package/dist/agent-tools/columns.d.ts +44 -0
- package/dist/agent-tools/columns.d.ts.map +1 -0
- package/dist/agent-tools/columns.js +59 -0
- package/dist/agent-tools/contract.d.ts +68 -0
- package/dist/agent-tools/contract.d.ts.map +1 -0
- package/dist/agent-tools/contract.js +1 -0
- package/dist/agent-tools/create-room.d.ts +63 -0
- package/dist/agent-tools/create-room.d.ts.map +1 -0
- package/dist/agent-tools/create-room.js +90 -0
- package/dist/agent-tools/find-by-type.d.ts +11 -0
- package/dist/agent-tools/find-by-type.d.ts.map +1 -0
- package/dist/agent-tools/find-by-type.js +14 -0
- package/dist/agent-tools/furnish-room.d.ts +26 -0
- package/dist/agent-tools/furnish-room.d.ts.map +1 -0
- package/dist/agent-tools/furnish-room.js +35 -0
- package/dist/agent-tools/hosted-services.d.ts +402 -0
- package/dist/agent-tools/hosted-services.d.ts.map +1 -0
- package/dist/agent-tools/hosted-services.js +148 -0
- package/dist/agent-tools/index.d.ts +864 -0
- package/dist/agent-tools/index.d.ts.map +1 -0
- package/dist/agent-tools/index.js +82 -0
- package/dist/agent-tools/levels.d.ts +72 -0
- package/dist/agent-tools/levels.d.ts.map +1 -0
- package/dist/agent-tools/levels.js +76 -0
- package/dist/agent-tools/measurement.d.ts +37 -0
- package/dist/agent-tools/measurement.d.ts.map +1 -0
- package/dist/agent-tools/measurement.js +94 -0
- package/dist/agent-tools/node-id.d.ts +3 -0
- package/dist/agent-tools/node-id.d.ts.map +1 -0
- package/dist/agent-tools/node-id.js +2 -0
- package/dist/agent-tools/nodes.d.ts +17 -0
- package/dist/agent-tools/nodes.d.ts.map +1 -0
- package/dist/agent-tools/nodes.js +13 -0
- package/dist/agent-tools/paint.d.ts +46 -0
- package/dist/agent-tools/paint.d.ts.map +1 -0
- package/dist/agent-tools/paint.js +29 -0
- package/dist/agent-tools/place-items.d.ts +19 -0
- package/dist/agent-tools/place-items.d.ts.map +1 -0
- package/dist/agent-tools/place-items.js +29 -0
- package/dist/agent-tools/refusal.d.ts +20 -0
- package/dist/agent-tools/refusal.d.ts.map +1 -0
- package/dist/agent-tools/refusal.js +29 -0
- package/dist/agent-tools/room-structure.d.ts +438 -0
- package/dist/agent-tools/room-structure.d.ts.map +1 -0
- package/dist/agent-tools/room-structure.js +207 -0
- package/dist/agent-tools/search-materials.d.ts +20 -0
- package/dist/agent-tools/search-materials.d.ts.map +1 -0
- package/dist/agent-tools/search-materials.js +32 -0
- package/dist/agent-tools/stairs.d.ts +86 -0
- package/dist/agent-tools/stairs.d.ts.map +1 -0
- package/dist/agent-tools/stairs.js +103 -0
- package/dist/agent-tools/verify-scene.d.ts +13 -0
- package/dist/agent-tools/verify-scene.d.ts.map +1 -0
- package/dist/agent-tools/verify-scene.js +21 -0
- package/dist/agent-tools/view-scene.d.ts +43 -0
- package/dist/agent-tools/view-scene.d.ts.map +1 -0
- package/dist/agent-tools/view-scene.js +80 -0
- package/dist/agent-tools/wall-openings.d.ts +163 -0
- package/dist/agent-tools/wall-openings.d.ts.map +1 -0
- package/dist/agent-tools/wall-openings.js +144 -0
- package/dist/agent-tools/walls.d.ts +21 -0
- package/dist/agent-tools/walls.d.ts.map +1 -0
- package/dist/agent-tools/walls.js +30 -0
- package/dist/agent-tools/write-target.d.ts +12 -0
- package/dist/agent-tools/write-target.d.ts.map +1 -0
- package/dist/agent-tools/write-target.js +10 -0
- package/dist/building/__fixtures__/wall-opening-cases.d.ts +736 -0
- package/dist/building/__fixtures__/wall-opening-cases.d.ts.map +1 -0
- package/dist/building/__fixtures__/wall-opening-cases.js +307 -0
- package/dist/building/door-types.d.ts +22 -0
- package/dist/building/door-types.d.ts.map +1 -0
- package/dist/building/door-types.js +167 -0
- package/dist/building/floor-item-fit.d.ts +38 -0
- package/dist/building/floor-item-fit.d.ts.map +1 -0
- package/dist/building/floor-item-fit.js +47 -0
- package/dist/building/index.d.ts +7 -0
- package/dist/building/index.d.ts.map +1 -0
- package/dist/building/index.js +6 -0
- package/dist/building/level-duplication.d.ts +8983 -0
- package/dist/building/level-duplication.d.ts.map +1 -0
- package/dist/building/level-duplication.js +314 -0
- package/dist/building/opening-style-presets.d.ts +46 -0
- package/dist/building/opening-style-presets.d.ts.map +1 -0
- package/dist/building/opening-style-presets.js +195 -0
- package/dist/building/wall-openings.d.ts +445 -0
- package/dist/building/wall-openings.d.ts.map +1 -0
- package/dist/building/wall-openings.js +231 -0
- package/dist/building/window-types.d.ts +17 -0
- package/dist/building/window-types.d.ts.map +1 -0
- package/dist/building/window-types.js +31 -0
- package/dist/commands/structure/apply-zone-transform.d.ts +23 -0
- package/dist/commands/structure/apply-zone-transform.d.ts.map +1 -0
- package/dist/commands/structure/apply-zone-transform.js +55 -0
- package/dist/commands/structure/create-mezzanine.d.ts +12 -0
- package/dist/commands/structure/create-mezzanine.d.ts.map +1 -0
- package/dist/commands/structure/create-mezzanine.js +46 -0
- package/dist/commands/structure/create-zone.d.ts +32 -0
- package/dist/commands/structure/create-zone.d.ts.map +1 -0
- package/dist/commands/structure/create-zone.js +126 -0
- package/dist/commands/structure/delete-zone.d.ts +51 -0
- package/dist/commands/structure/delete-zone.d.ts.map +1 -0
- package/dist/commands/structure/delete-zone.js +354 -0
- package/dist/commands/structure/divide-zone.d.ts +38 -0
- package/dist/commands/structure/divide-zone.d.ts.map +1 -0
- package/dist/commands/structure/divide-zone.js +186 -0
- package/dist/commands/structure/duplicate-zone.d.ts +7 -0
- package/dist/commands/structure/duplicate-zone.d.ts.map +1 -0
- package/dist/commands/structure/duplicate-zone.js +21 -0
- package/dist/commands/structure/floor-opening.d.ts +36 -0
- package/dist/commands/structure/floor-opening.d.ts.map +1 -0
- package/dist/commands/structure/floor-opening.js +124 -0
- package/dist/commands/structure/index.d.ts +22 -0
- package/dist/commands/structure/index.d.ts.map +1 -0
- package/dist/commands/structure/index.js +20 -0
- package/dist/commands/structure/lock-outside-faces.d.ts +12 -0
- package/dist/commands/structure/lock-outside-faces.d.ts.map +1 -0
- package/dist/commands/structure/lock-outside-faces.js +32 -0
- package/dist/commands/structure/merge-zones.d.ts +5 -0
- package/dist/commands/structure/merge-zones.d.ts.map +1 -0
- package/dist/commands/structure/merge-zones.js +22 -0
- package/dist/commands/structure/mezzanine-content.d.ts +16 -0
- package/dist/commands/structure/mezzanine-content.d.ts.map +1 -0
- package/dist/commands/structure/mezzanine-content.js +109 -0
- package/dist/commands/structure/plan-mezzanine-stair.d.ts +7 -0
- package/dist/commands/structure/plan-mezzanine-stair.d.ts.map +1 -0
- package/dist/commands/structure/plan-mezzanine-stair.js +127 -0
- package/dist/commands/structure/plan-wall-deletion.d.ts +9 -0
- package/dist/commands/structure/plan-wall-deletion.d.ts.map +1 -0
- package/dist/commands/structure/plan-wall-deletion.js +151 -0
- package/dist/commands/structure/rebase-floor-reference.d.ts +7 -0
- package/dist/commands/structure/rebase-floor-reference.d.ts.map +1 -0
- package/dist/commands/structure/rebase-floor-reference.js +90 -0
- package/dist/commands/structure/resize-mezzanine.d.ts +8 -0
- package/dist/commands/structure/resize-mezzanine.d.ts.map +1 -0
- package/dist/commands/structure/resize-mezzanine.js +43 -0
- package/dist/commands/structure/rotate-zone.d.ts +8 -0
- package/dist/commands/structure/rotate-zone.d.ts.map +1 -0
- package/dist/commands/structure/rotate-zone.js +28 -0
- package/dist/commands/structure/set-floor-foundation.d.ts +62 -0
- package/dist/commands/structure/set-floor-foundation.d.ts.map +1 -0
- package/dist/commands/structure/set-floor-foundation.js +162 -0
- package/dist/commands/structure/set-room-floor-construction.d.ts +8 -0
- package/dist/commands/structure/set-room-floor-construction.d.ts.map +1 -0
- package/dist/commands/structure/set-room-floor-construction.js +72 -0
- package/dist/commands/structure/set-wall-geometry.d.ts +10 -0
- package/dist/commands/structure/set-wall-geometry.d.ts.map +1 -0
- package/dist/commands/structure/set-wall-geometry.js +52 -0
- package/dist/commands/structure/set-zone-edges.d.ts +14 -0
- package/dist/commands/structure/set-zone-edges.d.ts.map +1 -0
- package/dist/commands/structure/set-zone-edges.js +143 -0
- package/dist/commands/structure/set-zone-intent.d.ts +39 -0
- package/dist/commands/structure/set-zone-intent.d.ts.map +1 -0
- package/dist/commands/structure/set-zone-intent.js +125 -0
- package/dist/commands/structure/shared.d.ts +4512 -0
- package/dist/commands/structure/shared.d.ts.map +1 -0
- package/dist/commands/structure/shared.js +102 -0
- package/dist/commands/structure/transform-zone.d.ts +23 -0
- package/dist/commands/structure/transform-zone.d.ts.map +1 -0
- package/dist/commands/structure/transform-zone.js +472 -0
- package/dist/commands/structure/validate-mezzanine.d.ts +5 -0
- package/dist/commands/structure/validate-mezzanine.d.ts.map +1 -0
- package/dist/commands/structure/validate-mezzanine.js +46 -0
- package/dist/commands/structure/zone-crossings.d.ts +8 -0
- package/dist/commands/structure/zone-crossings.d.ts.map +1 -0
- package/dist/commands/structure/zone-crossings.js +162 -0
- package/dist/commands/structure/zone-drop.d.ts +4 -0
- package/dist/commands/structure/zone-drop.d.ts.map +1 -0
- package/dist/commands/structure/zone-drop.js +68 -0
- package/dist/commands/structure/zone-insertion.d.ts +4 -0
- package/dist/commands/structure/zone-insertion.d.ts.map +1 -0
- package/dist/commands/structure/zone-insertion.js +200 -0
- package/dist/commands/structure/zone-transform-content.d.ts +6 -0
- package/dist/commands/structure/zone-transform-content.d.ts.map +1 -0
- package/dist/commands/structure/zone-transform-content.js +117 -0
- package/dist/commands/structure/zone-wall-merge.d.ts +4977 -0
- package/dist/commands/structure/zone-wall-merge.d.ts.map +1 -0
- package/dist/commands/structure/zone-wall-merge.js +135 -0
- package/dist/contracts/reference-discovery.d.ts +18 -0
- package/dist/contracts/reference-discovery.d.ts.map +1 -0
- package/dist/contracts/reference-discovery.js +100 -0
- package/dist/contracts/reference-inventory.d.ts +44 -0
- package/dist/contracts/reference-inventory.d.ts.map +1 -0
- package/dist/contracts/reference-inventory.js +872 -0
- package/dist/events/bus.d.ts +70 -9
- package/dist/events/bus.d.ts.map +1 -1
- package/dist/hooks/scene-registry/item-clip-registry.d.ts +6 -3
- package/dist/hooks/scene-registry/item-clip-registry.d.ts.map +1 -1
- package/dist/hooks/scene-registry/item-clip-registry.js +2 -1
- package/dist/hooks/spatial-grid/floor-placed-elevation.d.ts.map +1 -1
- package/dist/hooks/spatial-grid/floor-placed-elevation.js +15 -1
- package/dist/hooks/spatial-grid/spatial-grid-manager.d.ts +3 -2
- package/dist/hooks/spatial-grid/spatial-grid-manager.d.ts.map +1 -1
- package/dist/hooks/spatial-grid/spatial-grid-manager.js +53 -66
- package/dist/hooks/spatial-grid/spatial-grid-sync.d.ts +1612 -127
- package/dist/hooks/spatial-grid/spatial-grid-sync.d.ts.map +1 -1
- package/dist/hooks/spatial-grid/spatial-grid-sync.js +86 -83
- package/dist/hooks/spatial-grid/support-host-patch.d.ts +1 -0
- package/dist/hooks/spatial-grid/support-host-patch.d.ts.map +1 -1
- package/dist/hooks/spatial-grid/support-host-patch.js +12 -5
- package/dist/index.d.ts +80 -13
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +75 -11
- package/dist/lib/__bench__/near-linear-walls.d.ts +2 -0
- package/dist/lib/__bench__/near-linear-walls.d.ts.map +1 -0
- package/dist/lib/__bench__/near-linear-walls.js +24 -0
- package/dist/lib/__bench__/structure-preview.bench.d.ts +2 -0
- package/dist/lib/__bench__/structure-preview.bench.d.ts.map +1 -0
- package/dist/lib/__bench__/structure-preview.bench.js +72 -0
- package/dist/lib/__fixtures__/mezzanine.d.ts +13968 -0
- package/dist/lib/__fixtures__/mezzanine.d.ts.map +1 -0
- package/dist/lib/__fixtures__/mezzanine.js +43 -0
- package/dist/lib/absorb-wall-separators.d.ts +4483 -0
- package/dist/lib/absorb-wall-separators.d.ts.map +1 -0
- package/dist/lib/absorb-wall-separators.js +65 -0
- package/dist/lib/angle-accumulator.d.ts +3 -0
- package/dist/lib/angle-accumulator.d.ts.map +1 -0
- package/dist/lib/angle-accumulator.js +13 -0
- package/dist/lib/artifact-store.d.ts +31 -0
- package/dist/lib/artifact-store.d.ts.map +1 -0
- package/dist/lib/artifact-store.js +42 -0
- package/dist/lib/assembly-stack.d.ts +54 -0
- package/dist/lib/assembly-stack.d.ts.map +1 -0
- package/dist/lib/assembly-stack.js +52 -0
- package/dist/lib/asset-storage.d.ts.map +1 -1
- package/dist/lib/asset-storage.js +3 -0
- package/dist/lib/canonical-opening-ring.d.ts +3 -0
- package/dist/lib/canonical-opening-ring.d.ts.map +1 -0
- package/dist/lib/canonical-opening-ring.js +14 -0
- package/dist/lib/ceiling-children.d.ts +8 -0
- package/dist/lib/ceiling-children.d.ts.map +1 -0
- package/dist/lib/ceiling-children.js +36 -0
- package/dist/lib/ceiling-surface.d.ts +40 -0
- package/dist/lib/ceiling-surface.d.ts.map +1 -0
- package/dist/lib/ceiling-surface.js +65 -0
- package/dist/lib/cutter-host.d.ts +5 -0
- package/dist/lib/cutter-host.d.ts.map +1 -0
- package/dist/lib/cutter-host.js +30 -0
- package/dist/lib/floor-construction-lift.d.ts +4 -0
- package/dist/lib/floor-construction-lift.d.ts.map +1 -0
- package/dist/lib/floor-construction-lift.js +54 -0
- package/dist/lib/floor-footprint-key.d.ts +3 -0
- package/dist/lib/floor-footprint-key.d.ts.map +1 -0
- package/dist/lib/floor-footprint-key.js +9 -0
- package/dist/lib/floor-footprint-name.d.ts +11 -0
- package/dist/lib/floor-footprint-name.d.ts.map +1 -0
- package/dist/lib/floor-footprint-name.js +52 -0
- package/dist/lib/floor-foundation-datum.d.ts +31 -0
- package/dist/lib/floor-foundation-datum.d.ts.map +1 -0
- package/dist/lib/floor-foundation-datum.js +226 -0
- package/dist/lib/floor-foundation-stack.d.ts +16 -0
- package/dist/lib/floor-foundation-stack.d.ts.map +1 -0
- package/dist/lib/floor-foundation-stack.js +214 -0
- package/dist/lib/floor-intent-changes.d.ts +10 -0
- package/dist/lib/floor-intent-changes.d.ts.map +1 -0
- package/dist/lib/floor-intent-changes.js +461 -0
- package/dist/lib/floor-opening-footprints.d.ts +24 -0
- package/dist/lib/floor-opening-footprints.d.ts.map +1 -0
- package/dist/lib/floor-opening-footprints.js +127 -0
- package/dist/lib/floor-opening-intent.d.ts +16 -0
- package/dist/lib/floor-opening-intent.d.ts.map +1 -0
- package/dist/lib/floor-opening-intent.js +82 -0
- package/dist/lib/floor-plate-id.d.ts +5 -0
- package/dist/lib/floor-plate-id.d.ts.map +1 -0
- package/dist/lib/floor-plate-id.js +20 -0
- package/dist/lib/floor-plate-paint.d.ts +8 -0
- package/dist/lib/floor-plate-paint.d.ts.map +1 -0
- package/dist/lib/floor-plate-paint.js +11 -0
- package/dist/lib/floor-plates.d.ts +211 -0
- package/dist/lib/floor-plates.d.ts.map +1 -0
- package/dist/lib/floor-plates.js +729 -0
- package/dist/lib/floor-room-faces.d.ts +5 -0
- package/dist/lib/floor-room-faces.d.ts.map +1 -0
- package/dist/lib/floor-room-faces.js +29 -0
- package/dist/lib/floor-step-finish.d.ts +49 -0
- package/dist/lib/floor-step-finish.d.ts.map +1 -0
- package/dist/lib/floor-step-finish.js +128 -0
- package/dist/lib/geometry-script-node.d.ts +82 -0
- package/dist/lib/geometry-script-node.d.ts.map +1 -0
- package/dist/lib/geometry-script-node.js +147 -0
- package/dist/lib/geometry-surfaces.d.ts +61 -0
- package/dist/lib/geometry-surfaces.d.ts.map +1 -0
- package/dist/lib/geometry-surfaces.js +156 -0
- package/dist/lib/item-slab-support.d.ts +14 -0
- package/dist/lib/item-slab-support.d.ts.map +1 -0
- package/dist/lib/item-slab-support.js +40 -0
- package/dist/lib/level-footprints.d.ts +23 -0
- package/dist/lib/level-footprints.d.ts.map +1 -0
- package/dist/lib/level-footprints.js +398 -0
- package/dist/lib/level-name.d.ts +7 -0
- package/dist/lib/level-name.d.ts.map +1 -1
- package/dist/lib/level-name.js +11 -3
- package/dist/lib/new-zone.d.ts +10 -0
- package/dist/lib/new-zone.d.ts.map +1 -0
- package/dist/lib/new-zone.js +10 -0
- package/dist/lib/node-ancestry.d.ts +30 -0
- package/dist/lib/node-ancestry.d.ts.map +1 -0
- package/dist/lib/node-ancestry.js +76 -0
- package/dist/lib/object-cuts.d.ts +11 -0
- package/dist/lib/object-cuts.d.ts.map +1 -0
- package/dist/lib/object-cuts.js +63 -0
- package/dist/lib/opening-floor-datum.d.ts +24 -0
- package/dist/lib/opening-floor-datum.d.ts.map +1 -0
- package/dist/lib/opening-floor-datum.js +145 -0
- package/dist/lib/own-floor-intent.d.ts +15 -0
- package/dist/lib/own-floor-intent.d.ts.map +1 -0
- package/dist/lib/own-floor-intent.js +201 -0
- package/dist/lib/plate-reference.d.ts +3 -0
- package/dist/lib/plate-reference.d.ts.map +1 -0
- package/dist/lib/plate-reference.js +91 -0
- package/dist/lib/plate-surface.d.ts +120 -0
- package/dist/lib/plate-surface.d.ts.map +1 -0
- package/dist/lib/plate-surface.js +725 -0
- package/dist/lib/polygon-boolean.d.ts +17 -0
- package/dist/lib/polygon-boolean.d.ts.map +1 -0
- package/dist/lib/polygon-boolean.js +195 -0
- package/dist/lib/polygon-label.d.ts +7 -0
- package/dist/lib/polygon-label.d.ts.map +1 -0
- package/dist/lib/polygon-label.js +94 -0
- package/dist/lib/room-drawn-floor.d.ts +29 -0
- package/dist/lib/room-drawn-floor.d.ts.map +1 -0
- package/dist/lib/room-drawn-floor.js +88 -0
- package/dist/lib/room-floor-choices.d.ts +11 -0
- package/dist/lib/room-floor-choices.d.ts.map +1 -0
- package/dist/lib/room-floor-choices.js +60 -0
- package/dist/lib/room-floor-feasibility.d.ts +25 -0
- package/dist/lib/room-floor-feasibility.d.ts.map +1 -0
- package/dist/lib/room-floor-feasibility.js +293 -0
- package/dist/lib/room-floor-plate.d.ts +3 -0
- package/dist/lib/room-floor-plate.d.ts.map +1 -0
- package/dist/lib/room-floor-plate.js +4 -0
- package/dist/lib/room-graph.d.ts +79 -0
- package/dist/lib/room-graph.d.ts.map +1 -0
- package/dist/lib/room-graph.js +1265 -0
- package/dist/lib/room-name.d.ts +10 -0
- package/dist/lib/room-name.d.ts.map +1 -0
- package/dist/lib/room-name.js +22 -0
- package/dist/lib/room-topology-index.d.ts +53 -5
- package/dist/lib/room-topology-index.d.ts.map +1 -1
- package/dist/lib/room-topology-index.js +176 -30
- package/dist/lib/room-vertical-placement.d.ts +12 -0
- package/dist/lib/room-vertical-placement.d.ts.map +1 -0
- package/dist/lib/room-vertical-placement.js +28 -0
- package/dist/lib/room-zone-adoption.d.ts +74 -0
- package/dist/lib/room-zone-adoption.d.ts.map +1 -0
- package/dist/lib/room-zone-adoption.js +150 -0
- package/dist/lib/setback-envelope.d.ts +73 -0
- package/dist/lib/setback-envelope.d.ts.map +1 -0
- package/dist/lib/setback-envelope.js +506 -0
- package/dist/lib/slab-polygon.d.ts.map +1 -1
- package/dist/lib/slab-polygon.js +33 -12
- package/dist/lib/slots.d.ts +20 -0
- package/dist/lib/slots.d.ts.map +1 -1
- package/dist/lib/slots.js +44 -0
- package/dist/lib/space-detection.d.ts +14 -94
- package/dist/lib/space-detection.d.ts.map +1 -1
- package/dist/lib/space-detection.js +244 -1616
- package/dist/lib/structure-commit.d.ts +38 -0
- package/dist/lib/structure-commit.d.ts.map +1 -0
- package/dist/lib/structure-commit.js +52 -0
- package/dist/lib/structure-kernel.d.ts +66 -0
- package/dist/lib/structure-kernel.d.ts.map +1 -0
- package/dist/lib/structure-kernel.js +735 -0
- package/dist/lib/structure-reconcile.d.ts +15 -0
- package/dist/lib/structure-reconcile.d.ts.map +1 -0
- package/dist/lib/structure-reconcile.js +218 -0
- package/dist/lib/terrain-contours.d.ts +29 -0
- package/dist/lib/terrain-contours.d.ts.map +1 -0
- package/dist/lib/terrain-contours.js +199 -0
- package/dist/lib/terrain-source-persisted.d.ts +42 -0
- package/dist/lib/terrain-source-persisted.d.ts.map +1 -0
- package/dist/lib/terrain-source-persisted.js +68 -0
- package/dist/lib/terrain-source.d.ts +2 -40
- package/dist/lib/terrain-source.d.ts.map +1 -1
- package/dist/lib/terrain-source.js +2 -68
- package/dist/lib/terrain-support-query.d.ts +83 -0
- package/dist/lib/terrain-support-query.d.ts.map +1 -0
- package/dist/lib/terrain-support-query.js +187 -0
- package/dist/lib/terrain-support.d.ts +1 -77
- package/dist/lib/terrain-support.d.ts.map +1 -1
- package/dist/lib/terrain-support.js +3 -181
- package/dist/lib/unit-containment.js +2 -2
- package/dist/lib/unit-report.d.ts.map +1 -1
- package/dist/lib/unit-report.js +5 -4
- package/dist/lib/zone-colors.d.ts +11 -0
- package/dist/lib/zone-colors.d.ts.map +1 -0
- package/dist/lib/zone-colors.js +32 -0
- package/dist/lib/zone-quantities.d.ts.map +1 -1
- package/dist/lib/zone-quantities.js +113 -223
- package/dist/material-library.d.ts +9 -1
- package/dist/material-library.d.ts.map +1 -1
- package/dist/material-library.js +550 -1
- package/dist/node-slots/block.d.ts +7 -0
- package/dist/node-slots/block.d.ts.map +1 -0
- package/dist/node-slots/block.js +27 -0
- package/dist/node-slots/cabinet.d.ts +4 -0
- package/dist/node-slots/cabinet.d.ts.map +1 -0
- package/dist/node-slots/cabinet.js +24 -0
- package/dist/node-slots/ceiling.d.ts +6 -0
- package/dist/node-slots/ceiling.d.ts.map +1 -0
- package/dist/node-slots/ceiling.js +7 -0
- package/dist/node-slots/column.d.ts +9 -0
- package/dist/node-slots/column.d.ts.map +1 -0
- package/dist/node-slots/column.js +24 -0
- package/dist/node-slots/door.d.ts +9 -0
- package/dist/node-slots/door.d.ts.map +1 -0
- package/dist/node-slots/door.js +20 -0
- package/dist/node-slots/duct.d.ts +5 -0
- package/dist/node-slots/duct.d.ts.map +1 -0
- package/dist/node-slots/duct.js +5 -0
- package/dist/node-slots/elevator.d.ts +9 -0
- package/dist/node-slots/elevator.d.ts.map +1 -0
- package/dist/node-slots/elevator.js +17 -0
- package/dist/node-slots/fence.d.ts +10 -0
- package/dist/node-slots/fence.d.ts.map +1 -0
- package/dist/node-slots/fence.js +23 -0
- package/dist/node-slots/index.d.ts +25 -0
- package/dist/node-slots/index.d.ts.map +1 -0
- package/dist/node-slots/index.js +92 -0
- package/dist/node-slots/lean-to-extension.d.ts +5 -0
- package/dist/node-slots/lean-to-extension.d.ts.map +1 -0
- package/dist/node-slots/lean-to-extension.js +15 -0
- package/dist/node-slots/procedural-item.d.ts +4 -0
- package/dist/node-slots/procedural-item.d.ts.map +1 -0
- package/dist/node-slots/procedural-item.js +3 -0
- package/dist/node-slots/roof-accessories.d.ts +9 -0
- package/dist/node-slots/roof-accessories.d.ts.map +1 -0
- package/dist/node-slots/roof-accessories.js +34 -0
- package/dist/node-slots/shelf.d.ts +9 -0
- package/dist/node-slots/shelf.d.ts.map +1 -0
- package/dist/node-slots/shelf.js +30 -0
- package/dist/node-slots/slab.d.ts +7 -0
- package/dist/node-slots/slab.d.ts.map +1 -0
- package/dist/node-slots/slab.js +21 -0
- package/dist/node-slots/stair.d.ts +8 -0
- package/dist/node-slots/stair.d.ts.map +1 -0
- package/dist/node-slots/stair.js +17 -0
- package/dist/node-slots/wall.d.ts +12 -0
- package/dist/node-slots/wall.d.ts.map +1 -0
- package/dist/node-slots/wall.js +55 -0
- package/dist/node-slots/window.d.ts +5 -0
- package/dist/node-slots/window.d.ts.map +1 -0
- package/dist/node-slots/window.js +11 -0
- package/dist/procedural-items/design-placement.d.ts +49 -0
- package/dist/procedural-items/design-placement.d.ts.map +1 -0
- package/dist/procedural-items/design-placement.js +129 -0
- package/dist/procedural-items/design.d.ts +261 -0
- package/dist/procedural-items/design.d.ts.map +1 -0
- package/dist/procedural-items/design.js +707 -0
- package/dist/procedural-items/fixtures.d.ts +464 -24
- package/dist/procedural-items/fixtures.d.ts.map +1 -1
- package/dist/procedural-items/index.d.ts +5 -0
- package/dist/procedural-items/index.d.ts.map +1 -1
- package/dist/procedural-items/index.js +5 -0
- package/dist/procedural-items/integration.d.ts +127 -6
- package/dist/procedural-items/integration.d.ts.map +1 -1
- package/dist/procedural-items/joints.d.ts +56 -0
- package/dist/procedural-items/joints.d.ts.map +1 -0
- package/dist/procedural-items/joints.js +251 -0
- package/dist/procedural-items/library-colors.d.ts +12 -0
- package/dist/procedural-items/library-colors.d.ts.map +1 -1
- package/dist/procedural-items/library-colors.js +37 -3
- package/dist/procedural-items/motion-controller.d.ts +29 -0
- package/dist/procedural-items/motion-controller.d.ts.map +1 -0
- package/dist/procedural-items/motion-controller.js +130 -0
- package/dist/procedural-items/node.d.ts +490 -24
- package/dist/procedural-items/node.d.ts.map +1 -1
- package/dist/procedural-items/query.d.ts +18 -1
- package/dist/procedural-items/query.d.ts.map +1 -1
- package/dist/procedural-items/query.js +78 -39
- package/dist/procedural-items/recipe.d.ts +258 -14
- package/dist/procedural-items/recipe.d.ts.map +1 -1
- package/dist/procedural-items/recipe.js +933 -61
- package/dist/procedural-items/section.d.ts +27 -0
- package/dist/procedural-items/section.d.ts.map +1 -0
- package/dist/procedural-items/section.js +237 -0
- package/dist/procedural-items/spatial.d.ts +21 -0
- package/dist/procedural-items/spatial.d.ts.map +1 -1
- package/dist/procedural-items/spatial.js +90 -0
- package/dist/registry/handles.d.ts +2 -0
- package/dist/registry/handles.d.ts.map +1 -1
- package/dist/registry/index.d.ts +6 -4
- package/dist/registry/index.d.ts.map +1 -1
- package/dist/registry/index.js +4 -2
- package/dist/registry/mechanism.d.ts +9 -0
- package/dist/registry/mechanism.d.ts.map +1 -0
- package/dist/registry/mechanism.js +21 -0
- package/dist/registry/registry.d.ts +6 -3
- package/dist/registry/registry.d.ts.map +1 -1
- package/dist/registry/registry.js +59 -22
- package/dist/registry/scene-api.d.ts +20 -0
- package/dist/registry/scene-api.d.ts.map +1 -1
- package/dist/registry/scene-api.js +26 -13
- package/dist/registry/subtree.d.ts +8 -0
- package/dist/registry/subtree.d.ts.map +1 -1
- package/dist/registry/subtree.js +53 -0
- package/dist/registry/types.d.ts +340 -11
- package/dist/registry/types.d.ts.map +1 -1
- package/dist/schema/__fixtures__/node-fixtures.d.ts.map +1 -1
- package/dist/schema/__fixtures__/node-fixtures.js +2 -0
- package/dist/schema/assembly.d.ts +153 -0
- package/dist/schema/assembly.d.ts.map +1 -0
- package/dist/schema/assembly.js +155 -0
- package/dist/schema/asset-url.d.ts +2 -1
- package/dist/schema/asset-url.d.ts.map +1 -1
- package/dist/schema/asset-url.js +5 -2
- package/dist/schema/base.d.ts +26 -0
- package/dist/schema/base.d.ts.map +1 -1
- package/dist/schema/base.js +2 -0
- package/dist/schema/collection-templates.d.ts +46 -0
- package/dist/schema/collection-templates.d.ts.map +1 -0
- package/dist/schema/collection-templates.js +14 -0
- package/dist/schema/collections.d.ts +7 -0
- package/dist/schema/collections.d.ts.map +1 -1
- package/dist/schema/cut.d.ts +29 -0
- package/dist/schema/cut.d.ts.map +1 -0
- package/dist/schema/cut.js +50 -0
- package/dist/schema/geometry-metadata.d.ts +51 -0
- package/dist/schema/geometry-metadata.d.ts.map +1 -0
- package/dist/schema/geometry-metadata.js +57 -0
- package/dist/schema/geometry-source.d.ts +250 -0
- package/dist/schema/geometry-source.d.ts.map +1 -0
- package/dist/schema/geometry-source.js +130 -0
- package/dist/schema/index.d.ts +19 -7
- package/dist/schema/index.d.ts.map +1 -1
- package/dist/schema/index.js +21 -5
- package/dist/schema/nodes/block.d.ts +26 -0
- package/dist/schema/nodes/block.d.ts.map +1 -1
- package/dist/schema/nodes/block.js +1 -1
- package/dist/schema/nodes/box-vent.d.ts +26 -0
- package/dist/schema/nodes/box-vent.d.ts.map +1 -1
- package/dist/schema/nodes/building.d.ts +26 -0
- package/dist/schema/nodes/building.d.ts.map +1 -1
- package/dist/schema/nodes/cabinet.d.ts +61 -9
- package/dist/schema/nodes/cabinet.d.ts.map +1 -1
- package/dist/schema/nodes/ceiling.d.ts +37 -0
- package/dist/schema/nodes/ceiling.d.ts.map +1 -1
- package/dist/schema/nodes/ceiling.js +8 -0
- package/dist/schema/nodes/chimney.d.ts +26 -0
- package/dist/schema/nodes/chimney.d.ts.map +1 -1
- package/dist/schema/nodes/column.d.ts +126 -0
- package/dist/schema/nodes/column.d.ts.map +1 -1
- package/dist/schema/nodes/column.js +2 -0
- package/dist/schema/nodes/construction-dimension.d.ts +26 -0
- package/dist/schema/nodes/construction-dimension.d.ts.map +1 -1
- package/dist/schema/nodes/cupola.d.ts +26 -0
- package/dist/schema/nodes/cupola.d.ts.map +1 -1
- package/dist/schema/nodes/curtain-wall.d.ts +5 -5
- package/dist/schema/nodes/door.d.ts +139 -20
- package/dist/schema/nodes/door.d.ts.map +1 -1
- package/dist/schema/nodes/door.js +18 -33
- package/dist/schema/nodes/dormer.d.ts +28 -2
- package/dist/schema/nodes/dormer.d.ts.map +1 -1
- package/dist/schema/nodes/downspout.d.ts +27 -1
- package/dist/schema/nodes/downspout.d.ts.map +1 -1
- package/dist/schema/nodes/duct-fitting.d.ts +27 -1
- package/dist/schema/nodes/duct-fitting.d.ts.map +1 -1
- package/dist/schema/nodes/duct-segment.d.ts +27 -1
- package/dist/schema/nodes/duct-segment.d.ts.map +1 -1
- package/dist/schema/nodes/duct-terminal.d.ts +26 -0
- package/dist/schema/nodes/duct-terminal.d.ts.map +1 -1
- package/dist/schema/nodes/elevator.d.ts +26 -0
- package/dist/schema/nodes/elevator.d.ts.map +1 -1
- package/dist/schema/nodes/eyebrow-vent.d.ts +26 -0
- package/dist/schema/nodes/eyebrow-vent.d.ts.map +1 -1
- package/dist/schema/nodes/fence-feature.d.ts +141 -0
- package/dist/schema/nodes/fence-feature.d.ts.map +1 -0
- package/dist/schema/nodes/fence-feature.js +21 -0
- package/dist/schema/nodes/fence.d.ts +186 -0
- package/dist/schema/nodes/fence.d.ts.map +1 -1
- package/dist/schema/nodes/fence.js +92 -7
- package/dist/schema/nodes/floor-opening.d.ts +61 -0
- package/dist/schema/nodes/floor-opening.d.ts.map +1 -0
- package/dist/schema/nodes/floor-opening.js +17 -0
- package/dist/schema/nodes/guide.d.ts +26 -0
- package/dist/schema/nodes/guide.d.ts.map +1 -1
- package/dist/schema/nodes/gutter.d.ts +26 -0
- package/dist/schema/nodes/gutter.d.ts.map +1 -1
- package/dist/schema/nodes/hvac-equipment.d.ts +26 -0
- package/dist/schema/nodes/hvac-equipment.d.ts.map +1 -1
- package/dist/schema/nodes/imported-mesh.d.ts +26 -0
- package/dist/schema/nodes/imported-mesh.d.ts.map +1 -1
- package/dist/schema/nodes/item.d.ts +153 -2
- package/dist/schema/nodes/item.d.ts.map +1 -1
- package/dist/schema/nodes/item.js +13 -0
- package/dist/schema/nodes/lean-to-extension.d.ts +26 -0
- package/dist/schema/nodes/lean-to-extension.d.ts.map +1 -1
- package/dist/schema/nodes/level.d.ts +27 -1
- package/dist/schema/nodes/level.d.ts.map +1 -1
- package/dist/schema/nodes/lineset.d.ts +26 -0
- package/dist/schema/nodes/lineset.d.ts.map +1 -1
- package/dist/schema/nodes/liquid-line.d.ts +26 -0
- package/dist/schema/nodes/liquid-line.d.ts.map +1 -1
- package/dist/schema/nodes/measurement.d.ts +26 -0
- package/dist/schema/nodes/measurement.d.ts.map +1 -1
- package/dist/schema/nodes/opening-types.d.ts +41 -0
- package/dist/schema/nodes/opening-types.d.ts.map +1 -0
- package/dist/schema/nodes/opening-types.js +48 -0
- package/dist/schema/nodes/pipe-fitting.d.ts +26 -0
- package/dist/schema/nodes/pipe-fitting.d.ts.map +1 -1
- package/dist/schema/nodes/pipe-segment.d.ts +26 -0
- package/dist/schema/nodes/pipe-segment.d.ts.map +1 -1
- package/dist/schema/nodes/pipe-trap.d.ts +26 -0
- package/dist/schema/nodes/pipe-trap.d.ts.map +1 -1
- package/dist/schema/nodes/ridge-vent.d.ts +26 -0
- package/dist/schema/nodes/ridge-vent.d.ts.map +1 -1
- package/dist/schema/nodes/roof-segment-walls.d.ts.map +1 -1
- package/dist/schema/nodes/roof-segment-walls.js +2 -1
- package/dist/schema/nodes/roof-segment.d.ts +30 -2
- package/dist/schema/nodes/roof-segment.d.ts.map +1 -1
- package/dist/schema/nodes/roof-segment.js +9 -0
- package/dist/schema/nodes/roof.d.ts +101 -0
- package/dist/schema/nodes/roof.d.ts.map +1 -1
- package/dist/schema/nodes/roof.js +6 -0
- package/dist/schema/nodes/scan.d.ts +26 -0
- package/dist/schema/nodes/scan.d.ts.map +1 -1
- package/dist/schema/nodes/separator.d.ts +50 -0
- package/dist/schema/nodes/separator.d.ts.map +1 -0
- package/dist/schema/nodes/separator.js +8 -0
- package/dist/schema/nodes/shelf.d.ts +26 -0
- package/dist/schema/nodes/shelf.d.ts.map +1 -1
- package/dist/schema/nodes/site.d.ts +192 -0
- package/dist/schema/nodes/site.d.ts.map +1 -1
- package/dist/schema/nodes/site.js +178 -1
- package/dist/schema/nodes/skylight.d.ts +30 -4
- package/dist/schema/nodes/skylight.d.ts.map +1 -1
- package/dist/schema/nodes/slab.d.ts +84 -0
- package/dist/schema/nodes/slab.d.ts.map +1 -1
- package/dist/schema/nodes/slab.js +37 -2
- package/dist/schema/nodes/solar-panel.d.ts +26 -0
- package/dist/schema/nodes/solar-panel.d.ts.map +1 -1
- package/dist/schema/nodes/spawn.d.ts +26 -0
- package/dist/schema/nodes/spawn.d.ts.map +1 -1
- package/dist/schema/nodes/stair-construction.d.ts +21 -0
- package/dist/schema/nodes/stair-construction.d.ts.map +1 -0
- package/dist/schema/nodes/stair-construction.js +13 -0
- package/dist/schema/nodes/stair-design-targets.d.ts +9 -0
- package/dist/schema/nodes/stair-design-targets.d.ts.map +1 -0
- package/dist/schema/nodes/stair-design-targets.js +7 -0
- package/dist/schema/nodes/stair-segment.d.ts +72 -4
- package/dist/schema/nodes/stair-segment.d.ts.map +1 -1
- package/dist/schema/nodes/stair-segment.js +13 -0
- package/dist/schema/nodes/stair.d.ts +119 -2
- package/dist/schema/nodes/stair.d.ts.map +1 -1
- package/dist/schema/nodes/stair.js +59 -2
- package/dist/schema/nodes/structural-grid.d.ts +26 -0
- package/dist/schema/nodes/structural-grid.d.ts.map +1 -1
- package/dist/schema/nodes/surface-hole-metadata.d.ts +3 -0
- package/dist/schema/nodes/surface-hole-metadata.d.ts.map +1 -1
- package/dist/schema/nodes/surface-hole-metadata.js +2 -1
- package/dist/schema/nodes/surface-paint-region.d.ts +14 -0
- package/dist/schema/nodes/surface-paint-region.d.ts.map +1 -0
- package/dist/schema/nodes/surface-paint-region.js +12 -0
- package/dist/schema/nodes/turbine-vent.d.ts +26 -0
- package/dist/schema/nodes/turbine-vent.d.ts.map +1 -1
- package/dist/schema/nodes/unit.d.ts +26 -0
- package/dist/schema/nodes/unit.d.ts.map +1 -1
- package/dist/schema/nodes/wall.d.ts +352 -61
- package/dist/schema/nodes/wall.d.ts.map +1 -1
- package/dist/schema/nodes/wall.js +185 -186
- package/dist/schema/nodes/window.d.ts +139 -20
- package/dist/schema/nodes/window.d.ts.map +1 -1
- package/dist/schema/nodes/window.js +12 -14
- package/dist/schema/nodes/zone.d.ts +69 -1
- package/dist/schema/nodes/zone.d.ts.map +1 -1
- package/dist/schema/nodes/zone.js +46 -0
- package/dist/schema/provenance.d.ts +118 -0
- package/dist/schema/provenance.d.ts.map +1 -0
- package/dist/schema/provenance.js +76 -0
- package/dist/schema/source-ref.d.ts +23 -0
- package/dist/schema/source-ref.d.ts.map +1 -0
- package/dist/schema/source-ref.js +29 -0
- package/dist/schema/types.d.ts +3317 -68
- package/dist/schema/types.d.ts.map +1 -1
- package/dist/schema/types.js +7 -0
- package/dist/services/alignment-anchors.d.ts +2 -1
- package/dist/services/alignment-anchors.d.ts.map +1 -1
- package/dist/services/alignment-anchors.js +9 -6
- 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/level-height.d.ts.map +1 -1
- package/dist/services/level-height.js +6 -4
- package/dist/services/storey.d.ts +21 -1
- package/dist/services/storey.d.ts.map +1 -1
- package/dist/services/storey.js +94 -8
- package/dist/services/surface-hosting.d.ts.map +1 -1
- package/dist/services/surface-hosting.js +4 -1
- package/dist/store/actions/node-actions.d.ts +4563 -8
- package/dist/store/actions/node-actions.d.ts.map +1 -1
- package/dist/store/actions/node-actions.js +495 -174
- package/dist/store/derived-node-guard.d.ts +84 -0
- package/dist/store/derived-node-guard.d.ts.map +1 -0
- package/dist/store/derived-node-guard.js +586 -0
- package/dist/store/history-control.d.ts +34 -0
- package/dist/store/history-control.d.ts.map +1 -1
- package/dist/store/history-control.js +99 -1
- package/dist/store/history-drafts.d.ts +48 -0
- package/dist/store/history-drafts.d.ts.map +1 -0
- package/dist/store/history-drafts.js +403 -0
- package/dist/store/history-invalidation.d.ts.map +1 -1
- package/dist/store/history-invalidation.js +1 -0
- package/dist/store/item-interaction.d.ts +28 -0
- package/dist/store/item-interaction.d.ts.map +1 -0
- package/dist/store/item-interaction.js +34 -0
- package/dist/store/registered-node-defaults.d.ts +11 -0
- package/dist/store/registered-node-defaults.d.ts.map +1 -0
- package/dist/store/registered-node-defaults.js +25 -0
- package/dist/store/scene-annotations.d.ts +8969 -0
- package/dist/store/scene-annotations.d.ts.map +1 -0
- package/dist/store/scene-annotations.js +107 -0
- package/dist/store/use-interactive.d.ts +23 -1
- package/dist/store/use-interactive.d.ts.map +1 -1
- package/dist/store/use-interactive.js +128 -5
- package/dist/store/use-scene.d.ts +68 -12
- package/dist/store/use-scene.d.ts.map +1 -1
- package/dist/store/use-scene.js +416 -305
- package/dist/systems/elevator/elevator-opening-sync.d.ts.map +1 -1
- package/dist/systems/elevator/elevator-opening-sync.js +4 -6
- package/dist/systems/elevator/elevator-opening-system.d.ts.map +1 -1
- package/dist/systems/elevator/elevator-opening-system.js +12 -6
- package/dist/systems/elevator/elevator-service.d.ts.map +1 -1
- package/dist/systems/elevator/elevator-service.js +8 -3
- package/dist/systems/fence/fence-centerline.d.ts.map +1 -1
- package/dist/systems/fence/fence-centerline.js +6 -5
- package/dist/systems/fence/fence-features.d.ts +36 -0
- package/dist/systems/fence/fence-features.d.ts.map +1 -0
- package/dist/systems/fence/fence-features.js +105 -0
- package/dist/systems/fence/fence-spline.d.ts +8 -5
- package/dist/systems/fence/fence-spline.d.ts.map +1 -1
- package/dist/systems/fence/fence-spline.js +51 -16
- package/dist/systems/owned-floor-openings.d.ts +9 -0
- package/dist/systems/owned-floor-openings.d.ts.map +1 -0
- package/dist/systems/owned-floor-openings.js +326 -0
- package/dist/systems/reconcile-owned-floor-openings.d.ts +3 -0
- package/dist/systems/reconcile-owned-floor-openings.d.ts.map +1 -0
- package/dist/systems/reconcile-owned-floor-openings.js +25 -0
- package/dist/systems/slab/__fixtures__/doorway-steps.d.ts +8 -0
- package/dist/systems/slab/__fixtures__/doorway-steps.d.ts.map +1 -0
- package/dist/systems/slab/__fixtures__/doorway-steps.js +62 -0
- package/dist/systems/slab/__fixtures__/floor-step.d.ts +5636 -0
- package/dist/systems/slab/__fixtures__/floor-step.d.ts.map +1 -0
- package/dist/systems/slab/__fixtures__/floor-step.js +66 -0
- package/dist/systems/slab/__fixtures__/raised-room.d.ts +5775 -0
- package/dist/systems/slab/__fixtures__/raised-room.d.ts.map +1 -0
- package/dist/systems/slab/__fixtures__/raised-room.js +54 -0
- package/dist/systems/slab/ensure-slab-openings.d.ts +9 -0
- package/dist/systems/slab/ensure-slab-openings.d.ts.map +1 -0
- package/dist/systems/slab/ensure-slab-openings.js +41 -0
- package/dist/systems/slab/slab-support.d.ts +25 -6
- package/dist/systems/slab/slab-support.d.ts.map +1 -1
- package/dist/systems/slab/slab-support.js +471 -54
- package/dist/systems/stair/stair-base-elevation.d.ts +3 -0
- package/dist/systems/stair/stair-base-elevation.d.ts.map +1 -0
- package/dist/systems/stair/stair-base-elevation.js +49 -0
- package/dist/systems/stair/stair-clearance.d.ts +39 -0
- package/dist/systems/stair/stair-clearance.d.ts.map +1 -0
- package/dist/systems/stair/stair-clearance.js +508 -0
- package/dist/systems/stair/stair-construction.d.ts +37 -0
- package/dist/systems/stair/stair-construction.d.ts.map +1 -0
- package/dist/systems/stair/stair-construction.js +314 -0
- package/dist/systems/stair/stair-detail-budget.d.ts +13 -0
- package/dist/systems/stair/stair-detail-budget.d.ts.map +1 -0
- package/dist/systems/stair/stair-detail-budget.js +64 -0
- package/dist/systems/stair/stair-flight.d.ts +2 -2
- package/dist/systems/stair/stair-flight.d.ts.map +1 -1
- package/dist/systems/stair/stair-flight.js +4 -3
- package/dist/systems/stair/stair-floor-footprints.d.ts +7 -0
- package/dist/systems/stair/stair-floor-footprints.d.ts.map +1 -0
- package/dist/systems/stair/stair-floor-footprints.js +113 -0
- package/dist/systems/stair/stair-footprint.d.ts +3 -1
- package/dist/systems/stair/stair-footprint.d.ts.map +1 -1
- package/dist/systems/stair/stair-footprint.js +97 -44
- package/dist/systems/stair/stair-layout.d.ts +39 -0
- package/dist/systems/stair/stair-layout.d.ts.map +1 -0
- package/dist/systems/stair/stair-layout.js +58 -0
- package/dist/systems/stair/stair-opening-preview.d.ts +1612 -80
- package/dist/systems/stair/stair-opening-preview.d.ts.map +1 -1
- package/dist/systems/stair/stair-opening-sync.d.ts +8 -2
- package/dist/systems/stair/stair-opening-sync.d.ts.map +1 -1
- package/dist/systems/stair/stair-opening-sync.js +136 -315
- package/dist/systems/stair/stair-opening-system.d.ts.map +1 -1
- package/dist/systems/stair/stair-opening-system.js +40 -8
- package/dist/systems/stair/stair-presets.d.ts +276 -0
- package/dist/systems/stair/stair-presets.d.ts.map +1 -0
- package/dist/systems/stair/stair-presets.js +151 -0
- package/dist/systems/stair/stair-rail-budget.d.ts +6 -0
- package/dist/systems/stair/stair-rail-budget.d.ts.map +1 -0
- package/dist/systems/stair/stair-rail-budget.js +36 -0
- package/dist/systems/stair/stair-rail-path.d.ts +22 -0
- package/dist/systems/stair/stair-rail-path.d.ts.map +1 -0
- package/dist/systems/stair/stair-rail-path.js +497 -0
- package/dist/systems/stair/stair-rise-edit.d.ts +9 -0
- package/dist/systems/stair/stair-rise-edit.d.ts.map +1 -0
- package/dist/systems/stair/stair-rise-edit.js +46 -0
- package/dist/systems/stair/stair-rise-query.d.ts +24 -0
- package/dist/systems/stair/stair-rise-query.d.ts.map +1 -0
- package/dist/systems/stair/stair-rise-query.js +125 -0
- package/dist/systems/stair/stair-rise.d.ts +4 -19
- package/dist/systems/stair/stair-rise.d.ts.map +1 -1
- package/dist/systems/stair/stair-rise.js +8 -71
- package/dist/systems/stair/stair-sizing.d.ts +414 -0
- package/dist/systems/stair/stair-sizing.d.ts.map +1 -0
- package/dist/systems/stair/stair-sizing.js +255 -0
- package/dist/systems/stair/stair-sweep-edit.d.ts +7 -0
- package/dist/systems/stair/stair-sweep-edit.d.ts.map +1 -0
- package/dist/systems/stair/stair-sweep-edit.js +8 -0
- package/dist/systems/stair/stair-walking-line.d.ts +5 -0
- package/dist/systems/stair/stair-walking-line.d.ts.map +1 -0
- package/dist/systems/stair/stair-walking-line.js +91 -0
- package/dist/systems/stair/stair-winder.d.ts +36 -0
- package/dist/systems/stair/stair-winder.d.ts.map +1 -0
- package/dist/systems/stair/stair-winder.js +173 -0
- package/dist/systems/wall/wall-assembly.d.ts +234 -0
- package/dist/systems/wall/wall-assembly.d.ts.map +1 -0
- package/dist/systems/wall/wall-assembly.js +854 -0
- package/dist/systems/wall/wall-curve.d.ts +2 -1
- package/dist/systems/wall/wall-curve.d.ts.map +1 -1
- package/dist/systems/wall/wall-curve.js +21 -5
- package/dist/systems/wall/wall-finish.d.ts +102 -0
- package/dist/systems/wall/wall-finish.d.ts.map +1 -0
- package/dist/systems/wall/wall-finish.js +264 -0
- package/dist/systems/wall/wall-footprint.d.ts +3 -0
- package/dist/systems/wall/wall-footprint.d.ts.map +1 -1
- package/dist/systems/wall/wall-footprint.js +15 -13
- package/dist/systems/wall/wall-frame.d.ts +45 -0
- package/dist/systems/wall/wall-frame.d.ts.map +1 -0
- package/dist/systems/wall/wall-frame.js +162 -0
- package/dist/systems/wall/wall-layer-bands.d.ts +38 -0
- package/dist/systems/wall/wall-layer-bands.d.ts.map +1 -0
- package/dist/systems/wall/wall-layer-bands.js +109 -0
- package/dist/systems/wall/wall-merge.d.ts +20 -1
- package/dist/systems/wall/wall-merge.d.ts.map +1 -1
- package/dist/systems/wall/wall-merge.js +189 -18
- package/dist/systems/wall/wall-mitering.d.ts +6 -5
- package/dist/systems/wall/wall-mitering.d.ts.map +1 -1
- package/dist/systems/wall/wall-mitering.js +70 -20
- package/dist/systems/wall/wall-operations.d.ts +1 -1
- package/dist/systems/wall/wall-operations.d.ts.map +1 -1
- package/dist/systems/wall/wall-operations.js +2 -1
- package/dist/systems/wall/wall-paint-plan.d.ts +30 -0
- package/dist/systems/wall/wall-paint-plan.d.ts.map +1 -0
- package/dist/systems/wall/wall-paint-plan.js +167 -0
- package/dist/systems/wall/wall-room-sides.d.ts +6 -0
- package/dist/systems/wall/wall-room-sides.d.ts.map +1 -0
- package/dist/systems/wall/wall-room-sides.js +14 -0
- package/dist/systems/wall/wall-step-openings.d.ts +17 -0
- package/dist/systems/wall/wall-step-openings.d.ts.map +1 -0
- package/dist/systems/wall/wall-step-openings.js +32 -0
- package/dist/systems/wall/wall-top.d.ts +2 -6
- package/dist/systems/wall/wall-top.d.ts.map +1 -1
- package/dist/systems/wall/wall-top.js +3 -9
- package/dist/systems/wall/wall-topology.d.ts +21 -0
- package/dist/systems/wall/wall-topology.d.ts.map +1 -1
- package/dist/systems/wall/wall-topology.js +405 -4
- package/dist/utils/clone-scene-graph.d.ts +6 -0
- package/dist/utils/clone-scene-graph.d.ts.map +1 -1
- package/dist/utils/clone-scene-graph.js +123 -15
- package/dist/utils/ensure-scene-openings.d.ts +8965 -0
- package/dist/utils/ensure-scene-openings.d.ts.map +1 -0
- package/dist/utils/ensure-scene-openings.js +29 -0
- package/dist/utils/exterior-threshold-migration.d.ts +4 -0
- package/dist/utils/exterior-threshold-migration.d.ts.map +1 -0
- package/dist/utils/exterior-threshold-migration.js +114 -0
- package/dist/utils/floor-follow-migration.d.ts +3 -0
- package/dist/utils/floor-follow-migration.d.ts.map +1 -0
- package/dist/utils/floor-follow-migration.js +29 -0
- package/dist/utils/floor-opening-migration.d.ts +13 -0
- package/dist/utils/floor-opening-migration.d.ts.map +1 -0
- package/dist/utils/floor-opening-migration.js +148 -0
- package/dist/utils/floor-piece-adoption.d.ts +50 -0
- package/dist/utils/floor-piece-adoption.d.ts.map +1 -0
- package/dist/utils/floor-piece-adoption.js +182 -0
- package/dist/utils/floor-plate-migration.d.ts +4507 -0
- package/dist/utils/floor-plate-migration.d.ts.map +1 -0
- package/dist/utils/floor-plate-migration.js +1360 -0
- package/dist/utils/heal-plan-coordinates.d.ts +2 -0
- package/dist/utils/heal-plan-coordinates.d.ts.map +1 -0
- package/dist/utils/heal-plan-coordinates.js +69 -0
- package/dist/utils/heal-scene-graph.d.ts +20 -6
- package/dist/utils/heal-scene-graph.d.ts.map +1 -1
- package/dist/utils/heal-scene-graph.js +61 -16
- package/dist/utils/legacy-material-slots.d.ts +23 -0
- package/dist/utils/legacy-material-slots.d.ts.map +1 -0
- package/dist/utils/legacy-material-slots.js +120 -0
- package/dist/utils/legacy-opening-datums.d.ts +11 -0
- package/dist/utils/legacy-opening-datums.d.ts.map +1 -0
- package/dist/utils/legacy-opening-datums.js +92 -0
- package/dist/utils/legacy-wall-datums.d.ts +6 -0
- package/dist/utils/legacy-wall-datums.d.ts.map +1 -0
- package/dist/utils/legacy-wall-datums.js +199 -0
- package/dist/utils/load-migration.d.ts +28 -0
- package/dist/utils/load-migration.d.ts.map +1 -0
- package/dist/utils/load-migration.js +89 -0
- package/dist/utils/node-defaults.d.ts +37 -0
- package/dist/utils/node-defaults.d.ts.map +1 -0
- package/dist/utils/node-defaults.js +96 -0
- package/dist/utils/normalize-legacy-structure.d.ts +2 -0
- package/dist/utils/normalize-legacy-structure.d.ts.map +1 -0
- package/dist/utils/normalize-legacy-structure.js +61 -0
- package/dist/utils/omit-undefined.d.ts +2 -0
- package/dist/utils/omit-undefined.d.ts.map +1 -0
- package/dist/utils/omit-undefined.js +17 -0
- package/dist/utils/owned-floor-opening-migration.d.ts +4489 -0
- package/dist/utils/owned-floor-opening-migration.d.ts.map +1 -0
- package/dist/utils/owned-floor-opening-migration.js +365 -0
- package/dist/utils/reconcile-structure-on-load.d.ts +8965 -0
- package/dist/utils/reconcile-structure-on-load.d.ts.map +1 -0
- package/dist/utils/reconcile-structure-on-load.js +307 -0
- package/dist/utils/room-zone-migration.d.ts +18 -0
- package/dist/utils/room-zone-migration.d.ts.map +1 -0
- package/dist/utils/room-zone-migration.js +258 -0
- package/dist/utils/scene-migrations.d.ts +16 -1
- package/dist/utils/scene-migrations.d.ts.map +1 -1
- package/dist/utils/scene-migrations.js +15 -1
- package/dist/utils/structure-id.d.ts +4 -0
- package/dist/utils/structure-id.d.ts.map +1 -0
- package/dist/utils/structure-id.js +115 -0
- package/dist/utils/vertical-scene-migration.d.ts +8 -8
- package/dist/utils/vertical-scene-migration.d.ts.map +1 -1
- package/dist/utils/vertical-scene-migration.js +18 -8
- package/dist/utils/wall-assembly-migration.d.ts +14 -0
- package/dist/utils/wall-assembly-migration.d.ts.map +1 -0
- package/dist/utils/wall-assembly-migration.js +23 -0
- package/dist/utils/wall-face-migration.d.ts +23 -0
- package/dist/utils/wall-face-migration.d.ts.map +1 -0
- package/dist/utils/wall-face-migration.js +246 -0
- package/dist/validation/opening-bounds.d.ts +36 -0
- package/dist/validation/opening-bounds.d.ts.map +1 -0
- package/dist/validation/opening-bounds.js +34 -0
- package/dist/validation/validate-build-json.d.ts +2 -0
- package/dist/validation/validate-build-json.d.ts.map +1 -1
- package/dist/validation/validate-build-json.js +36 -1
- package/package.json +36 -3
- package/dist/services/surface-hosting-procedural-parity.fixtures.d.ts +0 -13
- package/dist/services/surface-hosting-procedural-parity.fixtures.d.ts.map +0 -1
- package/dist/services/surface-hosting-procedural-parity.fixtures.js +0 -4691
- package/dist/services/surface-hosting-shelf-parity.fixtures.d.ts +0 -1060
- package/dist/services/surface-hosting-shelf-parity.fixtures.d.ts.map +0 -1
- package/dist/services/surface-hosting-shelf-parity.fixtures.js +0 -3127
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { type ScriptedNode } from '../lib/geometry-script-node.js';
|
|
2
|
+
import { type AnyNode, type CompiledGeometryScript, type GeometryScriptLanguage, type GeometryScriptParamValue } from '../schema/index.js';
|
|
3
|
+
import type { AgentOperation } from './types.js';
|
|
4
|
+
export type AddObjectInput = {
|
|
5
|
+
/** Absent for a params-only edit: the host compiled the object's stored script. */
|
|
6
|
+
code?: string;
|
|
7
|
+
params?: Record<string, GeometryScriptParamValue>;
|
|
8
|
+
nodeId?: string;
|
|
9
|
+
parentId?: string;
|
|
10
|
+
position?: number[];
|
|
11
|
+
/** Degrees about Y, as the contract parses it. */
|
|
12
|
+
rotation?: number;
|
|
13
|
+
side?: 'front' | 'back';
|
|
14
|
+
name?: string;
|
|
15
|
+
description?: string;
|
|
16
|
+
tags?: string[];
|
|
17
|
+
category?: string;
|
|
18
|
+
/** What the object stands in for; kept in `metadata.reason`, listed by verify_scene. */
|
|
19
|
+
reason?: string;
|
|
20
|
+
/** What the surface's compile produced from `code` (compiled before the operation runs). */
|
|
21
|
+
compiled: CompiledGeometryScript;
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* Words that name what Pascal already builds, with the tool that builds it. An object named so is
|
|
25
|
+
* built with a hint naming that tool: authored objects are for what has no type.
|
|
26
|
+
*/
|
|
27
|
+
export declare const PASCAL_TYPES: [RegExp, string][];
|
|
28
|
+
/**
|
|
29
|
+
* `add_object`: the item a compiled three.js module becomes. Not in
|
|
30
|
+
* AGENT_OPERATIONS: each surface compiles `code` first (the chat in its
|
|
31
|
+
* worker, the MCP on the server) and passes the result as `compiled`.
|
|
32
|
+
* The artifact is referenced by hash and its bounds become the item's dimensions; editing
|
|
33
|
+
* keeps the item's identity, placement, children, paint and reason. Only a new object is judged
|
|
34
|
+
* by its shape and must give a reason: the editor's inspector rebuilds through the edit path.
|
|
35
|
+
*/
|
|
36
|
+
/**
|
|
37
|
+
* A new object says what it stands in for. Hosts check it before running the script: a missing
|
|
38
|
+
* reason refused after the compile has run it and stored its artifacts for nothing.
|
|
39
|
+
*/
|
|
40
|
+
export declare function requireAddObjectReason(input: {
|
|
41
|
+
nodeId?: string;
|
|
42
|
+
reason?: string;
|
|
43
|
+
}): void;
|
|
44
|
+
export declare const addObject: AgentOperation<AddObjectInput>;
|
|
45
|
+
export type RescriptOpeningInput = {
|
|
46
|
+
description?: string;
|
|
47
|
+
category?: string;
|
|
48
|
+
tags?: string[];
|
|
49
|
+
nodeId: string;
|
|
50
|
+
/** Where it goes; without one its bottom edge stays put. */
|
|
51
|
+
position?: number[];
|
|
52
|
+
name?: string;
|
|
53
|
+
/** What the host compiled: new code, or the stored script with new params. */
|
|
54
|
+
compiled: CompiledGeometryScript;
|
|
55
|
+
};
|
|
56
|
+
/**
|
|
57
|
+
* `add_window` / `add_door` with a nodeId: a window or door built from (or
|
|
58
|
+
* given) a script, rebuilt from what the host compiled. Its size is what the
|
|
59
|
+
* script built; marks, hosting and the opening's own fields are kept.
|
|
60
|
+
*/
|
|
61
|
+
export declare const rescriptOpening: AgentOperation<RescriptOpeningInput>;
|
|
62
|
+
/**
|
|
63
|
+
* The param values a rebuild of `node` compiles with: its current ones under the
|
|
64
|
+
* edit's. The compile then keeps only what the module declares, clamps numbers to
|
|
65
|
+
* their new range and gives a param new to the code, or one whose type changed,
|
|
66
|
+
* its default. A node without a script just takes the edit's.
|
|
67
|
+
*/
|
|
68
|
+
export declare function editedScriptParams(node: AnyNode | undefined, params: Record<string, GeometryScriptParamValue> | undefined): Record<string, GeometryScriptParamValue> | undefined;
|
|
69
|
+
/**
|
|
70
|
+
* The language a build of `node` runs in: new code's own (the node's when not
|
|
71
|
+
* given), and the stored script's for a params-only rebuild.
|
|
72
|
+
*/
|
|
73
|
+
export declare function editedScriptLanguage(node: AnyNode | undefined, input: {
|
|
74
|
+
code?: string;
|
|
75
|
+
language?: GeometryScriptLanguage;
|
|
76
|
+
}): GeometryScriptLanguage;
|
|
77
|
+
/** The scripted node `get_source` and a params-only rebuild act on, or a refusal. */
|
|
78
|
+
export declare function authoredObject(nodes: Record<string, AnyNode>, nodeId: string): ScriptedNode;
|
|
79
|
+
/**
|
|
80
|
+
* Params are a script's values: without code, only a node already built from a
|
|
81
|
+
* script has one to rerun, so a new node, or one without a script, is refused.
|
|
82
|
+
*/
|
|
83
|
+
export declare function refuseParamsWithoutScript(nodes: Record<string, AnyNode>, input: {
|
|
84
|
+
code?: string;
|
|
85
|
+
params?: unknown;
|
|
86
|
+
nodeId?: string;
|
|
87
|
+
}): void;
|
|
88
|
+
/**
|
|
89
|
+
* Why a raw update (chat `update_node`, MCP `apply_patch`) may not write what a
|
|
90
|
+
* node's script owns, its `source` or the size it built, or null: the stored
|
|
91
|
+
* fields would no longer match the geometry. Restating the current value passes.
|
|
92
|
+
*/
|
|
93
|
+
export declare function scriptedFieldRefusal(node: AnyNode, data: Record<string, unknown>): string | null;
|
|
94
|
+
/** What `get_source` answers once the host has the module's text. */
|
|
95
|
+
export declare function readSourceResult(node: ScriptedNode, code: string): {
|
|
96
|
+
nodeId: `item_${string}` | `column_${string}` | `door_${string}` | `window_${string}`;
|
|
97
|
+
type: "column" | "door" | "window" | "item";
|
|
98
|
+
name: string | undefined;
|
|
99
|
+
language: "three" | "bpy";
|
|
100
|
+
code: string;
|
|
101
|
+
params: {
|
|
102
|
+
value: string | number | boolean;
|
|
103
|
+
id: string;
|
|
104
|
+
kind: "string" | "number" | "boolean";
|
|
105
|
+
default: string | number | boolean;
|
|
106
|
+
label?: string | undefined;
|
|
107
|
+
min?: number | undefined;
|
|
108
|
+
max?: number | undefined;
|
|
109
|
+
step?: number | undefined;
|
|
110
|
+
unit?: string | undefined;
|
|
111
|
+
options?: string[] | undefined;
|
|
112
|
+
}[];
|
|
113
|
+
};
|
|
114
|
+
//# sourceMappingURL=add-object.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add-object.d.ts","sourceRoot":"","sources":["../../src/agent-operations/add-object.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,KAAK,YAAY,EAIlB,MAAM,6BAA6B,CAAA;AAEpC,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,sBAAsB,EAC3B,KAAK,sBAAsB,EAE3B,KAAK,wBAAwB,EAG9B,MAAM,WAAW,CAAA;AAElB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAI7C,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,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,4FAA4F;IAC5F,QAAQ,EAAE,sBAAsB,CAAA;CACjC,CAAA;AA0CD;;;GAGG;AACH,eAAO,MAAM,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAa1C,CAAA;AA0FD;;;;;;;GAOG;AACH;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,QAMjF;AAED,eAAO,MAAM,SAAS,EAAE,cAAc,CAAC,cAAc,CAkGpD,CAAA;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,CAsDhE,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,qEAAqE;AACrE,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM;;;;;;;;;;;;;;;;;;EAYhE"}
|
|
@@ -0,0 +1,361 @@
|
|
|
1
|
+
import { refuse } from '../agent-tools/refusal.js';
|
|
2
|
+
import { artifactUrl } from '../lib/artifact-store.js';
|
|
3
|
+
import { isScriptedNode, matchScriptSlotsToLibrary, scriptedSize, scriptInteractive, scriptSource, } from '../lib/geometry-script-node.js';
|
|
4
|
+
import { geometryRestingHeight, resettledPosition } from '../lib/geometry-surfaces.js';
|
|
5
|
+
import { generateId, ItemNode, } from '../schema/index.js';
|
|
6
|
+
import { targetLevel } from './level-target.js';
|
|
7
|
+
const ATTACH = {
|
|
8
|
+
floor: undefined,
|
|
9
|
+
wall: 'wall',
|
|
10
|
+
'wall-side': 'wall-side',
|
|
11
|
+
ceiling: 'ceiling',
|
|
12
|
+
};
|
|
13
|
+
const HOSTS = {
|
|
14
|
+
floor: ['level', 'item'],
|
|
15
|
+
wall: ['wall'],
|
|
16
|
+
'wall-side': ['wall'],
|
|
17
|
+
ceiling: ['ceiling'],
|
|
18
|
+
};
|
|
19
|
+
function scriptAsset(compiled, input, previous) {
|
|
20
|
+
const { min, max } = compiled.manifest.bounds;
|
|
21
|
+
const restingHeight = geometryRestingHeight(compiled.manifest);
|
|
22
|
+
const attachTo = ATTACH[compiled.mount];
|
|
23
|
+
const interactive = scriptInteractive(compiled.manifest);
|
|
24
|
+
return {
|
|
25
|
+
id: `script_${compiled.sha256.slice(0, 16)}`,
|
|
26
|
+
category: input.category ?? previous?.category ?? 'object',
|
|
27
|
+
name: input.name ?? previous?.name ?? 'Authored object',
|
|
28
|
+
thumbnail: previous?.thumbnail ?? '',
|
|
29
|
+
source: 'mine',
|
|
30
|
+
src: artifactUrl(compiled.sha256),
|
|
31
|
+
dimensions: [max[0] - min[0], max[1] - min[1], max[2] - min[2]],
|
|
32
|
+
...(attachTo ? { attachTo } : {}),
|
|
33
|
+
...(restingHeight === null ? {} : { surface: { height: restingHeight } }),
|
|
34
|
+
offset: [0, 0, 0],
|
|
35
|
+
rotation: [0, 0, 0],
|
|
36
|
+
scale: [1, 1, 1],
|
|
37
|
+
...(interactive ? { interactive } : {}),
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Words that name what Pascal already builds, with the tool that builds it. An object named so is
|
|
42
|
+
* built with a hint naming that tool: authored objects are for what has no type.
|
|
43
|
+
*/
|
|
44
|
+
export const PASCAL_TYPES = [
|
|
45
|
+
[/\bwalls?\b/i, 'walls: add_wall'],
|
|
46
|
+
[
|
|
47
|
+
/\b(slabs?|floor plates?|floors?)\b/i,
|
|
48
|
+
'a floor: rooms make their floor plates (create_room), shaped by set_room_floor_construction or set_floor_foundation',
|
|
49
|
+
],
|
|
50
|
+
[
|
|
51
|
+
/\b(doors?|windows?|sills?|glazing)\b/i,
|
|
52
|
+
'add_door / add_window (with code for a design their fields cannot express)',
|
|
53
|
+
],
|
|
54
|
+
[/\b(stairs?|staircases?)\b/i, 'create_stair'],
|
|
55
|
+
[/\broofs?\b/i, 'create_roof'],
|
|
56
|
+
[/\b(rooms?|zones?|apartments?)\b/i, 'rooms: create_room'],
|
|
57
|
+
];
|
|
58
|
+
/**
|
|
59
|
+
* What a label names: the last word of its main phrase. "entry door pull handle (brass)" is a
|
|
60
|
+
* handle; "door" only says which one (it was once refused as a door).
|
|
61
|
+
*/
|
|
62
|
+
function headWord(label) {
|
|
63
|
+
const phrase = label.split(/\(|,|\s[-–—]\s|\sof\s/i)[0].trim();
|
|
64
|
+
return phrase.split(/\s+/).at(-1) ?? phrase;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* The tool for an object named after something Pascal builds: an invitation, not a gate. A word
|
|
68
|
+
* gate taught evasion: refused "entry door pull handle (brass)", the agent relabelled it "brass
|
|
69
|
+
* pull bars", and the label stopped naming the gap.
|
|
70
|
+
*/
|
|
71
|
+
function typeHint(input) {
|
|
72
|
+
for (const label of [input.name, input.category]) {
|
|
73
|
+
const named = label && PASCAL_TYPES.find(([word]) => word.test(headWord(label)));
|
|
74
|
+
if (named)
|
|
75
|
+
return `"${label}" is something Pascal builds: ${named[1]}.`;
|
|
76
|
+
}
|
|
77
|
+
return undefined;
|
|
78
|
+
}
|
|
79
|
+
/** A wall's box: thin, a metre long or more, two metres high or more. */
|
|
80
|
+
function wallSized(compiled) {
|
|
81
|
+
const [width, height, depth] = scriptedSize(compiled.manifest);
|
|
82
|
+
return Math.min(width, depth) <= 0.45 && Math.max(width, depth) >= 1 && height >= 2;
|
|
83
|
+
}
|
|
84
|
+
/** A plain box: one cuboid, as a wall is. A bookcase or a screen has shelves or holes. */
|
|
85
|
+
const PLAIN_BOX = 12;
|
|
86
|
+
/**
|
|
87
|
+
* A floor object that is a plain box with a wall's size, or a floor plate, is refused: Pascal builds
|
|
88
|
+
* those, and rooms, openings and facades only work with its own. Production saw whole houses of
|
|
89
|
+
* plain custom solids, nothing editable as walls, rooms or doors.
|
|
90
|
+
*/
|
|
91
|
+
function refuseWallOrSlabShape(compiled, input) {
|
|
92
|
+
const [width, height, depth] = scriptedSize(compiled.manifest);
|
|
93
|
+
const long = Math.max(width, depth);
|
|
94
|
+
const short = Math.min(width, depth);
|
|
95
|
+
const label = input.name ?? input.category ?? 'The object';
|
|
96
|
+
if (wallSized(compiled) && compiled.manifest.triangles <= PLAIN_BOX)
|
|
97
|
+
refuse('use_walls', `"${label}" (${long.toFixed(2)} × ${short.toFixed(2)} m, ${height.toFixed(2)} m high) is a plain box with a wall's size: build it with add_wall so rooms, openings and facades work with it.`, { label });
|
|
98
|
+
const base = input.position?.[1] ?? 0;
|
|
99
|
+
if (height <= 0.35 && short >= 2 && base <= 0.05) {
|
|
100
|
+
// Its extent along x and z as it stands, so the numbers match the outline the agent drew.
|
|
101
|
+
const turn = ((input.rotation ?? 0) * Math.PI) / 180;
|
|
102
|
+
const [c, s] = [Math.abs(Math.cos(turn)), Math.abs(Math.sin(turn))];
|
|
103
|
+
const [x, z] = [width * c + depth * s, width * s + depth * c];
|
|
104
|
+
refuse('use_slab', `"${label}" (${x.toFixed(2)} × ${z.toFixed(2)} m in x and z, ${height.toFixed(2)} m thick, on the floor) is a floor plate: build it as a slab.`, { label });
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
/** An item's category lives on its asset, so its source meta leaves it out. */
|
|
108
|
+
const itemSourceMeta = ({ category: _, ...input }) => input;
|
|
109
|
+
const round = (value) => Math.round(value * 1000) / 1000;
|
|
110
|
+
function summary(node, compiled, orphanedSlots) {
|
|
111
|
+
const { bounds, parts, slots, lights, params, triangles, cutout, animations } = compiled.manifest;
|
|
112
|
+
return {
|
|
113
|
+
nodeId: node.id,
|
|
114
|
+
mount: compiled.mount,
|
|
115
|
+
size: bounds.max.map((v, i) => round(v - bounds.min[i])),
|
|
116
|
+
parts: parts.map((part) => (part.type ? `${part.id} (${part.type})` : part.id)),
|
|
117
|
+
slots: slots.map((slot) => slot.id),
|
|
118
|
+
lights: lights.map((light) => light.id),
|
|
119
|
+
animations: animations.map((clip) => clip.name),
|
|
120
|
+
params: params.map((spec) => ({ ...spec, value: compiled.params[spec.id] })),
|
|
121
|
+
cutout,
|
|
122
|
+
triangles,
|
|
123
|
+
...(orphanedSlots.length > 0
|
|
124
|
+
? {
|
|
125
|
+
orphanedSlots,
|
|
126
|
+
note: `Paint on ${orphanedSlots.join(', ')} is kept but no longer shows: the new output has no slot with that id.`,
|
|
127
|
+
}
|
|
128
|
+
: {}),
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* `add_object`: the item a compiled three.js module becomes. Not in
|
|
133
|
+
* AGENT_OPERATIONS: each surface compiles `code` first (the chat in its
|
|
134
|
+
* worker, the MCP on the server) and passes the result as `compiled`.
|
|
135
|
+
* The artifact is referenced by hash and its bounds become the item's dimensions; editing
|
|
136
|
+
* keeps the item's identity, placement, children, paint and reason. Only a new object is judged
|
|
137
|
+
* by its shape and must give a reason: the editor's inspector rebuilds through the edit path.
|
|
138
|
+
*/
|
|
139
|
+
/**
|
|
140
|
+
* A new object says what it stands in for. Hosts check it before running the script: a missing
|
|
141
|
+
* reason refused after the compile has run it and stored its artifacts for nothing.
|
|
142
|
+
*/
|
|
143
|
+
export function requireAddObjectReason(input) {
|
|
144
|
+
if (!input.nodeId && !input.reason?.trim())
|
|
145
|
+
refuse('reason_required', 'Say what this object stands in for (reason): why no Pascal tool or catalog item builds it. The scene check lists every authored object with its reason.');
|
|
146
|
+
}
|
|
147
|
+
export const addObject = (nodes, input, context) => {
|
|
148
|
+
const { compiled } = input;
|
|
149
|
+
const rotation = input.rotation === undefined ? undefined : [0, (input.rotation * Math.PI) / 180, 0];
|
|
150
|
+
if (input.nodeId) {
|
|
151
|
+
if (nodes[input.nodeId]?.type === 'column')
|
|
152
|
+
refuse('use_column_tool', `Rebuild ${input.nodeId} with add_column and nodeId.`, {
|
|
153
|
+
id: input.nodeId,
|
|
154
|
+
type: 'column',
|
|
155
|
+
});
|
|
156
|
+
const previous = authoredObject(nodes, input.nodeId);
|
|
157
|
+
if (previous.type !== 'item')
|
|
158
|
+
refuse('use_opening_tool', `${previous.id} is a ${previous.type}: rebuild it with add_${previous.type} and nodeId.`, { id: previous.id, type: previous.type });
|
|
159
|
+
const slotIds = new Set(compiled.manifest.slots.map((slot) => slot.id));
|
|
160
|
+
const orphanedSlots = Object.keys(previous.slots ?? {}).filter((id) => !slotIds.has(id));
|
|
161
|
+
const next = ItemNode.parse({
|
|
162
|
+
...previous,
|
|
163
|
+
name: input.name ?? previous.name,
|
|
164
|
+
position: input.position ?? previous.position,
|
|
165
|
+
rotation: rotation ?? previous.rotation,
|
|
166
|
+
...(input.side === undefined ? {} : { side: input.side }),
|
|
167
|
+
source: scriptSource(compiled, itemSourceMeta(input), previous.source),
|
|
168
|
+
slots: matchScriptSlotsToLibrary(compiled.manifest, previous.slots, previous.source?.manifest),
|
|
169
|
+
asset: scriptAsset(compiled, input, previous.asset),
|
|
170
|
+
...(input.reason ? { metadata: { ...previous.metadata, reason: input.reason } } : {}),
|
|
171
|
+
});
|
|
172
|
+
// Children resting on or hanging from the object follow its new geometry.
|
|
173
|
+
const resettled = [];
|
|
174
|
+
for (const childId of previous.children) {
|
|
175
|
+
const child = nodes[childId];
|
|
176
|
+
if (child?.type !== 'item' || child.wallId)
|
|
177
|
+
continue;
|
|
178
|
+
const position = resettledPosition(compiled.manifest, child, next.scale);
|
|
179
|
+
if (!position || position.every((v, i) => Math.abs(v - child.position[i]) < 1e-4))
|
|
180
|
+
continue;
|
|
181
|
+
resettled.push({ id: child.id, position });
|
|
182
|
+
}
|
|
183
|
+
return {
|
|
184
|
+
result: {
|
|
185
|
+
...summary(next, compiled, orphanedSlots),
|
|
186
|
+
...(resettled.length > 0 ? { resettled: resettled.map((entry) => entry.id) } : {}),
|
|
187
|
+
},
|
|
188
|
+
changes: {
|
|
189
|
+
update: [
|
|
190
|
+
{ id: next.id, data: next },
|
|
191
|
+
...resettled.map(({ id, position }) => ({ id, data: { position } })),
|
|
192
|
+
],
|
|
193
|
+
},
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
const parent = input.parentId ? nodes[input.parentId] : targetLevel(nodes, {}, context);
|
|
197
|
+
if (!parent)
|
|
198
|
+
refuse('node_not_found', `Node not found: ${input.parentId}.`, { id: input.parentId });
|
|
199
|
+
const hosts = HOSTS[compiled.mount];
|
|
200
|
+
if (!hosts.includes(parent.type)) {
|
|
201
|
+
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 });
|
|
202
|
+
}
|
|
203
|
+
if (compiled.mount === 'floor' && parent.type === 'level')
|
|
204
|
+
refuseWallOrSlabShape(compiled, input);
|
|
205
|
+
requireAddObjectReason(input);
|
|
206
|
+
const asset = scriptAsset(compiled, input, undefined);
|
|
207
|
+
const node = ItemNode.parse({
|
|
208
|
+
object: 'node',
|
|
209
|
+
id: compiled.nodeId ?? generateId('item'),
|
|
210
|
+
type: 'item',
|
|
211
|
+
name: input.name ?? asset.name,
|
|
212
|
+
parentId: parent.id,
|
|
213
|
+
...(parent.type === 'wall' ? { wallId: parent.id, side: input.side ?? 'front' } : {}),
|
|
214
|
+
position: input.position ?? [0, 0, 0],
|
|
215
|
+
rotation: rotation ?? [0, 0, 0],
|
|
216
|
+
source: scriptSource(compiled, itemSourceMeta(input)),
|
|
217
|
+
slots: matchScriptSlotsToLibrary(compiled.manifest),
|
|
218
|
+
asset,
|
|
219
|
+
metadata: { reason: input.reason },
|
|
220
|
+
});
|
|
221
|
+
const hint = [
|
|
222
|
+
typeHint(input),
|
|
223
|
+
compiled.mount === 'floor' &&
|
|
224
|
+
wallSized(compiled) &&
|
|
225
|
+
`It has a wall's size: if it is a wall, add_wall builds it so rooms, openings and facades work with it.`,
|
|
226
|
+
]
|
|
227
|
+
.filter(Boolean)
|
|
228
|
+
.join(' ');
|
|
229
|
+
return {
|
|
230
|
+
result: { ...summary(node, compiled, []), ...(hint ? { hint } : {}) },
|
|
231
|
+
changes: { create: [{ node, parentId: parent.id }] },
|
|
232
|
+
};
|
|
233
|
+
};
|
|
234
|
+
/**
|
|
235
|
+
* `add_window` / `add_door` with a nodeId: a window or door built from (or
|
|
236
|
+
* given) a script, rebuilt from what the host compiled. Its size is what the
|
|
237
|
+
* script built; marks, hosting and the opening's own fields are kept.
|
|
238
|
+
*/
|
|
239
|
+
export const rescriptOpening = (nodes, input) => {
|
|
240
|
+
const { compiled } = input;
|
|
241
|
+
const previous = nodes[input.nodeId];
|
|
242
|
+
if (!previous)
|
|
243
|
+
refuse('node_not_found', `Node not found: ${input.nodeId}.`, { id: input.nodeId });
|
|
244
|
+
if (previous.type !== 'window' && previous.type !== 'door')
|
|
245
|
+
refuse('not_an_opening', `${input.nodeId} is a ${previous.type}, not a window or door.`, {
|
|
246
|
+
id: input.nodeId,
|
|
247
|
+
type: previous.type,
|
|
248
|
+
});
|
|
249
|
+
const slotIds = new Set(compiled.manifest.slots.map((slot) => slot.id));
|
|
250
|
+
const orphanedSlots = Object.keys(previous.slots ?? {}).filter((id) => !slotIds.has(id));
|
|
251
|
+
// A window or door keeps its place on the wall and its bottom edge; its size is what the script built.
|
|
252
|
+
if (compiled.mount !== 'wall')
|
|
253
|
+
refuse('wrong_mount', `A ${previous.type}'s script uses mount 'wall'.`, {
|
|
254
|
+
mount: compiled.mount,
|
|
255
|
+
});
|
|
256
|
+
const [width, height] = scriptedSize(compiled.manifest);
|
|
257
|
+
// Given a position, that is where it goes; otherwise its bottom edge stays put.
|
|
258
|
+
const [x, y, z] = previous.position;
|
|
259
|
+
const placed = input.position ?? [
|
|
260
|
+
x,
|
|
261
|
+
y - previous.height / 2 + height / 2,
|
|
262
|
+
z,
|
|
263
|
+
];
|
|
264
|
+
// A wider rebuild stays on its wall, as a new opening does.
|
|
265
|
+
const wall = previous.wallId ? nodes[previous.wallId] : undefined;
|
|
266
|
+
const wallLength = wall?.type === 'wall' ? Math.hypot(wall.end[0] - wall.start[0], wall.end[1] - wall.start[1]) : 0;
|
|
267
|
+
const position = wallLength >= width
|
|
268
|
+
? [Math.min(wallLength - width / 2, Math.max(width / 2, placed[0])), placed[1], placed[2]]
|
|
269
|
+
: placed;
|
|
270
|
+
return {
|
|
271
|
+
result: summary(previous, compiled, orphanedSlots),
|
|
272
|
+
changes: {
|
|
273
|
+
update: [
|
|
274
|
+
{
|
|
275
|
+
id: previous.id,
|
|
276
|
+
data: {
|
|
277
|
+
name: input.name ?? previous.name,
|
|
278
|
+
source: scriptSource(compiled, input, previous.source),
|
|
279
|
+
slots: matchScriptSlotsToLibrary(compiled.manifest, previous.slots, previous.source?.manifest),
|
|
280
|
+
width,
|
|
281
|
+
height,
|
|
282
|
+
position,
|
|
283
|
+
},
|
|
284
|
+
},
|
|
285
|
+
],
|
|
286
|
+
},
|
|
287
|
+
};
|
|
288
|
+
};
|
|
289
|
+
/**
|
|
290
|
+
* The param values a rebuild of `node` compiles with: its current ones under the
|
|
291
|
+
* edit's. The compile then keeps only what the module declares, clamps numbers to
|
|
292
|
+
* their new range and gives a param new to the code, or one whose type changed,
|
|
293
|
+
* its default. A node without a script just takes the edit's.
|
|
294
|
+
*/
|
|
295
|
+
export function editedScriptParams(node, params) {
|
|
296
|
+
return isScriptedNode(node) ? { ...node.source.params, ...params } : params;
|
|
297
|
+
}
|
|
298
|
+
/**
|
|
299
|
+
* The language a build of `node` runs in: new code's own (the node's when not
|
|
300
|
+
* given), and the stored script's for a params-only rebuild.
|
|
301
|
+
*/
|
|
302
|
+
export function editedScriptLanguage(node, input) {
|
|
303
|
+
const stored = isScriptedNode(node) ? node.source.language : 'three';
|
|
304
|
+
return input.code ? (input.language ?? stored) : stored;
|
|
305
|
+
}
|
|
306
|
+
/** The scripted node `get_source` and a params-only rebuild act on, or a refusal. */
|
|
307
|
+
export function authoredObject(nodes, nodeId) {
|
|
308
|
+
const node = nodes[nodeId];
|
|
309
|
+
if (!node)
|
|
310
|
+
refuse('node_not_found', `Node not found: ${nodeId}.`, { id: nodeId });
|
|
311
|
+
if (!isScriptedNode(node))
|
|
312
|
+
refuse('not_authored', `${nodeId} is a ${node.type} without a script; only objects, windows, doors and columns built from code have one.`, { id: nodeId, type: node.type });
|
|
313
|
+
return node;
|
|
314
|
+
}
|
|
315
|
+
/**
|
|
316
|
+
* Params are a script's values: without code, only a node already built from a
|
|
317
|
+
* script has one to rerun, so a new node, or one without a script, is refused.
|
|
318
|
+
*/
|
|
319
|
+
export function refuseParamsWithoutScript(nodes, input) {
|
|
320
|
+
if (!input.params || input.code)
|
|
321
|
+
return;
|
|
322
|
+
if (!input.nodeId)
|
|
323
|
+
refuse('not_authored', 'Pass code with params: they are values for its script.');
|
|
324
|
+
authoredObject(nodes, input.nodeId);
|
|
325
|
+
}
|
|
326
|
+
/** The native size a scripted window, door or column takes from what its script built. */
|
|
327
|
+
const SCRIPTED_SIZE = {
|
|
328
|
+
window: ['width', 'height'],
|
|
329
|
+
door: ['width', 'height'],
|
|
330
|
+
column: ['width', 'height', 'depth'],
|
|
331
|
+
};
|
|
332
|
+
/**
|
|
333
|
+
* Why a raw update (chat `update_node`, MCP `apply_patch`) may not write what a
|
|
334
|
+
* node's script owns, its `source` or the size it built, or null: the stored
|
|
335
|
+
* fields would no longer match the geometry. Restating the current value passes.
|
|
336
|
+
*/
|
|
337
|
+
export function scriptedFieldRefusal(node, data) {
|
|
338
|
+
if (!isScriptedNode(node))
|
|
339
|
+
return null;
|
|
340
|
+
const owned = ['source', ...(SCRIPTED_SIZE[node.type] ?? [])];
|
|
341
|
+
const current = node;
|
|
342
|
+
const fields = owned.filter((key) => key in data && JSON.stringify(data[key]) !== JSON.stringify(current[key]));
|
|
343
|
+
if (fields.length === 0)
|
|
344
|
+
return null;
|
|
345
|
+
const tool = node.type === 'item' ? 'add_object' : `add_${node.type}`;
|
|
346
|
+
return `${node.id} is built from a script, so ${fields.join(', ')} ${fields.length === 1 ? 'comes' : 'come'} from it: rebuild it with ${tool} with nodeId and params (get_source shows them); nothing was changed.`;
|
|
347
|
+
}
|
|
348
|
+
/** What `get_source` answers once the host has the module's text. */
|
|
349
|
+
export function readSourceResult(node, code) {
|
|
350
|
+
return {
|
|
351
|
+
nodeId: node.id,
|
|
352
|
+
type: node.type,
|
|
353
|
+
name: node.name,
|
|
354
|
+
language: node.source.language,
|
|
355
|
+
code,
|
|
356
|
+
params: node.source.manifest.params.map((spec) => ({
|
|
357
|
+
...spec,
|
|
358
|
+
value: node.source.params[spec.id] ?? spec.default,
|
|
359
|
+
})),
|
|
360
|
+
};
|
|
361
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { type LevelTargetInput } from './level-target.js';
|
|
2
|
+
import type { AgentOperation, SceneNodes } from './types.js';
|
|
3
|
+
type AddWallInput = LevelTargetInput & {
|
|
4
|
+
start: number[];
|
|
5
|
+
end: number[];
|
|
6
|
+
thickness?: number;
|
|
7
|
+
height?: number;
|
|
8
|
+
curveOffset?: number;
|
|
9
|
+
};
|
|
10
|
+
/** A level declared as the roof holds the roof, not rooms: walls and stairs stay off it. */
|
|
11
|
+
export declare function refuseRoofLevel(nodes: SceneNodes, levelId: string, what: string): void;
|
|
12
|
+
/** `add_wall`: one wall between two points, named as the editor names walls. */
|
|
13
|
+
export declare const addWall: AgentOperation<AddWallInput>;
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=add-wall.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add-wall.d.ts","sourceRoot":"","sources":["../../src/agent-operations/add-wall.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,gBAAgB,EAAe,MAAM,gBAAgB,CAAA;AAEnE,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAGzD,KAAK,YAAY,GAAG,gBAAgB,GAAG;IACrC,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,GAAG,EAAE,MAAM,EAAE,CAAA;IACb,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB,CAAA;AAED,4FAA4F;AAC5F,wBAAgB,eAAe,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAQ/E;AAED,gFAAgF;AAChF,eAAO,MAAM,OAAO,EAAE,cAAc,CAAC,YAAY,CAqChD,CAAA"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { refuse } from '../agent-tools/refusal.js';
|
|
2
|
+
import { WallNode } from '../schema/index.js';
|
|
3
|
+
import { normalizeWallCurveOffset } from '../systems/wall/wall-curve.js';
|
|
4
|
+
import { WALL_MIN_LENGTH } from '../systems/wall/wall-topology.js';
|
|
5
|
+
import { targetLevel } from './level-target.js';
|
|
6
|
+
import { levelRole } from './scene-queries.js';
|
|
7
|
+
/** A level declared as the roof holds the roof, not rooms: walls and stairs stay off it. */
|
|
8
|
+
export function refuseRoofLevel(nodes, levelId, what) {
|
|
9
|
+
const level = nodes[levelId];
|
|
10
|
+
if (level && levelRole(nodes, level).metadataRole === 'roof')
|
|
11
|
+
refuse('roof_level', `${levelId} is a roof level, not a storey: ${what} belongs on an occupied storey. Add one with add_level if the building needs it.`, { levelId });
|
|
12
|
+
}
|
|
13
|
+
/** `add_wall`: one wall between two points, named as the editor names walls. */
|
|
14
|
+
export const addWall = (nodes, input, context) => {
|
|
15
|
+
const level = targetLevel(nodes, input, context);
|
|
16
|
+
refuseRoofLevel(nodes, level.id, 'a wall');
|
|
17
|
+
const start = input.start;
|
|
18
|
+
const end = input.end;
|
|
19
|
+
const length = Math.hypot(end[0] - start[0], end[1] - start[1]);
|
|
20
|
+
if (length < WALL_MIN_LENGTH)
|
|
21
|
+
refuse('wall_too_short', `A wall from [${start}] to [${end}] is ${length.toFixed(3)} m long; the editor draws none shorter than ${WALL_MIN_LENGTH} m.`, { length });
|
|
22
|
+
const curveOffset = input.curveOffset
|
|
23
|
+
? normalizeWallCurveOffset({ start, end }, input.curveOffset)
|
|
24
|
+
: 0;
|
|
25
|
+
const walls = Object.values(nodes).filter((node) => node.type === 'wall').length;
|
|
26
|
+
const wall = WallNode.parse({
|
|
27
|
+
name: `Wall ${walls + 1}`,
|
|
28
|
+
parentId: level.id,
|
|
29
|
+
start,
|
|
30
|
+
end,
|
|
31
|
+
...(input.thickness === undefined ? {} : { thickness: input.thickness }),
|
|
32
|
+
...(input.height === undefined ? {} : { height: input.height }),
|
|
33
|
+
...(curveOffset ? { curveOffset } : {}),
|
|
34
|
+
});
|
|
35
|
+
return {
|
|
36
|
+
result: {
|
|
37
|
+
ok: true,
|
|
38
|
+
wallId: wall.id,
|
|
39
|
+
name: wall.name,
|
|
40
|
+
levelId: level.id,
|
|
41
|
+
length: Math.round(length * 1000) / 1000,
|
|
42
|
+
...(curveOffset ? { curveOffset } : {}),
|
|
43
|
+
message: `Added wall "${wall.name}" on ${level.name ?? level.id}`,
|
|
44
|
+
},
|
|
45
|
+
changes: { create: [{ node: wall, parentId: level.id }] },
|
|
46
|
+
};
|
|
47
|
+
};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { AnyNode } from '../schema/index.js';
|
|
2
|
+
import type { SceneChanges, SceneNodes } from './types.js';
|
|
3
|
+
/**
|
|
4
|
+
* The scene after an operation's changes, without a store: for checks and previews. Same order as
|
|
5
|
+
* the store's applyNodeChanges — updates, creates, then deletes — so an opening moved off a wall
|
|
6
|
+
* being replaced is no longer among that wall's children when it goes.
|
|
7
|
+
*/
|
|
8
|
+
export declare function applySceneChanges(nodes: SceneNodes, changes: SceneChanges | undefined): Record<string, AnyNode>;
|
|
9
|
+
/**
|
|
10
|
+
* Several operations' changes, in order, as one set that lands the scene where applying them one
|
|
11
|
+
* by one does — whether a surface applies creates, updates or deletes first: a batch is one undo
|
|
12
|
+
* step. Updates to a node the batch created are folded into its creation, and a node created then
|
|
13
|
+
* deleted never appears; updates only reach nodes that existed before, deletes come last.
|
|
14
|
+
*/
|
|
15
|
+
export declare function mergeSceneChanges(sets: readonly SceneChanges[]): Required<Omit<SceneChanges, 'materials'>> & Pick<SceneChanges, 'materials'>;
|
|
16
|
+
//# sourceMappingURL=apply-changes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apply-changes.d.ts","sourceRoot":"","sources":["../../src/agent-operations/apply-changes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAA6B,MAAM,WAAW,CAAA;AACnE,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAKvD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,UAAU,EACjB,OAAO,EAAE,YAAY,GAAG,SAAS,GAChC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAkCzB;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,CAwC7E"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
const childrenOf = (node) => node && 'children' in node && Array.isArray(node.children) ? node.children : null;
|
|
2
|
+
/**
|
|
3
|
+
* The scene after an operation's changes, without a store: for checks and previews. Same order as
|
|
4
|
+
* the store's applyNodeChanges — updates, creates, then deletes — so an opening moved off a wall
|
|
5
|
+
* being replaced is no longer among that wall's children when it goes.
|
|
6
|
+
*/
|
|
7
|
+
export function applySceneChanges(nodes, changes) {
|
|
8
|
+
const next = { ...nodes };
|
|
9
|
+
const setChildren = (parentId, edit) => {
|
|
10
|
+
const parent = parentId ? next[parentId] : undefined;
|
|
11
|
+
const children = childrenOf(parent);
|
|
12
|
+
if (parent && children)
|
|
13
|
+
next[parent.id] = { ...parent, children: edit(children) };
|
|
14
|
+
};
|
|
15
|
+
const detach = (parentId, id) => setChildren(parentId, (ids) => ids.filter((child) => child !== id));
|
|
16
|
+
const attach = (parentId, id) => setChildren(parentId, (ids) => (ids.includes(id) ? ids : [...ids, id]));
|
|
17
|
+
for (const { id, data } of changes?.update ?? []) {
|
|
18
|
+
const current = next[id];
|
|
19
|
+
if (!current)
|
|
20
|
+
continue;
|
|
21
|
+
if (data.parentId !== undefined && data.parentId !== current.parentId) {
|
|
22
|
+
detach(current.parentId, id);
|
|
23
|
+
attach(data.parentId, id);
|
|
24
|
+
}
|
|
25
|
+
next[id] = { ...current, ...data };
|
|
26
|
+
}
|
|
27
|
+
for (const { node, parentId } of changes?.create ?? []) {
|
|
28
|
+
next[node.id] = parentId ? { ...node, parentId } : node;
|
|
29
|
+
attach(parentId ?? node.parentId, node.id);
|
|
30
|
+
}
|
|
31
|
+
const remove = (id) => {
|
|
32
|
+
const node = next[id];
|
|
33
|
+
delete next[id];
|
|
34
|
+
for (const child of childrenOf(node) ?? [])
|
|
35
|
+
remove(child);
|
|
36
|
+
};
|
|
37
|
+
for (const id of changes?.delete ?? []) {
|
|
38
|
+
detach(next[id]?.parentId, id);
|
|
39
|
+
remove(id);
|
|
40
|
+
}
|
|
41
|
+
return next;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Several operations' changes, in order, as one set that lands the scene where applying them one
|
|
45
|
+
* by one does — whether a surface applies creates, updates or deletes first: a batch is one undo
|
|
46
|
+
* step. Updates to a node the batch created are folded into its creation, and a node created then
|
|
47
|
+
* deleted never appears; updates only reach nodes that existed before, deletes come last.
|
|
48
|
+
*/
|
|
49
|
+
export function mergeSceneChanges(sets) {
|
|
50
|
+
const created = new Map();
|
|
51
|
+
const updated = new Map();
|
|
52
|
+
const deleted = new Set();
|
|
53
|
+
const collections = {};
|
|
54
|
+
const materials = new Map();
|
|
55
|
+
const dropCreated = (id) => {
|
|
56
|
+
created.delete(id);
|
|
57
|
+
for (const [childId, entry] of [...created])
|
|
58
|
+
if ((entry.parentId ?? entry.node.parentId) === id)
|
|
59
|
+
dropCreated(childId);
|
|
60
|
+
};
|
|
61
|
+
for (const set of sets) {
|
|
62
|
+
Object.assign(collections, set.collections);
|
|
63
|
+
for (const material of set.materials ?? [])
|
|
64
|
+
materials.set(material.id, material);
|
|
65
|
+
for (const { id, data } of set.update ?? []) {
|
|
66
|
+
const entry = created.get(id);
|
|
67
|
+
if (entry)
|
|
68
|
+
created.set(id, {
|
|
69
|
+
node: { ...entry.node, ...data },
|
|
70
|
+
parentId: data.parentId ?? entry.parentId,
|
|
71
|
+
});
|
|
72
|
+
else
|
|
73
|
+
updated.set(id, { ...updated.get(id), ...data });
|
|
74
|
+
}
|
|
75
|
+
for (const entry of set.create ?? [])
|
|
76
|
+
created.set(entry.node.id, entry);
|
|
77
|
+
for (const id of set.delete ?? []) {
|
|
78
|
+
if (created.has(id)) {
|
|
79
|
+
dropCreated(id);
|
|
80
|
+
continue;
|
|
81
|
+
}
|
|
82
|
+
updated.delete(id);
|
|
83
|
+
deleted.add(id);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return {
|
|
87
|
+
...(materials.size ? { materials: [...materials.values()] } : {}),
|
|
88
|
+
create: [...created.values()],
|
|
89
|
+
update: [...updated].map(([id, data]) => ({ id, data })),
|
|
90
|
+
delete: [...deleted],
|
|
91
|
+
collections,
|
|
92
|
+
};
|
|
93
|
+
}
|