@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.
@@ -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,MAWzB,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"}
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 clash_check, group by trade, prioritize by severity.',
116
- render() {
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
- userMessage('Run `clash_check` on the model. Group results by IFC type pair (e.g. IfcWall × IfcDuct) and produce a top-20 priority list for review.'),
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,3 @@
1
+ import type { Tool } from './types.js';
2
+ export declare const clashTools: Tool[];
3
+ //# sourceMappingURL=clash.d.ts.map
@@ -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":"AAeA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AA2OvC,eAAO,MAAM,aAAa,EAAE,IAAI,EAO/B,CAAC"}
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"}
@@ -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, clash_check). When `@ifc-lite/wasm` lands in the
11
- * MCP container we wire it in here without changing the tool surface.
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":"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"}
1
+ {"version":3,"file":"geometry.js","sourceRoot":"","sources":["../../src/tools/geometry.ts"],"names":[],"mappings":"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"}
@@ -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,CAavD"}
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"}
@@ -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);
@@ -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.2.1",
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/bcf": "^1.15.4",
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/sdk": "^1.16.1",
41
- "@ifc-lite/viewer-core": "^0.2.4"
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",