@weapp-vite/mcp 2.1.0 → 2.2.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 CHANGED
@@ -19,7 +19,7 @@
19
19
 
20
20
  ## 启动
21
21
 
22
- 直接使用 `@weapp-vite/mcp` 或 `@weapp-vite/acceptance` 需要 **Node.js >=22.12.0**。这两个包不再支持 Node 20;通过 `weapp-vite` 命令使用时,还须满足 `weapp-vite` 自身的 Node 范围 `^22.18.0 || ^24.11.0 || >=26.0.0`。
22
+ 直接使用 `@weapp-vite/mcp`、`@weapp-vite/acceptance` 或通过 `weapp-vite` 命令使用时,均需满足 Node.js 范围 `^22.23.4 || ^24.22.1 || >=26.12.1`。
23
23
 
24
24
  ```bash
25
25
  pnpm --filter @weapp-vite/mcp start
package/dist/index.d.ts CHANGED
@@ -5,7 +5,6 @@ import { z } from "zod";
5
5
  import { DevtoolsRuntimeHooks } from "@weapp-vite/devtools-runtime";
6
6
  import { Buffer } from "node:buffer";
7
7
  import { WechatDevtoolsSelectionOptions } from "weapp-ide-cli";
8
- //#region src/server/runtime/shared.d.ts
9
8
  interface MiniProgramElement {
10
9
  tagName?: string;
11
10
  $?: (selector: string) => Promise<MiniProgramElement | null>;
@@ -92,12 +91,8 @@ declare class RuntimeSessionManager {
92
91
  private detach;
93
92
  private pushLog;
94
93
  }
95
- //#endregion
96
- //#region src/acceptance.d.ts
97
94
  export declare function acceptanceRuntime(parent: RuntimeSessionManager): RuntimeConnector;
98
95
  export declare function createRuntimeAcceptanceService(root: string, options?: AcceptanceOptions, hooks?: DevtoolsRuntimeHooks): Promise<AcceptanceService>;
99
- //#endregion
100
- //#region src/constants.d.ts
101
96
  export declare const MCP_SERVER_NAME = "@weapp-vite/mcp";
102
97
  export declare const MCP_SERVER_VERSION: string;
103
98
  export declare const EXPOSED_PACKAGES: {
@@ -126,8 +121,6 @@ export declare const DEFAULT_MAX_OUTPUT_CHARS = 120000;
126
121
  export declare const DEFAULT_MAX_FILE_CHARS = 80000;
127
122
  export declare const DEFAULT_MAX_RESULTS = 200;
128
123
  export declare const SKIPPED_DIR_NAMES: Set<string>;
129
- //#endregion
130
- //#region src/exposedPackages.d.ts
131
124
  interface ResolvedExposedPackage {
132
125
  id: ExposedPackageId;
133
126
  label: string;
@@ -143,13 +136,9 @@ interface ResolvedExposedPackage {
143
136
  sourceRoot?: string;
144
137
  cliPath?: string;
145
138
  }
146
- //#endregion
147
- //#region src/catalog.d.ts
148
139
  export interface ExposedPackageSummary extends ResolvedExposedPackage {}
149
140
  export declare function loadPackageSummary(workspaceRoot: string, id: ExposedPackageId): Promise<ExposedPackageSummary>;
150
141
  export declare function loadExposedCatalog(workspaceRoot: string): Promise<ResolvedExposedPackage[]>;
151
- //#endregion
152
- //#region src/commandOps.d.ts
153
142
  export interface CommandResult {
154
143
  command: string;
155
144
  args: string[];
@@ -164,8 +153,6 @@ export declare function runCommand(workspaceRoot: string, command: string, args:
164
153
  timeoutMs?: number;
165
154
  maxOutputChars?: number;
166
155
  }): Promise<CommandResult>;
167
- //#endregion
168
- //#region src/fileOps.d.ts
169
156
  export interface SearchMatch {
170
157
  filePath: string;
171
158
  line: number;
@@ -185,8 +172,6 @@ export declare function searchTextInDirectory(root: string, query: string, optio
185
172
  relativeDirectory?: string;
186
173
  maxResults?: number;
187
174
  }): Promise<SearchMatch[]>;
188
- //#endregion
189
- //#region src/server/index.d.ts
190
175
  export interface CreateServerOptions {
191
176
  runtimeHooks?: DevtoolsRuntimeHooks;
192
177
  workspaceRoot?: string;
@@ -204,8 +189,6 @@ export declare function createWeappViteMcpServer(options?: CreateServerOptions):
204
189
  server: McpServer;
205
190
  workspaceRoot: string;
206
191
  }>;
207
- //#endregion
208
- //#region src/runtime.d.ts
209
192
  export interface StartMcpServerOptions extends CreateServerOptions {
210
193
  transport?: 'stdio' | 'streamable-http';
211
194
  host?: string;
@@ -222,11 +205,7 @@ export interface McpServerHandle {
222
205
  }
223
206
  export declare function startStdioServer(options?: CreateServerOptions): Promise<McpServerHandle>;
224
207
  export declare function startWeappViteMcpServer(options?: StartMcpServerOptions): Promise<McpServerHandle>;
225
- //#endregion
226
- //#region src/server/acceptance.d.ts
227
208
  export declare function registerAcceptanceTools(server: McpServer, service: () => Promise<AcceptanceService>): McpServer;
228
- //#endregion
229
- //#region src/utils.d.ts
230
209
  export declare function formatJson(value: unknown): string;
231
210
  export declare function normalizeErrorMessage(error: unknown): string;
232
211
  export declare function toToolResult(data: unknown, text?: string): {
@@ -245,10 +224,7 @@ export declare function toToolError(error: unknown): {
245
224
  text: string;
246
225
  }[];
247
226
  };
248
- //#endregion
249
- //#region src/workspace.d.ts
250
227
  export declare function resolveWorkspaceRoot(start?: string): string;
251
228
  export declare function assertInsideRoot(root: string, targetPath: string): string;
252
229
  export declare function resolveSubPath(root: string, relativePath: string): string;
253
- //#endregion
254
230
  export { DEFAULT_MCP_ENDPOINT, DEFAULT_MCP_HOST, DEFAULT_MCP_PORT, DEFAULT_RUNTIME_REST_ENDPOINT };
package/dist/index.mjs CHANGED
@@ -14,7 +14,7 @@ import { acquireRuntimeLease, acquireSharedMiniProgram, closeOwnedSharedMiniProg
14
14
  import fs$1 from "node:fs/promises";
15
15
  import { Buffer } from "node:buffer";
16
16
  import { spawn } from "node:child_process";
17
- //#region src/utils.ts
17
+ // src/utils.ts
18
18
  function formatJson(value) {
19
19
  return JSON.stringify(value, null, 2);
20
20
  }
@@ -40,8 +40,7 @@ function toToolError(error) {
40
40
  }]
41
41
  };
42
42
  }
43
- //#endregion
44
- //#region src/server/runtime/shared.ts
43
+ // src/server/runtime/shared.ts
45
44
  const DEFAULT_SCREENSHOT_TIMEOUT = 6e4;
46
45
  const SCREENSHOT_RETRY_DELAY = 500;
47
46
  const connectionSchema$1 = z.object({
@@ -487,8 +486,7 @@ function createUnavailableRuntimeHooks() {
487
486
  throw new Error("未配置 DevTools runtime hooks。请通过 createWeappViteMcpServer({ runtimeHooks }) 注入 automator 连接能力。");
488
487
  } };
489
488
  }
490
- //#endregion
491
- //#region src/server/runtime/devtools.ts
489
+ // src/server/runtime/devtools.ts
492
490
  const navigateSchema = {
493
491
  ...connectionInputSchema,
494
492
  path: z.string().trim().min(1).optional(),
@@ -683,8 +681,7 @@ function registerDevtoolsRuntimeTools(server, manager) {
683
681
  }
684
682
  });
685
683
  }
686
- //#endregion
687
- //#region src/server/runtime/runtimeNode.ts
684
+ // src/server/runtime/runtimeNode.ts
688
685
  const elementSelectorSchema = {
689
686
  ...connectionInputSchema,
690
687
  selector: z.string().trim().min(1),
@@ -983,8 +980,7 @@ function toRecord(value) {
983
980
  function toNumber(value) {
984
981
  return typeof value === "number" && Number.isFinite(value) ? value : void 0;
985
982
  }
986
- //#endregion
987
- //#region src/server/runtime/runtimePage.ts
983
+ // src/server/runtime/runtimePage.ts
988
984
  const selectorSchema = {
989
985
  ...connectionInputSchema,
990
986
  selector: z.string().trim().min(1),
@@ -1186,8 +1182,7 @@ function registerRuntimePageTools(server, manager) {
1186
1182
  }
1187
1183
  });
1188
1184
  }
1189
- //#endregion
1190
- //#region src/server/runtime/index.ts
1185
+ // src/server/runtime/index.ts
1191
1186
  function registerRuntimeTools(server, options) {
1192
1187
  const manager = options.manager ?? new RuntimeSessionManager(options.workspaceRoot, options.runtimeHooks);
1193
1188
  registerDevtoolsRuntimeTools(server, manager);
@@ -1195,8 +1190,7 @@ function registerRuntimeTools(server, options) {
1195
1190
  registerRuntimeNodeTools(server, manager);
1196
1191
  return manager;
1197
1192
  }
1198
- //#endregion
1199
- //#region src/acceptance.ts
1193
+ // src/acceptance.ts
1200
1194
  function acceptanceRuntime(parent) {
1201
1195
  return async (_server, context) => {
1202
1196
  const lease = await acquireRuntimeLease(context.root);
@@ -1280,11 +1274,9 @@ async function createRuntimeAcceptanceService(root, options = {}, hooks) {
1280
1274
  };
1281
1275
  return service;
1282
1276
  }
1283
- //#endregion
1284
- //#region package.json
1285
- var version = "2.1.0";
1286
- //#endregion
1287
- //#region src/constants.ts
1277
+ // package.json
1278
+ var version = "2.2.0";
1279
+ // src/constants.ts
1288
1280
  const MCP_SERVER_NAME = "@weapp-vite/mcp";
1289
1281
  const MCP_SERVER_VERSION = version;
1290
1282
  const EXPOSED_PACKAGES = {
@@ -1318,8 +1310,7 @@ const SKIPPED_DIR_NAMES = /* @__PURE__ */ new Set([
1318
1310
  "dist",
1319
1311
  "coverage"
1320
1312
  ]);
1321
- //#endregion
1322
- //#region src/workspace.ts
1313
+ // src/workspace.ts
1323
1314
  function hasWorkspaceMarkers(dir) {
1324
1315
  return fs.existsSync(path.join(dir, "pnpm-workspace.yaml")) && fs.existsSync(path.join(dir, "package.json"));
1325
1316
  }
@@ -1345,8 +1336,7 @@ function resolveSubPath(root, relativePath) {
1345
1336
  if (path.isAbsolute(relativePath)) throw new Error("仅支持相对路径");
1346
1337
  return assertInsideRoot(root, path.resolve(root, relativePath));
1347
1338
  }
1348
- //#endregion
1349
- //#region src/exposedPackages.ts
1339
+ // src/exposedPackages.ts
1350
1340
  async function pathExists(filePath) {
1351
1341
  try {
1352
1342
  await fs$1.access(filePath);
@@ -1443,8 +1433,7 @@ async function resolveExposedPackages(workspaceRoot) {
1443
1433
  return [];
1444
1434
  }).sort((a, b) => a.id.localeCompare(b.id));
1445
1435
  }
1446
- //#endregion
1447
- //#region src/server/acceptance.ts
1436
+ // src/server/acceptance.ts
1448
1437
  function registerAcceptanceTools(server, service) {
1449
1438
  const json = (data) => {
1450
1439
  const structuredContent = redactValue(data);
@@ -1547,8 +1536,7 @@ function registerAcceptanceTools(server, service) {
1547
1536
  }));
1548
1537
  return server;
1549
1538
  }
1550
- //#endregion
1551
- //#region src/server/prompts.ts
1539
+ // src/server/prompts.ts
1552
1540
  function registerServerPrompts(server, options) {
1553
1541
  const { packageIds, packageIdSchema } = options;
1554
1542
  server.registerPrompt("plan-weapp-vite-change", {
@@ -1642,8 +1630,7 @@ function registerServerPrompts(server, options) {
1642
1630
  }] };
1643
1631
  });
1644
1632
  }
1645
- //#endregion
1646
- //#region src/fileOps.ts
1633
+ // src/fileOps.ts
1647
1634
  async function walkFilesRecursive(root, current, output, maxResults) {
1648
1635
  if (output.length >= maxResults) return;
1649
1636
  const entries = await fs$1.readdir(current, { withFileTypes: true });
@@ -1714,8 +1701,7 @@ async function searchTextInDirectory(root, query, options) {
1714
1701
  }
1715
1702
  return matches;
1716
1703
  }
1717
- //#endregion
1718
- //#region src/commandOps.ts
1704
+ // src/commandOps.ts
1719
1705
  const ALLOWED_COMMANDS = /* @__PURE__ */ new Set([
1720
1706
  "pnpm",
1721
1707
  "node",
@@ -1781,8 +1767,7 @@ async function runCommand(workspaceRoot, command, args, options) {
1781
1767
  timedOut
1782
1768
  };
1783
1769
  }
1784
- //#endregion
1785
- //#region src/server/shared.ts
1770
+ // src/server/shared.ts
1786
1771
  async function resolvePackageRoot(workspaceRoot, packageId) {
1787
1772
  const resolved = await resolveExposedPackage(workspaceRoot, packageId);
1788
1773
  if (!resolved.sourceRoot) throw new Error(`当前工作区中的 ${packageId} 不包含源码目录,请改为优先读取本地随包文档。`);
@@ -1803,8 +1788,7 @@ async function runWeappViteCliTool(workspaceRoot, input) {
1803
1788
  if (Array.isArray(input.args) && input.args.length > 0) finalArgs.push(...input.args);
1804
1789
  return runCommand(workspaceRoot, "node", finalArgs, { timeoutMs: input.timeoutMs ?? 12e4 });
1805
1790
  }
1806
- //#endregion
1807
- //#region src/server/resources.ts
1791
+ // src/server/resources.ts
1808
1792
  function registerServerResources(server, options) {
1809
1793
  const { workspaceRoot, packageIds, exposedPackages } = options;
1810
1794
  server.registerResource("workspace-catalog", "weapp-vite://workspace/catalog", {
@@ -1880,16 +1864,14 @@ function registerServerResources(server, options) {
1880
1864
  }
1881
1865
  });
1882
1866
  }
1883
- //#endregion
1884
- //#region src/catalog.ts
1867
+ // src/catalog.ts
1885
1868
  async function loadPackageSummary(workspaceRoot, id) {
1886
1869
  return resolveExposedPackage(workspaceRoot, id);
1887
1870
  }
1888
1871
  async function loadExposedCatalog(workspaceRoot) {
1889
1872
  return resolveExposedPackages(workspaceRoot);
1890
1873
  }
1891
- //#endregion
1892
- //#region src/server/tools.ts
1874
+ // src/server/tools.ts
1893
1875
  function registerServerTools(server, options) {
1894
1876
  const { workspaceRoot, packageIds, packageIdSchema } = options;
1895
1877
  server.registerTool("workspace_catalog", {
@@ -2137,8 +2119,7 @@ function registerServerTools(server, options) {
2137
2119
  }
2138
2120
  });
2139
2121
  }
2140
- //#endregion
2141
- //#region src/server/index.ts
2122
+ // src/server/index.ts
2142
2123
  const packageIds = Object.keys(EXPOSED_PACKAGES);
2143
2124
  const packageIdSchema = z.enum(packageIds);
2144
2125
  async function createWeappViteMcpServerFactory(options) {
@@ -2210,8 +2191,7 @@ async function createWeappViteMcpServer(options) {
2210
2191
  workspaceRoot: factory.workspaceRoot
2211
2192
  };
2212
2193
  }
2213
- //#endregion
2214
- //#region src/server/runtime/rest.ts
2194
+ // src/server/runtime/rest.ts
2215
2195
  const connectionSchema = z.object({
2216
2196
  cliPath: z.string().trim().min(1).optional(),
2217
2197
  devtoolsChannel: z.enum([
@@ -2505,8 +2485,7 @@ async function handleRuntimeRestRequest(req, res, options) {
2505
2485
  }
2506
2486
  return true;
2507
2487
  }
2508
- //#endregion
2509
- //#region src/runtime.ts
2488
+ // src/runtime.ts
2510
2489
  function normalizeEndpoint(input) {
2511
2490
  const value = typeof input === "string" ? input.trim() : "";
2512
2491
  if (!value) return DEFAULT_MCP_ENDPOINT;
@@ -2637,8 +2616,7 @@ async function startWeappViteMcpServer(options) {
2637
2616
  if ((options?.transport ?? "stdio") === "streamable-http") return startStreamableHttpServer(options ?? {});
2638
2617
  return await startStdioServer(options);
2639
2618
  }
2640
- //#endregion
2641
- //#region src/index.ts
2619
+ // src/index.ts
2642
2620
  function isDirectExecution() {
2643
2621
  const entry = process.argv[1];
2644
2622
  if (!entry) return false;
@@ -2653,5 +2631,4 @@ if (isDirectExecution()) startStdioServer().catch((error) => {
2653
2631
  process.stderr.write(`[mcp] server start failed\n${message}\n`);
2654
2632
  process.exitCode = 1;
2655
2633
  });
2656
- //#endregion
2657
2634
  export { DEFAULT_MAX_FILE_CHARS, DEFAULT_MAX_OUTPUT_CHARS, DEFAULT_MAX_RESULTS, DEFAULT_MCP_ENDPOINT, DEFAULT_MCP_HOST, DEFAULT_MCP_PORT, DEFAULT_RUNTIME_REST_ENDPOINT, DEFAULT_TIMEOUT_MS, EXPOSED_PACKAGES, MCP_SERVER_NAME, MCP_SERVER_VERSION, SKIPPED_DIR_NAMES, acceptanceRuntime, assertInsideRoot, createRuntimeAcceptanceService, createWeappViteMcpServer, createWeappViteMcpServerFactory, formatJson, listFilesInDirectory, loadExposedCatalog, loadPackageSummary, normalizeErrorMessage, readFileContent, registerAcceptanceTools, resolveSubPath, resolveWorkspaceRoot, runCommand, searchTextInDirectory, startStdioServer, startWeappViteMcpServer, toToolError, toToolResult };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@weapp-vite/mcp",
3
3
  "type": "module",
4
- "version": "2.1.0",
4
+ "version": "2.2.0",
5
5
  "description": "@weapp-vite/mcp tools and runtime components for modern WeChat and multi-platform mini-program development.",
6
6
  "author": "ice breaker <1324318532@qq.com>",
7
7
  "license": "ISC",
@@ -37,19 +37,19 @@
37
37
  "dist"
38
38
  ],
39
39
  "engines": {
40
- "node": ">=22.12.0"
40
+ "node": "^22.23.4 || ^24.22.1 || >=26.12.1"
41
41
  },
42
42
  "publishConfig": {
43
43
  "access": "public",
44
44
  "registry": "https://registry.npmjs.org"
45
45
  },
46
46
  "dependencies": {
47
- "@modelcontextprotocol/node": "^2.1.1",
48
- "@modelcontextprotocol/server": "^2.3.1",
49
- "@weapp-core/constants": "0.4.0",
50
- "@weapp-vite/acceptance": "0.1.1",
51
- "@weapp-vite/devtools-runtime": "0.6.0",
52
- "weapp-ide-cli": "6.3.0",
47
+ "@modelcontextprotocol/node": "^2.1.2",
48
+ "@modelcontextprotocol/server": "^2.4.0",
49
+ "@weapp-core/constants": "0.5.0",
50
+ "@weapp-vite/acceptance": "0.2.0",
51
+ "@weapp-vite/devtools-runtime": "0.7.0",
52
+ "weapp-ide-cli": "6.4.0",
53
53
  "zod": "^4.6.7"
54
54
  },
55
55
  "tsd": {
@@ -59,7 +59,7 @@
59
59
  }
60
60
  },
61
61
  "devDependencies": {
62
- "@modelcontextprotocol/client": "^2.3.1"
62
+ "@modelcontextprotocol/client": "^2.4.0"
63
63
  },
64
64
  "scripts": {
65
65
  "dev": "tsdown -w --sourcemap",