localwp-mcp 0.1.9 → 0.1.11

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
@@ -230,6 +230,7 @@ Use:
230
230
  - `execute_wp_cli`
231
231
  - `wp_call_function`
232
232
  - `wp_call_static_method`
233
+ - `execute_wp_php_readonly`
233
234
  - `execute_wp_php`
234
235
 
235
236
  Examples:
@@ -239,12 +240,28 @@ Examples:
239
240
  - list posts or users
240
241
  - run plugin-specific WP-CLI commands
241
242
  - call a function or static method inside the loaded WordPress runtime with explicit JSON args
243
+ - run protected read-only PHP snippets or PHP files inside the loaded WordPress runtime
242
244
  - run high-trust PHP snippets or PHP files inside the loaded WordPress runtime in `full-access`
243
245
 
244
246
  `execute_wp_cli` is for ordinary WP-CLI commands. It intentionally blocks `eval`, `eval-file`, `shell`, and `db query`, and blocked commands return structured policy details with suggested alternatives.
245
247
 
246
248
  `wp_call_function` and `wp_call_static_method` are read-oriented runtime inspection tools. They run inside the loaded WordPress runtime with explicit JSON arguments and add best-effort read-only guardrails around common SQL writes, HTTP requests, and outgoing email.
247
249
 
250
+ `execute_wp_php_readonly` is the protected arbitrary-snippet companion to those tools. It runs a PHP snippet or workspace/site `.php` file inside the loaded WordPress runtime with the same best-effort read-only guardrails, so you can inspect composed logic without jumping straight to unrestricted PHP execution. For snippet workflows, `stdout` is usually the primary output field, while `rawResultType` and `rawResult` preserve the underlying PHP include return value for debugging.
251
+
252
+ When a read-only tool blocks side effects, the top-level response becomes explicit instead of exposing a success-looking raw mutation result as authoritative. Those responses set `outcome` to `blocked_side_effects`, return a wrapped `result`, preserve the raw callable/snippet return value in `rawResultType` and `rawResult`, and include a richer `readOnlyState` with:
253
+
254
+ - `blockedSideEffects`
255
+ - `blockedSqlVerbs`
256
+ - `blockedSqlCount`
257
+ - `blockedHttpCount`
258
+ - `blockedMailCount`
259
+ - `writesBlocked`
260
+ - `sideEffectsPrevented`
261
+ - `transactionStarted`
262
+ - `transactionRolledBack`
263
+ - `transactionCommitted`
264
+
248
265
  `execute_wp_php` is the explicit high-trust runtime path for `full-access`. It runs a PHP snippet or workspace/site `.php` file inside the selected site's loaded WordPress runtime using a file-based `eval-file` flow.
249
266
 
250
267
  ### Work With the Database
@@ -309,6 +326,7 @@ Use `preview_restore_backup` when you want to inspect the restore plan, effectiv
309
326
  - `execute_wp_cli`
310
327
  - `wp_call_function`
311
328
  - `wp_call_static_method`
329
+ - `execute_wp_php_readonly`
312
330
  - `execute_wp_php`
313
331
  - `mysql_query`
314
332
  - `mysql_execute`
@@ -41,6 +41,7 @@ const restrictedWpFlags = new Map([
41
41
  message: "The '--require' flag is not allowed here because it can load arbitrary PHP before WP-CLI runs.",
42
42
  reason: "The --require flag can load arbitrary PHP before WP-CLI runs, so it is reserved for dedicated MCP runtime tools.",
43
43
  suggestedAlternatives: [
44
+ "Use execute_wp_php_readonly for protected runtime snippets.",
44
45
  "Use execute_wp_php for high-trust runtime PHP.",
45
46
  "Use wp_call_function or wp_call_static_method for read-oriented runtime inspection.",
46
47
  ],
@@ -53,6 +54,7 @@ const restrictedWpFlags = new Map([
53
54
  message: "The '--exec' flag is not allowed here because it can execute arbitrary PHP before WP-CLI runs.",
54
55
  reason: "The --exec flag can execute arbitrary PHP before WP-CLI runs, so it is reserved for dedicated MCP runtime tools.",
55
56
  suggestedAlternatives: [
57
+ "Use execute_wp_php_readonly for protected runtime snippets.",
56
58
  "Use execute_wp_php for high-trust runtime PHP.",
57
59
  "Use wp_call_function or wp_call_static_method for read-oriented runtime inspection.",
58
60
  ],
@@ -84,6 +86,7 @@ const wpCliAlwaysBlockedRules = [
84
86
  blockedFeature: "eval",
85
87
  reason: "Inline WP-CLI eval is disabled because it enables arbitrary PHP execution through the general WP-CLI tool.",
86
88
  suggestedAlternatives: [
89
+ "execute_wp_php_readonly for protected runtime snippets",
87
90
  "execute_wp_php in full-access",
88
91
  "execute_wp_cli with standard WP-CLI commands",
89
92
  "mysql_query for read-only SQL inspection",
@@ -95,6 +98,7 @@ const wpCliAlwaysBlockedRules = [
95
98
  blockedFeature: "eval-file",
96
99
  reason: "WP-CLI eval-file is reserved for the dedicated runtime PHP tool so file-based execution can stay explicit and easier to audit.",
97
100
  suggestedAlternatives: [
101
+ "execute_wp_php_readonly for protected runtime snippets",
98
102
  "execute_wp_php in full-access",
99
103
  "execute_wp_cli with standard WP-CLI commands",
100
104
  ],
@@ -127,6 +131,7 @@ const wpCliAlwaysBlockedRules = [
127
131
  reason: "Interactive WP-CLI shell access is blocked because it would bypass the MCP's non-interactive guardrails.",
128
132
  suggestedAlternatives: [
129
133
  "execute_wp_cli with standard commands",
134
+ "execute_wp_php_readonly for protected runtime snippets",
130
135
  "execute_wp_php in full-access",
131
136
  ],
132
137
  },
@@ -1 +1 @@
1
- {"version":3,"file":"permissions.js","sourceRoot":"","sources":["../src/permissions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"permissions.js","sourceRoot":"","sources":["../src/permissions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ export declare function registerExecuteWpPhpReadonlyTool(server: McpServer): void;
@@ -0,0 +1,108 @@
1
+ import { rm } from "fs/promises";
2
+ import { z } from "zod";
3
+ import { config } from "../config.js";
4
+ import { buildSiteContext, summarizeSite } from "../local-sites.js";
5
+ import { createErrorToolResult, createJsonToolResult } from "../results.js";
6
+ import { siteSelectorSchema } from "../tool-schemas.js";
7
+ import { assertWpCliProcessSucceeded, formatWpCliProcessError, runWpCliArgsRaw, } from "../wp-cli.js";
8
+ import { describeReadOnlyRuntimeOutcome, extractWpReadonlyPhpPayload, prepareReadonlyWpPhpExecutionFiles, resolveReadOnlyRuntimeResult, } from "../wp-runtime.js";
9
+ export function registerExecuteWpPhpReadonlyTool(server) {
10
+ server.registerTool("execute_wp_php_readonly", {
11
+ description: "Runs a best-effort read-only PHP snippet or PHP file inside the selected LocalWP site's loaded WordPress runtime using file-based execution plus SQL, HTTP, and mail guardrails.",
12
+ inputSchema: {
13
+ ...siteSelectorSchema,
14
+ phpCode: z
15
+ .string()
16
+ .optional()
17
+ .describe("Optional inline PHP to run after WordPress loads. If you omit '<?php', the tool will prepend it for you."),
18
+ filePath: z
19
+ .string()
20
+ .optional()
21
+ .describe("Optional absolute path or working-directory-relative path to a readable .php file inside the current workspace or selected Local site."),
22
+ },
23
+ annotations: {
24
+ readOnlyHint: true,
25
+ },
26
+ }, async ({ siteId, siteName, phpCode, filePath }) => {
27
+ try {
28
+ const context = await buildSiteContext({ siteId, siteName });
29
+ const files = await prepareReadonlyWpPhpExecutionFiles({
30
+ siteRoot: context.site.absolutePath,
31
+ phpCode,
32
+ filePath,
33
+ });
34
+ try {
35
+ const result = await runWpCliArgsRaw(context, [
36
+ `--require=${files.guardPath}`,
37
+ "eval-file",
38
+ files.scriptPath,
39
+ ]);
40
+ const { parsed, wpCliStatus, wpCliWarning } = resolveReadonlyPhpProcessResult(context, result);
41
+ const semanticResult = resolveReadOnlyRuntimeResult({
42
+ rawResultType: parsed.payload.rawResultType,
43
+ rawResult: parsed.payload.rawResult,
44
+ readOnlyState: parsed.payload.readOnlyState,
45
+ });
46
+ const readOnlyOutcome = describeReadOnlyRuntimeOutcome(parsed.payload.readOnlyState);
47
+ return createJsonToolResult({
48
+ site: summarizeSite(context.site),
49
+ selectionMethod: context.selectionMethod,
50
+ accessProfile: config.profile,
51
+ inspectionMode: "best-effort-read-only",
52
+ executionEngine: "wp eval-file with read-only guard",
53
+ sourceMode: files.sourceMode,
54
+ sourcePath: files.sourcePath,
55
+ outcome: semanticResult.outcome,
56
+ resultType: semanticResult.resultType,
57
+ result: semanticResult.result,
58
+ rawResultType: parsed.payload.rawResultType,
59
+ rawResult: parsed.payload.rawResult,
60
+ stdout: parsed.payload.stdout || null,
61
+ remainingStdout: parsed.remainingStdout || null,
62
+ readOnlyState: readOnlyOutcome.readOnlyState,
63
+ stderr: result.stderr || null,
64
+ wpCliExitCode: result.exitCode,
65
+ wpCliStatus,
66
+ wpCliWarning,
67
+ caveats: [
68
+ "This tool is designed for inspection and adds best-effort read-only guardrails.",
69
+ "It blocks common SQL writes on the main WordPress database connection plus outgoing HTTP and email.",
70
+ "It is not a full PHP sandbox, so custom side effects outside those paths are still theoretically possible.",
71
+ ],
72
+ });
73
+ }
74
+ finally {
75
+ for (const cleanupPath of files.cleanupPaths) {
76
+ await rm(cleanupPath, {
77
+ recursive: true,
78
+ force: true,
79
+ });
80
+ }
81
+ }
82
+ }
83
+ catch (error) {
84
+ return createErrorToolResult(error);
85
+ }
86
+ });
87
+ }
88
+ function resolveReadonlyPhpProcessResult(context, result) {
89
+ let parsed = null;
90
+ try {
91
+ parsed = extractWpReadonlyPhpPayload(result.stdout);
92
+ }
93
+ catch {
94
+ parsed = null;
95
+ }
96
+ if (!parsed) {
97
+ assertWpCliProcessSucceeded(context, result);
98
+ parsed = extractWpReadonlyPhpPayload(result.stdout);
99
+ }
100
+ return {
101
+ parsed,
102
+ wpCliStatus: result.exitCode === 0 ? "ok" : "payload_recovered_from_nonzero_exit",
103
+ wpCliWarning: result.exitCode === 0
104
+ ? null
105
+ : formatWpCliProcessError(context, result),
106
+ };
107
+ }
108
+ //# sourceMappingURL=execute-wp-php-readonly.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execute-wp-php-readonly.js","sourceRoot":"","sources":["../../src/tools/execute-wp-php-readonly.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,7 @@ import { registerDbImportTool } from "./db-import.js";
5
5
  import { registerDeleteBackupTool } from "./delete-backup.js";
6
6
  import { registerDeleteSiteFileTool } from "./delete-site-file.js";
7
7
  import { registerExecuteWpCliTool } from "./execute-wp-cli.js";
8
+ import { registerExecuteWpPhpReadonlyTool } from "./execute-wp-php-readonly.js";
8
9
  import { registerExecuteWpPhpTool } from "./execute-wp-php.js";
9
10
  import { registerListBackupsTool } from "./list-backups.js";
10
11
  import { registerListSiteFilesTool } from "./list-site-files.js";
@@ -51,6 +52,7 @@ export function registerTools(server) {
51
52
  registerMysqlExecuteTool(server);
52
53
  registerMysqlSchemaTool(server);
53
54
  registerExecuteWpCliTool(server);
55
+ registerExecuteWpPhpReadonlyTool(server);
54
56
  registerExecuteWpPhpTool(server);
55
57
  registerWpRuntimeCallTools(server);
56
58
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,gCAAgC,EAAE,MAAM,8BAA8B,CAAC;AAChF,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,iCAAiC,EAAE,MAAM,8BAA8B,CAAC;AACjF,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,gCAAgC,EAAE,MAAM,6BAA6B,CAAC;AAC/E,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,4BAA4B,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAEjE,MAAM,UAAU,aAAa,CAAC,MAAiB;IAC7C,0BAA0B,CAAC,MAAM,CAAC,CAAC;IACnC,0BAA0B,CAAC,MAAM,CAAC,CAAC;IACnC,yBAAyB,CAAC,MAAM,CAAC,CAAC;IAClC,4BAA4B,CAAC,MAAM,CAAC,CAAC;IACrC,iCAAiC,CAAC,MAAM,CAAC,CAAC;IAC1C,uBAAuB,CAAC,MAAM,CAAC,CAAC;IAChC,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAC9B,yBAAyB,CAAC,MAAM,CAAC,CAAC;IAClC,yBAAyB,CAAC,MAAM,CAAC,CAAC;IAClC,wBAAwB,CAAC,MAAM,CAAC,CAAC;IACjC,2BAA2B,CAAC,MAAM,CAAC,CAAC;IACpC,yBAAyB,CAAC,MAAM,CAAC,CAAC;IAClC,0BAA0B,CAAC,MAAM,CAAC,CAAC;IACnC,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAC/B,uBAAuB,CAAC,MAAM,CAAC,CAAC;IAChC,wBAAwB,CAAC,MAAM,CAAC,CAAC;IACjC,0BAA0B,CAAC,MAAM,CAAC,CAAC;IACnC,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAC7B,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAC7B,gCAAgC,CAAC,MAAM,CAAC,CAAC;IACzC,yBAAyB,CAAC,MAAM,CAAC,CAAC;IAClC,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAC/B,wBAAwB,CAAC,MAAM,CAAC,CAAC;IACjC,uBAAuB,CAAC,MAAM,CAAC,CAAC;IAChC,wBAAwB,CAAC,MAAM,CAAC,CAAC;IACjC,gCAAgC,CAAC,MAAM,CAAC,CAAC;IACzC,wBAAwB,CAAC,MAAM,CAAC,CAAC;IACjC,0BAA0B,CAAC,MAAM,CAAC,CAAC;AACrC,CAAC"}
@@ -1,2 +1,11 @@
1
1
  import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import type { SiteContext, SpawnResult } from "../types.js";
2
3
  export declare function registerWpRuntimeCallTools(server: McpServer): void;
4
+ export declare function resolveWpRuntimeCallProcessResult(context: Pick<SiteContext, "site">, result: Pick<SpawnResult, "stdout" | "stderr" | "exitCode" | "timedOut">): {
5
+ readonly parsed: {
6
+ payload: import("../wp-runtime.js").WpRuntimeCallResultPayload;
7
+ remainingStdout: string;
8
+ };
9
+ readonly wpCliStatus: "ok" | "payload_recovered_from_nonzero_exit";
10
+ readonly wpCliWarning: string | null;
11
+ };
@@ -4,12 +4,32 @@ import { config } from "../config.js";
4
4
  import { buildSiteContext, summarizeSite } from "../local-sites.js";
5
5
  import { createErrorToolResult, createJsonToolResult } from "../results.js";
6
6
  import { siteSelectorSchema } from "../tool-schemas.js";
7
- import { runWpCliArgs } from "../wp-cli.js";
8
- import { extractWpRuntimeCallPayload, parseWpRuntimeArgsJson, prepareWpRuntimeCallFiles, } from "../wp-runtime.js";
7
+ import { assertWpCliProcessSucceeded, formatWpCliProcessError, runWpCliArgsRaw, } from "../wp-cli.js";
8
+ import { describeReadOnlyRuntimeOutcome, extractWpRuntimeCallPayload, parseWpRuntimeArgsJson, prepareWpRuntimeCallFiles, resolveReadOnlyRuntimeResult, } from "../wp-runtime.js";
9
9
  export function registerWpRuntimeCallTools(server) {
10
10
  registerWpCallFunctionTool(server);
11
11
  registerWpCallStaticMethodTool(server);
12
12
  }
13
+ export function resolveWpRuntimeCallProcessResult(context, result) {
14
+ let parsed = null;
15
+ try {
16
+ parsed = extractWpRuntimeCallPayload(result.stdout);
17
+ }
18
+ catch {
19
+ parsed = null;
20
+ }
21
+ if (!parsed) {
22
+ assertWpCliProcessSucceeded(context, result);
23
+ parsed = extractWpRuntimeCallPayload(result.stdout);
24
+ }
25
+ return {
26
+ parsed,
27
+ wpCliStatus: result.exitCode === 0 ? "ok" : "payload_recovered_from_nonzero_exit",
28
+ wpCliWarning: result.exitCode === 0
29
+ ? null
30
+ : formatWpCliProcessError(context, result),
31
+ };
32
+ }
13
33
  function registerWpCallFunctionTool(server) {
14
34
  server.registerTool("wp_call_function", {
15
35
  description: "Runs a read-oriented function call inside the selected LocalWP site's loaded WordPress runtime using explicit JSON arguments and best-effort read-only guardrails.",
@@ -79,11 +99,14 @@ async function executeReadOnlyRuntimeCall(selection, options) {
79
99
  const context = await buildSiteContext(selection);
80
100
  const files = await prepareWpRuntimeCallFiles(options);
81
101
  try {
82
- const result = await runWpCliArgs(context, [`--require=${files.guardPath}`, "eval-file", files.scriptPath], {
83
- skipFlagValidation: true,
84
- skipPermissionCheck: true,
102
+ const result = await runWpCliArgsRaw(context, [`--require=${files.guardPath}`, "eval-file", files.scriptPath]);
103
+ const { parsed, wpCliStatus, wpCliWarning } = resolveWpRuntimeCallProcessResult(context, result);
104
+ const semanticResult = resolveReadOnlyRuntimeResult({
105
+ rawResultType: parsed.payload.rawResultType,
106
+ rawResult: parsed.payload.rawResult,
107
+ readOnlyState: parsed.payload.readOnlyState,
85
108
  });
86
- const parsed = extractWpRuntimeCallPayload(result.stdout);
109
+ const readOnlyOutcome = describeReadOnlyRuntimeOutcome(parsed.payload.readOnlyState);
87
110
  return createJsonToolResult({
88
111
  site: summarizeSite(context.site),
89
112
  selectionMethod: context.selectionMethod,
@@ -93,10 +116,17 @@ async function executeReadOnlyRuntimeCall(selection, options) {
93
116
  callType: parsed.payload.callType,
94
117
  callable: parsed.payload.callable,
95
118
  args: parsed.payload.args,
96
- resultType: parsed.payload.resultType,
97
- result: parsed.payload.result,
119
+ outcome: semanticResult.outcome,
120
+ resultType: semanticResult.resultType,
121
+ result: semanticResult.result,
122
+ rawResultType: parsed.payload.rawResultType,
123
+ rawResult: parsed.payload.rawResult,
124
+ readOnlyState: readOnlyOutcome.readOnlyState,
98
125
  stdout: parsed.remainingStdout || null,
99
126
  stderr: result.stderr || null,
127
+ wpCliExitCode: result.exitCode,
128
+ wpCliStatus,
129
+ wpCliWarning,
100
130
  caveats: [
101
131
  "This tool is designed for inspection and adds best-effort read-only guardrails.",
102
132
  "It blocks common SQL writes on the main WordPress database connection plus outgoing HTTP and email.",
@@ -1 +1 @@
1
- {"version":3,"file":"wp-runtime-call.js","sourceRoot":"","sources":["../../src/tools/wp-runtime-call.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wp-runtime-call.js","sourceRoot":"","sources":["../../src/tools/wp-runtime-call.ts"],"names":[],"mappings":"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"}
package/dist/wp-cli.d.ts CHANGED
@@ -13,6 +13,9 @@ export declare function runWpCliArgs(context: SiteContext, rawArgs: string[], op
13
13
  stdout: string;
14
14
  stderr: string;
15
15
  }>;
16
+ export declare function runWpCliArgsRaw(context: SiteContext, rawArgs: string[]): Promise<import("./types.js").SpawnResult>;
17
+ export declare function assertWpCliProcessSucceeded(context: SiteContext, result: Awaited<ReturnType<typeof runWpCliArgsRaw>>): void;
18
+ export declare function formatWpCliProcessError(context: SiteContext, result: Awaited<ReturnType<typeof runWpCliArgsRaw>>): string;
16
19
  export declare function resolveWpCliExecution(context: SiteContext): Promise<{
17
20
  tooling: import("./types.js").ResolvedLocalTooling;
18
21
  command: string;
package/dist/wp-cli.js CHANGED
@@ -20,27 +20,36 @@ export async function runWpCliArgs(context, rawArgs, options = {}) {
20
20
  if (!options.skipPermissionCheck) {
21
21
  assertWpCliPermissions(args);
22
22
  }
23
+ const result = await runWpCliArgsRaw(context, args);
24
+ assertWpCliProcessSucceeded(context, result);
25
+ return {
26
+ stdout: result.stdout || "Command executed successfully with no output.",
27
+ stderr: result.stderr,
28
+ };
29
+ }
30
+ export async function runWpCliArgsRaw(context, rawArgs) {
23
31
  const execution = await resolveWpCliExecution(context);
24
- const result = await spawnCommand(execution.command, [...execution.argsPrefix, ...args], {
32
+ return spawnCommand(execution.command, [...execution.argsPrefix, ...rawArgs], {
25
33
  cwd: execution.cwd,
26
34
  env: execution.env,
27
35
  });
36
+ }
37
+ export function assertWpCliProcessSucceeded(context, result) {
28
38
  if (result.timedOut) {
29
39
  throw new Error(`WP-CLI timed out after ${config.defaultTimeoutMs / 1000}s for site '${context.site.name}'.`);
30
40
  }
31
41
  if (result.exitCode !== 0) {
32
- throw new Error([
33
- `WP-CLI exited with code ${result.exitCode} for site '${context.site.name}'.`,
34
- result.stdout,
35
- result.stderr,
36
- ]
37
- .filter(Boolean)
38
- .join("\n\n"));
42
+ throw new Error(formatWpCliProcessError(context, result));
39
43
  }
40
- return {
41
- stdout: result.stdout || "Command executed successfully with no output.",
42
- stderr: result.stderr,
43
- };
44
+ }
45
+ export function formatWpCliProcessError(context, result) {
46
+ return [
47
+ `WP-CLI exited with code ${result.exitCode} for site '${context.site.name}'.`,
48
+ result.stdout,
49
+ result.stderr,
50
+ ]
51
+ .filter(Boolean)
52
+ .join("\n\n");
44
53
  }
45
54
  export async function resolveWpCliExecution(context) {
46
55
  const tooling = await resolveLocalTooling();
@@ -1 +1 @@
1
- {"version":3,"file":"wp-cli.js","sourceRoot":"","sources":["../src/wp-cli.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGlD,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,OAAoB,EACpB,OAAe,EACf,UAGI,EAAE;IAEN,OAAO,YAAY,CAAC,OAAO,EAAE,eAAe,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;AAClE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,OAAoB,EACpB,OAAiB,EACjB,UAGI,EAAE;IAEN,MAAM,IAAI,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;IAE1B,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QACrB,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CACb,+DAA+D,CAChE,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC;QAChC,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC;QACjC,sBAAsB,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,qBAAqB,CAAC,OAAO,CAAC,CAAC;IACvD,MAAM,MAAM,GAAG,MAAM,YAAY,CAC/B,SAAS,CAAC,OAAO,EACjB,CAAC,GAAG,SAAS,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,EAClC;QACE,GAAG,EAAE,SAAS,CAAC,GAAG;QAClB,GAAG,EAAE,SAAS,CAAC,GAAG;KACnB,CACF,CAAC;IAEF,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CACb,0BAA0B,MAAM,CAAC,gBAAgB,GAAG,IAAI,eAAe,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAC7F,CAAC;IACJ,CAAC;IAED,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CACb;YACE,2BAA2B,MAAM,CAAC,QAAQ,cAAc,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI;YAC7E,MAAM,CAAC,MAAM;YACb,MAAM,CAAC,MAAM;SACd;aACE,MAAM,CAAC,OAAO,CAAC;aACf,IAAI,CAAC,MAAM,CAAC,CAChB,CAAC;IACJ,CAAC;IAED,OAAO;QACL,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,+CAA+C;QACxE,MAAM,EAAE,MAAM,CAAC,MAAM;KACtB,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,OAAoB;IAC9D,MAAM,OAAO,GAAG,MAAM,mBAAmB,EAAE,CAAC;IAC5C,MAAM,WAAW,GAAG,qBAAqB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAE5D,OAAO;QACL,OAAO;QACP,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU;QAC/B,UAAU,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,UAAU,OAAO,CAAC,MAAM,EAAE,CAAC;QAC3D,GAAG,EAAE,OAAO,CAAC,MAAM;QACnB,GAAG,EAAE,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,CAAC;QACjD,WAAW;KACZ,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CACpB,OAAoB,EACpB,OAAwD,EACxD,WAAqB;IAErB,MAAM,GAAG,GAAsB;QAC7B,GAAG,OAAO,CAAC,GAAG;QACd,KAAK,EAAE,OAAO,CAAC,YAAY;QAC3B,gCAAgC,EAAE,GAAG;QACrC,IAAI,EAAE,CAAC,GAAG,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;KAC9E,CAAC;IAEF,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;QACxB,GAAG,CAAC,kBAAkB,GAAG,OAAO,CAAC,WAAW,CAAC;IAC/C,CAAC;IAED,MAAM,aAAa,GACjB,OAAO,CAAC,GAAG,CAAC,eAAe;QACzB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;QACvE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC3C,MAAM,cAAc,GAClB,MAAM,CAAC,QAAQ,KAAK,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe;QACxD,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,aAAa,CAAC;QACzC,CAAC,CAAC,IAAI,CAAC;IACX,MAAM,iBAAiB,GACrB,MAAM,CAAC,QAAQ,KAAK,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe;QACxD,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,CAAC;QAC7D,CAAC,CAAC,IAAI,CAAC;IAEX,IAAI,OAAO,CAAC,qBAAqB,EAAE,CAAC;QAClC,GAAG,CAAC,wBAAwB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAC/D,CAAC;IAED,IAAI,cAAc,EAAE,CAAC;QACnB,GAAG,CAAC,qBAAqB,GAAG,cAAc,CAAC;IAC7C,CAAC;IAED,IAAI,iBAAiB,EAAE,CAAC;QACtB,GAAG,CAAC,MAAM,GAAG,iBAAiB,CAAC;IACjC,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,qBAAqB,CAC5B,OAAoB,EACpB,OAAwD;IAExD,MAAM,aAAa,GACjB,OAAO,CAAC,GAAG,CAAC,eAAe;QACzB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;QACvE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC3C,MAAM,cAAc,GAClB,MAAM,CAAC,QAAQ,KAAK,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe;QACxD,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,aAAa,CAAC;QACzC,CAAC,CAAC,IAAI,CAAC;IACX,MAAM,iBAAiB,GACrB,MAAM,CAAC,QAAQ,KAAK,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe;QACxD,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,aAAa,EAAE,KAAK,CAAC;QAChD,CAAC,CAAC,IAAI,CAAC;IAEX,OAAO;QACL,cAAc;QACd,iBAAiB;QACjB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC;QACtC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;QACpC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC;QAC/B,GAAG,OAAO,CAAC,aAAa;KACzB,CAAC,MAAM,CAAC,OAAO,CAAa,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAAe;IAC7C,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAE7B,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,IAAI,KAAK,GAAqB,IAAI,CAAC;IACnC,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,aAAa,GAAG,KAAK,CAAC;IAE1B,KAAK,MAAM,SAAS,IAAI,KAAK,EAAE,CAAC;QAC9B,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,IAAI,SAAS,CAAC;YACrB,QAAQ,GAAG,KAAK,CAAC;YACjB,aAAa,GAAG,IAAI,CAAC;YACrB,SAAS;QACX,CAAC;QAED,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;YAClB,IAAI,SAAS,KAAK,GAAG,EAAE,CAAC;gBACtB,KAAK,GAAG,IAAI,CAAC;YACf,CAAC;iBAAM,CAAC;gBACN,OAAO,IAAI,SAAS,CAAC;YACvB,CAAC;YACD,aAAa,GAAG,IAAI,CAAC;YACrB,SAAS;QACX,CAAC;QAED,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;YAClB,IAAI,SAAS,KAAK,GAAG,EAAE,CAAC;gBACtB,KAAK,GAAG,IAAI,CAAC;YACf,CAAC;iBAAM,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;gBAC9B,QAAQ,GAAG,IAAI,CAAC;YAClB,CAAC;iBAAM,CAAC;gBACN,OAAO,IAAI,SAAS,CAAC;YACvB,CAAC;YACD,aAAa,GAAG,IAAI,CAAC;YACrB,SAAS;QACX,CAAC;QAED,IAAI,SAAS,KAAK,GAAG,IAAI,SAAS,KAAK,GAAG,EAAE,CAAC;YAC3C,KAAK,GAAG,SAAS,CAAC;YAClB,aAAa,GAAG,IAAI,CAAC;YACrB,SAAS;QACX,CAAC;QAED,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;YACvB,QAAQ,GAAG,IAAI,CAAC;YAChB,aAAa,GAAG,IAAI,CAAC;YACrB,SAAS;QACX,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YACzB,IAAI,aAAa,EAAE,CAAC;gBAClB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACrB,OAAO,GAAG,EAAE,CAAC;gBACb,aAAa,GAAG,KAAK,CAAC;YACxB,CAAC;YACD,SAAS;QACX,CAAC;QAED,OAAO,IAAI,SAAS,CAAC;QACrB,aAAa,GAAG,IAAI,CAAC;IACvB,CAAC;IAED,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC7D,CAAC;IAED,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACtE,CAAC;IAED,IAAI,aAAa,EAAE,CAAC;QAClB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACvB,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"wp-cli.js","sourceRoot":"","sources":["../src/wp-cli.ts"],"names":[],"mappings":"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"}
@@ -9,13 +9,40 @@ export interface PreparedWpRuntimeCallFiles {
9
9
  guardPath: string;
10
10
  scriptPath: string;
11
11
  }
12
+ export interface PreparedReadonlyWpPhpExecutionFiles {
13
+ cleanupPaths: string[];
14
+ guardPath: string;
15
+ scriptPath: string;
16
+ sourceMode: "inline" | "file";
17
+ sourcePath: string | null;
18
+ }
19
+ export interface ReadOnlyRuntimeState {
20
+ blockedSideEffects: string[];
21
+ blockedSqlVerbs: string[];
22
+ blockedSqlCount: number;
23
+ blockedHttpCount: number;
24
+ blockedMailCount: number;
25
+ writesBlocked: boolean;
26
+ sideEffectsPrevented: boolean;
27
+ transactionStarted: boolean;
28
+ transactionRolledBack: boolean;
29
+ transactionCommitted: boolean;
30
+ }
12
31
  export interface WpRuntimeCallResultPayload {
13
32
  ok: boolean;
14
33
  callType: "function" | "static_method";
15
34
  callable: string;
16
35
  args: unknown[];
17
- resultType: string;
18
- result: unknown;
36
+ rawResultType: string;
37
+ rawResult: unknown;
38
+ readOnlyState?: ReadOnlyRuntimeState;
39
+ }
40
+ export interface WpReadonlyPhpExecutionPayload {
41
+ ok: boolean;
42
+ stdout: string;
43
+ rawResultType: string;
44
+ rawResult: unknown;
45
+ readOnlyState?: ReadOnlyRuntimeState;
19
46
  }
20
47
  export declare function prepareWpPhpSource(options: {
21
48
  siteRoot: string;
@@ -39,10 +66,75 @@ export declare function prepareWpRuntimeCallFiles(options: {
39
66
  guardPath: string;
40
67
  scriptPath: string;
41
68
  }>;
69
+ export declare function prepareReadonlyWpPhpExecutionFiles(options: {
70
+ siteRoot: string;
71
+ phpCode?: string;
72
+ filePath?: string;
73
+ cwd?: string;
74
+ }): Promise<{
75
+ cleanupPaths: string[];
76
+ guardPath: string;
77
+ scriptPath: string;
78
+ sourceMode: "file" | "inline";
79
+ sourcePath: string | null;
80
+ }>;
42
81
  export declare function extractWpRuntimeCallPayload(stdout: string): {
43
82
  payload: WpRuntimeCallResultPayload;
44
83
  remainingStdout: string;
45
84
  };
85
+ export declare function extractWpReadonlyPhpPayload(stdout: string): {
86
+ payload: WpReadonlyPhpExecutionPayload;
87
+ remainingStdout: string;
88
+ };
89
+ export declare function normalizeReadOnlyRuntimeState(readOnlyState?: Partial<ReadOnlyRuntimeState> | null): ReadOnlyRuntimeState;
90
+ export declare function describeReadOnlyRuntimeOutcome(readOnlyState?: Partial<ReadOnlyRuntimeState> | null): {
91
+ outcome: "ok";
92
+ readOnlyState: ReadOnlyRuntimeState;
93
+ blockedResult: null;
94
+ } | {
95
+ outcome: "blocked_side_effects";
96
+ readOnlyState: ReadOnlyRuntimeState;
97
+ blockedResult: {
98
+ status: string;
99
+ reason: string;
100
+ blockedSideEffects: string[];
101
+ writesBlocked: boolean;
102
+ sideEffectsPrevented: true;
103
+ transactionStarted: boolean;
104
+ transactionRolledBack: boolean;
105
+ transactionCommitted: boolean;
106
+ };
107
+ };
108
+ export declare function resolveReadOnlyRuntimeResult(options: {
109
+ rawResultType: string;
110
+ rawResult: unknown;
111
+ readOnlyState?: Partial<ReadOnlyRuntimeState> | null;
112
+ }): {
113
+ outcome: "ok";
114
+ readOnlyState: ReadOnlyRuntimeState;
115
+ rawResultType: string;
116
+ rawResult: unknown;
117
+ resultType: string;
118
+ result: unknown;
119
+ } | {
120
+ outcome: "blocked_side_effects";
121
+ readOnlyState: ReadOnlyRuntimeState;
122
+ rawResultType: string;
123
+ rawResult: unknown;
124
+ resultType: string;
125
+ result: {
126
+ rawResultType: string;
127
+ rawResult: unknown;
128
+ status: string;
129
+ reason: string;
130
+ blockedSideEffects: string[];
131
+ writesBlocked: boolean;
132
+ sideEffectsPrevented: true;
133
+ transactionStarted: boolean;
134
+ transactionRolledBack: boolean;
135
+ transactionCommitted: boolean;
136
+ };
137
+ };
46
138
  export declare function resolveTrustedWpPhpFilePath(siteRoot: string, requestedPath: string, options?: {
47
139
  cwd?: string;
48
140
  }): Promise<string>;
@@ -6,7 +6,7 @@ export async function prepareWpPhpSource(options) {
6
6
  const hasPhpCode = Boolean(options.phpCode?.trim());
7
7
  const hasFilePath = Boolean(options.filePath?.trim());
8
8
  if (hasPhpCode === hasFilePath) {
9
- throw new Error("Pass exactly one of 'phpCode' or 'filePath' to execute_wp_php.");
9
+ throw new Error("Pass exactly one of 'phpCode' or 'filePath'.");
10
10
  }
11
11
  if (hasFilePath) {
12
12
  const absolutePath = await resolveTrustedWpPhpFilePath(options.siteRoot, options.filePath, {
@@ -91,13 +91,121 @@ export async function prepareWpRuntimeCallFiles(options) {
91
91
  scriptPath,
92
92
  };
93
93
  }
94
+ export async function prepareReadonlyWpPhpExecutionFiles(options) {
95
+ const source = await prepareWpPhpSource(options);
96
+ const tempDirectory = await mkdtemp(path.join(os.tmpdir(), "localwp-mcp-wp-readonly-"));
97
+ const guardPath = path.join(tempDirectory, "read-only-guard.php");
98
+ const scriptPath = path.join(tempDirectory, "execute-readonly.php");
99
+ await writeFile(guardPath, buildReadOnlyGuardPhp(), "utf8");
100
+ await writeFile(scriptPath, buildReadonlyPhpExecutionPhp(source.absolutePath), "utf8");
101
+ return {
102
+ cleanupPaths: [tempDirectory, ...(source.cleanupPath ? [source.cleanupPath] : [])],
103
+ guardPath,
104
+ scriptPath,
105
+ sourceMode: source.mode,
106
+ sourcePath: source.sourcePath,
107
+ };
108
+ }
94
109
  export function extractWpRuntimeCallPayload(stdout) {
110
+ return extractMarkedJsonPayload(stdout, "The runtime call did not return a structured payload. Check stdout/stderr for PHP notices or fatal errors.");
111
+ }
112
+ export function extractWpReadonlyPhpPayload(stdout) {
113
+ return extractMarkedJsonPayload(stdout, "The read-only PHP execution did not return a structured payload. Check stdout/stderr for PHP notices or fatal errors.");
114
+ }
115
+ export function normalizeReadOnlyRuntimeState(readOnlyState) {
116
+ const blockedSideEffects = Array.from(new Set((readOnlyState?.blockedSideEffects || []).filter(Boolean)));
117
+ const blockedSqlVerbs = Array.from(new Set((readOnlyState?.blockedSqlVerbs || []).filter(Boolean)));
118
+ const blockedSqlCount = Math.max(0, Number(readOnlyState?.blockedSqlCount || 0));
119
+ const blockedHttpCount = Math.max(0, Number(readOnlyState?.blockedHttpCount || 0));
120
+ const blockedMailCount = Math.max(0, Number(readOnlyState?.blockedMailCount || 0));
121
+ if (blockedSqlCount > 0 || blockedSqlVerbs.length > 0) {
122
+ blockedSideEffects.push("sql_write");
123
+ }
124
+ if (blockedHttpCount > 0) {
125
+ blockedSideEffects.push("http_request");
126
+ }
127
+ if (blockedMailCount > 0) {
128
+ blockedSideEffects.push("mail");
129
+ }
130
+ const uniqueBlockedSideEffects = Array.from(new Set(blockedSideEffects));
131
+ const writesBlocked = Boolean(readOnlyState?.writesBlocked) ||
132
+ blockedSqlCount > 0 ||
133
+ blockedSqlVerbs.length > 0 ||
134
+ uniqueBlockedSideEffects.includes("sql_write");
135
+ const sideEffectsPrevented = Boolean(readOnlyState?.sideEffectsPrevented) ||
136
+ writesBlocked ||
137
+ blockedHttpCount > 0 ||
138
+ blockedMailCount > 0 ||
139
+ uniqueBlockedSideEffects.length > 0;
140
+ return {
141
+ blockedSideEffects: uniqueBlockedSideEffects,
142
+ blockedSqlVerbs,
143
+ blockedSqlCount,
144
+ blockedHttpCount,
145
+ blockedMailCount,
146
+ writesBlocked,
147
+ sideEffectsPrevented,
148
+ transactionStarted: Boolean(readOnlyState?.transactionStarted),
149
+ transactionRolledBack: Boolean(readOnlyState?.transactionRolledBack),
150
+ transactionCommitted: Boolean(readOnlyState?.transactionCommitted),
151
+ };
152
+ }
153
+ export function describeReadOnlyRuntimeOutcome(readOnlyState) {
154
+ const normalizedReadOnlyState = normalizeReadOnlyRuntimeState(readOnlyState);
155
+ if (!normalizedReadOnlyState.sideEffectsPrevented) {
156
+ return {
157
+ outcome: "ok",
158
+ readOnlyState: normalizedReadOnlyState,
159
+ blockedResult: null,
160
+ };
161
+ }
162
+ return {
163
+ outcome: "blocked_side_effects",
164
+ readOnlyState: normalizedReadOnlyState,
165
+ blockedResult: {
166
+ status: "blocked",
167
+ reason: "Read-only guard prevented one or more side effects, so the raw return value is not authoritative.",
168
+ blockedSideEffects: normalizedReadOnlyState.blockedSideEffects,
169
+ writesBlocked: normalizedReadOnlyState.writesBlocked,
170
+ sideEffectsPrevented: normalizedReadOnlyState.sideEffectsPrevented,
171
+ transactionStarted: normalizedReadOnlyState.transactionStarted,
172
+ transactionRolledBack: normalizedReadOnlyState.transactionRolledBack,
173
+ transactionCommitted: normalizedReadOnlyState.transactionCommitted,
174
+ },
175
+ };
176
+ }
177
+ export function resolveReadOnlyRuntimeResult(options) {
178
+ const { outcome, readOnlyState, blockedResult } = describeReadOnlyRuntimeOutcome(options.readOnlyState);
179
+ if (outcome === "ok") {
180
+ return {
181
+ outcome,
182
+ readOnlyState,
183
+ rawResultType: options.rawResultType,
184
+ rawResult: options.rawResult,
185
+ resultType: options.rawResultType,
186
+ result: options.rawResult,
187
+ };
188
+ }
189
+ return {
190
+ outcome,
191
+ readOnlyState,
192
+ rawResultType: options.rawResultType,
193
+ rawResult: options.rawResult,
194
+ resultType: "localwp_mcp_read_only_blocked",
195
+ result: {
196
+ ...blockedResult,
197
+ rawResultType: options.rawResultType,
198
+ rawResult: options.rawResult,
199
+ },
200
+ };
201
+ }
202
+ function extractMarkedJsonPayload(stdout, missingPayloadMessage) {
95
203
  const startMarker = "LOCALWP_MCP_JSON_START";
96
204
  const endMarker = "LOCALWP_MCP_JSON_END";
97
205
  const startIndex = stdout.indexOf(startMarker);
98
206
  const endIndex = stdout.indexOf(endMarker);
99
207
  if (startIndex === -1 || endIndex === -1 || endIndex < startIndex) {
100
- throw new Error("The runtime call did not return a structured payload. Check stdout/stderr for PHP notices or fatal errors.");
208
+ throw new Error(missingPayloadMessage);
101
209
  }
102
210
  const jsonText = stdout
103
211
  .slice(startIndex + startMarker.length, endIndex)
@@ -128,7 +236,7 @@ export async function resolveTrustedWpPhpFilePath(siteRoot, requestedPath, optio
128
236
  ? path.resolve(trimmedPath)
129
237
  : path.resolve(baseCwd, trimmedPath);
130
238
  if (path.extname(absolutePath).toLowerCase() !== ".php") {
131
- throw new Error("execute_wp_php only allows readable '.php' files.");
239
+ throw new Error("Runtime PHP tools only allow readable '.php' files.");
132
240
  }
133
241
  if (!(await isReadablePath(absolutePath))) {
134
242
  throw new Error(`The PHP file '${requestedPath}' is not readable.`);
@@ -174,91 +282,78 @@ if (!defined('AUTOMATIC_UPDATER_DISABLED')) {
174
282
  define('AUTOMATIC_UPDATER_DISABLED', true);
175
283
  }
176
284
 
177
- if (class_exists('WP_CLI')) {
178
- WP_CLI::add_hook('after_wp_load', function () {
179
- if (function_exists('add_filter')) {
180
- add_filter('pre_http_request', function ($pre, $parsed_args, $url) {
181
- return new WP_Error(
182
- 'localwp_mcp_read_only_http_blocked',
183
- 'HTTP requests are blocked during read-only runtime inspection.'
184
- );
185
- }, 10, 3);
285
+ $GLOBALS['localwp_mcp_read_only_state'] = [
286
+ 'blockedSideEffects' => [],
287
+ 'blockedSqlVerbs' => [],
288
+ 'blockedSqlCount' => 0,
289
+ 'blockedHttpCount' => 0,
290
+ 'blockedMailCount' => 0,
291
+ 'writesBlocked' => false,
292
+ 'sideEffectsPrevented' => false,
293
+ 'transactionStarted' => false,
294
+ 'transactionRolledBack' => false,
295
+ 'transactionCommitted' => false,
296
+ 'finalized' => false,
297
+ ];
186
298
 
187
- add_filter('pre_wp_mail', function ($return, $atts) {
188
- return new WP_Error(
189
- 'localwp_mcp_read_only_mail_blocked',
190
- 'Emails are blocked during read-only runtime inspection.'
191
- );
192
- }, 10, 2);
299
+ function localwp_mcp_mark_blocked_side_effect($effect) {
300
+ if (!in_array($effect, $GLOBALS['localwp_mcp_read_only_state']['blockedSideEffects'], true)) {
301
+ $GLOBALS['localwp_mcp_read_only_state']['blockedSideEffects'][] = $effect;
302
+ }
193
303
 
194
- add_filter('query', function ($query) {
195
- $normalized_query = preg_replace('/^\\s*(?:\\/\\*.*?\\*\\/\\s*)*/s', '', (string) $query);
196
- $verb = strtoupper((string) strtok($normalized_query, " \\t\\n\\r"));
197
- $allowed_verbs = ['SELECT', 'SHOW', 'DESCRIBE', 'DESC', 'EXPLAIN', 'SET', 'START', 'ROLLBACK', 'COMMIT'];
304
+ $GLOBALS['localwp_mcp_read_only_state']['sideEffectsPrevented'] = true;
305
+ }
198
306
 
199
- if ($verb !== '' && !in_array($verb, $allowed_verbs, true)) {
200
- throw new RuntimeException(
201
- sprintf(
202
- 'Blocked SQL verb %s during read-only runtime inspection.',
203
- $verb
204
- )
205
- );
206
- }
307
+ function localwp_mcp_get_read_only_state() {
308
+ $state = $GLOBALS['localwp_mcp_read_only_state'];
207
309
 
208
- return $query;
209
- });
210
- }
310
+ $state['blockedSideEffects'] = array_values(array_unique($state['blockedSideEffects'] ?? []));
311
+ $state['blockedSqlVerbs'] = array_values(array_unique($state['blockedSqlVerbs'] ?? []));
312
+ $state['blockedSqlCount'] = (int) ($state['blockedSqlCount'] ?? 0);
313
+ $state['blockedHttpCount'] = (int) ($state['blockedHttpCount'] ?? 0);
314
+ $state['blockedMailCount'] = (int) ($state['blockedMailCount'] ?? 0);
315
+ $state['writesBlocked'] =
316
+ !empty($state['writesBlocked']) ||
317
+ $state['blockedSqlCount'] > 0 ||
318
+ !empty($state['blockedSqlVerbs']);
319
+ $state['sideEffectsPrevented'] =
320
+ !empty($state['sideEffectsPrevented']) ||
321
+ $state['writesBlocked'] ||
322
+ $state['blockedHttpCount'] > 0 ||
323
+ $state['blockedMailCount'] > 0 ||
324
+ !empty($state['blockedSideEffects']);
325
+ $state['transactionStarted'] = !empty($state['transactionStarted']);
326
+ $state['transactionRolledBack'] = !empty($state['transactionRolledBack']);
327
+ $state['transactionCommitted'] = !empty($state['transactionCommitted']);
211
328
 
212
- global $wpdb;
329
+ return $state;
330
+ }
213
331
 
214
- if (isset($wpdb) && $wpdb instanceof wpdb) {
215
- $wpdb->query('SET SESSION TRANSACTION READ ONLY');
216
- $wpdb->query('START TRANSACTION READ ONLY');
332
+ function localwp_mcp_finalize_read_only_state() {
333
+ if (!empty($GLOBALS['localwp_mcp_read_only_state']['finalized'])) {
334
+ return localwp_mcp_get_read_only_state();
335
+ }
217
336
 
218
- register_shutdown_function(function () use ($wpdb) {
219
- $wpdb->query('ROLLBACK');
220
- });
337
+ global $wpdb;
338
+
339
+ if (
340
+ !empty($GLOBALS['localwp_mcp_read_only_state']['transactionStarted']) &&
341
+ empty($GLOBALS['localwp_mcp_read_only_state']['transactionCommitted']) &&
342
+ isset($wpdb) &&
343
+ $wpdb instanceof wpdb
344
+ ) {
345
+ $rollback_result = @$wpdb->query('ROLLBACK');
346
+
347
+ if (false !== $rollback_result) {
348
+ $GLOBALS['localwp_mcp_read_only_state']['transactionRolledBack'] = true;
221
349
  }
222
- });
223
- }
224
- `;
225
- }
226
- function buildWpRuntimeCallPhp(options) {
227
- const argsLiteral = toPhpSingleQuotedString(JSON.stringify(options.args));
228
- const callableDescription = options.callType === "function"
229
- ? options.functionName || ""
230
- : `${options.className || ""}::${options.methodName || ""}`;
231
- const callableLiteral = toPhpSingleQuotedString(callableDescription);
232
- if (options.callType === "function") {
233
- assertPhpFunctionIdentifier(options.functionName || "");
234
- }
235
- else {
236
- assertPhpClassIdentifier(options.className || "");
237
- assertPhpMethodIdentifier(options.methodName || "");
238
350
  }
239
- const invocationPhp = options.callType === "function"
240
- ? `$callable_name = ${toPhpSingleQuotedString(options.functionName || "")};
241
- if (!function_exists($callable_name)) {
242
- throw new RuntimeException(sprintf('Function %s does not exist in the loaded WordPress runtime.', $callable_name));
243
- }
244
351
 
245
- $result = call_user_func_array($callable_name, $args);`
246
- : `$class_name = ${toPhpSingleQuotedString(options.className || "")};
247
- $method_name = ${toPhpSingleQuotedString(options.methodName || "")};
248
- $callable = [$class_name, $method_name];
352
+ $GLOBALS['localwp_mcp_read_only_state']['finalized'] = true;
249
353
 
250
- if (!is_callable($callable)) {
251
- throw new RuntimeException(
252
- sprintf(
253
- 'Static method %s::%s is not callable in the loaded WordPress runtime.',
254
- $class_name,
255
- $method_name
256
- )
257
- );
354
+ return localwp_mcp_get_read_only_state();
258
355
  }
259
356
 
260
- $result = call_user_func_array($callable, $args);`;
261
- return `<?php
262
357
  function localwp_mcp_normalize_value($value, $depth = 0) {
263
358
  if ($depth >= 6) {
264
359
  return ['__type' => 'truncated', 'message' => 'Maximum normalization depth reached.'];
@@ -322,23 +417,156 @@ function localwp_mcp_normalize_value($value, $depth = 0) {
322
417
  ];
323
418
  }
324
419
 
420
+ if (class_exists('WP_CLI')) {
421
+ WP_CLI::add_hook('after_wp_load', function () {
422
+ if (function_exists('add_filter')) {
423
+ add_filter('pre_http_request', function ($pre, $parsed_args, $url) {
424
+ $GLOBALS['localwp_mcp_read_only_state']['blockedHttpCount']++;
425
+ localwp_mcp_mark_blocked_side_effect('http_request');
426
+
427
+ return new WP_Error(
428
+ 'localwp_mcp_read_only_http_blocked',
429
+ 'HTTP requests are blocked during read-only runtime inspection.'
430
+ );
431
+ }, 10, 3);
432
+
433
+ add_filter('pre_wp_mail', function ($return, $atts) {
434
+ $GLOBALS['localwp_mcp_read_only_state']['blockedMailCount']++;
435
+ localwp_mcp_mark_blocked_side_effect('mail');
436
+
437
+ return new WP_Error(
438
+ 'localwp_mcp_read_only_mail_blocked',
439
+ 'Emails are blocked during read-only runtime inspection.'
440
+ );
441
+ }, 10, 2);
442
+
443
+ add_filter('query', function ($query) {
444
+ $normalized_query = preg_replace('/^\\s*(?:\\/\\*.*?\\*\\/\\s*)*/s', '', (string) $query);
445
+ $verb = strtoupper((string) strtok($normalized_query, " \\t\\n\\r"));
446
+ $allowed_verbs = ['SELECT', 'SHOW', 'DESCRIBE', 'DESC', 'EXPLAIN', 'SET', 'START', 'ROLLBACK', 'COMMIT'];
447
+
448
+ if ($verb !== '' && !in_array($verb, $allowed_verbs, true)) {
449
+ $GLOBALS['localwp_mcp_read_only_state']['blockedSideEffects'][] = 'sql_write';
450
+ $GLOBALS['localwp_mcp_read_only_state']['blockedSqlVerbs'][] = $verb;
451
+ $GLOBALS['localwp_mcp_read_only_state']['blockedSqlCount']++;
452
+ $GLOBALS['localwp_mcp_read_only_state']['writesBlocked'] = true;
453
+ localwp_mcp_mark_blocked_side_effect('sql_write');
454
+ return 'SELECT 0 AS localwp_mcp_blocked_write';
455
+ }
456
+
457
+ return $query;
458
+ });
459
+ }
460
+
461
+ global $wpdb;
462
+
463
+ if (isset($wpdb) && $wpdb instanceof wpdb) {
464
+ if (false !== $wpdb->query('SET SESSION TRANSACTION READ ONLY')) {
465
+ if (false !== $wpdb->query('START TRANSACTION READ ONLY')) {
466
+ $GLOBALS['localwp_mcp_read_only_state']['transactionStarted'] = true;
467
+ }
468
+ }
469
+
470
+ register_shutdown_function('localwp_mcp_finalize_read_only_state');
471
+ }
472
+ });
473
+ }
474
+ `;
475
+ }
476
+ function buildWpRuntimeCallPhp(options) {
477
+ const argsLiteral = toPhpSingleQuotedString(JSON.stringify(options.args));
478
+ const callableDescription = options.callType === "function"
479
+ ? options.functionName || ""
480
+ : `${options.className || ""}::${options.methodName || ""}`;
481
+ const callableLiteral = toPhpSingleQuotedString(callableDescription);
482
+ if (options.callType === "function") {
483
+ assertPhpFunctionIdentifier(options.functionName || "");
484
+ }
485
+ else {
486
+ assertPhpClassIdentifier(options.className || "");
487
+ assertPhpMethodIdentifier(options.methodName || "");
488
+ }
489
+ const invocationPhp = options.callType === "function"
490
+ ? `$callable_name = ${toPhpSingleQuotedString(options.functionName || "")};
491
+ if (!function_exists($callable_name)) {
492
+ throw new RuntimeException(sprintf('Function %s does not exist in the loaded WordPress runtime.', $callable_name));
493
+ }
494
+
495
+ $result = call_user_func_array($callable_name, $args);`
496
+ : `$class_name = ${toPhpSingleQuotedString(options.className || "")};
497
+ $method_name = ${toPhpSingleQuotedString(options.methodName || "")};
498
+ $callable = [$class_name, $method_name];
499
+
500
+ if (!is_callable($callable)) {
501
+ throw new RuntimeException(
502
+ sprintf(
503
+ 'Static method %s::%s is not callable in the loaded WordPress runtime.',
504
+ $class_name,
505
+ $method_name
506
+ )
507
+ );
508
+ }
509
+
510
+ $result = call_user_func_array($callable, $args);`;
511
+ return `<?php
325
512
  try {
326
513
  $args = json_decode(${argsLiteral}, true, 512, JSON_THROW_ON_ERROR);
327
514
  ${invocationPhp}
515
+ $read_only_state = function_exists('localwp_mcp_finalize_read_only_state')
516
+ ? localwp_mcp_finalize_read_only_state()
517
+ : null;
328
518
 
329
519
  $payload = [
330
520
  'ok' => true,
331
521
  'callType' => ${toPhpSingleQuotedString(options.callType)},
332
522
  'callable' => ${callableLiteral},
333
523
  'args' => localwp_mcp_normalize_value($args),
334
- 'resultType' => get_debug_type($result),
335
- 'result' => localwp_mcp_normalize_value($result),
524
+ 'rawResultType' => get_debug_type($result),
525
+ 'rawResult' => localwp_mcp_normalize_value($result),
526
+ 'readOnlyState' => $read_only_state,
527
+ ];
528
+
529
+ echo "\\nLOCALWP_MCP_JSON_START\\n";
530
+ echo wp_json_encode($payload, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES);
531
+ echo "\\nLOCALWP_MCP_JSON_END\\n";
532
+ } catch (Throwable $exception) {
533
+ fwrite(STDERR, $exception->getMessage() . PHP_EOL);
534
+ exit(1);
535
+ }
536
+ `;
537
+ }
538
+ function buildReadonlyPhpExecutionPhp(sourcePath) {
539
+ return `<?php
540
+ $source_path = ${toPhpSingleQuotedString(sourcePath)};
541
+
542
+ try {
543
+ ob_start();
544
+ $result = include $source_path;
545
+ $stdout = ob_get_clean();
546
+ $read_only_state = function_exists('localwp_mcp_finalize_read_only_state')
547
+ ? localwp_mcp_finalize_read_only_state()
548
+ : null;
549
+
550
+ $payload = [
551
+ 'ok' => true,
552
+ 'stdout' => $stdout,
553
+ 'rawResultType' => get_debug_type($result),
554
+ 'rawResult' => localwp_mcp_normalize_value($result),
555
+ 'readOnlyState' => $read_only_state,
336
556
  ];
337
557
 
338
558
  echo "\\nLOCALWP_MCP_JSON_START\\n";
339
559
  echo wp_json_encode($payload, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES);
340
560
  echo "\\nLOCALWP_MCP_JSON_END\\n";
341
561
  } catch (Throwable $exception) {
562
+ if (ob_get_level() > 0) {
563
+ $stdout = ob_get_clean();
564
+
565
+ if ($stdout !== '') {
566
+ fwrite(STDOUT, $stdout);
567
+ }
568
+ }
569
+
342
570
  fwrite(STDERR, $exception->getMessage() . PHP_EOL);
343
571
  exit(1);
344
572
  }
@@ -1 +1 @@
1
- {"version":3,"file":"wp-runtime.js","sourceRoot":"","sources":["../src/wp-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAEjE,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAwBpD,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,OAKxC;IACC,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IACpD,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IAEtD,IAAI,UAAU,KAAK,WAAW,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CACb,gEAAgE,CACjE,CAAC;IACJ,CAAC;IAED,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,YAAY,GAAG,MAAM,2BAA2B,CACpD,OAAO,CAAC,QAAQ,EAChB,OAAO,CAAC,QAAS,EACjB;YACE,GAAG,EAAE,OAAO,CAAC,GAAG;SACjB,CACF,CAAC;QAEF,OAAO;YACL,IAAI,EAAE,MAAM;YACZ,YAAY;YACZ,UAAU,EAAE,YAAY;YACxB,WAAW,EAAE,IAAI;SAClB,CAAC;IACJ,CAAC;IAED,MAAM,aAAa,GAAG,MAAM,OAAO,CACjC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,qBAAqB,CAAC,CAC9C,CAAC;IACF,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,qBAAqB,CAAC,CAAC;IACrE,MAAM,SAAS,CAAC,YAAY,EAAE,sBAAsB,CAAC,OAAO,CAAC,OAAQ,CAAC,EAAE,MAAM,CAAC,CAAC;IAEhF,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,YAAY;QACZ,UAAU,EAAE,IAAI;QAChB,WAAW,EAAE,aAAa;KAC3B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,OAAe;IACpD,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAE/B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC7D,CAAC;IAED,IACE,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC;QAC3B,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC;QACzB,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,EACxB,CAAC;QACD,OAAO,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,IAAI,CAAC;IAC3D,CAAC;IAED,OAAO,UAAU,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AAClE,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,QAA4B;IACjE,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,CAAC;QACtB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,MAAe,CAAC;IAEpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,MAAM,IAAI,KAAK,CAAC,4CAA4C,OAAO,EAAE,CAAC,CAAC;IACzE,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;IACvE,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,YAAoB;IAC9D,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;QACrD,MAAM,IAAI,KAAK,CACb,0FAA0F,CAC3F,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,UAAkB;IAC1D,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QACjD,MAAM,IAAI,KAAK,CACb,kEAAkE,CACnE,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,SAAiB;IACxD,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QAClD,MAAM,IAAI,KAAK,CACb,uFAAuF,CACxF,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAAC,OAM/C;IACC,MAAM,aAAa,GAAG,MAAM,OAAO,CACjC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,sBAAsB,CAAC,CAC/C,CAAC;IACF,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,qBAAqB,CAAC,CAAC;IAClE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;IAExD,MAAM,SAAS,CAAC,SAAS,EAAE,qBAAqB,EAAE,EAAE,MAAM,CAAC,CAAC;IAC5D,MAAM,SAAS,CACb,UAAU,EACV,qBAAqB,CAAC;QACpB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,IAAI,EAAE,OAAO,CAAC,IAAI;KACnB,CAAC,EACF,MAAM,CACP,CAAC;IAEF,OAAO;QACL,WAAW,EAAE,aAAa;QAC1B,SAAS;QACT,UAAU;KAC0B,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,MAAc;IACxD,MAAM,WAAW,GAAG,wBAAwB,CAAC;IAC7C,MAAM,SAAS,GAAG,sBAAsB,CAAC;IACzC,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAC/C,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAE3C,IAAI,UAAU,KAAK,CAAC,CAAC,IAAI,QAAQ,KAAK,CAAC,CAAC,IAAI,QAAQ,GAAG,UAAU,EAAE,CAAC;QAClE,MAAM,IAAI,KAAK,CACb,4GAA4G,CAC7G,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM;SACpB,KAAK,CAAC,UAAU,GAAG,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC;SAChD,IAAI,EAAE,CAAC;IACV,MAAM,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC;IACzD,MAAM,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;IACxE,MAAM,eAAe,GAAG,CAAC,aAAa,EAAE,cAAc,CAAC;SACpD,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,IAAI,CAAC;QACH,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAA+B;YAC3D,eAAe;SAChB,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,MAAM,IAAI,KAAK,CACb,yDAAyD,OAAO,EAAE,CACnE,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,QAAgB,EAChB,aAAqB,EACrB,UAEI,EAAE;IAEN,MAAM,WAAW,GAAG,aAAa,CAAC,IAAI,EAAE,CAAC;IAEzC,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAC3D,CAAC;IAED,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAC7C,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;QAC/C,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;QAC3B,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IAEvC,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE,KAAK,MAAM,EAAE,CAAC;QACxD,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;IACvE,CAAC;IAED,IAAI,CAAC,CAAC,MAAM,cAAc,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CAAC,iBAAiB,aAAa,oBAAoB,CAAC,CAAC;IACtE,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,CAAC;IAC3C,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CACb,aAAa,aAAa,8BAA8B,CACzD,CAAC;IACJ,CAAC;IAED,MAAM,cAAc,GAAG,MAAM,QAAQ,CAAC,YAAY,CAAC,CAAC;IACpD,MAAM,YAAY,GAAG,MAAM,yBAAyB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAExE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,gBAAgB,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC;QACjF,MAAM,IAAI,KAAK,CACb,qFAAqF,CACtF,CAAC;IACJ,CAAC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,KAAK,UAAU,yBAAyB,CAAC,QAAgB,EAAE,GAAW;IACpE,MAAM,SAAS,GAAG,CAAC,MAAM,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;IAE7C,IAAI,CAAC,CAAC,MAAM,cAAc,CAAC,GAAG,CAAC,CAAC,IAAI,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1D,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAC;IACxC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QACrC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC9B,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,gBAAgB,CAAC,aAAqB;IAC7C,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IACjD,OAAO,YAAY,KAAK,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC;AACxD,CAAC;AAED,SAAS,gBAAgB,CAAC,QAAgB,EAAE,aAAqB;IAC/D,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;IAC5D,OAAO,CACL,YAAY,KAAK,EAAE;QACnB,YAAY,KAAK,GAAG;QACpB,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CACnE,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB;IAC5B,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuDR,CAAC;AACF,CAAC;AAED,SAAS,qBAAqB,CAAC,OAM9B;IACC,MAAM,WAAW,GAAG,uBAAuB,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1E,MAAM,mBAAmB,GACvB,OAAO,CAAC,QAAQ,KAAK,UAAU;QAC7B,CAAC,CAAC,OAAO,CAAC,YAAY,IAAI,EAAE;QAC5B,CAAC,CAAC,GAAG,OAAO,CAAC,SAAS,IAAI,EAAE,KAAK,OAAO,CAAC,UAAU,IAAI,EAAE,EAAE,CAAC;IAChE,MAAM,eAAe,GAAG,uBAAuB,CAAC,mBAAmB,CAAC,CAAC;IAErE,IAAI,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;QACpC,2BAA2B,CAAC,OAAO,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC;IAC1D,CAAC;SAAM,CAAC;QACN,wBAAwB,CAAC,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;QAClD,yBAAyB,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,MAAM,aAAa,GACjB,OAAO,CAAC,QAAQ,KAAK,UAAU;QAC7B,CAAC,CAAC,oBAAoB,uBAAuB,CAAC,OAAO,CAAC,YAAY,IAAI,EAAE,CAAC;;;;;uDAKxB;QACjD,CAAC,CAAC,iBAAiB,uBAAuB,CAAC,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC;iBACxD,uBAAuB,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC;;;;;;;;;;;;;kDAahB,CAAC;IAEjD,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0BAiEiB,WAAW;MAC/B,aAAa;;;;wBAIK,uBAAuB,CAAC,OAAO,CAAC,QAAQ,CAAC;wBACzC,eAAe;;;;;;;;;;;;;CAatC,CAAC;AACF,CAAC;AAED,SAAS,uBAAuB,CAAC,KAAa;IAC5C,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC;AAClE,CAAC"}
1
+ {"version":3,"file":"wp-runtime.js","sourceRoot":"","sources":["../src/wp-runtime.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "localwp-mcp",
3
- "version": "0.1.9",
3
+ "version": "0.1.11",
4
4
  "description": "A LocalWP-aware MCP server for WordPress developers with simple safe and full-access profiles, logs, doctor diagnostics, SQL access, backups, restore flows, MCP resources/prompts, and site-aware WP-CLI.",
5
5
  "type": "module",
6
6
  "packageManager": "pnpm@10.32.1",