@ifc-lite/mcp 0.26.2 → 0.27.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.
Files changed (127) hide show
  1. package/README.md +9 -0
  2. package/dist/cli.js +2 -0
  3. package/dist/cli.js.map +1 -1
  4. package/dist/context.d.ts +8 -0
  5. package/dist/context.d.ts.map +1 -1
  6. package/dist/context.js.map +1 -1
  7. package/dist/headless-backend-align.d.ts +1 -4
  8. package/dist/headless-backend-align.d.ts.map +1 -1
  9. package/dist/headless-backend-align.js +0 -11
  10. package/dist/headless-backend-align.js.map +1 -1
  11. package/dist/headless-backend.d.ts +4 -72
  12. package/dist/headless-backend.d.ts.map +1 -1
  13. package/dist/headless-backend.js +9 -313
  14. package/dist/headless-backend.js.map +1 -1
  15. package/dist/loader.d.ts.map +1 -1
  16. package/dist/loader.js +14 -21
  17. package/dist/loader.js.map +1 -1
  18. package/dist/resources/providers.js +1 -1
  19. package/dist/resources/providers.js.map +1 -1
  20. package/dist/server.d.ts.map +1 -1
  21. package/dist/server.js +2 -1
  22. package/dist/server.js.map +1 -1
  23. package/dist/tools/diff-authored-keys.d.ts +1 -1
  24. package/dist/tools/diff-authored-keys.d.ts.map +1 -1
  25. package/dist/tools/diff-authored-keys.js +1 -1
  26. package/dist/tools/diff-authored-keys.js.map +1 -1
  27. package/dist/tools/diff-content.d.ts +1 -1
  28. package/dist/tools/diff-content.d.ts.map +1 -1
  29. package/dist/tools/diff-content.js +1 -1
  30. package/dist/tools/diff-content.js.map +1 -1
  31. package/dist/tools/diff-entity-scope.d.ts +1 -1
  32. package/dist/tools/diff-entity-scope.d.ts.map +1 -1
  33. package/dist/tools/diff-fingerprints.d.ts +1 -1
  34. package/dist/tools/diff-fingerprints.d.ts.map +1 -1
  35. package/dist/tools/diff-fingerprints.js +1 -1
  36. package/dist/tools/diff-fingerprints.js.map +1 -1
  37. package/dist/tools/diff.js +1 -1
  38. package/dist/tools/diff.js.map +1 -1
  39. package/dist/tools/discovery.d.ts.map +1 -1
  40. package/dist/tools/discovery.js +10 -3
  41. package/dist/tools/discovery.js.map +1 -1
  42. package/dist/tools/entity-create.js +1 -1
  43. package/dist/tools/entity-create.js.map +1 -1
  44. package/dist/tools/export.d.ts.map +1 -1
  45. package/dist/tools/export.js +36 -46
  46. package/dist/tools/export.js.map +1 -1
  47. package/dist/tools/flow-ai.js +1 -1
  48. package/dist/tools/flow-ai.js.map +1 -1
  49. package/dist/tools/flow-host.d.ts.map +1 -1
  50. package/dist/tools/flow-host.js +7 -2
  51. package/dist/tools/flow-host.js.map +1 -1
  52. package/dist/tools/flow.js +1 -1
  53. package/dist/tools/flow.js.map +1 -1
  54. package/dist/tools/layer-store.d.ts.map +1 -1
  55. package/dist/tools/layer-store.js +8 -7
  56. package/dist/tools/layer-store.js.map +1 -1
  57. package/dist/tools/mutate.d.ts.map +1 -1
  58. package/dist/tools/mutate.js +8 -2
  59. package/dist/tools/mutate.js.map +1 -1
  60. package/dist/tools/query.js +1 -1
  61. package/dist/tools/query.js.map +1 -1
  62. package/dist/tools/review-captures.d.ts.map +1 -1
  63. package/dist/tools/review-captures.js +2 -1
  64. package/dist/tools/review-captures.js.map +1 -1
  65. package/dist/tools/review-findings.d.ts.map +1 -1
  66. package/dist/tools/review-findings.js +13 -5
  67. package/dist/tools/review-findings.js.map +1 -1
  68. package/dist/tools/util.d.ts +11 -0
  69. package/dist/tools/util.d.ts.map +1 -1
  70. package/dist/tools/util.js +24 -1
  71. package/dist/tools/util.js.map +1 -1
  72. package/dist/tools/validation.d.ts.map +1 -1
  73. package/dist/tools/validation.js +1 -3
  74. package/dist/tools/validation.js.map +1 -1
  75. package/package.json +18 -18
  76. package/dist/authored-attribute-value.d.ts +0 -3
  77. package/dist/authored-attribute-value.d.ts.map +0 -1
  78. package/dist/authored-attribute-value.js +0 -34
  79. package/dist/authored-attribute-value.js.map +0 -1
  80. package/dist/backend-query-relationships.d.ts +0 -5
  81. package/dist/backend-query-relationships.d.ts.map +0 -1
  82. package/dist/backend-query-relationships.js +0 -55
  83. package/dist/backend-query-relationships.js.map +0 -1
  84. package/dist/backend-query.d.ts +0 -48
  85. package/dist/backend-query.d.ts.map +0 -1
  86. package/dist/backend-query.js +0 -383
  87. package/dist/backend-query.js.map +0 -1
  88. package/dist/effective-entity-membership.d.ts +0 -8
  89. package/dist/effective-entity-membership.d.ts.map +0 -1
  90. package/dist/effective-entity-membership.js +0 -23
  91. package/dist/effective-entity-membership.js.map +0 -1
  92. package/dist/headless-backend-cost-store.d.ts +0 -14
  93. package/dist/headless-backend-cost-store.d.ts.map +0 -1
  94. package/dist/headless-backend-cost-store.js +0 -20
  95. package/dist/headless-backend-cost-store.js.map +0 -1
  96. package/dist/headless-backend-modelling.d.ts +0 -50
  97. package/dist/headless-backend-modelling.d.ts.map +0 -1
  98. package/dist/headless-backend-modelling.js +0 -128
  99. package/dist/headless-backend-modelling.js.map +0 -1
  100. package/dist/headless-backend-room.d.ts +0 -8
  101. package/dist/headless-backend-room.d.ts.map +0 -1
  102. package/dist/headless-backend-room.js +0 -24
  103. package/dist/headless-backend-room.js.map +0 -1
  104. package/dist/headless-backend-store-stubs.d.ts +0 -13
  105. package/dist/headless-backend-store-stubs.d.ts.map +0 -1
  106. package/dist/headless-backend-store-stubs.js +0 -9
  107. package/dist/headless-backend-store-stubs.js.map +0 -1
  108. package/dist/headless-backend-store.d.ts +0 -8
  109. package/dist/headless-backend-store.d.ts.map +0 -1
  110. package/dist/headless-backend-store.js +0 -38
  111. package/dist/headless-backend-store.js.map +0 -1
  112. package/dist/headless-backend-structural-store.d.ts +0 -21
  113. package/dist/headless-backend-structural-store.d.ts.map +0 -1
  114. package/dist/headless-backend-structural-store.js +0 -20
  115. package/dist/headless-backend-structural-store.js.map +0 -1
  116. package/dist/headless-backend-structural.d.ts +0 -4
  117. package/dist/headless-backend-structural.d.ts.map +0 -1
  118. package/dist/headless-backend-structural.js +0 -24
  119. package/dist/headless-backend-structural.js.map +0 -1
  120. package/dist/overlay.d.ts +0 -166
  121. package/dist/overlay.d.ts.map +0 -1
  122. package/dist/overlay.js +0 -285
  123. package/dist/overlay.js.map +0 -1
  124. package/dist/schema-tables.d.ts +0 -42
  125. package/dist/schema-tables.d.ts.map +0 -1
  126. package/dist/schema-tables.js +0 -77
  127. package/dist/schema-tables.js.map +0 -1
@@ -1,48 +0,0 @@
1
- /**
2
- * The read half of `HeadlessLikeBackend`, with the session's pending mutations
3
- * folded in (#2004).
4
- *
5
- * `MutablePropertyView` is an overlay: the parsed store's buffer and index are
6
- * never touched, and the edits only materialise in `StepExporter`. Every read
7
- * that went straight to the store therefore answered about the file *as parsed*,
8
- * so an agent that edited and then read back to confirm was told its edit had
9
- * not happened — and the natural recovery from that is to edit again.
10
- *
11
- * The fold lives here rather than in the tools because this is the one
12
- * chokepoint they all pass through: `get_entity`, `query_entities`,
13
- * `get_entities_bulk`, `count_entities` and `properties_unique` all go through
14
- * `bim.*`, which is this adapter. Folding at tool level would mean each tool
15
- * re-implementing it — and `query_entities`' property filters would have to
16
- * re-implement the *filter*, which is exactly where a half-fold does the most
17
- * damage: a query for the value just written must find it.
18
- *
19
- * `related` folds too (#2014), and with it every containment answer the SDK
20
- * builds on top of it — `bim.storey`, `bim.path`, `bim.contains`,
21
- * `bim.decomposes`. A queued `IfcRelContainedInSpatialStructure` is how an agent
22
- * places something over MCP, so ignoring it was ignoring a write.
23
- *
24
- * Exact `relationships().relations` rows are folded through the same overlay.
25
- * Legacy projections and geometry rebuild on `model_load` after a save.
26
- */
27
- import type { QueryBackendMethods } from '@ifc-lite/sdk';
28
- import type { IfcDataStore } from '@ifc-lite/parser';
29
- import { expandTypes, isQueryableObjectType } from '@ifc-lite/parser';
30
- import { type MutablePropertyView } from '@ifc-lite/mutations';
31
- import type { PendingOverlay } from './overlay.js';
32
- export { expandTypes };
33
- /**
34
- * Which classes an unfiltered query answers with.
35
- *
36
- * Thin alias: the predicate is schema logic and lives in `@ifc-lite/parser`, so
37
- * the CLI and MCP backends cannot drift apart on it. Kept as a named export
38
- * here because both packages already publish it under this name.
39
- */
40
- export declare const isProductType: typeof isQueryableObjectType;
41
- /**
42
- * Build the query adapter over a store, folding whatever `overlay()` returns at
43
- * call time. `overlay` is a getter, not a value: the backend creates its
44
- * `MutablePropertyView` lazily on the first mutation, so a session that is only
45
- * ever read gets `null` on every call and keeps the original store-only path.
46
- */
47
- export declare function createQueryAdapter(store: IfcDataStore, modelId: string, overlay: () => PendingOverlay | null, mutationView: () => MutablePropertyView | null): QueryBackendMethods;
48
- //# sourceMappingURL=backend-query.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"backend-query.d.ts","sourceRoot":"","sources":["../src/backend-query.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,KAAK,EAWV,mBAAmB,EAEpB,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAOL,WAAW,EAGX,qBAAqB,EACtB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAA6B,KAAK,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE1F,OAAO,KAAK,EAAiB,cAAc,EAAE,MAAM,cAAc,CAAC;AAMlE,OAAO,EAAE,WAAW,EAAE,CAAC;AAEvB;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,8BAAwB,CAAC;AAenD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,YAAY,EACnB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,cAAc,GAAG,IAAI,EACpC,YAAY,EAAE,MAAM,mBAAmB,GAAG,IAAI,GAC7C,mBAAmB,CAgUrB"}
@@ -1,383 +0,0 @@
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 { extractAllEntityAttributes, extractClassificationsOnDemand, extractDocumentsOnDemand, extractMaterialsOnDemand, extractRelationshipsOnDemand, extractExactRelatedIds, expandTypes, QUERY_REL_TYPE_MAP, extractTypePropertiesOnDemand, isQueryableObjectType, } from '@ifc-lite/parser';
5
- import { attributeNamesForSchema } from './schema-tables.js';
6
- import { EntityNode, matchesPropertyFilter } from '@ifc-lite/query';
7
- import { iterateEffectiveEntityIds } from '@ifc-lite/mutations';
8
- import { authoredValue } from './authored-attribute-value.js';
9
- import { foldRelationshipRows } from './backend-query-relationships.js';
10
- // `expandTypes` used to be defined here; it now comes from `@ifc-lite/parser`,
11
- // shared with the other query backends (see `query-backend-maps.ts`). Re-exported
12
- // so this module's consumers are unaffected by where it lives.
13
- export { expandTypes };
14
- /**
15
- * Which classes an unfiltered query answers with.
16
- *
17
- * Thin alias: the predicate is schema logic and lives in `@ifc-lite/parser`, so
18
- * the CLI and MCP backends cannot drift apart on it. Kept as a named export
19
- * here because both packages already publish it under this name.
20
- */
21
- export const isProductType = isQueryableObjectType;
22
- function createdEntityData(created, ref, store) {
23
- const names = attributeNamesForSchema(created.ifcType, store.schemaVersion);
24
- const objectType = authoredValue(created.attributes[names.indexOf('ObjectType')]);
25
- return {
26
- ref,
27
- globalId: created.globalId,
28
- name: created.name ?? '',
29
- type: created.ifcType,
30
- description: created.description ?? '',
31
- objectType: typeof objectType === 'string' ? objectType : '',
32
- };
33
- }
34
- /**
35
- * Build the query adapter over a store, folding whatever `overlay()` returns at
36
- * call time. `overlay` is a getter, not a value: the backend creates its
37
- * `MutablePropertyView` lazily on the first mutation, so a session that is only
38
- * ever read gets `null` on every call and keeps the original store-only path.
39
- */
40
- export function createQueryAdapter(store, modelId, overlay, mutationView) {
41
- function entityData(ref) {
42
- const pending = overlay();
43
- if (pending?.deleted.has(ref.expressId))
44
- return null;
45
- const created = pending?.createdEntity(ref.expressId);
46
- if (created) {
47
- const data = createdEntityData(created, ref, store);
48
- return { ...data, type: pending?.effectiveType(ref.expressId) ?? data.type };
49
- }
50
- // @raw-entity-enumeration-ok tombstones and overlay-created ids returned above; this point probe only checks the remaining parsed source
51
- if (!store.entityIndex.byId.has(ref.expressId))
52
- return null;
53
- const node = new EntityNode(store, ref.expressId);
54
- const type = node.type;
55
- if (!type || type === 'Unknown')
56
- return null;
57
- return withOverrides({
58
- ref,
59
- globalId: node.globalId,
60
- name: node.name,
61
- type: pending?.effectiveType(ref.expressId) ?? type,
62
- description: node.description,
63
- objectType: node.objectType,
64
- }, pending, ref.expressId);
65
- }
66
- function withOverrides(data, pending, expressId) {
67
- if (!pending)
68
- return data;
69
- const overrides = pending.attributes(expressId);
70
- const positional = pending.positionalAttributes(expressId);
71
- if (overrides.size === 0 && positional.size === 0 && !pending.effectiveType(expressId))
72
- return data;
73
- const next = {
74
- ...data,
75
- type: pending.effectiveType(expressId) ?? data.type,
76
- name: overrides.get('Name') ?? data.name,
77
- description: overrides.get('Description') ?? data.description,
78
- objectType: overrides.get('ObjectType') ?? data.objectType,
79
- };
80
- // Positional slots are named by the effective class (a queued retype wins).
81
- const effectiveType = pending.effectiveType(expressId);
82
- const exactType = effectiveType ?? (store.entities.getTypeName(expressId) || data.type);
83
- const names = attributeNamesForSchema(exactType, store.schemaVersion);
84
- if (effectiveType && names.length > 0 && !names.includes('ObjectType'))
85
- next.objectType = '';
86
- for (const [index, value] of positional) {
87
- const authored = authoredValue(value);
88
- const isUnset = value == null || (typeof value === 'string' && ['', '$', '*'].includes(value.trim()));
89
- const text = typeof authored === 'string' ? authored : isUnset ? '' : null;
90
- if (text === null)
91
- continue;
92
- if (names[index] === 'Name')
93
- next.name = text;
94
- else if (names[index] === 'Description')
95
- next.description = text;
96
- else if (names[index] === 'ObjectType')
97
- next.objectType = text;
98
- }
99
- return next;
100
- }
101
- function properties(ref, captured) {
102
- // `captured` lets a caller that already has the overlay pass it in rather
103
- // than have it rebuilt per entity — the filter loop in `entities()` runs
104
- // this once per candidate row.
105
- const pending = captured !== undefined ? captured : overlay();
106
- // An entity this session deleted answers nothing, as `entityData` and
107
- // `entities` already have it answer nothing (#2014 review).
108
- if (pending?.deleted.has(ref.expressId))
109
- return [];
110
- // `getForEntity` reads the same on-demand extraction the store would, then
111
- // applies the overlay on top — so it is the whole answer, not the delta.
112
- const psets = pending
113
- ? pending.propertySets(ref.expressId)
114
- : new EntityNode(store, ref.expressId).properties();
115
- return psets.map((pset) => ({
116
- name: pset.name,
117
- globalId: pset.globalId,
118
- properties: pset.properties.map((p) => ({ name: p.name, type: p.type, value: p.value })),
119
- }));
120
- }
121
- function quantities(ref) {
122
- const pending = overlay();
123
- if (pending?.deleted.has(ref.expressId))
124
- return [];
125
- const qsets = pending
126
- ? pending.quantitySets(ref.expressId)
127
- : new EntityNode(store, ref.expressId).quantities();
128
- return qsets.map((qset) => ({
129
- name: qset.name,
130
- quantities: qset.quantities.map((q) => ({ name: q.name, type: q.type, value: q.value })),
131
- }));
132
- }
133
- function attributes(ref) {
134
- const pending = overlay();
135
- if (pending?.deleted.has(ref.expressId))
136
- return [];
137
- const created = pending?.createdEntity(ref.expressId);
138
- const base = created
139
- // Not in the store, so there is nothing to extract: name the authored
140
- // positional list from the schema instead. Cross-schema, because a created
141
- // IFC2X3 or IFC4X3 class is not in the IFC4 codegen pin (#2003).
142
- ? namedAuthoredAttributes(created)
143
- : extractAllEntityAttributes(store, ref.expressId);
144
- if (!pending)
145
- return base;
146
- const overrides = pending.attributes(ref.expressId);
147
- const positional = pending.positionalAttributes(ref.expressId);
148
- if (overrides.size === 0 && positional.size === 0)
149
- return base;
150
- // Overwrite what the base carries, then append what it does not. The append
151
- // is the half that was missing (#2014): `extractAllEntityAttributes` omits
152
- // an attribute whose stored value is `$`, so setting a previously-unset
153
- // `Description` changed the top-level field while this list still denied it
154
- // — one payload contradicting itself. Appended names go last; the list is
155
- // name-keyed and its order is not positional (the base already drops nulls).
156
- const merged = new Map(base.map((attribute) => [attribute.name, attribute.value]));
157
- const writes = new Map(overrides);
158
- const exactType = created?.ifcType ?? store.entities.getTypeName(ref.expressId);
159
- const names = attributeNamesForSchema(exactType, store.schemaVersion);
160
- for (const [index, value] of positional) {
161
- const name = names[index];
162
- if (name)
163
- writes.set(name, value);
164
- }
165
- for (const [name, value] of writes) {
166
- const authored = authoredValue(value);
167
- if (authored === undefined)
168
- merged.delete(name);
169
- else
170
- merged.set(name, authored);
171
- }
172
- return [...merged].map(([name, value]) => ({ name, value }));
173
- }
174
- function namedAuthoredAttributes(created) {
175
- // The *model's* schema, not the IFC4 pin. `IfcRelCoversSpaces` names slot 4
176
- // `RelatedSpace` in IFC2X3 and `RelatingSpace` in IFC4, so the pinned answer
177
- // reported a name the file would not serialise. Falls back to the parser's
178
- // cross-schema list when the declared schema does not carry the class.
179
- const names = attributeNamesForSchema(created.ifcType, store.schemaVersion);
180
- const out = [];
181
- for (let i = 0; i < created.attributes.length; i++) {
182
- const value = authoredValue(created.attributes[i]);
183
- if (value === undefined)
184
- continue;
185
- // No synthetic `Attribute7` names: `bim.attributes` is a list of IFC
186
- // EXPRESS attribute names, and an invented one is not one. A payload
187
- // longer than the schema knows about is the caller's to explain.
188
- const name = names[i];
189
- if (name === undefined)
190
- continue;
191
- out.push({ name, value });
192
- }
193
- return out;
194
- }
195
- return {
196
- entities(descriptor) {
197
- const pending = overlay();
198
- const requested = descriptor.types && descriptor.types.length > 0
199
- ? expandTypes(descriptor.types, store.schemaVersion)
200
- : null;
201
- const results = [];
202
- for (const { expressId, type, overlayCreated } of iterateEffectiveEntityIds(store, mutationView(), requested ?? undefined)) {
203
- if (!requested && !isProductType(type))
204
- continue;
205
- const ref = { modelId, expressId };
206
- if (overlayCreated) {
207
- const created = pending?.createdEntity(expressId);
208
- if (!created)
209
- throw new Error(`Missing pending entity #${expressId} during enumeration`);
210
- results.push(withOverrides(createdEntityData(created, ref, store), pending, expressId));
211
- continue;
212
- }
213
- const node = new EntityNode(store, expressId);
214
- results.push(withOverrides({
215
- ref,
216
- globalId: node.globalId,
217
- name: node.name,
218
- type: node.type,
219
- description: node.description,
220
- objectType: node.objectType,
221
- }, pending, expressId));
222
- }
223
- let filtered = results;
224
- if (descriptor.filters && descriptor.filters.length > 0) {
225
- const propsCache = new Map();
226
- const cachedProps = (ref) => {
227
- let cached = propsCache.get(ref.expressId);
228
- if (!cached) {
229
- cached = properties(ref, pending);
230
- propsCache.set(ref.expressId, cached);
231
- }
232
- return cached;
233
- };
234
- // A `Qto_` filter (or any psetName with no matching property set)
235
- // falls back to quantity sets — see `matchesPropertyFilter` in
236
- // `@ifc-lite/query`'s `property-filter-match.ts`. Without this, a
237
- // `Qto_WallBaseQuantities.NetVolume>1` filter (e.g. from the `#4094`
238
- // selector adapter's `.select()`/`selector` param) silently matched
239
- // zero entities even when the quantity was present.
240
- const qsetsCache = new Map();
241
- const cachedQuantities = (ref) => {
242
- let cached = qsetsCache.get(ref.expressId);
243
- if (!cached) {
244
- cached = quantities(ref);
245
- qsetsCache.set(ref.expressId, cached);
246
- }
247
- return cached;
248
- };
249
- for (const filter of descriptor.filters) {
250
- filtered = filtered.filter((entity) => matchesPropertyFilter(cachedProps(entity.ref), filter, cachedQuantities(entity.ref)));
251
- }
252
- }
253
- // `&&` alone lets a NaN offset/limit through silently: every NaN
254
- // comparison is false, so `descriptor.offset > 0` was falsy and the
255
- // guard did nothing -- a caller that computed a bad value (e.g.
256
- // `Number(userInput)` on a non-numeric string) got back MORE rows
257
- // than asked for, with no error. The same falsy-zero shape made
258
- // `limit: 0` ("no rows") silently mean "every row" instead. Fail
259
- // loudly on a non-finite or negative value instead of quietly
260
- // serving the wrong slice, matching the misconfigured-caller
261
- // convention this adapter already uses elsewhere (see the `add*`
262
- // stubs in headless-backend.ts). `limit: 0` is now a deliberate
263
- // empty result.
264
- //
265
- // No built-in MCP tool reaches this today: `query_entities`
266
- // (tools/query.ts) validates `limit`/`offset` as JSON-Schema
267
- // integers before its handler runs and does its own pagination via
268
- // `paginate()` rather than chaining `.limit()/.offset()` on the
269
- // query builder. This guards the public SDK path instead --
270
- // `HeadlessLikeBackend` is exported from `./index.js` and
271
- // `./browser.js` for programmatic use, and an embedder driving it
272
- // through `@ifc-lite/sdk`'s fluent `QueryBuilder` reaches
273
- // `descriptor.limit`/`descriptor.offset` directly. Same shape as
274
- // the CLI's `headless-backend.ts` (#2298) -- a parallel
275
- // implementation, not a shared import, so it needed its own fix.
276
- if (descriptor.offset != null) {
277
- if (!Number.isFinite(descriptor.offset) || descriptor.offset < 0) {
278
- throw new Error(`Invalid offset: ${descriptor.offset} (must be a non-negative finite number)`);
279
- }
280
- if (descriptor.offset > 0)
281
- filtered = filtered.slice(descriptor.offset);
282
- }
283
- if (descriptor.limit != null) {
284
- if (!Number.isFinite(descriptor.limit) || descriptor.limit < 0) {
285
- throw new Error(`Invalid limit: ${descriptor.limit} (must be a non-negative finite number)`);
286
- }
287
- filtered = filtered.slice(0, descriptor.limit);
288
- }
289
- return filtered;
290
- },
291
- // Headless contexts have no interactive viewer filter, so there is never an
292
- // "active filter" to report (issue #1107).
293
- entitiesMatchingActiveFilter: () => null,
294
- entityData,
295
- attributes,
296
- properties: (ref) => properties(ref),
297
- quantities,
298
- classifications(ref) {
299
- return extractClassificationsOnDemand(store, ref.expressId);
300
- },
301
- materials(ref) {
302
- return extractMaterialsOnDemand(store, ref.expressId);
303
- },
304
- typeProperties(ref) {
305
- const info = extractTypePropertiesOnDemand(store, ref.expressId);
306
- if (!info)
307
- return null;
308
- return {
309
- typeName: info.typeName,
310
- typeId: info.typeId,
311
- properties: info.properties.map((pset) => ({
312
- name: pset.name,
313
- globalId: pset.globalId,
314
- properties: pset.properties.map((p) => ({ name: p.name, type: p.type, value: p.value })),
315
- })),
316
- };
317
- },
318
- documents(ref) {
319
- return extractDocumentsOnDemand(store, ref.expressId);
320
- },
321
- relationships(ref) {
322
- const result = extractRelationshipsOnDemand(store, ref.expressId);
323
- const pending = overlay();
324
- if (!pending)
325
- return result;
326
- return foldRelationshipRows(result, pending, ref, entityData);
327
- },
328
- /**
329
- * Containment, aggregation and typing, with the session's queued edits
330
- * applied (#2014).
331
- *
332
- * This is the seam every containment answer already passes through:
333
- * `bim.storey`, `bim.path`, `bim.contains`, `bim.decomposes` and
334
- * `bim.containedIn` are all thin wrappers over it. Folding here is what
335
- * stopped `query_entities(in_storey)` from dropping an entity that the same
336
- * session had just created *and* placed with a queued
337
- * `IfcRelContainedInSpatialStructure` — a query that returns an entity
338
- * without the filter and drops it with one reads as a wrong storey rather
339
- * than a missing fold.
340
- *
341
- * Three rules, in order:
342
- *
343
- * 1. A parsed edge is dropped when the session deleted the `IfcRel…` record
344
- * that produced it. The graph carries `relationshipId` per edge, so this
345
- * is exact rather than inferred.
346
- * 2. An edge to or from a tombstoned entity is dropped. Deleting a storey
347
- * has to stop answering "this wall is in that storey".
348
- * 3. Queued relationships are added. Deleting a queued relationship forgets
349
- * it outright, so there is no tombstone case to handle on this side.
350
- *
351
- * `forward` walks Relating → Related (a storey to its elements, a whole to
352
- * its parts); `inverse` walks back.
353
- */
354
- related(ref, relType, direction) {
355
- const relEnum = QUERY_REL_TYPE_MAP[relType];
356
- if (relEnum === undefined)
357
- return [];
358
- const pending = overlay();
359
- // A deleted entity relates to nothing (#2014 review).
360
- if (pending?.deleted.has(ref.expressId))
361
- return [];
362
- const out = [];
363
- const seen = new Set();
364
- const take = (expressId) => {
365
- if (pending?.deleted.has(expressId) || seen.has(expressId))
366
- return;
367
- seen.add(expressId);
368
- out.push(expressId);
369
- };
370
- const isDeleted = pending
371
- ? (id) => pending.deleted.has(id) || pending.supersededRelationshipIds.has(id)
372
- : () => false;
373
- for (const id of extractExactRelatedIds(store, ref.expressId, relType, direction, isDeleted))
374
- take(id);
375
- for (const edge of pending?.relationshipEdges(ref.expressId, relType) ?? []) {
376
- if (edge.direction === direction)
377
- take(edge.targetId);
378
- }
379
- return out.map((expressId) => ({ modelId: ref.modelId, expressId }));
380
- },
381
- };
382
- }
383
- //# sourceMappingURL=backend-query.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"backend-query.js","sourceRoot":"","sources":["../src/backend-query.ts"],"names":[],"mappings":"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"}
@@ -1,8 +0,0 @@
1
- /** Adapt the MCP session overlay to the shared effective-entity boundary. */
2
- import type { EffectiveEntityOverlay } from '@ifc-lite/data';
3
- import type { IfcDataStore } from '@ifc-lite/parser';
4
- import type { PendingOverlay } from './overlay.js';
5
- export declare function pendingEntityMembership(overlay: PendingOverlay | null): EffectiveEntityOverlay | null;
6
- /** IFCX has columnar rows but no STEP type buckets; give the shared iterator its source domain. */
7
- export declare function effectiveSourceIds(store: IfcDataStore): Iterable<number> | undefined;
8
- //# sourceMappingURL=effective-entity-membership.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"effective-entity-membership.d.ts","sourceRoot":"","sources":["../src/effective-entity-membership.ts"],"names":[],"mappings":"AAIA,6EAA6E;AAC7E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI,GAAG,sBAAsB,GAAG,IAAI,CAYrG;AAED,mGAAmG;AACnG,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,SAAS,CAGpF"}
@@ -1,23 +0,0 @@
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
- export function pendingEntityMembership(overlay) {
5
- if (!overlay)
6
- return null;
7
- return {
8
- isDeleted: (id) => overlay.deleted.has(id),
9
- getTombstones: () => overlay.deleted,
10
- getTypeMutations: () => overlay.getTypeMutations?.() ?? overlay.typeMutations?.() ?? new Map(),
11
- getNewEntities: () => overlay.createdAll.map((entity) => ({ expressId: entity.expressId, type: entity.ifcType })),
12
- getNewEntity: (id) => {
13
- const entity = overlay.createdEntity(id);
14
- return entity ? { type: entity.ifcType } : null;
15
- },
16
- };
17
- }
18
- /** IFCX has columnar rows but no STEP type buckets; give the shared iterator its source domain. */
19
- export function effectiveSourceIds(store) {
20
- // @raw-entity-enumeration-ok detect an indexless IFCX source; its columnar IDs are passed through the canonical accessor
21
- return store.entityIndex.byType.size === 0 ? store.entities.expressId : undefined;
22
- }
23
- //# sourceMappingURL=effective-entity-membership.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"effective-entity-membership.js","sourceRoot":"","sources":["../src/effective-entity-membership.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAO/D,MAAM,UAAU,uBAAuB,CAAC,OAA8B;IACpE,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAC1B,OAAO;QACL,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1C,aAAa,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO;QACpC,gBAAgB,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,IAAI,OAAO,CAAC,aAAa,EAAE,EAAE,IAAI,IAAI,GAAG,EAA+B;QAC3H,cAAc,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QACjH,YAAY,EAAE,CAAC,EAAE,EAAE,EAAE;YACnB,MAAM,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;YACzC,OAAO,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAClD,CAAC;KACF,CAAC;AACJ,CAAC;AAED,mGAAmG;AACnG,MAAM,UAAU,kBAAkB,CAAC,KAAmB;IACpD,yHAAyH;IACzH,OAAO,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;AACpF,CAAC"}
@@ -1,14 +0,0 @@
1
- /**
2
- * `bim.store.addCost*` / `nestCostItems` / `assignCostItemsToSchedule` /
3
- * `assignToCostItem` / `setCostItemValues` / `removeCostEntity` stubs for the
4
- * MCP v0.1 headless backend (#4857 PR A) — the same convention
5
- * `headless-backend.ts`'s `addColumn`/`addWall`/etc. already use: agent flows
6
- * go through `entity_create` with raw attributes, not the high-level
7
- * builders, so these throw loudly rather than silently no-op. `bim.cost`
8
- * READS already observe whatever `entity_create` authors, once the model's
9
- * `MutablePropertyView` is threaded into `createCostBackend` — see
10
- * `headless-backend.ts`'s `this.cost` construction.
11
- */
12
- import type { CostStoreBackendMethods } from '@ifc-lite/sdk';
13
- export declare function costStoreStubs(): CostStoreBackendMethods;
14
- //# sourceMappingURL=headless-backend-cost-store.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"headless-backend-cost-store.d.ts","sourceRoot":"","sources":["../src/headless-backend-cost-store.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAM7D,wBAAgB,cAAc,IAAI,uBAAuB,CAYxD"}
@@ -1,20 +0,0 @@
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
- const unsupported = (method) => () => {
5
- throw new Error(`${method} not supported in MCP v0.1; use entity_create`);
6
- };
7
- export function costStoreStubs() {
8
- return {
9
- addCostSchedule: unsupported('addCostSchedule'),
10
- addCostItem: unsupported('addCostItem'),
11
- addCostValue: unsupported('addCostValue'),
12
- addCostQuantity: unsupported('addCostQuantity'),
13
- nestCostItems: unsupported('nestCostItems'),
14
- assignCostItemsToSchedule: unsupported('assignCostItemsToSchedule'),
15
- assignToCostItem: unsupported('assignToCostItem'),
16
- setCostItemValues: unsupported('setCostItemValues'),
17
- removeCostEntity: unsupported('removeCostEntity'),
18
- };
19
- }
20
- //# sourceMappingURL=headless-backend-cost-store.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"headless-backend-cost-store.js","sourceRoot":"","sources":["../src/headless-backend-cost-store.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAgB/D,MAAM,WAAW,GAAG,CAAC,MAAc,EAAE,EAAE,CAAC,GAAU,EAAE;IAClD,MAAM,IAAI,KAAK,CAAC,GAAG,MAAM,+CAA+C,CAAC,CAAC;AAC5E,CAAC,CAAC;AAEF,MAAM,UAAU,cAAc;IAC5B,OAAO;QACL,eAAe,EAAE,WAAW,CAAC,iBAAiB,CAAC;QAC/C,WAAW,EAAE,WAAW,CAAC,aAAa,CAAC;QACvC,YAAY,EAAE,WAAW,CAAC,cAAc,CAAC;QACzC,eAAe,EAAE,WAAW,CAAC,iBAAiB,CAAC;QAC/C,aAAa,EAAE,WAAW,CAAC,eAAe,CAAC;QAC3C,yBAAyB,EAAE,WAAW,CAAC,2BAA2B,CAAC;QACnE,gBAAgB,EAAE,WAAW,CAAC,kBAAkB,CAAC;QACjD,iBAAiB,EAAE,WAAW,CAAC,mBAAmB,CAAC;QACnD,gBAAgB,EAAE,WAAW,CAAC,kBAAkB,CAAC;KAClD,CAAC;AACJ,CAAC"}
@@ -1,50 +0,0 @@
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
@@ -1 +0,0 @@
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"}