@vcad/mcp 0.10.0-main.119 → 0.10.0-main.120
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 +68 -47
- package/package.json +3 -3
- package/vcad_kernel_wasm_bg.wasm +2 -2
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 7eeafc841dd77faeaa0447b6f46a515ea28d1007 at 2026-10-21T01:59:00.007Z. Source: https://github.com/ecto/vcad
|
package/index.mjs
CHANGED
|
@@ -41824,6 +41824,19 @@ var init_CHANGELOG = __esm({
|
|
|
41824
41824
|
CHANGELOG_default = {
|
|
41825
41825
|
$schema: "./changelog.schema.json",
|
|
41826
41826
|
entries: [
|
|
41827
|
+
{
|
|
41828
|
+
id: "2026-10-21-desktop-agent",
|
|
41829
|
+
version: "0.10.0",
|
|
41830
|
+
date: "2026-10-21",
|
|
41831
|
+
category: "feat",
|
|
41832
|
+
title: "Built-in Agent edits documents in the Mac app",
|
|
41833
|
+
summary: "A chat panel in the native Mac app where an agent edits the open document through engine tools: edits show live, each turn is one undo step, and tool errors go back to the model.",
|
|
41834
|
+
features: [
|
|
41835
|
+
"desktop",
|
|
41836
|
+
"agent",
|
|
41837
|
+
"ai"
|
|
41838
|
+
]
|
|
41839
|
+
},
|
|
41827
41840
|
{
|
|
41828
41841
|
id: "2026-10-20-vendor-verified-power-imu-footprints",
|
|
41829
41842
|
version: "0.10.0",
|
|
@@ -41855,6 +41868,19 @@ var init_CHANGELOG = __esm({
|
|
|
41855
41868
|
"update"
|
|
41856
41869
|
]
|
|
41857
41870
|
},
|
|
41871
|
+
{
|
|
41872
|
+
id: "2026-10-20-stale-photoreal-renderer",
|
|
41873
|
+
version: "0.10.0",
|
|
41874
|
+
date: "2026-10-20",
|
|
41875
|
+
category: "fix",
|
|
41876
|
+
title: "Photoreal refuses a stale vcad-render that facets lofts",
|
|
41877
|
+
summary: "The Mac app's photoreal button now detects a pre-mesh-mode vcad-render (which traced polyline lofts as flat strips) and asks for a rebuild instead of rendering jagged rounds.",
|
|
41878
|
+
features: [
|
|
41879
|
+
"photoreal",
|
|
41880
|
+
"render",
|
|
41881
|
+
"loft"
|
|
41882
|
+
]
|
|
41883
|
+
},
|
|
41858
41884
|
{
|
|
41859
41885
|
id: "2026-10-20-schematic-power-flags",
|
|
41860
41886
|
version: "0.10.0",
|
|
@@ -41932,6 +41958,23 @@ var init_CHANGELOG = __esm({
|
|
|
41932
41958
|
"native"
|
|
41933
41959
|
]
|
|
41934
41960
|
},
|
|
41961
|
+
{
|
|
41962
|
+
id: "2026-10-20-mcp-tube-tools-engine",
|
|
41963
|
+
version: "0.10.0",
|
|
41964
|
+
date: "2026-10-20",
|
|
41965
|
+
category: "feat",
|
|
41966
|
+
title: "MCP tube and polyline_tube tools on the engine",
|
|
41967
|
+
summary: "tube and polyline_tube are now available over MCP, lowered by the Rust document engine; place_part also inserts through the engine.",
|
|
41968
|
+
features: [
|
|
41969
|
+
"mcp",
|
|
41970
|
+
"engine"
|
|
41971
|
+
],
|
|
41972
|
+
mcpTools: [
|
|
41973
|
+
"tube",
|
|
41974
|
+
"polyline_tube",
|
|
41975
|
+
"place_part"
|
|
41976
|
+
]
|
|
41977
|
+
},
|
|
41935
41978
|
{
|
|
41936
41979
|
id: "2026-10-20-mcp-stable-part-ids",
|
|
41937
41980
|
version: "0.10.0",
|
|
@@ -55970,13 +56013,8 @@ var init_registry_dispatch = __esm({
|
|
|
55970
56013
|
"screenshot_viewport"
|
|
55971
56014
|
]);
|
|
55972
56015
|
DEFERRED_TOOLS = /* @__PURE__ */ new Set([
|
|
55973
|
-
|
|
55974
|
-
|
|
55975
|
-
"linear_pattern",
|
|
55976
|
-
"circular_pattern",
|
|
55977
|
-
"mirror",
|
|
55978
|
-
// search_parts / place_part are implemented separately in parts.ts —
|
|
55979
|
-
// they take a Document directly and don't need the planner round-trip.
|
|
56016
|
+
// search_parts / place_part are served by parts.ts (place_part still
|
|
56017
|
+
// mutates through the engine, via runMutation).
|
|
55980
56018
|
"search_parts",
|
|
55981
56019
|
"place_part"
|
|
55982
56020
|
]);
|
|
@@ -56033,7 +56071,9 @@ var init_registry_dispatch = __esm({
|
|
|
56033
56071
|
"shell",
|
|
56034
56072
|
"tube",
|
|
56035
56073
|
"polyline_tube",
|
|
56036
|
-
"place"
|
|
56074
|
+
"place",
|
|
56075
|
+
// Reached via parts.ts (place_part handler), not registry dispatch.
|
|
56076
|
+
"place_part"
|
|
56037
56077
|
]);
|
|
56038
56078
|
}
|
|
56039
56079
|
});
|
|
@@ -57729,6 +57769,8 @@ var init_tool_metadata = __esm({
|
|
|
57729
57769
|
delete: { title: "Delete Node", annotations: DESTRUCTIVE },
|
|
57730
57770
|
set_material: { title: "Set Material", annotations: RW },
|
|
57731
57771
|
place: { title: "Place Part by Anchor", annotations: RW },
|
|
57772
|
+
tube: { title: "Create Tube", annotations: RW },
|
|
57773
|
+
polyline_tube: { title: "Create Polyline Tube", annotations: RW },
|
|
57732
57774
|
inspect_part: { title: "Inspect Part", annotations: RO },
|
|
57733
57775
|
describe_scene: { title: "Describe Scene", annotations: RO },
|
|
57734
57776
|
// ── MCP Apps: app-only preview fetchers ────────────────────────────────
|
|
@@ -62616,42 +62658,21 @@ function placePartTool(args, engine) {
|
|
|
62616
62658
|
...defaultParamsFor(entry),
|
|
62617
62659
|
...userParams
|
|
62618
62660
|
};
|
|
62619
|
-
const
|
|
62620
|
-
const
|
|
62621
|
-
|
|
62622
|
-
|
|
62623
|
-
|
|
62624
|
-
|
|
62625
|
-
type: "PartInstance",
|
|
62626
|
-
path,
|
|
62627
|
-
version: entry.version,
|
|
62628
|
-
params
|
|
62629
|
-
}
|
|
62630
|
-
};
|
|
62631
|
-
doc.nodes[String(partNodeId)] = partNode;
|
|
62632
|
-
let rootId = partNodeId;
|
|
62661
|
+
const name = typeof args.name === "string" ? args.name : entry.name;
|
|
62662
|
+
const placed = JSON.parse(
|
|
62663
|
+
runMutation("place_part", { path, version: entry.version, params, name }, doc, documentId).content[0].text
|
|
62664
|
+
);
|
|
62665
|
+
const partId = placed.part_id;
|
|
62666
|
+
if (!partId) throw new Error("place_part: engine created no part");
|
|
62633
62667
|
const position = args.position;
|
|
62634
62668
|
if (position && (Number.isFinite(position.x) || Number.isFinite(position.y) || Number.isFinite(position.z))) {
|
|
62635
|
-
const
|
|
62636
|
-
|
|
62637
|
-
|
|
62638
|
-
|
|
62639
|
-
op: {
|
|
62640
|
-
type: "Translate",
|
|
62641
|
-
child: partNodeId,
|
|
62642
|
-
offset: {
|
|
62643
|
-
x: typeof position.x === "number" ? position.x : 0,
|
|
62644
|
-
y: typeof position.y === "number" ? position.y : 0,
|
|
62645
|
-
z: typeof position.z === "number" ? position.z : 0
|
|
62646
|
-
}
|
|
62647
|
-
}
|
|
62669
|
+
const offset = {
|
|
62670
|
+
x: typeof position.x === "number" ? position.x : 0,
|
|
62671
|
+
y: typeof position.y === "number" ? position.y : 0,
|
|
62672
|
+
z: typeof position.z === "number" ? position.z : 0
|
|
62648
62673
|
};
|
|
62649
|
-
|
|
62674
|
+
runMutation("translate", { child: partId, offset }, doc, documentId);
|
|
62650
62675
|
}
|
|
62651
|
-
doc.roots.push({
|
|
62652
|
-
root: rootId,
|
|
62653
|
-
material: "default"
|
|
62654
|
-
});
|
|
62655
62676
|
return {
|
|
62656
62677
|
content: [
|
|
62657
62678
|
{
|
|
@@ -62659,12 +62680,12 @@ function placePartTool(args, engine) {
|
|
|
62659
62680
|
text: JSON.stringify(
|
|
62660
62681
|
{
|
|
62661
62682
|
document_id: documentId,
|
|
62662
|
-
part_id:
|
|
62683
|
+
part_id: partId,
|
|
62663
62684
|
placed: {
|
|
62664
62685
|
path,
|
|
62665
62686
|
version: entry.version,
|
|
62666
62687
|
params,
|
|
62667
|
-
node_id:
|
|
62688
|
+
node_id: placed.node_id
|
|
62668
62689
|
}
|
|
62669
62690
|
},
|
|
62670
62691
|
null,
|
|
@@ -62680,7 +62701,7 @@ var init_parts2 = __esm({
|
|
|
62680
62701
|
"use strict";
|
|
62681
62702
|
init_dist();
|
|
62682
62703
|
init_session2();
|
|
62683
|
-
|
|
62704
|
+
init_registry_dispatch();
|
|
62684
62705
|
init_tool_def();
|
|
62685
62706
|
searchPartsSchema = {
|
|
62686
62707
|
type: "object",
|
|
@@ -87291,8 +87312,8 @@ var init_server3 = __esm({
|
|
|
87291
87312
|
init_order_feed();
|
|
87292
87313
|
init_animate();
|
|
87293
87314
|
PKG_VERSION = (() => {
|
|
87294
|
-
if ("0.10.0-main.
|
|
87295
|
-
return "0.10.0-main.
|
|
87315
|
+
if ("0.10.0-main.120") {
|
|
87316
|
+
return "0.10.0-main.120";
|
|
87296
87317
|
}
|
|
87297
87318
|
try {
|
|
87298
87319
|
const req = createRequire2(import.meta.url);
|
|
@@ -87301,8 +87322,8 @@ var init_server3 = __esm({
|
|
|
87301
87322
|
return "0.0.0";
|
|
87302
87323
|
}
|
|
87303
87324
|
})();
|
|
87304
|
-
BUILD_SHA = "
|
|
87305
|
-
BUILD_TIME = "2026-10-21T01:
|
|
87325
|
+
BUILD_SHA = "7eeafc841dd77faeaa0447b6f46a515ea28d1007";
|
|
87326
|
+
BUILD_TIME = "2026-10-21T01:59:00.007Z";
|
|
87306
87327
|
SHORT_SHA = BUILD_SHA === "unknown" ? "unknown" : BUILD_SHA.slice(0, 7);
|
|
87307
87328
|
VERSION_WITH_BUILD = SHORT_SHA === "unknown" ? PKG_VERSION : `${PKG_VERSION}+${SHORT_SHA}`;
|
|
87308
87329
|
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.120",
|
|
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-21T01:
|
|
22
|
+
"sha": "7eeafc841dd77faeaa0447b6f46a515ea28d1007",
|
|
23
|
+
"builtAt": "2026-10-21T01:59:00.007Z"
|
|
24
24
|
}
|
|
25
25
|
}
|
package/vcad_kernel_wasm_bg.wasm
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
[diffend] Oversized file quarantined before diffing.
|
|
2
2
|
name: package/vcad_kernel_wasm_bg.wasm
|
|
3
|
-
size:
|
|
4
|
-
sha256:
|
|
3
|
+
size: 35320568 bytes
|
|
4
|
+
sha256: 4ee12afb81436d1e31b2a0e2dbd01c596a7b5ae4282bbc8f9006158f922cab70
|