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 +18 -0
- package/dist/permissions.js +5 -0
- package/dist/permissions.js.map +1 -1
- package/dist/tools/execute-wp-php-readonly.d.ts +2 -0
- package/dist/tools/execute-wp-php-readonly.js +108 -0
- package/dist/tools/execute-wp-php-readonly.js.map +1 -0
- package/dist/tools/index.js +2 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/wp-runtime-call.d.ts +9 -0
- package/dist/tools/wp-runtime-call.js +38 -8
- package/dist/tools/wp-runtime-call.js.map +1 -1
- package/dist/wp-cli.d.ts +3 -0
- package/dist/wp-cli.js +21 -12
- package/dist/wp-cli.js.map +1 -1
- package/dist/wp-runtime.d.ts +94 -2
- package/dist/wp-runtime.js +305 -77
- package/dist/wp-runtime.js.map +1 -1
- package/package.json +1 -1
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`
|
package/dist/permissions.js
CHANGED
|
@@ -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
|
},
|
package/dist/permissions.js.map
CHANGED
|
@@ -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,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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"}
|
package/dist/tools/index.js
CHANGED
|
@@ -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
|
}
|
package/dist/tools/index.js.map
CHANGED
|
@@ -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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"}
|
|
@@ -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 {
|
|
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
|
|
83
|
-
|
|
84
|
-
|
|
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
|
|
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
|
-
|
|
97
|
-
|
|
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":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAGjC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;
|
|
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
|
-
|
|
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
|
-
|
|
41
|
-
|
|
42
|
-
|
|
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();
|
package/dist/wp-cli.js.map
CHANGED
|
@@ -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,
|
|
1
|
+
{"version":3,"file":"wp-cli.js","sourceRoot":"","sources":["../src/wp-cli.ts"],"names":[],"mappings":"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"}
|
package/dist/wp-runtime.d.ts
CHANGED
|
@@ -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
|
-
|
|
18
|
-
|
|
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>;
|
package/dist/wp-runtime.js
CHANGED
|
@@ -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'
|
|
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(
|
|
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("
|
|
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
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
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
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
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
|
-
|
|
195
|
-
|
|
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
|
-
|
|
200
|
-
|
|
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
|
-
|
|
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
|
-
|
|
329
|
+
return $state;
|
|
330
|
+
}
|
|
213
331
|
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
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
|
-
|
|
219
|
-
|
|
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
|
-
$
|
|
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
|
-
|
|
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
|
-
'
|
|
335
|
-
'
|
|
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
|
}
|
package/dist/wp-runtime.js.map
CHANGED
|
@@ -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":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "localwp-mcp",
|
|
3
|
-
"version": "0.1.
|
|
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",
|