localwp-mcp 0.1.10 → 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":"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"}
@@ -5,7 +5,7 @@ import { buildSiteContext, summarizeSite } from "../local-sites.js";
5
5
  import { createErrorToolResult, createJsonToolResult } from "../results.js";
6
6
  import { siteSelectorSchema } from "../tool-schemas.js";
7
7
  import { assertWpCliProcessSucceeded, formatWpCliProcessError, runWpCliArgsRaw, } from "../wp-cli.js";
8
- import { extractWpRuntimeCallPayload, parseWpRuntimeArgsJson, prepareWpRuntimeCallFiles, } from "../wp-runtime.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);
@@ -101,6 +101,12 @@ async function executeReadOnlyRuntimeCall(selection, options) {
101
101
  try {
102
102
  const result = await runWpCliArgsRaw(context, [`--require=${files.guardPath}`, "eval-file", files.scriptPath]);
103
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,
108
+ });
109
+ const readOnlyOutcome = describeReadOnlyRuntimeOutcome(parsed.payload.readOnlyState);
104
110
  return createJsonToolResult({
105
111
  site: summarizeSite(context.site),
106
112
  selectionMethod: context.selectionMethod,
@@ -110,9 +116,12 @@ async function executeReadOnlyRuntimeCall(selection, options) {
110
116
  callType: parsed.payload.callType,
111
117
  callable: parsed.payload.callable,
112
118
  args: parsed.payload.args,
113
- resultType: parsed.payload.resultType,
114
- result: parsed.payload.result,
115
- readOnlyState: parsed.payload.readOnlyState || null,
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,
116
125
  stdout: parsed.remainingStdout || null,
117
126
  stderr: result.stderr || null,
118
127
  wpCliExitCode: result.exitCode,
@@ -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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"}
@@ -9,18 +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;
19
- readOnlyState?: {
20
- blockedSqlVerbs: string[];
21
- blockedSqlCount: number;
22
- transactionStarted: boolean;
23
- };
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;
24
46
  }
25
47
  export declare function prepareWpPhpSource(options: {
26
48
  siteRoot: string;
@@ -44,10 +66,75 @@ export declare function prepareWpRuntimeCallFiles(options: {
44
66
  guardPath: string;
45
67
  scriptPath: string;
46
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
+ }>;
47
81
  export declare function extractWpRuntimeCallPayload(stdout: string): {
48
82
  payload: WpRuntimeCallResultPayload;
49
83
  remainingStdout: string;
50
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
+ };
51
138
  export declare function resolveTrustedWpPhpFilePath(siteRoot: string, requestedPath: string, options?: {
52
139
  cwd?: string;
53
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.`);
@@ -175,15 +283,147 @@ if (!defined('AUTOMATIC_UPDATER_DISABLED')) {
175
283
  }
176
284
 
177
285
  $GLOBALS['localwp_mcp_read_only_state'] = [
286
+ 'blockedSideEffects' => [],
178
287
  'blockedSqlVerbs' => [],
179
288
  'blockedSqlCount' => 0,
289
+ 'blockedHttpCount' => 0,
290
+ 'blockedMailCount' => 0,
291
+ 'writesBlocked' => false,
292
+ 'sideEffectsPrevented' => false,
180
293
  'transactionStarted' => false,
294
+ 'transactionRolledBack' => false,
295
+ 'transactionCommitted' => false,
296
+ 'finalized' => false,
181
297
  ];
182
298
 
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
+ }
303
+
304
+ $GLOBALS['localwp_mcp_read_only_state']['sideEffectsPrevented'] = true;
305
+ }
306
+
307
+ function localwp_mcp_get_read_only_state() {
308
+ $state = $GLOBALS['localwp_mcp_read_only_state'];
309
+
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']);
328
+
329
+ return $state;
330
+ }
331
+
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
+ }
336
+
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;
349
+ }
350
+ }
351
+
352
+ $GLOBALS['localwp_mcp_read_only_state']['finalized'] = true;
353
+
354
+ return localwp_mcp_get_read_only_state();
355
+ }
356
+
357
+ function localwp_mcp_normalize_value($value, $depth = 0) {
358
+ if ($depth >= 6) {
359
+ return ['__type' => 'truncated', 'message' => 'Maximum normalization depth reached.'];
360
+ }
361
+
362
+ if (is_null($value) || is_bool($value) || is_int($value) || is_float($value) || is_string($value)) {
363
+ return $value;
364
+ }
365
+
366
+ if ($value instanceof WP_Error) {
367
+ return [
368
+ '__type' => 'WP_Error',
369
+ 'codes' => $value->get_error_codes(),
370
+ 'messages' => $value->get_error_messages(),
371
+ ];
372
+ }
373
+
374
+ if ($value instanceof JsonSerializable) {
375
+ return localwp_mcp_normalize_value($value->jsonSerialize(), $depth + 1);
376
+ }
377
+
378
+ if ($value instanceof Traversable) {
379
+ return localwp_mcp_normalize_value(iterator_to_array($value), $depth + 1);
380
+ }
381
+
382
+ if (is_array($value)) {
383
+ $normalized = [];
384
+
385
+ foreach ($value as $key => $item) {
386
+ $normalized[$key] = localwp_mcp_normalize_value($item, $depth + 1);
387
+ }
388
+
389
+ return $normalized;
390
+ }
391
+
392
+ if (is_object($value)) {
393
+ $normalized = [
394
+ '__type' => 'object',
395
+ 'class' => get_class($value),
396
+ 'properties' => [],
397
+ ];
398
+
399
+ foreach (get_object_vars($value) as $key => $item) {
400
+ $normalized['properties'][$key] = localwp_mcp_normalize_value($item, $depth + 1);
401
+ }
402
+
403
+ if (method_exists($value, '__toString')) {
404
+ try {
405
+ $normalized['stringValue'] = (string) $value;
406
+ } catch (Throwable $exception) {
407
+ $normalized['stringValueError'] = $exception->getMessage();
408
+ }
409
+ }
410
+
411
+ return $normalized;
412
+ }
413
+
414
+ return [
415
+ '__type' => 'unknown',
416
+ 'description' => get_debug_type($value),
417
+ ];
418
+ }
419
+
183
420
  if (class_exists('WP_CLI')) {
184
421
  WP_CLI::add_hook('after_wp_load', function () {
185
422
  if (function_exists('add_filter')) {
186
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
+
187
427
  return new WP_Error(
188
428
  'localwp_mcp_read_only_http_blocked',
189
429
  'HTTP requests are blocked during read-only runtime inspection.'
@@ -191,6 +431,9 @@ if (class_exists('WP_CLI')) {
191
431
  }, 10, 3);
192
432
 
193
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
+
194
437
  return new WP_Error(
195
438
  'localwp_mcp_read_only_mail_blocked',
196
439
  'Emails are blocked during read-only runtime inspection.'
@@ -203,8 +446,11 @@ if (class_exists('WP_CLI')) {
203
446
  $allowed_verbs = ['SELECT', 'SHOW', 'DESCRIBE', 'DESC', 'EXPLAIN', 'SET', 'START', 'ROLLBACK', 'COMMIT'];
204
447
 
205
448
  if ($verb !== '' && !in_array($verb, $allowed_verbs, true)) {
449
+ $GLOBALS['localwp_mcp_read_only_state']['blockedSideEffects'][] = 'sql_write';
206
450
  $GLOBALS['localwp_mcp_read_only_state']['blockedSqlVerbs'][] = $verb;
207
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');
208
454
  return 'SELECT 0 AS localwp_mcp_blocked_write';
209
455
  }
210
456
 
@@ -221,11 +467,7 @@ if (class_exists('WP_CLI')) {
221
467
  }
222
468
  }
223
469
 
224
- register_shutdown_function(function () use ($wpdb) {
225
- if (!empty($GLOBALS['localwp_mcp_read_only_state']['transactionStarted'])) {
226
- @$wpdb->query('ROLLBACK');
227
- }
228
- });
470
+ register_shutdown_function('localwp_mcp_finalize_read_only_state');
229
471
  }
230
472
  });
231
473
  }
@@ -267,91 +509,64 @@ if (!is_callable($callable)) {
267
509
 
268
510
  $result = call_user_func_array($callable, $args);`;
269
511
  return `<?php
270
- function localwp_mcp_normalize_value($value, $depth = 0) {
271
- if ($depth >= 6) {
272
- return ['__type' => 'truncated', 'message' => 'Maximum normalization depth reached.'];
273
- }
274
-
275
- if (is_null($value) || is_bool($value) || is_int($value) || is_float($value) || is_string($value)) {
276
- return $value;
277
- }
278
-
279
- if ($value instanceof WP_Error) {
280
- return [
281
- '__type' => 'WP_Error',
282
- 'codes' => $value->get_error_codes(),
283
- 'messages' => $value->get_error_messages(),
284
- ];
285
- }
286
-
287
- if ($value instanceof JsonSerializable) {
288
- return localwp_mcp_normalize_value($value->jsonSerialize(), $depth + 1);
289
- }
290
-
291
- if ($value instanceof Traversable) {
292
- return localwp_mcp_normalize_value(iterator_to_array($value), $depth + 1);
293
- }
294
-
295
- if (is_array($value)) {
296
- $normalized = [];
297
-
298
- foreach ($value as $key => $item) {
299
- $normalized[$key] = localwp_mcp_normalize_value($item, $depth + 1);
300
- }
301
-
302
- return $normalized;
303
- }
304
-
305
- if (is_object($value)) {
306
- $normalized = [
307
- '__type' => 'object',
308
- 'class' => get_class($value),
309
- 'properties' => [],
310
- ];
311
-
312
- foreach (get_object_vars($value) as $key => $item) {
313
- $normalized['properties'][$key] = localwp_mcp_normalize_value($item, $depth + 1);
314
- }
315
-
316
- if (method_exists($value, '__toString')) {
317
- try {
318
- $normalized['stringValue'] = (string) $value;
319
- } catch (Throwable $exception) {
320
- $normalized['stringValueError'] = $exception->getMessage();
321
- }
322
- }
323
-
324
- return $normalized;
325
- }
326
-
327
- return [
328
- '__type' => 'unknown',
329
- 'description' => get_debug_type($value),
330
- ];
331
- }
332
-
333
512
  try {
334
513
  $args = json_decode(${argsLiteral}, true, 512, JSON_THROW_ON_ERROR);
335
514
  ${invocationPhp}
515
+ $read_only_state = function_exists('localwp_mcp_finalize_read_only_state')
516
+ ? localwp_mcp_finalize_read_only_state()
517
+ : null;
336
518
 
337
519
  $payload = [
338
520
  'ok' => true,
339
521
  'callType' => ${toPhpSingleQuotedString(options.callType)},
340
522
  'callable' => ${callableLiteral},
341
523
  'args' => localwp_mcp_normalize_value($args),
342
- 'resultType' => get_debug_type($result),
343
- 'result' => localwp_mcp_normalize_value($result),
344
- 'readOnlyState' => [
345
- 'blockedSqlVerbs' => array_values(array_unique($GLOBALS['localwp_mcp_read_only_state']['blockedSqlVerbs'] ?? [])),
346
- 'blockedSqlCount' => (int) ($GLOBALS['localwp_mcp_read_only_state']['blockedSqlCount'] ?? 0),
347
- 'transactionStarted' => !empty($GLOBALS['localwp_mcp_read_only_state']['transactionStarted']),
348
- ],
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,
349
556
  ];
350
557
 
351
558
  echo "\\nLOCALWP_MCP_JSON_START\\n";
352
559
  echo wp_json_encode($payload, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES);
353
560
  echo "\\nLOCALWP_MCP_JSON_END\\n";
354
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
+
355
570
  fwrite(STDERR, $exception->getMessage() . PHP_EOL);
356
571
  exit(1);
357
572
  }
@@ -1 +1 @@
1
- {"version":3,"file":"wp-runtime.js","sourceRoot":"","sources":["../src/wp-runtime.ts"],"names":[],"mappings":"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"}
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;AAsDpD,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,CAAC,8CAA8C,CAAC,CAAC;IAClE,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,CAAC,KAAK,UAAU,kCAAkC,CAAC,OAKxD;IACC,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,OAAO,CAAC,CAAC;IACjD,MAAM,aAAa,GAAG,MAAM,OAAO,CACjC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,0BAA0B,CAAC,CACnD,CAAC;IACF,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,qBAAqB,CAAC,CAAC;IAClE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,sBAAsB,CAAC,CAAC;IAEpE,MAAM,SAAS,CAAC,SAAS,EAAE,qBAAqB,EAAE,EAAE,MAAM,CAAC,CAAC;IAC5D,MAAM,SAAS,CACb,UAAU,EACV,4BAA4B,CAAC,MAAM,CAAC,YAAY,CAAC,EACjD,MAAM,CACP,CAAC;IAEF,OAAO;QACL,YAAY,EAAE,CAAC,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAClF,SAAS;QACT,UAAU;QACV,UAAU,EAAE,MAAM,CAAC,IAAI;QACvB,UAAU,EAAE,MAAM,CAAC,UAAU;KACgB,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,MAAc;IACxD,OAAO,wBAAwB,CAC7B,MAAM,EACN,4GAA4G,CAC7G,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,MAAc;IACxD,OAAO,wBAAwB,CAC7B,MAAM,EACN,uHAAuH,CACxH,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,6BAA6B,CAC3C,aAAoD;IAEpD,MAAM,kBAAkB,GAAG,KAAK,CAAC,IAAI,CACnC,IAAI,GAAG,CAAC,CAAC,aAAa,EAAE,kBAAkB,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CACnE,CAAC;IACF,MAAM,eAAe,GAAG,KAAK,CAAC,IAAI,CAChC,IAAI,GAAG,CAAC,CAAC,aAAa,EAAE,eAAe,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAChE,CAAC;IACF,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,aAAa,EAAE,eAAe,IAAI,CAAC,CAAC,CAAC,CAAC;IACjF,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAC/B,CAAC,EACD,MAAM,CAAC,aAAa,EAAE,gBAAgB,IAAI,CAAC,CAAC,CAC7C,CAAC;IACF,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAC/B,CAAC,EACD,MAAM,CAAC,aAAa,EAAE,gBAAgB,IAAI,CAAC,CAAC,CAC7C,CAAC;IAEF,IAAI,eAAe,GAAG,CAAC,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtD,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACvC,CAAC;IAED,IAAI,gBAAgB,GAAG,CAAC,EAAE,CAAC;QACzB,kBAAkB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC1C,CAAC;IAED,IAAI,gBAAgB,GAAG,CAAC,EAAE,CAAC;QACzB,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;IAED,MAAM,wBAAwB,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC;IACzE,MAAM,aAAa,GACjB,OAAO,CAAC,aAAa,EAAE,aAAa,CAAC;QACrC,eAAe,GAAG,CAAC;QACnB,eAAe,CAAC,MAAM,GAAG,CAAC;QAC1B,wBAAwB,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IACjD,MAAM,oBAAoB,GACxB,OAAO,CAAC,aAAa,EAAE,oBAAoB,CAAC;QAC5C,aAAa;QACb,gBAAgB,GAAG,CAAC;QACpB,gBAAgB,GAAG,CAAC;QACpB,wBAAwB,CAAC,MAAM,GAAG,CAAC,CAAC;IAEtC,OAAO;QACL,kBAAkB,EAAE,wBAAwB;QAC5C,eAAe;QACf,eAAe;QACf,gBAAgB;QAChB,gBAAgB;QAChB,aAAa;QACb,oBAAoB;QACpB,kBAAkB,EAAE,OAAO,CAAC,aAAa,EAAE,kBAAkB,CAAC;QAC9D,qBAAqB,EAAE,OAAO,CAAC,aAAa,EAAE,qBAAqB,CAAC;QACpE,oBAAoB,EAAE,OAAO,CAAC,aAAa,EAAE,oBAAoB,CAAC;KACnE,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,8BAA8B,CAC5C,aAAoD;IAEpD,MAAM,uBAAuB,GAAG,6BAA6B,CAAC,aAAa,CAAC,CAAC;IAE7E,IAAI,CAAC,uBAAuB,CAAC,oBAAoB,EAAE,CAAC;QAClD,OAAO;YACL,OAAO,EAAE,IAAa;YACtB,aAAa,EAAE,uBAAuB;YACtC,aAAa,EAAE,IAAI;SACpB,CAAC;IACJ,CAAC;IAED,OAAO;QACL,OAAO,EAAE,sBAA+B;QACxC,aAAa,EAAE,uBAAuB;QACtC,aAAa,EAAE;YACb,MAAM,EAAE,SAAS;YACjB,MAAM,EACJ,mGAAmG;YACrG,kBAAkB,EAAE,uBAAuB,CAAC,kBAAkB;YAC9D,aAAa,EAAE,uBAAuB,CAAC,aAAa;YACpD,oBAAoB,EAAE,uBAAuB,CAAC,oBAAoB;YAClE,kBAAkB,EAAE,uBAAuB,CAAC,kBAAkB;YAC9D,qBAAqB,EAAE,uBAAuB,CAAC,qBAAqB;YACpE,oBAAoB,EAAE,uBAAuB,CAAC,oBAAoB;SACnE;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,OAI5C;IACC,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,GAAG,8BAA8B,CAC9E,OAAO,CAAC,aAAa,CACtB,CAAC;IAEF,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACrB,OAAO;YACL,OAAO;YACP,aAAa;YACb,aAAa,EAAE,OAAO,CAAC,aAAa;YACpC,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,UAAU,EAAE,OAAO,CAAC,aAAa;YACjC,MAAM,EAAE,OAAO,CAAC,SAAS;SAC1B,CAAC;IACJ,CAAC;IAED,OAAO;QACL,OAAO;QACP,aAAa;QACb,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,UAAU,EAAE,+BAA+B;QAC3C,MAAM,EAAE;YACN,GAAG,aAAa;YAChB,aAAa,EAAE,OAAO,CAAC,aAAa;YACpC,SAAS,EAAE,OAAO,CAAC,SAAS;SAC7B;KACF,CAAC;AACJ,CAAC;AAED,SAAS,wBAAwB,CAAI,MAAc,EAAE,qBAA6B;IAChF,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,CAAC,qBAAqB,CAAC,CAAC;IACzC,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,CAAM;YAClC,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,qDAAqD,CAAC,CAAC;IACzE,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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqMR,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;;0BAEiB,WAAW;MAC/B,aAAa;;;;;;;wBAOK,uBAAuB,CAAC,OAAO,CAAC,QAAQ,CAAC;wBACzC,eAAe;;;;;;;;;;;;;;CActC,CAAC;AACF,CAAC;AAED,SAAS,4BAA4B,CAAC,UAAkB;IACtD,OAAO;iBACQ,uBAAuB,CAAC,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiCnD,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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "localwp-mcp",
3
- "version": "0.1.10",
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",