@ifc-lite/cli 0.26.0 → 0.28.0

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 (146) hide show
  1. package/README.md +1 -1
  2. package/dist/commands/ask.d.ts +8 -0
  3. package/dist/commands/ask.d.ts.map +1 -1
  4. package/dist/commands/ask.js +10 -9
  5. package/dist/commands/ask.js.map +1 -1
  6. package/dist/commands/bsdd.d.ts.map +1 -1
  7. package/dist/commands/bsdd.js +49 -13
  8. package/dist/commands/bsdd.js.map +1 -1
  9. package/dist/commands/delivery-checks.d.ts +56 -0
  10. package/dist/commands/delivery-checks.d.ts.map +1 -0
  11. package/dist/commands/delivery-checks.js +222 -0
  12. package/dist/commands/delivery-checks.js.map +1 -0
  13. package/dist/commands/delivery-recipe.d.ts +23 -0
  14. package/dist/commands/delivery-recipe.d.ts.map +1 -0
  15. package/dist/commands/delivery-recipe.js +104 -0
  16. package/dist/commands/delivery-recipe.js.map +1 -0
  17. package/dist/commands/delivery-report.d.ts +51 -0
  18. package/dist/commands/delivery-report.d.ts.map +1 -0
  19. package/dist/commands/delivery-report.js +114 -0
  20. package/dist/commands/delivery-report.js.map +1 -0
  21. package/dist/commands/delivery.d.ts +2 -0
  22. package/dist/commands/delivery.d.ts.map +1 -0
  23. package/dist/commands/delivery.js +127 -0
  24. package/dist/commands/delivery.js.map +1 -0
  25. package/dist/commands/diff-classification-label.d.ts +12 -0
  26. package/dist/commands/diff-classification-label.d.ts.map +1 -0
  27. package/dist/commands/diff-classification-label.js +20 -0
  28. package/dist/commands/diff-classification-label.js.map +1 -0
  29. package/dist/commands/diff-engine.d.ts.map +1 -1
  30. package/dist/commands/diff-engine.js +33 -11
  31. package/dist/commands/diff-engine.js.map +1 -1
  32. package/dist/commands/diff-test-helpers.d.ts +12 -0
  33. package/dist/commands/diff-test-helpers.d.ts.map +1 -1
  34. package/dist/commands/diff-test-helpers.js +68 -0
  35. package/dist/commands/diff-test-helpers.js.map +1 -1
  36. package/dist/commands/diff-unit-scale-fixtures.d.ts +34 -0
  37. package/dist/commands/diff-unit-scale-fixtures.d.ts.map +1 -0
  38. package/dist/commands/diff-unit-scale-fixtures.js +94 -0
  39. package/dist/commands/diff-unit-scale-fixtures.js.map +1 -0
  40. package/dist/commands/export.d.ts +11 -0
  41. package/dist/commands/export.d.ts.map +1 -1
  42. package/dist/commands/export.js +9 -14
  43. package/dist/commands/export.js.map +1 -1
  44. package/dist/commands/gym.js +2 -2
  45. package/dist/commands/merge.d.ts.map +1 -1
  46. package/dist/commands/merge.js +8 -0
  47. package/dist/commands/merge.js.map +1 -1
  48. package/dist/commands/query-aggregation.d.ts +27 -4
  49. package/dist/commands/query-aggregation.d.ts.map +1 -1
  50. package/dist/commands/query-aggregation.js +67 -6
  51. package/dist/commands/query-aggregation.js.map +1 -1
  52. package/dist/commands/query-output.d.ts +7 -0
  53. package/dist/commands/query-output.d.ts.map +1 -1
  54. package/dist/commands/query-output.js +63 -27
  55. package/dist/commands/query-output.js.map +1 -1
  56. package/dist/commands/query-storey.d.ts +24 -0
  57. package/dist/commands/query-storey.d.ts.map +1 -0
  58. package/dist/commands/query-storey.js +71 -0
  59. package/dist/commands/query-storey.js.map +1 -0
  60. package/dist/commands/query.d.ts +2 -25
  61. package/dist/commands/query.d.ts.map +1 -1
  62. package/dist/commands/query.js +39 -158
  63. package/dist/commands/query.js.map +1 -1
  64. package/dist/commands/schedule-aggregate.d.ts +51 -0
  65. package/dist/commands/schedule-aggregate.d.ts.map +1 -0
  66. package/dist/commands/schedule-aggregate.js +121 -0
  67. package/dist/commands/schedule-aggregate.js.map +1 -0
  68. package/dist/commands/schedule-columns.d.ts +15 -0
  69. package/dist/commands/schedule-columns.d.ts.map +1 -0
  70. package/dist/commands/schedule-columns.js +63 -0
  71. package/dist/commands/schedule-columns.js.map +1 -0
  72. package/dist/commands/schedule-group.d.ts +65 -0
  73. package/dist/commands/schedule-group.d.ts.map +1 -0
  74. package/dist/commands/schedule-group.js +0 -0
  75. package/dist/commands/schedule-group.js.map +1 -0
  76. package/dist/commands/schedule-presets.d.ts +21 -0
  77. package/dist/commands/schedule-presets.d.ts.map +1 -0
  78. package/dist/commands/schedule-presets.js +62 -0
  79. package/dist/commands/schedule-presets.js.map +1 -0
  80. package/dist/commands/schedule-render-html.d.ts +13 -0
  81. package/dist/commands/schedule-render-html.d.ts.map +1 -0
  82. package/dist/commands/schedule-render-html.js +100 -0
  83. package/dist/commands/schedule-render-html.js.map +1 -0
  84. package/dist/commands/schedule-render-md.d.ts +12 -0
  85. package/dist/commands/schedule-render-md.d.ts.map +1 -0
  86. package/dist/commands/schedule-render-md.js +77 -0
  87. package/dist/commands/schedule-render-md.js.map +1 -0
  88. package/dist/commands/schedule-render.d.ts +51 -0
  89. package/dist/commands/schedule-render.d.ts.map +1 -0
  90. package/dist/commands/schedule-render.js +205 -0
  91. package/dist/commands/schedule-render.js.map +1 -0
  92. package/dist/commands/schedule-spec.d.ts +29 -0
  93. package/dist/commands/schedule-spec.d.ts.map +1 -0
  94. package/dist/commands/schedule-spec.js +111 -0
  95. package/dist/commands/schedule-spec.js.map +1 -0
  96. package/dist/commands/schedule.d.ts +23 -0
  97. package/dist/commands/schedule.d.ts.map +1 -0
  98. package/dist/commands/schedule.js +249 -0
  99. package/dist/commands/schedule.js.map +1 -0
  100. package/dist/commands/schema.d.ts.map +1 -1
  101. package/dist/commands/schema.js +192 -17
  102. package/dist/commands/schema.js.map +1 -1
  103. package/dist/commands/stats-aggregation.d.ts +31 -6
  104. package/dist/commands/stats-aggregation.d.ts.map +1 -1
  105. package/dist/commands/stats-aggregation.js +79 -11
  106. package/dist/commands/stats-aggregation.js.map +1 -1
  107. package/dist/commands/stats.d.ts.map +1 -1
  108. package/dist/commands/stats.js +4 -4
  109. package/dist/commands/stats.js.map +1 -1
  110. package/dist/commands/validate.d.ts +7 -4
  111. package/dist/commands/validate.d.ts.map +1 -1
  112. package/dist/commands/validate.js +9 -6
  113. package/dist/commands/validate.js.map +1 -1
  114. package/dist/commands/where-filter.d.ts +42 -0
  115. package/dist/commands/where-filter.d.ts.map +1 -0
  116. package/dist/commands/where-filter.js +88 -0
  117. package/dist/commands/where-filter.js.map +1 -0
  118. package/dist/energy-export.d.ts.map +1 -1
  119. package/dist/energy-export.js +12 -2
  120. package/dist/energy-export.js.map +1 -1
  121. package/dist/geometry-report.d.ts.map +1 -1
  122. package/dist/geometry-report.js +15 -3
  123. package/dist/geometry-report.js.map +1 -1
  124. package/dist/headless-backend.d.ts +20 -5
  125. package/dist/headless-backend.d.ts.map +1 -1
  126. package/dist/headless-backend.js +131 -90
  127. package/dist/headless-backend.js.map +1 -1
  128. package/dist/index.js +28 -0
  129. package/dist/index.js.map +1 -1
  130. package/dist/output.d.ts +13 -0
  131. package/dist/output.d.ts.map +1 -1
  132. package/dist/output.js +21 -0
  133. package/dist/output.js.map +1 -1
  134. package/dist/property-filter-match.d.ts +12 -0
  135. package/dist/property-filter-match.d.ts.map +1 -0
  136. package/dist/property-filter-match.js +17 -0
  137. package/dist/property-filter-match.js.map +1 -0
  138. package/dist/query-overlay-relations.d.ts +29 -0
  139. package/dist/query-overlay-relations.d.ts.map +1 -0
  140. package/dist/query-overlay-relations.js +88 -0
  141. package/dist/query-overlay-relations.js.map +1 -0
  142. package/dist/query-overlay.d.ts +44 -0
  143. package/dist/query-overlay.d.ts.map +1 -0
  144. package/dist/query-overlay.js +100 -0
  145. package/dist/query-overlay.js.map +1 -0
  146. package/package.json +21 -21
@@ -1,13 +1,17 @@
1
1
  /* This Source Code Form is subject to the terms of the Mozilla Public
2
2
  * License, v. 2.0. If a copy of the MPL was not distributed with this
3
3
  * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4
- import { createHeadlessMutateAdapter } from '@ifc-lite/sdk';
4
+ import { createEffectiveEntityCheck, createHeadlessMutateAdapter } from '@ifc-lite/sdk';
5
5
  import { MutablePropertyView, StoreEditor } from '@ifc-lite/mutations';
6
6
  import { addBeamToStore, addColumnToStore, addDoorToStore, addMemberToStore, addPlateToStore, addRoofToStore, applyStylesInStore, addSlabToStore, addSpaceToStore, addWallToStore, addWindowToStore, resolveSpatialAnchor, generateSpaces, listStoreys, } from '@ifc-lite/create';
7
- import { EntityNode } from '@ifc-lite/query';
7
+ import { EntityNode, findPropertyInSets, findQuantityInSets, normalizeBooleanValue } from '@ifc-lite/query';
8
8
  import { extractAllEntityAttributes, extractClassificationsOnDemand, extractMaterialsOnDemand, extractPropertiesOnDemand, extractQuantitiesOnDemand, extractTypePropertiesOnDemand, extractDocumentsOnDemand, extractRelationshipsOnDemand, expandTypes, QUERY_REL_TYPE_MAP, extractScheduleOnDemand, isQueryableObjectType, } from '@ifc-lite/parser';
9
9
  import { escapeCsvCell, exportToStep, StepExporter } from '@ifc-lite/export';
10
+ import { edgeSurvives } from '@ifc-lite/data';
10
11
  import { exportHbjson, exportDfjson } from './energy-export.js';
12
+ import { foldQueuedRelated } from './query-overlay-relations.js';
13
+ import { overlayEntityData, overlayProperties, overlayQuantities, foldNewEntities } from './query-overlay.js';
14
+ import { matchesPropertyFilter } from './property-filter-match.js';
11
15
  // `expandTypes` used to be defined here; it now comes from `@ifc-lite/parser`,
12
16
  // shared with the other query backends (see `query-backend-maps.ts`). Re-exported
13
17
  // so this module's consumers are unaffected by where it lives.
@@ -32,14 +36,13 @@ export const isProductType = isQueryableObjectType;
32
36
  /**
33
37
  * Normalize boolean-like values for comparison.
34
38
  * IFC STEP files store booleans as .T./.F., but users pass true/false.
39
+ *
40
+ * Re-exported from `@ifc-lite/query` for existing importers of this module;
41
+ * the actual comparison the query filter runs lives there too
42
+ * (`compareFilterValue`), shared with the viewer and MCP `QueryBackendMethods`
43
+ * implementations so the three can't drift apart on `where()` semantics again.
35
44
  */
36
- export function normalizeBooleanValue(value) {
37
- if (value === true || value === '.T.' || value === 'true' || value === 'TRUE')
38
- return 'true';
39
- if (value === false || value === '.F.' || value === 'false' || value === 'FALSE')
40
- return 'false';
41
- return value;
42
- }
45
+ export { normalizeBooleanValue };
43
46
  export function normalizePropertyValue(value) {
44
47
  if (value == null)
45
48
  return null;
@@ -74,11 +77,17 @@ export class HeadlessBackend {
74
77
  style;
75
78
  dataStore;
76
79
  modelName;
80
+ /** Every spelling of the one model this backend answers for, written once:
81
+ * the schedule assert, the `bim.mutate.*` guard and the `bim.store.add*`
82
+ * ref-minting sites all have to give the SAME answer, or a ref is minted
83
+ * under an id the very next write refuses (#3764). */
84
+ acceptedModelIds;
77
85
  mutationView = null;
78
86
  storeEditor = null;
79
87
  constructor(store, modelName) {
80
88
  this.dataStore = store;
81
89
  this.modelName = modelName;
90
+ this.acceptedModelIds = modelName === MODEL_ID ? [MODEL_ID] : [MODEL_ID, modelName];
82
91
  this.model = this.createModelAdapter();
83
92
  this.query = this.createQueryAdapter();
84
93
  this.selection = this.createSelectionAdapter();
@@ -94,6 +103,20 @@ export class HeadlessBackend {
94
103
  this.spaces = this.createSpacesAdapter();
95
104
  this.style = this.createStyleAdapter();
96
105
  }
106
+ /** Whether `modelId` names the one model this backend holds. */
107
+ acceptsModelId(modelId) {
108
+ return this.acceptedModelIds.includes(modelId);
109
+ }
110
+ /** The accepted spellings as an error-message clause: `'default' or 'a.ifc'`. */
111
+ acceptedModelIdList() {
112
+ return this.acceptedModelIds.map(id => `'${id}'`).join(' or ');
113
+ }
114
+ /** Refuse an unknown model id loudly, at whichever surface was handed it. */
115
+ assertKnownModelId(modelId) {
116
+ if (this.acceptsModelId(modelId))
117
+ return;
118
+ throw new Error(`Unknown modelId '${modelId}': this backend answers for ${this.acceptedModelIdList()}`);
119
+ }
97
120
  createStyleAdapter() {
98
121
  return {
99
122
  // Same arrangement as the spaces adapter: the work happens in
@@ -138,10 +161,14 @@ export class HeadlessBackend {
138
161
  }
139
162
  createQueryAdapter() {
140
163
  const store = this.dataStore;
164
+ // Lazy — a read-only session's `related()` stays on the store-only path.
165
+ const getMutationView = () => this.mutationView;
141
166
  function getEntityData(ref) {
142
- // Verify the entity actually exists in the parsed data
167
+ const overlay = overlayEntityData(getMutationView(), ref);
168
+ if (overlay !== undefined)
169
+ return overlay;
143
170
  if (!store.entityIndex.byId.has(ref.expressId))
144
- return null;
171
+ return null; // not parsed either
145
172
  const node = new EntityNode(store, ref.expressId);
146
173
  const type = node.type;
147
174
  if (!type || type === 'Unknown')
@@ -156,6 +183,9 @@ export class HeadlessBackend {
156
183
  };
157
184
  }
158
185
  function getProperties(ref) {
186
+ const overlay = overlayProperties(getMutationView(), ref);
187
+ if (overlay !== undefined)
188
+ return overlay;
159
189
  const node = new EntityNode(store, ref.expressId);
160
190
  return node.properties().map((pset) => ({
161
191
  name: pset.name,
@@ -168,6 +198,9 @@ export class HeadlessBackend {
168
198
  }));
169
199
  }
170
200
  function getQuantities(ref) {
201
+ const overlay = overlayQuantities(getMutationView(), ref);
202
+ if (overlay !== undefined)
203
+ return overlay;
171
204
  const node = new EntityNode(store, ref.expressId);
172
205
  return node.quantities().map(qset => ({
173
206
  name: qset.name,
@@ -181,10 +214,11 @@ export class HeadlessBackend {
181
214
  return {
182
215
  entities(descriptor) {
183
216
  const results = [];
217
+ const view = getMutationView();
184
218
  let entityIds;
185
219
  if (descriptor.types && descriptor.types.length > 0) {
186
220
  entityIds = [];
187
- for (const type of expandTypes(descriptor.types)) {
221
+ for (const type of expandTypes(descriptor.types, store.schemaVersion)) {
188
222
  const typeIds = store.entityIndex.byType.get(type) ?? [];
189
223
  for (const id of typeIds)
190
224
  entityIds.push(id);
@@ -202,6 +236,8 @@ export class HeadlessBackend {
202
236
  for (const expressId of entityIds) {
203
237
  if (expressId === 0)
204
238
  continue;
239
+ if (view?.isDeleted(expressId))
240
+ continue; // tombstoned this session
205
241
  const node = new EntityNode(store, expressId);
206
242
  results.push({
207
243
  ref: { modelId: MODEL_ID, expressId },
@@ -212,6 +248,8 @@ export class HeadlessBackend {
212
248
  objectType: node.objectType,
213
249
  });
214
250
  }
251
+ if (view)
252
+ results.push(...foldNewEntities(view, descriptor.types, (t) => expandTypes(t, store.schemaVersion), isProductType, MODEL_ID));
215
253
  let filtered = results;
216
254
  if (descriptor.filters && descriptor.filters.length > 0) {
217
255
  const propsCache = new Map();
@@ -226,50 +264,20 @@ export class HeadlessBackend {
226
264
  for (const filter of descriptor.filters) {
227
265
  filtered = filtered.filter(entity => {
228
266
  const props = getCachedProps(entity.ref);
229
- const pset = props.find(p => p.name === filter.psetName);
230
- if (!pset)
231
- return false;
232
- const prop = pset.properties.find(p => p.name === filter.propName);
233
- if (!prop)
234
- return false;
235
- if (filter.operator === 'exists')
236
- return true;
237
- const val = prop.value;
238
- const filterVal = filter.value;
239
- // Normalize booleans: .T./.F./true/false all compare equally
240
- const normVal = normalizeBooleanValue(val);
241
- const normFilterVal = normalizeBooleanValue(filterVal);
242
- switch (filter.operator) {
243
- case '=': return String(normVal) === String(normFilterVal);
244
- case '!=': return String(normVal) !== String(normFilterVal);
245
- case '>': return Number(normVal) > Number(normFilterVal);
246
- case '<': return Number(normVal) < Number(normFilterVal);
247
- case '>=': return Number(normVal) >= Number(normFilterVal);
248
- case '<=': return Number(normVal) <= Number(normFilterVal);
249
- case 'contains': return String(normVal).toLowerCase().includes(String(normFilterVal).toLowerCase());
250
- default: return false;
251
- }
267
+ return matchesPropertyFilter(props, filter);
252
268
  });
253
269
  }
254
270
  }
255
- // `!= null` alone lets a NaN offset/limit through (NaN is neither
256
- // null nor undefined); a bare `> 0` then silently drops it (every
257
- // NaN comparison is false), which used to IGNORE a garbage value
258
- // instead of rejecting it -- and, by the same reasoning, silently
259
- // ignored a deliberate `limit: 0`. Reject non-finite/negative
260
- // values loudly instead of quietly serving the wrong slice; the
261
- // The CLI's own `--limit`/`--offset` flags are validated before they
262
- // reach this descriptor, so this guards callers that build one
263
- // directlyand it makes `limit: 0` mean "no rows" rather than being
264
- // silently ignored, matching what `--limit 0` documents.
265
- //
266
- // NOTE this does NOT cover @ifc-lite/mcp. That package has its own
267
- // backend (`packages/mcp/src/backend-query.ts`), a parallel
268
- // implementation rather than a shared import, and its equivalent lines
269
- // still read `descriptor.limit && descriptor.limit > 0` — so a NaN is
270
- // silently ignored there and `limit: 0` is a no-op. Same defect,
271
- // different package, its own tests and release cadence; tracked as a
272
- // separate change rather than folded into this CLI-scoped PR.
271
+ // `!= null` alone lets a NaN offset/limit through (neither null nor
272
+ // undefined); a bare `> 0` then silently drops it (every NaN
273
+ // comparison is false) instead of rejecting it, and by the same
274
+ // reasoning silently ignored a deliberate `limit: 0`. Reject
275
+ // non-finite/negative values loudly instead of quietly serving the
276
+ // wrong slice. The CLI's own `--limit`/`--offset` flags are validated
277
+ // before reaching this descriptor, so this guards direct SDK callers
278
+ // (`@ifc-lite/mcp`'s parallel `backend-query.ts` ported the identical
279
+ // fix independently same defect shape, own tests and release
280
+ // cadence).
273
281
  if (descriptor.offset != null) {
274
282
  if (!Number.isFinite(descriptor.offset) || descriptor.offset < 0) {
275
283
  throw new TypeError(`Invalid offset: ${descriptor.offset} (must be a non-negative finite number)`);
@@ -324,12 +332,37 @@ export class HeadlessBackend {
324
332
  relationships(ref) {
325
333
  return extractRelationshipsOnDemand(store, ref.expressId);
326
334
  },
335
+ // Folds queued `IfcRel…` creates in (query-overlay-relations.ts, mirrors #2014).
327
336
  related(ref, relType, direction) {
328
337
  const relEnum = QUERY_REL_TYPE_MAP[relType];
329
338
  if (relEnum === undefined)
330
339
  return [];
331
- const targets = store.relationships.getRelated(ref.expressId, relEnum, direction);
332
- return targets.map((expressId) => ({ modelId: ref.modelId, expressId }));
340
+ const view = getMutationView();
341
+ if (view?.isDeleted(ref.expressId))
342
+ return []; // deleted relates to nothing
343
+ const half = direction === 'forward' ? store.relationships.forward : store.relationships.inverse;
344
+ const out = [];
345
+ const seen = new Set();
346
+ const take = (id) => {
347
+ if (view?.isDeleted(id) || seen.has(id))
348
+ return;
349
+ seen.add(id);
350
+ out.push(id);
351
+ };
352
+ // Two `IfcRel*` instances can name the same triple; the graph keeps
353
+ // only one as `relationshipId` and folds the rest into
354
+ // `shadowedRelationshipIds` (#3760). `edgeSurvives` (shared with the
355
+ // MCP backend, #3782 review) treats the connection as alive as long
356
+ // as any one of them still exists.
357
+ const isDeleted = view ? (id) => view.isDeleted(id) : () => false;
358
+ for (const edge of half.getEdges(ref.expressId, relEnum)) {
359
+ if (edgeSurvives(edge, isDeleted))
360
+ take(edge.target);
361
+ }
362
+ if (view)
363
+ for (const t of foldQueuedRelated(view.getNewEntities(), (id) => view.isDeleted(id), relType, direction, ref.expressId))
364
+ take(t);
365
+ return out.map((expressId) => ({ modelId: ref.modelId, expressId }));
333
366
  },
334
367
  };
335
368
  }
@@ -361,33 +394,34 @@ export class HeadlessBackend {
361
394
  };
362
395
  }
363
396
  createMutateAdapter() {
364
- return createHeadlessMutateAdapter(() => this.getOrCreateMutationView());
397
+ return createHeadlessMutateAdapter(() => this.getOrCreateMutationView(), createEffectiveEntityCheck({
398
+ acceptedModelIds: this.acceptedModelIds,
399
+ // Both halves of the source index, the union every other "is it in
400
+ // the source model" site takes: `deferPropertyAtomIndex` keeps property
401
+ // atoms out of `byId`, and they are exported like any other entity.
402
+ hasSourceEntity: id => this.dataStore.entityIndex.byId.has(id)
403
+ || this.dataStore.deferredEntityIndex?.has(id) === true,
404
+ overlay: () => this.mutationView,
405
+ }));
365
406
  }
366
407
  /**
367
- * The overlay every write goes through, created on first use.
368
- *
369
- * Built by `getOrCreateStoreEditor` so the property and quantity extractors
370
- * are wired exactly once, whichever adapter writes first.
408
+ * The overlay every write goes through, created on first use by
409
+ * `getOrCreateStoreEditor` so its extractors are wired exactly once.
371
410
  */
372
411
  getOrCreateMutationView() {
373
412
  this.getOrCreateStoreEditor();
374
- // Non-null immediately after: getOrCreateStoreEditor assigns both fields
375
- // together and never clears them.
413
+ // Non-null immediately after: both fields are assigned together and never cleared.
376
414
  return this.mutationView;
377
415
  }
378
416
  getOrCreateStoreEditor() {
379
417
  if (this.storeEditor)
380
418
  return this.storeEditor;
381
419
  this.mutationView = new MutablePropertyView(this.dataStore.properties || null, MODEL_ID);
382
- // Give the overlay a base to merge against. The columnar parser leaves
383
- // `store.properties` empty and serves properties on demand, so without these
384
- // the view's *only* source is the overlay itself and `getForEntity` answers
385
- // with the one edited pset and nothing else. `StepExporter` re-emits
386
- // `getForEntity(id)` for every entity with a property mutation and skips the
387
- // original records, so editing one property would drop every sibling
388
- // property in that pset on save. Same wiring, same reason, as
389
- // `packages/mcp/src/headless-backend.ts` and
390
- // `apps/viewer/src/utils/configureMutationView.ts` (#2000, #2004).
420
+ // Give the overlay a base to merge against the columnar parser serves
421
+ // properties on demand, so without this `getForEntity` would answer with
422
+ // only the one edited pset and `StepExporter` would drop every sibling
423
+ // property on save. Same wiring as `packages/mcp/src/headless-backend.ts`
424
+ // and `apps/viewer/src/utils/configureMutationView.ts` (#2000, #2004).
391
425
  if (this.dataStore.source?.length > 0) {
392
426
  this.mutationView.setOnDemandExtractor((entityId) => extractPropertiesOnDemand(this.dataStore, entityId));
393
427
  this.mutationView.setQuantityExtractor((entityId) => extractQuantitiesOnDemand(this.dataStore, entityId));
@@ -398,8 +432,14 @@ export class HeadlessBackend {
398
432
  createStoreAdapter() {
399
433
  const get = () => this.getOrCreateStoreEditor();
400
434
  const dataStore = () => this.dataStore;
435
+ // Every `add*` mints an `EntityRef` carrying the model id it was called
436
+ // with, and `bim.mutate.*` refuses one this backend does not answer for.
437
+ // Checking here, before the entity exists, is what keeps the two from
438
+ // disagreeing: no ref is handed back that the next call rejects.
439
+ const assertModel = (modelId) => this.assertKnownModelId(modelId);
401
440
  return {
402
441
  addEntity(modelId, def) {
442
+ assertModel(modelId);
403
443
  const ref = get().addEntity(def.type, def.attributes);
404
444
  return { modelId, expressId: ref.expressId };
405
445
  },
@@ -410,60 +450,70 @@ export class HeadlessBackend {
410
450
  get().setPositionalAttribute(ref.expressId, index, value);
411
451
  },
412
452
  addColumn(modelId, storeyExpressId, params) {
453
+ assertModel(modelId);
413
454
  const editor = get();
414
455
  const anchor = resolveSpatialAnchor(dataStore(), storeyExpressId);
415
456
  const result = addColumnToStore(editor, anchor, params);
416
457
  return { modelId, expressId: result.columnId };
417
458
  },
418
459
  addWall(modelId, storeyExpressId, params) {
460
+ assertModel(modelId);
419
461
  const editor = get();
420
462
  const anchor = resolveSpatialAnchor(dataStore(), storeyExpressId);
421
463
  const result = addWallToStore(editor, anchor, params);
422
464
  return { modelId, expressId: result.wallId };
423
465
  },
424
466
  addSlab(modelId, storeyExpressId, params) {
467
+ assertModel(modelId);
425
468
  const editor = get();
426
469
  const anchor = resolveSpatialAnchor(dataStore(), storeyExpressId);
427
470
  const result = addSlabToStore(editor, anchor, params);
428
471
  return { modelId, expressId: result.slabId };
429
472
  },
430
473
  addBeam(modelId, storeyExpressId, params) {
474
+ assertModel(modelId);
431
475
  const editor = get();
432
476
  const anchor = resolveSpatialAnchor(dataStore(), storeyExpressId);
433
477
  const result = addBeamToStore(editor, anchor, params);
434
478
  return { modelId, expressId: result.beamId };
435
479
  },
436
480
  addDoor(modelId, storeyExpressId, params) {
481
+ assertModel(modelId);
437
482
  const editor = get();
438
483
  const anchor = resolveSpatialAnchor(dataStore(), storeyExpressId);
439
484
  const result = addDoorToStore(editor, anchor, params);
440
485
  return { modelId, expressId: result.doorId };
441
486
  },
442
487
  addWindow(modelId, storeyExpressId, params) {
488
+ assertModel(modelId);
443
489
  const editor = get();
444
490
  const anchor = resolveSpatialAnchor(dataStore(), storeyExpressId);
445
491
  const result = addWindowToStore(editor, anchor, params);
446
492
  return { modelId, expressId: result.windowId };
447
493
  },
448
494
  addSpace(modelId, storeyExpressId, params) {
495
+ assertModel(modelId);
449
496
  const editor = get();
450
497
  const anchor = resolveSpatialAnchor(dataStore(), storeyExpressId);
451
498
  const result = addSpaceToStore(editor, anchor, params);
452
499
  return { modelId, expressId: result.spaceId };
453
500
  },
454
501
  addRoof(modelId, storeyExpressId, params) {
502
+ assertModel(modelId);
455
503
  const editor = get();
456
504
  const anchor = resolveSpatialAnchor(dataStore(), storeyExpressId);
457
505
  const result = addRoofToStore(editor, anchor, params);
458
506
  return { modelId, expressId: result.roofId };
459
507
  },
460
508
  addPlate(modelId, storeyExpressId, params) {
509
+ assertModel(modelId);
461
510
  const editor = get();
462
511
  const anchor = resolveSpatialAnchor(dataStore(), storeyExpressId);
463
512
  const result = addPlateToStore(editor, anchor, params);
464
513
  return { modelId, expressId: result.plateId };
465
514
  },
466
515
  addMember(modelId, storeyExpressId, params) {
516
+ assertModel(modelId);
467
517
  const editor = get();
468
518
  const anchor = resolveSpatialAnchor(dataStore(), storeyExpressId);
469
519
  const result = addMemberToStore(editor, anchor, params);
@@ -507,20 +557,14 @@ export class HeadlessBackend {
507
557
  const setName = col.slice(0, dotIdx);
508
558
  const valueName = col.slice(dotIdx + 1);
509
559
  if (props) {
510
- const pset = props.find(p => p.name === setName);
511
- if (pset) {
512
- const prop = pset.properties.find(p => p.name === valueName);
513
- if (prop?.value != null)
514
- return String(prop.value);
515
- }
560
+ const prop = findPropertyInSets(props, setName, valueName);
561
+ if (prop?.value != null)
562
+ return String(prop.value);
516
563
  }
517
564
  if (qsets) {
518
- const qset = qsets.find(q => q.name === setName);
519
- if (qset) {
520
- const qty = qset.quantities.find(q => q.name === valueName);
521
- if (qty?.value != null)
522
- return String(qty.value);
523
- }
565
+ const qty = findQuantityInSets(qsets, setName, valueName);
566
+ if (qty?.value != null)
567
+ return String(qty.value);
524
568
  }
525
569
  }
526
570
  return '';
@@ -614,15 +658,12 @@ export class HeadlessBackend {
614
658
  }
615
659
  createScheduleAdapter() {
616
660
  const store = this.dataStore;
617
- const modelName = this.modelName;
618
661
  let cached = null;
662
+ // Unknown ids surface a clear error instead of silently returning the wrong
663
+ // data, and they surface the SAME error the write guard gives.
619
664
  const assertModel = (modelId) => {
620
- // Headless mode ships exactly one model — `MODEL_ID` or the configured
621
- // name. Unknown ids surface a clear error instead of silently returning
622
- // the wrong data.
623
- if (modelId && modelId !== MODEL_ID && modelId !== modelName) {
624
- throw new Error(`Unknown modelId '${modelId}' — headless backend only has '${MODEL_ID}'`);
625
- }
665
+ if (modelId)
666
+ this.assertKnownModelId(modelId);
626
667
  };
627
668
  const extract = (modelId) => {
628
669
  assertModel(modelId);
@@ -1 +1 @@
1
- {"version":3,"file":"headless-backend.js","sourceRoot":"","sources":["../src/headless-backend.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"headless-backend.js","sourceRoot":"","sources":["../src/headless-backend.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -11,6 +11,7 @@
11
11
  import { logger, parseVerbosity } from './logger.js';
12
12
  import { infoCommand } from './commands/info.js';
13
13
  import { queryCommand } from './commands/query.js';
14
+ import { scheduleCommand } from './commands/schedule.js';
14
15
  import { propsCommand } from './commands/props.js';
15
16
  import { exportCommand } from './commands/export.js';
16
17
  import { diagnoseGeometryCommand } from './commands/diagnose-geometry.js';
@@ -41,6 +42,7 @@ import { extCommand } from './commands/ext.js';
41
42
  import { layerCommand } from './commands/layer.js';
42
43
  import { refCommand } from './commands/ref.js';
43
44
  import { gymCommand } from './commands/gym.js';
45
+ import { deliveryCommand } from './commands/delivery.js';
44
46
  import { fileURLToPath } from 'node:url';
45
47
  import { dirname, join } from 'node:path';
46
48
  import { readCliVersion } from './version.js';
@@ -58,6 +60,15 @@ const HELP = `
58
60
  query <file.ifc> [--type T] [--json] Query entities by type/properties/quantities
59
61
  props <file.ifc> --id <N> All properties for a single entity
60
62
  export <file.ifc> --format csv|json|ifc|obj|gltf|glb|jsonld|step|ifcx|usd|hbjson|dfjson Export data / geometry / energy model
63
+ schedule <file.ifc> --type T --columns "H=path,..." Tabular schedule of one class (csv/json/md/html)
64
+ [--preset door|window|space|wall|material-takeoff] default type+columns (flags override)
65
+ [--where PsetName.Prop=Value] [--format csv|json|md|html] path = attr | Pset.Prop | Qto.Qty
66
+ [--sort "Header[:asc|desc],..."] multi-key row sort by column HEADER (numbers numeric, nulls last)
67
+ [--group-by "Header,..."] contiguous groups, ordered by group key (asc, or --sort's dir)
68
+ [--subtotals "count|sum:H|avg:H|min:H|max:H,..."] subtotal row per group + grand total
69
+ (without --group-by: grand total only; CSV/md label the group column, JSON marks __row)
70
+ [--spec spec.json] load a saved schedule definition (beats --preset; an explicit flag beats both)
71
+ [--save spec.json] persist this invocation's resolved definition for --spec reuse
61
72
  diagnose-geometry <file.ifc> [--json] CSG / opening diagnostics (failures, classification)
62
73
  [--product ID|GUID] [--type T] Filter worst-hosts detail to one product/type
63
74
  extract-entities <file.ifc> --out F Isolate entities into a small, viewable standalone IFC
@@ -94,6 +105,8 @@ const HELP = `
94
105
  layer <publish|diff|merge|log|bake|...> Layered change tracking over a local store (.ifc-lite/)
95
106
  ref <list|create|move|protect> Manage named refs in the layer store
96
107
  gym --model <file.ifc> | --seed <n> reset/step/reward environment loop (JSONL over stdin/stdout)
108
+ delivery <recipe.json> [--json] [--out F] [--html F] Repeatable delivery check (structural + IDS) from a saved recipe
109
+ recipe: {"models":["m.ifc"],"structural":true,"ids":["rules.ids"]}, paths relative to the recipe file
97
110
 
98
111
  Options:
99
112
  --help, -h Show help
@@ -119,6 +132,15 @@ const HELP = `
119
132
  ifc-lite props model.ifc --id 42
120
133
  ifc-lite export model.ifc --format csv --type IfcWall --columns Name,Type,GlobalId
121
134
  ifc-lite export model.ifc --format json --type IfcWall,IfcDoor
135
+ ifc-lite schedule model.ifc --type IfcDoor --columns "Name=Name, Mark=Pset_DoorCommon.Reference"
136
+ ifc-lite schedule model.ifc --type IfcWall --columns "Name,Qto_WallBaseQuantities.NetVolume" --where Pset_WallCommon.IsExternal=true --format json
137
+ ifc-lite schedule model.ifc --type IfcDoor --columns "Name=Name, Fire=Pset_DoorCommon.FireRating, Area=Qto_DoorBaseQuantities.Area" --group-by Fire --sort "Area:desc" --subtotals "count, sum:Area"
138
+ ifc-lite schedule model.ifc --preset door
139
+ ifc-lite schedule model.ifc --preset material-takeoff --format json
140
+ ifc-lite schedule model.ifc --preset door --format md
141
+ ifc-lite schedule model.ifc --preset door --format html > doors.html
142
+ ifc-lite schedule model.ifc --preset door --save door-schedule.json
143
+ ifc-lite schedule model.ifc --spec door-schedule.json --format json
122
144
  ifc-lite diagnose-geometry model.ifc --json
123
145
  ifc-lite diagnose-geometry model.ifc --type IfcWall
124
146
  ifc-lite diagnose-geometry model.ifc --product 0YvCT2_$X3_xJG3rzD8L_8
@@ -239,6 +261,9 @@ async function main() {
239
261
  case 'export':
240
262
  await exportCommand(commandArgs);
241
263
  break;
264
+ case 'schedule':
265
+ await scheduleCommand(commandArgs);
266
+ break;
242
267
  case 'diagnose-geometry':
243
268
  await diagnoseGeometryCommand(commandArgs);
244
269
  break;
@@ -323,6 +348,9 @@ async function main() {
323
348
  case 'gym':
324
349
  await gymCommand(commandArgs);
325
350
  break;
351
+ case 'delivery':
352
+ await deliveryCommand(commandArgs);
353
+ break;
326
354
  default:
327
355
  process.stderr.write(`Unknown command: ${command}\n`);
328
356
  process.stderr.write(`Run 'ifc-lite --help' for usage.\n`);