@ifc-lite/mcp 0.22.1 → 0.24.1
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/README.md +82 -0
- package/dist/cli.js +2 -1
- package/dist/cli.js.map +1 -1
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +5 -0
- package/dist/context.js.map +1 -1
- package/dist/errors.d.ts +2 -0
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +2 -0
- package/dist/errors.js.map +1 -1
- package/dist/headless-backend-align.d.ts +6 -0
- package/dist/headless-backend-align.d.ts.map +1 -0
- package/dist/headless-backend-align.js +35 -0
- package/dist/headless-backend-align.js.map +1 -0
- package/dist/headless-backend-modelling.d.ts +50 -0
- package/dist/headless-backend-modelling.d.ts.map +1 -0
- package/dist/headless-backend-modelling.js +128 -0
- package/dist/headless-backend-modelling.js.map +1 -0
- package/dist/headless-backend-room.d.ts +8 -0
- package/dist/headless-backend-room.d.ts.map +1 -0
- package/dist/headless-backend-room.js +24 -0
- package/dist/headless-backend-room.js.map +1 -0
- package/dist/headless-backend-store-stubs.d.ts +5 -4
- package/dist/headless-backend-store-stubs.d.ts.map +1 -1
- package/dist/headless-backend-store-stubs.js +1 -17
- package/dist/headless-backend-store-stubs.js.map +1 -1
- package/dist/headless-backend-store.d.ts +8 -0
- package/dist/headless-backend-store.d.ts.map +1 -0
- package/dist/headless-backend-store.js +38 -0
- package/dist/headless-backend-store.js.map +1 -0
- package/dist/headless-backend.d.ts +4 -1
- package/dist/headless-backend.d.ts.map +1 -1
- package/dist/headless-backend.js +8 -33
- package/dist/headless-backend.js.map +1 -1
- package/dist/headless-native-geometry.d.ts +6 -0
- package/dist/headless-native-geometry.d.ts.map +1 -0
- package/dist/headless-native-geometry.js +31 -0
- package/dist/headless-native-geometry.js.map +1 -0
- package/dist/headless-room-geometry.d.ts +9 -0
- package/dist/headless-room-geometry.d.ts.map +1 -0
- package/dist/headless-room-geometry.js +66 -0
- package/dist/headless-room-geometry.js.map +1 -0
- package/dist/protocol/types.d.ts +1 -0
- package/dist/protocol/types.d.ts.map +1 -1
- package/dist/resources/providers.d.ts.map +1 -1
- package/dist/resources/providers.js +10 -1
- package/dist/resources/providers.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +5 -17
- package/dist/server.js.map +1 -1
- package/dist/session-cleanup.d.ts +5 -0
- package/dist/session-cleanup.d.ts.map +1 -0
- package/dist/session-cleanup.js +36 -0
- package/dist/session-cleanup.js.map +1 -0
- package/dist/test/live-tool-session.d.ts +9 -0
- package/dist/test/live-tool-session.d.ts.map +1 -0
- package/dist/test/live-tool-session.js +30 -0
- package/dist/test/live-tool-session.js.map +1 -0
- package/dist/tools/bcf.js +2 -2
- package/dist/tools/bcf.js.map +1 -1
- package/dist/tools/copy-elements.d.ts +4 -0
- package/dist/tools/copy-elements.d.ts.map +1 -0
- package/dist/tools/copy-elements.js +76 -0
- package/dist/tools/copy-elements.js.map +1 -0
- package/dist/tools/design-place.d.ts +3 -0
- package/dist/tools/design-place.d.ts.map +1 -0
- package/dist/tools/design-place.js +79 -0
- package/dist/tools/design-place.js.map +1 -0
- package/dist/tools/discovery.js +3 -3
- package/dist/tools/discovery.js.map +1 -1
- package/dist/tools/export.js +7 -7
- package/dist/tools/export.js.map +1 -1
- package/dist/tools/flow-ai.d.ts +6 -0
- package/dist/tools/flow-ai.d.ts.map +1 -0
- package/dist/tools/flow-ai.js +23 -0
- package/dist/tools/flow-ai.js.map +1 -0
- package/dist/tools/flow-host.d.ts +1 -1
- package/dist/tools/flow-host.d.ts.map +1 -1
- package/dist/tools/flow-host.js +5 -1
- package/dist/tools/flow-host.js.map +1 -1
- package/dist/tools/flow-review-host.d.ts +28 -0
- package/dist/tools/flow-review-host.d.ts.map +1 -0
- package/dist/tools/flow-review-host.js +142 -0
- package/dist/tools/flow-review-host.js.map +1 -0
- package/dist/tools/flow.d.ts.map +1 -1
- package/dist/tools/flow.js +147 -93
- package/dist/tools/flow.js.map +1 -1
- package/dist/tools/hosted-edit.d.ts +4 -0
- package/dist/tools/hosted-edit.d.ts.map +1 -0
- package/dist/tools/hosted-edit.js +37 -0
- package/dist/tools/hosted-edit.js.map +1 -0
- package/dist/tools/hosted-place.d.ts +3 -0
- package/dist/tools/hosted-place.d.ts.map +1 -0
- package/dist/tools/hosted-place.js +63 -0
- package/dist/tools/hosted-place.js.map +1 -0
- package/dist/tools/ids-accessor.d.ts +2 -1
- package/dist/tools/ids-accessor.d.ts.map +1 -1
- package/dist/tools/ids-accessor.js.map +1 -1
- package/dist/tools/ids-authoring-model.d.ts +3 -0
- package/dist/tools/ids-authoring-model.d.ts.map +1 -0
- package/dist/tools/ids-authoring-model.js +112 -0
- package/dist/tools/ids-authoring-model.js.map +1 -0
- package/dist/tools/ids-authoring.d.ts +3 -0
- package/dist/tools/ids-authoring.d.ts.map +1 -0
- package/dist/tools/ids-authoring.js +202 -0
- package/dist/tools/ids-authoring.js.map +1 -0
- package/dist/tools/ids-schema.d.ts +3 -0
- package/dist/tools/ids-schema.d.ts.map +1 -0
- package/dist/tools/ids-schema.js +91 -0
- package/dist/tools/ids-schema.js.map +1 -0
- package/dist/tools/index.d.ts +5 -2
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +8 -2
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/layer-store.d.ts +2 -0
- package/dist/tools/layer-store.d.ts.map +1 -1
- package/dist/tools/layer-store.js +4 -0
- package/dist/tools/layer-store.js.map +1 -1
- package/dist/tools/mutate.d.ts.map +1 -1
- package/dist/tools/mutate.js +20 -64
- package/dist/tools/mutate.js.map +1 -1
- package/dist/tools/mutation-undo.d.ts +6 -0
- package/dist/tools/mutation-undo.d.ts.map +1 -0
- package/dist/tools/mutation-undo.js +63 -0
- package/dist/tools/mutation-undo.js.map +1 -0
- package/dist/tools/physical-edit.d.ts +4 -0
- package/dist/tools/physical-edit.d.ts.map +1 -0
- package/dist/tools/physical-edit.js +77 -0
- package/dist/tools/physical-edit.js.map +1 -0
- package/dist/tools/query-tools.d.ts +3 -0
- package/dist/tools/query-tools.d.ts.map +1 -0
- package/dist/tools/query-tools.js +8 -0
- package/dist/tools/query-tools.js.map +1 -0
- package/dist/tools/query.d.ts +1 -1
- package/dist/tools/query.d.ts.map +1 -1
- package/dist/tools/query.js +4 -4
- package/dist/tools/query.js.map +1 -1
- package/dist/tools/room-command.d.ts +6 -0
- package/dist/tools/room-command.d.ts.map +1 -0
- package/dist/tools/room-command.js +75 -0
- package/dist/tools/room-command.js.map +1 -0
- package/dist/tools/util.d.ts +10 -0
- package/dist/tools/util.d.ts.map +1 -1
- package/dist/tools/util.js +13 -1
- package/dist/tools/util.js.map +1 -1
- package/dist/tools/validation.d.ts +9 -0
- package/dist/tools/validation.d.ts.map +1 -1
- package/dist/tools/validation.js +3 -3
- package/dist/tools/validation.js.map +1 -1
- package/dist/tools/wall-join.d.ts +3 -0
- package/dist/tools/wall-join.d.ts.map +1 -0
- package/dist/tools/wall-join.js +39 -0
- package/dist/tools/wall-join.js.map +1 -0
- package/dist/transport/http-helpers.d.ts +85 -0
- package/dist/transport/http-helpers.d.ts.map +1 -0
- package/dist/transport/http-helpers.js +149 -0
- package/dist/transport/http-helpers.js.map +1 -0
- package/dist/transport/http.d.ts +14 -1
- package/dist/transport/http.d.ts.map +1 -1
- package/dist/transport/http.js +80 -90
- package/dist/transport/http.js.map +1 -1
- package/dist/validate.d.ts +1 -1
- package/dist/validate.js +3 -0
- package/dist/validate.js.map +1 -1
- package/package.json +24 -21
package/README.md
CHANGED
|
@@ -27,6 +27,33 @@ npx @ifc-lite/mcp ./model.ifc --viewer
|
|
|
27
27
|
npx @ifc-lite/mcp ./model.ifc --open
|
|
28
28
|
```
|
|
29
29
|
|
|
30
|
+
## Embedded loaded-model authoring
|
|
31
|
+
|
|
32
|
+
For embedded HTTP servers, `HttpTransport` accepts `maxSessions` (default
|
|
33
|
+
1000, including pending factory builds) and `sessionIdleMs` (default 30
|
|
34
|
+
minutes). At capacity it admits a new session only if a slot is free or an
|
|
35
|
+
idle session can be reclaimed without unpublished drafts, active requests,
|
|
36
|
+
or open event streams. Otherwise initialization returns `503
|
|
37
|
+
session-capacity`; an unknown session returns `404 unknown-session` and must
|
|
38
|
+
initialize again. See the [embedding guide](https://github.com/LTplus-AG/ifc-lite/blob/main/docs/guide/mcp.md#programmatic-embedding)
|
|
39
|
+
for the idle-window and response contract.
|
|
40
|
+
|
|
41
|
+
`loadIfcModel` returns a model whose `bim.store` supports the existing
|
|
42
|
+
`addElementType`, `assignType`, `addMaterial`, `addMaterialLayerSet`,
|
|
43
|
+
`addMaterialLayerSetUsage` and `assignMaterial` SDK methods. They delegate to
|
|
44
|
+
shared schema-aware builders, convert metre dimensions to native units, and
|
|
45
|
+
record each call as one complete public `mutation_undo` operation. Late schema
|
|
46
|
+
refusals leave no partial helpers. These embedded methods are distinct from
|
|
47
|
+
the JSON-RPC tool names; see the [programmatic embedding guide](https://github.com/LTplus-AG/ifc-lite/blob/main/docs/guide/mcp.md#programmatic-embedding).
|
|
48
|
+
|
|
49
|
+
`addStair`, `addRailing` and `removeStair` use the same canonical SDK factory.
|
|
50
|
+
`removeStair` removes a uniquely owned parent/flight pair atomically, retaining
|
|
51
|
+
shared shape/style leaves and refusing ambiguous ownership or foreign product
|
|
52
|
+
references. Public `run_flow` routes `element.stair` / `element.railing` through
|
|
53
|
+
`model.addElement`; each successful graph creation has one `mutation_undo`.
|
|
54
|
+
Tracking is fresh per RPC call, so cross-call update/remove needs a persistent
|
|
55
|
+
caller-owned tracking store. No separate creation or Redo RPC is added.
|
|
56
|
+
|
|
30
57
|
## 3D viewer integration
|
|
31
58
|
|
|
32
59
|
The server bundles the same WebGL viewer used by `ifc-lite view`. Once it is
|
|
@@ -93,13 +120,34 @@ The same `npx` command works as a stdio server in any MCP-aware client.
|
|
|
93
120
|
| Query | `query_entities`, `count_entities`, `get_entity`, `get_entities_bulk`, `spatial_hierarchy`, `containment_chain`, `relationships`, `properties_unique`, `materials_list`, `classifications_list`, `georeferencing`, `units`, `cost_data`, `cost_evaluate` |
|
|
94
121
|
| Geometry | `geometry_bbox`, `geometry_volume`, `geometry_area`, `geometry_get`, `raycast`, `clash_check`, `clash_matrix` |
|
|
95
122
|
| Validation | `ids_validate`, `ids_explain`, `model_audit`, `gherkin_check` |
|
|
123
|
+
| IDS authoring | `ids_audit`, `ids_lint`, `ids_read`, `ids_apply_ops` (grounding-gated), `ids_write`, `ids_schema_search`, `ids_schema_entity`, `ids_schema_pset`, `ids_diff`, `ids_preview`, `ids_infer`, `ids_coverage`, `ids_test` |
|
|
96
124
|
| Mutation | `entity_set_property`, `entity_delete_property`, `entity_set_attribute`, `entity_create`, `entity_delete`, `mutation_batch`, `mutation_undo`, `mutation_diff`, `model_save` |
|
|
125
|
+
| Hosted modelling | `place_opening`, `place_door`, `place_window` |
|
|
126
|
+
| Design modelling | `place_curtain_wall`, `place_grid`, `place_grid_column` |
|
|
127
|
+
| Physical edits | `edit_hosted_element`, `edit_element_geometry`, `copy_elements`, `duplicate_element`, `array_elements` |
|
|
128
|
+
| Native Room | `query_rooms`, `room_command` |
|
|
129
|
+
| Wall joins | `join_walls` |
|
|
97
130
|
| BCF | `bcf_topic_list`, `bcf_topic_create`, `bcf_topic_update`, `bcf_topic_close`, `bcf_viewpoint_create`, `bcf_export` |
|
|
98
131
|
| bSDD | `bsdd_search`, `bsdd_class`, `bsdd_property_sets`, `bsdd_match` |
|
|
99
132
|
| Diff | `model_diff` (`by_content` for content-keyed matching), `quantity_diff` |
|
|
100
133
|
| Export | `export_ifc`, `export_csv`, `export_json`, `export_glb`, `export_obj`, `export_ifcx`, `export_pdf_report` |
|
|
101
134
|
| Viewer | `viewer_ask`, `viewer_open`, `viewer_close`, `viewer_status`, `viewer_colorize`, `viewer_isolate`, `viewer_hide`, `viewer_show`, `viewer_reset`, `viewer_fly_to`, `viewer_set_section`, `viewer_clear_section`, `viewer_color_by_storey`, `viewer_color_by_property`, `viewer_get_selection`, `viewer_wait_for_selection`, `viewer_describe_selection` |
|
|
102
135
|
|
|
136
|
+
`join_walls` joins two straight walls in the same placement frame through the
|
|
137
|
+
viewer/SDK core. It writes `IfcRelConnectsPathElements` and rewrites bodies and
|
|
138
|
+
axes atomically. Hosted openings must fit both joined end faces; unreadable cuts
|
|
139
|
+
refuse the operation. One `mutation_undo` restores the complete earlier graph,
|
|
140
|
+
including replaced profiles, axes and relationships.
|
|
141
|
+
|
|
142
|
+
`place_opening`, `place_door` and `place_window` use the viewer/SDK's shared
|
|
143
|
+
hosted creation core. Pass `host_express_id`, optional `model_id` (required
|
|
144
|
+
with several loaded models), and PascalCase `params`: `Offset`, `Width`,
|
|
145
|
+
`Height`, optional `Sill` (required for a window). Lengths are metres in the
|
|
146
|
+
wall's frame. Cuts must fit and avoid existing source/overlay openings;
|
|
147
|
+
unreadable geometry is refused. The void/fill graph is written atomically,
|
|
148
|
+
and one `mutation_undo` removes it. These writes reach IFC export; geometry
|
|
149
|
+
tools continue to read the parsed model.
|
|
150
|
+
|
|
103
151
|
`entity_create` accepts an optional `global_id` for the new entity's GlobalId
|
|
104
152
|
(IfcRoot subtypes only; written to attribute 0). It must be a valid 22-character
|
|
105
153
|
IFC GUID not already carried by an entity in the model; an invalid or duplicate
|
|
@@ -228,3 +276,37 @@ See the [ifc-lite docs](https://ifclite.dev/docs/) for the full
|
|
|
228
276
|
platform documentation.
|
|
229
277
|
|
|
230
278
|
Licensed under MPL-2.0.
|
|
279
|
+
|
|
280
|
+
Loaded-model physical edits use the same command cores as the viewer and typed
|
|
281
|
+
SDK. `edit_element_geometry` handles Move/Rotate, Size, Wall Endpoints, Split and
|
|
282
|
+
Trim/Extend. `copy_elements`, `duplicate_element` and `array_elements` carry
|
|
283
|
+
hosted graph records and share the viewer placement and naming policies.
|
|
284
|
+
References are model-local EXPRESS IDs; offsets use IFC storey-local metres
|
|
285
|
+
and planar rotations use radians. Every write is one `mutation_undo` batch;
|
|
286
|
+
unsupported sources and unsafe shared geometry refuse before committing.
|
|
287
|
+
See the [MCP guide](https://github.com/LTplus-AG/ifc-lite/blob/main/docs/guide/mcp.md)
|
|
288
|
+
for parameter contracts.
|
|
289
|
+
|
|
290
|
+
`room_command` derives Room candidates from the current native geometry and
|
|
291
|
+
runs Auto/Pick/Footprint/Update or layout Drag/Split/Remove/Prune through the
|
|
292
|
+
shared Room core. It requires the WASM runtime. Query does not write; writes
|
|
293
|
+
record one complete Undo batch. Model removal and session termination free
|
|
294
|
+
retained native layout handles. Unsupported schema/storey planes return
|
|
295
|
+
`INVALID_INPUT`; unavailable native initialization returns
|
|
296
|
+
`UNSUPPORTED_OPERATION`. Unexpected export, parse, processing or runtime
|
|
297
|
+
import failures return `INTERNAL_ERROR`; cancellation and state conflicts
|
|
298
|
+
retain their distinct retryable codes.
|
|
299
|
+
|
|
300
|
+
AI Flow nodes use explicit host environment configuration (`IFC_LITE_AI_MODEL`,
|
|
301
|
+
`IFC_LITE_AI_API_KEY`, optional `IFC_LITE_AI_BASE_URL`). Review-capable runs require
|
|
302
|
+
a new allowed `checkpoint_path` and return a pending artifact. A separate
|
|
303
|
+
`resume_flow` with the exact `approved_digest` rechecks native source state and
|
|
304
|
+
current scope, restores the original budget and consumes one durable disk claim.
|
|
305
|
+
See the [MCP guide](../../docs/guide/mcp.md) for further pauses and refusals.
|
|
306
|
+
|
|
307
|
+
`propose_flow` lets a read-only MCP caller run a native read/AI-only graph to
|
|
308
|
+
a pending artifact. It rejects declared or node-defined effects and permits
|
|
309
|
+
only `model.read` and `network.ai`. The current read scope and model allowlist
|
|
310
|
+
still apply; the separate `resume_flow` requires current mutate authorization.
|
|
311
|
+
MCP responses and checkpoint budgets include provider usage receipts without
|
|
312
|
+
prompts, replies or credentials; receipt history survives subsequent pauses.
|
package/dist/cli.js
CHANGED
|
@@ -20,6 +20,7 @@ import { createMCPServer, VERSION } from './index.js';
|
|
|
20
20
|
import { loadIfcModel } from './loader.js';
|
|
21
21
|
import { fullScope, readOnlyScope } from './auth/scope.js';
|
|
22
22
|
import { InMemoryModelRegistry } from './context.js';
|
|
23
|
+
import { fmtInt } from './tools/util.js';
|
|
23
24
|
function printHelp() {
|
|
24
25
|
process.stdout.write(`
|
|
25
26
|
ifc-lite-mcp v${VERSION} — Model Context Protocol server for ifc-lite
|
|
@@ -97,7 +98,7 @@ async function main() {
|
|
|
97
98
|
const m = await loadIfcModel(resolve(file), { allowedPaths: opts.allowedPaths });
|
|
98
99
|
registry.add(m);
|
|
99
100
|
// Use stderr — stdout is sacred for the JSON-RPC channel.
|
|
100
|
-
process.stderr.write(`[ifc-lite-mcp] loaded ${m.name} (${m.id}) — ${m.store.entityCount
|
|
101
|
+
process.stderr.write(`[ifc-lite-mcp] loaded ${m.name} (${m.id}) — ${fmtInt(m.store.entityCount)} entities\n`);
|
|
101
102
|
}
|
|
102
103
|
const server = createMCPServer({
|
|
103
104
|
version: VERSION,
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;+DAE+D;AAE/D;;;;;;;;;GASG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,YAAY,EAA+C,MAAM,qBAAqB,CAAC;AAChI,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,aAAa,EAAkB,MAAM,iBAAiB,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/context.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,UAAU,CAAC;IAChB,KAAK,EAAE,YAAY,CAAC;IACpB,4FAA4F;IAC5F,OAAO,EAAE,mBAAmB,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;;OAMG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,IAAI,WAAW,EAAE,CAAC;IACtB,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAAC;IACpC;;;;;OAKG;IACH,OAAO,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAAC;IACzC,GAAG,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAAC;IAC9B,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;IAC5B,KAAK,IAAI,MAAM,CAAC;CACjB;AAED,qBAAa,qBAAsB,YAAW,aAAa;IACzD,OAAO,CAAC,MAAM,CAAkC;IAEhD,IAAI,IAAI,WAAW,EAAE;IAIrB,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI;IAInC,OAAO,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI;IASxC,GAAG,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"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"}
|
package/dist/context.js
CHANGED
|
@@ -19,9 +19,14 @@ export class InMemoryModelRegistry {
|
|
|
19
19
|
return null;
|
|
20
20
|
}
|
|
21
21
|
add(model) {
|
|
22
|
+
const previous = this.models.get(model.id);
|
|
23
|
+
if (previous && previous !== model)
|
|
24
|
+
previous.backend.dispose();
|
|
22
25
|
this.models.set(model.id, model);
|
|
26
|
+
model.backend.setPeerScopes(() => this.list().filter(peer => peer !== model).map(peer => ({ dataStore: peer.store, view: peer.backend.getMutationView() })));
|
|
23
27
|
}
|
|
24
28
|
remove(id) {
|
|
29
|
+
this.models.get(id)?.backend.dispose();
|
|
25
30
|
return this.models.delete(id);
|
|
26
31
|
}
|
|
27
32
|
count() {
|
package/dist/context.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAyD/D,MAAM,OAAO,qBAAqB;IACxB,MAAM,GAAG,IAAI,GAAG,EAAuB,CAAC;IAEhD,IAAI;QACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED,GAAG,CAAC,EAAU;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC;IACrC,CAAC;IAED,OAAO,CAAC,EAAW;QACjB,IAAI,EAAE;YAAE,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC;QAC3C,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAgC,CAAC;YAC1E,OAAO,IAAI,IAAI,IAAI,CAAC;QACtB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,GAAG,CAAC,KAAkB;QACpB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAyD/D,MAAM,OAAO,qBAAqB;IACxB,MAAM,GAAG,IAAI,GAAG,EAAuB,CAAC;IAEhD,IAAI;QACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED,GAAG,CAAC,EAAU;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC;IACrC,CAAC;IAED,OAAO,CAAC,EAAW;QACjB,IAAI,EAAE;YAAE,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC;QAC3C,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAgC,CAAC;YAC1E,OAAO,IAAI,IAAI,IAAI,CAAC;QACtB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,GAAG,CAAC,KAAkB;QACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC3C,IAAI,QAAQ,IAAI,QAAQ,KAAK,KAAK;YAAE,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QAC/D,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QACjC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/J,CAAC;IAED,MAAM,CAAC,EAAU;QACf,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;QACvC,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAChC,CAAC;IAED,KAAK;QACH,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;IAC1B,CAAC;CACF;AAMD,MAAM,CAAC,MAAM,aAAa,GAAqB;IAC7C,MAAM,KAA4C,CAAC;CACpD,CAAC;AAQF,MAAM,CAAC,MAAM,aAAa,GAAW;IACnC,GAAG,KAAyD,CAAC;CAC9D,CAAC;AA0CF,MAAM,CAAC,MAAM,cAAc,GAAiB;IAC1C,QAAQ,EAAE,KAAK;IACf,eAAe,EAAE,KAAK;CACvB,CAAC"}
|
package/dist/errors.d.ts
CHANGED
|
@@ -11,6 +11,8 @@ export declare const ToolErrorCode: {
|
|
|
11
11
|
readonly MODEL_NOT_FOUND: "MODEL_NOT_FOUND";
|
|
12
12
|
readonly MODEL_REQUIRED: "MODEL_REQUIRED";
|
|
13
13
|
readonly INVALID_INPUT: "INVALID_INPUT";
|
|
14
|
+
readonly CANCELLED: "CANCELLED";
|
|
15
|
+
readonly STATE_CHANGED: "STATE_CHANGED";
|
|
14
16
|
readonly UNSUPPORTED_OPERATION: "UNSUPPORTED_OPERATION";
|
|
15
17
|
readonly PERMISSION_DENIED: "PERMISSION_DENIED";
|
|
16
18
|
readonly READ_ONLY: "READ_ONLY";
|
package/dist/errors.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAIA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D,eAAO,MAAM,aAAa
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAIA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D,eAAO,MAAM,aAAa;;;;;;;;;;;;;;CAchB,CAAC;AAEX,MAAM,MAAM,kBAAkB,GAAG,OAAO,aAAa,CAAC,MAAM,OAAO,aAAa,CAAC,CAAC;AAElF,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,kBAAkB,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,gBAAgB,GAAG,cAAc,CAWhE;AAED,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC;IAClC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3C,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;gBAEX,IAAI,EAAE,gBAAgB;IAQlC,YAAY,IAAI,cAAc;CAQ/B"}
|
package/dist/errors.js
CHANGED
|
@@ -6,6 +6,8 @@ export const ToolErrorCode = {
|
|
|
6
6
|
MODEL_NOT_FOUND: 'MODEL_NOT_FOUND',
|
|
7
7
|
MODEL_REQUIRED: 'MODEL_REQUIRED',
|
|
8
8
|
INVALID_INPUT: 'INVALID_INPUT',
|
|
9
|
+
CANCELLED: 'CANCELLED',
|
|
10
|
+
STATE_CHANGED: 'STATE_CHANGED',
|
|
9
11
|
UNSUPPORTED_OPERATION: 'UNSUPPORTED_OPERATION',
|
|
10
12
|
PERMISSION_DENIED: 'PERMISSION_DENIED',
|
|
11
13
|
READ_ONLY: 'READ_ONLY',
|
package/dist/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAY/D,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,gBAAgB,EAAE,kBAAkB;IACpC,eAAe,EAAE,iBAAiB;IAClC,cAAc,EAAE,gBAAgB;IAChC,aAAa,EAAE,eAAe;IAC9B,qBAAqB,EAAE,uBAAuB;IAC9C,iBAAiB,EAAE,mBAAmB;IACtC,SAAS,EAAE,WAAW;IACtB,YAAY,EAAE,cAAc;IAC5B,uBAAuB,EAAE,yBAAyB;IAClD,YAAY,EAAE,cAAc;IAC5B,cAAc,EAAE,gBAAgB;CACxB,CAAC;AAWX,MAAM,UAAU,SAAS,CAAC,IAAsB;IAC9C,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;QAC/C,iBAAiB,EAAE;YACjB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,EAAE;YAC3B,IAAI,EAAE,IAAI,CAAC,IAAI;SAChB;QACD,OAAO,EAAE,IAAI;KACd,CAAC;AACJ,CAAC;AAED,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAClC,IAAI,CAAqB;IACzB,OAAO,CAA2B;IAClC,IAAI,CAAU;IAEvB,YAAY,IAAsB;QAChC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACpB,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;QACjC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACtB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACxB,CAAC;IAED,YAAY;QACV,OAAO,SAAS,CAAC;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,IAAI,EAAE,IAAI,CAAC,IAAI;SAChB,CAAC,CAAC;IACL,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAY/D,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,gBAAgB,EAAE,kBAAkB;IACpC,eAAe,EAAE,iBAAiB;IAClC,cAAc,EAAE,gBAAgB;IAChC,aAAa,EAAE,eAAe;IAC9B,SAAS,EAAE,WAAW;IACtB,aAAa,EAAE,eAAe;IAC9B,qBAAqB,EAAE,uBAAuB;IAC9C,iBAAiB,EAAE,mBAAmB;IACtC,SAAS,EAAE,WAAW;IACtB,YAAY,EAAE,cAAc;IAC5B,uBAAuB,EAAE,yBAAyB;IAClD,YAAY,EAAE,cAAc;IAC5B,cAAc,EAAE,gBAAgB;CACxB,CAAC;AAWX,MAAM,UAAU,SAAS,CAAC,IAAsB;IAC9C,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;QAC/C,iBAAiB,EAAE;YACjB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,EAAE;YAC3B,IAAI,EAAE,IAAI,CAAC,IAAI;SAChB;QACD,OAAO,EAAE,IAAI;KACd,CAAC;AACJ,CAAC;AAED,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAClC,IAAI,CAAqB;IACzB,OAAO,CAA2B;IAClC,IAAI,CAAU;IAEvB,YAAY,IAAsB;QAChC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACpB,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;QACjC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACtB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACxB,CAAC;IAED,YAAY;QACV,OAAO,SAAS,CAAC;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,IAAI,EAAE,IAAI,CAAC,IAAI;SAChB,CAAC,CAAC;IACL,CAAC;CACF"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { type AlignGeometryProvider, type ModellingStoreModelResolver } from '@ifc-lite/sdk';
|
|
2
|
+
export declare const provideHeadlessAlignGeometry: AlignGeometryProvider;
|
|
3
|
+
export declare function createHeadlessAlignBackend(resolve: ModellingStoreModelResolver): {
|
|
4
|
+
alignElements(modelId: string, reference: number, targets: readonly number[], mode: import("@ifc-lite/create").AlignMode): Promise<import("@ifc-lite/sdk").EntityRef[]>;
|
|
5
|
+
};
|
|
6
|
+
//# sourceMappingURL=headless-backend-align.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"headless-backend-align.d.ts","sourceRoot":"","sources":["../src/headless-backend-align.ts"],"names":[],"mappings":"AAIA,OAAO,EAA6B,KAAK,qBAAqB,EAAE,KAAK,2BAA2B,EAAE,MAAM,eAAe,CAAC;AAKxH,eAAO,MAAM,4BAA4B,EAAE,qBAevC,CAAC;AAEL,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,2BAA2B;;EAQ9E"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
|
+
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
|
+
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
|
+
import { createAlignCommandBackend } from '@ifc-lite/sdk';
|
|
5
|
+
import { planBoxOf, storeyPlanFrame, roomFramePlanOffsets, roomFrameToModelWorld, toStoreyLocal } from '@ifc-lite/create';
|
|
6
|
+
import { recordCompoundMutation, StoreEditor } from '@ifc-lite/mutations';
|
|
7
|
+
import { withHeadlessGeometry } from './headless-native-geometry.js';
|
|
8
|
+
export const provideHeadlessAlignGeometry = (model, storeyId, ids) => withHeadlessGeometry(model, source => {
|
|
9
|
+
const plan = storeyPlanFrame(source, storeyId);
|
|
10
|
+
if (!plan)
|
|
11
|
+
throw new Error('Align storey placement is not a supported upright plane');
|
|
12
|
+
return plan;
|
|
13
|
+
}, (plan, meshes, coord) => {
|
|
14
|
+
const { cx, cy } = roomFramePlanOffsets(coord), { dx, dy } = roomFrameToModelWorld(coord);
|
|
15
|
+
const boxes = new Map();
|
|
16
|
+
for (const id of ids) {
|
|
17
|
+
const box = planBoxOf(meshes, id, { renderToLocal: ([x, y, z]) => {
|
|
18
|
+
const [u, v] = toStoreyLocal(plan, [x + cx + dx, -z + cy + dy]);
|
|
19
|
+
return [u, v, y];
|
|
20
|
+
} });
|
|
21
|
+
if (box)
|
|
22
|
+
boxes.set(id, box);
|
|
23
|
+
}
|
|
24
|
+
return boxes;
|
|
25
|
+
});
|
|
26
|
+
export function createHeadlessAlignBackend(resolve) {
|
|
27
|
+
return createAlignCommandBackend(resolve, provideHeadlessAlignGeometry, {
|
|
28
|
+
historyHead: modelId => resolve(modelId).mutationView.getMutations().map(m => m.id).join('|'),
|
|
29
|
+
record: (modelId, write) => {
|
|
30
|
+
const model = resolve(modelId);
|
|
31
|
+
return recordCompoundMutation(model.mutationView, mutationView => write({ ...model, mutationView, editor: new StoreEditor(model.store, mutationView) }));
|
|
32
|
+
},
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=headless-backend-align.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"headless-backend-align.js","sourceRoot":"","sources":["../src/headless-backend-align.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D,OAAO,EAAE,yBAAyB,EAAgE,MAAM,eAAe,CAAC;AACxH,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,aAAa,EAAgB,MAAM,kBAAkB,CAAC;AACxI,OAAO,EAAE,sBAAsB,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC1E,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAErE,MAAM,CAAC,MAAM,4BAA4B,GAA0B,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,CAAC,oBAAoB,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE;IAC9H,MAAM,IAAI,GAAG,eAAe,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC/C,IAAI,CAAC,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;IACtF,OAAO,IAAI,CAAC;AACd,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE;IACzB,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,oBAAoB,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;IAC1F,MAAM,KAAK,GAAG,IAAI,GAAG,EAAmB,CAAC;IACzC,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;QACrB,MAAM,GAAG,GAAG,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE;gBAC/D,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;gBAChE,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YACnB,CAAC,EAAE,CAAC,CAAC;QACL,IAAI,GAAG;YAAE,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;IAC9B,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC,CAAC;AAEL,MAAM,UAAU,0BAA0B,CAAC,OAAoC;IAC7E,OAAO,yBAAyB,CAAC,OAAO,EAAE,4BAA4B,EAAE;QACtE,WAAW,EAAE,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QAC7F,MAAM,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;YACzB,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;YAC/B,OAAO,sBAAsB,CAAC,KAAK,CAAC,YAAY,EAAE,YAAY,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,GAAG,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,WAAW,CAAC,KAAK,CAAC,KAAK,EAAE,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3J,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/** Ordinary creation, placement and wall joins use the shared SDK factories (#6232 D5).
|
|
2
|
+
* Shared compound recording preserves every earlier overlay record for undo. */
|
|
3
|
+
import { type ModellingStoreModelResolver } from '@ifc-lite/sdk';
|
|
4
|
+
export declare function createRecordedModellingBackend(resolve: ModellingStoreModelResolver): {
|
|
5
|
+
transformElements: (modelId: string, expressIds: readonly number[], operation: import("@ifc-lite/create").StoreyTransformOp) => import("@ifc-lite/sdk").EntityRef[];
|
|
6
|
+
setElementSize: (ref: import("@ifc-lite/sdk").EntityRef, patch: import("@ifc-lite/sdk").PhysicalSizePatch) => import("@ifc-lite/sdk").EntityRef[];
|
|
7
|
+
resizeWall: (ref: import("@ifc-lite/sdk").EntityRef, start: [number, number, number], end: [number, number, number], options?: {
|
|
8
|
+
moveJoinedEnds?: boolean;
|
|
9
|
+
} | undefined) => import("@ifc-lite/sdk").EntityRef[];
|
|
10
|
+
splitElements: (modelId: string, requests: readonly import("@ifc-lite/create").ElementSplitRequest[]) => {
|
|
11
|
+
source: import("@ifc-lite/sdk").EntityRef;
|
|
12
|
+
added: import("@ifc-lite/sdk").EntityRef;
|
|
13
|
+
left: import("@ifc-lite/sdk").EntityRef;
|
|
14
|
+
right: import("@ifc-lite/sdk").EntityRef;
|
|
15
|
+
}[];
|
|
16
|
+
trimExtendElement: (ref: import("@ifc-lite/sdk").EntityRef, params: import("@ifc-lite/create").ElementTrimExtendParams) => import("@ifc-lite/sdk").EntityRef[];
|
|
17
|
+
copyElements: (modelId: string, expressIds: readonly number[], transforms: readonly import("@ifc-lite/create").CopyTransform[]) => import("@ifc-lite/sdk").EntityRef[];
|
|
18
|
+
duplicateElement: (ref: import("@ifc-lite/sdk").EntityRef, options: {
|
|
19
|
+
offset: [number, number, number];
|
|
20
|
+
Name?: string;
|
|
21
|
+
}) => import("@ifc-lite/sdk").EntityRef;
|
|
22
|
+
arrayElements: (modelId: string, expressIds: readonly number[], params: import("@ifc-lite/create").CopyArrayParams) => import("@ifc-lite/sdk").EntityRef[];
|
|
23
|
+
editHostedElement: (ref: import("@ifc-lite/sdk").EntityRef, patch: import("@ifc-lite/create").HostedElementEdit) => import("@ifc-lite/sdk").EntityRef;
|
|
24
|
+
addCurtainWall: (modelId: string, storeyExpressId: number, params: import("@ifc-lite/create").CurtainWallInStoreParams) => import("@ifc-lite/sdk").EntityRef;
|
|
25
|
+
addGrid: (modelId: string, storeyExpressId: number, params: import("@ifc-lite/create").GridInStoreParams) => import("@ifc-lite/sdk").EntityRef;
|
|
26
|
+
addColumnOnGrid: (modelId: string, storeyExpressId: number, params: import("@ifc-lite/create").ColumnInStoreParams | import("@ifc-lite/create").ProfiledColumnInStoreParams, binding: import("@ifc-lite/create").GridColumnBinding) => import("@ifc-lite/sdk").EntityRef;
|
|
27
|
+
replaceElement: (ref: import("@ifc-lite/sdk").EntityRef, storeyExpressId: number, element: import("@ifc-lite/create").InStoreReplacementElement) => import("@ifc-lite/sdk").EntityRef;
|
|
28
|
+
removeStair: (ref: Parameters<NonNullable<((ref: import("@ifc-lite/sdk").EntityRef) => boolean) | undefined>>[0]) => boolean;
|
|
29
|
+
addStair: (modelId: string, storeyExpressId: number, params: import("@ifc-lite/create").StairInStoreParams) => import("@ifc-lite/sdk").EntityRef;
|
|
30
|
+
addRailing: (modelId: string, storeyExpressId: number, params: import("@ifc-lite/create").RailingInStoreParams) => import("@ifc-lite/sdk").EntityRef;
|
|
31
|
+
addElementType: (modelId: string, params: import("@ifc-lite/create").ElementTypeInStoreParams) => import("@ifc-lite/sdk").EntityRef;
|
|
32
|
+
assignType: (modelId: string, typeExpressId: number, objectExpressIds: number[]) => import("@ifc-lite/sdk").EntityRef;
|
|
33
|
+
addMaterial: (modelId: string, params: import("@ifc-lite/create").MaterialInStoreParams) => import("@ifc-lite/sdk").EntityRef;
|
|
34
|
+
addMaterialLayerSet: (modelId: string, params: import("@ifc-lite/create").MaterialLayerSetInStoreParams) => import("@ifc-lite/sdk").EntityRef;
|
|
35
|
+
addMaterialLayerSetUsage: (modelId: string, params: import("@ifc-lite/create").MaterialLayerSetUsageInStoreParams) => import("@ifc-lite/sdk").EntityRef;
|
|
36
|
+
assignMaterial: (modelId: string, materialExpressId: number, objectExpressIds: number[]) => import("@ifc-lite/sdk").EntityRef;
|
|
37
|
+
addOpening: (modelId: string, hostExpressId: number, params: import("@ifc-lite/create").OpeningInStoreParams) => import("@ifc-lite/sdk").EntityRef;
|
|
38
|
+
addHostedDoor: (modelId: string, hostExpressId: number, params: import("@ifc-lite/create").HostedDoorInStoreParams) => import("@ifc-lite/sdk").EntityRef;
|
|
39
|
+
addHostedWindow: (modelId: string, hostExpressId: number, params: import("@ifc-lite/create").HostedWindowInStoreParams) => import("@ifc-lite/sdk").EntityRef;
|
|
40
|
+
joinWalls: (modelId: string, aExpressId: number, bExpressId: number, options?: import("@ifc-lite/create").WallJoinApplyOptions | undefined) => import("@ifc-lite/sdk").EntityRef;
|
|
41
|
+
addWall: (modelId: string, storeyExpressId: number, params: import("@ifc-lite/sdk").AddWallInStoreParams) => import("@ifc-lite/sdk").EntityRef;
|
|
42
|
+
addColumn: (modelId: string, storeyExpressId: number, params: import("@ifc-lite/create").ProfiledColumnInStoreParams | import("@ifc-lite/sdk").AddColumnInStoreParams) => import("@ifc-lite/sdk").EntityRef;
|
|
43
|
+
addSlab: (modelId: string, storeyExpressId: number, params: import("@ifc-lite/sdk").AddSlabInStoreParams) => import("@ifc-lite/sdk").EntityRef;
|
|
44
|
+
addBeam: (modelId: string, storeyExpressId: number, params: import("@ifc-lite/sdk").AddBeamInStoreParams | import("@ifc-lite/create").ProfiledBeamInStoreParams) => import("@ifc-lite/sdk").EntityRef;
|
|
45
|
+
addSpace: (modelId: string, storeyExpressId: number, params: import("@ifc-lite/sdk").AddSpaceInStoreParams) => import("@ifc-lite/sdk").EntityRef;
|
|
46
|
+
addRoof: (modelId: string, storeyExpressId: number, params: import("@ifc-lite/sdk").AddRoofInStoreParams) => import("@ifc-lite/sdk").EntityRef;
|
|
47
|
+
addPlate: (modelId: string, storeyExpressId: number, params: import("@ifc-lite/sdk").AddPlateInStoreParams) => import("@ifc-lite/sdk").EntityRef;
|
|
48
|
+
addMember: (modelId: string, storeyExpressId: number, params: import("@ifc-lite/sdk").AddMemberInStoreParams | import("@ifc-lite/create").ProfiledMemberInStoreParams) => import("@ifc-lite/sdk").EntityRef;
|
|
49
|
+
};
|
|
50
|
+
//# sourceMappingURL=headless-backend-modelling.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"headless-backend-modelling.d.ts","sourceRoot":"","sources":["../src/headless-backend-modelling.ts"],"names":[],"mappings":"AAIA;gFACgF;AAChF,OAAO,EAAsF,KAAK,2BAA2B,EAAE,MAAM,eAAe,CAAC;AAGrJ,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;uBAsE5D,UAAU,CAAC,WAAW,mEAAwB,CAAC,CAAC,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;EAkCxE"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
|
+
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
|
+
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
|
+
/** Ordinary creation, placement and wall joins use the shared SDK factories (#6232 D5).
|
|
5
|
+
* Shared compound recording preserves every earlier overlay record for undo. */
|
|
6
|
+
import { createModellingStoreBackend, createOrdinaryStoreBackend, resolveLiveOwnerHistoryId } from '@ifc-lite/sdk';
|
|
7
|
+
import { recordCompoundMutation, StoreEditor } from '@ifc-lite/mutations';
|
|
8
|
+
export function createRecordedModellingBackend(resolve) {
|
|
9
|
+
function record(modelId, edit, authoring = false) {
|
|
10
|
+
const model = resolve(modelId);
|
|
11
|
+
return recordCompoundMutation(model.mutationView, draft => {
|
|
12
|
+
const resolveDraft = () => {
|
|
13
|
+
const editor = new StoreEditor(model.store, draft);
|
|
14
|
+
return { ...model, mutationView: draft, editor,
|
|
15
|
+
// Only type/material authoring needs this schema-required reference.
|
|
16
|
+
// Ordinary and hosted creation keep their existing anchor policy.
|
|
17
|
+
ownerHistoryId: authoring ? resolveLiveOwnerHistoryId(model.store, editor, draft) : model.ownerHistoryId,
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
return edit({ ...createModellingStoreBackend(resolveDraft), ...createOrdinaryStoreBackend(resolveDraft) });
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
return {
|
|
24
|
+
transformElements: (...args) => record(args[0], methods => {
|
|
25
|
+
if (!methods.transformElements)
|
|
26
|
+
throw new Error('Missing transformElements capability');
|
|
27
|
+
return methods.transformElements(...args);
|
|
28
|
+
}),
|
|
29
|
+
setElementSize: (...args) => record(args[0].modelId, methods => {
|
|
30
|
+
if (!methods.setElementSize)
|
|
31
|
+
throw new Error('Missing setElementSize capability');
|
|
32
|
+
return methods.setElementSize(...args);
|
|
33
|
+
}),
|
|
34
|
+
resizeWall: (...args) => record(args[0].modelId, methods => {
|
|
35
|
+
if (!methods.resizeWall)
|
|
36
|
+
throw new Error('Missing resizeWall capability');
|
|
37
|
+
return methods.resizeWall(...args);
|
|
38
|
+
}),
|
|
39
|
+
splitElements: (...args) => record(args[0], methods => {
|
|
40
|
+
if (!methods.splitElements)
|
|
41
|
+
throw new Error('Missing splitElements capability');
|
|
42
|
+
return methods.splitElements(...args);
|
|
43
|
+
}),
|
|
44
|
+
trimExtendElement: (...args) => record(args[0].modelId, methods => {
|
|
45
|
+
if (!methods.trimExtendElement)
|
|
46
|
+
throw new Error('Missing trimExtendElement capability');
|
|
47
|
+
return methods.trimExtendElement(...args);
|
|
48
|
+
}),
|
|
49
|
+
copyElements: (...args) => record(args[0], methods => {
|
|
50
|
+
if (!methods.copyElements)
|
|
51
|
+
throw new Error('Missing copy capability');
|
|
52
|
+
return methods.copyElements(...args);
|
|
53
|
+
}),
|
|
54
|
+
duplicateElement: (...args) => record(args[0].modelId, methods => {
|
|
55
|
+
if (!methods.duplicateElement)
|
|
56
|
+
throw new Error('Missing duplicate capability');
|
|
57
|
+
return methods.duplicateElement(...args);
|
|
58
|
+
}),
|
|
59
|
+
arrayElements: (...args) => record(args[0], methods => {
|
|
60
|
+
if (!methods.arrayElements)
|
|
61
|
+
throw new Error('Missing array capability');
|
|
62
|
+
return methods.arrayElements(...args);
|
|
63
|
+
}),
|
|
64
|
+
editHostedElement: (...args) => record(args[0].modelId, methods => {
|
|
65
|
+
if (!methods.editHostedElement)
|
|
66
|
+
throw new Error('Missing hosted edit capability');
|
|
67
|
+
return methods.editHostedElement(...args);
|
|
68
|
+
}),
|
|
69
|
+
addCurtainWall: (...args) => record(args[0], methods => {
|
|
70
|
+
if (!methods.addCurtainWall)
|
|
71
|
+
throw new Error('Missing curtain wall capability');
|
|
72
|
+
return methods.addCurtainWall(...args);
|
|
73
|
+
}),
|
|
74
|
+
addGrid: (...args) => record(args[0], methods => {
|
|
75
|
+
if (!methods.addGrid)
|
|
76
|
+
throw new Error('Missing grid capability');
|
|
77
|
+
return methods.addGrid(...args);
|
|
78
|
+
}),
|
|
79
|
+
addColumnOnGrid: (...args) => record(args[0], methods => {
|
|
80
|
+
if (!methods.addColumnOnGrid)
|
|
81
|
+
throw new Error('Missing grid column capability');
|
|
82
|
+
return methods.addColumnOnGrid(...args);
|
|
83
|
+
}),
|
|
84
|
+
replaceElement: (...args) => record(args[0].modelId, methods => {
|
|
85
|
+
const replace = methods.replaceElement;
|
|
86
|
+
if (!replace)
|
|
87
|
+
throw new Error('bim.store.replaceElement is not supported by this backend');
|
|
88
|
+
return replace.call(methods, ...args);
|
|
89
|
+
}),
|
|
90
|
+
removeStair: (ref) => record(ref.modelId, methods => {
|
|
91
|
+
const remove = methods.removeStair;
|
|
92
|
+
if (!remove)
|
|
93
|
+
throw new Error('bim.store.removeStair is not supported by this backend');
|
|
94
|
+
return remove(ref);
|
|
95
|
+
}),
|
|
96
|
+
addStair: (...args) => record(args[0], methods => {
|
|
97
|
+
const create = methods.addStair;
|
|
98
|
+
if (!create)
|
|
99
|
+
throw new Error('bim.store.addStair is not supported by this backend');
|
|
100
|
+
return create(...args);
|
|
101
|
+
}),
|
|
102
|
+
addRailing: (...args) => record(args[0], methods => {
|
|
103
|
+
const create = methods.addRailing;
|
|
104
|
+
if (!create)
|
|
105
|
+
throw new Error('bim.store.addRailing is not supported by this backend');
|
|
106
|
+
return create(...args);
|
|
107
|
+
}),
|
|
108
|
+
addElementType: (...args) => record(args[0], methods => methods.addElementType(...args), true),
|
|
109
|
+
assignType: (...args) => record(args[0], methods => methods.assignType(...args), true),
|
|
110
|
+
addMaterial: (...args) => record(args[0], methods => methods.addMaterial(...args), true),
|
|
111
|
+
addMaterialLayerSet: (...args) => record(args[0], methods => methods.addMaterialLayerSet(...args), true),
|
|
112
|
+
addMaterialLayerSetUsage: (...args) => record(args[0], methods => methods.addMaterialLayerSetUsage(...args), true),
|
|
113
|
+
assignMaterial: (...args) => record(args[0], methods => methods.assignMaterial(...args), true),
|
|
114
|
+
addOpening: (...args) => record(args[0], methods => methods.addOpening(...args)),
|
|
115
|
+
addHostedDoor: (...args) => record(args[0], methods => methods.addHostedDoor(...args)),
|
|
116
|
+
addHostedWindow: (...args) => record(args[0], methods => methods.addHostedWindow(...args)),
|
|
117
|
+
joinWalls: (...args) => record(args[0], methods => methods.joinWalls(...args)),
|
|
118
|
+
addWall: (...args) => record(args[0], methods => methods.addWall(...args)),
|
|
119
|
+
addColumn: (...args) => record(args[0], methods => methods.addColumn(...args)),
|
|
120
|
+
addSlab: (...args) => record(args[0], methods => methods.addSlab(...args)),
|
|
121
|
+
addBeam: (...args) => record(args[0], methods => methods.addBeam(...args)),
|
|
122
|
+
addSpace: (...args) => record(args[0], methods => methods.addSpace(...args)),
|
|
123
|
+
addRoof: (...args) => record(args[0], methods => methods.addRoof(...args)),
|
|
124
|
+
addPlate: (...args) => record(args[0], methods => methods.addPlate(...args)),
|
|
125
|
+
addMember: (...args) => record(args[0], methods => methods.addMember(...args)),
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=headless-backend-modelling.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"headless-backend-modelling.js","sourceRoot":"","sources":["../src/headless-backend-modelling.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type ModellingStoreModelResolver } from '@ifc-lite/sdk';
|
|
2
|
+
/** Native preparation finishes before the synchronous compound commit begins. */
|
|
3
|
+
export declare function createHeadlessRoomBackend(resolve: ModellingStoreModelResolver): {
|
|
4
|
+
disposeRooms(): void;
|
|
5
|
+
prepareRoomCommand: (modelId: string, storeyId: number, command: import("@ifc-lite/sdk").RoomCommand) => Promise<import("@ifc-lite/sdk").PreparedRoomCommand>;
|
|
6
|
+
roomCommand(modelId: string, storeyId: number, op: import("@ifc-lite/sdk").RoomCommand): Promise<import("@ifc-lite/sdk").RoomCommandResult>;
|
|
7
|
+
};
|
|
8
|
+
//# sourceMappingURL=headless-backend-room.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"headless-backend-room.d.ts","sourceRoot":"","sources":["../src/headless-backend-room.ts"],"names":[],"mappings":"AAIA,OAAO,EAA4B,KAAK,2BAA2B,EAAE,MAAM,eAAe,CAAC;AAK3F,iFAAiF;AACjF,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,2BAA2B;;;;EAc7E"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
|
+
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
|
+
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
|
+
import { createRoomCommandBackend } from '@ifc-lite/sdk';
|
|
5
|
+
import { RoomLayoutCache } from '@ifc-lite/create';
|
|
6
|
+
import { recordCompoundMutation, StoreEditor } from '@ifc-lite/mutations';
|
|
7
|
+
import { createCachedHeadlessRoomGeometryProvider } from './headless-room-geometry.js';
|
|
8
|
+
/** Native preparation finishes before the synchronous compound commit begins. */
|
|
9
|
+
export function createHeadlessRoomBackend(resolve) {
|
|
10
|
+
const native = createCachedHeadlessRoomGeometryProvider();
|
|
11
|
+
const rooms = createRoomCommandBackend(resolve, native.provide, {
|
|
12
|
+
layouts: new RoomLayoutCache(),
|
|
13
|
+
globalIdScopes: () => resolve().globalIdScopes ?? [],
|
|
14
|
+
historyHead: modelId => resolve(modelId).mutationView.getMutations().map(m => m.id).join('|'),
|
|
15
|
+
record: (modelId, write) => {
|
|
16
|
+
const model = resolve(modelId);
|
|
17
|
+
return recordCompoundMutation(model.mutationView, mutationView => write({
|
|
18
|
+
...model, mutationView, editor: new StoreEditor(model.store, mutationView),
|
|
19
|
+
}));
|
|
20
|
+
},
|
|
21
|
+
});
|
|
22
|
+
return { ...rooms, disposeRooms() { rooms.disposeRooms(); native.clear(); } };
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=headless-backend-room.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"headless-backend-room.js","sourceRoot":"","sources":["../src/headless-backend-room.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D,OAAO,EAAE,wBAAwB,EAAoC,MAAM,eAAe,CAAC;AAC3F,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,sBAAsB,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC1E,OAAO,EAAE,wCAAwC,EAAE,MAAM,6BAA6B,CAAC;AAEvF,iFAAiF;AACjF,MAAM,UAAU,yBAAyB,CAAC,OAAoC;IAC5E,MAAM,MAAM,GAAG,wCAAwC,EAAE,CAAC;IAC1D,MAAM,KAAK,GAAG,wBAAwB,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE;QAC9D,OAAO,EAAE,IAAI,eAAe,EAAE;QAC9B,cAAc,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,cAAc,IAAI,EAAE;QACpD,WAAW,EAAE,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QAC7F,MAAM,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;YACzB,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;YAC/B,OAAO,sBAAsB,CAAC,KAAK,CAAC,YAAY,EAAE,YAAY,CAAC,EAAE,CAAC,KAAK,CAAC;gBACtE,GAAG,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,WAAW,CAAC,KAAK,CAAC,KAAK,EAAE,YAAY,CAAC;aAC3E,CAAC,CAAC,CAAC;QACN,CAAC;KACF,CAAC,CAAC;IACH,OAAO,EAAE,GAAG,KAAK,EAAE,YAAY,KAAK,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AAChF,CAAC"}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* The `bim.store` authoring surfaces MCP v0.1 deliberately does not implement:
|
|
3
|
-
* cost (#4857)
|
|
4
|
-
*
|
|
3
|
+
* cost (#4857) and structural analysis (#5167 S.1).
|
|
4
|
+
* Hosted openings, doors, windows, types and materials use the shared SDK factory (#6232 D5).
|
|
5
|
+
* Other agent flows author through `entity_create` with raw
|
|
5
6
|
* attributes, so these throw loudly rather than silently no-opping.
|
|
6
7
|
*
|
|
7
8
|
* Composed into one spread so `headless-backend.ts` gains a surface, not a
|
|
8
9
|
* line, each time another factory-backed store surface is added to the SDK.
|
|
9
10
|
*/
|
|
10
|
-
import type { CostStoreBackendMethods,
|
|
11
|
-
export declare function unsupportedStoreAuthoring(): CostStoreBackendMethods & StructuralStoreBackendMethods
|
|
11
|
+
import type { CostStoreBackendMethods, StructuralStoreBackendMethods } from '@ifc-lite/sdk';
|
|
12
|
+
export declare function unsupportedStoreAuthoring(): CostStoreBackendMethods & StructuralStoreBackendMethods;
|
|
12
13
|
//# sourceMappingURL=headless-backend-store-stubs.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"headless-backend-store-stubs.d.ts","sourceRoot":"","sources":["../src/headless-backend-store-stubs.ts"],"names":[],"mappings":"AAIA
|
|
1
|
+
{"version":3,"file":"headless-backend-store-stubs.d.ts","sourceRoot":"","sources":["../src/headless-backend-store-stubs.ts"],"names":[],"mappings":"AAIA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EACV,uBAAuB,EACvB,6BAA6B,EAC9B,MAAM,eAAe,CAAC;AAIvB,wBAAgB,yBAAyB,IAAI,uBAAuB,GAAG,6BAA6B,CAEnG"}
|
|
@@ -3,23 +3,7 @@
|
|
|
3
3
|
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
4
|
import { costStoreStubs } from './headless-backend-cost-store.js';
|
|
5
5
|
import { structuralStoreStubs } from './headless-backend-structural-store.js';
|
|
6
|
-
const unsupported = (method) => () => {
|
|
7
|
-
throw new Error(`${method} not supported in MCP v0.1; use entity_create`);
|
|
8
|
-
};
|
|
9
|
-
function modellingStoreStubs() {
|
|
10
|
-
return {
|
|
11
|
-
addOpening: unsupported('addOpening'),
|
|
12
|
-
addHostedDoor: unsupported('addHostedDoor'),
|
|
13
|
-
addHostedWindow: unsupported('addHostedWindow'),
|
|
14
|
-
addElementType: unsupported('addElementType'),
|
|
15
|
-
assignType: unsupported('assignType'),
|
|
16
|
-
addMaterial: unsupported('addMaterial'),
|
|
17
|
-
addMaterialLayerSet: unsupported('addMaterialLayerSet'),
|
|
18
|
-
addMaterialLayerSetUsage: unsupported('addMaterialLayerSetUsage'),
|
|
19
|
-
assignMaterial: unsupported('assignMaterial'),
|
|
20
|
-
};
|
|
21
|
-
}
|
|
22
6
|
export function unsupportedStoreAuthoring() {
|
|
23
|
-
return { ...costStoreStubs(), ...structuralStoreStubs()
|
|
7
|
+
return { ...costStoreStubs(), ...structuralStoreStubs() };
|
|
24
8
|
}
|
|
25
9
|
//# sourceMappingURL=headless-backend-store-stubs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"headless-backend-store-stubs.js","sourceRoot":"","sources":["../src/headless-backend-store-stubs.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAiB/D,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAE9E,MAAM,
|
|
1
|
+
{"version":3,"file":"headless-backend-store-stubs.js","sourceRoot":"","sources":["../src/headless-backend-store-stubs.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAiB/D,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAE9E,MAAM,UAAU,yBAAyB;IACvC,OAAO,EAAE,GAAG,cAAc,EAAE,EAAE,GAAG,oBAAoB,EAAE,EAAE,CAAC;AAC5D,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/** Store adapter kept apart from read/export adapters (#6232 D5). */
|
|
2
|
+
import type { StoreBackendMethods } from '@ifc-lite/sdk';
|
|
3
|
+
import type { StoreEditor } from '@ifc-lite/mutations';
|
|
4
|
+
import type { IfcDataStore } from '@ifc-lite/parser';
|
|
5
|
+
export declare function createHeadlessStoreAdapter(dataStore: IfcDataStore, modelId: string, get: () => StoreEditor, assertKnownModelId: (id: string) => void, getPeerScopes: () => import('@ifc-lite/create').ElementSplitOptions['globalIdScopes']): StoreBackendMethods & {
|
|
6
|
+
disposeRooms(): void;
|
|
7
|
+
};
|
|
8
|
+
//# sourceMappingURL=headless-backend-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"headless-backend-store.d.ts","sourceRoot":"","sources":["../src/headless-backend-store.ts"],"names":[],"mappings":"AAIA,qEAAqE;AACrE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAMrD,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,WAAW,EAAE,kBAAkB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,EAC1G,aAAa,EAAE,MAAM,OAAO,kBAAkB,EAAE,mBAAmB,CAAC,gBAAgB,CAAC,GACpF,mBAAmB,GAAG;IAAE,YAAY,IAAI,IAAI,CAAA;CAAE,CA4BhD"}
|