@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
|
@@ -1,9 +1,40 @@
|
|
|
1
1
|
import { refuse } from '../agent-tools/refusal.js';
|
|
2
|
+
import { VIEW_MAX_PX, } from '../agent-tools/view-scene.js';
|
|
3
|
+
import { levelGradeStanding } from '../lib/grade-standing.js';
|
|
4
|
+
import { buildingGroundBox, levelGroundBox, terrainBetweenEyeAndBox } from '../lib/ground-window.js';
|
|
5
|
+
import { distanceToSegment } from '../lib/room-topology-index.js';
|
|
6
|
+
import { buildingStreet } from '../lib/site-placement.js';
|
|
2
7
|
import { getActiveRoofHeight } from '../schema/index.js';
|
|
3
|
-
import {
|
|
8
|
+
import { isCeilingGeometry, isRoofGeometry } from '../services/roof-level.js';
|
|
9
|
+
import { EXPLODED_GAP, getLevelElevations } from '../services/storey.js';
|
|
4
10
|
import { resolveWallExteriorSide } from '../systems/wall/wall-assembly.js';
|
|
11
|
+
import { pointInPolygon } from './plan-geometry.js';
|
|
12
|
+
/** Validate against the scene being rendered as well as the scene used to request the view. */
|
|
13
|
+
export function sceneViewPresentationLevel(nodes, presentation) {
|
|
14
|
+
if (presentation?.mode !== 'solo')
|
|
15
|
+
return undefined;
|
|
16
|
+
const level = nodes[presentation.levelId];
|
|
17
|
+
if (level?.type !== 'level')
|
|
18
|
+
refuse('presentation_level_invalid', 'Solo needs an existing level id.', {
|
|
19
|
+
levelId: presentation.levelId,
|
|
20
|
+
});
|
|
21
|
+
if (ancestry(nodes, level).some((node) => node.visible === false && node.type !== 'site'))
|
|
22
|
+
refuse('presentation_level_hidden', 'Show the level before inspecting it in Solo.', {
|
|
23
|
+
levelId: level.id,
|
|
24
|
+
});
|
|
25
|
+
return level;
|
|
26
|
+
}
|
|
27
|
+
/** Older renderers may ignore new view options; their frames cannot verify those views. */
|
|
28
|
+
export function confirmSceneViewPresentation(requested, applied) {
|
|
29
|
+
if (requested &&
|
|
30
|
+
(applied?.mode !== requested.mode ||
|
|
31
|
+
(requested.mode === 'solo' &&
|
|
32
|
+
(applied?.mode !== 'solo' || applied.levelId !== requested.levelId))))
|
|
33
|
+
refuse('view_presentation_unconfirmed', 'The renderer did not confirm the requested level view. Refresh the renderer and retry; this picture cannot verify Solo or Exploded behavior.', { requested, applied: applied ?? null });
|
|
34
|
+
}
|
|
5
35
|
/** How high up its storey an interior view cuts a floor: low enough to see every room. */
|
|
6
36
|
const INTERIOR_CUT = 0.65;
|
|
37
|
+
const INTERIOR_CUT_WORDS = `${INTERIOR_CUT}`;
|
|
7
38
|
/** Degrees above the horizon an interior view looks down from, by default. */
|
|
8
39
|
const INTERIOR_ELEVATION = 55;
|
|
9
40
|
/** A node and every node it stands under, nearest first. */
|
|
@@ -39,7 +70,7 @@ export function sceneViewInterior(nodes, levelId) {
|
|
|
39
70
|
const hiddenIds = Object.values(nodes)
|
|
40
71
|
.filter((node) => node.type === 'level'
|
|
41
72
|
? node.id !== levelId
|
|
42
|
-
: (node
|
|
73
|
+
: (isRoofGeometry(node) || isCeilingGeometry(node)) &&
|
|
43
74
|
ancestry(nodes, node).some((at) => at.id === levelId))
|
|
44
75
|
.map((node) => node.id);
|
|
45
76
|
if (level.children.length && level.children.every((id) => hiddenIds.includes(id)))
|
|
@@ -62,8 +93,11 @@ function cropOf(photo) {
|
|
|
62
93
|
refuse('photo_region_invalid', `The region [${photo.region.join(', ')}] holds nothing: give [left, top, right, bottom] in the photo's pixels, right of left and below top.`, { region: photo.region });
|
|
63
94
|
return { source: photo.source, region: [left, top, right, bottom] };
|
|
64
95
|
}
|
|
65
|
-
/**
|
|
66
|
-
|
|
96
|
+
/**
|
|
97
|
+
* The picture's size, the most of each side: a shelf's books and a door's handles read. Vision
|
|
98
|
+
* models scale a picture down past ~1568 px on its long side, so more costs bytes and nothing seen.
|
|
99
|
+
*/
|
|
100
|
+
export const VIEW_SIZE = { w: 1920, h: 1200 };
|
|
67
101
|
const ASPECT = VIEW_SIZE.w / VIEW_SIZE.h;
|
|
68
102
|
/** A crop comes back at most this long on either host: the region as the photo has it, never larger than a view. */
|
|
69
103
|
export const PHOTO_CROP_LONGEST = VIEW_SIZE.w;
|
|
@@ -91,11 +125,47 @@ const COMPASS = {
|
|
|
91
125
|
west: [-1, 0],
|
|
92
126
|
'north-west': [-Math.SQRT1_2, -Math.SQRT1_2],
|
|
93
127
|
};
|
|
128
|
+
/** How far each street side turns from the street toward the street viewer's left, in degrees. */
|
|
129
|
+
const STREET_TURN = {
|
|
130
|
+
street: 0,
|
|
131
|
+
'street-left': 45,
|
|
132
|
+
left: 90,
|
|
133
|
+
'back-left': 135,
|
|
134
|
+
back: 180,
|
|
135
|
+
'back-right': -135,
|
|
136
|
+
right: -90,
|
|
137
|
+
'street-right': -45,
|
|
138
|
+
};
|
|
139
|
+
const isStreetSide = (side) => Object.hasOwn(STREET_TURN, side);
|
|
94
140
|
/**
|
|
95
|
-
*
|
|
96
|
-
*
|
|
97
|
-
*
|
|
141
|
+
* Where a street side stands in the plan, from the street of the house it looks at (core's
|
|
142
|
+
* `buildingStreet`: the street its site records, else the house's own front). Standing in the
|
|
143
|
+
* street facing the house you look along -toward, and in this frame (x east, z south, y up) your
|
|
144
|
+
* left hand points along (-toward.z, toward.x): on a lot whose street is north, that is east.
|
|
145
|
+
*/
|
|
146
|
+
function streetDirection(nodes, side, lookedAt) {
|
|
147
|
+
const [fx, fz] = buildingStreet(nodes, framedBuilding(nodes, lookedAt)?.id);
|
|
148
|
+
const turn = (STREET_TURN[side] * Math.PI) / 180;
|
|
149
|
+
// `+ 0` so a vector along an axis reads 0, not -0.
|
|
150
|
+
return [
|
|
151
|
+
fx * Math.cos(turn) - fz * Math.sin(turn) + 0,
|
|
152
|
+
fz * Math.cos(turn) + fx * Math.sin(turn) + 0,
|
|
153
|
+
];
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* The building a view is of: the one holding what it looks at (a target, an interior's floor),
|
|
157
|
+
* else the scene's. Buildings on several sites each face their own street, so a street side then
|
|
158
|
+
* needs the building as target.
|
|
98
159
|
*/
|
|
160
|
+
function framedBuilding(nodes, lookedAt) {
|
|
161
|
+
if (lookedAt)
|
|
162
|
+
return ancestry(nodes, lookedAt).find((node) => node.type === 'building') ?? null;
|
|
163
|
+
const buildings = Object.values(nodes).filter((node) => node.type === 'building');
|
|
164
|
+
const sites = new Set(buildings.map((building) => building.parentId ?? null));
|
|
165
|
+
if (sites.size > 1)
|
|
166
|
+
refuse('which_building', `The scene has buildings on ${sites.size} sites, each facing its own street: give the building as target.`, { buildings: buildings.map((building) => building.id) });
|
|
167
|
+
return buildings[0] ?? null;
|
|
168
|
+
}
|
|
99
169
|
/** A door or a window and the wall it is in, when the target is one. */
|
|
100
170
|
function openingOf(nodes, target) {
|
|
101
171
|
if (target?.type !== 'door' && target?.type !== 'window')
|
|
@@ -300,6 +370,21 @@ function outwardOf(opening, wall, yaw) {
|
|
|
300
370
|
// `+ 0` so a vector along an axis reads 0, not -0.
|
|
301
371
|
return [ux * Math.cos(yaw) + uz * Math.sin(yaw) + 0, -ux * Math.sin(yaw) + uz * Math.cos(yaw) + 0];
|
|
302
372
|
}
|
|
373
|
+
/**
|
|
374
|
+
* Which way a door or a window faces, outward, as a unit vector in the site's plan (x, z): what a
|
|
375
|
+
* view of it is taken from, and what a camera that follows the build looks at it along. The same
|
|
376
|
+
* for a wall with an exterior side: the way that side faces. Null for anything else, and for a wall
|
|
377
|
+
* with no exterior side.
|
|
378
|
+
*/
|
|
379
|
+
export function sceneViewFacing(nodes, id) {
|
|
380
|
+
const opening = openingOf(nodes, nodes[id]);
|
|
381
|
+
if (opening)
|
|
382
|
+
return outwardOf(opening.opening, opening.wall, standingOf(nodes, opening.wall.parentId).yaw);
|
|
383
|
+
const wall = nodes[id];
|
|
384
|
+
if (wall?.type !== 'wall' || resolveWallExteriorSide(wall) === null)
|
|
385
|
+
return null;
|
|
386
|
+
return outwardOf(wall, wall, standingOf(nodes, wall.parentId).yaw);
|
|
387
|
+
}
|
|
303
388
|
const AT_ORIGIN = { x: 0, y: 0, z: 0, yaw: 0 };
|
|
304
389
|
function standingOf(nodes, levelId) {
|
|
305
390
|
const level = levelId ? nodes[levelId] : undefined;
|
|
@@ -337,14 +422,23 @@ function placedBox(box, at) {
|
|
|
337
422
|
],
|
|
338
423
|
};
|
|
339
424
|
}
|
|
340
|
-
|
|
425
|
+
/**
|
|
426
|
+
* What a view frames: the walls of the target (a building, a level, a wall) or a zone's outline,
|
|
427
|
+
* each at its storey's height, and the roofs over them up to their peaks; every storey by default.
|
|
428
|
+
* Plan guides never count: an imported plan is drawn much larger than its building.
|
|
429
|
+
*/
|
|
430
|
+
export function sceneViewBounds(nodes, targetId, presentation) {
|
|
341
431
|
const target = targetId ? nodes[targetId] : undefined;
|
|
342
432
|
if (targetId && !target)
|
|
343
433
|
refuse('target_not_found', `Nothing to look at: ${targetId} is not in the scene.`, {
|
|
344
434
|
target: targetId,
|
|
345
435
|
});
|
|
346
436
|
const elevations = getLevelElevations(nodes);
|
|
347
|
-
const baseOf = (levelId) =>
|
|
437
|
+
const baseOf = (levelId) => {
|
|
438
|
+
const level = levelId ? elevations.get(levelId) : undefined;
|
|
439
|
+
return ((level?.baseY ?? 0) +
|
|
440
|
+
(presentation?.mode === 'exploded' ? (level?.ordinal ?? 0) * EXPLODED_GAP : 0));
|
|
441
|
+
};
|
|
348
442
|
const placed = (box, levelId) => placedBox(box, standingOf(nodes, levelId));
|
|
349
443
|
const opening = openingOf(nodes, target);
|
|
350
444
|
if (opening)
|
|
@@ -364,8 +458,11 @@ export function sceneViewBounds(nodes, targetId) {
|
|
|
364
458
|
const levelOf = (node) => (node.parentId ? nodes[node.parentId] : undefined);
|
|
365
459
|
const outlines = [];
|
|
366
460
|
// With no walls yet, what the level holds frames it: furniture placed from a plan before the
|
|
367
|
-
// walls are built, a site with its paving and fences.
|
|
461
|
+
// walls are built, a site with its paving and fences. The roofs frame with the walls, and so does
|
|
462
|
+
// a plugin's node (a roof plane), whose shape core cannot read: up to its storey's top.
|
|
368
463
|
const held = [];
|
|
464
|
+
const roofs = [];
|
|
465
|
+
let pluginTop = Number.NEGATIVE_INFINITY;
|
|
369
466
|
for (const node of Object.values(nodes)) {
|
|
370
467
|
const level = levelOf(node);
|
|
371
468
|
if (level?.type !== 'level')
|
|
@@ -388,18 +485,21 @@ export function sceneViewBounds(nodes, targetId) {
|
|
|
388
485
|
levelId: level.id,
|
|
389
486
|
});
|
|
390
487
|
else if (node.type === 'item')
|
|
391
|
-
held.push(placedBox(itemBox(node, baseOf(level.id)), at));
|
|
488
|
+
(isRoofGeometry(node) ? roofs : held).push(placedBox(itemBox(node, baseOf(level.id)), at));
|
|
489
|
+
else if (node.type.includes(':')) {
|
|
490
|
+
const storey = elevations.get(level.id);
|
|
491
|
+
if (storey)
|
|
492
|
+
pluginTop = Math.max(pluginTop, baseOf(level.id) + storey.height + at.y);
|
|
493
|
+
}
|
|
392
494
|
else {
|
|
393
495
|
const box = levelChildBox(nodes, node, baseOf(level.id));
|
|
394
496
|
if (box)
|
|
395
|
-
held.push(placedBox(box, at));
|
|
497
|
+
(node.type === 'roof' ? roofs : held).push(placedBox(box, at));
|
|
396
498
|
}
|
|
397
499
|
}
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
max: [0, 1, 2].map((axis) => Math.max(...held.map((box) => box.max[axis]))),
|
|
402
|
-
};
|
|
500
|
+
const upTo = (box) => pluginTop > box.max[1] ? { min: box.min, max: [box.max[0], pluginTop, box.max[2]] } : box;
|
|
501
|
+
if (!outlines.length && (held.length || roofs.length))
|
|
502
|
+
return upTo(union([...held, ...roofs]));
|
|
403
503
|
if (!outlines.length)
|
|
404
504
|
refuse('nothing_to_view', target
|
|
405
505
|
? `${target.type} ${target.id} holds nothing built to look at: give a building, a level, a wall, a zone or what was placed.`
|
|
@@ -409,8 +509,8 @@ export function sceneViewBounds(nodes, targetId) {
|
|
|
409
509
|
for (const { points, levelId } of outlines) {
|
|
410
510
|
const storey = elevations.get(levelId) ?? { baseY: 0, height: 3 };
|
|
411
511
|
const lift = standingOf(nodes, levelId).y;
|
|
412
|
-
min[1] = Math.min(min[1],
|
|
413
|
-
max[1] = Math.max(max[1],
|
|
512
|
+
min[1] = Math.min(min[1], baseOf(levelId) + lift);
|
|
513
|
+
max[1] = Math.max(max[1], baseOf(levelId) + storey.height + lift);
|
|
414
514
|
for (const [x, z] of points) {
|
|
415
515
|
min[0] = Math.min(min[0], x);
|
|
416
516
|
max[0] = Math.max(max[0], x);
|
|
@@ -418,7 +518,14 @@ export function sceneViewBounds(nodes, targetId) {
|
|
|
418
518
|
max[2] = Math.max(max[2], z);
|
|
419
519
|
}
|
|
420
520
|
}
|
|
421
|
-
return { min, max };
|
|
521
|
+
return upTo(union([{ min, max }, ...roofs]));
|
|
522
|
+
}
|
|
523
|
+
/** The box around boxes. */
|
|
524
|
+
function union(boxes) {
|
|
525
|
+
return {
|
|
526
|
+
min: [0, 1, 2].map((axis) => Math.min(...boxes.map((box) => box.min[axis]))),
|
|
527
|
+
max: [0, 1, 2].map((axis) => Math.max(...boxes.map((box) => box.max[axis]))),
|
|
528
|
+
};
|
|
422
529
|
}
|
|
423
530
|
const sub = (a, b) => [a[0] - b[0], a[1] - b[1], a[2] - b[2]];
|
|
424
531
|
const dot = (a, b) => a[0] * b[0] + a[1] * b[1] + a[2] * b[2];
|
|
@@ -446,7 +553,7 @@ export function sceneViewPose(box, input) {
|
|
|
446
553
|
const radius = Math.hypot(...sub(box.max, box.min)) / 2 || 1;
|
|
447
554
|
const side = input.from ?? 'south-west';
|
|
448
555
|
const elevation = ((side === 'above' ? 89 : (input.elevation ?? DEFAULT_ELEVATION)) * Math.PI) / 180;
|
|
449
|
-
const [dx, dz] = side === 'above' ? COMPASS.south : COMPASS[side];
|
|
556
|
+
const [dx, dz] = side === 'above' ? COMPASS.south : typeof side === 'string' ? COMPASS[side] : side;
|
|
450
557
|
const direction = [Math.cos(elevation) * dx, Math.sin(elevation), Math.cos(elevation) * dz];
|
|
451
558
|
const corners = [];
|
|
452
559
|
for (const x of [box.min[0], box.max[0]])
|
|
@@ -499,20 +606,244 @@ export function sceneViewPose(box, input) {
|
|
|
499
606
|
fov,
|
|
500
607
|
};
|
|
501
608
|
}
|
|
609
|
+
/** What a picture into a floor below grade shows over it, said so the agent describes it right. */
|
|
610
|
+
const BELOW_GRADE_NOTE = 'The floor lies below grade: the ground over it is drawn as a faint veil, so its rooms show through it.';
|
|
611
|
+
const PARTLY_BELOW_GRADE_NOTE = 'The floor lies partly below grade: the ground stands over part of it.';
|
|
612
|
+
const GROUND_IN_THE_WAY_NOTE = 'Ground stands between this viewpoint and the building: where it would hide it, the ground is drawn as a faint veil; the rest of the ground is solid.';
|
|
613
|
+
const ROOM_EYE_NOTE = (name) => `The eye stands inside ${name} at a person's height, looking across it: the walls, openings and furniture of its floor are cut at ${INTERIOR_CUT_WORDS} of the storey's height and its ceiling is left out.`;
|
|
502
614
|
/**
|
|
503
|
-
*
|
|
504
|
-
*
|
|
615
|
+
* What a view comes with, on both surfaces: a picture to compare, not a measure; a floor below grade
|
|
616
|
+
* is seen through the veiled ground. With the picture's `pose`, also the fact of ground standing
|
|
617
|
+
* between that viewpoint and the building, veiled where it would hide it.
|
|
505
618
|
*/
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
619
|
+
export function sceneViewNote(nodes, interior, pose) {
|
|
620
|
+
const notes = [
|
|
621
|
+
'A picture to compare with the reference, not a measure: take sizes and counts from the tools.',
|
|
622
|
+
];
|
|
623
|
+
if (nodes && interior) {
|
|
624
|
+
const standing = levelGradeStanding(nodes, interior.levelId);
|
|
625
|
+
if (standing === 'below-grade')
|
|
626
|
+
notes.push(BELOW_GRADE_NOTE);
|
|
627
|
+
if (standing === 'partly-below-grade')
|
|
628
|
+
notes.push(PARTLY_BELOW_GRADE_NOTE);
|
|
629
|
+
}
|
|
630
|
+
if (nodes && pose) {
|
|
631
|
+
const asNodes = nodes;
|
|
632
|
+
const box = interior ? levelGroundBox(asNodes, interior.levelId) : buildingGroundBox(asNodes);
|
|
633
|
+
if (box && terrainBetweenEyeAndBox(asNodes, pose.position, box))
|
|
634
|
+
notes.push(GROUND_IN_THE_WAY_NOTE);
|
|
635
|
+
}
|
|
636
|
+
const room = interior?.roomId ? nodes?.[interior.roomId] : undefined;
|
|
637
|
+
if (nodes && pose && room?.type === 'zone') {
|
|
638
|
+
const { bounds } = sceneViewInterior(nodes, interior.levelId);
|
|
639
|
+
const { outline, holes } = roomOnSite(nodes, room, bounds.min[1]);
|
|
640
|
+
const eye = [pose.position[0], pose.position[2]];
|
|
641
|
+
if (pointInPolygon(eye, outline, false) &&
|
|
642
|
+
!holes.some((hole) => pointInPolygon(eye, hole)) &&
|
|
643
|
+
pose.position[1] >= bounds.min[1] &&
|
|
644
|
+
pose.position[1] <= bounds.max[1])
|
|
645
|
+
notes.push(ROOM_EYE_NOTE(room.name || room.id));
|
|
646
|
+
}
|
|
647
|
+
return notes.join(' ');
|
|
648
|
+
}
|
|
649
|
+
/** A picture of `w` × `h`, made smaller to `maxPx` on its longest side, `VIEW_MAX_PX` at most. */
|
|
650
|
+
function sized(w, h, maxPx = VIEW_MAX_PX) {
|
|
651
|
+
const scale = Math.min(1, maxPx / Math.max(w, h));
|
|
652
|
+
return { w: Math.round(w * scale), h: Math.round(h * scale) };
|
|
653
|
+
}
|
|
654
|
+
/** The pose of a camera given whole: a photo's, or the person's own. */
|
|
655
|
+
function cameraPose(camera, current) {
|
|
656
|
+
if (camera !== 'current')
|
|
657
|
+
return {
|
|
658
|
+
pose: {
|
|
659
|
+
projection: 'perspective',
|
|
660
|
+
position: camera.position,
|
|
661
|
+
target: camera.target,
|
|
662
|
+
fov: camera.fov,
|
|
663
|
+
},
|
|
664
|
+
aspect: camera.aspect,
|
|
665
|
+
};
|
|
666
|
+
if (!current)
|
|
667
|
+
refuse('no_current_camera', "There is no view of the person's to look through here: give a side (from), a position or a photo's camera.");
|
|
668
|
+
const { position, target, aspect } = current;
|
|
669
|
+
return {
|
|
670
|
+
pose: current.projection === 'orthographic' && current.viewWidth
|
|
671
|
+
? { projection: 'orthographic', position, target, viewWidth: current.viewWidth }
|
|
672
|
+
: { projection: 'perspective', position, target, fov: current.fov ?? DEFAULT_FOV },
|
|
673
|
+
aspect,
|
|
674
|
+
};
|
|
509
675
|
}
|
|
510
|
-
|
|
676
|
+
/** How high a person's eyes stand above the floor: the eye of a room view, unless eyeHeight says. */
|
|
677
|
+
const ROOM_EYE_HEIGHT = 1.6;
|
|
678
|
+
/** The field of view of a view from inside a room: wide, as a person takes a room in. */
|
|
679
|
+
const ROOM_FOV = 75;
|
|
680
|
+
/** Height of the point a room view looks at: the middle of what stands in the room. */
|
|
681
|
+
const ROOM_AIM_HEIGHT = 1.0;
|
|
682
|
+
/** What an interior asks for, checked: the floor it looks into, and the room it stands in if any. */
|
|
683
|
+
function interiorRequest(nodes, request) {
|
|
684
|
+
const { levelId, zoneId } = request;
|
|
685
|
+
if (Boolean(levelId) === Boolean(zoneId))
|
|
686
|
+
refuse('interior_one_of', 'interior takes a levelId (look into a floor) or a zoneId (stand inside a room), one of them.');
|
|
687
|
+
if (levelId)
|
|
688
|
+
return { interior: { levelId } };
|
|
689
|
+
const zone = nodes[zoneId];
|
|
690
|
+
if (zone?.type !== 'zone')
|
|
691
|
+
refuse('interior_room_invalid', `An interior view of a room needs a zone id (get_zones lists them): ${zoneId} is none.`, { zoneId });
|
|
692
|
+
const level = nodes[zone.parentId ?? ''];
|
|
693
|
+
if (level?.type !== 'level' || zone.polygon.length < 3)
|
|
694
|
+
refuse('interior_room_invalid', `${zoneId} has no outline on a floor to stand in: give another room, or a levelId.`, { zoneId });
|
|
695
|
+
return { interior: { levelId: level.id, roomId: zone.id }, room: zone };
|
|
696
|
+
}
|
|
697
|
+
/** A room's outline and holes on the site, and the box of its floor's height over its outline. */
|
|
698
|
+
function roomOnSite(nodes, room, floorY) {
|
|
699
|
+
const at = standingOf(nodes, room.parentId);
|
|
700
|
+
const outline = room.polygon.map((point) => onSite(point, at));
|
|
701
|
+
const holes = room.holes.map((hole) => hole.map((point) => onSite(point, at)));
|
|
702
|
+
const storey = getLevelElevations(nodes).get(room.parentId ?? '');
|
|
703
|
+
const xs = outline.map((point) => point[0]);
|
|
704
|
+
const zs = outline.map((point) => point[1]);
|
|
705
|
+
const box = {
|
|
706
|
+
min: [Math.min(...xs), floorY, Math.min(...zs)],
|
|
707
|
+
max: [Math.max(...xs), floorY + (storey?.height ?? 3), Math.max(...zs)],
|
|
708
|
+
};
|
|
709
|
+
return { outline, holes, box };
|
|
710
|
+
}
|
|
711
|
+
/** How far a point stands from the nearest wall of an outline. */
|
|
712
|
+
function clearanceOf(outline, point) {
|
|
713
|
+
return Math.min(...outline.map((corner, i) => distanceToSegment(point, corner, outline[(i + 1) % outline.length])));
|
|
714
|
+
}
|
|
715
|
+
/**
|
|
716
|
+
* The point of a room farthest from its walls: the middle of an L as well as of a square, which
|
|
717
|
+
* the corners' average is not.
|
|
718
|
+
*/
|
|
719
|
+
function roomMiddle(outline, inRoom) {
|
|
720
|
+
const xs = outline.map((point) => point[0]);
|
|
721
|
+
const zs = outline.map((point) => point[1]);
|
|
722
|
+
const [minX, maxX] = [Math.min(...xs), Math.max(...xs)];
|
|
723
|
+
const [minZ, maxZ] = [Math.min(...zs), Math.max(...zs)];
|
|
724
|
+
let best = [(minX + maxX) / 2, (minZ + maxZ) / 2];
|
|
725
|
+
let bestClearance = inRoom(best) ? clearanceOf(outline, best) : -1;
|
|
726
|
+
const steps = 24;
|
|
727
|
+
for (let i = 0; i <= steps; i++)
|
|
728
|
+
for (let j = 0; j <= steps; j++) {
|
|
729
|
+
const point = [minX + ((maxX - minX) * i) / steps, minZ + ((maxZ - minZ) * j) / steps];
|
|
730
|
+
if (!inRoom(point))
|
|
731
|
+
continue;
|
|
732
|
+
const room = clearanceOf(outline, point);
|
|
733
|
+
if (room > bestClearance)
|
|
734
|
+
[best, bestClearance] = [point, room];
|
|
735
|
+
}
|
|
736
|
+
return best;
|
|
737
|
+
}
|
|
738
|
+
/**
|
|
739
|
+
* A person standing in a room, looking across it: the eye a step in from the corner farthest from
|
|
740
|
+
* what it looks at (or, given a side, from the corner on that side), at eye height, aimed at the
|
|
741
|
+
* room's middle or at the target. Everything is on the site, in metres.
|
|
742
|
+
*/
|
|
743
|
+
function roomEyeView(outline, holes, floorY, { aim, side, eyeHeight = ROOM_EYE_HEIGHT, fov = ROOM_FOV, }) {
|
|
744
|
+
const inRoom = (point) => pointInPolygon(point, outline, false) && !holes.some((hole) => pointInPolygon(point, hole));
|
|
745
|
+
const distance = (a, b) => Math.hypot(a[0] - b[0], a[1] - b[1]);
|
|
746
|
+
const middle = roomMiddle(outline, inRoom);
|
|
747
|
+
const looksAt = aim ? [aim[0], aim[2]] : middle;
|
|
748
|
+
let eye;
|
|
749
|
+
let bestScore = Number.NEGATIVE_INFINITY;
|
|
750
|
+
for (const corner of outline) {
|
|
751
|
+
const toMiddle = distance(corner, middle) || 1;
|
|
752
|
+
const inward = [(middle[0] - corner[0]) / toMiddle, (middle[1] - corner[1]) / toMiddle];
|
|
753
|
+
// A step in from the corner, further in a room too narrow to hold the first.
|
|
754
|
+
const standing = [0.6, 1, 1.6]
|
|
755
|
+
.filter((step) => step <= toMiddle * 0.8)
|
|
756
|
+
.map((step) => [corner[0] + inward[0] * step, corner[1] + inward[1] * step])
|
|
757
|
+
.find((point) => inRoom(point) && clearanceOf(outline, point) >= 0.25);
|
|
758
|
+
if (!standing)
|
|
759
|
+
continue;
|
|
760
|
+
const score = side
|
|
761
|
+
? ((corner[0] - middle[0]) * side[0] + (corner[1] - middle[1]) * side[1]) / toMiddle
|
|
762
|
+
: distance(standing, looksAt);
|
|
763
|
+
if (score > bestScore)
|
|
764
|
+
[eye, bestScore] = [standing, score];
|
|
765
|
+
}
|
|
766
|
+
if (!eye) {
|
|
767
|
+
// A room too small for a corner to stand in: from its middle, toward its farthest corner.
|
|
768
|
+
const far = outline.reduce((a, b) => (distance(b, middle) > distance(a, middle) ? b : a));
|
|
769
|
+
return {
|
|
770
|
+
projection: 'perspective',
|
|
771
|
+
position: [round(middle[0]), round(floorY + eyeHeight), round(middle[1])],
|
|
772
|
+
target: [round(far[0]), round(floorY + ROOM_AIM_HEIGHT), round(far[1])],
|
|
773
|
+
fov,
|
|
774
|
+
};
|
|
775
|
+
}
|
|
776
|
+
if (aim)
|
|
777
|
+
return {
|
|
778
|
+
projection: 'perspective',
|
|
779
|
+
position: [round(eye[0]), round(floorY + eyeHeight), round(eye[1])],
|
|
780
|
+
target: [round(aim[0]), round(aim[1]), round(aim[2])],
|
|
781
|
+
fov,
|
|
782
|
+
};
|
|
783
|
+
// Across the room: the far end of the line from the eye through the room's middle, so the eye
|
|
784
|
+
// looks level at a wall and not down at the floor a step away.
|
|
785
|
+
const length = distance(eye, middle) || 1;
|
|
786
|
+
const along = [(middle[0] - eye[0]) / length, (middle[1] - eye[1]) / length];
|
|
787
|
+
let far = middle;
|
|
788
|
+
for (let reach = length; reach < 100; reach += 0.1) {
|
|
789
|
+
const point = [eye[0] + along[0] * reach, eye[1] + along[1] * reach];
|
|
790
|
+
if (!inRoom(point))
|
|
791
|
+
break;
|
|
792
|
+
far = point;
|
|
793
|
+
}
|
|
794
|
+
return {
|
|
795
|
+
projection: 'perspective',
|
|
796
|
+
position: [round(eye[0]), round(floorY + eyeHeight), round(eye[1])],
|
|
797
|
+
target: [round(far[0]), round(floorY + ROOM_AIM_HEIGHT), round(far[1])],
|
|
798
|
+
fov,
|
|
799
|
+
};
|
|
800
|
+
}
|
|
801
|
+
/**
|
|
802
|
+
* A level below grade on all of its footprint is seen from inside: from outside, the ground
|
|
803
|
+
* covers it. One only partly below grade keeps its outside view — the ground in the way is
|
|
804
|
+
* veiled in the picture instead.
|
|
805
|
+
*/
|
|
806
|
+
function belowGradeInterior(nodes, target) {
|
|
807
|
+
return target?.type === 'level' &&
|
|
808
|
+
levelGradeStanding(nodes, target.id) === 'below-grade'
|
|
809
|
+
? { levelId: target.id }
|
|
810
|
+
: undefined;
|
|
811
|
+
}
|
|
812
|
+
/**
|
|
813
|
+
* The view to render, its size and its light: through a camera given whole (a photo's, at the
|
|
814
|
+
* photo's aspect so the two lay one beside the other, or the person's own, which the host passes
|
|
815
|
+
* as `currentCamera`); else framing the target at the standard size, from a compass side or a side
|
|
816
|
+
* of the street the site records.
|
|
817
|
+
*/
|
|
818
|
+
export function sceneViewPlan(nodes, input, { currentCamera } = {}) {
|
|
511
819
|
const { camera } = input;
|
|
820
|
+
const presentation = input.presentation;
|
|
821
|
+
if (presentation && input.interior)
|
|
822
|
+
refuse('presentation_and_interior', 'Choose a level presentation or a clipped interior view.');
|
|
823
|
+
const solo = sceneViewPresentationLevel(nodes, presentation);
|
|
824
|
+
if (solo) {
|
|
825
|
+
if (input.target && !nodes[input.target])
|
|
826
|
+
refuse('target_not_found', 'The target is not in the scene.', { target: input.target });
|
|
827
|
+
if (input.target && !ancestry(nodes, nodes[input.target]).some((node) => node.id === solo.id))
|
|
828
|
+
refuse('presentation_target_elsewhere', 'The target must belong to the soloed level.', {
|
|
829
|
+
target: input.target,
|
|
830
|
+
levelId: solo.id,
|
|
831
|
+
});
|
|
832
|
+
}
|
|
512
833
|
const crop = cropOf(input.photo);
|
|
513
|
-
const inside = input.interior && sceneViewInterior(nodes, input.interior.levelId);
|
|
514
|
-
const interior = input.interior && { levelId: input.interior.levelId };
|
|
515
834
|
const target = input.target ? nodes[input.target] : undefined;
|
|
835
|
+
const requested = input.interior ? interiorRequest(nodes, input.interior) : undefined;
|
|
836
|
+
const room = requested?.room;
|
|
837
|
+
// A level below grade is looked into when none is asked for: from outside, the ground covers it.
|
|
838
|
+
const interior = requested?.interior ?? belowGradeInterior(nodes, target);
|
|
839
|
+
const inside = interior && sceneViewInterior(nodes, interior.levelId);
|
|
840
|
+
const lighting = input.lighting === 'current' ? undefined : input.lighting;
|
|
841
|
+
const extras = {
|
|
842
|
+
...(crop ? { crop } : {}),
|
|
843
|
+
...(interior ? { interior } : {}),
|
|
844
|
+
...(presentation ? { presentation } : {}),
|
|
845
|
+
...(lighting ? { lighting } : {}),
|
|
846
|
+
};
|
|
516
847
|
// An interior view shows this floor alone, without its roofs and ceilings: a target left out of
|
|
517
848
|
// the picture would frame nothing shown.
|
|
518
849
|
if (interior && inside && target) {
|
|
@@ -526,34 +857,60 @@ export function sceneViewPlan(nodes, input) {
|
|
|
526
857
|
if (camera) {
|
|
527
858
|
const own = ['from', 'position', 'elevation', 'eyeHeight', 'fov', 'projection'].filter((key) => input[key] !== undefined);
|
|
528
859
|
if (own.length)
|
|
529
|
-
refuse('camera_and_viewpoint', `Give
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
projection: 'perspective',
|
|
533
|
-
position: camera.position,
|
|
534
|
-
target: camera.target,
|
|
535
|
-
fov: camera.fov,
|
|
536
|
-
},
|
|
537
|
-
size: { w: VIEW_SIZE.w, h: Math.round(VIEW_SIZE.w / camera.aspect) },
|
|
538
|
-
...(crop ? { crop } : {}),
|
|
539
|
-
...(interior ? { interior } : {}),
|
|
540
|
-
};
|
|
860
|
+
refuse('camera_and_viewpoint', `Give a camera or a viewpoint of your own, not both (${own.join(', ')}).`, { fields: own });
|
|
861
|
+
const { pose, aspect } = cameraPose(camera, currentCamera);
|
|
862
|
+
return { pose, size: sized(VIEW_SIZE.w, VIEW_SIZE.w / aspect, input.maxPx), ...extras };
|
|
541
863
|
}
|
|
542
864
|
const opening = openingOf(nodes, target);
|
|
543
|
-
const
|
|
544
|
-
|
|
865
|
+
const side = input.from;
|
|
866
|
+
const from = side
|
|
867
|
+
? isStreetSide(side)
|
|
868
|
+
? streetDirection(nodes, side, target ?? solo ?? (interior && nodes[interior.levelId]))
|
|
869
|
+
: side
|
|
870
|
+
: opening && !input.position
|
|
545
871
|
? outsideSide(opening.opening, opening.wall, standingOf(nodes, opening.wall.parentId).yaw)
|
|
546
|
-
: undefined
|
|
872
|
+
: undefined;
|
|
547
873
|
// Inside a floor, the eye looks down into it over the cut walls.
|
|
548
874
|
const lookDown = inside && input.elevation === undefined && input.eyeHeight === undefined;
|
|
875
|
+
const { position, elevation, eyeHeight, fov, projection } = input;
|
|
876
|
+
const placedRoom = room && inside && roomOnSite(nodes, room, inside.bounds.min[1]);
|
|
877
|
+
// A room is looked at from inside, a person's height up, unless the eye is put (position) or
|
|
878
|
+
// lifted over it (elevation, from above, orthographic): then it is the cut room from outside.
|
|
879
|
+
if (placedRoom &&
|
|
880
|
+
position === undefined &&
|
|
881
|
+
elevation === undefined &&
|
|
882
|
+
side !== 'above' &&
|
|
883
|
+
projection !== 'orthographic') {
|
|
884
|
+
const aimBox = input.target ? sceneViewBounds(nodes, input.target) : undefined;
|
|
885
|
+
return {
|
|
886
|
+
pose: roomEyeView(placedRoom.outline, placedRoom.holes, inside.bounds.min[1], {
|
|
887
|
+
aim: aimBox && [
|
|
888
|
+
(aimBox.min[0] + aimBox.max[0]) / 2,
|
|
889
|
+
(aimBox.min[1] + aimBox.max[1]) / 2,
|
|
890
|
+
(aimBox.min[2] + aimBox.max[2]) / 2,
|
|
891
|
+
],
|
|
892
|
+
side: typeof from === 'string' ? (from === 'above' ? undefined : COMPASS[from]) : from,
|
|
893
|
+
eyeHeight,
|
|
894
|
+
fov,
|
|
895
|
+
}),
|
|
896
|
+
size: sized(VIEW_SIZE.w, VIEW_SIZE.h, input.maxPx),
|
|
897
|
+
...extras,
|
|
898
|
+
};
|
|
899
|
+
}
|
|
549
900
|
return {
|
|
550
|
-
pose: sceneViewPose(input.target || !inside
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
901
|
+
pose: sceneViewPose(input.target || !inside
|
|
902
|
+
? sceneViewBounds(nodes, input.target ?? solo?.id, presentation)
|
|
903
|
+
: placedRoom
|
|
904
|
+
? placedRoom.box
|
|
905
|
+
: inside.bounds, {
|
|
906
|
+
position,
|
|
907
|
+
elevation: lookDown ? INTERIOR_ELEVATION : elevation,
|
|
908
|
+
eyeHeight,
|
|
909
|
+
fov,
|
|
910
|
+
projection,
|
|
911
|
+
from,
|
|
554
912
|
}),
|
|
555
|
-
size:
|
|
556
|
-
...
|
|
557
|
-
...(interior ? { interior } : {}),
|
|
913
|
+
size: sized(VIEW_SIZE.w, VIEW_SIZE.h, input.maxPx),
|
|
914
|
+
...extras,
|
|
558
915
|
};
|
|
559
916
|
}
|
|
@@ -6,8 +6,8 @@ type SearchAssetsInput = {
|
|
|
6
6
|
}[];
|
|
7
7
|
};
|
|
8
8
|
/**
|
|
9
|
-
* `search_assets`: the host's item library, one group of hits per query. A miss
|
|
10
|
-
*
|
|
9
|
+
* `search_assets`: the host's item library, one group of hits per query. A miss names the other
|
|
10
|
+
* sources there are for the need, as a fact.
|
|
11
11
|
*/
|
|
12
12
|
export declare const searchAssets: AgentOperation<SearchAssetsInput>;
|
|
13
13
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search-assets.d.ts","sourceRoot":"","sources":["../../src/agent-operations/search-assets.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"search-assets.d.ts","sourceRoot":"","sources":["../../src/agent-operations/search-assets.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAE7C,KAAK,iBAAiB,GAAG;IAAE,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;CAAE,CAAA;AAY5E;;;GAGG;AACH,eAAO,MAAM,YAAY,EAAE,cAAc,CAAC,iBAAiB,CA0B1D,CAAA"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { refuse } from '../agent-tools/refusal.js';
|
|
2
|
+
import { OTHER_SOURCES } from '../agent-tools/sources.js';
|
|
2
3
|
function matches(item, { query, category }) {
|
|
3
4
|
if (category && item.category !== category)
|
|
4
5
|
return false;
|
|
@@ -10,8 +11,8 @@ function matches(item, { query, category }) {
|
|
|
10
11
|
.every((term) => haystack.includes(term));
|
|
11
12
|
}
|
|
12
13
|
/**
|
|
13
|
-
* `search_assets`: the host's item library, one group of hits per query. A miss
|
|
14
|
-
*
|
|
14
|
+
* `search_assets`: the host's item library, one group of hits per query. A miss names the other
|
|
15
|
+
* sources there are for the need, as a fact.
|
|
15
16
|
*/
|
|
16
17
|
export const searchAssets = (_nodes, { queries }, context) => {
|
|
17
18
|
const catalog = context.catalog;
|
|
@@ -35,7 +36,7 @@ export const searchAssets = (_nodes, { queries }, context) => {
|
|
|
35
36
|
groups,
|
|
36
37
|
total: groups.reduce((sum, group) => sum + group.total, 0),
|
|
37
38
|
...(missed.length && {
|
|
38
|
-
hint: `Nothing in the library matches ${missed.join(', ')}.
|
|
39
|
+
hint: `Nothing in the library matches ${missed.join(', ')}. ${OTHER_SOURCES}`,
|
|
39
40
|
}),
|
|
40
41
|
},
|
|
41
42
|
};
|
|
@@ -1,12 +1,18 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { MaterialCategory, MaterialSurface } from '../material-kinds.js';
|
|
2
2
|
import type { AgentOperation } from './types.js';
|
|
3
3
|
type SearchMaterialsInput = {
|
|
4
4
|
queries: {
|
|
5
|
-
query
|
|
5
|
+
query?: string;
|
|
6
|
+
kind?: MaterialCategory;
|
|
6
7
|
surface?: MaterialSurface;
|
|
8
|
+
offset?: number;
|
|
7
9
|
}[];
|
|
8
10
|
};
|
|
9
|
-
/**
|
|
11
|
+
/**
|
|
12
|
+
* `search_materials`: the library's materials by words, best first, and the words none answers;
|
|
13
|
+
* without a query, a browse of a kind, a surface or the whole library. Either lists a page at a
|
|
14
|
+
* time, saying how many more there are and the offset that lists them.
|
|
15
|
+
*/
|
|
10
16
|
export declare const searchMaterials: AgentOperation<SearchMaterialsInput>;
|
|
11
17
|
export {};
|
|
12
18
|
//# sourceMappingURL=search-materials.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search-materials.d.ts","sourceRoot":"","sources":["../../src/agent-operations/search-materials.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"search-materials.d.ts","sourceRoot":"","sources":["../../src/agent-operations/search-materials.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAM1E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAE7C,KAAK,oBAAoB,GAAG;IAC1B,OAAO,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,gBAAgB,CAAC;QAAC,OAAO,CAAC,EAAE,eAAe,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;CACnG,CAAA;AA+HD;;;;GAIG;AACH,eAAO,MAAM,eAAe,EAAE,cAAc,CAAC,oBAAoB,CAkDhE,CAAA"}
|