@vcad/mcp 0.10.0-main.125 → 0.10.0-main.127
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 +1 -1
- package/index.mjs +65 -66
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -6,4 +6,4 @@ vcad's MCP server as a self-contained bundle (server + BRep kernel WASM).
|
|
|
6
6
|
{ "mcpServers": { "vcad": { "command": "npx", "args": ["-y", "@vcad/mcp"] } } }
|
|
7
7
|
```
|
|
8
8
|
|
|
9
|
-
Built from
|
|
9
|
+
Built from 29cbe4343d120465c4b5eda7f7ccfc72d65a2171 at 2026-10-21T14:37:18.317Z. Source: https://github.com/ecto/vcad
|
package/index.mjs
CHANGED
|
@@ -12220,6 +12220,8 @@ var init_dist = __esm({
|
|
|
12220
12220
|
importStepBufferWithReport: wasmModule7.importStepBufferWithReport,
|
|
12221
12221
|
documentToStepBuffer: wasmModule7.documentToStepBuffer,
|
|
12222
12222
|
registerStepSource: wasmModule7.registerStepSource,
|
|
12223
|
+
stepImportDocument: wasmModule7.stepImportDocument,
|
|
12224
|
+
importStepMeshDocument: wasmModule7.importStepMeshDocument,
|
|
12223
12225
|
stepSourceRegistered: wasmModule7.stepSourceRegistered,
|
|
12224
12226
|
unregisterStepSource: wasmModule7.unregisterStepSource,
|
|
12225
12227
|
inspectDocumentFaces: wasmModule7.inspectDocumentFaces,
|
|
@@ -12774,6 +12776,28 @@ var init_dist = __esm({
|
|
|
12774
12776
|
summary: result.summary
|
|
12775
12777
|
};
|
|
12776
12778
|
}
|
|
12779
|
+
/**
|
|
12780
|
+
* Build the document for a B-rep STEP import: one lazy `step_import` root
|
|
12781
|
+
* per solid index of the file registered under `path`, named `partName`
|
|
12782
|
+
* (or `partName_N` for several), in `material` (`vcad_eval::step_doc`).
|
|
12783
|
+
*/
|
|
12784
|
+
stepImportDocument(path, solidIndices, partName, material) {
|
|
12785
|
+
if (typeof this.kernel.stepImportDocument !== "function") {
|
|
12786
|
+
throw new Error("stepImportDocument is not available - rebuild the kernel WASM");
|
|
12787
|
+
}
|
|
12788
|
+
return JSON.parse(this.kernel.stepImportDocument(path, Uint32Array.from(solidIndices), partName, material));
|
|
12789
|
+
}
|
|
12790
|
+
/**
|
|
12791
|
+
* Tessellated STEP import straight to a document (one `ImportedMesh` root
|
|
12792
|
+
* per body), built in the kernel. Throws when the file has no geometry.
|
|
12793
|
+
*/
|
|
12794
|
+
importStepMeshDocument(data, partName, material, source) {
|
|
12795
|
+
if (typeof this.kernel.importStepMeshDocument !== "function") {
|
|
12796
|
+
throw new Error("importStepMeshDocument is not available - rebuild the kernel WASM");
|
|
12797
|
+
}
|
|
12798
|
+
const r = this.kernel.importStepMeshDocument(new Uint8Array(data), partName, material, source);
|
|
12799
|
+
return { ...r, document: JSON.parse(r.document) };
|
|
12800
|
+
}
|
|
12777
12801
|
/**
|
|
12778
12802
|
* Register STEP file contents so `step_import` nodes resolve to B-rep.
|
|
12779
12803
|
*
|
|
@@ -41371,6 +41395,18 @@ var init_CHANGELOG = __esm({
|
|
|
41371
41395
|
"render"
|
|
41372
41396
|
]
|
|
41373
41397
|
},
|
|
41398
|
+
{
|
|
41399
|
+
id: "2026-10-21-mac-sim-teardown-race",
|
|
41400
|
+
version: "0.10.0",
|
|
41401
|
+
date: "2026-10-21",
|
|
41402
|
+
category: "fix",
|
|
41403
|
+
title: "Stopping a simulation no longer leaves a stale frame",
|
|
41404
|
+
summary: "In the Mac app, a physics frame already in flight when the simulation was torn down could repopulate its state; such frames are now dropped.",
|
|
41405
|
+
features: [
|
|
41406
|
+
"simulation",
|
|
41407
|
+
"mac"
|
|
41408
|
+
]
|
|
41409
|
+
},
|
|
41374
41410
|
{
|
|
41375
41411
|
id: "2026-10-21-mac-open-vcode",
|
|
41376
41412
|
version: "0.10.0",
|
|
@@ -41448,6 +41484,18 @@ var init_CHANGELOG = __esm({
|
|
|
41448
41484
|
"ai"
|
|
41449
41485
|
]
|
|
41450
41486
|
},
|
|
41487
|
+
{
|
|
41488
|
+
id: "2026-10-21-agent-nested-create",
|
|
41489
|
+
version: "0.10.0",
|
|
41490
|
+
date: "2026-10-21",
|
|
41491
|
+
category: "fix",
|
|
41492
|
+
title: "Agent accepts nested create calls",
|
|
41493
|
+
summary: "The Agent's create tool now accepts the nested argument shape models naturally emit, and repeat requests reuse the endpoint's prompt cache.",
|
|
41494
|
+
features: [
|
|
41495
|
+
"desktop",
|
|
41496
|
+
"agent"
|
|
41497
|
+
]
|
|
41498
|
+
},
|
|
41451
41499
|
{
|
|
41452
41500
|
id: "2026-10-20-vendor-verified-power-imu-footprints",
|
|
41453
41501
|
version: "0.10.0",
|
|
@@ -81044,30 +81092,6 @@ function readStepInput(input) {
|
|
|
81044
81092
|
}
|
|
81045
81093
|
return { bytes: readFileSync7(filepath), diskPath: resolve5(filepath) };
|
|
81046
81094
|
}
|
|
81047
|
-
function defaultMaterials() {
|
|
81048
|
-
return {
|
|
81049
|
-
steel: {
|
|
81050
|
-
name: "Steel",
|
|
81051
|
-
color: [0.6, 0.6, 0.65],
|
|
81052
|
-
metallic: 0.9,
|
|
81053
|
-
roughness: 0.3,
|
|
81054
|
-
density: 7850
|
|
81055
|
-
},
|
|
81056
|
-
aluminum: {
|
|
81057
|
-
name: "Aluminum",
|
|
81058
|
-
color: [0.8, 0.8, 0.85],
|
|
81059
|
-
metallic: 0.9,
|
|
81060
|
-
roughness: 0.2,
|
|
81061
|
-
density: 2700
|
|
81062
|
-
},
|
|
81063
|
-
default: {
|
|
81064
|
-
name: "Default",
|
|
81065
|
-
color: [0.8, 0.8, 0.8],
|
|
81066
|
-
metallic: 0,
|
|
81067
|
-
roughness: 0.5
|
|
81068
|
-
}
|
|
81069
|
-
};
|
|
81070
|
-
}
|
|
81071
81095
|
function skippedFaceSummary(report, warnings) {
|
|
81072
81096
|
const skipped = report.reduce((sum, s) => sum + s.skipped_faces.length, 0);
|
|
81073
81097
|
if (skipped === 0) return {};
|
|
@@ -81096,36 +81120,18 @@ function importStep(input, engine) {
|
|
|
81096
81120
|
/\.(step|stp)$/i.test(sourceLabel) ? sourceLabel.slice(-5) : ""
|
|
81097
81121
|
);
|
|
81098
81122
|
const partMaterial = material ?? "steel";
|
|
81099
|
-
|
|
81100
|
-
doc.materials = defaultMaterials();
|
|
81101
|
-
const addRoot = (nodeId, nodeName, op) => {
|
|
81102
|
-
doc.nodes[String(nodeId)] = { id: nodeId, name: nodeName, op };
|
|
81103
|
-
doc.roots.push({ root: nodeId, material: partMaterial });
|
|
81104
|
-
doc.part_materials[nodeName] = partMaterial;
|
|
81105
|
-
};
|
|
81123
|
+
let doc;
|
|
81106
81124
|
let summary;
|
|
81107
81125
|
if (as_mesh) {
|
|
81108
|
-
const
|
|
81109
|
-
|
|
81110
|
-
throw new Error("No geometry found in STEP file");
|
|
81111
|
-
}
|
|
81112
|
-
meshes.forEach((mesh, i) => {
|
|
81113
|
-
const op = {
|
|
81114
|
-
type: "ImportedMesh",
|
|
81115
|
-
positions: Array.from(mesh.positions),
|
|
81116
|
-
indices: Array.from(mesh.indices),
|
|
81117
|
-
normals: mesh.normals ? Array.from(mesh.normals) : void 0,
|
|
81118
|
-
source: sourceLabel
|
|
81119
|
-
};
|
|
81120
|
-
addRoot(i + 1, meshes.length === 1 ? partName : `${partName}_${i + 1}`, op);
|
|
81121
|
-
});
|
|
81126
|
+
const imported = engine.importStepMeshDocument(arrayBuffer, partName, partMaterial, sourceLabel);
|
|
81127
|
+
doc = imported.document;
|
|
81122
81128
|
summary = {
|
|
81123
81129
|
representation: "mesh",
|
|
81124
|
-
bodies:
|
|
81125
|
-
total_triangles:
|
|
81126
|
-
total_vertices:
|
|
81130
|
+
bodies: imported.bodies,
|
|
81131
|
+
total_triangles: imported.triangles,
|
|
81132
|
+
total_vertices: imported.vertices,
|
|
81127
81133
|
note: "Imported as triangle meshes: no analytic faces, and these parts cannot be exported to STEP. Drop `as_mesh` for a B-rep import.",
|
|
81128
|
-
...skippedFaceSummary(report,
|
|
81134
|
+
...skippedFaceSummary(imported.report, imported.summary)
|
|
81129
81135
|
};
|
|
81130
81136
|
} else {
|
|
81131
81137
|
const label = basename(sourceLabel).replace(/[^\w.-]/g, "_") || "import.step";
|
|
@@ -81139,18 +81145,12 @@ function importStep(input, engine) {
|
|
|
81139
81145
|
if (registered.solids.length === 0) {
|
|
81140
81146
|
throw new Error("No geometry found in STEP file");
|
|
81141
81147
|
}
|
|
81142
|
-
|
|
81143
|
-
|
|
81144
|
-
|
|
81145
|
-
|
|
81146
|
-
|
|
81147
|
-
|
|
81148
|
-
addRoot(
|
|
81149
|
-
i + 1,
|
|
81150
|
-
registered.solids.length === 1 ? partName : `${partName}_${i + 1}`,
|
|
81151
|
-
op
|
|
81152
|
-
);
|
|
81153
|
-
});
|
|
81148
|
+
doc = engine.stepImportDocument(
|
|
81149
|
+
path,
|
|
81150
|
+
registered.solids.map((solid) => solid.index),
|
|
81151
|
+
partName,
|
|
81152
|
+
partMaterial
|
|
81153
|
+
);
|
|
81154
81154
|
const meshOnly = registered.solids.filter((s) => s.faces === 0);
|
|
81155
81155
|
summary = {
|
|
81156
81156
|
representation: "brep",
|
|
@@ -81216,7 +81216,6 @@ var MAX_STEP_BYTES, STEP_CACHE_DIR, importStepSchema, toolDefs46;
|
|
|
81216
81216
|
var init_import = __esm({
|
|
81217
81217
|
"src/tools/import.ts"() {
|
|
81218
81218
|
"use strict";
|
|
81219
|
-
init_dist2();
|
|
81220
81219
|
init_safe_path();
|
|
81221
81220
|
init_remote();
|
|
81222
81221
|
init_artifact_store();
|
|
@@ -86903,8 +86902,8 @@ var init_server3 = __esm({
|
|
|
86903
86902
|
init_order_feed();
|
|
86904
86903
|
init_animate();
|
|
86905
86904
|
PKG_VERSION = (() => {
|
|
86906
|
-
if ("0.10.0-main.
|
|
86907
|
-
return "0.10.0-main.
|
|
86905
|
+
if ("0.10.0-main.127") {
|
|
86906
|
+
return "0.10.0-main.127";
|
|
86908
86907
|
}
|
|
86909
86908
|
try {
|
|
86910
86909
|
const req = createRequire2(import.meta.url);
|
|
@@ -86913,8 +86912,8 @@ var init_server3 = __esm({
|
|
|
86913
86912
|
return "0.0.0";
|
|
86914
86913
|
}
|
|
86915
86914
|
})();
|
|
86916
|
-
BUILD_SHA = "
|
|
86917
|
-
BUILD_TIME = "2026-10-
|
|
86915
|
+
BUILD_SHA = "29cbe4343d120465c4b5eda7f7ccfc72d65a2171";
|
|
86916
|
+
BUILD_TIME = "2026-10-21T14:37:18.317Z";
|
|
86918
86917
|
SHORT_SHA = BUILD_SHA === "unknown" ? "unknown" : BUILD_SHA.slice(0, 7);
|
|
86919
86918
|
VERSION_WITH_BUILD = SHORT_SHA === "unknown" ? PKG_VERSION : `${PKG_VERSION}+${SHORT_SHA}`;
|
|
86920
86919
|
INSTANCE_ID = randomUUID7().slice(0, 8);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vcad/mcp",
|
|
3
|
-
"version": "0.10.0-main.
|
|
3
|
+
"version": "0.10.0-main.127",
|
|
4
4
|
"description": "vcad MCP server — parametric CAD + PCB design tools for AI agents (self-contained: bundled server + kernel WASM)",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
},
|
|
20
20
|
"homepage": "https://vcad.io",
|
|
21
21
|
"vcadBuild": {
|
|
22
|
-
"sha": "
|
|
23
|
-
"builtAt": "2026-10-
|
|
22
|
+
"sha": "29cbe4343d120465c4b5eda7f7ccfc72d65a2171",
|
|
23
|
+
"builtAt": "2026-10-21T14:37:18.317Z"
|
|
24
24
|
}
|
|
25
25
|
}
|