@ifc-lite/mcp 0.9.2 → 0.11.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +32 -1
- package/dist/auth/scope.d.ts.map +1 -1
- package/dist/auth/scope.js +6 -2
- package/dist/auth/scope.js.map +1 -1
- package/dist/backend-query.d.ts +41 -0
- package/dist/backend-query.d.ts.map +1 -0
- package/dist/backend-query.js +486 -0
- package/dist/backend-query.js.map +1 -0
- package/dist/headless-backend.d.ts +4 -3
- package/dist/headless-backend.d.ts.map +1 -1
- package/dist/headless-backend.js +26 -212
- package/dist/headless-backend.js.map +1 -1
- package/dist/overlay.d.ts +171 -0
- package/dist/overlay.d.ts.map +1 -0
- package/dist/overlay.js +300 -0
- package/dist/overlay.js.map +1 -0
- package/dist/resources/providers.d.ts.map +1 -1
- package/dist/resources/providers.js +28 -27
- package/dist/resources/providers.js.map +1 -1
- package/dist/schema-tables.d.ts +42 -0
- package/dist/schema-tables.d.ts.map +1 -0
- package/dist/schema-tables.js +75 -0
- package/dist/schema-tables.js.map +1 -0
- package/dist/spatial-tree.d.ts +40 -0
- package/dist/spatial-tree.d.ts.map +1 -0
- package/dist/spatial-tree.js +70 -0
- package/dist/spatial-tree.js.map +1 -0
- package/dist/tools/bsdd.d.ts.map +1 -1
- package/dist/tools/bsdd.js +5 -16
- package/dist/tools/bsdd.js.map +1 -1
- package/dist/tools/clash.d.ts.map +1 -1
- package/dist/tools/clash.js +36 -23
- package/dist/tools/clash.js.map +1 -1
- package/dist/tools/diff-fingerprints.d.ts +110 -0
- package/dist/tools/diff-fingerprints.d.ts.map +1 -0
- package/dist/tools/diff-fingerprints.js +410 -0
- package/dist/tools/diff-fingerprints.js.map +1 -0
- package/dist/tools/diff.d.ts.map +1 -1
- package/dist/tools/diff.js +199 -26
- package/dist/tools/diff.js.map +1 -1
- package/dist/tools/discovery.d.ts.map +1 -1
- package/dist/tools/discovery.js +124 -36
- package/dist/tools/discovery.js.map +1 -1
- package/dist/tools/export.d.ts.map +1 -1
- package/dist/tools/export.js +136 -68
- package/dist/tools/export.js.map +1 -1
- package/dist/tools/mutate.d.ts.map +1 -1
- package/dist/tools/mutate.js +74 -11
- package/dist/tools/mutate.js.map +1 -1
- package/dist/tools/query.d.ts.map +1 -1
- package/dist/tools/query.js +129 -69
- package/dist/tools/query.js.map +1 -1
- package/dist/tools/util.d.ts +36 -7
- package/dist/tools/util.d.ts.map +1 -1
- package/dist/tools/util.js +90 -0
- package/dist/tools/util.js.map +1 -1
- package/dist/tools/validation.d.ts.map +1 -1
- package/dist/tools/validation.js +82 -26
- package/dist/tools/validation.js.map +1 -1
- package/dist/viewer-manager.d.ts +9 -0
- package/dist/viewer-manager.d.ts.map +1 -1
- package/dist/viewer-manager.js +37 -2
- package/dist/viewer-manager.js.map +1 -1
- package/package.json +19 -18
package/dist/tools/diff.js
CHANGED
|
@@ -9,7 +9,10 @@
|
|
|
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';
|
|
12
13
|
import { okResult, assertModelAccess } from './util.js';
|
|
14
|
+
import { buildModelFingerprints } from './diff-fingerprints.js';
|
|
15
|
+
import { foldedTypeCounts, pendingMutationsField, pendingOverlay } from '../overlay.js';
|
|
13
16
|
import { ToolErrorCode, ToolExecutionError } from '../errors.js';
|
|
14
17
|
function resolveTwo(ctx, a, b) {
|
|
15
18
|
const left = ctx.registry.get(a);
|
|
@@ -26,9 +29,108 @@ function resolveTwo(ctx, a, b) {
|
|
|
26
29
|
assertModelAccess(ctx, right);
|
|
27
30
|
return { left, right };
|
|
28
31
|
}
|
|
32
|
+
/** Default cap on the listed `contentMatches`. Per-kind totals are reported
|
|
33
|
+
* whole, so the cap bounds the payload without hiding anything. */
|
|
34
|
+
const DEFAULT_MAX_MATCHES = 200;
|
|
35
|
+
/**
|
|
36
|
+
* Default cap on the GlobalIds listed per side of one match.
|
|
37
|
+
*
|
|
38
|
+
* `max_matches` bounds how many groups come back, not how big one is, and a
|
|
39
|
+
* `duplicated` / `deduplicated` / `ambiguous` group is a set of candidates that
|
|
40
|
+
* in a repetitive model can run to thousands of entities on each side. Without
|
|
41
|
+
* this, `max_matches: 1` could still return a model-sized payload and overflow
|
|
42
|
+
* the context window the cap exists to protect.
|
|
43
|
+
*
|
|
44
|
+
* 20 is chosen against what the list is *for*. A group is the engine declining
|
|
45
|
+
* to guess, so its members are a hand-off to the caller; twenty candidates on a
|
|
46
|
+
* side is already past what anyone resolves by reading a list rather than by
|
|
47
|
+
* querying the two models. The overwhelmingly common match is a 1:1 `renamed`
|
|
48
|
+
* pair, which this never touches. Every group still reports `baseCount` and
|
|
49
|
+
* `headCount` whole, computed before the cap for the same reason
|
|
50
|
+
* `contentMatchCounts` is: truncation must never be what makes a model look
|
|
51
|
+
* cleanly matched.
|
|
52
|
+
*/
|
|
53
|
+
const DEFAULT_MAX_GROUP_MEMBERS = 20;
|
|
54
|
+
/**
|
|
55
|
+
* Kinds an agent has to resolve itself, listed before the ones the engine
|
|
56
|
+
* already retired. Truncating the list must never be what drops the
|
|
57
|
+
* "we could not tell" groups.
|
|
58
|
+
*/
|
|
59
|
+
const UNRESOLVED_FIRST = [
|
|
60
|
+
'ambiguous',
|
|
61
|
+
'duplicated',
|
|
62
|
+
'deduplicated',
|
|
63
|
+
'moved',
|
|
64
|
+
'reshaped',
|
|
65
|
+
'renamed',
|
|
66
|
+
];
|
|
67
|
+
/**
|
|
68
|
+
* Run the real `@ifc-lite/diff` engine over two loaded models (issue #1891).
|
|
69
|
+
*
|
|
70
|
+
* **Data scope only.** This server has no geometry pipeline, so there is no
|
|
71
|
+
* world geometry hash and no bounding box; `scope: 'data'` is the honest
|
|
72
|
+
* description of what it can see, and every unambiguous 1:1 content match is
|
|
73
|
+
* therefore reported as `renamed` rather than `moved`/`reshaped`. See
|
|
74
|
+
* `diff-fingerprints.ts`.
|
|
75
|
+
*/
|
|
76
|
+
function contentDiff(left, right, overlays, maxMatches, maxGroupMembers) {
|
|
77
|
+
const diff = diffModels(buildModelFingerprints(left.store, overlays.left), buildModelFingerprints(right.store, overlays.right), { scope: 'data', matchUnpairedByContent: true });
|
|
78
|
+
const matches = [...(diff.contentMatches ?? [])].sort((a, b) => UNRESOLVED_FIRST.indexOf(a.kind) - UNRESOLVED_FIRST.indexOf(b.kind));
|
|
79
|
+
const byKind = {};
|
|
80
|
+
for (const match of matches)
|
|
81
|
+
byKind[match.kind] = (byKind[match.kind] ?? 0) + 1;
|
|
82
|
+
return {
|
|
83
|
+
scope: diff.scope,
|
|
84
|
+
counts: diff.counts,
|
|
85
|
+
// Whole totals, computed before the cap: an agent reading `contentMatches`
|
|
86
|
+
// can always tell whether the list it got is the whole story.
|
|
87
|
+
contentMatchCounts: byKind,
|
|
88
|
+
contentMatches: matches.slice(0, maxMatches).map((match) => ({
|
|
89
|
+
kind: match.kind,
|
|
90
|
+
ifcType: match.base[0]?.ifcType ?? match.head[0]?.ifcType,
|
|
91
|
+
// Groups are reported as groups. Collapsing a `duplicated` or
|
|
92
|
+
// `ambiguous` set to a single pair would be the engine guessing, which
|
|
93
|
+
// is exactly what it refuses to do (#1923). Long groups are cut to
|
|
94
|
+
// `maxGroupMembers` per side and say so, whole size included, so a cut
|
|
95
|
+
// group still reads as a group of that size.
|
|
96
|
+
...listSide('base', match.base, maxGroupMembers),
|
|
97
|
+
...listSide('head', match.head, maxGroupMembers),
|
|
98
|
+
...(match.distance !== undefined ? { distance: match.distance } : {}),
|
|
99
|
+
})),
|
|
100
|
+
truncatedMatches: Math.max(0, matches.length - maxMatches),
|
|
101
|
+
// Uncommitted edits are folded into the comparison; saying how many there
|
|
102
|
+
// are is what separates "the two files differ" from "this session has
|
|
103
|
+
// edits it has not written yet". Absent when neither model has any.
|
|
104
|
+
//
|
|
105
|
+
// `pendingMutations` is the scalar every other payload carries; the split a
|
|
106
|
+
// two-model comparison can additionally give lives under its own name rather
|
|
107
|
+
// than overloading that one.
|
|
108
|
+
...pendingMutationsField(overlays.left, overlays.right),
|
|
109
|
+
...(overlays.left || overlays.right
|
|
110
|
+
? {
|
|
111
|
+
pendingMutationsBySide: {
|
|
112
|
+
base: overlays.left?.pendingMutations ?? 0,
|
|
113
|
+
head: overlays.right?.pendingMutations ?? 0,
|
|
114
|
+
},
|
|
115
|
+
}
|
|
116
|
+
: {}),
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
/** One side of a match: the (capped) keys, the whole count, and whether the
|
|
120
|
+
* list was cut. Emits `base`/`baseCount`/`baseTruncated` (or `head…`). */
|
|
121
|
+
function listSide(side, entities, maxGroupMembers) {
|
|
122
|
+
return {
|
|
123
|
+
[side]: entities.slice(0, maxGroupMembers).map((entity) => entity.key),
|
|
124
|
+
[`${side}Count`]: entities.length,
|
|
125
|
+
[`${side}Truncated`]: entities.length > maxGroupMembers,
|
|
126
|
+
};
|
|
127
|
+
}
|
|
29
128
|
const modelDiff = {
|
|
30
129
|
name: 'model_diff',
|
|
31
|
-
description: 'Compare two loaded models. Reports added/removed entities by GlobalId and per-type count deltas.'
|
|
130
|
+
description: 'Compare two loaded models. Reports added/removed entities by GlobalId and per-type count deltas. '
|
|
131
|
+
+ 'Set by_content=true when the two models may have been re-exported from scratch (new GlobalIds): '
|
|
132
|
+
+ 'that runs the real diff engine, which matches entities by content so a re-GUID stops reading as '
|
|
133
|
+
+ 'the whole model deleted and re-added.',
|
|
32
134
|
scope: 'read',
|
|
33
135
|
inputSchema: {
|
|
34
136
|
type: 'object',
|
|
@@ -36,19 +138,44 @@ const modelDiff = {
|
|
|
36
138
|
a: { type: 'string', description: 'model_id of base.' },
|
|
37
139
|
b: { type: 'string', description: 'model_id of head.' },
|
|
38
140
|
by_entity: { type: 'boolean', default: true, description: 'Include per-entity GlobalId additions/removals.' },
|
|
141
|
+
by_content: {
|
|
142
|
+
type: 'boolean',
|
|
143
|
+
default: false,
|
|
144
|
+
description: 'Run the @ifc-lite/diff engine with content-keyed matching over every IfcObjectDefinition. '
|
|
145
|
+
+ 'Adds `contentDiff` with added/modified/deleted/unchanged counts and the content matches '
|
|
146
|
+
+ '(renamed / moved / reshaped are resolved; duplicated / deduplicated / ambiguous are listed '
|
|
147
|
+
+ 'as groups for you to resolve). Data scope only — this server has no geometry pipeline.',
|
|
148
|
+
},
|
|
149
|
+
max_matches: {
|
|
150
|
+
type: 'integer',
|
|
151
|
+
default: DEFAULT_MAX_MATCHES,
|
|
152
|
+
minimum: 1,
|
|
153
|
+
description: 'Cap on the listed content matches (by_content only). Unresolved groups are listed first and '
|
|
154
|
+
+ '`contentMatchCounts` always reports whole per-kind totals.',
|
|
155
|
+
},
|
|
156
|
+
max_group_members: {
|
|
157
|
+
type: 'integer',
|
|
158
|
+
default: DEFAULT_MAX_GROUP_MEMBERS,
|
|
159
|
+
minimum: 1,
|
|
160
|
+
description: 'Cap on the GlobalIds listed per side of one match (by_content only). A duplicated / '
|
|
161
|
+
+ 'deduplicated / ambiguous group can hold thousands. `baseCount` / `headCount` always report '
|
|
162
|
+
+ 'the whole size and `baseTruncated` / `headTruncated` say whether the list was cut.',
|
|
163
|
+
},
|
|
39
164
|
},
|
|
40
165
|
required: ['a', 'b'],
|
|
41
166
|
additionalProperties: false,
|
|
42
167
|
},
|
|
43
168
|
handler(input, ctx) {
|
|
44
169
|
const { left, right } = resolveTwo(ctx, input.a, input.b);
|
|
170
|
+
// A model_id names a session, not a file: fold in whatever `entity_create`
|
|
171
|
+
// / `entity_delete` / `entity_set_*` have queued, on every pass. Null (the
|
|
172
|
+
// common case — the backend builds the overlay lazily on first mutation)
|
|
173
|
+
// leaves each pass on its original store-only path.
|
|
174
|
+
const leftOverlay = pendingOverlay(left);
|
|
175
|
+
const rightOverlay = pendingOverlay(right);
|
|
45
176
|
// Type-level diff
|
|
46
|
-
const types1 =
|
|
47
|
-
const types2 =
|
|
48
|
-
for (const [type, ids] of left.store.entityIndex.byType)
|
|
49
|
-
types1.set(type, ids.length);
|
|
50
|
-
for (const [type, ids] of right.store.entityIndex.byType)
|
|
51
|
-
types2.set(type, ids.length);
|
|
177
|
+
const types1 = foldedTypeCounts(left.store, leftOverlay);
|
|
178
|
+
const types2 = foldedTypeCounts(right.store, rightOverlay);
|
|
52
179
|
const allTypes = new Set([...types1.keys(), ...types2.keys()]);
|
|
53
180
|
const typeDiffs = [];
|
|
54
181
|
for (const t of allTypes) {
|
|
@@ -60,22 +187,8 @@ const modelDiff = {
|
|
|
60
187
|
typeDiffs.sort((a, b) => Math.abs(b.delta) - Math.abs(a.delta));
|
|
61
188
|
let entityDiff = null;
|
|
62
189
|
if (input.by_entity ?? true) {
|
|
63
|
-
const gids1 =
|
|
64
|
-
const gids2 =
|
|
65
|
-
for (const [, ids] of left.store.entityIndex.byType) {
|
|
66
|
-
for (const id of ids) {
|
|
67
|
-
const node = new EntityNode(left.store, id);
|
|
68
|
-
if (node.globalId)
|
|
69
|
-
gids1.add(node.globalId);
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
for (const [, ids] of right.store.entityIndex.byType) {
|
|
73
|
-
for (const id of ids) {
|
|
74
|
-
const node = new EntityNode(right.store, id);
|
|
75
|
-
if (node.globalId)
|
|
76
|
-
gids2.add(node.globalId);
|
|
77
|
-
}
|
|
78
|
-
}
|
|
190
|
+
const gids1 = collectGlobalIds(left, leftOverlay);
|
|
191
|
+
const gids2 = collectGlobalIds(right, rightOverlay);
|
|
79
192
|
const added = [];
|
|
80
193
|
const removed = [];
|
|
81
194
|
let common = 0;
|
|
@@ -86,9 +199,60 @@ const modelDiff = {
|
|
|
86
199
|
added.push(g);
|
|
87
200
|
entityDiff = { added, removed, common };
|
|
88
201
|
}
|
|
89
|
-
|
|
202
|
+
// Opt-in, and deliberately so. An `ambiguous` group has no honest scalar
|
|
203
|
+
// form, so turning this on by default would change what `counts` means
|
|
204
|
+
// under agent scripts that already read this tool.
|
|
205
|
+
const content = input.by_content ?? false
|
|
206
|
+
? contentDiff(left, right, { left: leftOverlay, right: rightOverlay }, input.max_matches ?? DEFAULT_MAX_MATCHES, input.max_group_members ?? DEFAULT_MAX_GROUP_MEMBERS)
|
|
207
|
+
: null;
|
|
208
|
+
const pendingField = pendingMutationsField(leftOverlay, rightOverlay);
|
|
209
|
+
const pending = pendingField.pendingMutations ?? 0;
|
|
210
|
+
const summary = [
|
|
211
|
+
`Diff ${input.a}→${input.b}: ${typeDiffs.length} type changes`,
|
|
212
|
+
entityDiff ? `, +${entityDiff.added.length}/-${entityDiff.removed.length} entities by GlobalId` : '',
|
|
213
|
+
content
|
|
214
|
+
? `. By content (data scope): ${describeCounts(content)}`
|
|
215
|
+
: '',
|
|
216
|
+
// An agent that just edited a model and then asked what changed should be
|
|
217
|
+
// told its unsaved edits are part of the answer, not left to infer it.
|
|
218
|
+
pending > 0 ? `. Includes ${pending} unsaved mutation(s)` : '',
|
|
219
|
+
].join('');
|
|
220
|
+
// Top level, not only inside `contentDiff`: `typeDiffs` and `entityDiff`
|
|
221
|
+
// fold too, and a payload that folds says so (#2014). The per-side split
|
|
222
|
+
// stays on `contentDiff` where a base/head distinction means something.
|
|
223
|
+
return okResult(summary, {
|
|
224
|
+
typeDiffs,
|
|
225
|
+
entityDiff,
|
|
226
|
+
contentDiff: content,
|
|
227
|
+
...pendingField,
|
|
228
|
+
});
|
|
90
229
|
},
|
|
91
230
|
};
|
|
231
|
+
/** Every GlobalId the session has, queued creates and deletes applied. */
|
|
232
|
+
function collectGlobalIds(model, overlay) {
|
|
233
|
+
const gids = new Set();
|
|
234
|
+
for (const [, ids] of model.store.entityIndex.byType) {
|
|
235
|
+
for (const id of ids) {
|
|
236
|
+
if (overlay?.deleted.has(id))
|
|
237
|
+
continue;
|
|
238
|
+
const node = new EntityNode(model.store, id);
|
|
239
|
+
if (node.globalId)
|
|
240
|
+
gids.add(node.globalId);
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
for (const entity of overlay?.created ?? [])
|
|
244
|
+
gids.add(entity.globalId);
|
|
245
|
+
return gids;
|
|
246
|
+
}
|
|
247
|
+
/** One-line human summary of the engine result, for the text block. */
|
|
248
|
+
function describeCounts(content) {
|
|
249
|
+
const counts = content.counts;
|
|
250
|
+
const byKind = content.contentMatchCounts;
|
|
251
|
+
const kinds = Object.entries(byKind).map(([kind, n]) => `${n} ${kind}`).join(', ');
|
|
252
|
+
return `${counts.added} added, ${counts.modified} modified, ${counts.deleted} deleted, `
|
|
253
|
+
+ `${counts.unchanged} unchanged`
|
|
254
|
+
+ (kinds ? `; content matches: ${kinds}` : '; no content matches');
|
|
255
|
+
}
|
|
92
256
|
const quantityDiff = {
|
|
93
257
|
name: 'quantity_diff',
|
|
94
258
|
description: 'Per-entity-type quantity comparison between two models, optionally grouped by storey.',
|
|
@@ -113,7 +277,10 @@ const quantityDiff = {
|
|
|
113
277
|
const out = new Map();
|
|
114
278
|
for (const e of model.bim.query().byType(type).toArray()) {
|
|
115
279
|
const key = input.group_by === 'storey'
|
|
116
|
-
|
|
280
|
+
// `model.bim.storey`, not a raw EntityNode: the SDK walk folds the
|
|
281
|
+
// session's queued and deleted relationships, the store walk does not
|
|
282
|
+
// (#2014).
|
|
283
|
+
? (model.bim.storey(e.ref)?.name ?? '(none)')
|
|
117
284
|
: e.type;
|
|
118
285
|
let value = null;
|
|
119
286
|
for (const qset of model.bim.quantities(e.ref)) {
|
|
@@ -146,7 +313,13 @@ const quantityDiff = {
|
|
|
146
313
|
rows.push({ key: k, left: l, right: r, delta, deltaPct: pct });
|
|
147
314
|
}
|
|
148
315
|
rows.sort((a, b) => Math.abs(b.delta) - Math.abs(a.delta));
|
|
149
|
-
return okResult(`${rows.length} group(s) compared (${type}.${qName}).`, {
|
|
316
|
+
return okResult(`${rows.length} group(s) compared (${type}.${qName}).`, {
|
|
317
|
+
type,
|
|
318
|
+
quantity: qName,
|
|
319
|
+
groupBy: input.group_by ?? 'type',
|
|
320
|
+
rows,
|
|
321
|
+
...pendingMutationsField(pendingOverlay(left), pendingOverlay(right)),
|
|
322
|
+
});
|
|
150
323
|
},
|
|
151
324
|
};
|
|
152
325
|
export const diffTools = [modelDiff, quantityDiff];
|
package/dist/tools/diff.js.map
CHANGED
|
@@ -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":"AAAA;;+DAE+D;AAE/D;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,UAAU,EAA4C,MAAM,gBAAgB,CAAC;AAEtF,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AACxD,OAAO,EAAE,sBAAsB,EAAgB,MAAM,wBAAwB,CAAC;AAC9E,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,cAAc,EAAuB,MAAM,eAAe,CAAC;AAE7G,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAEjE,SAAS,UAAU,CAAC,GAAgB,EAAE,CAAS,EAAE,CAAS;IACxD,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACjC,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAClC,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QACpB,MAAM,IAAI,kBAAkB,CAAC;YAC3B,IAAI,EAAE,aAAa,CAAC,eAAe;YACnC,OAAO,EAAE,wCAAwC,CAAC,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;SACxG,CAAC,CAAC;IACL,CAAC;IACD,wEAAwE;IACxE,6DAA6D;IAC7D,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC7B,iBAAiB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC9B,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AACzB,CAAC;AAED;oEACoE;AACpE,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAEhC;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,yBAAyB,GAAG,EAAE,CAAC;AAErC;;;;GAIG;AACH,MAAM,gBAAgB,GAAuB;IAC3C,WAAW;IACX,YAAY;IACZ,cAAc;IACd,OAAO;IACP,UAAU;IACV,SAAS;CACV,CAAC;AAEF;;;;;;;;GAQG;AACH,SAAS,WAAW,CAClB,IAAiB,EACjB,KAAkB,EAClB,QAAuE,EACvE,UAAkB,EAClB,eAAuB;IAEvB,MAAM,IAAI,GAAG,UAAU,CACrB,sBAAsB,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,EACjD,sBAAsB,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,EACnD,EAAE,KAAK,EAAE,MAAM,EAAE,sBAAsB,EAAE,IAAI,EAAE,CAChD,CAAC;IAEF,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CACnD,CAAC,CAAwB,EAAE,CAAwB,EAAE,EAAE,CACrD,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CACtE,CAAC;IACF,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,KAAK,MAAM,KAAK,IAAI,OAAO;QAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IAEhF,OAAO;QACL,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,2EAA2E;QAC3E,8DAA8D;QAC9D,kBAAkB,EAAE,MAAM;QAC1B,cAAc,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAC3D,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO;YACzD,8DAA8D;YAC9D,uEAAuE;YACvE,mEAAmE;YACnE,uEAAuE;YACvE,6CAA6C;YAC7C,GAAG,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,eAAe,CAAC;YAChD,GAAG,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,eAAe,CAAC;YAChD,GAAG,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACtE,CAAC,CAAC;QACH,gBAAgB,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,GAAG,UAAU,CAAC;QAC1D,0EAA0E;QAC1E,sEAAsE;QACtE,oEAAoE;QACpE,EAAE;QACF,4EAA4E;QAC5E,6EAA6E;QAC7E,6BAA6B;QAC7B,GAAG,qBAAqB,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC;QACvD,GAAG,CAAC,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,KAAK;YACjC,CAAC,CAAC;gBACA,sBAAsB,EAAE;oBACtB,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,gBAAgB,IAAI,CAAC;oBAC1C,IAAI,EAAE,QAAQ,CAAC,KAAK,EAAE,gBAAgB,IAAI,CAAC;iBAC5C;aACF;YACD,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;AACJ,CAAC;AAED;2EAC2E;AAC3E,SAAS,QAAQ,CACf,IAAqB,EACrB,QAAwC,EACxC,eAAuB;IAEvB,OAAO;QACL,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC;QACtE,CAAC,GAAG,IAAI,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM;QACjC,CAAC,GAAG,IAAI,WAAW,CAAC,EAAE,QAAQ,CAAC,MAAM,GAAG,eAAe;KACxD,CAAC;AACJ,CAAC;AAED,MAAM,SAAS,GAAS;IACtB,IAAI,EAAE,YAAY;IAClB,WAAW,EACT,mGAAmG;UACjG,kGAAkG;UAClG,kGAAkG;UAClG,uCAAuC;IAC3C,KAAK,EAAE,MAAM;IACb,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,mBAAmB,EAAE;YACvD,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,mBAAmB,EAAE;YACvD,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,iDAAiD,EAAE;YAC7G,UAAU,EAAE;gBACV,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,KAAK;gBACd,WAAW,EACT,4FAA4F;sBAC1F,0FAA0F;sBAC1F,6FAA6F;sBAC7F,wFAAwF;aAC7F;YACD,WAAW,EAAE;gBACX,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,mBAAmB;gBAC5B,OAAO,EAAE,CAAC;gBACV,WAAW,EACT,8FAA8F;sBAC5F,4DAA4D;aACjE;YACD,iBAAiB,EAAE;gBACjB,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,yBAAyB;gBAClC,OAAO,EAAE,CAAC;gBACV,WAAW,EACT,sFAAsF;sBACpF,6FAA6F;sBAC7F,oFAAoF;aACzF;SACF;QACD,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;QACpB,oBAAoB,EAAE,KAAK;KAC5B;IACD,OAAO,CAAC,KAAK,EAAE,GAAG;QAChB,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,CAAW,EAAE,KAAK,CAAC,CAAW,CAAC,CAAC;QAC9E,2EAA2E;QAC3E,2EAA2E;QAC3E,yEAAyE;QACzE,oDAAoD;QACpD,MAAM,WAAW,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,YAAY,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;QAE3C,kBAAkB;QAClB,MAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QACzD,MAAM,MAAM,GAAG,gBAAgB,CAAC,KAAK,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;QAC3D,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,EAAE,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAC/D,MAAM,SAAS,GAAwE,EAAE,CAAC;QAC1F,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;YACzB,MAAM,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAC9B,MAAM,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAC9B,IAAI,EAAE,KAAK,EAAE;gBAAE,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;QACzG,CAAC;QACD,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QAEhE,IAAI,UAAU,GAAkE,IAAI,CAAC;QACrF,IAAK,KAAK,CAAC,SAAiC,IAAI,IAAI,EAAE,CAAC;YACrD,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;YAClD,MAAM,KAAK,GAAG,gBAAgB,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;YACpD,MAAM,KAAK,GAAa,EAAE,CAAC;YAC3B,MAAM,OAAO,GAAa,EAAE,CAAC;YAC7B,IAAI,MAAM,GAAG,CAAC,CAAC;YACf,KAAK,MAAM,CAAC,IAAI,KAAK;gBAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACnE,KAAK,MAAM,CAAC,IAAI,KAAK;gBAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;oBAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACxD,UAAU,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QAC1C,CAAC;QAED,yEAAyE;QACzE,uEAAuE;QACvE,mDAAmD;QACnD,MAAM,OAAO,GAAI,KAAK,CAAC,UAAkC,IAAI,KAAK;YAChE,CAAC,CAAC,WAAW,CACX,IAAI,EACJ,KAAK,EACL,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,YAAY,EAAE,EACzC,KAAK,CAAC,WAAkC,IAAI,mBAAmB,EAC/D,KAAK,CAAC,iBAAwC,IAAI,yBAAyB,CAC7E;YACD,CAAC,CAAC,IAAI,CAAC;QAET,MAAM,YAAY,GAAG,qBAAqB,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QACtE,MAAM,OAAO,GAAG,YAAY,CAAC,gBAAgB,IAAI,CAAC,CAAC;QACnD,MAAM,OAAO,GAAG;YACd,QAAQ,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,KAAK,SAAS,CAAC,MAAM,eAAe;YAC9D,UAAU,CAAC,CAAC,CAAC,MAAM,UAAU,CAAC,KAAK,CAAC,MAAM,KAAK,UAAU,CAAC,OAAO,CAAC,MAAM,uBAAuB,CAAC,CAAC,CAAC,EAAE;YACpG,OAAO;gBACL,CAAC,CAAC,8BAA8B,cAAc,CAAC,OAAO,CAAC,EAAE;gBACzD,CAAC,CAAC,EAAE;YACN,0EAA0E;YAC1E,uEAAuE;YACvE,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,OAAO,sBAAsB,CAAC,CAAC,CAAC,EAAE;SAC/D,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEX,yEAAyE;QACzE,yEAAyE;QACzE,wEAAwE;QACxE,OAAO,QAAQ,CAAC,OAAO,EAAE;YACvB,SAAS;YACT,UAAU;YACV,WAAW,EAAE,OAAO;YACpB,GAAG,YAAY;SAChB,CAAC,CAAC;IACL,CAAC;CACF,CAAC;AAEF,0EAA0E;AAC1E,SAAS,gBAAgB,CAAC,KAAkB,EAAE,OAA8B;IAC1E,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,KAAK,MAAM,CAAC,EAAE,GAAG,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;QACrD,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;YACrB,IAAI,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;gBAAE,SAAS;YACvC,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAC7C,IAAI,IAAI,CAAC,QAAQ;gBAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IACD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,OAAO,IAAI,EAAE;QAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACvE,OAAO,IAAI,CAAC;AACd,CAAC;AAED,uEAAuE;AACvE,SAAS,cAAc,CAAC,OAAgC;IACtD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAiF,CAAC;IACzG,MAAM,MAAM,GAAG,OAAO,CAAC,kBAA4C,CAAC;IACpE,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnF,OAAO,GAAG,MAAM,CAAC,KAAK,WAAW,MAAM,CAAC,QAAQ,cAAc,MAAM,CAAC,OAAO,YAAY;UACpF,GAAG,MAAM,CAAC,SAAS,YAAY;UAC/B,CAAC,KAAK,CAAC,CAAC,CAAC,sBAAsB,KAAK,EAAE,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC;AACvE,CAAC;AAED,MAAM,YAAY,GAAS;IACzB,IAAI,EAAE,eAAe;IACrB,WAAW,EAAE,uFAAuF;IACpG,KAAK,EAAE,MAAM;IACb,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACrB,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACrB,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE;YAC5C,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE;YAC/C,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE;SACxE;QACD,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;QACpB,oBAAoB,EAAE,KAAK;KAC5B;IACD,OAAO,CAAC,KAAK,EAAE,GAAG;QAChB,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,CAAW,EAAE,KAAK,CAAC,CAAW,CAAC,CAAC;QAC9E,MAAM,IAAI,GAAI,KAAK,CAAC,IAA2B,IAAI,SAAS,CAAC;QAC7D,MAAM,KAAK,GAAI,KAAK,CAAC,QAA+B,IAAI,QAAQ,CAAC;QAEjE,MAAM,SAAS,GAAG,CAAC,KAAkB,EAAiD,EAAE;YACtF,MAAM,GAAG,GAAG,IAAI,GAAG,EAA4C,CAAC;YAChE,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;gBACzD,MAAM,GAAG,GAAI,KAAK,CAAC,QAA+B,KAAK,QAAQ;oBAC7D,mEAAmE;oBACnE,sEAAsE;oBACtE,WAAW;oBACX,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,IAAI,QAAQ,CAAC;oBAC7C,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBACX,IAAI,KAAK,GAAkB,IAAI,CAAC;gBAChC,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC/C,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;wBAChC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;4BAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;4BAAC,MAAM;wBAAC,CAAC;oBACzD,CAAC;oBACD,IAAI,KAAK,KAAK,IAAI;wBAAE,MAAM;gBAC5B,CAAC;gBACD,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;gBACpD,IAAI,CAAC,KAAK,EAAE,CAAC;gBACb,IAAI,KAAK,IAAI,IAAI;oBAAE,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC;gBACvC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YACrB,CAAC;YACD,OAAO,GAAG,CAAC;QACb,CAAC,CAAC;QAEF,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;QAC9B,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;QAChC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,EAAE,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAC5D,MAAM,IAAI,GAAgG,EAAE,CAAC;QAC7G,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;YACvB,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC;YACnC,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC;YACpC,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;YACpB,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;YAC/C,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;QACjE,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QAC3D,OAAO,QAAQ,CACb,GAAG,IAAI,CAAC,MAAM,uBAAuB,IAAI,IAAI,KAAK,IAAI,EACtD;YACE,IAAI;YACJ,QAAQ,EAAE,KAAK;YACf,OAAO,EAAE,KAAK,CAAC,QAAQ,IAAI,MAAM;YACjC,IAAI;YACJ,GAAG,qBAAqB,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC;SACtE,CACF,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAW,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../../src/tools/discovery.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../../src/tools/discovery.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAOvC,eAAO,MAAM,SAAS,EAAE,IAiDvB,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,IAkCvB,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,IAuCvB,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,IA6BzB,CAAC;AAmCF,eAAO,MAAM,cAAc,EAAE,IAmF5B,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,IAAI,EAMhC,CAAC"}
|
package/dist/tools/discovery.js
CHANGED
|
@@ -7,7 +7,10 @@
|
|
|
7
7
|
* These are the always-on, read-only tools an agent calls first to figure
|
|
8
8
|
* out what models are loaded and what's in them.
|
|
9
9
|
*/
|
|
10
|
-
import { extractGeoreferencingOnDemand, extractLengthUnitScale, getAllAttributesForEntity, getEntityMetadata,
|
|
10
|
+
import { extractGeoreferencingOnDemand, extractLengthUnitScale, getAllAttributesForEntity, getEntityMetadata, getInheritanceChainAcrossSchemas, getInheritanceChainForEntity, } from '@ifc-lite/parser';
|
|
11
|
+
import { IFC_ENTITY_NAMES } from '@ifc-lite/data';
|
|
12
|
+
import { entityInfoAcrossSchemas, entityInfoInSchema } from '../schema-tables.js';
|
|
13
|
+
import { foldedEntityCount, foldedTypeCounts, pendingMutationsField, pendingOverlay } from '../overlay.js';
|
|
11
14
|
import { resolveModel, okResult } from './util.js';
|
|
12
15
|
import { loadIfcModel } from '../loader.js';
|
|
13
16
|
import { resolveSafePath } from '../safe-path.js';
|
|
@@ -30,26 +33,34 @@ export const modelInfo = {
|
|
|
30
33
|
const lengthScale = m.store.source && m.store.entityIndex
|
|
31
34
|
? extractLengthUnitScale(m.store.source, m.store.entityIndex)
|
|
32
35
|
: 1.0;
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
const
|
|
36
|
+
// A model_id names a session, not a file: the counts have to include what
|
|
37
|
+
// `entity_create` queued and exclude what `entity_delete` tombstoned (#2004),
|
|
38
|
+
// or an agent that just created a wall is told the model still has the old
|
|
39
|
+
// number and that its edit did not happen.
|
|
40
|
+
const overlay = pendingOverlay(m);
|
|
41
|
+
const typeCounts = foldedTypeCounts(m.store, overlay);
|
|
42
|
+
const entityCount = foldedEntityCount(m.store, overlay);
|
|
43
|
+
const summary = `Model '${m.name}' (${m.store.schemaVersion}): ${entityCount.toLocaleString()} entities, ${(m.store.fileSize / 1024).toFixed(1)} KB`
|
|
44
|
+
+ (overlay ? `, including ${overlay.pendingMutations} unsaved mutation(s)` : '');
|
|
38
45
|
return okResult(summary, {
|
|
39
46
|
id: m.id,
|
|
40
47
|
name: m.name,
|
|
41
48
|
schema: m.store.schemaVersion,
|
|
42
|
-
entityCount
|
|
49
|
+
entityCount,
|
|
50
|
+
// `fileSize` deliberately stays the size of the file on disk: nothing has
|
|
51
|
+
// been written yet, and this field says how big the parsed input was.
|
|
43
52
|
fileSize: m.store.fileSize,
|
|
44
53
|
filePath: m.filePath,
|
|
45
54
|
loadedAt: m.loadedAt,
|
|
46
55
|
lengthUnitScale: lengthScale,
|
|
47
56
|
georeferencing: georef ?? null,
|
|
48
|
-
|
|
57
|
+
// PascalCase, matching `model_diff`'s type table and `count_entities`.
|
|
58
|
+
typeCountsTop20: [...typeCounts.entries()]
|
|
49
59
|
.sort((a, b) => b[1] - a[1])
|
|
50
60
|
.slice(0, 20)
|
|
51
|
-
.map(([type, count]) => ({ type, count })),
|
|
52
|
-
typeCountsTotal:
|
|
61
|
+
.map(([type, count]) => ({ type: IFC_ENTITY_NAMES[type] ?? type, count })),
|
|
62
|
+
typeCountsTotal: typeCounts.size,
|
|
63
|
+
...pendingMutationsField(overlay),
|
|
53
64
|
});
|
|
54
65
|
},
|
|
55
66
|
};
|
|
@@ -66,15 +77,22 @@ export const modelList = {
|
|
|
66
77
|
? 'No models currently loaded.'
|
|
67
78
|
: `${list.length} model${list.length === 1 ? '' : 's'} loaded.`, {
|
|
68
79
|
count: list.length,
|
|
69
|
-
models: list.map((m) =>
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
80
|
+
models: list.map((m) => {
|
|
81
|
+
// The same count `model_info` reports, computed the same way (#2014).
|
|
82
|
+
// Two tools naming one number differently for the same model is the
|
|
83
|
+
// defect, whichever of them is right.
|
|
84
|
+
const overlay = pendingOverlay(m);
|
|
85
|
+
return {
|
|
86
|
+
id: m.id,
|
|
87
|
+
name: m.name,
|
|
88
|
+
schema: m.store.schemaVersion,
|
|
89
|
+
entityCount: foldedEntityCount(m.store, overlay),
|
|
90
|
+
fileSize: m.store.fileSize,
|
|
91
|
+
filePath: m.filePath,
|
|
92
|
+
loadedAt: m.loadedAt,
|
|
93
|
+
...pendingMutationsField(overlay),
|
|
94
|
+
};
|
|
95
|
+
}),
|
|
78
96
|
});
|
|
79
97
|
},
|
|
80
98
|
};
|
|
@@ -147,9 +165,45 @@ export const modelUnload = {
|
|
|
147
165
|
return okResult(`Unloaded model '${id}'.`, { id });
|
|
148
166
|
},
|
|
149
167
|
};
|
|
168
|
+
/**
|
|
169
|
+
* Every bundled schema's entity table, keyed uppercase. Built on first miss and
|
|
170
|
+
* never on the hot path: the IFC4_ADD2_TC1 codegen pin answers every question
|
|
171
|
+
* this tool gets about a modern file, and this is only consulted for the
|
|
172
|
+
* classes it does not carry.
|
|
173
|
+
*/
|
|
174
|
+
/**
|
|
175
|
+
* The inheritance chain in this tool's documented root→leaf order.
|
|
176
|
+
*
|
|
177
|
+
* **The pin answers first, and that is deliberate** (#2003). The two chain
|
|
178
|
+
* functions do not merely differ in order — they differ in *content* for 62 of
|
|
179
|
+
* the 776 pinned classes, because the schema union lets IFC4X3 win a name
|
|
180
|
+
* collision: `IfcBeam`'s supertype is `IfcBuildingElement` in IFC4 and
|
|
181
|
+
* `IfcBuiltElement` in IFC4X3, and IFC4X3 inserts `IfcFacility` above
|
|
182
|
+
* `IfcBuilding`. Answering `IfcBuiltElement` for an IFC4 `IfcBeam` would be a
|
|
183
|
+
* new wrong answer traded for an old one, so the union only fills the gap the
|
|
184
|
+
* pin leaves: the 23 IFC2X3 and 77 IFC4X3 `IfcObjectDefinition` classes (39 and
|
|
185
|
+
* 80 `IfcRoot` ones) it has no row for at all, which this tool used to reject
|
|
186
|
+
* outright as "unknown IFC entity type".
|
|
187
|
+
*
|
|
188
|
+
* The union walk is leaf→root while the pin is root→leaf, and the union walker
|
|
189
|
+
* falls back to the pin, which would flip it back — so normalise by finding the
|
|
190
|
+
* leaf, never by index. See
|
|
191
|
+
* `packages/parser/test/inheritance-chain-equivalence.test.ts`.
|
|
192
|
+
*/
|
|
193
|
+
function inheritanceChainRootToLeaf(type) {
|
|
194
|
+
const pinned = getInheritanceChainForEntity(type);
|
|
195
|
+
if (pinned.length > 0)
|
|
196
|
+
return pinned;
|
|
197
|
+
const chain = getInheritanceChainAcrossSchemas(type);
|
|
198
|
+
if (chain.length < 2)
|
|
199
|
+
return chain;
|
|
200
|
+
return chain[0].toUpperCase() === type.toUpperCase() ? [...chain].reverse() : chain;
|
|
201
|
+
}
|
|
150
202
|
export const schemaDescribe = {
|
|
151
203
|
name: 'schema_describe',
|
|
152
|
-
description: 'Describe an IFC entity type: attributes, parents, inheritance chain. Useful for an agent to know the legal shape before mutating.'
|
|
204
|
+
description: 'Describe an IFC entity type: attributes, parents, inheritance chain. Useful for an agent to know the legal shape before mutating. '
|
|
205
|
+
+ 'Classes outside the IFC4_ADD2_TC1 codegen pin (IFC2X3-only and IFC4X3-only ones) are answered from the bundled schema union, '
|
|
206
|
+
+ 'which carries names but not attribute types — `schemaSource` says which table answered.',
|
|
153
207
|
scope: 'read',
|
|
154
208
|
inputSchema: {
|
|
155
209
|
type: 'object',
|
|
@@ -162,29 +216,63 @@ export const schemaDescribe = {
|
|
|
162
216
|
},
|
|
163
217
|
handler(input) {
|
|
164
218
|
const type = input.type;
|
|
165
|
-
|
|
219
|
+
const includeInherited = input.include_inherited ?? true;
|
|
220
|
+
const meta = getEntityMetadata(type);
|
|
221
|
+
if (meta) {
|
|
222
|
+
const attrs = includeInherited ? getAllAttributesForEntity(type) : meta.attributes;
|
|
223
|
+
return okResult(`${type}: ${attrs.length} attributes, parent ${meta.parent ?? '(root)'}, abstract=${meta.isAbstract}.`, {
|
|
224
|
+
type: meta.name,
|
|
225
|
+
parent: meta.parent ?? null,
|
|
226
|
+
isAbstract: meta.isAbstract,
|
|
227
|
+
inheritanceChain: inheritanceChainRootToLeaf(type),
|
|
228
|
+
attributes: attrs,
|
|
229
|
+
schemaSource: 'IFC4_ADD2_TC1',
|
|
230
|
+
});
|
|
231
|
+
}
|
|
232
|
+
// Outside the pin: IFC2X3-only classes an agent can legitimately have just
|
|
233
|
+
// found with `query_entities` on an IFC2X3 file, and IFC4X3 infrastructure
|
|
234
|
+
// leaves. The union knows their name, parent, abstractness and attribute
|
|
235
|
+
// order — not attribute types — so those are reported as names alone rather
|
|
236
|
+
// than invented.
|
|
237
|
+
const resolved = entityInfoAcrossSchemas(type);
|
|
238
|
+
if (!resolved) {
|
|
166
239
|
throw new ToolExecutionError({
|
|
167
240
|
code: ToolErrorCode.INVALID_INPUT,
|
|
168
241
|
message: `Unknown IFC entity type: '${type}'`,
|
|
169
242
|
hint: 'Use canonical PascalCase names like IfcWall, IfcDoor.',
|
|
170
243
|
});
|
|
171
244
|
}
|
|
172
|
-
const
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
245
|
+
const { info, schema } = resolved;
|
|
246
|
+
const chain = inheritanceChainRootToLeaf(info.name);
|
|
247
|
+
// `IfcEntityInfo.attributes` is already the inherited + direct list in
|
|
248
|
+
// declaration order, so `include_inherited: false` has to subtract the
|
|
249
|
+
// parent's rather than add to the leaf's — and the parent has to come from
|
|
250
|
+
// the schema that declared this class, not from a merged map that may hold
|
|
251
|
+
// a different schema's version of it.
|
|
252
|
+
const parent = info.parent
|
|
253
|
+
? (entityInfoInSchema(info.parent, schema) ?? entityInfoAcrossSchemas(info.parent)?.info)
|
|
254
|
+
: undefined;
|
|
255
|
+
// Subtract the parent's names as a *prefix*, not as a count. Resolving the
|
|
256
|
+
// parent in the leaf's own schema already fixes the common case, but a
|
|
257
|
+
// schema that declares a leaf without declaring its parent still falls back
|
|
258
|
+
// to another schema's row — and then a count could cut into the leaf's own
|
|
259
|
+
// attributes. A prefix walk cannot: it stops at the first name that differs.
|
|
260
|
+
let inherited = 0;
|
|
261
|
+
const parentNames = parent?.attributes ?? [];
|
|
262
|
+
while (inherited < parentNames.length
|
|
263
|
+
&& inherited < info.attributes.length
|
|
264
|
+
&& parentNames[inherited] === info.attributes[inherited]) {
|
|
265
|
+
inherited++;
|
|
178
266
|
}
|
|
179
|
-
const
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
267
|
+
const names = includeInherited ? [...info.attributes] : info.attributes.slice(inherited);
|
|
268
|
+
return okResult(`${info.name}: ${names.length} attributes, parent ${info.parent ?? '(root)'}, abstract=${info.abstract}. `
|
|
269
|
+
+ `Outside the IFC4 schema pin — described from ${schema}, names only, no attribute types.`, {
|
|
270
|
+
type: info.name,
|
|
271
|
+
parent: info.parent ?? null,
|
|
272
|
+
isAbstract: info.abstract,
|
|
273
|
+
inheritanceChain: chain,
|
|
274
|
+
attributes: names.map((name) => ({ name })),
|
|
275
|
+
schemaSource: 'bundled-schema-union',
|
|
188
276
|
});
|
|
189
277
|
},
|
|
190
278
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discovery.js","sourceRoot":"","sources":["../../src/tools/discovery.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D;;;;;GAKG;AAEH,OAAO,EACL,6BAA6B,EAC7B,sBAAsB,EACtB,yBAAyB,EACzB,iBAAiB,EACjB,4BAA4B,
|
|
1
|
+
{"version":3,"file":"discovery.js","sourceRoot":"","sources":["../../src/tools/discovery.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../src/tools/export.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../src/tools/export.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAyVvC,eAAO,MAAM,WAAW,EAAE,IAAI,EAAqG,CAAC"}
|