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 +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.js +13 -4
- package/dist/tools/wp-runtime-call.js.map +1 -1
- package/dist/wp-runtime.d.ts +94 -7
- package/dist/wp-runtime.js +293 -78
- 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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"}
|
|
@@ -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
|
-
|
|
114
|
-
|
|
115
|
-
|
|
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":"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;AAExD,OAAO,EACL,2BAA2B,EAC3B,uBAAuB,EACvB,eAAe,GAChB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,2BAA2B,EAC3B,sBAAsB,EACtB,yBAAyB,
|
|
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-runtime.d.ts
CHANGED
|
@@ -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
|
-
|
|
18
|
-
|
|
19
|
-
readOnlyState?:
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
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>;
|
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.`);
|
|
@@ -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(
|
|
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
|
-
'
|
|
343
|
-
'
|
|
344
|
-
'readOnlyState' =>
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
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
|
}
|
package/dist/wp-runtime.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wp-runtime.js","sourceRoot":"","sources":["../src/wp-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAEjE,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AA6BpD,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,OAKxC;IACC,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IACpD,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IAEtD,IAAI,UAAU,KAAK,WAAW,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CACb,gEAAgE,CACjE,CAAC;IACJ,CAAC;IAED,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,YAAY,GAAG,MAAM,2BAA2B,CACpD,OAAO,CAAC,QAAQ,EAChB,OAAO,CAAC,QAAS,EACjB;YACE,GAAG,EAAE,OAAO,CAAC,GAAG;SACjB,CACF,CAAC;QAEF,OAAO;YACL,IAAI,EAAE,MAAM;YACZ,YAAY;YACZ,UAAU,EAAE,YAAY;YACxB,WAAW,EAAE,IAAI;SAClB,CAAC;IACJ,CAAC;IAED,MAAM,aAAa,GAAG,MAAM,OAAO,CACjC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,qBAAqB,CAAC,CAC9C,CAAC;IACF,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,qBAAqB,CAAC,CAAC;IACrE,MAAM,SAAS,CAAC,YAAY,EAAE,sBAAsB,CAAC,OAAO,CAAC,OAAQ,CAAC,EAAE,MAAM,CAAC,CAAC;IAEhF,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,YAAY;QACZ,UAAU,EAAE,IAAI;QAChB,WAAW,EAAE,aAAa;KAC3B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,OAAe;IACpD,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAE/B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC7D,CAAC;IAED,IACE,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC;QAC3B,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC;QACzB,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,EACxB,CAAC;QACD,OAAO,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,IAAI,CAAC;IAC3D,CAAC;IAED,OAAO,UAAU,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AAClE,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,QAA4B;IACjE,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,CAAC;QACtB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,MAAe,CAAC;IAEpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,MAAM,IAAI,KAAK,CAAC,4CAA4C,OAAO,EAAE,CAAC,CAAC;IACzE,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;IACvE,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,YAAoB;IAC9D,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;QACrD,MAAM,IAAI,KAAK,CACb,0FAA0F,CAC3F,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,UAAkB;IAC1D,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QACjD,MAAM,IAAI,KAAK,CACb,kEAAkE,CACnE,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,SAAiB;IACxD,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QAClD,MAAM,IAAI,KAAK,CACb,uFAAuF,CACxF,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAAC,OAM/C;IACC,MAAM,aAAa,GAAG,MAAM,OAAO,CACjC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,sBAAsB,CAAC,CAC/C,CAAC;IACF,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,qBAAqB,CAAC,CAAC;IAClE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;IAExD,MAAM,SAAS,CAAC,SAAS,EAAE,qBAAqB,EAAE,EAAE,MAAM,CAAC,CAAC;IAC5D,MAAM,SAAS,CACb,UAAU,EACV,qBAAqB,CAAC;QACpB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,IAAI,EAAE,OAAO,CAAC,IAAI;KACnB,CAAC,EACF,MAAM,CACP,CAAC;IAEF,OAAO;QACL,WAAW,EAAE,aAAa;QAC1B,SAAS;QACT,UAAU;KAC0B,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,MAAc;IACxD,MAAM,WAAW,GAAG,wBAAwB,CAAC;IAC7C,MAAM,SAAS,GAAG,sBAAsB,CAAC;IACzC,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAC/C,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAE3C,IAAI,UAAU,KAAK,CAAC,CAAC,IAAI,QAAQ,KAAK,CAAC,CAAC,IAAI,QAAQ,GAAG,UAAU,EAAE,CAAC;QAClE,MAAM,IAAI,KAAK,CACb,4GAA4G,CAC7G,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM;SACpB,KAAK,CAAC,UAAU,GAAG,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC;SAChD,IAAI,EAAE,CAAC;IACV,MAAM,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC;IACzD,MAAM,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;IACxE,MAAM,eAAe,GAAG,CAAC,aAAa,EAAE,cAAc,CAAC;SACpD,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,IAAI,CAAC;QACH,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAA+B;YAC3D,eAAe;SAChB,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,MAAM,IAAI,KAAK,CACb,yDAAyD,OAAO,EAAE,CACnE,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,QAAgB,EAChB,aAAqB,EACrB,UAEI,EAAE;IAEN,MAAM,WAAW,GAAG,aAAa,CAAC,IAAI,EAAE,CAAC;IAEzC,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAC3D,CAAC;IAED,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAC7C,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;QAC/C,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;QAC3B,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IAEvC,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE,KAAK,MAAM,EAAE,CAAC;QACxD,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;IACvE,CAAC;IAED,IAAI,CAAC,CAAC,MAAM,cAAc,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CAAC,iBAAiB,aAAa,oBAAoB,CAAC,CAAC;IACtE,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,CAAC;IAC3C,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CACb,aAAa,aAAa,8BAA8B,CACzD,CAAC;IACJ,CAAC;IAED,MAAM,cAAc,GAAG,MAAM,QAAQ,CAAC,YAAY,CAAC,CAAC;IACpD,MAAM,YAAY,GAAG,MAAM,yBAAyB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAExE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,gBAAgB,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC;QACjF,MAAM,IAAI,KAAK,CACb,qFAAqF,CACtF,CAAC;IACJ,CAAC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,KAAK,UAAU,yBAAyB,CAAC,QAAgB,EAAE,GAAW;IACpE,MAAM,SAAS,GAAG,CAAC,MAAM,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;IAE7C,IAAI,CAAC,CAAC,MAAM,cAAc,CAAC,GAAG,CAAC,CAAC,IAAI,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1D,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAC;IACxC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QACrC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC9B,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,gBAAgB,CAAC,aAAqB;IAC7C,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IACjD,OAAO,YAAY,KAAK,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC;AACxD,CAAC;AAED,SAAS,gBAAgB,CAAC,QAAgB,EAAE,aAAqB;IAC/D,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;IAC5D,OAAO,CACL,YAAY,KAAK,EAAE;QACnB,YAAY,KAAK,GAAG;QACpB,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CACnE,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB;IAC5B,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+DR,CAAC;AACF,CAAC;AAED,SAAS,qBAAqB,CAAC,OAM9B;IACC,MAAM,WAAW,GAAG,uBAAuB,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1E,MAAM,mBAAmB,GACvB,OAAO,CAAC,QAAQ,KAAK,UAAU;QAC7B,CAAC,CAAC,OAAO,CAAC,YAAY,IAAI,EAAE;QAC5B,CAAC,CAAC,GAAG,OAAO,CAAC,SAAS,IAAI,EAAE,KAAK,OAAO,CAAC,UAAU,IAAI,EAAE,EAAE,CAAC;IAChE,MAAM,eAAe,GAAG,uBAAuB,CAAC,mBAAmB,CAAC,CAAC;IAErE,IAAI,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;QACpC,2BAA2B,CAAC,OAAO,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC;IAC1D,CAAC;SAAM,CAAC;QACN,wBAAwB,CAAC,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;QAClD,yBAAyB,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,MAAM,aAAa,GACjB,OAAO,CAAC,QAAQ,KAAK,UAAU;QAC7B,CAAC,CAAC,oBAAoB,uBAAuB,CAAC,OAAO,CAAC,YAAY,IAAI,EAAE,CAAC;;;;;uDAKxB;QACjD,CAAC,CAAC,iBAAiB,uBAAuB,CAAC,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC;iBACxD,uBAAuB,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC;;;;;;;;;;;;;kDAahB,CAAC;IAEjD,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0BAiEiB,WAAW;MAC/B,aAAa;;;;wBAIK,uBAAuB,CAAC,OAAO,CAAC,QAAQ,CAAC;wBACzC,eAAe;;;;;;;;;;;;;;;;;;CAkBtC,CAAC;AACF,CAAC;AAED,SAAS,uBAAuB,CAAC,KAAa;IAC5C,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC;AAClE,CAAC"}
|
|
1
|
+
{"version":3,"file":"wp-runtime.js","sourceRoot":"","sources":["../src/wp-runtime.ts"],"names":[],"mappings":"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.
|
|
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",
|