@classcad/mcp 0.4.1 → 0.5.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/README.md +2 -4
- package/dist/app/SOURCE.txt +1 -4
- package/dist/app/assets/index-B5BXDqMa.css +1 -0
- package/dist/app/assets/index-DJBcjTSQ.js +12016 -0
- package/dist/app/index.html +5 -6
- package/dist/mcp-server.d.ts +1 -1
- package/dist/mcp-server.js +1 -1
- package/dist/tools/instances.d.ts +8 -0
- package/dist/tools/instances.js +17 -0
- package/dist/tools/instances.js.map +1 -0
- package/dist/tools/lifecycle.js +10 -2
- package/dist/tools/lifecycle.js.map +1 -1
- package/dist/tools/script.js +7 -2
- package/dist/tools/script.js.map +1 -1
- package/package.json +4 -3
- package/dist/app/assets/index-54a14bc0.css +0 -8
- package/dist/app/assets/index-cdb7103a.js +0 -11257
- package/dist/app/assets/troika-three-text.esm-38ad923a.js +0 -220
package/dist/app/index.html
CHANGED
|
@@ -2,15 +2,14 @@
|
|
|
2
2
|
<html lang="en">
|
|
3
3
|
<head>
|
|
4
4
|
<meta charset="utf-8" />
|
|
5
|
-
<link rel="icon" href="
|
|
5
|
+
<link rel="icon" href="./favicon.svg" />
|
|
6
6
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
7
7
|
<meta name="theme-color" content="#000000" />
|
|
8
|
-
<link rel="apple-touch-icon" href="
|
|
9
|
-
<link rel="manifest" href="
|
|
8
|
+
<link rel="apple-touch-icon" href="./favicon.svg" />
|
|
9
|
+
<link rel="manifest" href="./manifest.json" />
|
|
10
10
|
<title>buerligons</title>
|
|
11
|
-
|
|
12
|
-
<
|
|
13
|
-
<link rel="stylesheet" href="/assets/index-54a14bc0.css">
|
|
11
|
+
<script type="module" crossorigin src="./assets/index-DJBcjTSQ.js"></script>
|
|
12
|
+
<link rel="stylesheet" crossorigin href="./assets/index-B5BXDqMa.css">
|
|
14
13
|
</head>
|
|
15
14
|
<body>
|
|
16
15
|
<noscript>You need to enable JavaScript to run this app.</noscript>
|
package/dist/mcp-server.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
|
2
2
|
import { type Client, type EnginePolicy } from './client.js';
|
|
3
3
|
import { type LocalWasmOptions } from './engine/wasm.js';
|
|
4
4
|
import { type Show } from './share/session.js';
|
|
5
|
-
export declare const VERSION = "0.
|
|
5
|
+
export declare const VERSION = "0.5.0";
|
|
6
6
|
export declare const DEFAULT_WS_URL = "ws://0.0.0.0:9094/";
|
|
7
7
|
export type McpServerOptions = {
|
|
8
8
|
/** ClassCAD worker this instance connects to (lazily, on the first tool call). */
|
package/dist/mcp-server.js
CHANGED
|
@@ -20,7 +20,7 @@ import { attachViewer, VIEWER_NOTE } from './tools/viewer.js';
|
|
|
20
20
|
import { appNote, attachShare, registerSelectionTools, registerShareTool, registerViewTool } from './tools/share.js';
|
|
21
21
|
import { appAvailable, joinedHere, listen as listenForApps, waitForPage, SESSION_PATH } from './share/server.js';
|
|
22
22
|
import { sharingFromEnv, showFromEnv } from './share/session.js';
|
|
23
|
-
export const VERSION = '0.
|
|
23
|
+
export const VERSION = '0.5.0';
|
|
24
24
|
/** True for the address sessions are joined on on this machine (share/server.ts): an app's own engine, or another agent's. */
|
|
25
25
|
const hostedOnThisMachine = (url) => {
|
|
26
26
|
try {
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
type TreeNode = {
|
|
2
|
+
class?: string;
|
|
3
|
+
geometryIdList?: unknown;
|
|
4
|
+
};
|
|
5
|
+
/** Ids of the template-level instances (CC_ProductReference) that carry their own geometryIdList. */
|
|
6
|
+
export declare function materializedInstances(tree: Record<string, TreeNode> | null | undefined): string[];
|
|
7
|
+
export declare const MATERIALIZED_NOTE: string;
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
// Materialized instances. calculateMassProperties on an INSTANCE gives every instance of the
|
|
2
|
+
// assembly its own geometryIdList (isDirty 0). Saved as OFB, those lists reopen as [0], and
|
|
3
|
+
// Buerligons / buerli apps — which draw an instance from its geometryIdList when it has one —
|
|
4
|
+
// show nothing for it. Instances that were never measured (also those loaded from STEP) carry
|
|
5
|
+
// no list, so a list on a template-level instance is the signal.
|
|
6
|
+
/** Ids of the template-level instances (CC_ProductReference) that carry their own geometryIdList. */
|
|
7
|
+
export function materializedInstances(tree) {
|
|
8
|
+
if (!tree)
|
|
9
|
+
return [];
|
|
10
|
+
return Object.entries(tree)
|
|
11
|
+
.filter(([, n]) => n?.class === 'CC_ProductReference' && Array.isArray(n.geometryIdList))
|
|
12
|
+
.map(([id]) => id);
|
|
13
|
+
}
|
|
14
|
+
export const MATERIALIZED_NOTE = 'calculateMassProperties on an instance materialized them (own geometryIdList). Saved as OFB, they reopen ' +
|
|
15
|
+
'invisible in Buerligons and buerli apps. Measure templates and the root instead, and re-create these ' +
|
|
16
|
+
'instances in place (same transformation and name) before saving — docs(["recipes/clean-construction"]), section 4.';
|
|
17
|
+
//# sourceMappingURL=instances.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instances.js","sourceRoot":"","sources":["../../src/tools/instances.ts"],"names":[],"mappings":"AAAA,6FAA6F;AAC7F,4FAA4F;AAC5F,8FAA8F;AAC9F,8FAA8F;AAC9F,iEAAiE;AAIjE,qGAAqG;AACrG,MAAM,UAAU,qBAAqB,CAAC,IAAiD;IACrF,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAA;IACpB,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;SACxB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,KAAK,qBAAqB,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;SACxF,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAA;AACtB,CAAC;AAED,MAAM,CAAC,MAAM,iBAAiB,GAC5B,2GAA2G;IAC3G,uGAAuG;IACvG,oHAAoH,CAAA"}
|
package/dist/tools/lifecycle.js
CHANGED
|
@@ -4,6 +4,12 @@ import { mkdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
|
4
4
|
import { dirname, isAbsolute } from 'node:path';
|
|
5
5
|
import { buildScene, sceneToGlb } from '../viewer/scene.js';
|
|
6
6
|
import { exportAllowed } from '../engine/key.js';
|
|
7
|
+
import { MATERIALIZED_NOTE, materializedInstances } from './instances.js';
|
|
8
|
+
/** OFB/JSON keep the instance state: warn when instances would reopen invisible (see instances.ts). */
|
|
9
|
+
async function materializedWarning(client) {
|
|
10
|
+
const n = materializedInstances((await client.getTree())).length;
|
|
11
|
+
return n ? { warning: `${n} instance(s) are materialized: ${MATERIALIZED_NOTE}` } : {};
|
|
12
|
+
}
|
|
7
13
|
export function registerLifecycleTools(server, client) {
|
|
8
14
|
server.registerTool('clear', {
|
|
9
15
|
title: 'Clear drawing',
|
|
@@ -38,6 +44,7 @@ export function registerLifecycleTools(server, client) {
|
|
|
38
44
|
const allowed = exportAllowed(format);
|
|
39
45
|
if (!allowed.ok)
|
|
40
46
|
return { isError: true, content: [{ type: 'text', text: JSON.stringify({ format, success: false, error: allowed.message }) }] };
|
|
47
|
+
const warning = format === 'OFB' || format === 'JSON' ? await materializedWarning(client) : {};
|
|
41
48
|
let data = null;
|
|
42
49
|
let maxLevel = 0;
|
|
43
50
|
if (format === 'GLB') {
|
|
@@ -65,12 +72,12 @@ export function registerLifecycleTools(server, client) {
|
|
|
65
72
|
return { isError: true, content: [{ type: 'text', text: JSON.stringify({ format, success: false, error: `path must be absolute: ${path}` }) }] };
|
|
66
73
|
mkdirSync(dirname(path), { recursive: true });
|
|
67
74
|
writeFileSync(path, data);
|
|
68
|
-
return { content: [{ type: 'text', text: JSON.stringify({ format, success: true, path, bytes: data.length, maxLevel }) }] };
|
|
75
|
+
return { content: [{ type: 'text', text: JSON.stringify({ format, success: true, path, bytes: data.length, maxLevel, ...warning }) }] };
|
|
69
76
|
}
|
|
70
77
|
return {
|
|
71
78
|
content: [{
|
|
72
79
|
type: 'text',
|
|
73
|
-
text: JSON.stringify({ format, success: true, bytes: data.length, content: data.toString('base64'), maxLevel }),
|
|
80
|
+
text: JSON.stringify({ format, success: true, bytes: data.length, content: data.toString('base64'), maxLevel, ...warning }),
|
|
74
81
|
}],
|
|
75
82
|
};
|
|
76
83
|
});
|
|
@@ -165,6 +172,7 @@ export function registerLifecycleTools(server, client) {
|
|
|
165
172
|
size: Math.floor((r.result.content.length * 3) / 4),
|
|
166
173
|
stored: [...m.keys()],
|
|
167
174
|
note: `Drawing state saved server-side. restore({ label: "${name}" }) brings it back exactly.`,
|
|
175
|
+
...(await materializedWarning(client)),
|
|
168
176
|
}),
|
|
169
177
|
}],
|
|
170
178
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../src/tools/lifecycle.ts"],"names":[],"mappings":"AAAA,sCAAsC;AAEtC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAChE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AAC/C,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../src/tools/lifecycle.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/script.js
CHANGED
|
@@ -7,6 +7,7 @@ import { setDrawingBusy } from '../queue.js';
|
|
|
7
7
|
import { z } from 'zod';
|
|
8
8
|
import { createRequire } from 'module';
|
|
9
9
|
import { runScript, isSessionBusy } from '@classcad/script';
|
|
10
|
+
import { MATERIALIZED_NOTE, materializedInstances } from './instances.js';
|
|
10
11
|
// Runtime require — keeps the registry JSON out of tsc's type space (OOM risk).
|
|
11
12
|
const REGISTRY = createRequire(import.meta.url)('@classcad/skill/method-registry.json');
|
|
12
13
|
/**
|
|
@@ -68,6 +69,7 @@ export function registerScriptTool(server, client) {
|
|
|
68
69
|
}, async ({ script, timeoutMs }, extra) => {
|
|
69
70
|
let operationCount = 0;
|
|
70
71
|
const session = sessionFor(client);
|
|
72
|
+
const materializedBefore = new Set(materializedInstances(client.getStructure()?.tree));
|
|
71
73
|
const res = await runScript(script, session, { registry: REGISTRY, timeoutMs, strict: true, signal: extra.signal,
|
|
72
74
|
onOperation: event => {
|
|
73
75
|
if (extra._meta?.progressToken !== undefined && event.phase === 'start') {
|
|
@@ -90,12 +92,15 @@ export function registerScriptTool(server, client) {
|
|
|
90
92
|
catch {
|
|
91
93
|
/* the tools pull again on demand */
|
|
92
94
|
}
|
|
95
|
+
const materialized = materializedInstances(client.getStructure()?.tree).filter(id => !materializedBefore.has(id));
|
|
96
|
+
const warnings = materialized.length ? [`This script materialized ${materialized.length} instance(s): ${MATERIALIZED_NOTE}`] : [];
|
|
93
97
|
if (!res.ok) {
|
|
94
98
|
const tail = res.logs.length ? `\nConsole output before the error:\n${res.logs.slice(-20).join('\n')}` : '';
|
|
95
|
-
|
|
99
|
+
const warn = warnings.length ? `\nWarning: ${warnings[0]}` : '';
|
|
100
|
+
return { content: [{ type: 'text', text: `${res.error}${tail}${warn}` }], isError: true };
|
|
96
101
|
}
|
|
97
102
|
return {
|
|
98
|
-
content: [{ type: 'text', text: JSON.stringify({ returned: res.returned, logs: res.logs }) }],
|
|
103
|
+
content: [{ type: 'text', text: JSON.stringify({ returned: res.returned, logs: res.logs, ...(warnings.length ? { warnings } : {}) }) }],
|
|
99
104
|
};
|
|
100
105
|
});
|
|
101
106
|
}
|
package/dist/tools/script.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"script.js","sourceRoot":"","sources":["../../src/tools/script.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAC5C,0EAA0E;AAC1E,EAAE;AACF,uEAAuE;AACvE,iEAAiE;AACjE,oEAAoE;AAEpE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAA;AAEtC,OAAO,EAAE,SAAS,EAAE,aAAa,EAAsD,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"script.js","sourceRoot":"","sources":["../../src/tools/script.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@classcad/mcp",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"mcpName": "io.github.awv-informatik/classcad",
|
|
5
5
|
"description": "ClassCAD MCP server: build, verify and export 3D CAD parts and assemblies with the ClassCAD engine, running locally",
|
|
6
6
|
"homepage": "https://classcad.ai",
|
|
@@ -47,10 +47,10 @@
|
|
|
47
47
|
"start": "node dist/server.js",
|
|
48
48
|
"clean": "node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\"",
|
|
49
49
|
"postbuild": "node --test --test-timeout=180000 test/emission.mjs test/daemon.mjs test/auth.mjs test/share.mjs test/account.mjs",
|
|
50
|
-
"test": "npm run build && node --test test/key.mjs test/auth.mjs && node test/emission-live.mjs && node --test test/share-live.mjs && node --test --test-timeout=300000 test/wasm-live.mjs"
|
|
50
|
+
"test": "npm run build && node --test test/key.mjs test/auth.mjs && node test/emission-live.mjs && node test/materialized-live.mjs && node --test test/share-live.mjs && node --test --test-timeout=300000 test/wasm-live.mjs"
|
|
51
51
|
},
|
|
52
52
|
"dependencies": {
|
|
53
|
-
"@classcad/skill": "^0.0.
|
|
53
|
+
"@classcad/skill": "^0.0.8",
|
|
54
54
|
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
55
55
|
"sharp": "^0.34.5",
|
|
56
56
|
"ws": "^8.19.0",
|
|
@@ -59,6 +59,7 @@
|
|
|
59
59
|
"@classcad/script": "^0.2.0"
|
|
60
60
|
},
|
|
61
61
|
"devDependencies": {
|
|
62
|
+
"@buerli.io/buerligons": "2.0.0-beta.20261016102111",
|
|
62
63
|
"@types/node": "^22.0.0",
|
|
63
64
|
"@types/ws": "^8.5.13",
|
|
64
65
|
"typescript": "^5.6.0",
|