@ifc-lite/mcp 0.2.1 → 0.3.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.
- package/dist/prompts/templates.d.ts.map +1 -1
- package/dist/prompts/templates.js +13 -3
- package/dist/prompts/templates.js.map +1 -1
- package/dist/tools/clash.d.ts +3 -0
- package/dist/tools/clash.d.ts.map +1 -0
- package/dist/tools/clash.js +209 -0
- package/dist/tools/clash.js.map +1 -0
- package/dist/tools/geometry.d.ts.map +1 -1
- package/dist/tools/geometry.js +3 -24
- package/dist/tools/geometry.js.map +1 -1
- package/dist/tools/index.d.ts +2 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +3 -1
- package/dist/tools/index.js.map +1 -1
- package/package.json +6 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/prompts/templates.ts"],"names":[],"mappings":"AAIA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAUzC,eAAO,MAAM,UAAU,EAAE,MAuBxB,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,MAsBhC,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,MAqBhC,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,MAkB7B,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,MAgB/B,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/prompts/templates.ts"],"names":[],"mappings":"AAIA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAUzC,eAAO,MAAM,UAAU,EAAE,MAuBxB,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,MAsBhC,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,MAqBhC,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,MAkB7B,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,MAgB/B,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,MAqBzB,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,MAkB7B,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,MAiB3B,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,MAqBzB,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,MAkBxC,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,MAuB5B,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,MAAM,EAY9B,CAAC"}
|
|
@@ -112,12 +112,22 @@ export const spaceProgramCheck = {
|
|
|
112
112
|
};
|
|
113
113
|
export const clashReview = {
|
|
114
114
|
name: 'clash_review',
|
|
115
|
-
description: 'Run
|
|
116
|
-
|
|
115
|
+
description: 'Run the discipline clash matrix, group by trade, prioritize by severity.',
|
|
116
|
+
arguments: [
|
|
117
|
+
{ name: 'mode', description: 'Clash mode: hard (interpenetration) or clearance (gap).', required: false },
|
|
118
|
+
],
|
|
119
|
+
render(args) {
|
|
120
|
+
const mode = args.mode ?? 'hard';
|
|
117
121
|
return {
|
|
118
122
|
description: 'Clash review',
|
|
119
123
|
messages: [
|
|
120
|
-
|
|
124
|
+
systemMessage('You are a BIM coordination lead triaging clash results.'),
|
|
125
|
+
userMessage([
|
|
126
|
+
`Run \`clash_matrix\` (mode="${mode}") on the model.`,
|
|
127
|
+
'Summarize the byRule and bySeverity breakdowns, then produce a top-20 priority list ordered by severity and |distance|.',
|
|
128
|
+
'For any discipline pair you want to drill into, follow up with `clash_check` using the two TYPE selectors (e.g. a="IfcDuct*|IfcPipe*", b="IfcWall*").',
|
|
129
|
+
'Always state the display cap and how many clashes were not shown.',
|
|
130
|
+
].join('\n')),
|
|
121
131
|
],
|
|
122
132
|
};
|
|
123
133
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/prompts/templates.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/prompts/templates.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clash.d.ts","sourceRoot":"","sources":["../../src/tools/clash.ts"],"names":[],"mappings":"AAgCA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAkNvC,eAAO,MAAM,UAAU,EAAE,IAAI,EAA8B,CAAC"}
|
|
@@ -0,0 +1,209 @@
|
|
|
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
|
+
* Clash detection tools (spec section 7.3).
|
|
6
|
+
*
|
|
7
|
+
* These wire the headless geometry pipeline (@ifc-lite/geometry) to the
|
|
8
|
+
* representation-agnostic clash engine (@ifc-lite/clash). The whole model is
|
|
9
|
+
* meshed once and cached by model id; the engine's rule SELECTORS (TYPE-based,
|
|
10
|
+
* e.g. `IfcDuct*|IfcPipe*`) pick the element groups for each run.
|
|
11
|
+
*
|
|
12
|
+
* - clash_check one ad-hoc rule: A vs B, a self-clash within A, or — with no
|
|
13
|
+
* selectors at all — ALL clashes in the model (every element
|
|
14
|
+
* vs every other, no discipline matrix needed).
|
|
15
|
+
* - clash_matrix the standard discipline matrix (MEP x STR, HVAC x ARCH, ...).
|
|
16
|
+
*
|
|
17
|
+
* Clash lists are always capped for display; the cap and the dropped count are
|
|
18
|
+
* stated explicitly so output never silently truncates.
|
|
19
|
+
*/
|
|
20
|
+
import { readFile } from 'node:fs/promises';
|
|
21
|
+
import { GeometryProcessor } from '@ifc-lite/geometry';
|
|
22
|
+
import { createClashEngine, disciplineMatrixRules, } from '@ifc-lite/clash';
|
|
23
|
+
import { elementsFromStep } from '@ifc-lite/clash/step';
|
|
24
|
+
import { okResult, resolveModel } from './util.js';
|
|
25
|
+
import { ToolErrorCode, ToolExecutionError } from '../errors.js';
|
|
26
|
+
/** Cap on clashes returned in a tool result. The dropped count is reported. */
|
|
27
|
+
const CLASH_DISPLAY_CAP = 50;
|
|
28
|
+
/**
|
|
29
|
+
* Module-level mesh cache, keyed by model id, so repeated clash calls on the
|
|
30
|
+
* same model don't re-run the (expensive) headless tessellation.
|
|
31
|
+
*/
|
|
32
|
+
const meshCache = new Map();
|
|
33
|
+
/** Mesh the whole model once (headless, no DOM) and cache by model id. */
|
|
34
|
+
async function meshModel(m, ctx) {
|
|
35
|
+
const cached = meshCache.get(m.id);
|
|
36
|
+
if (cached)
|
|
37
|
+
return cached;
|
|
38
|
+
const bytes = await resolveIfcBytes(m);
|
|
39
|
+
ctx.progress.report(0.1, 'Tessellating model geometry', 1);
|
|
40
|
+
const gp = new GeometryProcessor();
|
|
41
|
+
await gp.init();
|
|
42
|
+
if (ctx.signal.aborted) {
|
|
43
|
+
throw new ToolExecutionError({ code: ToolErrorCode.INTERNAL_ERROR, message: 'Clash run cancelled before meshing.' });
|
|
44
|
+
}
|
|
45
|
+
const result = await gp.process(bytes);
|
|
46
|
+
const meshes = result.meshes;
|
|
47
|
+
if (meshes.length === 0) {
|
|
48
|
+
throw new ToolExecutionError({
|
|
49
|
+
code: ToolErrorCode.UNSUPPORTED_OPERATION,
|
|
50
|
+
message: 'No mesh geometry could be produced for this model; clash detection needs tessellated solids.',
|
|
51
|
+
hint: 'Confirm the model carries explicit geometry (not quantity-only data).',
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
meshCache.set(m.id, meshes);
|
|
55
|
+
return meshes;
|
|
56
|
+
}
|
|
57
|
+
/** Raw IFC bytes for meshing: prefer the in-memory source, fall back to disk. */
|
|
58
|
+
async function resolveIfcBytes(m) {
|
|
59
|
+
if (m.store.source && m.store.source.byteLength > 0)
|
|
60
|
+
return m.store.source;
|
|
61
|
+
if (m.filePath)
|
|
62
|
+
return readFile(m.filePath);
|
|
63
|
+
throw new ToolExecutionError({
|
|
64
|
+
code: ToolErrorCode.UNSUPPORTED_OPERATION,
|
|
65
|
+
message: 'Model has no in-memory source bytes and no file path to re-read for meshing.',
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
/** Run a rule set against a model, returning the engine result. */
|
|
69
|
+
async function runRules(m, rules, ctx) {
|
|
70
|
+
const meshes = await meshModel(m, ctx);
|
|
71
|
+
const { elements, exclusions } = elementsFromStep({ store: m.store, meshes, modelId: m.id });
|
|
72
|
+
const engine = createClashEngine({ backend: 'ts' });
|
|
73
|
+
return engine.run(elements, rules, {
|
|
74
|
+
exclusions,
|
|
75
|
+
signal: ctx.signal,
|
|
76
|
+
onProgress: (p) => {
|
|
77
|
+
const ratio = p.total > 0 ? p.done / p.total : 0;
|
|
78
|
+
ctx.progress.report(0.2 + ratio * 0.8, `Clash ${p.phase}: ${p.rule} (${p.done}/${p.total})`, 1);
|
|
79
|
+
},
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
/** Project a `Clash` down to a compact, JSON-friendly display row. */
|
|
83
|
+
function displayClash(c) {
|
|
84
|
+
return {
|
|
85
|
+
id: c.id,
|
|
86
|
+
rule: c.rule,
|
|
87
|
+
status: c.status,
|
|
88
|
+
severity: c.severity,
|
|
89
|
+
distance: c.distance,
|
|
90
|
+
point: c.point,
|
|
91
|
+
a: { key: c.a.key, ref: c.a.ref, tag: c.a.tag, name: c.a.name },
|
|
92
|
+
b: { key: c.b.key, ref: c.b.ref, tag: c.b.tag, name: c.b.name },
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Top clashes by signed distance (deepest penetration / smallest gap first),
|
|
97
|
+
* capped for display. Returns the rows plus an explicit `truncated` note when
|
|
98
|
+
* capped.
|
|
99
|
+
*
|
|
100
|
+
* Sort by RAW distance ascending, not |distance|: hard clashes carry a negative
|
|
101
|
+
* penetration depth, so most-negative-first surfaces the DEEPEST penetrations
|
|
102
|
+
* (the worst, most actionable rows) instead of burying them past the cap;
|
|
103
|
+
* clearance/touch gaps are positive, so the same order surfaces the tightest
|
|
104
|
+
* gaps first. (An |distance| sort inverted the hard-mode order — issue caught in
|
|
105
|
+
* review.)
|
|
106
|
+
*/
|
|
107
|
+
function topClashes(clashes, cap) {
|
|
108
|
+
const sorted = [...clashes].sort((x, y) => x.distance - y.distance);
|
|
109
|
+
const shown = sorted.slice(0, cap);
|
|
110
|
+
const rows = shown.map(displayClash);
|
|
111
|
+
if (sorted.length > cap) {
|
|
112
|
+
return { rows, truncated: { shown: shown.length, dropped: sorted.length - shown.length, total: sorted.length } };
|
|
113
|
+
}
|
|
114
|
+
return { rows, truncated: null };
|
|
115
|
+
}
|
|
116
|
+
const clashCheck = {
|
|
117
|
+
name: 'clash_check',
|
|
118
|
+
description: 'Clash detection on a single model. Omit BOTH a and b to detect ALL clashes inside the model '
|
|
119
|
+
+ '(every element vs every other — no discipline matrix needed). Give only a TYPE selector for a to '
|
|
120
|
+
+ 'self-clash within a group (a="IfcDuct*"), or both a and b for a pairwise check (a="IfcDuct*", b="IfcWall*"). '
|
|
121
|
+
+ 'Meshes the model headlessly and returns a summary plus the top clashes by |distance|.',
|
|
122
|
+
scope: 'read',
|
|
123
|
+
inputSchema: {
|
|
124
|
+
type: 'object',
|
|
125
|
+
properties: {
|
|
126
|
+
model_id: { type: 'string' },
|
|
127
|
+
a: { type: 'string', description: 'Type selector for set A. Defaults to "*" (all elements). e.g. "IfcDuct*|IfcPipe*", "!IfcSpace".' },
|
|
128
|
+
b: { type: 'string', description: 'Type selector for set B. OMIT for a self-clash within A (every element vs every other in the group).' },
|
|
129
|
+
mode: { type: 'string', enum: ['hard', 'clearance'], default: 'hard' },
|
|
130
|
+
tolerance: { type: 'number', description: 'Touching band (m). Defaults to the engine tolerance.' },
|
|
131
|
+
clearance: { type: 'number', description: 'Required gap (m) for mode="clearance".' },
|
|
132
|
+
},
|
|
133
|
+
additionalProperties: false,
|
|
134
|
+
},
|
|
135
|
+
async handler(input, ctx) {
|
|
136
|
+
const m = resolveModel(ctx, input.model_id);
|
|
137
|
+
const a = input.a ?? '*';
|
|
138
|
+
const b = input.b;
|
|
139
|
+
const mode = input.mode ?? 'hard';
|
|
140
|
+
const tolerance = input.tolerance;
|
|
141
|
+
const clearance = input.clearance;
|
|
142
|
+
// No `b` => self-clash within A (every element vs every other in the group);
|
|
143
|
+
// with the default a="*" that is "all clashes in the model".
|
|
144
|
+
const label = b ? `${a} vs ${b}` : a === '*' ? 'all elements (self-clash)' : `${a} (self-clash)`;
|
|
145
|
+
const rule = {
|
|
146
|
+
id: 'clash_check',
|
|
147
|
+
name: label,
|
|
148
|
+
a,
|
|
149
|
+
...(b != null ? { b } : {}),
|
|
150
|
+
mode,
|
|
151
|
+
...(tolerance != null ? { tolerance } : {}),
|
|
152
|
+
...(clearance != null ? { clearance } : {}),
|
|
153
|
+
};
|
|
154
|
+
const result = await runRules(m, [rule], ctx);
|
|
155
|
+
const { rows, truncated } = topClashes(result.clashes, CLASH_DISPLAY_CAP);
|
|
156
|
+
const settings = { a, b: b ?? null, mode, tolerance: tolerance ?? null, clearance: clearance ?? null };
|
|
157
|
+
const capNote = truncated
|
|
158
|
+
? ` Showing top ${truncated.shown} by |distance|; ${truncated.dropped} more not shown.`
|
|
159
|
+
: '';
|
|
160
|
+
return okResult(`Found ${result.summary.total} clash(es) for ${label} (mode=${mode}).${capNote}`, {
|
|
161
|
+
summary: result.summary,
|
|
162
|
+
settings,
|
|
163
|
+
engineSettings: result.settings,
|
|
164
|
+
truncated: result.truncated ?? null,
|
|
165
|
+
clashes: rows,
|
|
166
|
+
clashesTruncated: truncated,
|
|
167
|
+
});
|
|
168
|
+
},
|
|
169
|
+
};
|
|
170
|
+
const clashMatrix = {
|
|
171
|
+
name: 'clash_matrix',
|
|
172
|
+
description: 'Run the standard discipline clash matrix (MEP x STR, HVAC x ARCH, ...) over the whole model. '
|
|
173
|
+
+ 'Returns per-rule and per-severity breakdowns plus a sample of the worst clashes.',
|
|
174
|
+
scope: 'read',
|
|
175
|
+
inputSchema: {
|
|
176
|
+
type: 'object',
|
|
177
|
+
properties: {
|
|
178
|
+
model_id: { type: 'string' },
|
|
179
|
+
mode: { type: 'string', enum: ['hard', 'clearance'], default: 'hard' },
|
|
180
|
+
clearance: { type: 'number', description: 'Required gap (m) applied to every matrix rule when mode="clearance". Without it a clearance matrix reports nothing.' },
|
|
181
|
+
},
|
|
182
|
+
additionalProperties: false,
|
|
183
|
+
},
|
|
184
|
+
async handler(input, ctx) {
|
|
185
|
+
const m = resolveModel(ctx, input.model_id);
|
|
186
|
+
const mode = input.mode ?? 'hard';
|
|
187
|
+
const clearance = input.clearance;
|
|
188
|
+
const rules = disciplineMatrixRules(mode, clearance);
|
|
189
|
+
const result = await runRules(m, rules, ctx);
|
|
190
|
+
const { rows, truncated } = topClashes(result.clashes, CLASH_DISPLAY_CAP);
|
|
191
|
+
const capNote = truncated
|
|
192
|
+
? ` Sampling top ${truncated.shown} by |distance|; ${truncated.dropped} more not shown.`
|
|
193
|
+
: '';
|
|
194
|
+
return okResult(`Discipline matrix (mode=${mode}, ${rules.length} rules): ${result.summary.total} clash(es).${capNote}`, {
|
|
195
|
+
mode,
|
|
196
|
+
ruleCount: rules.length,
|
|
197
|
+
byRule: result.summary.byRule,
|
|
198
|
+
bySeverity: result.summary.bySeverity,
|
|
199
|
+
byTypePair: result.summary.byTypePair,
|
|
200
|
+
summary: result.summary,
|
|
201
|
+
engineSettings: result.settings,
|
|
202
|
+
truncated: result.truncated ?? null,
|
|
203
|
+
sampleClashes: rows,
|
|
204
|
+
sampleTruncated: truncated,
|
|
205
|
+
});
|
|
206
|
+
},
|
|
207
|
+
};
|
|
208
|
+
export const clashTools = [clashCheck, clashMatrix];
|
|
209
|
+
//# sourceMappingURL=clash.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clash.js","sourceRoot":"","sources":["../../src/tools/clash.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"geometry.d.ts","sourceRoot":"","sources":["../../src/tools/geometry.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"geometry.d.ts","sourceRoot":"","sources":["../../src/tools/geometry.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAqNvC,eAAO,MAAM,aAAa,EAAE,IAAI,EAM/B,CAAC"}
|
package/dist/tools/geometry.js
CHANGED
|
@@ -7,8 +7,9 @@
|
|
|
7
7
|
* v0.1 strategy: serve the cheap, accurate values that come straight off
|
|
8
8
|
* IfcElementQuantity (volume, area), and surface a UNSUPPORTED_OPERATION
|
|
9
9
|
* with a useful hint for tools that need WASM-driven mesh tessellation
|
|
10
|
-
* (geometry_get, raycast
|
|
11
|
-
*
|
|
10
|
+
* (geometry_get, raycast). Clash detection has moved to clash.ts, which
|
|
11
|
+
* meshes headlessly via @ifc-lite/geometry. When `@ifc-lite/wasm` lands in
|
|
12
|
+
* the MCP container we wire geometry_get/raycast in here too.
|
|
12
13
|
*/
|
|
13
14
|
import { EntityNode } from '@ifc-lite/query';
|
|
14
15
|
import { okResult, resolveModel } from './util.js';
|
|
@@ -220,33 +221,11 @@ const raycast = {
|
|
|
220
221
|
});
|
|
221
222
|
},
|
|
222
223
|
};
|
|
223
|
-
const clashCheck = {
|
|
224
|
-
name: 'clash_check',
|
|
225
|
-
description: 'Pairwise clash detection on element selections. Requires the WASM geometry pipeline.',
|
|
226
|
-
scope: 'read',
|
|
227
|
-
inputSchema: {
|
|
228
|
-
type: 'object',
|
|
229
|
-
properties: {
|
|
230
|
-
model_id: { type: 'string' },
|
|
231
|
-
a: { type: 'array', items: { type: 'string' }, description: 'GlobalIds for set A.' },
|
|
232
|
-
b: { type: 'array', items: { type: 'string' }, description: 'GlobalIds for set B.' },
|
|
233
|
-
},
|
|
234
|
-
required: ['a', 'b'],
|
|
235
|
-
additionalProperties: false,
|
|
236
|
-
},
|
|
237
|
-
handler() {
|
|
238
|
-
throw new ToolExecutionError({
|
|
239
|
-
code: ToolErrorCode.UNSUPPORTED_OPERATION,
|
|
240
|
-
message: 'clash_check requires the WASM geometry pipeline (planned for v0.2).',
|
|
241
|
-
});
|
|
242
|
-
},
|
|
243
|
-
};
|
|
244
224
|
export const geometryTools = [
|
|
245
225
|
geometryGet,
|
|
246
226
|
geometryBbox,
|
|
247
227
|
geometryVolume,
|
|
248
228
|
geometryArea,
|
|
249
229
|
raycast,
|
|
250
|
-
clashCheck,
|
|
251
230
|
];
|
|
252
231
|
//# sourceMappingURL=geometry.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"geometry.js","sourceRoot":"","sources":["../../src/tools/geometry.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D
|
|
1
|
+
{"version":3,"file":"geometry.js","sourceRoot":"","sources":["../../src/tools/geometry.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/index.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { ToolRegistry } from './types.js';
|
|
|
2
2
|
import { discoveryTools } from './discovery.js';
|
|
3
3
|
import { queryTools } from './query.js';
|
|
4
4
|
import { geometryTools } from './geometry.js';
|
|
5
|
+
import { clashTools } from './clash.js';
|
|
5
6
|
import { validationTools } from './validation.js';
|
|
6
7
|
import { mutationTools } from './mutate.js';
|
|
7
8
|
import { bcfTools } from './bcf.js';
|
|
@@ -11,7 +12,7 @@ import { exportTools } from './export.js';
|
|
|
11
12
|
import { viewerTools } from './viewer.js';
|
|
12
13
|
export { ToolRegistry } from './types.js';
|
|
13
14
|
export type { Tool } from './types.js';
|
|
14
|
-
export { discoveryTools, queryTools, geometryTools, validationTools, mutationTools, bcfTools, bsddTools, diffTools, exportTools, viewerTools, };
|
|
15
|
+
export { discoveryTools, queryTools, geometryTools, clashTools, validationTools, mutationTools, bcfTools, bsddTools, diffTools, exportTools, viewerTools, };
|
|
15
16
|
/**
|
|
16
17
|
* Build a ToolRegistry pre-loaded with every tool ifc-lite-mcp ships in v0.1.
|
|
17
18
|
* Callers can pass through to `MCPServerOptions.tools`, or filter by category
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,YAAY,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAEvC,OAAO,EACL,cAAc,EACd,UAAU,EACV,aAAa,EACb,eAAe,EACf,aAAa,EACb,QAAQ,EACR,SAAS,EACT,SAAS,EACT,WAAW,EACX,WAAW,GACZ,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,wBAAwB,IAAI,YAAY,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,YAAY,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAEvC,OAAO,EACL,cAAc,EACd,UAAU,EACV,aAAa,EACb,UAAU,EACV,eAAe,EACf,aAAa,EACb,QAAQ,EACR,SAAS,EACT,SAAS,EACT,WAAW,EACX,WAAW,GACZ,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,wBAAwB,IAAI,YAAY,CAcvD"}
|
package/dist/tools/index.js
CHANGED
|
@@ -5,6 +5,7 @@ import { ToolRegistry } from './types.js';
|
|
|
5
5
|
import { discoveryTools } from './discovery.js';
|
|
6
6
|
import { queryTools } from './query.js';
|
|
7
7
|
import { geometryTools } from './geometry.js';
|
|
8
|
+
import { clashTools } from './clash.js';
|
|
8
9
|
import { validationTools } from './validation.js';
|
|
9
10
|
import { mutationTools } from './mutate.js';
|
|
10
11
|
import { bcfTools } from './bcf.js';
|
|
@@ -13,7 +14,7 @@ import { diffTools } from './diff.js';
|
|
|
13
14
|
import { exportTools } from './export.js';
|
|
14
15
|
import { viewerTools } from './viewer.js';
|
|
15
16
|
export { ToolRegistry } from './types.js';
|
|
16
|
-
export { discoveryTools, queryTools, geometryTools, validationTools, mutationTools, bcfTools, bsddTools, diffTools, exportTools, viewerTools, };
|
|
17
|
+
export { discoveryTools, queryTools, geometryTools, clashTools, validationTools, mutationTools, bcfTools, bsddTools, diffTools, exportTools, viewerTools, };
|
|
17
18
|
/**
|
|
18
19
|
* Build a ToolRegistry pre-loaded with every tool ifc-lite-mcp ships in v0.1.
|
|
19
20
|
* Callers can pass through to `MCPServerOptions.tools`, or filter by category
|
|
@@ -24,6 +25,7 @@ export function buildDefaultToolRegistry() {
|
|
|
24
25
|
registry.registerAll(discoveryTools);
|
|
25
26
|
registry.registerAll(queryTools);
|
|
26
27
|
registry.registerAll(geometryTools);
|
|
28
|
+
registry.registerAll(clashTools);
|
|
27
29
|
registry.registerAll(validationTools);
|
|
28
30
|
registry.registerAll(mutationTools);
|
|
29
31
|
registry.registerAll(bcfTools);
|
package/dist/tools/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG1C,OAAO,EACL,cAAc,EACd,UAAU,EACV,aAAa,EACb,eAAe,EACf,aAAa,EACb,QAAQ,EACR,SAAS,EACT,SAAS,EACT,WAAW,EACX,WAAW,GACZ,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,wBAAwB;IACtC,MAAM,QAAQ,GAAG,IAAI,YAAY,EAAE,CAAC;IACpC,QAAQ,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;IACrC,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IACjC,QAAQ,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;IACpC,QAAQ,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;IACtC,QAAQ,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;IACpC,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC/B,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IAChC,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IAChC,QAAQ,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;IAClC,QAAQ,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;IAClC,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG1C,OAAO,EACL,cAAc,EACd,UAAU,EACV,aAAa,EACb,UAAU,EACV,eAAe,EACf,aAAa,EACb,QAAQ,EACR,SAAS,EACT,SAAS,EACT,WAAW,EACX,WAAW,GACZ,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,wBAAwB;IACtC,MAAM,QAAQ,GAAG,IAAI,YAAY,EAAE,CAAC;IACpC,QAAQ,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;IACrC,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IACjC,QAAQ,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;IACpC,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IACjC,QAAQ,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;IACtC,QAAQ,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;IACpC,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC/B,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IAChC,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IAChC,QAAQ,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;IAClC,QAAQ,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;IAClC,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ifc-lite/mcp",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "Model Context Protocol server for ifc-lite — agent-native BIM via MCP (stdio + Streamable HTTP)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -28,17 +28,19 @@
|
|
|
28
28
|
},
|
|
29
29
|
"dependencies": {
|
|
30
30
|
"@types/node": "^25.9.1",
|
|
31
|
-
"@ifc-lite/
|
|
31
|
+
"@ifc-lite/clash": "^1.1.0",
|
|
32
32
|
"@ifc-lite/create": "^1.15.1",
|
|
33
33
|
"@ifc-lite/data": "^2.0.0",
|
|
34
34
|
"@ifc-lite/encoding": "^1.14.6",
|
|
35
|
+
"@ifc-lite/bcf": "^1.15.4",
|
|
35
36
|
"@ifc-lite/export": "^1.19.3",
|
|
36
37
|
"@ifc-lite/ids": "^1.15.4",
|
|
38
|
+
"@ifc-lite/geometry": "^2.1.0",
|
|
37
39
|
"@ifc-lite/mutations": "^1.15.1",
|
|
38
40
|
"@ifc-lite/parser": "^3.0.0",
|
|
39
41
|
"@ifc-lite/query": "^1.14.8",
|
|
40
|
-
"@ifc-lite/
|
|
41
|
-
"@ifc-lite/
|
|
42
|
+
"@ifc-lite/viewer-core": "^0.2.4",
|
|
43
|
+
"@ifc-lite/sdk": "^1.17.0"
|
|
42
44
|
},
|
|
43
45
|
"devDependencies": {
|
|
44
46
|
"@types/node": "^25.9.1",
|