@vcad/mcp 0.9.4-main.28 → 0.9.4-main.29

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 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 301abfbddc2a05c29fabc9f655031e554eab1d04 at 2026-07-26T00:32:29.039Z. Source: https://github.com/ecto/vcad
9
+ Built from d80a65e336d1c8b8ebf75dd1bebc553b41f7ca93 at 2026-07-26T00:45:54.095Z. Source: https://github.com/ecto/vcad
package/index.mjs CHANGED
@@ -113,6 +113,7 @@ __export(vcad_kernel_wasm_exports, {
113
113
  documentToLoonChecked: () => documentToLoonChecked,
114
114
  drawingSheetToPdf: () => drawingSheetToPdf,
115
115
  ecadAirgapFluxDensity: () => ecadAirgapFluxDensity,
116
+ ecadAirgapSolve: () => ecadAirgapSolve,
116
117
  ecadBuildReceipt: () => ecadBuildReceipt,
117
118
  ecadBuiltinSymbols: () => ecadBuiltinSymbols,
118
119
  ecadCheckDrc: () => ecadCheckDrc,
@@ -1142,6 +1143,15 @@ function ecadAirgapFluxDensity(spec_json) {
1142
1143
  }
1143
1144
  return ret[0];
1144
1145
  }
1146
+ function ecadAirgapSolve(spec_json) {
1147
+ const ptr0 = passStringToWasm0(spec_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
1148
+ const len0 = WASM_VECTOR_LEN;
1149
+ const ret = wasm.ecadAirgapSolve(ptr0, len0);
1150
+ if (ret[2]) {
1151
+ throw takeFromExternrefTable0(ret[1]);
1152
+ }
1153
+ return takeFromExternrefTable0(ret[0]);
1154
+ }
1145
1155
  function ecadBuildReceipt(pcb_json) {
1146
1156
  const ptr0 = passStringToWasm0(pcb_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
1147
1157
  const len0 = WASM_VECTOR_LEN;
@@ -41204,6 +41214,41 @@ var init_CHANGELOG = __esm({
41204
41214
  "quote_manufacturing"
41205
41215
  ]
41206
41216
  },
41217
+ {
41218
+ id: "2026-07-25-em-saturated-picard",
41219
+ version: "0.9.4",
41220
+ date: "2026-07-25",
41221
+ category: "fix",
41222
+ title: "simulate_em solves strongly saturating magnetostatics",
41223
+ summary: "Saturated motor cross-sections no longer fail with an unfixable 'Picard not converged': the nonlinear loop's cap, tolerance and relaxation are now caller-settable, and the default cap was raised.",
41224
+ features: [
41225
+ "em",
41226
+ "magnetostatics",
41227
+ "motors"
41228
+ ],
41229
+ mcpTools: [
41230
+ "simulate_em"
41231
+ ]
41232
+ },
41233
+ {
41234
+ id: "2026-07-25-curved-trim-seams-weld",
41235
+ version: "0.9.4",
41236
+ date: "2026-07-25",
41237
+ category: "fix",
41238
+ title: "Bores and cut curved faces close their seams",
41239
+ summary: "A through-hole left the shell open along the bore wall \u2014 visible as hairline cracks and unusable for 3D print or STL export; bores, holed plates and cut fillet corners now come out watertight.",
41240
+ features: [
41241
+ "kernel",
41242
+ "booleans",
41243
+ "tessellation",
41244
+ "export"
41245
+ ],
41246
+ mcpTools: [
41247
+ "create_cad_loon",
41248
+ "inspect_cad",
41249
+ "export_cad"
41250
+ ]
41251
+ },
41207
41252
  {
41208
41253
  id: "2026-07-25-calc-motor-tooth-saturation",
41209
41254
  version: "0.9.4",
@@ -71521,6 +71566,22 @@ var init_em = __esm({
71521
71566
  type: "number",
71522
71567
  description: "SOR sweep cap. Default 200000."
71523
71568
  },
71569
+ picard_max_iters: {
71570
+ type: "number",
71571
+ description: "Saturable iron only: cap on the NONLINEAR outer loop over the B-H law. Default 300. Separate from max_sweeps, which caps the inner SOR solve and does nothing for a non-converging material state. A deeply saturated motor section contracts steadily but needs 150-250 iterations; raise this when the error says the residual is still falling."
71572
+ },
71573
+ picard_tol: {
71574
+ type: "number",
71575
+ description: "Saturable iron only: nonlinear convergence tolerance on the largest relative reluctivity update. Default 1e-4. Raise it to accept a looser material state deliberately."
71576
+ },
71577
+ picard_relax: {
71578
+ type: "number",
71579
+ description: "Saturable iron only: under-relaxation of the nonlinear loop, in (0, 1]. Default 0.7. Lower it ONLY when the error reports the residual has stopped falling (a limit cycle); when the residual is still falling, lowering this makes convergence strictly slower \u2014 raise picard_max_iters instead."
71580
+ },
71581
+ picard_adaptive: {
71582
+ type: "boolean",
71583
+ description: "Saturable iron only: back the relaxation off automatically when the nonlinear residual makes no progress over a 10-iteration window. Default FALSE \u2014 on a healthy saturated solve it reacts to ordinary residual jitter and costs ~1.7x the iterations. Turn it on for a device that is demonstrably oscillating."
71584
+ },
71524
71585
  drive_coil: {
71525
71586
  type: "number",
71526
71587
  description: "Axisym: coil index the inductance claim is priced for. Default 0."
@@ -78990,8 +79051,8 @@ var init_server3 = __esm({
78990
79051
  init_order_feed();
78991
79052
  init_animate();
78992
79053
  PKG_VERSION = (() => {
78993
- if ("0.9.4-main.28") {
78994
- return "0.9.4-main.28";
79054
+ if ("0.9.4-main.29") {
79055
+ return "0.9.4-main.29";
78995
79056
  }
78996
79057
  try {
78997
79058
  const req = createRequire2(import.meta.url);
@@ -79000,8 +79061,8 @@ var init_server3 = __esm({
79000
79061
  return "0.0.0";
79001
79062
  }
79002
79063
  })();
79003
- BUILD_SHA = "301abfbddc2a05c29fabc9f655031e554eab1d04";
79004
- BUILD_TIME = "2026-07-26T00:32:29.039Z";
79064
+ BUILD_SHA = "d80a65e336d1c8b8ebf75dd1bebc553b41f7ca93";
79065
+ BUILD_TIME = "2026-07-26T00:45:54.095Z";
79005
79066
  SHORT_SHA = BUILD_SHA === "unknown" ? "unknown" : BUILD_SHA.slice(0, 7);
79006
79067
  VERSION_WITH_BUILD = SHORT_SHA === "unknown" ? PKG_VERSION : `${PKG_VERSION}+${SHORT_SHA}`;
79007
79068
  INSTANCE_ID = randomUUID6().slice(0, 8);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vcad/mcp",
3
- "version": "0.9.4-main.28",
3
+ "version": "0.9.4-main.29",
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": "301abfbddc2a05c29fabc9f655031e554eab1d04",
23
- "builtAt": "2026-07-26T00:32:29.039Z"
22
+ "sha": "d80a65e336d1c8b8ebf75dd1bebc553b41f7ca93",
23
+ "builtAt": "2026-07-26T00:45:54.095Z"
24
24
  }
25
25
  }
Binary file