@pascal-app/core 1.0.4 → 1.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agent-operations/__fixtures__/add-object-cases.d.ts +102 -90
- package/dist/agent-operations/__fixtures__/add-object-cases.d.ts.map +1 -1
- package/dist/agent-operations/__fixtures__/add-object-cases.js +301 -1
- package/dist/agent-operations/__fixtures__/add-stair-cases.d.ts +3 -0
- package/dist/agent-operations/__fixtures__/add-stair-cases.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/add-stair-cases.js +176 -0
- package/dist/agent-operations/__fixtures__/build-room-cases.d.ts.map +1 -1
- package/dist/agent-operations/__fixtures__/build-room-cases.js +410 -40
- package/dist/agent-operations/__fixtures__/cases.d.ts +18 -3
- package/dist/agent-operations/__fixtures__/cases.d.ts.map +1 -1
- package/dist/agent-operations/__fixtures__/cases.js +183 -4
- package/dist/agent-operations/__fixtures__/corner-window-cases.d.ts +3 -0
- package/dist/agent-operations/__fixtures__/corner-window-cases.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/corner-window-cases.js +155 -0
- package/dist/agent-operations/__fixtures__/design-brief-cases.d.ts +14 -0
- package/dist/agent-operations/__fixtures__/design-brief-cases.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/design-brief-cases.js +709 -0
- package/dist/agent-operations/__fixtures__/finish-cases.d.ts +7 -0
- package/dist/agent-operations/__fixtures__/finish-cases.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/finish-cases.js +758 -0
- package/dist/agent-operations/__fixtures__/lot-info-cases.d.ts +3 -0
- package/dist/agent-operations/__fixtures__/lot-info-cases.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/lot-info-cases.js +370 -0
- package/dist/agent-operations/__fixtures__/merge-windows-cases.d.ts +3 -0
- package/dist/agent-operations/__fixtures__/merge-windows-cases.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/merge-windows-cases.js +321 -0
- package/dist/agent-operations/__fixtures__/native-materials.d.ts +2237 -0
- package/dist/agent-operations/__fixtures__/native-materials.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/native-materials.js +82 -0
- package/dist/agent-operations/__fixtures__/node-read-cases.d.ts +4 -0
- package/dist/agent-operations/__fixtures__/node-read-cases.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/node-read-cases.js +639 -0
- package/dist/agent-operations/__fixtures__/notation-cases.d.ts +24 -0
- package/dist/agent-operations/__fixtures__/notation-cases.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/notation-cases.js +356 -0
- package/dist/agent-operations/__fixtures__/place-items-cases.d.ts.map +1 -1
- package/dist/agent-operations/__fixtures__/place-items-cases.js +80 -2
- package/dist/agent-operations/__fixtures__/roof-bearing-cases.d.ts +19726 -0
- package/dist/agent-operations/__fixtures__/roof-bearing-cases.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/roof-bearing-cases.js +106 -0
- package/dist/agent-operations/__fixtures__/roof-cases.d.ts +9 -0
- package/dist/agent-operations/__fixtures__/roof-cases.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/roof-cases.js +382 -0
- package/dist/agent-operations/__fixtures__/room-cases.d.ts +2 -1
- package/dist/agent-operations/__fixtures__/room-cases.d.ts.map +1 -1
- package/dist/agent-operations/__fixtures__/room-cases.js +136 -1
- package/dist/agent-operations/__fixtures__/scene-check-cases.d.ts +4 -0
- package/dist/agent-operations/__fixtures__/scene-check-cases.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/scene-check-cases.js +417 -0
- package/dist/agent-operations/__fixtures__/search-assets-cases.d.ts.map +1 -1
- package/dist/agent-operations/__fixtures__/search-assets-cases.js +15 -3
- package/dist/agent-operations/__fixtures__/site-cases.d.ts +290 -0
- package/dist/agent-operations/__fixtures__/site-cases.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/site-cases.js +780 -0
- package/dist/agent-operations/__fixtures__/structure-cases.d.ts +1 -0
- package/dist/agent-operations/__fixtures__/structure-cases.d.ts.map +1 -1
- package/dist/agent-operations/__fixtures__/structure-cases.js +630 -3
- package/dist/agent-operations/__fixtures__/verify-scene-cases.d.ts +311 -1
- package/dist/agent-operations/__fixtures__/verify-scene-cases.d.ts.map +1 -1
- package/dist/agent-operations/__fixtures__/verify-scene-cases.js +59 -11
- package/dist/agent-operations/__fixtures__/view-assets-cases.d.ts +3 -0
- package/dist/agent-operations/__fixtures__/view-assets-cases.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/view-assets-cases.js +155 -0
- package/dist/agent-operations/__fixtures__/view-scene-cases.d.ts +50 -0
- package/dist/agent-operations/__fixtures__/view-scene-cases.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/view-scene-cases.js +425 -0
- package/dist/agent-operations/achieved.d.ts +5 -0
- package/dist/agent-operations/achieved.d.ts.map +1 -1
- package/dist/agent-operations/achieved.js +21 -1
- package/dist/agent-operations/add-column.d.ts.map +1 -1
- package/dist/agent-operations/add-column.js +3 -1
- package/dist/agent-operations/add-fence.d.ts +18 -0
- package/dist/agent-operations/add-fence.d.ts.map +1 -0
- package/dist/agent-operations/add-fence.js +48 -0
- package/dist/agent-operations/add-level.d.ts +4 -1
- package/dist/agent-operations/add-level.d.ts.map +1 -1
- package/dist/agent-operations/add-level.js +48 -12
- package/dist/agent-operations/add-object.d.ts +38 -9
- package/dist/agent-operations/add-object.d.ts.map +1 -1
- package/dist/agent-operations/add-object.js +172 -11
- package/dist/agent-operations/add-wall.d.ts +1 -3
- package/dist/agent-operations/add-wall.d.ts.map +1 -1
- package/dist/agent-operations/add-wall.js +35 -9
- package/dist/agent-operations/apply-changes.d.ts +7 -1
- package/dist/agent-operations/apply-changes.d.ts.map +1 -1
- package/dist/agent-operations/apply-changes.js +54 -22
- package/dist/agent-operations/apply-outcome.d.ts +6 -0
- package/dist/agent-operations/apply-outcome.d.ts.map +1 -1
- package/dist/agent-operations/apply-outcome.js +23 -8
- package/dist/agent-operations/asset-views.d.ts +75 -0
- package/dist/agent-operations/asset-views.d.ts.map +1 -0
- package/dist/agent-operations/asset-views.js +234 -0
- package/dist/agent-operations/author-scene.d.ts +157 -0
- package/dist/agent-operations/author-scene.d.ts.map +1 -0
- package/dist/agent-operations/author-scene.js +1076 -0
- package/dist/agent-operations/authored-scene-merge.d.ts +4 -0
- package/dist/agent-operations/authored-scene-merge.d.ts.map +1 -0
- package/dist/agent-operations/authored-scene-merge.js +96 -0
- package/dist/agent-operations/batch.d.ts +22 -0
- package/dist/agent-operations/batch.d.ts.map +1 -0
- package/dist/agent-operations/batch.js +104 -0
- package/dist/agent-operations/ceiling-object-observations.d.ts +31 -0
- package/dist/agent-operations/ceiling-object-observations.d.ts.map +1 -0
- package/dist/agent-operations/ceiling-object-observations.js +111 -0
- package/dist/agent-operations/corner-window.d.ts +19 -0
- package/dist/agent-operations/corner-window.d.ts.map +1 -0
- package/dist/agent-operations/corner-window.js +84 -0
- package/dist/agent-operations/create-roof.d.ts +32 -0
- package/dist/agent-operations/create-roof.d.ts.map +1 -0
- package/dist/agent-operations/create-roof.js +304 -0
- package/dist/agent-operations/create-room.d.ts +2 -0
- package/dist/agent-operations/create-room.d.ts.map +1 -1
- package/dist/agent-operations/create-room.js +73 -5
- package/dist/agent-operations/create-stair.d.ts +6 -28
- package/dist/agent-operations/create-stair.d.ts.map +1 -1
- package/dist/agent-operations/create-stair.js +187 -104
- package/dist/agent-operations/design-brief.d.ts +38 -0
- package/dist/agent-operations/design-brief.d.ts.map +1 -0
- package/dist/agent-operations/design-brief.js +300 -0
- package/dist/agent-operations/designs.d.ts +24 -0
- package/dist/agent-operations/designs.d.ts.map +1 -0
- package/dist/agent-operations/designs.js +48 -0
- package/dist/agent-operations/door-clearance.d.ts +16 -1
- package/dist/agent-operations/door-clearance.d.ts.map +1 -1
- package/dist/agent-operations/door-clearance.js +61 -4
- package/dist/agent-operations/duplicate-level.d.ts.map +1 -1
- package/dist/agent-operations/duplicate-level.js +2 -1
- package/dist/agent-operations/find-by-type.d.ts +14 -7
- package/dist/agent-operations/find-by-type.d.ts.map +1 -1
- package/dist/agent-operations/find-by-type.js +266 -43
- package/dist/agent-operations/furnish-room.d.ts +22 -1
- package/dist/agent-operations/furnish-room.d.ts.map +1 -1
- package/dist/agent-operations/furnish-room.js +66 -19
- package/dist/agent-operations/furniture-kind.d.ts +22 -0
- package/dist/agent-operations/furniture-kind.d.ts.map +1 -0
- package/dist/agent-operations/furniture-kind.js +69 -0
- package/dist/agent-operations/get-node.d.ts +5 -2
- package/dist/agent-operations/get-node.d.ts.map +1 -1
- package/dist/agent-operations/get-node.js +82 -10
- package/dist/agent-operations/hosted-services.d.ts +2 -1
- package/dist/agent-operations/hosted-services.d.ts.map +1 -1
- package/dist/agent-operations/index.d.ts +281 -69
- package/dist/agent-operations/index.d.ts.map +1 -1
- package/dist/agent-operations/index.js +66 -5
- package/dist/agent-operations/item-space.d.ts +22 -0
- package/dist/agent-operations/item-space.d.ts.map +1 -0
- package/dist/agent-operations/item-space.js +69 -0
- package/dist/agent-operations/layout-clearance.d.ts +52 -3
- package/dist/agent-operations/layout-clearance.d.ts.map +1 -1
- package/dist/agent-operations/layout-clearance.js +340 -30
- package/dist/agent-operations/level-height-fill.d.ts +12 -0
- package/dist/agent-operations/level-height-fill.d.ts.map +1 -0
- package/dist/agent-operations/level-height-fill.js +59 -0
- package/dist/agent-operations/level-reads.d.ts +5 -1
- package/dist/agent-operations/level-reads.d.ts.map +1 -1
- package/dist/agent-operations/level-reads.js +10 -3
- package/dist/agent-operations/list-levels.d.ts.map +1 -1
- package/dist/agent-operations/list-levels.js +23 -0
- package/dist/agent-operations/material-preset.d.ts.map +1 -1
- package/dist/agent-operations/material-preset.js +3 -9
- package/dist/agent-operations/material-refs.d.ts +7 -1
- package/dist/agent-operations/material-refs.d.ts.map +1 -1
- package/dist/agent-operations/material-refs.js +10 -5
- package/dist/agent-operations/merge-windows.d.ts +6 -0
- package/dist/agent-operations/merge-windows.d.ts.map +1 -0
- package/dist/agent-operations/merge-windows.js +27 -0
- package/dist/agent-operations/move-roofs.d.ts +9 -0
- package/dist/agent-operations/move-roofs.d.ts.map +1 -0
- package/dist/agent-operations/move-roofs.js +29 -0
- package/dist/agent-operations/paint.d.ts +2 -1
- package/dist/agent-operations/paint.d.ts.map +1 -1
- package/dist/agent-operations/paint.js +163 -53
- package/dist/agent-operations/photo-elevation.d.ts +155 -0
- package/dist/agent-operations/photo-elevation.d.ts.map +1 -0
- package/dist/agent-operations/photo-elevation.js +761 -0
- package/dist/agent-operations/place-in-room.d.ts +29 -0
- package/dist/agent-operations/place-in-room.d.ts.map +1 -0
- package/dist/agent-operations/place-in-room.js +403 -0
- package/dist/agent-operations/place-items.d.ts.map +1 -1
- package/dist/agent-operations/place-items.js +15 -2
- package/dist/agent-operations/plan-geometry.d.ts.map +1 -1
- package/dist/agent-operations/plan-geometry.js +3 -0
- package/dist/agent-operations/point-context.d.ts +139 -0
- package/dist/agent-operations/point-context.d.ts.map +1 -0
- package/dist/agent-operations/point-context.js +1 -0
- package/dist/agent-operations/project-files.d.ts +9 -0
- package/dist/agent-operations/project-files.d.ts.map +1 -0
- package/dist/agent-operations/project-files.js +25 -0
- package/dist/agent-operations/record-made.d.ts +18 -0
- package/dist/agent-operations/record-made.d.ts.map +1 -0
- package/dist/agent-operations/record-made.js +28 -0
- package/dist/agent-operations/roof-footprint.d.ts +24 -0
- package/dist/agent-operations/roof-footprint.d.ts.map +1 -0
- package/dist/agent-operations/roof-footprint.js +242 -0
- package/dist/agent-operations/roof-writes.d.ts +20 -0
- package/dist/agent-operations/roof-writes.d.ts.map +1 -0
- package/dist/agent-operations/roof-writes.js +165 -0
- package/dist/agent-operations/room-findings.d.ts +54 -0
- package/dist/agent-operations/room-findings.d.ts.map +1 -0
- package/dist/agent-operations/room-findings.js +143 -0
- package/dist/agent-operations/room-floor-script.d.ts +23 -0
- package/dist/agent-operations/room-floor-script.d.ts.map +1 -0
- package/dist/agent-operations/room-floor-script.js +54 -0
- package/dist/agent-operations/room-structure.d.ts +2 -2
- package/dist/agent-operations/room-structure.d.ts.map +1 -1
- package/dist/agent-operations/scene-checkpoint.d.ts +94 -0
- package/dist/agent-operations/scene-checkpoint.d.ts.map +1 -0
- package/dist/agent-operations/scene-checkpoint.js +176 -0
- package/dist/agent-operations/scene-queries.d.ts +3750 -3319
- package/dist/agent-operations/scene-queries.d.ts.map +1 -1
- package/dist/agent-operations/scene-queries.js +13 -23
- package/dist/agent-operations/scene-review.d.ts +52 -0
- package/dist/agent-operations/scene-review.d.ts.map +1 -0
- package/dist/agent-operations/scene-review.js +106 -0
- package/dist/agent-operations/scene-view.d.ts +82 -15
- package/dist/agent-operations/scene-view.d.ts.map +1 -1
- package/dist/agent-operations/scene-view.js +408 -51
- package/dist/agent-operations/search-assets.d.ts +2 -2
- package/dist/agent-operations/search-assets.d.ts.map +1 -1
- package/dist/agent-operations/search-assets.js +4 -3
- package/dist/agent-operations/search-materials.d.ts +9 -3
- package/dist/agent-operations/search-materials.d.ts.map +1 -1
- package/dist/agent-operations/search-materials.js +83 -29
- package/dist/agent-operations/set-checkpoint.d.ts +9 -0
- package/dist/agent-operations/set-checkpoint.d.ts.map +1 -0
- package/dist/agent-operations/set-checkpoint.js +31 -0
- package/dist/agent-operations/set-ground-level.d.ts +12 -0
- package/dist/agent-operations/set-ground-level.d.ts.map +1 -0
- package/dist/agent-operations/set-ground-level.js +61 -0
- package/dist/agent-operations/site.d.ts +21 -0
- package/dist/agent-operations/site.d.ts.map +1 -0
- package/dist/agent-operations/site.js +123 -0
- package/dist/agent-operations/types.d.ts +66 -7
- package/dist/agent-operations/types.d.ts.map +1 -1
- package/dist/agent-operations/verify-scene.d.ts +39 -5
- package/dist/agent-operations/verify-scene.d.ts.map +1 -1
- package/dist/agent-operations/verify-scene.js +223 -44
- package/dist/agent-operations/wall-face-script.d.ts +28 -0
- package/dist/agent-operations/wall-face-script.d.ts.map +1 -0
- package/dist/agent-operations/wall-face-script.js +62 -0
- package/dist/agent-operations/wall-object-observations.d.ts +41 -0
- package/dist/agent-operations/wall-object-observations.d.ts.map +1 -0
- package/dist/agent-operations/wall-object-observations.js +249 -0
- package/dist/agent-operations/wall-opening.d.ts +23 -23
- package/dist/agent-operations/wall-opening.d.ts.map +1 -1
- package/dist/agent-operations/wall-skirting.d.ts +24 -0
- package/dist/agent-operations/wall-skirting.d.ts.map +1 -0
- package/dist/agent-operations/wall-skirting.js +85 -0
- package/dist/agent-tools/add-object.d.ts +11 -7
- package/dist/agent-tools/add-object.d.ts.map +1 -1
- package/dist/agent-tools/add-object.js +17 -11
- package/dist/agent-tools/assets.d.ts +8 -0
- package/dist/agent-tools/assets.d.ts.map +1 -1
- package/dist/agent-tools/assets.js +13 -1
- package/dist/agent-tools/author-scene.d.ts +651 -0
- package/dist/agent-tools/author-scene.d.ts.map +1 -0
- package/dist/agent-tools/author-scene.js +252 -0
- package/dist/agent-tools/batch.d.ts +25 -0
- package/dist/agent-tools/batch.d.ts.map +1 -0
- package/dist/agent-tools/batch.js +61 -0
- package/dist/agent-tools/checkpoints.d.ts +13 -0
- package/dist/agent-tools/checkpoints.d.ts.map +1 -0
- package/dist/agent-tools/checkpoints.js +16 -0
- package/dist/agent-tools/clear-scene.d.ts.map +1 -1
- package/dist/agent-tools/collections.d.ts +6 -6
- package/dist/agent-tools/collections.d.ts.map +1 -1
- package/dist/agent-tools/columns.d.ts +18 -18
- package/dist/agent-tools/columns.js +2 -2
- package/dist/agent-tools/corner-window.d.ts +46 -0
- package/dist/agent-tools/corner-window.d.ts.map +1 -0
- package/dist/agent-tools/corner-window.js +47 -0
- package/dist/agent-tools/create-room.d.ts +26 -25
- package/dist/agent-tools/create-room.d.ts.map +1 -1
- package/dist/agent-tools/create-room.js +11 -4
- package/dist/agent-tools/design-brief.d.ts +408 -0
- package/dist/agent-tools/design-brief.d.ts.map +1 -0
- package/dist/agent-tools/design-brief.js +149 -0
- package/dist/agent-tools/designs.d.ts +34 -0
- package/dist/agent-tools/designs.d.ts.map +1 -0
- package/dist/agent-tools/designs.js +50 -0
- package/dist/agent-tools/fences.d.ts +28 -0
- package/dist/agent-tools/fences.d.ts.map +1 -0
- package/dist/agent-tools/fences.js +31 -0
- package/dist/agent-tools/find-by-type.d.ts +8 -1
- package/dist/agent-tools/find-by-type.d.ts.map +1 -1
- package/dist/agent-tools/find-by-type.js +23 -2
- package/dist/agent-tools/furnish-room.d.ts +10 -8
- package/dist/agent-tools/furnish-room.d.ts.map +1 -1
- package/dist/agent-tools/furnish-room.js +3 -1
- package/dist/agent-tools/hosted-services.d.ts +177 -141
- package/dist/agent-tools/hosted-services.d.ts.map +1 -1
- package/dist/agent-tools/hosted-services.js +47 -14
- package/dist/agent-tools/index.d.ts +894 -215
- package/dist/agent-tools/index.d.ts.map +1 -1
- package/dist/agent-tools/index.js +47 -3
- package/dist/agent-tools/levels.d.ts +11 -3
- package/dist/agent-tools/levels.d.ts.map +1 -1
- package/dist/agent-tools/levels.js +16 -5
- package/dist/agent-tools/measurement.d.ts +38 -20
- package/dist/agent-tools/measurement.d.ts.map +1 -1
- package/dist/agent-tools/measurement.js +117 -67
- package/dist/agent-tools/merge-windows.d.ts +10 -0
- package/dist/agent-tools/merge-windows.d.ts.map +1 -0
- package/dist/agent-tools/merge-windows.js +12 -0
- package/dist/agent-tools/nodes.d.ts.map +1 -1
- package/dist/agent-tools/nodes.js +1 -1
- package/dist/agent-tools/notation-inventory.d.ts +16 -0
- package/dist/agent-tools/notation-inventory.d.ts.map +1 -0
- package/dist/agent-tools/notation-inventory.js +105 -0
- package/dist/agent-tools/paint.d.ts +5 -5
- package/dist/agent-tools/paint.d.ts.map +1 -1
- package/dist/agent-tools/paint.js +1 -1
- package/dist/agent-tools/photo-elevation.d.ts +32 -0
- package/dist/agent-tools/photo-elevation.d.ts.map +1 -0
- package/dist/agent-tools/photo-elevation.js +73 -0
- package/dist/agent-tools/place-in-room.d.ts +35 -0
- package/dist/agent-tools/place-in-room.d.ts.map +1 -0
- package/dist/agent-tools/place-in-room.js +61 -0
- package/dist/agent-tools/place-items.d.ts +1 -1
- package/dist/agent-tools/place-items.js +2 -2
- package/dist/agent-tools/project-files.d.ts +189 -0
- package/dist/agent-tools/project-files.d.ts.map +1 -0
- package/dist/agent-tools/project-files.js +99 -0
- package/dist/agent-tools/refusal.d.ts.map +1 -1
- package/dist/agent-tools/retired.d.ts +21 -0
- package/dist/agent-tools/retired.d.ts.map +1 -0
- package/dist/agent-tools/retired.js +29 -0
- package/dist/agent-tools/roofs.d.ts +100 -0
- package/dist/agent-tools/roofs.d.ts.map +1 -0
- package/dist/agent-tools/roofs.js +96 -0
- package/dist/agent-tools/room-structure.d.ts +46 -38
- package/dist/agent-tools/room-structure.d.ts.map +1 -1
- package/dist/agent-tools/room-structure.js +30 -27
- package/dist/agent-tools/search-materials.d.ts +22 -3
- package/dist/agent-tools/search-materials.d.ts.map +1 -1
- package/dist/agent-tools/search-materials.js +13 -14
- package/dist/agent-tools/site.d.ts +27 -0
- package/dist/agent-tools/site.d.ts.map +1 -0
- package/dist/agent-tools/site.js +40 -0
- package/dist/agent-tools/sources.d.ts +12 -0
- package/dist/agent-tools/sources.d.ts.map +1 -0
- package/dist/agent-tools/sources.js +11 -0
- package/dist/agent-tools/stairs.d.ts +48 -28
- package/dist/agent-tools/stairs.d.ts.map +1 -1
- package/dist/agent-tools/stairs.js +65 -22
- package/dist/agent-tools/verify-scene.d.ts.map +1 -1
- package/dist/agent-tools/verify-scene.js +1 -1
- package/dist/agent-tools/view-scene.d.ts +50 -12
- package/dist/agent-tools/view-scene.d.ts.map +1 -1
- package/dist/agent-tools/view-scene.js +74 -31
- package/dist/agent-tools/wall-openings.d.ts +77 -73
- package/dist/agent-tools/wall-openings.d.ts.map +1 -1
- package/dist/agent-tools/wall-openings.js +9 -5
- package/dist/agent-tools/walls.d.ts +4 -4
- package/dist/agent-tools/walls.d.ts.map +1 -1
- package/dist/agent-tools/walls.js +7 -2
- package/dist/building/__fixtures__/wall-opening-cases.d.ts +454 -250
- package/dist/building/__fixtures__/wall-opening-cases.d.ts.map +1 -1
- package/dist/building/__fixtures__/wall-opening-cases.js +62 -2
- package/dist/building/corner-window.d.ts +56 -0
- package/dist/building/corner-window.d.ts.map +1 -0
- package/dist/building/corner-window.js +179 -0
- package/dist/building/ground-level.d.ts +26 -0
- package/dist/building/ground-level.d.ts.map +1 -0
- package/dist/building/ground-level.js +58 -0
- package/dist/building/index.d.ts +5 -0
- package/dist/building/index.d.ts.map +1 -1
- package/dist/building/index.js +5 -0
- package/dist/building/level-duplication.d.ts +7472 -6613
- package/dist/building/level-duplication.d.ts.map +1 -1
- package/dist/building/level-duplication.js +18 -4
- package/dist/building/level-insertion.d.ts +55 -0
- package/dist/building/level-insertion.d.ts.map +1 -0
- package/dist/building/level-insertion.js +35 -0
- package/dist/building/merge-windows.d.ts +58 -0
- package/dist/building/merge-windows.d.ts.map +1 -0
- package/dist/building/merge-windows.js +189 -0
- package/dist/building/opening-style-presets.d.ts +2 -2
- package/dist/building/opening-style-presets.d.ts.map +1 -1
- package/dist/building/photo-elevation.d.ts +125 -0
- package/dist/building/photo-elevation.d.ts.map +1 -0
- package/dist/building/photo-elevation.js +404 -0
- package/dist/building/wall-gaps.d.ts +13 -0
- package/dist/building/wall-gaps.d.ts.map +1 -0
- package/dist/building/wall-gaps.js +158 -0
- package/dist/building/wall-openings.d.ts +154 -119
- package/dist/building/wall-openings.d.ts.map +1 -1
- package/dist/building/wall-openings.js +37 -9
- package/dist/capture/schema.d.ts +22 -22
- package/dist/capture/source.d.ts.map +1 -1
- package/dist/capture/source.js +1 -1
- package/dist/commands/structure/create-zone.d.ts +12 -1
- package/dist/commands/structure/create-zone.d.ts.map +1 -1
- package/dist/commands/structure/create-zone.js +49 -0
- package/dist/commands/structure/divide-zone.d.ts +3 -3
- package/dist/commands/structure/index.d.ts +1 -1
- package/dist/commands/structure/index.d.ts.map +1 -1
- package/dist/commands/structure/index.js +1 -1
- package/dist/commands/structure/set-floor-foundation.d.ts +6 -6
- package/dist/commands/structure/set-zone-intent.d.ts +4 -0
- package/dist/commands/structure/set-zone-intent.d.ts.map +1 -1
- package/dist/commands/structure/set-zone-intent.js +19 -0
- package/dist/commands/structure/shared.d.ts +3642 -3213
- package/dist/commands/structure/shared.d.ts.map +1 -1
- package/dist/commands/structure/zone-wall-merge.d.ts +4149 -3334
- package/dist/commands/structure/zone-wall-merge.d.ts.map +1 -1
- package/dist/contracts/reference-inventory.d.ts.map +1 -1
- package/dist/contracts/reference-inventory.js +106 -26
- package/dist/events/bus.d.ts +22 -3
- package/dist/events/bus.d.ts.map +1 -1
- package/dist/events/capture-sessions.d.ts +5 -0
- package/dist/events/capture-sessions.d.ts.map +1 -0
- package/dist/events/capture-sessions.js +31 -0
- package/dist/hooks/scene-registry/scene-registry.d.ts.map +1 -1
- package/dist/hooks/spatial-grid/spatial-grid-manager.d.ts +1 -2
- package/dist/hooks/spatial-grid/spatial-grid-manager.d.ts.map +1 -1
- package/dist/hooks/spatial-grid/spatial-grid-manager.js +4 -6
- package/dist/hooks/spatial-grid/spatial-grid-sync.d.ts +3608 -3179
- package/dist/hooks/spatial-grid/spatial-grid-sync.d.ts.map +1 -1
- package/dist/hooks/spatial-grid/spatial-grid.d.ts.map +1 -1
- package/dist/hooks/spatial-grid/support-host-patch.d.ts.map +1 -1
- package/dist/hooks/spatial-grid/support-host-patch.js +11 -2
- package/dist/hooks/spatial-grid/use-spatial-query.d.ts +3 -3
- package/dist/hooks/spatial-grid/wall-spatial-grid.d.ts.map +1 -1
- package/dist/index.d.ts +37 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +36 -9
- package/dist/lib/__fixtures__/mezzanine.d.ts +11800 -10132
- package/dist/lib/__fixtures__/mezzanine.d.ts.map +1 -1
- package/dist/lib/absorb-wall-separators.d.ts +3642 -3213
- package/dist/lib/absorb-wall-separators.d.ts.map +1 -1
- package/dist/lib/angle-accumulator.d.ts.map +1 -1
- package/dist/lib/artifact-store.d.ts.map +1 -1
- package/dist/lib/below-grade-footprints.d.ts +65 -0
- package/dist/lib/below-grade-footprints.d.ts.map +1 -0
- package/dist/lib/below-grade-footprints.js +181 -0
- package/dist/lib/building-footprint.d.ts +33 -0
- package/dist/lib/building-footprint.d.ts.map +1 -0
- package/dist/lib/building-footprint.js +89 -0
- package/dist/lib/corner-pair.d.ts +1129 -0
- package/dist/lib/corner-pair.d.ts.map +1 -0
- package/dist/lib/corner-pair.js +130 -0
- package/dist/lib/corner-snap.d.ts +54 -0
- package/dist/lib/corner-snap.d.ts.map +1 -0
- package/dist/lib/corner-snap.js +125 -0
- package/dist/lib/critically-damped.d.ts +11 -0
- package/dist/lib/critically-damped.d.ts.map +1 -0
- package/dist/lib/critically-damped.js +14 -0
- package/dist/lib/deepest-drawn.d.ts +18 -0
- package/dist/lib/deepest-drawn.d.ts.map +1 -0
- package/dist/lib/deepest-drawn.js +65 -0
- package/dist/lib/door-operation.d.ts +1 -1
- package/dist/lib/exterior-wall-loops.d.ts +17 -0
- package/dist/lib/exterior-wall-loops.d.ts.map +1 -0
- package/dist/lib/exterior-wall-loops.js +334 -0
- package/dist/lib/finish-script.d.ts +61 -0
- package/dist/lib/finish-script.d.ts.map +1 -0
- package/dist/lib/finish-script.js +86 -0
- package/dist/lib/floor-intent-changes.d.ts.map +1 -1
- package/dist/lib/floor-intent-changes.js +4 -4
- package/dist/lib/floor-plate-paint.d.ts +3 -1
- package/dist/lib/floor-plate-paint.d.ts.map +1 -1
- package/dist/lib/floor-plate-paint.js +24 -4
- package/dist/lib/floor-plates.d.ts +50 -50
- package/dist/lib/floor-script.d.ts +24 -0
- package/dist/lib/floor-script.d.ts.map +1 -0
- package/dist/lib/floor-script.js +51 -0
- package/dist/lib/foundation-construction.d.ts +73 -0
- package/dist/lib/foundation-construction.d.ts.map +1 -0
- package/dist/lib/foundation-construction.js +242 -0
- package/dist/lib/foundation-standard.d.ts +30 -0
- package/dist/lib/foundation-standard.d.ts.map +1 -0
- package/dist/lib/foundation-standard.js +30 -0
- package/dist/lib/foundation-wall.d.ts +36 -0
- package/dist/lib/foundation-wall.d.ts.map +1 -0
- package/dist/lib/foundation-wall.js +66 -0
- package/dist/lib/generic-foundation.d.ts +40 -0
- package/dist/lib/generic-foundation.d.ts.map +1 -0
- package/dist/lib/generic-foundation.js +200 -0
- package/dist/lib/geometry-script-node.d.ts +32 -3
- package/dist/lib/geometry-script-node.d.ts.map +1 -1
- package/dist/lib/geometry-script-node.js +26 -0
- package/dist/lib/grade-standing.d.ts +38 -0
- package/dist/lib/grade-standing.d.ts.map +1 -0
- package/dist/lib/grade-standing.js +137 -0
- package/dist/lib/ground-level.d.ts +20 -0
- package/dist/lib/ground-level.d.ts.map +1 -0
- package/dist/lib/ground-level.js +49 -0
- package/dist/lib/ground-over-part.d.ts +13 -0
- package/dist/lib/ground-over-part.d.ts.map +1 -0
- package/dist/lib/ground-over-part.js +94 -0
- package/dist/lib/ground-seat.d.ts +47 -0
- package/dist/lib/ground-seat.d.ts.map +1 -0
- package/dist/lib/ground-seat.js +61 -0
- package/dist/lib/ground-window.d.ts +39 -0
- package/dist/lib/ground-window.d.ts.map +1 -0
- package/dist/lib/ground-window.js +147 -0
- package/dist/lib/opening-floor-datum.d.ts.map +1 -1
- package/dist/lib/opening-floor-datum.js +2 -3
- package/dist/lib/own-floor-intent.d.ts.map +1 -1
- package/dist/lib/own-floor-intent.js +4 -4
- package/dist/lib/plate-surface.d.ts.map +1 -1
- package/dist/lib/plate-surface.js +3 -1
- package/dist/lib/point-ask.d.ts +9 -0
- package/dist/lib/point-ask.d.ts.map +1 -0
- package/dist/lib/point-ask.js +36 -0
- package/dist/lib/room-drawn-floor.d.ts +1 -1
- package/dist/lib/room-drawn-floor.d.ts.map +1 -1
- package/dist/lib/room-floor-feasibility.d.ts.map +1 -1
- package/dist/lib/room-floor-feasibility.js +3 -3
- package/dist/lib/room-graph.d.ts.map +1 -1
- package/dist/lib/room-graph.js +2 -0
- package/dist/lib/room-name.d.ts +2 -0
- package/dist/lib/room-name.d.ts.map +1 -1
- package/dist/lib/room-name.js +2 -0
- package/dist/lib/room-topology-index.d.ts.map +1 -1
- package/dist/lib/room-topology-index.js +1 -1
- package/dist/lib/room-zone-adoption.d.ts.map +1 -1
- package/dist/lib/script-inputs-key.d.ts +3 -0
- package/dist/lib/script-inputs-key.d.ts.map +1 -0
- package/dist/lib/script-inputs-key.js +13 -0
- package/dist/lib/setback-envelope.d.ts +95 -5
- package/dist/lib/setback-envelope.d.ts.map +1 -1
- package/dist/lib/setback-envelope.js +351 -35
- package/dist/lib/site-flatwork.d.ts +11 -0
- package/dist/lib/site-flatwork.d.ts.map +1 -0
- package/dist/lib/site-flatwork.js +11 -0
- package/dist/lib/site-ground-height.d.ts +13 -0
- package/dist/lib/site-ground-height.d.ts.map +1 -0
- package/dist/lib/site-ground-height.js +16 -0
- package/dist/lib/site-placement.d.ts +362 -0
- package/dist/lib/site-placement.d.ts.map +1 -0
- package/dist/lib/site-placement.js +942 -0
- package/dist/lib/snap-ease.d.ts +20 -0
- package/dist/lib/snap-ease.d.ts.map +1 -0
- package/dist/lib/snap-ease.js +50 -0
- package/dist/lib/structure-kernel.d.ts +1 -1
- package/dist/lib/structure-kernel.d.ts.map +1 -1
- package/dist/lib/structure-kernel.js +2 -0
- package/dist/lib/surface-support-references.d.ts +4 -0
- package/dist/lib/surface-support-references.d.ts.map +1 -0
- package/dist/lib/surface-support-references.js +19 -0
- package/dist/lib/terrain-support-query.d.ts +10 -0
- package/dist/lib/terrain-support-query.d.ts.map +1 -1
- package/dist/lib/terrain-support-query.js +1 -1
- package/dist/lib/wall-face-script.d.ts +66 -0
- package/dist/lib/wall-face-script.d.ts.map +1 -0
- package/dist/lib/wall-face-script.js +235 -0
- package/dist/lib/zone-colors.d.ts +1 -1
- package/dist/lib/zone-colors.d.ts.map +1 -1
- package/dist/lib/zone-quantities.d.ts.map +1 -1
- package/dist/lib/zone-quantities.js +4 -5
- package/dist/material-kinds.d.ts +9 -0
- package/dist/material-kinds.d.ts.map +1 -0
- package/dist/material-kinds.js +30 -0
- package/dist/material-library.d.ts +4 -4
- package/dist/material-library.d.ts.map +1 -1
- package/dist/material-library.js +72 -26
- package/dist/node-slots/index.d.ts +1 -0
- package/dist/node-slots/index.d.ts.map +1 -1
- package/dist/node-slots/index.js +7 -1
- package/dist/node-slots/roof.d.ts +5 -0
- package/dist/node-slots/roof.d.ts.map +1 -0
- package/dist/node-slots/roof.js +12 -0
- package/dist/node-slots/stair.d.ts +2 -0
- package/dist/node-slots/stair.d.ts.map +1 -1
- package/dist/node-slots/stair.js +6 -2
- package/dist/procedural-items/design-placement.d.ts.map +1 -1
- package/dist/procedural-items/design.d.ts +19 -19
- package/dist/procedural-items/fixtures.d.ts +297 -297
- package/dist/procedural-items/fixtures.d.ts.map +1 -1
- package/dist/procedural-items/integration.d.ts +106 -106
- package/dist/procedural-items/joints.d.ts +4 -4
- package/dist/procedural-items/library-colors.d.ts +22 -22
- package/dist/procedural-items/library-colors.d.ts.map +1 -1
- package/dist/procedural-items/motion-controller.d.ts.map +1 -1
- package/dist/procedural-items/node.d.ts +291 -291
- package/dist/procedural-items/query.d.ts +1 -1
- package/dist/procedural-items/query.d.ts.map +1 -1
- package/dist/procedural-items/recipe.d.ts +11 -11
- package/dist/procedural-items/recipe.d.ts.map +1 -1
- package/dist/procedural-items/section.d.ts.map +1 -1
- package/dist/registry/index.d.ts +1 -1
- package/dist/registry/index.d.ts.map +1 -1
- package/dist/registry/scene-api.d.ts +1 -0
- package/dist/registry/scene-api.d.ts.map +1 -1
- package/dist/registry/scene-api.js +3 -0
- package/dist/registry/subtree.d.ts.map +1 -1
- package/dist/registry/subtree.js +2 -0
- package/dist/registry/types.d.ts +120 -1
- package/dist/registry/types.d.ts.map +1 -1
- package/dist/schema/assembly.d.ts +41 -41
- package/dist/schema/asset-url.d.ts +1 -1
- package/dist/schema/asset-url.d.ts.map +1 -1
- package/dist/schema/base.d.ts +9 -9
- package/dist/schema/base.d.ts.map +1 -1
- package/dist/schema/camera.d.ts +1 -1
- package/dist/schema/collection-templates.d.ts +20 -20
- package/dist/schema/collection-templates.d.ts.map +1 -1
- package/dist/schema/geometry-metadata.d.ts +7 -7
- package/dist/schema/geometry-metadata.d.ts.map +1 -1
- package/dist/schema/geometry-source.d.ts +26 -16
- package/dist/schema/geometry-source.d.ts.map +1 -1
- package/dist/schema/geometry-source.js +14 -0
- package/dist/schema/index.d.ts +10 -7
- package/dist/schema/index.d.ts.map +1 -1
- package/dist/schema/index.js +10 -7
- package/dist/schema/material.d.ts +33 -33
- package/dist/schema/nodes/barrel-roof.d.ts +3 -0
- package/dist/schema/nodes/barrel-roof.d.ts.map +1 -0
- package/dist/schema/nodes/barrel-roof.js +11 -0
- package/dist/schema/nodes/block.d.ts +8 -8
- package/dist/schema/nodes/box-vent.d.ts +13 -13
- package/dist/schema/nodes/building.d.ts +9 -8
- package/dist/schema/nodes/building.d.ts.map +1 -1
- package/dist/schema/nodes/building.js +2 -0
- package/dist/schema/nodes/cabinet.d.ts +130 -129
- package/dist/schema/nodes/cabinet.d.ts.map +1 -1
- package/dist/schema/nodes/cabinet.js +1 -1
- package/dist/schema/nodes/ceiling.d.ts +15 -15
- package/dist/schema/nodes/chimney.d.ts +23 -23
- package/dist/schema/nodes/column.d.ts +207 -199
- package/dist/schema/nodes/column.d.ts.map +1 -1
- package/dist/schema/nodes/column.js +2 -0
- package/dist/schema/nodes/construction-dimension.d.ts +34 -34
- package/dist/schema/nodes/cupola.d.ts +15 -15
- package/dist/schema/nodes/curtain-wall.d.ts +21 -20
- package/dist/schema/nodes/curtain-wall.d.ts.map +1 -1
- package/dist/schema/nodes/curtain-wall.js +23 -0
- package/dist/schema/nodes/door.d.ts +50 -43
- package/dist/schema/nodes/door.d.ts.map +1 -1
- package/dist/schema/nodes/door.js +19 -0
- package/dist/schema/nodes/dormer.d.ts +37 -36
- package/dist/schema/nodes/dormer.d.ts.map +1 -1
- package/dist/schema/nodes/downspout.d.ts +17 -17
- package/dist/schema/nodes/duct-fitting.d.ts +24 -24
- package/dist/schema/nodes/duct-segment.d.ts +14 -14
- package/dist/schema/nodes/duct-terminal.d.ts +12 -12
- package/dist/schema/nodes/elevator.d.ts +15 -15
- package/dist/schema/nodes/eyebrow-vent.d.ts +13 -13
- package/dist/schema/nodes/fence-feature.d.ts +37 -37
- package/dist/schema/nodes/fence-types.d.ts +32 -0
- package/dist/schema/nodes/fence-types.d.ts.map +1 -0
- package/dist/schema/nodes/fence-types.js +22 -0
- package/dist/schema/nodes/fence.d.ts +43 -72
- package/dist/schema/nodes/fence.d.ts.map +1 -1
- package/dist/schema/nodes/fence.js +4 -20
- package/dist/schema/nodes/floor-opening.d.ts +8 -8
- package/dist/schema/nodes/guide.d.ts +8 -8
- package/dist/schema/nodes/gutter.d.ts +14 -14
- package/dist/schema/nodes/gutter.d.ts.map +1 -1
- package/dist/schema/nodes/gutter.js +6 -5
- package/dist/schema/nodes/hvac-equipment.d.ts +13 -13
- package/dist/schema/nodes/imported-mesh.d.ts +8 -8
- package/dist/schema/nodes/item.d.ts +30 -25
- package/dist/schema/nodes/item.d.ts.map +1 -1
- package/dist/schema/nodes/lean-to-extension.d.ts +36 -36
- package/dist/schema/nodes/level.d.ts +9 -9
- package/dist/schema/nodes/lineset.d.ts +8 -8
- package/dist/schema/nodes/liquid-line.d.ts +8 -8
- package/dist/schema/nodes/measurement.d.ts +8 -8
- package/dist/schema/nodes/opening-types.d.ts +13 -13
- package/dist/schema/nodes/opening-types.d.ts.map +1 -1
- package/dist/schema/nodes/pipe-fitting.d.ts +15 -15
- package/dist/schema/nodes/pipe-segment.d.ts +11 -11
- package/dist/schema/nodes/pipe-trap.d.ts +9 -9
- package/dist/schema/nodes/ridge-vent.d.ts +14 -14
- package/dist/schema/nodes/ridge-vent.d.ts.map +1 -1
- package/dist/schema/nodes/ridge-vent.js +3 -1
- package/dist/schema/nodes/roof-glazing-config.d.ts +90 -0
- package/dist/schema/nodes/roof-glazing-config.d.ts.map +1 -0
- package/dist/schema/nodes/roof-glazing-config.js +34 -0
- package/dist/schema/nodes/roof-glazing.d.ts +57 -0
- package/dist/schema/nodes/roof-glazing.d.ts.map +1 -0
- package/dist/schema/nodes/roof-glazing.js +514 -0
- package/dist/schema/nodes/roof-segment-resize.d.ts +4 -0
- package/dist/schema/nodes/roof-segment-resize.d.ts.map +1 -0
- package/dist/schema/nodes/roof-segment-resize.js +21 -0
- package/dist/schema/nodes/roof-segment-shape.d.ts +5 -0
- package/dist/schema/nodes/roof-segment-shape.d.ts.map +1 -1
- package/dist/schema/nodes/roof-segment-shape.js +44 -0
- package/dist/schema/nodes/roof-segment-walls.d.ts +1 -1
- package/dist/schema/nodes/roof-segment-walls.d.ts.map +1 -1
- package/dist/schema/nodes/roof-segment-walls.js +24 -0
- package/dist/schema/nodes/roof-segment.d.ts +153 -46
- package/dist/schema/nodes/roof-segment.d.ts.map +1 -1
- package/dist/schema/nodes/roof-segment.js +91 -20
- package/dist/schema/nodes/roof-types.d.ts +14 -0
- package/dist/schema/nodes/roof-types.d.ts.map +1 -0
- package/dist/schema/nodes/roof-types.js +14 -0
- package/dist/schema/nodes/roof.d.ts +49 -49
- package/dist/schema/nodes/scan.d.ts +8 -8
- package/dist/schema/nodes/separator.d.ts +8 -8
- package/dist/schema/nodes/shelf.d.ts +16 -16
- package/dist/schema/nodes/site-facts.d.ts +64 -0
- package/dist/schema/nodes/site-facts.d.ts.map +1 -0
- package/dist/schema/nodes/site-facts.js +73 -0
- package/dist/schema/nodes/site.d.ts +105 -63
- package/dist/schema/nodes/site.d.ts.map +1 -1
- package/dist/schema/nodes/site.js +7 -70
- package/dist/schema/nodes/skylight.d.ts +41 -41
- package/dist/schema/nodes/skylight.d.ts.map +1 -1
- package/dist/schema/nodes/slab.d.ts +21 -21
- package/dist/schema/nodes/solar-panel.d.ts +21 -21
- package/dist/schema/nodes/spawn.d.ts +8 -8
- package/dist/schema/nodes/stair-construction.d.ts +3 -3
- package/dist/schema/nodes/stair-defaults.d.ts +16 -0
- package/dist/schema/nodes/stair-defaults.d.ts.map +1 -0
- package/dist/schema/nodes/stair-defaults.js +15 -0
- package/dist/schema/nodes/stair-segment.d.ts +22 -22
- package/dist/schema/nodes/stair-types.d.ts +29 -0
- package/dist/schema/nodes/stair-types.d.ts.map +1 -0
- package/dist/schema/nodes/stair-types.js +23 -0
- package/dist/schema/nodes/stair.d.ts +51 -75
- package/dist/schema/nodes/stair.d.ts.map +1 -1
- package/dist/schema/nodes/stair.js +6 -20
- package/dist/schema/nodes/structural-grid.d.ts +8 -8
- package/dist/schema/nodes/surface-hole-metadata.d.ts +2 -2
- package/dist/schema/nodes/turbine-vent.d.ts +13 -13
- package/dist/schema/nodes/unit.d.ts +10 -10
- package/dist/schema/nodes/unit.d.ts.map +1 -1
- package/dist/schema/nodes/wall.d.ts +479 -146
- package/dist/schema/nodes/wall.d.ts.map +1 -1
- package/dist/schema/nodes/wall.js +19 -0
- package/dist/schema/nodes/window.d.ts +55 -39
- package/dist/schema/nodes/window.d.ts.map +1 -1
- package/dist/schema/nodes/window.js +10 -0
- package/dist/schema/nodes/zone.d.ts +231 -12
- package/dist/schema/nodes/zone.d.ts.map +1 -1
- package/dist/schema/nodes/zone.js +10 -0
- package/dist/schema/provenance.d.ts +21 -21
- package/dist/schema/scene-material.d.ts +5 -5
- package/dist/schema/site-presentation.d.ts +100 -0
- package/dist/schema/site-presentation.d.ts.map +1 -0
- package/dist/schema/site-presentation.js +83 -0
- package/dist/schema/types.d.ts +1954 -1414
- package/dist/schema/types.d.ts.map +1 -1
- package/dist/services/__fixtures__/wall-plane-top-boundary-repro.d.ts.map +1 -1
- package/dist/services/index.d.ts +5 -1
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/index.js +5 -1
- package/dist/services/level-height.d.ts.map +1 -1
- package/dist/services/level-height.js +7 -3
- package/dist/services/port-connectivity.d.ts +4 -0
- package/dist/services/port-connectivity.d.ts.map +1 -1
- package/dist/services/port-connectivity.js +35 -0
- package/dist/services/project-file-sink.d.ts +9 -0
- package/dist/services/project-file-sink.d.ts.map +1 -0
- package/dist/services/project-file-sink.js +13 -0
- package/dist/services/roof-bearing.d.ts +62 -0
- package/dist/services/roof-bearing.d.ts.map +1 -0
- package/dist/services/roof-bearing.js +234 -0
- package/dist/services/roof-level.d.ts +121 -0
- package/dist/services/roof-level.d.ts.map +1 -0
- package/dist/services/roof-level.js +280 -0
- package/dist/services/roof-move.d.ts +83 -0
- package/dist/services/roof-move.d.ts.map +1 -0
- package/dist/services/roof-move.js +316 -0
- package/dist/services/stair-surface-snap.d.ts +14 -0
- package/dist/services/stair-surface-snap.d.ts.map +1 -0
- package/dist/services/stair-surface-snap.js +116 -0
- package/dist/services/storey-datum.d.ts +12 -0
- package/dist/services/storey-datum.d.ts.map +1 -0
- package/dist/services/storey-datum.js +18 -0
- package/dist/services/storey.d.ts +51 -5
- package/dist/services/storey.d.ts.map +1 -1
- package/dist/services/storey.js +125 -8
- package/dist/solar-panel-presets.d.ts +2 -2
- package/dist/store/actions/node-actions.d.ts +3613 -3182
- package/dist/store/actions/node-actions.d.ts.map +1 -1
- package/dist/store/actions/node-actions.js +46 -1
- package/dist/store/derived-node-guard.d.ts.map +1 -1
- package/dist/store/history-control.d.ts +39 -0
- package/dist/store/history-control.d.ts.map +1 -1
- package/dist/store/history-control.js +84 -4
- package/dist/store/scene-annotations.d.ts +7267 -6409
- package/dist/store/scene-annotations.d.ts.map +1 -1
- package/dist/store/scene-preview.d.ts +16 -0
- package/dist/store/scene-preview.d.ts.map +1 -0
- package/dist/store/scene-preview.js +144 -0
- package/dist/store/use-live-node-overrides.d.ts.map +1 -1
- package/dist/store/use-live-terrain.d.ts.map +1 -1
- package/dist/store/use-live-transforms.d.ts.map +1 -1
- package/dist/store/use-scene.d.ts.map +1 -1
- package/dist/store/use-scene.js +37 -4
- package/dist/systems/elevator/elevator-dispatch.js +1 -1
- package/dist/systems/fence/fence-features.d.ts.map +1 -1
- package/dist/systems/owned-floor-openings.d.ts.map +1 -1
- package/dist/systems/owned-floor-openings.js +24 -3
- package/dist/systems/roof/roof-elevation-system.d.ts.map +1 -1
- package/dist/systems/roof/roof-elevation-system.js +9 -3
- package/dist/systems/roof/roof-elevation.d.ts +5 -0
- package/dist/systems/roof/roof-elevation.d.ts.map +1 -1
- package/dist/systems/roof/roof-elevation.js +91 -62
- package/dist/systems/slab/__fixtures__/floor-step.d.ts +4623 -3516
- package/dist/systems/slab/__fixtures__/floor-step.d.ts.map +1 -1
- package/dist/systems/slab/__fixtures__/raised-room.d.ts +5149 -4076
- package/dist/systems/slab/__fixtures__/raised-room.d.ts.map +1 -1
- package/dist/systems/slab/slab-support.d.ts +6 -3
- package/dist/systems/slab/slab-support.d.ts.map +1 -1
- package/dist/systems/slab/slab-support.js +78 -10
- package/dist/systems/stair/stair-detail-budget.d.ts +2 -2
- package/dist/systems/stair/stair-detail-budget.d.ts.map +1 -1
- package/dist/systems/stair/stair-footprint.d.ts +6 -0
- package/dist/systems/stair/stair-footprint.d.ts.map +1 -1
- package/dist/systems/stair/stair-footprint.js +27 -14
- package/dist/systems/stair/stair-layout.d.ts +2 -2
- package/dist/systems/stair/stair-opening-preview.d.ts +3643 -3214
- package/dist/systems/stair/stair-opening-preview.d.ts.map +1 -1
- package/dist/systems/stair/stair-presets.d.ts +73 -65
- package/dist/systems/stair/stair-presets.d.ts.map +1 -1
- package/dist/systems/stair/stair-presets.js +16 -9
- package/dist/systems/stair/stair-rail-path.d.ts +1 -1
- package/dist/systems/stair/stair-rise-query.d.ts +16 -0
- package/dist/systems/stair/stair-rise-query.d.ts.map +1 -1
- package/dist/systems/stair/stair-rise-query.js +57 -7
- package/dist/systems/stair/stair-sizing.d.ts +101 -99
- package/dist/systems/stair/stair-sizing.d.ts.map +1 -1
- package/dist/systems/wall/wall-assembly.d.ts +11 -0
- package/dist/systems/wall/wall-assembly.d.ts.map +1 -1
- package/dist/systems/wall/wall-assembly.js +21 -0
- package/dist/systems/wall/wall-curve.d.ts +5 -0
- package/dist/systems/wall/wall-curve.d.ts.map +1 -1
- package/dist/systems/wall/wall-curve.js +13 -0
- package/dist/systems/wall/wall-frame.d.ts.map +1 -1
- package/dist/systems/wall/wall-frame.js +8 -0
- package/dist/systems/wall/wall-room-sides.d.ts +8 -0
- package/dist/systems/wall/wall-room-sides.d.ts.map +1 -1
- package/dist/systems/wall/wall-room-sides.js +60 -7
- package/dist/systems/wall/wall-top.d.ts +7 -4
- package/dist/systems/wall/wall-top.d.ts.map +1 -1
- package/dist/systems/wall/wall-top.js +14 -6
- package/dist/systems/wall/wall-topology.d.ts +4 -0
- package/dist/systems/wall/wall-topology.d.ts.map +1 -1
- package/dist/systems/wall/wall-topology.js +4 -2
- package/dist/systems/wall/wall-trim.d.ts +7 -0
- package/dist/systems/wall/wall-trim.d.ts.map +1 -0
- package/dist/systems/wall/wall-trim.js +10 -0
- package/dist/utils/clone-scene-graph.d.ts.map +1 -1
- package/dist/utils/clone-scene-graph.js +8 -0
- package/dist/utils/ensure-scene-openings.d.ts +7420 -6562
- package/dist/utils/ensure-scene-openings.d.ts.map +1 -1
- package/dist/utils/floor-piece-adoption.d.ts +2 -2
- package/dist/utils/floor-plate-migration.d.ts +3746 -3317
- package/dist/utils/floor-plate-migration.d.ts.map +1 -1
- package/dist/utils/floor-plate-migration.js +2 -2
- package/dist/utils/heal-scene-graph.d.ts +12 -0
- package/dist/utils/heal-scene-graph.d.ts.map +1 -1
- package/dist/utils/heal-scene-graph.js +40 -23
- package/dist/utils/legacy-wall-datums.d.ts.map +1 -1
- package/dist/utils/legacy-wall-datums.js +2 -2
- package/dist/utils/owned-floor-opening-migration.d.ts +3642 -3213
- package/dist/utils/owned-floor-opening-migration.d.ts.map +1 -1
- package/dist/utils/reconcile-structure-on-load.d.ts +3730 -7777
- package/dist/utils/reconcile-structure-on-load.d.ts.map +1 -1
- package/dist/utils/scene-migrations.d.ts +1 -1
- package/dist/utils/scene-migrations.d.ts.map +1 -1
- package/dist/utils/scene-migrations.js +1 -1
- package/dist/utils/semantic-equal.d.ts +3 -0
- package/dist/utils/semantic-equal.d.ts.map +1 -0
- package/dist/utils/semantic-equal.js +26 -0
- package/dist/utils/structure-id.d.ts.map +1 -1
- package/dist/utils/types.d.ts.map +1 -1
- package/dist/utils/wall-face-migration.d.ts +1 -1
- package/dist/utils/wall-face-migration.d.ts.map +1 -1
- package/package.json +36 -10
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
import { getOpeningWallCut, wallSupportForNodes } from '../lib/opening-floor-datum.js';
|
|
2
|
+
import { area, difference, intersection, union, } from '../lib/polygon-boolean.js';
|
|
3
|
+
import { boundsOf, boxCorners, frame, rotateVector, transformPoint, } from '../procedural-items/spatial.js';
|
|
4
|
+
import { getLevelElevations, getWallTop } from '../services/storey.js';
|
|
5
|
+
import { getWallBodyCenterOffset, getWallLocalFaceZ } from '../systems/wall/wall-frame.js';
|
|
6
|
+
const TOLERANCE = 0.001;
|
|
7
|
+
const MIN_FACE_AREA = 0.04;
|
|
8
|
+
const finiteVector = (v) => v.length === 3 && v.every(Number.isFinite);
|
|
9
|
+
const rectangle = (left, bottom, right, top) => [
|
|
10
|
+
[left, bottom],
|
|
11
|
+
[right, bottom],
|
|
12
|
+
[right, top],
|
|
13
|
+
[left, top],
|
|
14
|
+
];
|
|
15
|
+
function projectedHull(corners) {
|
|
16
|
+
const points = corners
|
|
17
|
+
.map(([x, y]) => [x, y])
|
|
18
|
+
.sort((a, b) => a[0] - b[0] || a[1] - b[1])
|
|
19
|
+
.filter((p, i, all) => !i || p[0] !== all[i - 1][0] || p[1] !== all[i - 1][1]);
|
|
20
|
+
const cross = (a, b, c) => (b[0] - a[0]) * (c[1] - a[1]) - (b[1] - a[1]) * (c[0] - a[0]);
|
|
21
|
+
const half = (input) => {
|
|
22
|
+
const hull = [];
|
|
23
|
+
for (const p of input) {
|
|
24
|
+
while (hull.length > 1 && cross(hull.at(-2), hull.at(-1), p) <= 0)
|
|
25
|
+
hull.pop();
|
|
26
|
+
hull.push(p);
|
|
27
|
+
}
|
|
28
|
+
hull.pop();
|
|
29
|
+
return hull;
|
|
30
|
+
};
|
|
31
|
+
return [...half(points), ...half([...points].reverse())];
|
|
32
|
+
}
|
|
33
|
+
function scriptGeometry(item, wall) {
|
|
34
|
+
const bounds = item.source?.manifest.bounds;
|
|
35
|
+
const assetScale = item.asset.scale ?? [1, 1, 1];
|
|
36
|
+
if (!bounds ||
|
|
37
|
+
item.source?.manifest.animations?.length ||
|
|
38
|
+
![
|
|
39
|
+
bounds.min,
|
|
40
|
+
bounds.max,
|
|
41
|
+
item.position,
|
|
42
|
+
item.rotation,
|
|
43
|
+
item.scale,
|
|
44
|
+
item.asset.offset,
|
|
45
|
+
item.asset.rotation,
|
|
46
|
+
assetScale,
|
|
47
|
+
].every(finiteVector) ||
|
|
48
|
+
bounds.min.some((v, axis) => v > bounds.max[axis]) ||
|
|
49
|
+
[...item.scale, ...assetScale].some((v) => v <= 0))
|
|
50
|
+
return;
|
|
51
|
+
const z = item.asset.attachTo === 'wall-side'
|
|
52
|
+
? getWallLocalFaceZ(wall, item.side === 'front' ? 'a' : 'b')
|
|
53
|
+
: item.position[2] + getWallBodyCenterOffset(wall);
|
|
54
|
+
const pose = frame([item.position[0], item.position[1], z], item.rotation);
|
|
55
|
+
const corners = boxCorners(bounds.min, bounds.max).map((point) => {
|
|
56
|
+
const rotated = rotateVector(point.map((v, axis) => v * assetScale[axis]), item.asset.rotation);
|
|
57
|
+
return transformPoint(pose, rotated.map((v, axis) => (v + item.asset.offset[axis]) * item.scale[axis]));
|
|
58
|
+
});
|
|
59
|
+
return corners.every(finiteVector) ? { corners, faces: [] } : undefined;
|
|
60
|
+
}
|
|
61
|
+
function wallSolid(wall, nodes) {
|
|
62
|
+
const support = wallSupportForNodes(wall, nodes).elevation;
|
|
63
|
+
const height = getWallTop(wall, wall.parentId, nodes, support) - support;
|
|
64
|
+
const length = Math.hypot(wall.end[0] - wall.start[0], wall.end[1] - wall.start[1]);
|
|
65
|
+
if (![height, length, support, wall.thickness ?? 0.1].every(Number.isFinite) ||
|
|
66
|
+
height <= 0 ||
|
|
67
|
+
length <= 0)
|
|
68
|
+
return;
|
|
69
|
+
const holes = [];
|
|
70
|
+
for (const child of Object.values(nodes)) {
|
|
71
|
+
if (child.parentId !== wall.id)
|
|
72
|
+
continue;
|
|
73
|
+
// Wall cutters have no persisted XY outline: their bounds cannot prove solid contact.
|
|
74
|
+
if ((child.type === 'item' || child.type === 'door' || child.type === 'window') &&
|
|
75
|
+
child.source?.manifest.cutout)
|
|
76
|
+
return;
|
|
77
|
+
if (child.type !== 'door' && child.type !== 'window')
|
|
78
|
+
continue;
|
|
79
|
+
const cut = getOpeningWallCut(wall, child, nodes);
|
|
80
|
+
// For shaped openings the enclosing rectangle conservatively withholds evidence.
|
|
81
|
+
holes.push(rectangle(child.position[0] - child.width / 2, cut.bottom - support, child.position[0] + child.width / 2, cut.top - support));
|
|
82
|
+
}
|
|
83
|
+
return difference(rectangle(0, 0, length, height), union(holes));
|
|
84
|
+
}
|
|
85
|
+
function facePatches(faces) {
|
|
86
|
+
const patches = [];
|
|
87
|
+
for (const face of faces) {
|
|
88
|
+
if (!finiteVector(face.normal) ||
|
|
89
|
+
!Number.isFinite(face.depth) ||
|
|
90
|
+
Math.abs(face.normal[2]) < 0.999 ||
|
|
91
|
+
face.polygon.length < 3 ||
|
|
92
|
+
face.polygon.some((p) => !p.every(Number.isFinite)))
|
|
93
|
+
continue;
|
|
94
|
+
const sign = Math.sign(face.normal[2]);
|
|
95
|
+
const existing = patches.find((patch) => patch.sign === sign && Math.abs(patch.depth - face.depth) < 1e-5);
|
|
96
|
+
if (existing)
|
|
97
|
+
existing.rings.push(face.polygon);
|
|
98
|
+
else
|
|
99
|
+
patches.push({ depth: face.depth, sign, rings: [face.polygon] });
|
|
100
|
+
}
|
|
101
|
+
return patches
|
|
102
|
+
.map(({ rings, ...patch }) => ({ ...patch, polygons: union(rings) }))
|
|
103
|
+
.filter((patch) => area(patch.polygons) >= MIN_FACE_AREA);
|
|
104
|
+
}
|
|
105
|
+
/** Bounds contact is not exact mesh intersection; rendered face patches are assessed only when supplied. */
|
|
106
|
+
export function wallObjectObservations(nodes, rendered = {}) {
|
|
107
|
+
const observations = [];
|
|
108
|
+
const elevations = getLevelElevations(nodes);
|
|
109
|
+
const solids = new Map();
|
|
110
|
+
const peers = [];
|
|
111
|
+
for (const item of Object.values(nodes)) {
|
|
112
|
+
if (item.type !== 'item' ||
|
|
113
|
+
!item.visible ||
|
|
114
|
+
item.roofSegmentId ||
|
|
115
|
+
item.blockFaceId ||
|
|
116
|
+
(item.asset.attachTo !== 'wall' && item.asset.attachTo !== 'wall-side') ||
|
|
117
|
+
item.source?.manifest.animations?.length ||
|
|
118
|
+
item.source?.manifest.cutout)
|
|
119
|
+
continue;
|
|
120
|
+
const wall = item.parentId ? nodes[item.parentId] : undefined;
|
|
121
|
+
const level = wall?.parentId ? nodes[wall.parentId] : undefined;
|
|
122
|
+
if (wall?.type !== 'wall' ||
|
|
123
|
+
!wall.visible ||
|
|
124
|
+
wall.curveOffset ||
|
|
125
|
+
level?.type !== 'level' ||
|
|
126
|
+
!level.visible ||
|
|
127
|
+
!finiteVector(item.rotation) ||
|
|
128
|
+
!finiteVector(item.scale) ||
|
|
129
|
+
item.scale.some((v) => v <= 0) ||
|
|
130
|
+
![...wall.start, ...wall.end, wall.thickness ?? 0.1, elevations.get(level.id)?.baseY].every(Number.isFinite) ||
|
|
131
|
+
(wall.thickness ?? 0.1) <= 0)
|
|
132
|
+
continue;
|
|
133
|
+
if (!solids.has(wall.id))
|
|
134
|
+
solids.set(wall.id, wallSolid(wall, nodes));
|
|
135
|
+
const solid = solids.get(wall.id);
|
|
136
|
+
const geometry = rendered[item.id] ?? scriptGeometry(item, wall);
|
|
137
|
+
// A wall-side item with no `side` is drawn on the back face (the item system and the plan
|
|
138
|
+
// symbols read `side === 'front' ? a : b`): observed where it is drawn.
|
|
139
|
+
const side = item.side === 'front' ? 'front' : 'back';
|
|
140
|
+
const sign = side === 'front' ? 1 : -1;
|
|
141
|
+
const hostFace = getWallLocalFaceZ(wall, sign > 0 ? 'a' : 'b');
|
|
142
|
+
const oppositeFace = getWallLocalFaceZ(wall, sign > 0 ? 'b' : 'a');
|
|
143
|
+
const evidence = {
|
|
144
|
+
itemId: item.id,
|
|
145
|
+
wallId: wall.id,
|
|
146
|
+
levelId: level.id,
|
|
147
|
+
side,
|
|
148
|
+
coordinateFrame: 'building',
|
|
149
|
+
evidence: geometry
|
|
150
|
+
? rendered[item.id]
|
|
151
|
+
? 'rendered_bounds'
|
|
152
|
+
: 'script_bounds'
|
|
153
|
+
: 'mount_orientation',
|
|
154
|
+
};
|
|
155
|
+
if (geometry?.corners.length && geometry.corners.every(finiteVector)) {
|
|
156
|
+
const local = boundsOf(geometry.corners);
|
|
157
|
+
const projection = projectedHull(geometry.corners);
|
|
158
|
+
const solidArea = solid ? area(intersection(projection, solid)) : undefined;
|
|
159
|
+
// Entirely in a cutout (or outside the finite host) is not wall contact evidence.
|
|
160
|
+
if (solidArea !== undefined && solidArea <= 1e-6)
|
|
161
|
+
continue;
|
|
162
|
+
const support = wallSupportForNodes(wall, nodes).elevation;
|
|
163
|
+
const wallPose = frame([wall.start[0], (elevations.get(level.id)?.baseY ?? 0) + support, wall.start[1]], [0, -Math.atan2(wall.end[1] - wall.start[1], wall.end[0] - wall.start[0]), 0]);
|
|
164
|
+
const world = boundsOf(geometry.corners.map((p) => transformPoint(wallPose, p)));
|
|
165
|
+
evidence.bounds = { min: world.min, max: world.max };
|
|
166
|
+
const overlap = Math.min(local.max[2], Math.max(hostFace, oppositeFace)) -
|
|
167
|
+
Math.max(local.min[2], Math.min(hostFace, oppositeFace));
|
|
168
|
+
if (solidArea !== undefined && overlap > TOLERANCE) {
|
|
169
|
+
observations.push({
|
|
170
|
+
...evidence,
|
|
171
|
+
type: 'item_wall_body_overlap',
|
|
172
|
+
overlapDepthMeters: overlap,
|
|
173
|
+
overlapAreaSquareMeters: solidArea,
|
|
174
|
+
toleranceMeters: TOLERANCE,
|
|
175
|
+
message: `Object ${item.id} transformed bounds overlap wall ${wall.id} body by ${overlap.toFixed(3)} m in depth over ${solidArea.toFixed(3)} m² in projection; bounds overlap is not an exact mesh intersection`,
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
const beyond = sign > 0 ? oppositeFace - local.min[2] : local.max[2] - oppositeFace;
|
|
179
|
+
if (solidArea !== undefined && beyond > TOLERANCE)
|
|
180
|
+
observations.push({
|
|
181
|
+
...evidence,
|
|
182
|
+
type: 'item_through_wall',
|
|
183
|
+
beyondOppositeFaceMeters: beyond,
|
|
184
|
+
toleranceMeters: TOLERANCE,
|
|
185
|
+
message: `Object ${item.id} transformed bounds extend ${beyond.toFixed(3)} m beyond the opposite face of wall ${wall.id}`,
|
|
186
|
+
});
|
|
187
|
+
const patches = facePatches(geometry.faces);
|
|
188
|
+
peers.push({ evidence, patches });
|
|
189
|
+
if (solid)
|
|
190
|
+
for (const patch of patches) {
|
|
191
|
+
// Opposed normals describe hidden back-to-wall contact, not two competing visible faces.
|
|
192
|
+
if (patch.sign !== sign || Math.abs(patch.depth - hostFace) > TOLERANCE)
|
|
193
|
+
continue;
|
|
194
|
+
const overlapArea = area(intersection(patch.polygons, solid));
|
|
195
|
+
if (overlapArea < MIN_FACE_AREA)
|
|
196
|
+
continue;
|
|
197
|
+
observations.push({
|
|
198
|
+
...evidence,
|
|
199
|
+
evidence: 'rendered_faces',
|
|
200
|
+
type: 'item_wall_coplanar_face',
|
|
201
|
+
overlapAreaSquareMeters: overlapArea,
|
|
202
|
+
separationMeters: Math.abs(patch.depth - hostFace),
|
|
203
|
+
toleranceMeters: TOLERANCE,
|
|
204
|
+
message: `Object ${item.id} has ${overlapArea.toFixed(3)} m² of rendered outward face within ${TOLERANCE} m of host wall ${wall.id} face; coplanar visible faces can depth-fight`,
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
if (item.source && !finiteVector(item.asset.rotation))
|
|
209
|
+
continue;
|
|
210
|
+
const correctedFront = item.source
|
|
211
|
+
? rotateVector([0, 0, 1], item.asset.rotation)
|
|
212
|
+
: [0, 0, 1];
|
|
213
|
+
const front = rotateVector(correctedFront.map((v, axis) => v * item.scale[axis]), item.rotation);
|
|
214
|
+
const dot = (front[2] * sign) / Math.hypot(...front);
|
|
215
|
+
if (dot < -0.5)
|
|
216
|
+
observations.push({
|
|
217
|
+
...evidence,
|
|
218
|
+
type: 'item_faces_wall',
|
|
219
|
+
evidence: 'mount_orientation',
|
|
220
|
+
frontDotOutward: dot,
|
|
221
|
+
message: `Object ${item.id} mounted on wall ${wall.id} ${side} side has its corrected +Z front toward the wall (front·outward ${dot.toFixed(3)})`,
|
|
222
|
+
});
|
|
223
|
+
}
|
|
224
|
+
for (let i = 0; i < peers.length; i++)
|
|
225
|
+
for (const other of peers.slice(i + 1)) {
|
|
226
|
+
const item = peers[i];
|
|
227
|
+
if (item.evidence.wallId !== other.evidence.wallId)
|
|
228
|
+
continue;
|
|
229
|
+
for (const a of item.patches)
|
|
230
|
+
for (const b of other.patches) {
|
|
231
|
+
if (a.sign !== b.sign || Math.abs(a.depth - b.depth) > TOLERANCE)
|
|
232
|
+
continue;
|
|
233
|
+
const overlap = area(intersection(a.polygons, b.polygons));
|
|
234
|
+
if (overlap < MIN_FACE_AREA)
|
|
235
|
+
continue;
|
|
236
|
+
observations.push({
|
|
237
|
+
...item.evidence,
|
|
238
|
+
evidence: 'rendered_faces',
|
|
239
|
+
type: 'item_wall_object_coplanar_face',
|
|
240
|
+
otherItemId: other.evidence.itemId,
|
|
241
|
+
overlapAreaSquareMeters: overlap,
|
|
242
|
+
separationMeters: Math.abs(a.depth - b.depth),
|
|
243
|
+
toleranceMeters: TOLERANCE,
|
|
244
|
+
message: `Wall-mounted objects ${item.evidence.itemId} and ${other.evidence.itemId} have ${overlap.toFixed(3)} m² of same-facing rendered faces within ${TOLERANCE} m; coplanar visible faces can depth-fight`,
|
|
245
|
+
});
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
return observations;
|
|
249
|
+
}
|
|
@@ -8,29 +8,29 @@ import type { SceneChanges, SceneNodes } from './types.js';
|
|
|
8
8
|
export declare function addWallOpening(nodes: SceneNodes, input: WallOpeningInput): {
|
|
9
9
|
changes: SceneChanges;
|
|
10
10
|
result: {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
sillHeight?: number | undefined;
|
|
11
|
+
ok: true;
|
|
12
|
+
doorId: `door_${string}` | `window_${string}`;
|
|
14
13
|
wallId: string;
|
|
15
14
|
localX: number;
|
|
16
15
|
t: number;
|
|
17
16
|
wallLength: number;
|
|
18
17
|
clamped: boolean;
|
|
19
|
-
coordinateSystem:
|
|
20
|
-
|
|
21
|
-
ok: true;
|
|
22
|
-
} | {
|
|
18
|
+
coordinateSystem: 'wall-local-meters';
|
|
19
|
+
sillHeight?: number | undefined;
|
|
23
20
|
message: string;
|
|
24
21
|
achieved: Achieved;
|
|
25
|
-
|
|
22
|
+
} | {
|
|
23
|
+
ok: true;
|
|
24
|
+
windowId: `door_${string}` | `window_${string}`;
|
|
26
25
|
wallId: string;
|
|
27
26
|
localX: number;
|
|
28
27
|
t: number;
|
|
29
28
|
wallLength: number;
|
|
30
29
|
clamped: boolean;
|
|
31
|
-
coordinateSystem:
|
|
32
|
-
|
|
33
|
-
|
|
30
|
+
coordinateSystem: 'wall-local-meters';
|
|
31
|
+
sillHeight?: number | undefined;
|
|
32
|
+
message: string;
|
|
33
|
+
achieved: Achieved;
|
|
34
34
|
};
|
|
35
35
|
};
|
|
36
36
|
/**
|
|
@@ -38,28 +38,28 @@ export declare function addWallOpening(nodes: SceneNodes, input: WallOpeningInpu
|
|
|
38
38
|
* read from where it stands after the rebuild, with what the script reported.
|
|
39
39
|
*/
|
|
40
40
|
export declare function rebuiltOpeningResult(nodesAfter: SceneNodes, nodeId: string, summary: Record<string, unknown>, achieved: Achieved): {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
sillHeight?: number | undefined;
|
|
41
|
+
ok: true;
|
|
42
|
+
doorId: string;
|
|
44
43
|
wallId: string;
|
|
45
44
|
localX: number;
|
|
46
45
|
t: number;
|
|
47
46
|
wallLength: number;
|
|
48
47
|
clamped: boolean;
|
|
49
|
-
coordinateSystem:
|
|
50
|
-
doorId: string;
|
|
51
|
-
ok: true;
|
|
52
|
-
} | {
|
|
53
|
-
achieved: Achieved;
|
|
54
|
-
message: string;
|
|
48
|
+
coordinateSystem: 'wall-local-meters';
|
|
55
49
|
sillHeight?: number | undefined;
|
|
50
|
+
message: string;
|
|
51
|
+
achieved: Achieved;
|
|
52
|
+
} | {
|
|
53
|
+
ok: true;
|
|
54
|
+
windowId: string;
|
|
56
55
|
wallId: string;
|
|
57
56
|
localX: number;
|
|
58
57
|
t: number;
|
|
59
58
|
wallLength: number;
|
|
60
59
|
clamped: boolean;
|
|
61
|
-
coordinateSystem:
|
|
62
|
-
|
|
63
|
-
|
|
60
|
+
coordinateSystem: 'wall-local-meters';
|
|
61
|
+
sillHeight?: number | undefined;
|
|
62
|
+
message: string;
|
|
63
|
+
achieved: Achieved;
|
|
64
64
|
};
|
|
65
65
|
//# sourceMappingURL=wall-opening.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wall-opening.d.ts","sourceRoot":"","sources":["../../src/agent-operations/wall-opening.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AAClF,OAAO,EAAE,KAAK,QAAQ,EAAmB,MAAM,YAAY,CAAA;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAEvD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,gBAAgB
|
|
1
|
+
{"version":3,"file":"wall-opening.d.ts","sourceRoot":"","sources":["../../src/agent-operations/wall-opening.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AAClF,OAAO,EAAE,KAAK,QAAQ,EAAmB,MAAM,YAAY,CAAA;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAEvD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,gBAAgB;;;;;;;;;;0BAejD,mBAAmB;;;;;;;;;;;;0BAAnB,mBAAmB;;;;;EAM1C;AAUD;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,QAAQ,EAAE,QAAQ;;;;;;;;sBAkBE,mBAAmB;;;;;;;;;;;;sBAAnB,mBAAmB;;;;EAMxC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { type WallTrimProfile } from '../schema/index.js';
|
|
2
|
+
import type { AgentOperation } from './types.js';
|
|
3
|
+
export type SetWallSkirtingInput = {
|
|
4
|
+
wallIds: string[];
|
|
5
|
+
/** False hides the skirting and keeps its settings; absent or true shows it. */
|
|
6
|
+
enabled?: boolean;
|
|
7
|
+
/** Metres up the face from its base. */
|
|
8
|
+
height?: number;
|
|
9
|
+
/** Metres it stands proud of the face (stored as `proud`). */
|
|
10
|
+
depth?: number;
|
|
11
|
+
profile?: WallTrimProfile;
|
|
12
|
+
/** The faces it runs along; absent, the faces a room stands on. */
|
|
13
|
+
faces?: 'a' | 'b' | 'both';
|
|
14
|
+
/** A `library:` / `scene:` ref or a `#rrggbb` colour, painted as `paint` paints it; absent keeps the skirting's finish. */
|
|
15
|
+
finish?: string;
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* `setWallSkirting`: a wall's skirting (baseboard) shown, sized and finished in one write, the one
|
|
19
|
+
* the wall panel makes. It is a property of the wall, so it follows the wall wherever the wall
|
|
20
|
+
* goes, steps with its base and breaks at its doors and floor-length openings. The finish is the
|
|
21
|
+
* skirting slot of each face it runs along, painted through `paint`.
|
|
22
|
+
*/
|
|
23
|
+
export declare const setWallSkirting: AgentOperation<SetWallSkirtingInput>;
|
|
24
|
+
//# sourceMappingURL=wall-skirting.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wall-skirting.d.ts","sourceRoot":"","sources":["../../src/agent-operations/wall-skirting.ts"],"names":[],"mappings":"AACA,OAAO,EAML,KAAK,eAAe,EACrB,MAAM,WAAW,CAAA;AAIlB,OAAO,KAAK,EAAE,cAAc,EAA4B,MAAM,SAAS,CAAA;AAEvE,MAAM,MAAM,oBAAoB,GAAG;IACjC,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,gFAAgF;IAChF,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,wCAAwC;IACxC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,8DAA8D;IAC9D,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,eAAe,CAAA;IACzB,mEAAmE;IACnE,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,MAAM,CAAA;IAC1B,2HAA2H;IAC3H,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AA0BD;;;;;GAKG;AACH,eAAO,MAAM,eAAe,EAAE,cAAc,CAAC,oBAAoB,CA6DhE,CAAA"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { refuse } from '../agent-tools/refusal.js';
|
|
2
|
+
import { getWallTrimFaces, getWallTrimSlotId, } from '../schema/index.js';
|
|
3
|
+
import { roomFaceCover } from '../systems/wall/wall-room-sides.js';
|
|
4
|
+
import { wallTrimPatch } from '../systems/wall/wall-trim.js';
|
|
5
|
+
import { paint } from './paint.js';
|
|
6
|
+
/**
|
|
7
|
+
* The faces a wall's skirting runs along when none are named: those a room stands on, else those
|
|
8
|
+
* its stored sides call interior. A wall with neither is refused, so the caller names its faces.
|
|
9
|
+
*/
|
|
10
|
+
function roomFaces(nodes, wall) {
|
|
11
|
+
const cover = roomFaceCover(nodes, wall.id);
|
|
12
|
+
const faces = ['a', 'b'].filter((face) => cover[face] !== 'none');
|
|
13
|
+
if (faces.length)
|
|
14
|
+
return faces;
|
|
15
|
+
const interior = ['a', 'b'].filter((face) => (face === 'a' ? wall.frontSide : wall.backSide) === 'interior');
|
|
16
|
+
if (interior.length)
|
|
17
|
+
return interior;
|
|
18
|
+
refuse('side_unknown', `Wall ${wall.id} has no room on either face: name the faces its skirting runs along, a, b or both.`, { target: wall.id });
|
|
19
|
+
}
|
|
20
|
+
const positive = (value, field) => {
|
|
21
|
+
if (value !== undefined && !(Number.isFinite(value) && value > 0))
|
|
22
|
+
refuse('invalid_size', `A skirting's ${field} is a length above 0 m.`, { field });
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* `setWallSkirting`: a wall's skirting (baseboard) shown, sized and finished in one write, the one
|
|
26
|
+
* the wall panel makes. It is a property of the wall, so it follows the wall wherever the wall
|
|
27
|
+
* goes, steps with its base and breaks at its doors and floor-length openings. The finish is the
|
|
28
|
+
* skirting slot of each face it runs along, painted through `paint`.
|
|
29
|
+
*/
|
|
30
|
+
export const setWallSkirting = (nodes, input, context) => {
|
|
31
|
+
positive(input.height, 'height');
|
|
32
|
+
positive(input.depth, 'depth');
|
|
33
|
+
const scratch = { ...nodes };
|
|
34
|
+
const walls = [];
|
|
35
|
+
for (const id of new Set(input.wallIds)) {
|
|
36
|
+
const wall = nodes[id];
|
|
37
|
+
if (wall?.type !== 'wall')
|
|
38
|
+
refuse('target_not_found', `${id} is not a wall in the scene: nothing was changed.`, {
|
|
39
|
+
target: id,
|
|
40
|
+
});
|
|
41
|
+
if (wall.wallType === 'curtain')
|
|
42
|
+
refuse('curtain_wall', `Wall ${id} is a curtain wall: it has no skirting.`, { target: id });
|
|
43
|
+
const faces = input.faces === undefined ? roomFaces(nodes, wall) : getWallTrimFaces(input.faces);
|
|
44
|
+
const { skirting } = wallTrimPatch(wall, 'skirting', {
|
|
45
|
+
enabled: input.enabled ?? true,
|
|
46
|
+
sides: faces.length === 2 ? 'both' : faces[0],
|
|
47
|
+
...(input.height === undefined ? {} : { height: input.height }),
|
|
48
|
+
...(input.depth === undefined ? {} : { proud: input.depth }),
|
|
49
|
+
...(input.profile === undefined ? {} : { profile: input.profile }),
|
|
50
|
+
});
|
|
51
|
+
scratch[id] = { ...wall, skirting };
|
|
52
|
+
walls.push({ id, faces, height: skirting.height, depth: skirting.proud });
|
|
53
|
+
}
|
|
54
|
+
let note;
|
|
55
|
+
if (input.finish !== undefined) {
|
|
56
|
+
const finish = /^#[0-9a-fA-F]{6}$/.test(input.finish)
|
|
57
|
+
? { color: input.finish }
|
|
58
|
+
: { material: input.finish };
|
|
59
|
+
for (const face of ['a', 'b']) {
|
|
60
|
+
const targets = walls.filter((wall) => wall.faces.includes(face)).map((wall) => wall.id);
|
|
61
|
+
if (!targets.length)
|
|
62
|
+
continue;
|
|
63
|
+
const painted = paint(scratch, { targets, role: getWallTrimSlotId(face, 'skirting'), ...finish }, context);
|
|
64
|
+
for (const { id, data } of painted.changes?.update ?? [])
|
|
65
|
+
scratch[id] = { ...scratch[id], ...data };
|
|
66
|
+
note ??= painted.result.note;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
const update = Object.keys(scratch).flatMap((id) => {
|
|
70
|
+
const [before, after] = [
|
|
71
|
+
nodes[id],
|
|
72
|
+
scratch[id],
|
|
73
|
+
];
|
|
74
|
+
if (before === after)
|
|
75
|
+
return [];
|
|
76
|
+
const data = Object.fromEntries(Object.keys(after)
|
|
77
|
+
.filter((key) => JSON.stringify(before[key]) !== JSON.stringify(after[key]))
|
|
78
|
+
.map((key) => [key, after[key]]));
|
|
79
|
+
return Object.keys(data).length ? [{ id, data: data }] : [];
|
|
80
|
+
});
|
|
81
|
+
return {
|
|
82
|
+
result: { ok: true, walls, ...(note ? { note } : {}) },
|
|
83
|
+
changes: { update },
|
|
84
|
+
};
|
|
85
|
+
};
|
|
@@ -3,33 +3,33 @@ import { z } from 'zod';
|
|
|
3
3
|
export declare const scriptParams: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodNumber, z.ZodBoolean, z.ZodString]>>>;
|
|
4
4
|
/** The `language` field every scripted tool shares. */
|
|
5
5
|
export declare const scriptLanguage: z.ZodOptional<z.ZodEnum<{
|
|
6
|
-
three: "three";
|
|
7
6
|
bpy: "bpy";
|
|
7
|
+
three: "three";
|
|
8
8
|
}>>;
|
|
9
9
|
export declare const addObjectTool: {
|
|
10
10
|
name: string;
|
|
11
11
|
title: string;
|
|
12
12
|
description: string;
|
|
13
13
|
input: {
|
|
14
|
-
name: z.ZodOptional<z.ZodString>;
|
|
15
|
-
category: z.ZodOptional<z.ZodString>;
|
|
16
|
-
reason: z.ZodOptional<z.ZodString>;
|
|
17
14
|
description: z.ZodOptional<z.ZodString>;
|
|
18
15
|
tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
19
16
|
code: z.ZodOptional<z.ZodString>;
|
|
20
17
|
language: z.ZodOptional<z.ZodEnum<{
|
|
21
|
-
three: "three";
|
|
22
18
|
bpy: "bpy";
|
|
19
|
+
three: "three";
|
|
23
20
|
}>>;
|
|
24
21
|
params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodNumber, z.ZodBoolean, z.ZodString]>>>;
|
|
25
22
|
nodeId: z.ZodOptional<z.ZodString>;
|
|
26
23
|
parentId: z.ZodOptional<z.ZodString>;
|
|
27
24
|
position: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
|
|
28
|
-
rotation: z.ZodOptional<z.ZodPipe<z.ZodUnion<
|
|
25
|
+
rotation: z.ZodOptional<z.ZodPipe<z.ZodUnion<[z.ZodNumber, z.ZodString]>, z.ZodTransform<number, string | number>>>;
|
|
29
26
|
side: z.ZodOptional<z.ZodEnum<{
|
|
30
|
-
front: "front";
|
|
31
27
|
back: "back";
|
|
28
|
+
front: "front";
|
|
32
29
|
}>>;
|
|
30
|
+
name: z.ZodOptional<z.ZodString>;
|
|
31
|
+
category: z.ZodOptional<z.ZodString>;
|
|
32
|
+
reason: z.ZodOptional<z.ZodString>;
|
|
33
33
|
};
|
|
34
34
|
};
|
|
35
35
|
export declare const getSourceTool: {
|
|
@@ -38,6 +38,10 @@ export declare const getSourceTool: {
|
|
|
38
38
|
description: string;
|
|
39
39
|
input: {
|
|
40
40
|
nodeId: z.ZodString;
|
|
41
|
+
face: z.ZodOptional<z.ZodEnum<{
|
|
42
|
+
a: "a";
|
|
43
|
+
b: "b";
|
|
44
|
+
}>>;
|
|
41
45
|
};
|
|
42
46
|
};
|
|
43
47
|
//# sourceMappingURL=add-object.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add-object.d.ts","sourceRoot":"","sources":["../../src/agent-tools/add-object.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;
|
|
1
|
+
{"version":3,"file":"add-object.d.ts","sourceRoot":"","sources":["../../src/agent-tools/add-object.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAqCvB,oGAAoG;AACpG,eAAO,MAAM,YAAY,wGAKtB,CAAA;AAEH,uDAAuD;AACvD,eAAO,MAAM,cAAc;;;GAE1B,CAAA;AAED,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;CAkDzB,CAAA;AAED,eAAO,MAAM,aAAa;IACxB,IAAI;IACJ,KAAK;IACL,WAAW;IAEX,KAAK;QACH,MAAM;QAGN,IAAI;;;;;CAKP,CAAA"}
|
|
@@ -3,7 +3,7 @@ import { geometryMetaFields } from '../schema/geometry-metadata.js';
|
|
|
3
3
|
import { GeometryScriptLanguage } from '../schema/geometry-source.js';
|
|
4
4
|
import { measurement } from './measurement.js';
|
|
5
5
|
import { NodeId } from './node-id.js';
|
|
6
|
-
const DESCRIPTION = `
|
|
6
|
+
const DESCRIPTION = `Author parametric Three.js furniture, decor and custom objects of any shape, dimensions or style, whether or not the catalog holds something similar (the catalog is a limited set that varies by server). Examples include a low oak table, a slatted bench, a paper lantern, built-ins, custom columns and capitals, mouldings and trim, panels, exposed beams, ceiling bodies, canopies, a porch and railings. Pascal runs the module in a sandbox, stores the result and places it as one object the user can move, paint, and ask you to edit again.
|
|
7
7
|
|
|
8
8
|
Module shape (import THREE from the three package as usual; the addons below too):
|
|
9
9
|
// also available: three/addons/utils/BufferGeometryUtils.js, three/addons/geometries/{RoundedBoxGeometry,ConvexGeometry,LoftGeometry,ParametricGeometry}.js, three-bvh-csg (Brush, Evaluator, SUBTRACTION, ADDITION, INTERSECTION)
|
|
@@ -11,10 +11,10 @@ Module shape (import THREE from the three package as usual; the addons below too
|
|
|
11
11
|
export const mount = 'floor' // 'floor' | 'wall-side' (on a wall face) | 'wall' (through a wall, like a window) | 'ceiling'
|
|
12
12
|
export default function build({ params, THREE }) { const group = new THREE.Group(); /* … */ return group }
|
|
13
13
|
|
|
14
|
-
One object is one feature that changes together: a porch, a railing run, a fireplace surround, a ceiling with its beams. Never a whole house, and never walls, rooms, floors, roofs, stairs, doors or windows: those have their own tools. A new object
|
|
14
|
+
One object is one feature that changes together: a table, a bench, a porch, a railing run, a fireplace surround, a ceiling with its beams. Never a whole house, and never walls, rooms, floors, roofs, stairs, doors or windows: those have their own tools. A new object's reason records its design intent: what the authored shape, dimensions or style contributes to the request. The scene check lists every authored object with its reason; no catalog-exhaustion proof is required. On a floor, a plain box with a wall's size or a floor plate is refused with the tool to use (use_walls, use_slab); a detailed object with a wall's size (a bookcase, a screen), or one named after something Pascal builds, is built with a hint naming the tool.
|
|
15
15
|
|
|
16
16
|
Conventions (they make the object work in Pascal; follow them):
|
|
17
|
-
- Metres, Y up, modelled
|
|
17
|
+
- Metres, Y up, modelled in its installed orientation. Floor and wall mounts put the bottom-centre of the visible bounds at the placement point. Ceiling mounts put the top-centre there: visible geometry extends down in negative local Y, with its top at Y = 0. Wall-side mounts put the bottom-centre of the back face there (back at Z = 0, facing +Z). Normalization translates geometry; it does not flip it.
|
|
18
18
|
- Paint: name every material slot_<finish> (slot_trim, slot_frame, slot_metal) and reuse one material per finish; a material named "glass" renders as glass.
|
|
19
19
|
- Parts: name the few groups a person would point at part:<id> (part:column_left, part:canopy, part:landing), usually 2–24, a group per part, not every mesh. Set userData.type on parts someone would look for: column, beam, slab, roof, railing, panel, trim, step, light.
|
|
20
20
|
- Lights: add a THREE.PointLight or SpotLight named light:<id> where the bulb is; it becomes a switchable light.
|
|
@@ -30,7 +30,9 @@ Blender instead (language 'bpy'): when the shape is easier with Blender's modell
|
|
|
30
30
|
def build(params): ... # add objects to the empty scene; everything in it is exported, modifiers applied
|
|
31
31
|
The same conventions in Blender terms: metres, Z up, the front faces -Y (Blender's Front view); part:<id>, light:<id> (a light object; its custom property intensity sets the brightness, default 2), anchor:<id> (an empty), cutout, cut:wall|ceiling|slab and collider are object names; userData is the object's custom properties (obj["type"] = "panel"); slot_<finish> are material names. A clip is one action named open, close, loop or anything else, assigned to every object that moves in it. Use the data API and bmesh, not operators that need a 3D viewport. A Blender build takes a few seconds.
|
|
32
32
|
|
|
33
|
-
|
|
33
|
+
Several objects: they do not depend on each other, so several add_object calls can go in one step, or in one run_batch call (a call per object; each is reported on its own with its receipt, and one that fails does not stop the others).
|
|
34
|
+
|
|
35
|
+
Edit: pass nodeId with new code and/or params (params alone rebuild the stored script; get_source provides the current code and params when needed); identity, placement, paint and the params you leave out are kept. The result lists the size, parts, slots, lights, animations and params.`;
|
|
34
36
|
/** The `params` field every scripted tool shares (add_object, add_window, add_door, add_column). */
|
|
35
37
|
export const scriptParams = z
|
|
36
38
|
.record(z.string(), z.union([z.number(), z.boolean(), z.string()]))
|
|
@@ -57,30 +59,34 @@ export const addObjectTool = {
|
|
|
57
59
|
.array(z.number())
|
|
58
60
|
.length(3)
|
|
59
61
|
.optional()
|
|
60
|
-
.describe('Placement in the host frame, metres.
|
|
62
|
+
.describe('Placement of the mount origin in the host frame, metres. Floor: [x, y, z] locates the bottom-centre (y = 0 on the level floor). Ceiling: [x, y, z] locates the top-centre (y = 0 on the drawn ceiling attachment plane; negative y lowers it). Wall / wall-side: [distance along the wall from its start, height of the bottom, 0]; wall-side also anchors the back face.'),
|
|
61
63
|
rotation: measurement('angle', 'deg', {
|
|
62
|
-
description: 'Y-axis rotation
|
|
64
|
+
description: 'Y-axis rotation in the host frame. New wall-side back mounts default to 180° so +Z faces away from the wall; other new objects default to 0°. An edit keeps its saved rotation unless given.',
|
|
63
65
|
}).optional(),
|
|
64
66
|
side: z
|
|
65
67
|
.enum(['front', 'back'])
|
|
66
68
|
.optional()
|
|
67
69
|
.describe('Which wall face a wall-side object sits on.'),
|
|
68
70
|
...geometryMetaFields,
|
|
69
|
-
name: geometryMetaFields.name.describe('What the user would call it ("
|
|
70
|
-
category: geometryMetaFields.category.describe('What it is, one word or two ("
|
|
71
|
+
name: geometryMetaFields.name.describe('What the user would call it ("Low oak table").'),
|
|
72
|
+
category: geometryMetaFields.category.describe('What it is, one word or two ("table", "bench", "porch", "lantern", "trim").'),
|
|
71
73
|
reason: z
|
|
72
74
|
.string()
|
|
73
75
|
.min(1)
|
|
74
76
|
.max(200)
|
|
75
77
|
.optional()
|
|
76
|
-
.describe('
|
|
78
|
+
.describe('Design intent: why this authored shape, size or style suits the request ("low oak table for the Japandi seating area"). Required to create; an edit keeps it unless given. No catalog-exhaustion proof is required.'),
|
|
77
79
|
},
|
|
78
80
|
};
|
|
79
81
|
export const getSourceTool = {
|
|
80
82
|
name: 'get_source',
|
|
81
83
|
title: 'Read object script',
|
|
82
|
-
description:
|
|
84
|
+
description: "The module (three.js or Blender bpy, named by language) an object (or a window, door or column built from code) runs, with its params and their current values; a room's id reads its floor script, the module that builds its floor finish; a wall's id with face reads that face's script (face may be left out when only one face has one). Optional source evidence when the current module is needed. An edited module can be passed back with the same nodeId: to add_object for an object, to add_window / add_door / add_column for their respective kinds.",
|
|
83
85
|
input: {
|
|
84
|
-
nodeId: NodeId.describe('An object, window, door or column built from code.'),
|
|
86
|
+
nodeId: NodeId.describe('An object, window, door or column built from code, a room with a floor script, or a wall with a face script.'),
|
|
87
|
+
face: z
|
|
88
|
+
.enum(['a', 'b'])
|
|
89
|
+
.optional()
|
|
90
|
+
.describe("A wall's face whose script to read; needed when both faces have one."),
|
|
85
91
|
},
|
|
86
92
|
};
|
|
@@ -10,4 +10,12 @@ export declare const searchAssetsTool: {
|
|
|
10
10
|
}, z.core.$strip>>;
|
|
11
11
|
};
|
|
12
12
|
};
|
|
13
|
+
export declare const viewAssetsTool: {
|
|
14
|
+
name: string;
|
|
15
|
+
title: string;
|
|
16
|
+
description: string;
|
|
17
|
+
input: {
|
|
18
|
+
ids: z.ZodArray<z.ZodString>;
|
|
19
|
+
};
|
|
20
|
+
};
|
|
13
21
|
//# sourceMappingURL=assets.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assets.d.ts","sourceRoot":"","sources":["../../src/agent-tools/assets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,eAAO,MAAM,gBAAgB
|
|
1
|
+
{"version":3,"file":"assets.d.ts","sourceRoot":"","sources":["../../src/agent-tools/assets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,eAAO,MAAM,gBAAgB;IAC3B,IAAI;IACJ,KAAK;IACL,WAAW;IAEX,KAAK;QACH,OAAO;;;;;CAaV,CAAA;AAED,eAAO,MAAM,cAAc;IACzB,IAAI;IACJ,KAAK;IACL,WAAW;IAEX,KAAK;QACH,GAAG;;CAMN,CAAA"}
|
|
@@ -2,7 +2,7 @@ import { z } from 'zod';
|
|
|
2
2
|
export const searchAssetsTool = {
|
|
3
3
|
name: 'search_assets',
|
|
4
4
|
title: 'Search assets',
|
|
5
|
-
description: "Search the item library (furniture, fixtures, lights, plants, outdoor) by keyword, several queries in
|
|
5
|
+
description: "Search the item library (furniture, fixtures, lights, plants, outdoor) by keyword, with one or several queries in a call. The catalog is a limited set that varies by server: what a search returns is what exists. Results provide valid asset ids and placement facts when these are not already known. A query matches the items whose name, id, category or tags hold every one of its words. Returns one group per query, each item with its id, name, category, dimensions [width, height, depth] in metres and attachTo (null on the floor, else 'wall', 'wall-side' or 'ceiling'). Related lookups (sofa, coffee table, tv stand) can share a call.",
|
|
6
6
|
input: {
|
|
7
7
|
queries: z
|
|
8
8
|
.array(z.object({
|
|
@@ -16,3 +16,15 @@ export const searchAssetsTool = {
|
|
|
16
16
|
.describe('One or more searches to run in a single call.'),
|
|
17
17
|
},
|
|
18
18
|
};
|
|
19
|
+
export const viewAssetsTool = {
|
|
20
|
+
name: 'view_assets',
|
|
21
|
+
title: 'View catalog items',
|
|
22
|
+
description: 'Pictures of catalog items by id, each with its size and the names of its paintable surfaces (paint takes one as role).',
|
|
23
|
+
input: {
|
|
24
|
+
ids: z
|
|
25
|
+
.array(z.string().min(1))
|
|
26
|
+
.min(1)
|
|
27
|
+
.max(6)
|
|
28
|
+
.describe('One to six catalog item ids, as search_assets or furnish_room returned them.'),
|
|
29
|
+
},
|
|
30
|
+
};
|