@ifc-lite/mcp 0.17.0 → 0.18.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 (39) hide show
  1. package/dist/authored-attribute-value.d.ts +3 -0
  2. package/dist/authored-attribute-value.d.ts.map +1 -0
  3. package/dist/authored-attribute-value.js +34 -0
  4. package/dist/authored-attribute-value.js.map +1 -0
  5. package/dist/backend-query-relationships.d.ts +5 -0
  6. package/dist/backend-query-relationships.d.ts.map +1 -0
  7. package/dist/backend-query-relationships.js +55 -0
  8. package/dist/backend-query-relationships.js.map +1 -0
  9. package/dist/backend-query.d.ts +3 -5
  10. package/dist/backend-query.d.ts.map +1 -1
  11. package/dist/backend-query.js +68 -106
  12. package/dist/backend-query.js.map +1 -1
  13. package/dist/headless-backend-cost-store.d.ts +14 -0
  14. package/dist/headless-backend-cost-store.d.ts.map +1 -0
  15. package/dist/headless-backend-cost-store.js +20 -0
  16. package/dist/headless-backend-cost-store.js.map +1 -0
  17. package/dist/headless-backend.d.ts.map +1 -1
  18. package/dist/headless-backend.js +4 -2
  19. package/dist/headless-backend.js.map +1 -1
  20. package/dist/overlay.d.ts +10 -22
  21. package/dist/overlay.d.ts.map +1 -1
  22. package/dist/overlay.js +44 -77
  23. package/dist/overlay.js.map +1 -1
  24. package/dist/tools/diff-authored-keys.d.ts +66 -0
  25. package/dist/tools/diff-authored-keys.d.ts.map +1 -0
  26. package/dist/tools/diff-authored-keys.js +144 -0
  27. package/dist/tools/diff-authored-keys.js.map +1 -0
  28. package/dist/tools/diff-content.d.ts +33 -0
  29. package/dist/tools/diff-content.d.ts.map +1 -0
  30. package/dist/tools/diff-content.js +158 -0
  31. package/dist/tools/diff-content.js.map +1 -0
  32. package/dist/tools/diff-fingerprints.d.ts +3 -1
  33. package/dist/tools/diff-fingerprints.d.ts.map +1 -1
  34. package/dist/tools/diff-fingerprints.js +19 -49
  35. package/dist/tools/diff-fingerprints.js.map +1 -1
  36. package/dist/tools/diff.d.ts.map +1 -1
  37. package/dist/tools/diff.js +33 -109
  38. package/dist/tools/diff.js.map +1 -1
  39. package/package.json +17 -17
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff-content.d.ts","sourceRoot":"","sources":["../../src/tools/diff-content.ts"],"names":[],"mappings":"AAwBA,OAAO,EAAyB,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AAC3E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD;oEACoE;AACpE,eAAO,MAAM,mBAAmB,MAAM,CAAC;AAEvC;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,yBAAyB,KAAK,CAAC;AAiB5C;wDACwD;AACxD,wBAAgB,WAAW,CACzB,IAAI,EAAE,WAAW,EACjB,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE;IAAE,IAAI,EAAE,cAAc,GAAG,IAAI,CAAC;IAAC,KAAK,EAAE,cAAc,GAAG,IAAI,CAAA;CAAE,EACvE,UAAU,EAAE,MAAM,EAClB,eAAe,EAAE,MAAM,EACvB,WAAW,CAAC,EAAE,MAAM,EACpB,UAAU,CAAC,EAAE,OAAO,EACpB,UAAU,CAAC,EAAE,OAAO,GACnB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAwFzB;AAgBD,uEAAuE;AACvE,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAOvE"}
@@ -0,0 +1,158 @@
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
+ /**
5
+ * `model_diff`'s `by_content` half: the real `@ifc-lite/diff` engine run over
6
+ * two loaded models (issue #1891), plus `split_merge` / `successors`
7
+ * (issue #4956). Split out of `diff.ts` for size.
8
+ *
9
+ * **Data scope only.** This server has no geometry pipeline, so there is no
10
+ * world geometry hash and no bounding box; `scope: 'data'` is the honest
11
+ * description of what it can see, and every unambiguous 1:1 content match is
12
+ * therefore reported as `renamed` rather than `moved`/`reshaped`. `split_merge`
13
+ * and `successors` are geometry-only stages: they are threaded through to
14
+ * `diffModels` so the params exist and cost nothing today, but on this server
15
+ * they currently produce no claims either way (`diff.splitMerges` /
16
+ * `diff.successors` stay `undefined`, the engine's abstention) — they start
17
+ * producing claims the moment this server gains a geometry pass, with no
18
+ * further plumbing change. See `diff-fingerprints.ts`.
19
+ */
20
+ import { diffModels } from '@ifc-lite/diff';
21
+ import { buildModelFingerprints } from './diff-fingerprints.js';
22
+ import { fallbackPairDuplicateAuthoredKeys } from './diff-authored-keys.js';
23
+ import { pendingMutationsField } from '../overlay.js';
24
+ /** Default cap on the listed `contentMatches`. Per-kind totals are reported
25
+ * whole, so the cap bounds the payload without hiding anything. */
26
+ export const DEFAULT_MAX_MATCHES = 200;
27
+ /**
28
+ * Default cap on the GlobalIds listed per side of one match.
29
+ *
30
+ * `max_matches` bounds how many groups come back, not how big one is, and a
31
+ * `duplicated` / `deduplicated` / `ambiguous` group is a set of candidates that
32
+ * in a repetitive model can run to thousands of entities on each side. Without
33
+ * this, `max_matches: 1` could still return a model-sized payload and overflow
34
+ * the context window the cap exists to protect.
35
+ *
36
+ * 20 is chosen against what the list is *for*. A group is the engine declining
37
+ * to guess, so its members are a hand-off to the caller; twenty candidates on a
38
+ * side is already past what anyone resolves by reading a list rather than by
39
+ * querying the two models. The overwhelmingly common match is a 1:1 `renamed`
40
+ * pair, which this never touches. Every group still reports `baseCount` and
41
+ * `headCount` whole, computed before the cap for the same reason
42
+ * `contentMatchCounts` is: truncation must never be what makes a model look
43
+ * cleanly matched.
44
+ */
45
+ export const DEFAULT_MAX_GROUP_MEMBERS = 20;
46
+ /**
47
+ * Kinds an agent has to resolve itself, listed before the ones the engine
48
+ * already retired. Truncating the list must never be what drops the
49
+ * "we could not tell" groups.
50
+ */
51
+ const UNRESOLVED_FIRST = [
52
+ 'ambiguous',
53
+ 'duplicated',
54
+ 'deduplicated',
55
+ 'moved',
56
+ 'reshaped',
57
+ 'respecified',
58
+ 'renamed',
59
+ ];
60
+ /** Run the real `@ifc-lite/diff` engine over two loaded models. See the
61
+ * module doc for the scope and abstention contract. */
62
+ export function contentDiff(left, right, overlays, maxMatches, maxGroupMembers, keyProperty, splitMerge, successors) {
63
+ // Authored keys (issue #4955): `prop:<value>` where the model maintains one,
64
+ // GlobalId otherwise; a value two entities share is refused for both and
65
+ // reported so the agent sees why those two fell back.
66
+ const duplicateAuthoredKeys = new Map();
67
+ const adapter = { keyProperty, duplicateAuthoredKeys };
68
+ const baseFingerprints = buildModelFingerprints(left.store, overlays.left, adapter);
69
+ const headFingerprints = buildModelFingerprints(right.store, overlays.right, adapter);
70
+ fallbackPairDuplicateAuthoredKeys([
71
+ { fingerprints: baseFingerprints, store: left.store },
72
+ { fingerprints: headFingerprints, store: right.store },
73
+ ], duplicateAuthoredKeys);
74
+ const diff = diffModels(baseFingerprints, headFingerprints, {
75
+ scope: 'data',
76
+ matchUnpairedByContent: true,
77
+ detectSplitMerge: splitMerge,
78
+ detectSuccessors: successors,
79
+ });
80
+ const matches = [...(diff.contentMatches ?? [])].sort((a, b) => UNRESOLVED_FIRST.indexOf(a.kind) - UNRESOLVED_FIRST.indexOf(b.kind));
81
+ const byKind = {};
82
+ for (const match of matches)
83
+ byKind[match.kind] = (byKind[match.kind] ?? 0) + 1;
84
+ return {
85
+ scope: diff.scope,
86
+ keyProperty: keyProperty ?? null,
87
+ duplicateAuthoredKeys: [...duplicateAuthoredKeys.keys()].sort(),
88
+ counts: diff.counts,
89
+ // Whole totals, computed before the cap: an agent reading `contentMatches`
90
+ // can always tell whether the list it got is the whole story.
91
+ contentMatchCounts: byKind,
92
+ contentMatches: matches.slice(0, maxMatches).map((match) => ({
93
+ kind: match.kind,
94
+ ifcType: match.base[0]?.ifcType ?? match.head[0]?.ifcType,
95
+ // Groups are reported as groups. Collapsing a `duplicated` or
96
+ // `ambiguous` set to a single pair would be the engine guessing, which
97
+ // is exactly what it refuses to do (#1923). Long groups are cut to
98
+ // `maxGroupMembers` per side and say so, whole size included, so a cut
99
+ // group still reads as a group of that size.
100
+ ...listSide('base', match.base, maxGroupMembers),
101
+ ...listSide('head', match.head, maxGroupMembers),
102
+ ...(match.distance !== undefined ? { distance: match.distance } : {}),
103
+ })),
104
+ truncatedMatches: Math.max(0, matches.length - maxMatches),
105
+ // Absent (not `[]`) exactly when the stage did not run, or ran and the
106
+ // geometry abstention fired — this server's current state, always, until
107
+ // it has a geometry pipeline. The engine's "absent means not proved"
108
+ // contract, preserved rather than flattened.
109
+ splitMerges: diff.splitMerges?.map((claim) => ({
110
+ kind: claim.kind,
111
+ confidence: claim.confidence,
112
+ whole: claim.whole.key,
113
+ pieces: claim.pieces.map((piece) => piece.key),
114
+ })),
115
+ successors: diff.successors?.map((claim) => ({
116
+ confidence: claim.confidence,
117
+ base: claim.base.key,
118
+ head: claim.head.key,
119
+ overlap: claim.overlap,
120
+ distance: claim.distance,
121
+ })),
122
+ // Uncommitted edits are folded into the comparison; saying how many there
123
+ // are is what separates "the two files differ" from "this session has
124
+ // edits it has not written yet". Absent when neither model has any.
125
+ //
126
+ // `pendingMutations` is the scalar every other payload carries; the split a
127
+ // two-model comparison can additionally give lives under its own name rather
128
+ // than overloading that one.
129
+ ...pendingMutationsField(overlays.left, overlays.right),
130
+ ...(overlays.left || overlays.right
131
+ ? {
132
+ pendingMutationsBySide: {
133
+ base: overlays.left?.pendingMutations ?? 0,
134
+ head: overlays.right?.pendingMutations ?? 0,
135
+ },
136
+ }
137
+ : {}),
138
+ };
139
+ }
140
+ /** One side of a match: the (capped) keys, the whole count, and whether the
141
+ * list was cut. Emits `base`/`baseCount`/`baseTruncated` (or `head…`). */
142
+ function listSide(side, entities, maxGroupMembers) {
143
+ return {
144
+ [side]: entities.slice(0, maxGroupMembers).map((entity) => entity.key),
145
+ [`${side}Count`]: entities.length,
146
+ [`${side}Truncated`]: entities.length > maxGroupMembers,
147
+ };
148
+ }
149
+ /** One-line human summary of the engine result, for the text block. */
150
+ export function describeCounts(content) {
151
+ const counts = content.counts;
152
+ const byKind = content.contentMatchCounts;
153
+ const kinds = Object.entries(byKind).map(([kind, n]) => `${n} ${kind}`).join(', ');
154
+ return `${counts.added} added, ${counts.modified} modified, ${counts.deleted} deleted, `
155
+ + `${counts.unchanged} unchanged`
156
+ + (kinds ? `; content matches: ${kinds}` : '; no content matches');
157
+ }
158
+ //# sourceMappingURL=diff-content.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff-content.js","sourceRoot":"","sources":["../../src/tools/diff-content.ts"],"names":[],"mappings":"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"}
@@ -84,6 +84,8 @@
84
84
  */
85
85
  import { type EntityFingerprint } from '@ifc-lite/diff';
86
86
  import { type IfcDataStore } from '@ifc-lite/parser';
87
+ import { type FingerprintAdapterOptions } from './diff-authored-keys.js';
88
+ export { AUTHORED_KEY_PREFIX, type FingerprintAdapterOptions } from './diff-authored-keys.js';
87
89
  import type { PendingOverlay } from '../overlay.js';
88
90
  /** Adapter handle threaded through the diff: the entity's express id. */
89
91
  export type DiffRef = number;
@@ -102,5 +104,5 @@ export type DiffRef = number;
102
104
  * values. Omitting it (the CLI twin has no session to overlay) is the original
103
105
  * store-only behaviour exactly.
104
106
  */
105
- export declare function buildModelFingerprints(store: IfcDataStore, overlay?: PendingOverlay | null): EntityFingerprint<DiffRef>[];
107
+ export declare function buildModelFingerprints(store: IfcDataStore, overlay?: PendingOverlay | null, options?: FingerprintAdapterOptions): EntityFingerprint<DiffRef>[];
106
108
  //# sourceMappingURL=diff-fingerprints.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"diff-fingerprints.d.ts","sourceRoot":"","sources":["../../src/tools/diff-fingerprints.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmFG;AAEH,OAAO,EAIL,KAAK,iBAAiB,EACvB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAaL,KAAK,YAAY,EAClB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,KAAK,EAAiB,cAAc,EAAE,MAAM,eAAe,CAAC;AAEnE,yEAAyE;AACzE,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC;AAwE7B;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,YAAY,EACnB,OAAO,CAAC,EAAE,cAAc,GAAG,IAAI,GAC9B,iBAAiB,CAAC,OAAO,CAAC,EAAE,CAyD9B"}
1
+ {"version":3,"file":"diff-fingerprints.d.ts","sourceRoot":"","sources":["../../src/tools/diff-fingerprints.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmFG;AAEH,OAAO,EAIL,KAAK,iBAAiB,EACvB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAaL,KAAK,YAAY,EAClB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAyD,KAAK,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAEhI,OAAO,EAAE,mBAAmB,EAAE,KAAK,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAC9F,OAAO,KAAK,EAAiB,cAAc,EAAE,MAAM,eAAe,CAAC;AAEnE,yEAAyE;AACzE,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC;AAwE7B;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,YAAY,EACnB,OAAO,CAAC,EAAE,cAAc,GAAG,IAAI,EAC/B,OAAO,GAAE,yBAA8B,GACtC,iBAAiB,CAAC,OAAO,CAAC,EAAE,CA4D9B"}
@@ -86,9 +86,11 @@
86
86
  * fingerprints, which the paired tests check.
87
87
  */
88
88
  import { buildComponentFingerprints, buildDataFingerprint, } from '@ifc-lite/diff';
89
- import { RelationshipType } from '@ifc-lite/data';
90
- import { EntityExtractor, extractAllEntityAttributes, extractClassificationsOnDemand, extractProjectUnits, extractPropertiesOnDemand, extractQuantitiesOnDemand, extractRootAttributesFromEntity, getAttributeNamesAcrossSchemas, getInheritanceChainAcrossSchemas, quantitySiScale, roundToScale, scaledPropertyValue, } from '@ifc-lite/parser';
89
+ import { RelationshipType, resolvedTypeName } from '@ifc-lite/data';
90
+ import { EntityExtractor, extractAllEntityAttributes, extractClassificationsOnDemand, extractProjectUnits, extractPropertiesOnDemand, extractQuantitiesOnDemand, extractRootAttributesFromEntity, spatialContainerPath, getInheritanceChainAcrossSchemas, quantitySiScale, roundToScale, scaledPropertyValue, } from '@ifc-lite/parser';
91
+ import { attributeAcrossSchemas, authoredKeyResolver, override } from './diff-authored-keys.js';
91
92
  import { classificationLabel } from './diff-classification-label.js';
93
+ export { AUTHORED_KEY_PREFIX } from './diff-authored-keys.js';
92
94
  /**
93
95
  * Classify one STEP type against the three `IfcRoot` branches.
94
96
  *
@@ -157,13 +159,14 @@ function classifyType(typeKey) {
157
159
  * values. Omitting it (the CLI twin has no session to overlay) is the original
158
160
  * store-only behaviour exactly.
159
161
  */
160
- export function buildModelFingerprints(store, overlay) {
162
+ export function buildModelFingerprints(store, overlay, options = {}) {
161
163
  const fingerprints = [];
162
164
  const seen = new Set();
163
165
  // One extractor for the whole model: the source read below only fires for
164
166
  // the (small) set of object types the EntityTable declines to hold.
165
167
  const extractor = new EntityExtractor(store.source);
166
168
  const units = extractProjectUnits(store.source, store.entityIndex); // for quantitySiScale/scaledPropertyValue
169
+ const keyOf = authoredKeyResolver(store, overlay, options, extractor, (typeKey) => classifyType(typeKey).role === 'dependent');
167
170
  for (const [typeKey, ids] of store.entityIndex.byType) {
168
171
  // Classified once per type rather than once per entity — the geometry
169
172
  // buckets (IfcCartesianPoint, IfcPolyLoop, …) are the bulk of a real model
@@ -198,13 +201,17 @@ export function buildModelFingerprints(store, overlay) {
198
201
  // on every content match, so 'Unknown' would pair a task with an actor.
199
202
  const ifcType = source && (!tableType || tableType === 'Unknown') ? type.name : tableType;
200
203
  const input = buildDataInput(store, expressId, ifcType, source, type.typeObject, overlay, units);
201
- fingerprints.push({
202
- key: globalId,
204
+ const fingerprint = {
205
+ key: keyOf(expressId, globalId),
203
206
  ifcType,
204
207
  dataHash: buildDataFingerprint(input),
205
208
  components: buildComponentFingerprints(input),
206
209
  ref: expressId,
207
- });
210
+ };
211
+ const container = spatialContainerPath(store, expressId);
212
+ if (container !== undefined)
213
+ fingerprint.container = container;
214
+ fingerprints.push(fingerprint);
208
215
  }
209
216
  }
210
217
  for (const entity of overlay?.created ?? []) {
@@ -238,6 +245,11 @@ export function buildModelFingerprints(store, overlay) {
238
245
  * path exactly. Property sets and quantities never had the asymmetry — both
239
246
  * were already read through the overlay.
240
247
  *
248
+ * An authored key (`key_from`) is not resolved for a created entity either: it
249
+ * has no store row for `authoredKeyValue` to read, so it is keyed on the
250
+ * GlobalId the caller gave it. A created entity that duplicates a stored
251
+ * entity's authored value therefore reads as added rather than as a collision.
252
+ *
241
253
  * `predefinedType` and `typeAssignments` are necessarily absent: both are read
242
254
  * through the store, which has no row for an entity that exists only in the
243
255
  * overlay, and neither is reachable through `entity_set_attribute`. A created
@@ -333,7 +345,7 @@ overlay, units) {
333
345
  .map((typeId) => ({
334
346
  globalId: store.entities.getGlobalId(typeId) || undefined,
335
347
  name: store.entities.getName(typeId) || undefined,
336
- type: store.entities.getTypeName(typeId) || undefined,
348
+ type: resolvedTypeName(store.entities, typeId),
337
349
  }));
338
350
  const classifications = extractClassificationsOnDemand(store, expressId).map(classificationLabel);
339
351
  return {
@@ -357,46 +369,4 @@ overlay, units) {
357
369
  typeAssignments,
358
370
  };
359
371
  }
360
- /**
361
- * One named attribute, read positionally through the **cross-schema** attribute
362
- * list (issue #2021). The CLI's twin, and it must stay one.
363
- *
364
- * `extractAllEntityAttributes` names attributes through the parser's IFC4
365
- * codegen pin, which answers an EMPTY list for a class the pin does not carry —
366
- * so a `.find(name === 'Tag')` over it silently finds nothing on every
367
- * IFC4X3-only type object (`IfcRailType`, `IfcTrackElementType`,
368
- * `IfcSignalType`, …) while working perfectly on IFC2X3 and IFC4. That is a
369
- * no-op nobody would notice: the entity is in scope, its class name is right,
370
- * `isTypeObject` is right, and only the evidence is missing.
371
- *
372
- * This is the same pinned-registry family as the membership defect `#2001`
373
- * fixed, and it has to be answered from the same place: the inheritance chain
374
- * decides *whether* to read a `Tag`, so the attribute list that decides *where*
375
- * it sits must span the same schemas. `getAttributeNamesAcrossSchemas` returns
376
- * the pinned result unchanged for every class the pin does know, so this is
377
- * additive — no IFC2X3 or IFC4 entity's hash moves because of it.
378
- *
379
- * Reads the raw STEP slot rather than reusing `extractAllEntityAttributes`'
380
- * display normalization: this value is hashed, not shown, so `$` (absent) is
381
- * the only case that needs interpreting and it arrives as null.
382
- */
383
- function attributeAcrossSchemas(store, expressId, ifcType, attributeName) {
384
- const index = getAttributeNamesAcrossSchemas(ifcType).indexOf(attributeName);
385
- if (index < 0)
386
- return undefined;
387
- const ref = store.entityIndex.byId.get(expressId);
388
- if (!ref)
389
- return undefined;
390
- const raw = new EntityExtractor(store.source).extractEntity(ref)?.attributes?.[index];
391
- return typeof raw === 'string' || typeof raw === 'number' ? String(raw) : undefined;
392
- }
393
- /**
394
- * An overlay override wins whenever one exists, including when it is empty —
395
- * `entity_set_attribute` with `''` clears the attribute, and falling back to
396
- * the stored value there would hash the edit away.
397
- */
398
- function override(edited, stored) {
399
- const value = edited !== undefined ? edited : stored;
400
- return value ? value : undefined;
401
- }
402
372
  //# sourceMappingURL=diff-fingerprints.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"diff-fingerprints.js","sourceRoot":"","sources":["../../src/tools/diff-fingerprints.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"diff-fingerprints.js","sourceRoot":"","sources":["../../src/tools/diff-fingerprints.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../src/tools/diff.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAgWvC,eAAO,MAAM,SAAS,EAAE,IAAI,EAA8B,CAAC"}
1
+ {"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../src/tools/diff.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAwQvC,eAAO,MAAM,SAAS,EAAE,IAAI,EAA8B,CAAC"}
@@ -9,9 +9,9 @@
9
9
  */
10
10
  import { EntityNode } from '@ifc-lite/query';
11
11
  import { IFC_ENTITY_NAMES } from '@ifc-lite/data';
12
- import { diffModels } from '@ifc-lite/diff';
13
12
  import { okResult, assertModelAccess } from './util.js';
14
- import { buildModelFingerprints } from './diff-fingerprints.js';
13
+ import { parseAuthoredKeySpec } from '@ifc-lite/parser';
14
+ import { contentDiff, describeCounts, DEFAULT_MAX_GROUP_MEMBERS, DEFAULT_MAX_MATCHES, } from './diff-content.js';
15
15
  import { foldedTypeCounts, pendingMutationsField, pendingOverlay } from '../overlay.js';
16
16
  import { ToolErrorCode, ToolExecutionError } from '../errors.js';
17
17
  import { firstNonBlank } from '../material-naming.js';
@@ -30,102 +30,6 @@ function resolveTwo(ctx, a, b) {
30
30
  assertModelAccess(ctx, right);
31
31
  return { left, right };
32
32
  }
33
- /** Default cap on the listed `contentMatches`. Per-kind totals are reported
34
- * whole, so the cap bounds the payload without hiding anything. */
35
- const DEFAULT_MAX_MATCHES = 200;
36
- /**
37
- * Default cap on the GlobalIds listed per side of one match.
38
- *
39
- * `max_matches` bounds how many groups come back, not how big one is, and a
40
- * `duplicated` / `deduplicated` / `ambiguous` group is a set of candidates that
41
- * in a repetitive model can run to thousands of entities on each side. Without
42
- * this, `max_matches: 1` could still return a model-sized payload and overflow
43
- * the context window the cap exists to protect.
44
- *
45
- * 20 is chosen against what the list is *for*. A group is the engine declining
46
- * to guess, so its members are a hand-off to the caller; twenty candidates on a
47
- * side is already past what anyone resolves by reading a list rather than by
48
- * querying the two models. The overwhelmingly common match is a 1:1 `renamed`
49
- * pair, which this never touches. Every group still reports `baseCount` and
50
- * `headCount` whole, computed before the cap for the same reason
51
- * `contentMatchCounts` is: truncation must never be what makes a model look
52
- * cleanly matched.
53
- */
54
- const DEFAULT_MAX_GROUP_MEMBERS = 20;
55
- /**
56
- * Kinds an agent has to resolve itself, listed before the ones the engine
57
- * already retired. Truncating the list must never be what drops the
58
- * "we could not tell" groups.
59
- */
60
- const UNRESOLVED_FIRST = [
61
- 'ambiguous',
62
- 'duplicated',
63
- 'deduplicated',
64
- 'moved',
65
- 'reshaped',
66
- 'renamed',
67
- ];
68
- /**
69
- * Run the real `@ifc-lite/diff` engine over two loaded models (issue #1891).
70
- *
71
- * **Data scope only.** This server has no geometry pipeline, so there is no
72
- * world geometry hash and no bounding box; `scope: 'data'` is the honest
73
- * description of what it can see, and every unambiguous 1:1 content match is
74
- * therefore reported as `renamed` rather than `moved`/`reshaped`. See
75
- * `diff-fingerprints.ts`.
76
- */
77
- function contentDiff(left, right, overlays, maxMatches, maxGroupMembers) {
78
- const diff = diffModels(buildModelFingerprints(left.store, overlays.left), buildModelFingerprints(right.store, overlays.right), { scope: 'data', matchUnpairedByContent: true });
79
- const matches = [...(diff.contentMatches ?? [])].sort((a, b) => UNRESOLVED_FIRST.indexOf(a.kind) - UNRESOLVED_FIRST.indexOf(b.kind));
80
- const byKind = {};
81
- for (const match of matches)
82
- byKind[match.kind] = (byKind[match.kind] ?? 0) + 1;
83
- return {
84
- scope: diff.scope,
85
- counts: diff.counts,
86
- // Whole totals, computed before the cap: an agent reading `contentMatches`
87
- // can always tell whether the list it got is the whole story.
88
- contentMatchCounts: byKind,
89
- contentMatches: matches.slice(0, maxMatches).map((match) => ({
90
- kind: match.kind,
91
- ifcType: match.base[0]?.ifcType ?? match.head[0]?.ifcType,
92
- // Groups are reported as groups. Collapsing a `duplicated` or
93
- // `ambiguous` set to a single pair would be the engine guessing, which
94
- // is exactly what it refuses to do (#1923). Long groups are cut to
95
- // `maxGroupMembers` per side and say so, whole size included, so a cut
96
- // group still reads as a group of that size.
97
- ...listSide('base', match.base, maxGroupMembers),
98
- ...listSide('head', match.head, maxGroupMembers),
99
- ...(match.distance !== undefined ? { distance: match.distance } : {}),
100
- })),
101
- truncatedMatches: Math.max(0, matches.length - maxMatches),
102
- // Uncommitted edits are folded into the comparison; saying how many there
103
- // are is what separates "the two files differ" from "this session has
104
- // edits it has not written yet". Absent when neither model has any.
105
- //
106
- // `pendingMutations` is the scalar every other payload carries; the split a
107
- // two-model comparison can additionally give lives under its own name rather
108
- // than overloading that one.
109
- ...pendingMutationsField(overlays.left, overlays.right),
110
- ...(overlays.left || overlays.right
111
- ? {
112
- pendingMutationsBySide: {
113
- base: overlays.left?.pendingMutations ?? 0,
114
- head: overlays.right?.pendingMutations ?? 0,
115
- },
116
- }
117
- : {}),
118
- };
119
- }
120
- /** One side of a match: the (capped) keys, the whole count, and whether the
121
- * list was cut. Emits `base`/`baseCount`/`baseTruncated` (or `head…`). */
122
- function listSide(side, entities, maxGroupMembers) {
123
- return {
124
- [side]: entities.slice(0, maxGroupMembers).map((entity) => entity.key),
125
- [`${side}Count`]: entities.length,
126
- [`${side}Truncated`]: entities.length > maxGroupMembers,
127
- };
128
- }
129
33
  const modelDiff = {
130
34
  name: 'model_diff',
131
35
  description: 'Compare two loaded models. Reports added/removed entities by GlobalId and per-type count deltas. '
@@ -144,7 +48,7 @@ const modelDiff = {
144
48
  default: false,
145
49
  description: 'Run the @ifc-lite/diff engine with content-keyed matching over every IfcObjectDefinition. '
146
50
  + 'Adds `contentDiff` with added/modified/deleted/unchanged counts and the content matches '
147
- + '(renamed / moved / reshaped are resolved; duplicated / deduplicated / ambiguous are listed '
51
+ + '(renamed / moved / reshaped / respecified are resolved; duplicated / deduplicated / ambiguous are listed '
148
52
  + 'as groups for you to resolve). Data scope only — this server has no geometry pipeline.',
149
53
  },
150
54
  max_matches: {
@@ -154,6 +58,13 @@ const modelDiff = {
154
58
  description: 'Cap on the listed content matches (by_content only). Unresolved groups are listed first and '
155
59
  + '`contentMatchCounts` always reports whole per-kind totals.',
156
60
  },
61
+ key_from: {
62
+ type: 'string',
63
+ description: 'Compare on an authored identifier instead of GlobalId (by_content only): "Tag", or '
64
+ + '"<PsetName>.<PropertyName>" such as "Pset_Asset.AssetId". An entity carrying a non-empty, '
65
+ + 'unique value is keyed on it; the rest keep their GlobalId. Values shared by several entities '
66
+ + 'are listed in duplicateAuthoredKeys.',
67
+ },
157
68
  max_group_members: {
158
69
  type: 'integer',
159
70
  default: DEFAULT_MAX_GROUP_MEMBERS,
@@ -162,6 +73,21 @@ const modelDiff = {
162
73
  + 'deduplicated / ambiguous group can hold thousands. `baseCount` / `headCount` always report '
163
74
  + 'the whole size and `baseTruncated` / `headTruncated` say whether the list was cut.',
164
75
  },
76
+ split_merge: {
77
+ type: 'boolean',
78
+ default: false,
79
+ description: 'Opt in to the split/merge detector (by_content only, issue #4956). Geometry-only stage: '
80
+ + 'this server has no geometry pipeline yet, so `contentDiff.splitMerges` currently stays '
81
+ + 'absent regardless of this flag — wired through so it starts producing claims the moment '
82
+ + 'one lands, with no client-side change.',
83
+ },
84
+ successors: {
85
+ type: 'boolean',
86
+ default: false,
87
+ description: 'Opt in to the successor-match detector: suggestions that one deleted entity was replaced '
88
+ + 'in place by one added entity (by_content only, issue #4956). Same geometry-only caveat as '
89
+ + '`split_merge` — `contentDiff.successors` currently stays absent on this server.',
90
+ },
165
91
  },
166
92
  required: ['a', 'b'],
167
93
  additionalProperties: false,
@@ -203,8 +129,15 @@ const modelDiff = {
203
129
  // Opt-in, and deliberately so. An `ambiguous` group has no honest scalar
204
130
  // form, so turning this on by default would change what `counts` means
205
131
  // under agent scripts that already read this tool.
132
+ const keyFrom = typeof input.key_from === 'string' && input.key_from.trim() ? input.key_from.trim() : undefined;
133
+ if (keyFrom !== undefined && !parseAuthoredKeySpec(keyFrom)) {
134
+ throw new ToolExecutionError({
135
+ code: ToolErrorCode.INVALID_INPUT,
136
+ message: 'key_from must be "Tag" or "<PsetName>.<PropertyName>", got "' + keyFrom + '"',
137
+ });
138
+ }
206
139
  const content = input.by_content ?? false
207
- ? contentDiff(left, right, { left: leftOverlay, right: rightOverlay }, input.max_matches ?? DEFAULT_MAX_MATCHES, input.max_group_members ?? DEFAULT_MAX_GROUP_MEMBERS)
140
+ ? contentDiff(left, right, { left: leftOverlay, right: rightOverlay }, input.max_matches ?? DEFAULT_MAX_MATCHES, input.max_group_members ?? DEFAULT_MAX_GROUP_MEMBERS, keyFrom, input.split_merge ?? false, input.successors ?? false)
208
141
  : null;
209
142
  const pendingField = pendingMutationsField(leftOverlay, rightOverlay);
210
143
  const pending = pendingField.pendingMutations ?? 0;
@@ -245,15 +178,6 @@ function collectGlobalIds(model, overlay) {
245
178
  gids.add(entity.globalId);
246
179
  return gids;
247
180
  }
248
- /** One-line human summary of the engine result, for the text block. */
249
- function describeCounts(content) {
250
- const counts = content.counts;
251
- const byKind = content.contentMatchCounts;
252
- const kinds = Object.entries(byKind).map(([kind, n]) => `${n} ${kind}`).join(', ');
253
- return `${counts.added} added, ${counts.modified} modified, ${counts.deleted} deleted, `
254
- + `${counts.unchanged} unchanged`
255
- + (kinds ? `; content matches: ${kinds}` : '; no content matches');
256
- }
257
181
  const quantityDiff = {
258
182
  name: 'quantity_diff',
259
183
  description: 'Per-entity-type quantity comparison between two models, optionally grouped by storey.',
@@ -1 +1 @@
1
- {"version":3,"file":"diff.js","sourceRoot":"","sources":["../../src/tools/diff.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"diff.js","sourceRoot":"","sources":["../../src/tools/diff.ts"],"names":[],"mappings":"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"}