@ifc-lite/mcp 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (155) hide show
  1. package/LICENSE +373 -0
  2. package/README.md +186 -0
  3. package/dist/auth/index.d.ts +3 -0
  4. package/dist/auth/index.d.ts.map +1 -0
  5. package/dist/auth/index.js +5 -0
  6. package/dist/auth/index.js.map +1 -0
  7. package/dist/auth/scope.d.ts +24 -0
  8. package/dist/auth/scope.d.ts.map +1 -0
  9. package/dist/auth/scope.js +26 -0
  10. package/dist/auth/scope.js.map +1 -0
  11. package/dist/browser.d.ts +37 -0
  12. package/dist/browser.d.ts.map +1 -0
  13. package/dist/browser.js +37 -0
  14. package/dist/browser.js.map +1 -0
  15. package/dist/cli.d.ts +3 -0
  16. package/dist/cli.d.ts.map +1 -0
  17. package/dist/cli.js +233 -0
  18. package/dist/cli.js.map +1 -0
  19. package/dist/context.d.ts +87 -0
  20. package/dist/context.d.ts.map +1 -0
  21. package/dist/context.js +41 -0
  22. package/dist/context.js.map +1 -0
  23. package/dist/errors.d.ts +37 -0
  24. package/dist/errors.d.ts.map +1 -0
  25. package/dist/errors.js +49 -0
  26. package/dist/errors.js.map +1 -0
  27. package/dist/headless-backend.d.ts +61 -0
  28. package/dist/headless-backend.d.ts.map +1 -0
  29. package/dist/headless-backend.js +472 -0
  30. package/dist/headless-backend.js.map +1 -0
  31. package/dist/index.d.ts +39 -0
  32. package/dist/index.d.ts.map +1 -0
  33. package/dist/index.js +49 -0
  34. package/dist/index.js.map +1 -0
  35. package/dist/loader.d.ts +9 -0
  36. package/dist/loader.d.ts.map +1 -0
  37. package/dist/loader.js +76 -0
  38. package/dist/loader.js.map +1 -0
  39. package/dist/prompts/index.d.ts +6 -0
  40. package/dist/prompts/index.d.ts.map +1 -0
  41. package/dist/prompts/index.js +13 -0
  42. package/dist/prompts/index.js.map +1 -0
  43. package/dist/prompts/templates.d.ts +21 -0
  44. package/dist/prompts/templates.d.ts.map +1 -0
  45. package/dist/prompts/templates.js +238 -0
  46. package/dist/prompts/templates.js.map +1 -0
  47. package/dist/prompts/types.d.ts +17 -0
  48. package/dist/prompts/types.d.ts.map +1 -0
  49. package/dist/prompts/types.js +27 -0
  50. package/dist/prompts/types.js.map +1 -0
  51. package/dist/protocol/index.d.ts +3 -0
  52. package/dist/protocol/index.d.ts.map +1 -0
  53. package/dist/protocol/index.js +6 -0
  54. package/dist/protocol/index.js.map +1 -0
  55. package/dist/protocol/jsonrpc.d.ts +12 -0
  56. package/dist/protocol/jsonrpc.d.ts.map +1 -0
  57. package/dist/protocol/jsonrpc.js +62 -0
  58. package/dist/protocol/jsonrpc.js.map +1 -0
  59. package/dist/protocol/types.d.ts +223 -0
  60. package/dist/protocol/types.d.ts.map +1 -0
  61. package/dist/protocol/types.js +37 -0
  62. package/dist/protocol/types.js.map +1 -0
  63. package/dist/resources/index.d.ts +6 -0
  64. package/dist/resources/index.d.ts.map +1 -0
  65. package/dist/resources/index.js +13 -0
  66. package/dist/resources/index.js.map +1 -0
  67. package/dist/resources/providers.d.ts +3 -0
  68. package/dist/resources/providers.d.ts.map +1 -0
  69. package/dist/resources/providers.js +270 -0
  70. package/dist/resources/providers.js.map +1 -0
  71. package/dist/resources/types.d.ts +29 -0
  72. package/dist/resources/types.d.ts.map +1 -0
  73. package/dist/resources/types.js +30 -0
  74. package/dist/resources/types.js.map +1 -0
  75. package/dist/server.d.ts +93 -0
  76. package/dist/server.d.ts.map +1 -0
  77. package/dist/server.js +396 -0
  78. package/dist/server.js.map +1 -0
  79. package/dist/tools/bcf.d.ts +3 -0
  80. package/dist/tools/bcf.d.ts.map +1 -0
  81. package/dist/tools/bcf.js +208 -0
  82. package/dist/tools/bcf.js.map +1 -0
  83. package/dist/tools/bsdd.d.ts +3 -0
  84. package/dist/tools/bsdd.d.ts.map +1 -0
  85. package/dist/tools/bsdd.js +267 -0
  86. package/dist/tools/bsdd.js.map +1 -0
  87. package/dist/tools/diff.d.ts +3 -0
  88. package/dist/tools/diff.d.ts.map +1 -0
  89. package/dist/tools/diff.js +149 -0
  90. package/dist/tools/diff.js.map +1 -0
  91. package/dist/tools/discovery.d.ts +8 -0
  92. package/dist/tools/discovery.d.ts.map +1 -0
  93. package/dist/tools/discovery.js +181 -0
  94. package/dist/tools/discovery.js.map +1 -0
  95. package/dist/tools/export.d.ts +3 -0
  96. package/dist/tools/export.d.ts.map +1 -0
  97. package/dist/tools/export.js +157 -0
  98. package/dist/tools/export.js.map +1 -0
  99. package/dist/tools/geometry.d.ts +3 -0
  100. package/dist/tools/geometry.d.ts.map +1 -0
  101. package/dist/tools/geometry.js +252 -0
  102. package/dist/tools/geometry.js.map +1 -0
  103. package/dist/tools/ids-accessor.d.ts +9 -0
  104. package/dist/tools/ids-accessor.d.ts.map +1 -0
  105. package/dist/tools/ids-accessor.js +131 -0
  106. package/dist/tools/ids-accessor.js.map +1 -0
  107. package/dist/tools/index.d.ts +21 -0
  108. package/dist/tools/index.d.ts.map +1 -0
  109. package/dist/tools/index.js +36 -0
  110. package/dist/tools/index.js.map +1 -0
  111. package/dist/tools/mutate.d.ts +3 -0
  112. package/dist/tools/mutate.d.ts.map +1 -0
  113. package/dist/tools/mutate.js +350 -0
  114. package/dist/tools/mutate.js.map +1 -0
  115. package/dist/tools/query.d.ts +3 -0
  116. package/dist/tools/query.d.ts.map +1 -0
  117. package/dist/tools/query.js +549 -0
  118. package/dist/tools/query.js.map +1 -0
  119. package/dist/tools/types.d.ts +18 -0
  120. package/dist/tools/types.d.ts.map +1 -0
  121. package/dist/tools/types.js +26 -0
  122. package/dist/tools/types.js.map +1 -0
  123. package/dist/tools/util.d.ts +19 -0
  124. package/dist/tools/util.d.ts.map +1 -0
  125. package/dist/tools/util.js +53 -0
  126. package/dist/tools/util.js.map +1 -0
  127. package/dist/tools/validation.d.ts +3 -0
  128. package/dist/tools/validation.d.ts.map +1 -0
  129. package/dist/tools/validation.js +244 -0
  130. package/dist/tools/validation.js.map +1 -0
  131. package/dist/tools/viewer.d.ts +3 -0
  132. package/dist/tools/viewer.d.ts.map +1 -0
  133. package/dist/tools/viewer.js +651 -0
  134. package/dist/tools/viewer.js.map +1 -0
  135. package/dist/transport/http.d.ts +64 -0
  136. package/dist/transport/http.d.ts.map +1 -0
  137. package/dist/transport/http.js +268 -0
  138. package/dist/transport/http.js.map +1 -0
  139. package/dist/transport/in-process.d.ts +25 -0
  140. package/dist/transport/in-process.d.ts.map +1 -0
  141. package/dist/transport/in-process.js +48 -0
  142. package/dist/transport/in-process.js.map +1 -0
  143. package/dist/transport/stdio.d.ts +33 -0
  144. package/dist/transport/stdio.d.ts.map +1 -0
  145. package/dist/transport/stdio.js +86 -0
  146. package/dist/transport/stdio.js.map +1 -0
  147. package/dist/validate.d.ts +23 -0
  148. package/dist/validate.d.ts.map +1 -0
  149. package/dist/validate.js +88 -0
  150. package/dist/validate.js.map +1 -0
  151. package/dist/viewer-manager.d.ts +51 -0
  152. package/dist/viewer-manager.d.ts.map +1 -0
  153. package/dist/viewer-manager.js +183 -0
  154. package/dist/viewer-manager.js.map +1 -0
  155. package/package.json +86 -0
@@ -0,0 +1,472 @@
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
+ import { MutablePropertyView, StoreEditor } from '@ifc-lite/mutations';
5
+ import { EntityNode } from '@ifc-lite/query';
6
+ import { RelationshipType, IfcTypeEnum, IfcTypeEnumFromString } from '@ifc-lite/data';
7
+ import { extractAllEntityAttributes, extractClassificationsOnDemand, extractMaterialsOnDemand, extractTypePropertiesOnDemand, extractDocumentsOnDemand, extractRelationshipsOnDemand, extractScheduleOnDemand, } from '@ifc-lite/parser';
8
+ import { exportToStep, StepExporter } from '@ifc-lite/export';
9
+ const REL_TYPE_MAP = {
10
+ IfcRelContainedInSpatialStructure: RelationshipType.ContainsElements,
11
+ IfcRelAggregates: RelationshipType.Aggregates,
12
+ IfcRelDefinesByType: RelationshipType.DefinesByType,
13
+ IfcRelVoidsElement: RelationshipType.VoidsElement,
14
+ IfcRelFillsElement: RelationshipType.FillsElement,
15
+ };
16
+ const IFC_SUBTYPES = {
17
+ IFCWALL: ['IFCWALLSTANDARDCASE', 'IFCWALLELEMENTEDCASE'],
18
+ IFCBEAM: ['IFCBEAMSTANDARDCASE'],
19
+ IFCCOLUMN: ['IFCCOLUMNSTANDARDCASE'],
20
+ IFCDOOR: ['IFCDOORSTANDARDCASE'],
21
+ IFCWINDOW: ['IFCWINDOWSTANDARDCASE'],
22
+ IFCSLAB: ['IFCSLABSTANDARDCASE', 'IFCSLABELEMENTEDCASE'],
23
+ IFCMEMBER: ['IFCMEMBERSTANDARDCASE'],
24
+ IFCPLATE: ['IFCPLATESTANDARDCASE'],
25
+ IFCOPENINGELEMENT: ['IFCOPENINGSTANDARDCASE'],
26
+ };
27
+ export function expandTypes(types) {
28
+ const result = [];
29
+ for (const type of types) {
30
+ const upper = type.toUpperCase();
31
+ result.push(upper);
32
+ const subtypes = IFC_SUBTYPES[upper];
33
+ if (subtypes)
34
+ for (const sub of subtypes)
35
+ result.push(sub);
36
+ }
37
+ return result;
38
+ }
39
+ export function isProductType(type) {
40
+ const enumVal = IfcTypeEnumFromString(type);
41
+ if (enumVal === IfcTypeEnum.Unknown)
42
+ return false;
43
+ const upper = type.toUpperCase();
44
+ if (upper.startsWith('IFCREL'))
45
+ return false;
46
+ if (upper.startsWith('IFCPROPERTY'))
47
+ return false;
48
+ if (upper.startsWith('IFCQUANTITY'))
49
+ return false;
50
+ if (upper === 'IFCELEMENTQUANTITY')
51
+ return false;
52
+ if (upper.endsWith('TYPE'))
53
+ return false;
54
+ return true;
55
+ }
56
+ function normalizeBoolean(value) {
57
+ if (value === true || value === '.T.' || value === 'true' || value === 'TRUE')
58
+ return 'true';
59
+ if (value === false || value === '.F.' || value === 'false' || value === 'FALSE')
60
+ return 'false';
61
+ return value;
62
+ }
63
+ export class HeadlessLikeBackend {
64
+ model;
65
+ query;
66
+ selection;
67
+ /**
68
+ * Mutable so the MCP server can swap in streaming adapters when the
69
+ * viewer subprocess starts, then revert when it closes. Marked
70
+ * `readonly` on the BimBackend interface but the underlying instance
71
+ * is ours to manage.
72
+ */
73
+ visibility;
74
+ viewer;
75
+ mutate;
76
+ store;
77
+ spatial;
78
+ export;
79
+ lens;
80
+ files;
81
+ schedule;
82
+ dataStore;
83
+ modelName;
84
+ modelId;
85
+ mutationView = null;
86
+ storeEditor = null;
87
+ constructor(store, modelName, modelId) {
88
+ this.dataStore = store;
89
+ this.modelName = modelName;
90
+ this.modelId = modelId;
91
+ this.model = this.createModelAdapter();
92
+ this.query = this.createQueryAdapter();
93
+ this.selection = this.createSelectionAdapter();
94
+ this.visibility = { hide() { }, show() { }, isolate() { }, reset() { } };
95
+ this.viewer = {
96
+ colorize() { }, colorizeAll() { }, resetColors() { },
97
+ flyTo() { }, setSection() { }, getSection() { return null; },
98
+ setCamera() { }, getCamera() { return { mode: 'perspective' }; },
99
+ };
100
+ this.mutate = {
101
+ setProperty() { }, setAttribute() { }, deleteProperty() { },
102
+ batchBegin() { }, batchEnd() { }, undo() { return false; }, redo() { return false; },
103
+ };
104
+ this.store = this.createStoreAdapter();
105
+ this.spatial = { queryBounds() { return []; }, raycast() { return []; }, queryFrustum() { return []; } };
106
+ this.export = this.createExportAdapter();
107
+ this.lens = { presets() { return []; }, create() { return null; }, activate() { }, deactivate() { }, getActive() { return null; } };
108
+ this.files = { list() { return []; }, text() { return null; }, csv() { return null; }, csvColumns() { return []; } };
109
+ this.schedule = this.createScheduleAdapter();
110
+ }
111
+ subscribe(_event, _handler) {
112
+ return () => { };
113
+ }
114
+ createModelAdapter() {
115
+ const store = this.dataStore;
116
+ const name = this.modelName;
117
+ const id = this.modelId;
118
+ return {
119
+ list() {
120
+ return [{
121
+ id,
122
+ name,
123
+ schema: store.schemaVersion,
124
+ schemaVersion: store.schemaVersion,
125
+ entityCount: store.entityCount,
126
+ fileSize: store.fileSize,
127
+ loadedAt: Date.now(),
128
+ }];
129
+ },
130
+ activeId() { return id; },
131
+ loadIfc() { },
132
+ };
133
+ }
134
+ createQueryAdapter() {
135
+ const store = this.dataStore;
136
+ const id = this.modelId;
137
+ function getEntityData(ref) {
138
+ if (!store.entityIndex.byId.has(ref.expressId))
139
+ return null;
140
+ const node = new EntityNode(store, ref.expressId);
141
+ const type = node.type;
142
+ if (!type || type === 'Unknown')
143
+ return null;
144
+ return {
145
+ ref,
146
+ globalId: node.globalId,
147
+ name: node.name,
148
+ type,
149
+ description: node.description,
150
+ objectType: node.objectType,
151
+ };
152
+ }
153
+ function getProperties(ref) {
154
+ const node = new EntityNode(store, ref.expressId);
155
+ return node.properties().map((pset) => ({
156
+ name: pset.name,
157
+ globalId: pset.globalId,
158
+ properties: pset.properties.map((p) => ({ name: p.name, type: p.type, value: p.value })),
159
+ }));
160
+ }
161
+ function getQuantities(ref) {
162
+ const node = new EntityNode(store, ref.expressId);
163
+ return node.quantities().map((qset) => ({
164
+ name: qset.name,
165
+ quantities: qset.quantities.map((q) => ({ name: q.name, type: q.type, value: q.value })),
166
+ }));
167
+ }
168
+ return {
169
+ entities(descriptor) {
170
+ const results = [];
171
+ let entityIds;
172
+ if (descriptor.types && descriptor.types.length > 0) {
173
+ entityIds = [];
174
+ for (const type of expandTypes(descriptor.types)) {
175
+ const typeIds = store.entityIndex.byType.get(type) ?? [];
176
+ for (const eid of typeIds)
177
+ entityIds.push(eid);
178
+ }
179
+ }
180
+ else {
181
+ entityIds = [];
182
+ for (const [typeName, ids] of store.entityIndex.byType) {
183
+ if (isProductType(typeName)) {
184
+ for (const eid of ids)
185
+ entityIds.push(eid);
186
+ }
187
+ }
188
+ }
189
+ for (const expressId of entityIds) {
190
+ if (expressId === 0)
191
+ continue;
192
+ const node = new EntityNode(store, expressId);
193
+ results.push({
194
+ ref: { modelId: id, expressId },
195
+ globalId: node.globalId,
196
+ name: node.name,
197
+ type: node.type,
198
+ description: node.description,
199
+ objectType: node.objectType,
200
+ });
201
+ }
202
+ let filtered = results;
203
+ if (descriptor.filters && descriptor.filters.length > 0) {
204
+ const propsCache = new Map();
205
+ const cachedProps = (ref) => {
206
+ let cached = propsCache.get(ref.expressId);
207
+ if (!cached) {
208
+ cached = getProperties(ref);
209
+ propsCache.set(ref.expressId, cached);
210
+ }
211
+ return cached;
212
+ };
213
+ for (const filter of descriptor.filters) {
214
+ filtered = filtered.filter((entity) => {
215
+ const props = cachedProps(entity.ref);
216
+ const pset = props.find((p) => p.name === filter.psetName);
217
+ if (!pset)
218
+ return false;
219
+ const prop = pset.properties.find((p) => p.name === filter.propName);
220
+ if (!prop)
221
+ return false;
222
+ if (filter.operator === 'exists')
223
+ return true;
224
+ const v = normalizeBoolean(prop.value);
225
+ const f = normalizeBoolean(filter.value);
226
+ switch (filter.operator) {
227
+ case '=': return String(v) === String(f);
228
+ case '!=': return String(v) !== String(f);
229
+ case '>': return Number(v) > Number(f);
230
+ case '<': return Number(v) < Number(f);
231
+ case '>=': return Number(v) >= Number(f);
232
+ case '<=': return Number(v) <= Number(f);
233
+ case 'contains': return String(v).toLowerCase().includes(String(f).toLowerCase());
234
+ default: return false;
235
+ }
236
+ });
237
+ }
238
+ }
239
+ if (descriptor.offset && descriptor.offset > 0)
240
+ filtered = filtered.slice(descriptor.offset);
241
+ if (descriptor.limit && descriptor.limit > 0)
242
+ filtered = filtered.slice(0, descriptor.limit);
243
+ return filtered;
244
+ },
245
+ entityData: getEntityData,
246
+ attributes(ref) {
247
+ return extractAllEntityAttributes(store, ref.expressId);
248
+ },
249
+ properties: getProperties,
250
+ quantities: getQuantities,
251
+ classifications(ref) {
252
+ return extractClassificationsOnDemand(store, ref.expressId);
253
+ },
254
+ materials(ref) {
255
+ return extractMaterialsOnDemand(store, ref.expressId);
256
+ },
257
+ typeProperties(ref) {
258
+ const info = extractTypePropertiesOnDemand(store, ref.expressId);
259
+ if (!info)
260
+ return null;
261
+ return {
262
+ typeName: info.typeName,
263
+ typeId: info.typeId,
264
+ properties: info.properties.map((pset) => ({
265
+ name: pset.name,
266
+ globalId: pset.globalId,
267
+ properties: pset.properties.map((p) => ({ name: p.name, type: p.type, value: p.value })),
268
+ })),
269
+ };
270
+ },
271
+ documents(ref) {
272
+ return extractDocumentsOnDemand(store, ref.expressId);
273
+ },
274
+ relationships(ref) {
275
+ return extractRelationshipsOnDemand(store, ref.expressId);
276
+ },
277
+ related(ref, relType, direction) {
278
+ const relEnum = REL_TYPE_MAP[relType];
279
+ if (relEnum === undefined)
280
+ return [];
281
+ const targets = store.relationships.getRelated(ref.expressId, relEnum, direction);
282
+ return targets.map((expressId) => ({ modelId: ref.modelId, expressId }));
283
+ },
284
+ };
285
+ }
286
+ createSelectionAdapter() {
287
+ let selection = [];
288
+ return {
289
+ get() { return selection; },
290
+ set(refs) { selection = refs; },
291
+ };
292
+ }
293
+ getOrCreateStoreEditor() {
294
+ if (this.storeEditor)
295
+ return this.storeEditor;
296
+ this.mutationView = new MutablePropertyView(this.dataStore.properties || null, this.modelId);
297
+ this.storeEditor = new StoreEditor(this.dataStore, this.mutationView);
298
+ return this.storeEditor;
299
+ }
300
+ /** Expose the mutation view so tools can inspect pending mutations. */
301
+ getMutationView() {
302
+ return this.mutationView;
303
+ }
304
+ /** Force creation of the editor (used by mutation tools that always need it). */
305
+ ensureEditor() {
306
+ return this.getOrCreateStoreEditor();
307
+ }
308
+ /** Replace the viewer/visibility adapters at runtime (for ViewerManager). */
309
+ attachStreamingAdapters(viewer, visibility) {
310
+ this.viewer = viewer;
311
+ this.visibility = visibility;
312
+ }
313
+ /** Restore no-op viewer/visibility adapters (for ViewerManager close). */
314
+ detachStreamingAdapters() {
315
+ this.viewer = {
316
+ colorize() { }, colorizeAll() { }, resetColors() { },
317
+ flyTo() { }, setSection() { }, getSection() { return null; },
318
+ setCamera() { }, getCamera() { return { mode: 'perspective' }; },
319
+ };
320
+ this.visibility = { hide() { }, show() { }, isolate() { }, reset() { } };
321
+ }
322
+ createStoreAdapter() {
323
+ const get = () => this.getOrCreateStoreEditor();
324
+ return {
325
+ addEntity: (modelId, def) => {
326
+ const ref = get().addEntity(def.type, def.attributes);
327
+ return { modelId, expressId: ref.expressId };
328
+ },
329
+ removeEntity: (ref) => get().removeEntity(ref.expressId),
330
+ setPositionalAttribute: (ref, index, value) => {
331
+ get().setPositionalAttribute(ref.expressId, index, value);
332
+ },
333
+ // The element-creation helpers (addWall, addSlab, …) are not used by the
334
+ // MCP server in v0.1 — agent flows go through entity_create with raw
335
+ // attributes. Stubs throw so a misconfigured caller fails loudly.
336
+ addColumn: () => { throw new Error('addColumn not supported in MCP v0.1; use entity_create'); },
337
+ addWall: () => { throw new Error('addWall not supported in MCP v0.1; use entity_create'); },
338
+ addSlab: () => { throw new Error('addSlab not supported in MCP v0.1; use entity_create'); },
339
+ addBeam: () => { throw new Error('addBeam not supported in MCP v0.1; use entity_create'); },
340
+ addDoor: () => { throw new Error('addDoor not supported in MCP v0.1; use entity_create'); },
341
+ addWindow: () => { throw new Error('addWindow not supported in MCP v0.1; use entity_create'); },
342
+ addSpace: () => { throw new Error('addSpace not supported in MCP v0.1; use entity_create'); },
343
+ addRoof: () => { throw new Error('addRoof not supported in MCP v0.1; use entity_create'); },
344
+ addPlate: () => { throw new Error('addPlate not supported in MCP v0.1; use entity_create'); },
345
+ addMember: () => { throw new Error('addMember not supported in MCP v0.1; use entity_create'); },
346
+ };
347
+ }
348
+ createExportAdapter() {
349
+ const store = this.dataStore;
350
+ const queryAdapter = this.query;
351
+ const escapeCsv = (value, sep) => {
352
+ if (value.includes(sep) || value.includes('"') || value.includes('\n')) {
353
+ return `"${value.replace(/"/g, '""')}"`;
354
+ }
355
+ return value;
356
+ };
357
+ const resolveColumn = (data, col, props, qsets) => {
358
+ if (col === 'Name' || col === 'name')
359
+ return data.name;
360
+ if (col === 'Type' || col === 'type')
361
+ return data.type;
362
+ if (col === 'GlobalId' || col === 'globalId')
363
+ return data.globalId;
364
+ if (col === 'Description' || col === 'description')
365
+ return data.description;
366
+ if (col === 'ObjectType' || col === 'objectType')
367
+ return data.objectType;
368
+ const dot = col.indexOf('.');
369
+ if (dot > 0) {
370
+ const setName = col.slice(0, dot);
371
+ const valueName = col.slice(dot + 1);
372
+ if (props) {
373
+ const pset = props.find((p) => p.name === setName);
374
+ if (pset) {
375
+ const prop = pset.properties.find((p) => p.name === valueName);
376
+ if (prop?.value != null)
377
+ return String(prop.value);
378
+ }
379
+ }
380
+ if (qsets) {
381
+ const qset = qsets.find((q) => q.name === setName);
382
+ if (qset) {
383
+ const qty = qset.quantities.find((q) => q.name === valueName);
384
+ if (qty?.value != null)
385
+ return String(qty.value);
386
+ }
387
+ }
388
+ }
389
+ return '';
390
+ };
391
+ return {
392
+ csv(refs, options) {
393
+ const entityRefs = refs;
394
+ const opts = options;
395
+ const sep = opts.separator ?? ',';
396
+ const hasDot = opts.columns.some((c) => c.indexOf('.') > 0);
397
+ const rows = [opts.columns];
398
+ for (const ref of entityRefs) {
399
+ const data = queryAdapter.entityData(ref);
400
+ if (!data)
401
+ continue;
402
+ const props = hasDot ? queryAdapter.properties(ref) : null;
403
+ const qsets = hasDot ? queryAdapter.quantities(ref) : null;
404
+ rows.push(opts.columns.map((c) => resolveColumn(data, c, props, qsets)));
405
+ }
406
+ return rows.map((r) => r.map((c) => escapeCsv(c, sep)).join(sep)).join('\n');
407
+ },
408
+ json(refs, columns) {
409
+ const entityRefs = refs;
410
+ const cols = columns;
411
+ const hasDot = cols.some((c) => c.indexOf('.') > 0);
412
+ const result = [];
413
+ for (const ref of entityRefs) {
414
+ const data = queryAdapter.entityData(ref);
415
+ if (!data)
416
+ continue;
417
+ const props = hasDot ? queryAdapter.properties(ref) : null;
418
+ const qsets = hasDot ? queryAdapter.quantities(ref) : null;
419
+ const row = {};
420
+ for (const col of cols) {
421
+ const v = resolveColumn(data, col, props, qsets);
422
+ row[col] = v || null;
423
+ }
424
+ result.push(row);
425
+ }
426
+ return result;
427
+ },
428
+ ifc: (refs, options) => {
429
+ const entityRefs = refs;
430
+ const opts = (options ?? {});
431
+ const schema = opts.schema ?? store.schemaVersion ?? 'IFC4';
432
+ const exportOpts = { schema };
433
+ if (entityRefs && entityRefs.length > 0) {
434
+ const isolatedIds = new Set(entityRefs.map((r) => r.expressId));
435
+ exportOpts.visibleOnly = true;
436
+ exportOpts.isolatedEntityIds = isolatedIds;
437
+ exportOpts.hiddenEntityIds = new Set();
438
+ }
439
+ if (this.mutationView) {
440
+ const exporter = new StepExporter(store, this.mutationView);
441
+ const result = exporter.export({ schema, ...exportOpts });
442
+ return new TextDecoder().decode(result.content);
443
+ }
444
+ return exportToStep(store, exportOpts);
445
+ },
446
+ download() { },
447
+ };
448
+ }
449
+ createScheduleAdapter() {
450
+ const store = this.dataStore;
451
+ const id = this.modelId;
452
+ let cached = null;
453
+ const assert = (modelId) => {
454
+ if (modelId && modelId !== id) {
455
+ throw new Error(`Unknown modelId '${modelId}' — this backend only has '${id}'`);
456
+ }
457
+ };
458
+ const extract = (modelId) => {
459
+ assert(modelId);
460
+ if (!cached)
461
+ cached = extractScheduleOnDemand(store);
462
+ return cached;
463
+ };
464
+ return {
465
+ data: (m) => extract(m),
466
+ tasks: (m) => extract(m).tasks,
467
+ workSchedules: (m) => extract(m).workSchedules,
468
+ sequences: (m) => extract(m).sequences,
469
+ };
470
+ }
471
+ }
472
+ //# sourceMappingURL=headless-backend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"headless-backend.js","sourceRoot":"","sources":["../src/headless-backend.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AA6C/D,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACtF,OAAO,EACL,0BAA0B,EAC1B,8BAA8B,EAC9B,wBAAwB,EACxB,6BAA6B,EAC7B,wBAAwB,EACxB,4BAA4B,EAC5B,uBAAuB,GACxB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,YAAY,EAA0B,MAAM,kBAAkB,CAAC;AAEtF,MAAM,YAAY,GAAqC;IACrD,iCAAiC,EAAE,gBAAgB,CAAC,gBAAgB;IACpE,gBAAgB,EAAE,gBAAgB,CAAC,UAAU;IAC7C,mBAAmB,EAAE,gBAAgB,CAAC,aAAa;IACnD,kBAAkB,EAAE,gBAAgB,CAAC,YAAY;IACjD,kBAAkB,EAAE,gBAAgB,CAAC,YAAY;CAClD,CAAC;AAEF,MAAM,YAAY,GAA6B;IAC7C,OAAO,EAAE,CAAC,qBAAqB,EAAE,sBAAsB,CAAC;IACxD,OAAO,EAAE,CAAC,qBAAqB,CAAC;IAChC,SAAS,EAAE,CAAC,uBAAuB,CAAC;IACpC,OAAO,EAAE,CAAC,qBAAqB,CAAC;IAChC,SAAS,EAAE,CAAC,uBAAuB,CAAC;IACpC,OAAO,EAAE,CAAC,qBAAqB,EAAE,sBAAsB,CAAC;IACxD,SAAS,EAAE,CAAC,uBAAuB,CAAC;IACpC,QAAQ,EAAE,CAAC,sBAAsB,CAAC;IAClC,iBAAiB,EAAE,CAAC,wBAAwB,CAAC;CAC9C,CAAC;AAEF,MAAM,UAAU,WAAW,CAAC,KAAe;IACzC,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACjC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnB,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;QACrC,IAAI,QAAQ;YAAE,KAAK,MAAM,GAAG,IAAI,QAAQ;gBAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,MAAM,OAAO,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAC5C,IAAI,OAAO,KAAK,WAAW,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAClD,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IACjC,IAAI,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,KAAK,CAAC;IAC7C,IAAI,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC;QAAE,OAAO,KAAK,CAAC;IAClD,IAAI,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC;QAAE,OAAO,KAAK,CAAC;IAClD,IAAI,KAAK,KAAK,oBAAoB;QAAE,OAAO,KAAK,CAAC;IACjD,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,KAAK,CAAC;IACzC,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAc;IACtC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,MAAM;QAAE,OAAO,MAAM,CAAC;IAC7F,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,OAAO;QAAE,OAAO,OAAO,CAAC;IACjG,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,OAAO,mBAAmB;IACrB,KAAK,CAAsB;IAC3B,KAAK,CAAsB;IAC3B,SAAS,CAA0B;IAC5C;;;;;OAKG;IACH,UAAU,CAA2B;IACrC,MAAM,CAAuB;IACpB,MAAM,CAAuB;IAC7B,KAAK,CAAsB;IAC3B,OAAO,CAAwB;IAC/B,MAAM,CAAuB;IAC7B,IAAI,CAAqB;IACzB,KAAK,CAAsB;IAC3B,QAAQ,CAAyB;IAElC,SAAS,CAAe;IACxB,SAAS,CAAS;IAClB,OAAO,CAAS;IAChB,YAAY,GAA+B,IAAI,CAAC;IAChD,WAAW,GAAuB,IAAI,CAAC;IAE/C,YAAY,KAAmB,EAAE,SAAiB,EAAE,OAAe;QACjE,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACvC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACvC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC/C,IAAI,CAAC,UAAU,GAAG,EAAE,IAAI,KAAI,CAAC,EAAE,IAAI,KAAI,CAAC,EAAE,OAAO,KAAI,CAAC,EAAE,KAAK,KAAI,CAAC,EAAE,CAAC;QACrE,IAAI,CAAC,MAAM,GAAG;YACZ,QAAQ,KAAI,CAAC,EAAE,WAAW,KAAI,CAAC,EAAE,WAAW,KAAI,CAAC;YACjD,KAAK,KAAI,CAAC,EAAE,UAAU,KAAI,CAAC,EAAE,UAAU,KAAK,OAAO,IAAI,CAAC,CAAC,CAAC;YAC1D,SAAS,KAAI,CAAC,EAAE,SAAS,KAAK,OAAO,EAAE,IAAI,EAAE,aAAsB,EAAE,CAAC,CAAC,CAAC;SACzE,CAAC;QACF,IAAI,CAAC,MAAM,GAAG;YACZ,WAAW,KAAI,CAAC,EAAE,YAAY,KAAI,CAAC,EAAE,cAAc,KAAI,CAAC;YACxD,UAAU,KAAI,CAAC,EAAE,QAAQ,KAAI,CAAC,EAAE,IAAI,KAAK,OAAO,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,OAAO,KAAK,CAAC,CAAC,CAAC;SACnF,CAAC;QACF,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACvC,IAAI,CAAC,OAAO,GAAG,EAAE,WAAW,KAAK,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,KAAK,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,KAAK,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACzC,IAAI,CAAC,IAAI,GAAG,EAAE,OAAO,KAAK,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,KAAK,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,KAAI,CAAC,EAAE,UAAU,KAAI,CAAC,EAAE,SAAS,KAAK,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QAClI,IAAI,CAAC,KAAK,GAAG,EAAE,IAAI,KAAK,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,UAAU,KAAK,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrH,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC/C,CAAC;IAED,SAAS,CAAC,MAAoB,EAAE,QAAiC;QAC/D,OAAO,GAAG,EAAE,GAAE,CAAC,CAAC;IAClB,CAAC;IAEO,kBAAkB;QACxB,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC;QAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;QAC5B,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;QACxB,OAAO;YACL,IAAI;gBACF,OAAO,CAAC;wBACN,EAAE;wBACF,IAAI;wBACJ,MAAM,EAAE,KAAK,CAAC,aAAa;wBAC3B,aAAa,EAAE,KAAK,CAAC,aAAa;wBAClC,WAAW,EAAE,KAAK,CAAC,WAAW;wBAC9B,QAAQ,EAAE,KAAK,CAAC,QAAQ;wBACxB,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE;qBACrB,CAAC,CAAC;YACL,CAAC;YACD,QAAQ,KAAK,OAAO,EAAE,CAAC,CAAC,CAAC;YACzB,OAAO,KAA6B,CAAC;SACtC,CAAC;IACJ,CAAC;IAEO,kBAAkB;QACxB,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC;QAC7B,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;QAExB,SAAS,aAAa,CAAC,GAAc;YACnC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC;gBAAE,OAAO,IAAI,CAAC;YAC5D,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,KAAK,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;YAClD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YACvB,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,SAAS;gBAAE,OAAO,IAAI,CAAC;YAC7C,OAAO;gBACL,GAAG;gBACH,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,IAAI;gBACJ,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,UAAU,EAAE,IAAI,CAAC,UAAU;aAC5B,CAAC;QACJ,CAAC;QAED,SAAS,aAAa,CAAC,GAAc;YACnC,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,KAAK,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;YAClD,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBACtC,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;aACzF,CAAC,CAAC,CAAC;QACN,CAAC;QAED,SAAS,aAAa,CAAC,GAAc;YACnC,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,KAAK,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;YAClD,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBACtC,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;aACzF,CAAC,CAAC,CAAC;QACN,CAAC;QAED,OAAO;YACL,QAAQ,CAAC,UAA2B;gBAClC,MAAM,OAAO,GAAiB,EAAE,CAAC;gBACjC,IAAI,SAAmB,CAAC;gBACxB,IAAI,UAAU,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACpD,SAAS,GAAG,EAAE,CAAC;oBACf,KAAK,MAAM,IAAI,IAAI,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;wBACjD,MAAM,OAAO,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;wBACzD,KAAK,MAAM,GAAG,IAAI,OAAO;4BAAE,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACjD,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,SAAS,GAAG,EAAE,CAAC;oBACf,KAAK,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;wBACvD,IAAI,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;4BAC5B,KAAK,MAAM,GAAG,IAAI,GAAG;gCAAE,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;wBAC7C,CAAC;oBACH,CAAC;gBACH,CAAC;gBACD,KAAK,MAAM,SAAS,IAAI,SAAS,EAAE,CAAC;oBAClC,IAAI,SAAS,KAAK,CAAC;wBAAE,SAAS;oBAC9B,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;oBAC9C,OAAO,CAAC,IAAI,CAAC;wBACX,GAAG,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE;wBAC/B,QAAQ,EAAE,IAAI,CAAC,QAAQ;wBACvB,IAAI,EAAE,IAAI,CAAC,IAAI;wBACf,IAAI,EAAE,IAAI,CAAC,IAAI;wBACf,WAAW,EAAE,IAAI,CAAC,WAAW;wBAC7B,UAAU,EAAE,IAAI,CAAC,UAAU;qBAC5B,CAAC,CAAC;gBACL,CAAC;gBACD,IAAI,QAAQ,GAAG,OAAO,CAAC;gBACvB,IAAI,UAAU,CAAC,OAAO,IAAI,UAAU,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACxD,MAAM,UAAU,GAAG,IAAI,GAAG,EAA6B,CAAC;oBACxD,MAAM,WAAW,GAAG,CAAC,GAAc,EAAqB,EAAE;wBACxD,IAAI,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;wBAC3C,IAAI,CAAC,MAAM,EAAE,CAAC;4BACZ,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;4BAC5B,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;wBACxC,CAAC;wBACD,OAAO,MAAM,CAAC;oBAChB,CAAC,CAAC;oBACF,KAAK,MAAM,MAAM,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;wBACxC,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE;4BACpC,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;4BACtC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,QAAQ,CAAC,CAAC;4BAC3D,IAAI,CAAC,IAAI;gCAAE,OAAO,KAAK,CAAC;4BACxB,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,QAAQ,CAAC,CAAC;4BACrE,IAAI,CAAC,IAAI;gCAAE,OAAO,KAAK,CAAC;4BACxB,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ;gCAAE,OAAO,IAAI,CAAC;4BAC9C,MAAM,CAAC,GAAG,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;4BACvC,MAAM,CAAC,GAAG,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;4BACzC,QAAQ,MAAM,CAAC,QAAQ,EAAE,CAAC;gCACxB,KAAK,GAAG,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC;gCACzC,KAAK,IAAI,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC;gCAC1C,KAAK,GAAG,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;gCACvC,KAAK,GAAG,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;gCACvC,KAAK,IAAI,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;gCACzC,KAAK,IAAI,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;gCACzC,KAAK,UAAU,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;gCAClF,OAAO,CAAC,CAAC,OAAO,KAAK,CAAC;4BACxB,CAAC;wBACH,CAAC,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;gBACD,IAAI,UAAU,CAAC,MAAM,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC;oBAAE,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;gBAC7F,IAAI,UAAU,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK,GAAG,CAAC;oBAAE,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;gBAC7F,OAAO,QAAQ,CAAC;YAClB,CAAC;YACD,UAAU,EAAE,aAAa;YACzB,UAAU,CAAC,GAAc;gBACvB,OAAO,0BAA0B,CAAC,KAAK,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;YAC1D,CAAC;YACD,UAAU,EAAE,aAAa;YACzB,UAAU,EAAE,aAAa;YACzB,eAAe,CAAC,GAAc;gBAC5B,OAAO,8BAA8B,CAAC,KAAK,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;YAC9D,CAAC;YACD,SAAS,CAAC,GAAc;gBACtB,OAAO,wBAAwB,CAAC,KAAK,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;YACxD,CAAC;YACD,cAAc,CAAC,GAAc;gBAC3B,MAAM,IAAI,GAAG,6BAA6B,CAAC,KAAK,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;gBACjE,IAAI,CAAC,IAAI;oBAAE,OAAO,IAAI,CAAC;gBACvB,OAAO;oBACL,QAAQ,EAAE,IAAI,CAAC,QAAQ;oBACvB,MAAM,EAAE,IAAI,CAAC,MAAM;oBACnB,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;wBACzC,IAAI,EAAE,IAAI,CAAC,IAAI;wBACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;wBACvB,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,KAAyC,EAAE,CAAC,CAAC;qBAC7H,CAAC,CAAC;iBACJ,CAAC;YACJ,CAAC;YACD,SAAS,CAAC,GAAc;gBACtB,OAAO,wBAAwB,CAAC,KAAK,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;YACxD,CAAC;YACD,aAAa,CAAC,GAAc;gBAC1B,OAAO,4BAA4B,CAAC,KAAK,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;YAC5D,CAAC;YACD,OAAO,CAAC,GAAc,EAAE,OAAe,EAAE,SAAgC;gBACvE,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;gBACtC,IAAI,OAAO,KAAK,SAAS;oBAAE,OAAO,EAAE,CAAC;gBACrC,MAAM,OAAO,GAAG,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;gBAClF,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,SAAiB,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;YACnF,CAAC;SACF,CAAC;IACJ,CAAC;IAEO,sBAAsB;QAC5B,IAAI,SAAS,GAAgB,EAAE,CAAC;QAChC,OAAO;YACL,GAAG,KAAK,OAAO,SAAS,CAAC,CAAC,CAAC;YAC3B,GAAG,CAAC,IAAiB,IAAI,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC;SAC7C,CAAC;IACJ,CAAC;IAEO,sBAAsB;QAC5B,IAAI,IAAI,CAAC,WAAW;YAAE,OAAO,IAAI,CAAC,WAAW,CAAC;QAC9C,IAAI,CAAC,YAAY,GAAG,IAAI,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,IAAI,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC7F,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QACtE,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED,uEAAuE;IACvE,eAAe;QACb,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED,iFAAiF;IACjF,YAAY;QACV,OAAO,IAAI,CAAC,sBAAsB,EAAE,CAAC;IACvC,CAAC;IAED,6EAA6E;IAC7E,uBAAuB,CAAC,MAA4B,EAAE,UAAoC;QACxF,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED,0EAA0E;IAC1E,uBAAuB;QACrB,IAAI,CAAC,MAAM,GAAG;YACZ,QAAQ,KAAI,CAAC,EAAE,WAAW,KAAI,CAAC,EAAE,WAAW,KAAI,CAAC;YACjD,KAAK,KAAI,CAAC,EAAE,UAAU,KAAI,CAAC,EAAE,UAAU,KAAK,OAAO,IAAI,CAAC,CAAC,CAAC;YAC1D,SAAS,KAAI,CAAC,EAAE,SAAS,KAAK,OAAO,EAAE,IAAI,EAAE,aAAsB,EAAE,CAAC,CAAC,CAAC;SACzE,CAAC;QACF,IAAI,CAAC,UAAU,GAAG,EAAE,IAAI,KAAI,CAAC,EAAE,IAAI,KAAI,CAAC,EAAE,OAAO,KAAI,CAAC,EAAE,KAAK,KAAI,CAAC,EAAE,CAAC;IACvE,CAAC;IAEO,kBAAkB;QACxB,MAAM,GAAG,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAChD,OAAO;YACL,SAAS,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,EAAE;gBAC1B,MAAM,GAAG,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,UAAqD,CAAC,CAAC;gBACjG,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,CAAC;YAC/C,CAAC;YACD,YAAY,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC;YACxD,sBAAsB,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;gBAC5C,GAAG,EAAE,CAAC,sBAAsB,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,EAAE,KAA6D,CAAC,CAAC;YACpH,CAAC;YACD,yEAAyE;YACzE,qEAAqE;YACrE,kEAAkE;YAClE,SAAS,EAAE,GAAG,EAAE,GAAG,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC,CAAC,CAAC;YAC/F,OAAO,EAAE,GAAG,EAAE,GAAG,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC,CAAC,CAAC;YAC3F,OAAO,EAAE,GAAG,EAAE,GAAG,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC,CAAC,CAAC;YAC3F,OAAO,EAAE,GAAG,EAAE,GAAG,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC,CAAC,CAAC;YAC3F,OAAO,EAAE,GAAG,EAAE,GAAG,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC,CAAC,CAAC;YAC3F,SAAS,EAAE,GAAG,EAAE,GAAG,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC,CAAC,CAAC;YAC/F,QAAQ,EAAE,GAAG,EAAE,GAAG,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC,CAAC,CAAC;YAC7F,OAAO,EAAE,GAAG,EAAE,GAAG,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC,CAAC,CAAC;YAC3F,QAAQ,EAAE,GAAG,EAAE,GAAG,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC,CAAC,CAAC;YAC7F,SAAS,EAAE,GAAG,EAAE,GAAG,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC,CAAC,CAAC;SAChG,CAAC;IACJ,CAAC;IAEO,mBAAmB;QACzB,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC;QAC7B,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC;QAEhC,MAAM,SAAS,GAAG,CAAC,KAAa,EAAE,GAAW,EAAU,EAAE;YACvD,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBACvE,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC;YAC1C,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC,CAAC;QAEF,MAAM,aAAa,GAAG,CACpB,IAAgB,EAChB,GAAW,EACX,KAA+B,EAC/B,KAA+B,EACvB,EAAE;YACV,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,MAAM;gBAAE,OAAO,IAAI,CAAC,IAAI,CAAC;YACvD,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,MAAM;gBAAE,OAAO,IAAI,CAAC,IAAI,CAAC;YACvD,IAAI,GAAG,KAAK,UAAU,IAAI,GAAG,KAAK,UAAU;gBAAE,OAAO,IAAI,CAAC,QAAQ,CAAC;YACnE,IAAI,GAAG,KAAK,aAAa,IAAI,GAAG,KAAK,aAAa;gBAAE,OAAO,IAAI,CAAC,WAAW,CAAC;YAC5E,IAAI,GAAG,KAAK,YAAY,IAAI,GAAG,KAAK,YAAY;gBAAE,OAAO,IAAI,CAAC,UAAU,CAAC;YACzE,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAC7B,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;gBACZ,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;gBAClC,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;gBACrC,IAAI,KAAK,EAAE,CAAC;oBACV,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;oBACnD,IAAI,IAAI,EAAE,CAAC;wBACT,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;wBAC/D,IAAI,IAAI,EAAE,KAAK,IAAI,IAAI;4BAAE,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBACrD,CAAC;gBACH,CAAC;gBACD,IAAI,KAAK,EAAE,CAAC;oBACV,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;oBACnD,IAAI,IAAI,EAAE,CAAC;wBACT,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;wBAC9D,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI;4BAAE,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;oBACnD,CAAC;gBACH,CAAC;YACH,CAAC;YACD,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC;QAEF,OAAO;YACL,GAAG,CAAC,IAAI,EAAE,OAAO;gBACf,MAAM,UAAU,GAAG,IAAmB,CAAC;gBACvC,MAAM,IAAI,GAAG,OAAoD,CAAC;gBAClE,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,IAAI,GAAG,CAAC;gBAClC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC5D,MAAM,IAAI,GAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACxC,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;oBAC7B,MAAM,IAAI,GAAG,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;oBAC1C,IAAI,CAAC,IAAI;wBAAE,SAAS;oBACpB,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;oBAC3D,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;oBAC3D,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC3E,CAAC;gBACD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/E,CAAC;YACD,IAAI,CAAC,IAAI,EAAE,OAAO;gBAChB,MAAM,UAAU,GAAG,IAAmB,CAAC;gBACvC,MAAM,IAAI,GAAG,OAAmB,CAAC;gBACjC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;gBACpD,MAAM,MAAM,GAA8B,EAAE,CAAC;gBAC7C,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;oBAC7B,MAAM,IAAI,GAAG,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;oBAC1C,IAAI,CAAC,IAAI;wBAAE,SAAS;oBACpB,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;oBAC3D,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;oBAC3D,MAAM,GAAG,GAA4B,EAAE,CAAC;oBACxC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;wBACvB,MAAM,CAAC,GAAG,aAAa,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;wBACjD,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC;oBACvB,CAAC;oBACD,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACnB,CAAC;gBACD,OAAO,MAAM,CAAC;YAChB,CAAC;YACD,GAAG,EAAE,CAAC,IAAI,EAAE,OAAO,EAAU,EAAE;gBAC7B,MAAM,UAAU,GAAG,IAAmB,CAAC;gBACvC,MAAM,IAAI,GAAG,CAAC,OAAO,IAAI,EAAE,CAA4B,CAAC;gBACxD,MAAM,MAAM,GAAI,IAAI,CAAC,MAAuC,IAAI,KAAK,CAAC,aAAa,IAAI,MAAM,CAAC;gBAC9F,MAAM,UAAU,GAA+B,EAAE,MAAM,EAAE,CAAC;gBAC1D,IAAI,UAAU,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACxC,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;oBAChE,UAAU,CAAC,WAAW,GAAG,IAAI,CAAC;oBAC9B,UAAU,CAAC,iBAAiB,GAAG,WAAW,CAAC;oBAC3C,UAAU,CAAC,eAAe,GAAG,IAAI,GAAG,EAAU,CAAC;gBACjD,CAAC;gBACD,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;oBACtB,MAAM,QAAQ,GAAG,IAAI,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;oBAC5D,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,UAAU,EAAE,CAAC,CAAC;oBAC1D,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBAClD,CAAC;gBACD,OAAO,YAAY,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;YACzC,CAAC;YACD,QAAQ,KAA8E,CAAC;SACxF,CAAC;IACJ,CAAC;IAEO,qBAAqB;QAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC;QAC7B,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;QACxB,IAAI,MAAM,GAAsD,IAAI,CAAC;QACrE,MAAM,MAAM,GAAG,CAAC,OAAgB,EAAQ,EAAE;YACxC,IAAI,OAAO,IAAI,OAAO,KAAK,EAAE,EAAE,CAAC;gBAC9B,MAAM,IAAI,KAAK,CAAC,oBAAoB,OAAO,8BAA8B,EAAE,GAAG,CAAC,CAAC;YAClF,CAAC;QACH,CAAC,CAAC;QACF,MAAM,OAAO,GAAG,CAAC,OAAgB,EAA8C,EAAE;YAC/E,MAAM,CAAC,OAAO,CAAC,CAAC;YAChB,IAAI,CAAC,MAAM;gBAAE,MAAM,GAAG,uBAAuB,CAAC,KAAK,CAA+C,CAAC;YACnG,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC;QACF,OAAO;YACL,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;YACvB,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK;YAC9B,aAAa,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,aAAa;YAC9C,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS;SACvC,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * @ifc-lite/mcp — Model Context Protocol server for ifc-lite.
3
+ *
4
+ * Public surface:
5
+ * - createMCPServer({ ... }) — build an MCPServer with sane defaults.
6
+ * - StdioTransport / HttpTransport / InProcessTransport — wire I/O.
7
+ * - loadIfcModel(path) — parse a file into a LoadedModel for the registry.
8
+ */
9
+ export { MCPServer, SERVER_NAME } from './server.js';
10
+ export type { MCPServerOptions, OutgoingMessageSink } from './server.js';
11
+ export type { LoadedModel, ModelRegistry, ServerConfig, ToolContext, Logger, ProgressReporter } from './context.js';
12
+ export { InMemoryModelRegistry, NOOP_PROGRESS, SILENT_LOGGER, DEFAULT_CONFIG } from './context.js';
13
+ export { ToolErrorCode, ToolExecutionError, toolError } from './errors.js';
14
+ export type { ToolErrorCodeValue, ToolErrorOptions } from './errors.js';
15
+ export * from './protocol/index.js';
16
+ export * from './auth/index.js';
17
+ export { ToolRegistry, buildDefaultToolRegistry } from './tools/index.js';
18
+ export type { Tool } from './tools/index.js';
19
+ export { ResourceRegistry, buildDefaultResourceRegistry } from './resources/index.js';
20
+ export type { ResourceProvider } from './resources/index.js';
21
+ export { PromptRegistry, buildDefaultPromptRegistry } from './prompts/index.js';
22
+ export type { Prompt } from './prompts/index.js';
23
+ export { StdioTransport } from './transport/stdio.js';
24
+ export { InProcessTransport } from './transport/in-process.js';
25
+ export { HttpTransport, BearerTokenAuth, AllowAllAuth } from './transport/http.js';
26
+ export type { HttpTransportOptions, HttpAuthenticator, SessionFactory } from './transport/http.js';
27
+ export { loadIfcModel } from './loader.js';
28
+ export type { LoadIfcOptions } from './loader.js';
29
+ export { HeadlessLikeBackend } from './headless-backend.js';
30
+ export { ViewerManager } from './viewer-manager.js';
31
+ export type { ViewerState, SelectionEvent, SelectionListener } from './viewer-manager.js';
32
+ import { MCPServer, type MCPServerOptions } from './server.js';
33
+ export declare const VERSION = "0.1.0";
34
+ /**
35
+ * Build an MCPServer pre-loaded with every tool/resource/prompt category.
36
+ * The caller can still pass a custom `ToolRegistry`, etc., to override.
37
+ */
38
+ export declare function createMCPServer(opts?: Partial<MCPServerOptions>): MCPServer;
39
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA;;;;;;;GAOG;AAEH,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACrD,YAAY,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAEzE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACpH,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnG,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC3E,YAAY,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAExE,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAEhC,OAAO,EAAE,YAAY,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAC1E,YAAY,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAE7C,OAAO,EAAE,gBAAgB,EAAE,4BAA4B,EAAE,MAAM,sBAAsB,CAAC;AACtF,YAAY,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAE7D,OAAO,EAAE,cAAc,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAChF,YAAY,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAEjD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnF,YAAY,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAEnG,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE1F,OAAO,EAAE,SAAS,EAAE,KAAK,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAK/D,eAAO,MAAM,OAAO,UAAU,CAAC;AAE/B;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,GAAE,OAAO,CAAC,gBAAgB,CAAM,GAAG,SAAS,CAa/E"}
package/dist/index.js ADDED
@@ -0,0 +1,49 @@
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
+ * @ifc-lite/mcp — Model Context Protocol server for ifc-lite.
6
+ *
7
+ * Public surface:
8
+ * - createMCPServer({ ... }) — build an MCPServer with sane defaults.
9
+ * - StdioTransport / HttpTransport / InProcessTransport — wire I/O.
10
+ * - loadIfcModel(path) — parse a file into a LoadedModel for the registry.
11
+ */
12
+ export { MCPServer, SERVER_NAME } from './server.js';
13
+ export { InMemoryModelRegistry, NOOP_PROGRESS, SILENT_LOGGER, DEFAULT_CONFIG } from './context.js';
14
+ export { ToolErrorCode, ToolExecutionError, toolError } from './errors.js';
15
+ export * from './protocol/index.js';
16
+ export * from './auth/index.js';
17
+ export { ToolRegistry, buildDefaultToolRegistry } from './tools/index.js';
18
+ export { ResourceRegistry, buildDefaultResourceRegistry } from './resources/index.js';
19
+ export { PromptRegistry, buildDefaultPromptRegistry } from './prompts/index.js';
20
+ export { StdioTransport } from './transport/stdio.js';
21
+ export { InProcessTransport } from './transport/in-process.js';
22
+ export { HttpTransport, BearerTokenAuth, AllowAllAuth } from './transport/http.js';
23
+ export { loadIfcModel } from './loader.js';
24
+ export { HeadlessLikeBackend } from './headless-backend.js';
25
+ export { ViewerManager } from './viewer-manager.js';
26
+ import { MCPServer } from './server.js';
27
+ import { buildDefaultToolRegistry } from './tools/index.js';
28
+ import { buildDefaultResourceRegistry } from './resources/index.js';
29
+ import { buildDefaultPromptRegistry } from './prompts/index.js';
30
+ export const VERSION = '0.1.0';
31
+ /**
32
+ * Build an MCPServer pre-loaded with every tool/resource/prompt category.
33
+ * The caller can still pass a custom `ToolRegistry`, etc., to override.
34
+ */
35
+ export function createMCPServer(opts = {}) {
36
+ return new MCPServer({
37
+ name: opts.name ?? 'ifc-lite',
38
+ version: opts.version ?? VERSION,
39
+ registry: opts.registry,
40
+ scope: opts.scope,
41
+ config: opts.config,
42
+ logger: opts.logger,
43
+ capabilities: opts.capabilities,
44
+ tools: opts.tools ?? buildDefaultToolRegistry(),
45
+ resources: opts.resources ?? buildDefaultResourceRegistry(),
46
+ prompts: opts.prompts ?? buildDefaultPromptRegistry(),
47
+ });
48
+ }
49
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D;;;;;;;GAOG;AAEH,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAIrD,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnG,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAG3E,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAEhC,OAAO,EAAE,YAAY,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAG1E,OAAO,EAAE,gBAAgB,EAAE,4BAA4B,EAAE,MAAM,sBAAsB,CAAC;AAGtF,OAAO,EAAE,cAAc,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAGhF,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGnF,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGpD,OAAO,EAAE,SAAS,EAAyB,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,4BAA4B,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAEhE,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC;AAE/B;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,OAAkC,EAAE;IAClE,OAAO,IAAI,SAAS,CAAC;QACnB,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,UAAU;QAC7B,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,OAAO;QAChC,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,wBAAwB,EAAE;QAC/C,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,4BAA4B,EAAE;QAC3D,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,0BAA0B,EAAE;KACtD,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { LoadedModel } from './context.js';
2
+ export interface LoadIfcOptions {
3
+ /** Override the registered model ID (default = file basename without extension). */
4
+ modelId?: string;
5
+ /** Restrict reads to these absolute path prefixes. Used by the stdio CLI. */
6
+ allowedPaths?: string[];
7
+ }
8
+ export declare function loadIfcModel(filePath: string, opts?: LoadIfcOptions): Promise<LoadedModel>;
9
+ //# sourceMappingURL=loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGhD,MAAM,WAAW,cAAc;IAC7B,oFAAoF;IACpF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6EAA6E;IAC7E,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,GAAE,cAAmB,GAAG,OAAO,CAAC,WAAW,CAAC,CAqDpG"}