@vcad/mcp 0.11.0-main.139 → 0.11.0-main.140

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 e8048d392e648e962e9df6ae719559a9322ba0d8 at 2026-11-07T02:30:11.369Z. Source: https://github.com/ecto/vcad
9
+ Built from 4a5ca79b1144c3ab693e34c74fc8a20ff18d6242 at 2026-11-07T14:45:02.882Z. Source: https://github.com/ecto/vcad
package/index.mjs CHANGED
@@ -46,6 +46,7 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
46
46
  var vcad_kernel_wasm_exports = {};
47
47
  __export(vcad_kernel_wasm_exports, {
48
48
  CircuitSim: () => CircuitSim,
49
+ IncrementalEvaluator: () => IncrementalEvaluator,
49
50
  MdSim: () => MdSim,
50
51
  PhysicsSim: () => PhysicsSim,
51
52
  RayTracer: () => RayTracer,
@@ -71,6 +72,7 @@ __export(vcad_kernel_wasm_exports, {
71
72
  buildCalibrationReportJson: () => buildCalibrationReportJson,
72
73
  buildGlbBytes: () => buildGlbBytes,
73
74
  buildPart: () => buildPart,
75
+ buildSheetMetalDocument: () => buildSheetMetalDocument,
74
76
  buildStlBytes: () => buildStlBytes,
75
77
  build_chat_system_prompt: () => build_chat_system_prompt,
76
78
  calibrationDefaultTolerance: () => calibrationDefaultTolerance,
@@ -166,6 +168,7 @@ __export(vcad_kernel_wasm_exports, {
166
168
  estimatePrintCost: () => estimatePrintCost,
167
169
  estimate_cost_for_process: () => estimate_cost_for_process,
168
170
  eulerXyzDegToQuat: () => eulerXyzDegToQuat,
171
+ evalLoonDocument: () => evalLoonDocument,
169
172
  evalVcadSource: () => evalVcadSource,
170
173
  evalVcadSourceParametric: () => evalVcadSourceParametric,
171
174
  evalVcadSourceWithModules: () => evalVcadSourceWithModules,
@@ -197,11 +200,13 @@ __export(vcad_kernel_wasm_exports, {
197
200
  get_tool_schemas: () => get_tool_schemas,
198
201
  importStepBuffer: () => importStepBuffer,
199
202
  importStepBufferWithReport: () => importStepBufferWithReport,
203
+ importStepMeshDocument: () => importStepMeshDocument,
200
204
  importUrdfBuffer: () => importUrdfBuffer,
201
205
  importUrdfBufferWithOptions: () => importUrdfBufferWithOptions,
202
206
  init: () => init,
203
207
  initGpu: () => initGpu,
204
208
  initSync: () => initSync,
209
+ inlineMeshImports: () => inlineMeshImports,
205
210
  inspectDocumentFaces: () => inspectDocumentFaces,
206
211
  isCamAvailable: () => isCamAvailable,
207
212
  isEcadAvailable: () => isEcadAvailable,
@@ -277,6 +282,7 @@ __export(vcad_kernel_wasm_exports, {
277
282
  solveDesignConstraints: () => solveDesignConstraints,
278
283
  solveForwardKinematics: () => solveForwardKinematics,
279
284
  solveSketchSegments: () => solveSketchSegments,
285
+ stepImportDocument: () => stepImportDocument,
280
286
  stepSourceRegistered: () => stepSourceRegistered,
281
287
  textBounds: () => textBounds,
282
288
  thermalSolve: () => thermalSolve,
@@ -535,6 +541,27 @@ function buildPart(path, params_json) {
535
541
  wasm.__wbindgen_free(deferred4_0, deferred4_1, 1);
536
542
  }
537
543
  }
544
+ function buildSheetMetalDocument(args_json) {
545
+ let deferred3_0;
546
+ let deferred3_1;
547
+ try {
548
+ const ptr0 = passStringToWasm0(args_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
549
+ const len0 = WASM_VECTOR_LEN;
550
+ const ret = wasm.buildSheetMetalDocument(ptr0, len0);
551
+ var ptr2 = ret[0];
552
+ var len2 = ret[1];
553
+ if (ret[3]) {
554
+ ptr2 = 0;
555
+ len2 = 0;
556
+ throw takeFromExternrefTable0(ret[2]);
557
+ }
558
+ deferred3_0 = ptr2;
559
+ deferred3_1 = len2;
560
+ return getStringFromWasm0(ptr2, len2);
561
+ } finally {
562
+ wasm.__wbindgen_free(deferred3_0, deferred3_1, 1);
563
+ }
564
+ }
538
565
  function buildStlBytes(spec_json, f32_data, u32_data) {
539
566
  const ptr0 = passStringToWasm0(spec_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
540
567
  const len0 = WASM_VECTOR_LEN;
@@ -1805,6 +1832,33 @@ function eulerXyzDegToQuat(x_deg, y_deg, z_deg) {
1805
1832
  wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
1806
1833
  return v1;
1807
1834
  }
1835
+ function evalLoonDocument(source, modules_json, base_dir, path) {
1836
+ let deferred6_0;
1837
+ let deferred6_1;
1838
+ try {
1839
+ const ptr0 = passStringToWasm0(source, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
1840
+ const len0 = WASM_VECTOR_LEN;
1841
+ const ptr1 = passStringToWasm0(modules_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
1842
+ const len1 = WASM_VECTOR_LEN;
1843
+ var ptr2 = isLikeNone(base_dir) ? 0 : passStringToWasm0(base_dir, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
1844
+ var len2 = WASM_VECTOR_LEN;
1845
+ var ptr3 = isLikeNone(path) ? 0 : passStringToWasm0(path, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
1846
+ var len3 = WASM_VECTOR_LEN;
1847
+ const ret = wasm.evalLoonDocument(ptr0, len0, ptr1, len1, ptr2, len2, ptr3, len3);
1848
+ var ptr5 = ret[0];
1849
+ var len5 = ret[1];
1850
+ if (ret[3]) {
1851
+ ptr5 = 0;
1852
+ len5 = 0;
1853
+ throw takeFromExternrefTable0(ret[2]);
1854
+ }
1855
+ deferred6_0 = ptr5;
1856
+ deferred6_1 = len5;
1857
+ return getStringFromWasm0(ptr5, len5);
1858
+ } finally {
1859
+ wasm.__wbindgen_free(deferred6_0, deferred6_1, 1);
1860
+ }
1861
+ }
1808
1862
  function evalVcadSource(source) {
1809
1863
  const ptr0 = passStringToWasm0(source, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
1810
1864
  const len0 = WASM_VECTOR_LEN;
@@ -2191,6 +2245,21 @@ function importStepBufferWithReport(data) {
2191
2245
  }
2192
2246
  return takeFromExternrefTable0(ret[0]);
2193
2247
  }
2248
+ function importStepMeshDocument(data, part_name, material, source) {
2249
+ const ptr0 = passArray8ToWasm0(data, wasm.__wbindgen_malloc);
2250
+ const len0 = WASM_VECTOR_LEN;
2251
+ const ptr1 = passStringToWasm0(part_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
2252
+ const len1 = WASM_VECTOR_LEN;
2253
+ const ptr2 = passStringToWasm0(material, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
2254
+ const len2 = WASM_VECTOR_LEN;
2255
+ const ptr3 = passStringToWasm0(source, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
2256
+ const len3 = WASM_VECTOR_LEN;
2257
+ const ret = wasm.importStepMeshDocument(ptr0, len0, ptr1, len1, ptr2, len2, ptr3, len3);
2258
+ if (ret[2]) {
2259
+ throw takeFromExternrefTable0(ret[1]);
2260
+ }
2261
+ return takeFromExternrefTable0(ret[0]);
2262
+ }
2194
2263
  function importUrdfBuffer(data) {
2195
2264
  let deferred3_0;
2196
2265
  let deferred3_1;
@@ -2242,6 +2311,29 @@ function initGpu() {
2242
2311
  const ret = wasm.initGpu();
2243
2312
  return ret;
2244
2313
  }
2314
+ function inlineMeshImports(doc_json, keys, blobs) {
2315
+ let deferred4_0;
2316
+ let deferred4_1;
2317
+ try {
2318
+ const ptr0 = passStringToWasm0(doc_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
2319
+ const len0 = WASM_VECTOR_LEN;
2320
+ const ptr1 = passArrayJsValueToWasm0(keys, wasm.__wbindgen_malloc);
2321
+ const len1 = WASM_VECTOR_LEN;
2322
+ const ret = wasm.inlineMeshImports(ptr0, len0, ptr1, len1, blobs);
2323
+ var ptr3 = ret[0];
2324
+ var len3 = ret[1];
2325
+ if (ret[3]) {
2326
+ ptr3 = 0;
2327
+ len3 = 0;
2328
+ throw takeFromExternrefTable0(ret[2]);
2329
+ }
2330
+ deferred4_0 = ptr3;
2331
+ deferred4_1 = len3;
2332
+ return getStringFromWasm0(ptr3, len3);
2333
+ } finally {
2334
+ wasm.__wbindgen_free(deferred4_0, deferred4_1, 1);
2335
+ }
2336
+ }
2245
2337
  function inspectDocumentFaces(doc_json) {
2246
2338
  let deferred3_0;
2247
2339
  let deferred3_1;
@@ -3285,6 +3377,33 @@ function solveSketchSegments(segments_json, constraints_json) {
3285
3377
  wasm.__wbindgen_free(deferred4_0, deferred4_1, 1);
3286
3378
  }
3287
3379
  }
3380
+ function stepImportDocument(path, solid_indices, part_name, material) {
3381
+ let deferred6_0;
3382
+ let deferred6_1;
3383
+ try {
3384
+ const ptr0 = passStringToWasm0(path, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
3385
+ const len0 = WASM_VECTOR_LEN;
3386
+ const ptr1 = passArray32ToWasm0(solid_indices, wasm.__wbindgen_malloc);
3387
+ const len1 = WASM_VECTOR_LEN;
3388
+ const ptr2 = passStringToWasm0(part_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
3389
+ const len2 = WASM_VECTOR_LEN;
3390
+ const ptr3 = passStringToWasm0(material, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
3391
+ const len3 = WASM_VECTOR_LEN;
3392
+ const ret = wasm.stepImportDocument(ptr0, len0, ptr1, len1, ptr2, len2, ptr3, len3);
3393
+ var ptr5 = ret[0];
3394
+ var len5 = ret[1];
3395
+ if (ret[3]) {
3396
+ ptr5 = 0;
3397
+ len5 = 0;
3398
+ throw takeFromExternrefTable0(ret[2]);
3399
+ }
3400
+ deferred6_0 = ptr5;
3401
+ deferred6_1 = len5;
3402
+ return getStringFromWasm0(ptr5, len5);
3403
+ } finally {
3404
+ wasm.__wbindgen_free(deferred6_0, deferred6_1, 1);
3405
+ }
3406
+ }
3288
3407
  function stepSourceRegistered(path) {
3289
3408
  const ptr0 = passStringToWasm0(path, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
3290
3409
  const len0 = WASM_VECTOR_LEN;
@@ -4540,7 +4659,7 @@ function __wbg_get_imports() {
4540
4659
  const a = state0.a;
4541
4660
  state0.a = 0;
4542
4661
  try {
4543
- return wasm_bindgen_d8ba3021eaa32f54___convert__closures_____invoke___js_sys_7c82484d4a1d6091___Function_fn_wasm_bindgen_d8ba3021eaa32f54___JsValue_____wasm_bindgen_d8ba3021eaa32f54___sys__Undefined___js_sys_7c82484d4a1d6091___Function_fn_wasm_bindgen_d8ba3021eaa32f54___JsValue_____wasm_bindgen_d8ba3021eaa32f54___sys__Undefined_______true_(a, state0.b, arg02, arg12);
4662
+ return wasm_bindgen_847cf9dc19a95d2a___convert__closures_____invoke___js_sys_fd485cc146ff22c1___Function_fn_wasm_bindgen_847cf9dc19a95d2a___JsValue_____wasm_bindgen_847cf9dc19a95d2a___sys__Undefined___js_sys_fd485cc146ff22c1___Function_fn_wasm_bindgen_847cf9dc19a95d2a___JsValue_____wasm_bindgen_847cf9dc19a95d2a___sys__Undefined_______true_(a, state0.b, arg02, arg12);
4544
4663
  } finally {
4545
4664
  state0.a = a;
4546
4665
  }
@@ -4578,7 +4697,7 @@ function __wbg_get_imports() {
4578
4697
  const a = state0.a;
4579
4698
  state0.a = 0;
4580
4699
  try {
4581
- return wasm_bindgen_d8ba3021eaa32f54___convert__closures_____invoke___js_sys_7c82484d4a1d6091___Function_fn_wasm_bindgen_d8ba3021eaa32f54___JsValue_____wasm_bindgen_d8ba3021eaa32f54___sys__Undefined___js_sys_7c82484d4a1d6091___Function_fn_wasm_bindgen_d8ba3021eaa32f54___JsValue_____wasm_bindgen_d8ba3021eaa32f54___sys__Undefined_______true_(a, state0.b, arg02, arg12);
4700
+ return wasm_bindgen_847cf9dc19a95d2a___convert__closures_____invoke___js_sys_fd485cc146ff22c1___Function_fn_wasm_bindgen_847cf9dc19a95d2a___JsValue_____wasm_bindgen_847cf9dc19a95d2a___sys__Undefined___js_sys_fd485cc146ff22c1___Function_fn_wasm_bindgen_847cf9dc19a95d2a___JsValue_____wasm_bindgen_847cf9dc19a95d2a___sys__Undefined_______true_(a, state0.b, arg02, arg12);
4582
4701
  } finally {
4583
4702
  state0.a = a;
4584
4703
  }
@@ -4611,7 +4730,7 @@ function __wbg_get_imports() {
4611
4730
  return ret;
4612
4731
  }, arguments);
4613
4732
  },
4614
- __wbg_now_579c6a705b05378b: function() {
4733
+ __wbg_now_7ea0b064671ccb66: function() {
4615
4734
  const ret = performance.now();
4616
4735
  return ret;
4617
4736
  },
@@ -5368,23 +5487,23 @@ function __wbg_get_imports() {
5368
5487
  }, arguments);
5369
5488
  },
5370
5489
  __wbindgen_generic_0000000000000001: function(arg0, arg1) {
5371
- const ret = makeMutClosure(arg0, arg1, wasm_bindgen_d8ba3021eaa32f54___convert__closures_____invoke___wasm_bindgen_d8ba3021eaa32f54___JsValue__core_37ee0ce0c4cd57d5___result__Result_____wasm_bindgen_d8ba3021eaa32f54___JsError___true_);
5490
+ const ret = makeMutClosure(arg0, arg1, wasm_bindgen_847cf9dc19a95d2a___convert__closures_____invoke___wasm_bindgen_847cf9dc19a95d2a___JsValue__core_f0fd674eaa06beef___result__Result_____wasm_bindgen_847cf9dc19a95d2a___JsError___true_);
5372
5491
  return ret;
5373
5492
  },
5374
5493
  __wbindgen_generic_0000000000000002: function(arg0, arg1) {
5375
- const ret = makeMutClosure(arg0, arg1, wasm_bindgen_d8ba3021eaa32f54___convert__closures_____invoke___wasm_bindgen_d8ba3021eaa32f54___sys__JsNullable_wgpu_f894171a91484cea___backend__webgpu__webgpu_sys__gen_GpuError__GpuError___core_37ee0ce0c4cd57d5___result__Result_____wasm_bindgen_d8ba3021eaa32f54___JsError___true_);
5494
+ const ret = makeMutClosure(arg0, arg1, wasm_bindgen_847cf9dc19a95d2a___convert__closures_____invoke___wasm_bindgen_847cf9dc19a95d2a___sys__JsNullable_wgpu_a24c7b14400eaeda___backend__webgpu__webgpu_sys__gen_GpuError__GpuError___core_f0fd674eaa06beef___result__Result_____wasm_bindgen_847cf9dc19a95d2a___JsError___true_);
5376
5495
  return ret;
5377
5496
  },
5378
5497
  __wbindgen_generic_0000000000000003: function(arg0, arg1) {
5379
- const ret = makeMutClosure(arg0, arg1, wasm_bindgen_d8ba3021eaa32f54___convert__closures_____invoke___wgpu_f894171a91484cea___backend__webgpu__webgpu_sys__gen_GpuDeviceLostInfo__GpuDeviceLostInfo______true_);
5498
+ const ret = makeMutClosure(arg0, arg1, wasm_bindgen_847cf9dc19a95d2a___convert__closures_____invoke___wgpu_a24c7b14400eaeda___backend__webgpu__webgpu_sys__gen_GpuDeviceLostInfo__GpuDeviceLostInfo______true_);
5380
5499
  return ret;
5381
5500
  },
5382
5501
  __wbindgen_generic_0000000000000004: function(arg0, arg1) {
5383
- const ret = makeMutClosure(arg0, arg1, wasm_bindgen_d8ba3021eaa32f54___convert__closures_____invoke___wasm_bindgen_d8ba3021eaa32f54___sys__JsNullable_wgpu_f894171a91484cea___backend__webgpu__webgpu_sys__gen_GpuError__GpuError___core_37ee0ce0c4cd57d5___result__Result_____wasm_bindgen_d8ba3021eaa32f54___JsError___true__447);
5502
+ const ret = makeMutClosure(arg0, arg1, wasm_bindgen_847cf9dc19a95d2a___convert__closures_____invoke___wasm_bindgen_847cf9dc19a95d2a___sys__JsNullable_wgpu_a24c7b14400eaeda___backend__webgpu__webgpu_sys__gen_GpuError__GpuError___core_f0fd674eaa06beef___result__Result_____wasm_bindgen_847cf9dc19a95d2a___JsError___true__460);
5384
5503
  return ret;
5385
5504
  },
5386
5505
  __wbindgen_generic_0000000000000005: function(arg0, arg1) {
5387
- const ret = makeMutClosure(arg0, arg1, wasm_bindgen_d8ba3021eaa32f54___convert__closures_____invoke___wasm_bindgen_d8ba3021eaa32f54___sys__JsNullable_wgpu_f894171a91484cea___backend__webgpu__webgpu_sys__gen_GpuError__GpuError___core_37ee0ce0c4cd57d5___result__Result_____wasm_bindgen_d8ba3021eaa32f54___JsError___true__448);
5506
+ const ret = makeMutClosure(arg0, arg1, wasm_bindgen_847cf9dc19a95d2a___convert__closures_____invoke___wasm_bindgen_847cf9dc19a95d2a___sys__JsNullable_wgpu_a24c7b14400eaeda___backend__webgpu__webgpu_sys__gen_GpuError__GpuError___core_f0fd674eaa06beef___result__Result_____wasm_bindgen_847cf9dc19a95d2a___JsError___true__461);
5388
5507
  return ret;
5389
5508
  },
5390
5509
  __wbindgen_generic_0000000000000006: function(arg0) {
@@ -5458,35 +5577,35 @@ function __wbg_get_imports() {
5458
5577
  "./vcad_kernel_wasm_bg.js": import0
5459
5578
  };
5460
5579
  }
5461
- function wasm_bindgen_d8ba3021eaa32f54___convert__closures_____invoke___wgpu_f894171a91484cea___backend__webgpu__webgpu_sys__gen_GpuDeviceLostInfo__GpuDeviceLostInfo______true_(arg0, arg1, arg2) {
5462
- wasm.wasm_bindgen_d8ba3021eaa32f54___convert__closures_____invoke___wgpu_f894171a91484cea___backend__webgpu__webgpu_sys__gen_GpuDeviceLostInfo__GpuDeviceLostInfo______true_(arg0, arg1, arg2);
5580
+ function wasm_bindgen_847cf9dc19a95d2a___convert__closures_____invoke___wgpu_a24c7b14400eaeda___backend__webgpu__webgpu_sys__gen_GpuDeviceLostInfo__GpuDeviceLostInfo______true_(arg0, arg1, arg2) {
5581
+ wasm.wasm_bindgen_847cf9dc19a95d2a___convert__closures_____invoke___wgpu_a24c7b14400eaeda___backend__webgpu__webgpu_sys__gen_GpuDeviceLostInfo__GpuDeviceLostInfo______true_(arg0, arg1, arg2);
5463
5582
  }
5464
- function wasm_bindgen_d8ba3021eaa32f54___convert__closures_____invoke___wasm_bindgen_d8ba3021eaa32f54___JsValue__core_37ee0ce0c4cd57d5___result__Result_____wasm_bindgen_d8ba3021eaa32f54___JsError___true_(arg0, arg1, arg2) {
5465
- const ret = wasm.wasm_bindgen_d8ba3021eaa32f54___convert__closures_____invoke___wasm_bindgen_d8ba3021eaa32f54___JsValue__core_37ee0ce0c4cd57d5___result__Result_____wasm_bindgen_d8ba3021eaa32f54___JsError___true_(arg0, arg1, arg2);
5583
+ function wasm_bindgen_847cf9dc19a95d2a___convert__closures_____invoke___wasm_bindgen_847cf9dc19a95d2a___JsValue__core_f0fd674eaa06beef___result__Result_____wasm_bindgen_847cf9dc19a95d2a___JsError___true_(arg0, arg1, arg2) {
5584
+ const ret = wasm.wasm_bindgen_847cf9dc19a95d2a___convert__closures_____invoke___wasm_bindgen_847cf9dc19a95d2a___JsValue__core_f0fd674eaa06beef___result__Result_____wasm_bindgen_847cf9dc19a95d2a___JsError___true_(arg0, arg1, arg2);
5466
5585
  if (ret[1]) {
5467
5586
  throw takeFromExternrefTable0(ret[0]);
5468
5587
  }
5469
5588
  }
5470
- function wasm_bindgen_d8ba3021eaa32f54___convert__closures_____invoke___wasm_bindgen_d8ba3021eaa32f54___sys__JsNullable_wgpu_f894171a91484cea___backend__webgpu__webgpu_sys__gen_GpuError__GpuError___core_37ee0ce0c4cd57d5___result__Result_____wasm_bindgen_d8ba3021eaa32f54___JsError___true_(arg0, arg1, arg2) {
5471
- const ret = wasm.wasm_bindgen_d8ba3021eaa32f54___convert__closures_____invoke___wasm_bindgen_d8ba3021eaa32f54___sys__JsNullable_wgpu_f894171a91484cea___backend__webgpu__webgpu_sys__gen_GpuError__GpuError___core_37ee0ce0c4cd57d5___result__Result_____wasm_bindgen_d8ba3021eaa32f54___JsError___true_(arg0, arg1, arg2);
5589
+ function wasm_bindgen_847cf9dc19a95d2a___convert__closures_____invoke___wasm_bindgen_847cf9dc19a95d2a___sys__JsNullable_wgpu_a24c7b14400eaeda___backend__webgpu__webgpu_sys__gen_GpuError__GpuError___core_f0fd674eaa06beef___result__Result_____wasm_bindgen_847cf9dc19a95d2a___JsError___true_(arg0, arg1, arg2) {
5590
+ const ret = wasm.wasm_bindgen_847cf9dc19a95d2a___convert__closures_____invoke___wasm_bindgen_847cf9dc19a95d2a___sys__JsNullable_wgpu_a24c7b14400eaeda___backend__webgpu__webgpu_sys__gen_GpuError__GpuError___core_f0fd674eaa06beef___result__Result_____wasm_bindgen_847cf9dc19a95d2a___JsError___true_(arg0, arg1, arg2);
5472
5591
  if (ret[1]) {
5473
5592
  throw takeFromExternrefTable0(ret[0]);
5474
5593
  }
5475
5594
  }
5476
- function wasm_bindgen_d8ba3021eaa32f54___convert__closures_____invoke___wasm_bindgen_d8ba3021eaa32f54___sys__JsNullable_wgpu_f894171a91484cea___backend__webgpu__webgpu_sys__gen_GpuError__GpuError___core_37ee0ce0c4cd57d5___result__Result_____wasm_bindgen_d8ba3021eaa32f54___JsError___true__447(arg0, arg1, arg2) {
5477
- const ret = wasm.wasm_bindgen_d8ba3021eaa32f54___convert__closures_____invoke___wasm_bindgen_d8ba3021eaa32f54___sys__JsNullable_wgpu_f894171a91484cea___backend__webgpu__webgpu_sys__gen_GpuError__GpuError___core_37ee0ce0c4cd57d5___result__Result_____wasm_bindgen_d8ba3021eaa32f54___JsError___true__447(arg0, arg1, arg2);
5595
+ function wasm_bindgen_847cf9dc19a95d2a___convert__closures_____invoke___wasm_bindgen_847cf9dc19a95d2a___sys__JsNullable_wgpu_a24c7b14400eaeda___backend__webgpu__webgpu_sys__gen_GpuError__GpuError___core_f0fd674eaa06beef___result__Result_____wasm_bindgen_847cf9dc19a95d2a___JsError___true__460(arg0, arg1, arg2) {
5596
+ const ret = wasm.wasm_bindgen_847cf9dc19a95d2a___convert__closures_____invoke___wasm_bindgen_847cf9dc19a95d2a___sys__JsNullable_wgpu_a24c7b14400eaeda___backend__webgpu__webgpu_sys__gen_GpuError__GpuError___core_f0fd674eaa06beef___result__Result_____wasm_bindgen_847cf9dc19a95d2a___JsError___true__460(arg0, arg1, arg2);
5478
5597
  if (ret[1]) {
5479
5598
  throw takeFromExternrefTable0(ret[0]);
5480
5599
  }
5481
5600
  }
5482
- function wasm_bindgen_d8ba3021eaa32f54___convert__closures_____invoke___wasm_bindgen_d8ba3021eaa32f54___sys__JsNullable_wgpu_f894171a91484cea___backend__webgpu__webgpu_sys__gen_GpuError__GpuError___core_37ee0ce0c4cd57d5___result__Result_____wasm_bindgen_d8ba3021eaa32f54___JsError___true__448(arg0, arg1, arg2) {
5483
- const ret = wasm.wasm_bindgen_d8ba3021eaa32f54___convert__closures_____invoke___wasm_bindgen_d8ba3021eaa32f54___sys__JsNullable_wgpu_f894171a91484cea___backend__webgpu__webgpu_sys__gen_GpuError__GpuError___core_37ee0ce0c4cd57d5___result__Result_____wasm_bindgen_d8ba3021eaa32f54___JsError___true__448(arg0, arg1, arg2);
5601
+ function wasm_bindgen_847cf9dc19a95d2a___convert__closures_____invoke___wasm_bindgen_847cf9dc19a95d2a___sys__JsNullable_wgpu_a24c7b14400eaeda___backend__webgpu__webgpu_sys__gen_GpuError__GpuError___core_f0fd674eaa06beef___result__Result_____wasm_bindgen_847cf9dc19a95d2a___JsError___true__461(arg0, arg1, arg2) {
5602
+ const ret = wasm.wasm_bindgen_847cf9dc19a95d2a___convert__closures_____invoke___wasm_bindgen_847cf9dc19a95d2a___sys__JsNullable_wgpu_a24c7b14400eaeda___backend__webgpu__webgpu_sys__gen_GpuError__GpuError___core_f0fd674eaa06beef___result__Result_____wasm_bindgen_847cf9dc19a95d2a___JsError___true__461(arg0, arg1, arg2);
5484
5603
  if (ret[1]) {
5485
5604
  throw takeFromExternrefTable0(ret[0]);
5486
5605
  }
5487
5606
  }
5488
- function wasm_bindgen_d8ba3021eaa32f54___convert__closures_____invoke___js_sys_7c82484d4a1d6091___Function_fn_wasm_bindgen_d8ba3021eaa32f54___JsValue_____wasm_bindgen_d8ba3021eaa32f54___sys__Undefined___js_sys_7c82484d4a1d6091___Function_fn_wasm_bindgen_d8ba3021eaa32f54___JsValue_____wasm_bindgen_d8ba3021eaa32f54___sys__Undefined_______true_(arg0, arg1, arg2, arg3) {
5489
- wasm.wasm_bindgen_d8ba3021eaa32f54___convert__closures_____invoke___js_sys_7c82484d4a1d6091___Function_fn_wasm_bindgen_d8ba3021eaa32f54___JsValue_____wasm_bindgen_d8ba3021eaa32f54___sys__Undefined___js_sys_7c82484d4a1d6091___Function_fn_wasm_bindgen_d8ba3021eaa32f54___JsValue_____wasm_bindgen_d8ba3021eaa32f54___sys__Undefined_______true_(arg0, arg1, arg2, arg3);
5607
+ function wasm_bindgen_847cf9dc19a95d2a___convert__closures_____invoke___js_sys_fd485cc146ff22c1___Function_fn_wasm_bindgen_847cf9dc19a95d2a___JsValue_____wasm_bindgen_847cf9dc19a95d2a___sys__Undefined___js_sys_fd485cc146ff22c1___Function_fn_wasm_bindgen_847cf9dc19a95d2a___JsValue_____wasm_bindgen_847cf9dc19a95d2a___sys__Undefined_______true_(arg0, arg1, arg2, arg3) {
5608
+ wasm.wasm_bindgen_847cf9dc19a95d2a___convert__closures_____invoke___js_sys_fd485cc146ff22c1___Function_fn_wasm_bindgen_847cf9dc19a95d2a___JsValue_____wasm_bindgen_847cf9dc19a95d2a___sys__Undefined___js_sys_fd485cc146ff22c1___Function_fn_wasm_bindgen_847cf9dc19a95d2a___JsValue_____wasm_bindgen_847cf9dc19a95d2a___sys__Undefined_______true_(arg0, arg1, arg2, arg3);
5490
5609
  }
5491
5610
  function addToExternrefTable0(obj) {
5492
5611
  const idx = wasm.__externref_table_alloc();
@@ -5865,7 +5984,7 @@ function __vcad_reset_wasm() {
5865
5984
  wasm = void 0;
5866
5985
  wasmModule = void 0;
5867
5986
  }
5868
- var CircuitSim, MdSim, PhysicsSim, RayTracer, SliceResult, SlicerSettings, Solid, WasmAnnotationLayer, WasmCamSettings, WasmDocumentEngine, WasmKeybindings, WasmSketchSession, __wbindgen_enum_GpuAutoLayoutMode, __wbindgen_enum_GpuBufferBindingType, __wbindgen_enum_GpuPowerPreference, __wbindgen_enum_GpuSamplerBindingType, __wbindgen_enum_GpuStorageTextureAccess, __wbindgen_enum_GpuTextureAspect, __wbindgen_enum_GpuTextureDimension, __wbindgen_enum_GpuTextureFormat, __wbindgen_enum_GpuTextureSampleType, __wbindgen_enum_GpuTextureViewDimension, CircuitSimFinalization, MdSimFinalization, PhysicsSimFinalization, RayTracerFinalization, SliceResultFinalization, SlicerSettingsFinalization, SolidFinalization, WasmAnnotationLayerFinalization, WasmCamSettingsFinalization, WasmDocumentEngineFinalization, WasmKeybindingsFinalization, WasmSketchSessionFinalization, CLOSURE_DTORS, cachedDataViewMemory0, cachedFloat32ArrayMemory0, cachedFloat64ArrayMemory0, cachedInt16ArrayMemory0, cachedInt32ArrayMemory0, cachedInt8ArrayMemory0, cachedUint16ArrayMemory0, cachedUint32ArrayMemory0, cachedUint8ArrayMemory0, cachedTextDecoder, MAX_SAFARI_DECODE_BYTES, numBytesDecoded, cachedTextEncoder, WASM_VECTOR_LEN, wasmModule, wasmInstance, wasm;
5987
+ var CircuitSim, IncrementalEvaluator, MdSim, PhysicsSim, RayTracer, SliceResult, SlicerSettings, Solid, WasmAnnotationLayer, WasmCamSettings, WasmDocumentEngine, WasmKeybindings, WasmSketchSession, __wbindgen_enum_GpuAutoLayoutMode, __wbindgen_enum_GpuBufferBindingType, __wbindgen_enum_GpuPowerPreference, __wbindgen_enum_GpuSamplerBindingType, __wbindgen_enum_GpuStorageTextureAccess, __wbindgen_enum_GpuTextureAspect, __wbindgen_enum_GpuTextureDimension, __wbindgen_enum_GpuTextureFormat, __wbindgen_enum_GpuTextureSampleType, __wbindgen_enum_GpuTextureViewDimension, CircuitSimFinalization, IncrementalEvaluatorFinalization, MdSimFinalization, PhysicsSimFinalization, RayTracerFinalization, SliceResultFinalization, SlicerSettingsFinalization, SolidFinalization, WasmAnnotationLayerFinalization, WasmCamSettingsFinalization, WasmDocumentEngineFinalization, WasmKeybindingsFinalization, WasmSketchSessionFinalization, CLOSURE_DTORS, cachedDataViewMemory0, cachedFloat32ArrayMemory0, cachedFloat64ArrayMemory0, cachedInt16ArrayMemory0, cachedInt32ArrayMemory0, cachedInt8ArrayMemory0, cachedUint16ArrayMemory0, cachedUint32ArrayMemory0, cachedUint8ArrayMemory0, cachedTextDecoder, MAX_SAFARI_DECODE_BYTES, numBytesDecoded, cachedTextEncoder, WASM_VECTOR_LEN, wasmModule, wasmInstance, wasm;
5869
5988
  var init_vcad_kernel_wasm = __esm({
5870
5989
  "../kernel-wasm/vcad_kernel_wasm.js"() {
5871
5990
  CircuitSim = class {
@@ -5941,6 +6060,59 @@ var init_vcad_kernel_wasm = __esm({
5941
6060
  }
5942
6061
  };
5943
6062
  if (Symbol.dispose) CircuitSim.prototype[Symbol.dispose] = CircuitSim.prototype.free;
6063
+ IncrementalEvaluator = class {
6064
+ __destroy_into_raw() {
6065
+ const ptr = this.__wbg_ptr;
6066
+ this.__wbg_ptr = 0;
6067
+ IncrementalEvaluatorFinalization.unregister(this);
6068
+ return ptr;
6069
+ }
6070
+ free() {
6071
+ const ptr = this.__destroy_into_raw();
6072
+ wasm.__wbg_incrementalevaluator_free(ptr, 0);
6073
+ }
6074
+ /**
6075
+ * Drop everything carried (the next evaluation is cold).
6076
+ */
6077
+ clear() {
6078
+ wasm.incrementalevaluator_clear(this.__wbg_ptr);
6079
+ }
6080
+ /**
6081
+ * `evaluateDocument`, reusing everything the edit didn't touch.
6082
+ * @param {string} doc_json
6083
+ * @param {boolean} skip_clash_detection
6084
+ * @returns {any}
6085
+ */
6086
+ evaluate(doc_json, skip_clash_detection) {
6087
+ const ptr0 = passStringToWasm0(doc_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
6088
+ const len0 = WASM_VECTOR_LEN;
6089
+ const ret = wasm.incrementalevaluator_evaluate(this.__wbg_ptr, ptr0, len0, skip_clash_detection);
6090
+ if (ret[2]) {
6091
+ throw takeFromExternrefTable0(ret[1]);
6092
+ }
6093
+ return takeFromExternrefTable0(ret[0]);
6094
+ }
6095
+ /**
6096
+ * A fresh evaluator (its first `evaluate` is cold).
6097
+ */
6098
+ constructor() {
6099
+ const ret = wasm.incrementalevaluator_new();
6100
+ this.__wbg_ptr = ret;
6101
+ IncrementalEvaluatorFinalization.register(this, this.__wbg_ptr, this);
6102
+ return this;
6103
+ }
6104
+ /**
6105
+ * `[reusedSolids, evaluatedSolids, reusedMeshes]` from the last evaluation.
6106
+ * @returns {Uint32Array}
6107
+ */
6108
+ stats() {
6109
+ const ret = wasm.incrementalevaluator_stats(this.__wbg_ptr);
6110
+ var v1 = getArrayU32FromWasm0(ret[0], ret[1]).slice();
6111
+ wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);
6112
+ return v1;
6113
+ }
6114
+ };
6115
+ if (Symbol.dispose) IncrementalEvaluator.prototype[Symbol.dispose] = IncrementalEvaluator.prototype.free;
5944
6116
  MdSim = class {
5945
6117
  __destroy_into_raw() {
5946
6118
  const ptr = this.__wbg_ptr;
@@ -8030,6 +8202,48 @@ var init_vcad_kernel_wasm = __esm({
8030
8202
  const ret = wasm.wasmdocumentengine_add_feature(this.__wbg_ptr, ptr0, len0);
8031
8203
  return ret;
8032
8204
  }
8205
+ /**
8206
+ * `apply`, answered with an `EngineDeltaEnvelope` (what changed since
8207
+ * the state before the command) instead of the whole document.
8208
+ * @param {string} command_json
8209
+ * @returns {string}
8210
+ */
8211
+ applyDelta(command_json) {
8212
+ let deferred2_0;
8213
+ let deferred2_1;
8214
+ try {
8215
+ const ptr0 = passStringToWasm0(command_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
8216
+ const len0 = WASM_VECTOR_LEN;
8217
+ const ret = wasm.wasmdocumentengine_applyDelta(this.__wbg_ptr, ptr0, len0);
8218
+ deferred2_0 = ret[0];
8219
+ deferred2_1 = ret[1];
8220
+ return getStringFromWasm0(ret[0], ret[1]);
8221
+ } finally {
8222
+ wasm.__wbindgen_free(deferred2_0, deferred2_1, 1);
8223
+ }
8224
+ }
8225
+ /**
8226
+ * `apply_tool`, answered with an `EngineDeltaEnvelope`.
8227
+ * @param {string} tool
8228
+ * @param {string} args_json
8229
+ * @returns {string}
8230
+ */
8231
+ applyToolDelta(tool, args_json) {
8232
+ let deferred3_0;
8233
+ let deferred3_1;
8234
+ try {
8235
+ const ptr0 = passStringToWasm0(tool, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
8236
+ const len0 = WASM_VECTOR_LEN;
8237
+ const ptr1 = passStringToWasm0(args_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
8238
+ const len1 = WASM_VECTOR_LEN;
8239
+ const ret = wasm.wasmdocumentengine_applyToolDelta(this.__wbg_ptr, ptr0, len0, ptr1, len1);
8240
+ deferred3_0 = ret[0];
8241
+ deferred3_1 = ret[1];
8242
+ return getStringFromWasm0(ret[0], ret[1]);
8243
+ } finally {
8244
+ wasm.__wbindgen_free(deferred3_0, deferred3_1, 1);
8245
+ }
8246
+ }
8033
8247
  /**
8034
8248
  * Apply a JSON `DocCommand` (see `vcad_app::command`). Returns the
8035
8249
  * shared JSON envelope: `{"ok":true,"result":{…}}` or
@@ -8152,6 +8366,27 @@ var init_vcad_kernel_wasm = __esm({
8152
8366
  const ret = wasm.wasmdocumentengine_delete_feature_by_id(this.__wbg_ptr, ptr0, len0);
8153
8367
  return ret;
8154
8368
  }
8369
+ /**
8370
+ * Evaluate this engine's document through `evaluator` without a JSON
8371
+ * round trip: the materialized document never leaves Rust. `overlay_json`
8372
+ * is `{"parameters"?, "bindings"?}` (host-held parameter state, merged
8373
+ * over the document like `mergeParametersIntoDocument`); pass `""` for
8374
+ * none. Returns the same scene shape as `evaluateDocument`.
8375
+ * @param {IncrementalEvaluator} evaluator
8376
+ * @param {string} overlay_json
8377
+ * @param {boolean} skip_clash_detection
8378
+ * @returns {any}
8379
+ */
8380
+ evaluateIncremental(evaluator, overlay_json, skip_clash_detection) {
8381
+ _assertClass(evaluator, IncrementalEvaluator);
8382
+ const ptr0 = passStringToWasm0(overlay_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
8383
+ const len0 = WASM_VECTOR_LEN;
8384
+ const ret = wasm.wasmdocumentengine_evaluateIncremental(this.__wbg_ptr, evaluator.__wbg_ptr, ptr0, len0, skip_clash_detection);
8385
+ if (ret[2]) {
8386
+ throw takeFromExternrefTable0(ret[1]);
8387
+ }
8388
+ return takeFromExternrefTable0(ret[0]);
8389
+ }
8155
8390
  /**
8156
8391
  * Load a legacy v1 JSON document and migrate to CRDT.
8157
8392
  * @param {string} json
@@ -8466,6 +8701,23 @@ var init_vcad_kernel_wasm = __esm({
8466
8701
  const ret = wasm.wasmdocumentengine_set_visible(this.__wbg_ptr, ptr0, len0, visible);
8467
8702
  return ret;
8468
8703
  }
8704
+ /**
8705
+ * The current state as a full-document envelope (always `ok`) — the
8706
+ * base a host applies deltas to.
8707
+ * @returns {string}
8708
+ */
8709
+ stateEnvelope() {
8710
+ let deferred1_0;
8711
+ let deferred1_1;
8712
+ try {
8713
+ const ret = wasm.wasmdocumentengine_stateEnvelope(this.__wbg_ptr);
8714
+ deferred1_0 = ret[0];
8715
+ deferred1_1 = ret[1];
8716
+ return getStringFromWasm0(ret[0], ret[1]);
8717
+ } finally {
8718
+ wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);
8719
+ }
8720
+ }
8469
8721
  /**
8470
8722
  * Deterministic state fingerprint; matches `vcad_engine_state_hash`.
8471
8723
  * @returns {string}
@@ -8909,6 +9161,9 @@ var init_vcad_kernel_wasm = __esm({
8909
9161
  CircuitSimFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => {
8910
9162
  }, unregister: () => {
8911
9163
  } } : new FinalizationRegistry((ptr) => wasm.__wbg_circuitsim_free(ptr, 1));
9164
+ IncrementalEvaluatorFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => {
9165
+ }, unregister: () => {
9166
+ } } : new FinalizationRegistry((ptr) => wasm.__wbg_incrementalevaluator_free(ptr, 1));
8912
9167
  MdSimFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => {
8913
9168
  }, unregister: () => {
8914
9169
  } } : new FinalizationRegistry((ptr) => wasm.__wbg_mdsim_free(ptr, 1));
@@ -41804,6 +42059,43 @@ var init_CHANGELOG = __esm({
41804
42059
  CHANGELOG_default = {
41805
42060
  $schema: "./changelog.schema.json",
41806
42061
  entries: [
42062
+ {
42063
+ id: "2026-11-07-native-assembly-authoring",
42064
+ version: "0.11.0",
42065
+ date: "2026-11-07",
42066
+ category: "feat",
42067
+ title: "Mac app: assembly, joint, mate and keyframe authoring",
42068
+ summary: "Insert instances, add and edit all five joint kinds with picked anchors, check mates, drag joints via FK, and author keyframes with a timeline that exports video.",
42069
+ features: [
42070
+ "assembly",
42071
+ "joints",
42072
+ "mates",
42073
+ "animation",
42074
+ "native-app"
42075
+ ]
42076
+ },
42077
+ {
42078
+ id: "2026-11-06-native-dfm-fea-clearance",
42079
+ version: "0.11.0",
42080
+ date: "2026-11-06",
42081
+ category: "feat",
42082
+ title: "DFM, stress and clearance in the Mac app",
42083
+ summary: "New Analyze panel in the native app: DFM with one-click undoable fixes, in-process FEA on picked faces with stress overlays, and part interference volumes \u2014 also exposed to agents over the app's MCP server.",
42084
+ features: [
42085
+ "dfm",
42086
+ "fea",
42087
+ "clearance",
42088
+ "native-app",
42089
+ "vcad-2"
42090
+ ],
42091
+ mcpTools: [
42092
+ "dfm_check",
42093
+ "dfm_apply_fix",
42094
+ "analyze_structure",
42095
+ "check_interference",
42096
+ "inspect_faces"
42097
+ ]
42098
+ },
41807
42099
  {
41808
42100
  id: "2026-11-06-export-all-documents",
41809
42101
  version: "0.11.0",
@@ -81758,7 +82050,7 @@ function resolveMeshPath(filename, urdfDir, packageRoots, confineRoot) {
81758
82050
  if (urdfDir) return confined(resolve6(urdfDir, stripped));
81759
82051
  return null;
81760
82052
  }
81761
- function inlineMeshImports(doc, engine, urdfDir, packageRoots, confineRoot) {
82053
+ function inlineMeshImports2(doc, engine, urdfDir, packageRoots, confineRoot) {
81762
82054
  const unresolved = [];
81763
82055
  const meshes = /* @__PURE__ */ new Map();
81764
82056
  const refs = /* @__PURE__ */ new Map();
@@ -81846,7 +82138,7 @@ function importUrdf(input, engine) {
81846
82138
  })
81847
82139
  );
81848
82140
  const commentedFloating = floating_base ? void 0 : engine.urdfCommentedFloatingJoint(arrayBuffer);
81849
- const meshes = inlineMeshImports(doc, engine, urdfDir, packageRoots, confineRoot);
82141
+ const meshes = inlineMeshImports2(doc, engine, urdfDir, packageRoots, confineRoot);
81850
82142
  const robotName = name ?? basename2(sourceLabel).replace(/\.(urdf|xml)$/i, "");
81851
82143
  const parts = Object.values(doc.partDefs ?? {}).map((p) => ({
81852
82144
  id: p.id,
@@ -87404,8 +87696,8 @@ var init_server3 = __esm({
87404
87696
  init_order_feed();
87405
87697
  init_animate();
87406
87698
  PKG_VERSION = (() => {
87407
- if ("0.11.0-main.139") {
87408
- return "0.11.0-main.139";
87699
+ if ("0.11.0-main.140") {
87700
+ return "0.11.0-main.140";
87409
87701
  }
87410
87702
  try {
87411
87703
  const req = createRequire2(import.meta.url);
@@ -87414,8 +87706,8 @@ var init_server3 = __esm({
87414
87706
  return "0.0.0";
87415
87707
  }
87416
87708
  })();
87417
- BUILD_SHA = "e8048d392e648e962e9df6ae719559a9322ba0d8";
87418
- BUILD_TIME = "2026-11-07T02:30:11.369Z";
87709
+ BUILD_SHA = "4a5ca79b1144c3ab693e34c74fc8a20ff18d6242";
87710
+ BUILD_TIME = "2026-11-07T14:45:02.882Z";
87419
87711
  SHORT_SHA = BUILD_SHA === "unknown" ? "unknown" : BUILD_SHA.slice(0, 7);
87420
87712
  VERSION_WITH_BUILD = SHORT_SHA === "unknown" ? PKG_VERSION : `${PKG_VERSION}+${SHORT_SHA}`;
87421
87713
  INSTANCE_ID = randomUUID7().slice(0, 8);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vcad/mcp",
3
- "version": "0.11.0-main.139",
3
+ "version": "0.11.0-main.140",
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": "e8048d392e648e962e9df6ae719559a9322ba0d8",
23
- "builtAt": "2026-11-07T02:30:11.369Z"
22
+ "sha": "4a5ca79b1144c3ab693e34c74fc8a20ff18d6242",
23
+ "builtAt": "2026-11-07T14:45:02.882Z"
24
24
  }
25
25
  }
@@ -1,4 +1,4 @@
1
1
  [diffend] Oversized file quarantined before diffing.
2
2
  name: package/vcad_kernel_wasm_bg.wasm
3
- size: 35419240 bytes
4
- sha256: dd437e1d919dd4a61ab3ba0c9f6fa0f8e01ca3f1b16c592df3b5d4045103b53e
3
+ size: 37267118 bytes
4
+ sha256: 345ccd3c52425074524246e9532459d8dc662d94cd9060ac15ef403c17bcbb3c