@local-labs-jpollock/local-cli 0.0.1
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/addon-dist/bin/mcp-stdio.js +2808 -0
- package/addon-dist/lib/common/constants.d.ts +22 -0
- package/addon-dist/lib/common/constants.js +26 -0
- package/addon-dist/lib/common/theme.d.ts +68 -0
- package/addon-dist/lib/common/theme.js +126 -0
- package/addon-dist/lib/common/types.d.ts +298 -0
- package/addon-dist/lib/common/types.js +6 -0
- package/addon-dist/lib/main/config/ConnectionInfo.d.ts +25 -0
- package/addon-dist/lib/main/config/ConnectionInfo.js +82 -0
- package/addon-dist/lib/main/index.d.ts +12 -0
- package/addon-dist/lib/main/index.js +3322 -0
- package/addon-dist/lib/main/mcp/McpAuth.d.ts +37 -0
- package/addon-dist/lib/main/mcp/McpAuth.js +87 -0
- package/addon-dist/lib/main/mcp/McpServer.d.ts +67 -0
- package/addon-dist/lib/main/mcp/McpServer.js +343 -0
- package/addon-dist/lib/main/mcp/tools/changePhpVersion.d.ts +7 -0
- package/addon-dist/lib/main/mcp/tools/changePhpVersion.js +81 -0
- package/addon-dist/lib/main/mcp/tools/cloneSite.d.ts +7 -0
- package/addon-dist/lib/main/mcp/tools/cloneSite.js +66 -0
- package/addon-dist/lib/main/mcp/tools/createSite.d.ts +7 -0
- package/addon-dist/lib/main/mcp/tools/createSite.js +137 -0
- package/addon-dist/lib/main/mcp/tools/deleteSite.d.ts +7 -0
- package/addon-dist/lib/main/mcp/tools/deleteSite.js +72 -0
- package/addon-dist/lib/main/mcp/tools/exportDatabase.d.ts +7 -0
- package/addon-dist/lib/main/mcp/tools/exportDatabase.js +72 -0
- package/addon-dist/lib/main/mcp/tools/exportSite.d.ts +7 -0
- package/addon-dist/lib/main/mcp/tools/exportSite.js +103 -0
- package/addon-dist/lib/main/mcp/tools/getLocalInfo.d.ts +7 -0
- package/addon-dist/lib/main/mcp/tools/getLocalInfo.js +72 -0
- package/addon-dist/lib/main/mcp/tools/getSite.d.ts +7 -0
- package/addon-dist/lib/main/mcp/tools/getSite.js +68 -0
- package/addon-dist/lib/main/mcp/tools/getSiteLogs.d.ts +7 -0
- package/addon-dist/lib/main/mcp/tools/getSiteLogs.js +149 -0
- package/addon-dist/lib/main/mcp/tools/helpers.d.ts +59 -0
- package/addon-dist/lib/main/mcp/tools/helpers.js +179 -0
- package/addon-dist/lib/main/mcp/tools/importDatabase.d.ts +7 -0
- package/addon-dist/lib/main/mcp/tools/importDatabase.js +109 -0
- package/addon-dist/lib/main/mcp/tools/importSite.d.ts +7 -0
- package/addon-dist/lib/main/mcp/tools/importSite.js +149 -0
- package/addon-dist/lib/main/mcp/tools/index.d.ts +26 -0
- package/addon-dist/lib/main/mcp/tools/index.js +117 -0
- package/addon-dist/lib/main/mcp/tools/listBlueprints.d.ts +7 -0
- package/addon-dist/lib/main/mcp/tools/listBlueprints.js +54 -0
- package/addon-dist/lib/main/mcp/tools/listServices.d.ts +7 -0
- package/addon-dist/lib/main/mcp/tools/listServices.js +112 -0
- package/addon-dist/lib/main/mcp/tools/listSites.d.ts +7 -0
- package/addon-dist/lib/main/mcp/tools/listSites.js +62 -0
- package/addon-dist/lib/main/mcp/tools/openAdminer.d.ts +7 -0
- package/addon-dist/lib/main/mcp/tools/openAdminer.js +59 -0
- package/addon-dist/lib/main/mcp/tools/openSite.d.ts +7 -0
- package/addon-dist/lib/main/mcp/tools/openSite.js +62 -0
- package/addon-dist/lib/main/mcp/tools/renameSite.d.ts +7 -0
- package/addon-dist/lib/main/mcp/tools/renameSite.js +70 -0
- package/addon-dist/lib/main/mcp/tools/restartSite.d.ts +7 -0
- package/addon-dist/lib/main/mcp/tools/restartSite.js +56 -0
- package/addon-dist/lib/main/mcp/tools/saveBlueprint.d.ts +7 -0
- package/addon-dist/lib/main/mcp/tools/saveBlueprint.js +89 -0
- package/addon-dist/lib/main/mcp/tools/startSite.d.ts +7 -0
- package/addon-dist/lib/main/mcp/tools/startSite.js +54 -0
- package/addon-dist/lib/main/mcp/tools/stopSite.d.ts +7 -0
- package/addon-dist/lib/main/mcp/tools/stopSite.js +54 -0
- package/addon-dist/lib/main/mcp/tools/toggleXdebug.d.ts +7 -0
- package/addon-dist/lib/main/mcp/tools/toggleXdebug.js +69 -0
- package/addon-dist/lib/main/mcp/tools/trustSsl.d.ts +7 -0
- package/addon-dist/lib/main/mcp/tools/trustSsl.js +59 -0
- package/addon-dist/lib/main/mcp/tools/wpCli.d.ts +7 -0
- package/addon-dist/lib/main/mcp/tools/wpCli.js +110 -0
- package/addon-dist/lib/main.d.ts +1 -0
- package/addon-dist/lib/main.js +10 -0
- package/addon-dist/lib/renderer/index.d.ts +7 -0
- package/addon-dist/lib/renderer/index.js +479 -0
- package/addon-dist/package.json +73 -0
- package/bin/lwp.js +10 -0
- package/lib/bootstrap/index.d.ts +98 -0
- package/lib/bootstrap/index.js +493 -0
- package/lib/bootstrap/paths.d.ts +28 -0
- package/lib/bootstrap/paths.js +96 -0
- package/lib/client/GraphQLClient.d.ts +38 -0
- package/lib/client/GraphQLClient.js +71 -0
- package/lib/client/index.d.ts +4 -0
- package/lib/client/index.js +10 -0
- package/lib/formatters/index.d.ts +75 -0
- package/lib/formatters/index.js +139 -0
- package/lib/index.d.ts +8 -0
- package/lib/index.js +1173 -0
- package/package.json +72 -0
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* list_services Tool
|
|
4
|
+
* List available Lightning Services (PHP, MySQL, Nginx versions)
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.listServicesDefinition = void 0;
|
|
8
|
+
exports.listServices = listServices;
|
|
9
|
+
exports.listServicesDefinition = {
|
|
10
|
+
name: 'list_services',
|
|
11
|
+
description: 'List available service versions (PHP, MySQL, Nginx) that can be used with sites',
|
|
12
|
+
inputSchema: {
|
|
13
|
+
type: 'object',
|
|
14
|
+
properties: {
|
|
15
|
+
type: {
|
|
16
|
+
type: 'string',
|
|
17
|
+
enum: ['php', 'database', 'webserver', 'all'],
|
|
18
|
+
description: 'Type of services to list (default: all)',
|
|
19
|
+
},
|
|
20
|
+
},
|
|
21
|
+
},
|
|
22
|
+
};
|
|
23
|
+
async function listServices(args, services) {
|
|
24
|
+
const { type = 'all' } = args;
|
|
25
|
+
try {
|
|
26
|
+
// Check if lightningServices is available
|
|
27
|
+
if (!services.lightningServices) {
|
|
28
|
+
return {
|
|
29
|
+
content: [{ type: 'text', text: 'Lightning Services not available' }],
|
|
30
|
+
isError: true,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
const registeredServices = services.lightningServices.getRegisteredServices();
|
|
34
|
+
if (!registeredServices) {
|
|
35
|
+
return {
|
|
36
|
+
content: [{ type: 'text', text: 'No services registered' }],
|
|
37
|
+
isError: true,
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
const results = [];
|
|
41
|
+
// Helper to format service list
|
|
42
|
+
const formatServices = (serviceName, serviceData) => {
|
|
43
|
+
const versions = [];
|
|
44
|
+
if (serviceData && typeof serviceData === 'object') {
|
|
45
|
+
for (const version of Object.keys(serviceData)) {
|
|
46
|
+
const info = serviceData[version];
|
|
47
|
+
const label = info?.label || serviceName;
|
|
48
|
+
versions.push(` - ${version}${label !== serviceName ? ` (${label})` : ''}`);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
return versions;
|
|
52
|
+
};
|
|
53
|
+
// PHP versions
|
|
54
|
+
if (type === 'all' || type === 'php') {
|
|
55
|
+
results.push('PHP Versions:');
|
|
56
|
+
const phpVersions = formatServices('php', registeredServices.php);
|
|
57
|
+
if (phpVersions.length > 0) {
|
|
58
|
+
results.push(...phpVersions);
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
results.push(' [No PHP versions installed]');
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
// Database versions (MySQL and MariaDB)
|
|
65
|
+
if (type === 'all' || type === 'database') {
|
|
66
|
+
results.push('\nDatabase Versions:');
|
|
67
|
+
if (registeredServices.mysql) {
|
|
68
|
+
results.push(' MySQL:');
|
|
69
|
+
const mysqlVersions = formatServices('mysql', registeredServices.mysql);
|
|
70
|
+
if (mysqlVersions.length > 0) {
|
|
71
|
+
results.push(...mysqlVersions.map((v) => ' ' + v));
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
if (registeredServices.mariadb) {
|
|
75
|
+
results.push(' MariaDB:');
|
|
76
|
+
const mariadbVersions = formatServices('mariadb', registeredServices.mariadb);
|
|
77
|
+
if (mariadbVersions.length > 0) {
|
|
78
|
+
results.push(...mariadbVersions.map((v) => ' ' + v));
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
if (!registeredServices.mysql && !registeredServices.mariadb) {
|
|
82
|
+
results.push(' [No database versions installed]');
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
// Web server versions (Nginx)
|
|
86
|
+
if (type === 'all' || type === 'webserver') {
|
|
87
|
+
results.push('\nWeb Server Versions:');
|
|
88
|
+
const nginxVersions = formatServices('nginx', registeredServices.nginx);
|
|
89
|
+
if (nginxVersions.length > 0) {
|
|
90
|
+
results.push(...nginxVersions);
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
results.push(' [No web server versions installed]');
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
return {
|
|
97
|
+
content: [
|
|
98
|
+
{
|
|
99
|
+
type: 'text',
|
|
100
|
+
text: results.join('\n'),
|
|
101
|
+
},
|
|
102
|
+
],
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
catch (error) {
|
|
106
|
+
return {
|
|
107
|
+
content: [{ type: 'text', text: `Failed to list services: ${error.message}` }],
|
|
108
|
+
isError: true,
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdFNlcnZpY2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL21haW4vbWNwL3Rvb2xzL2xpc3RTZXJ2aWNlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7OztHQUdHOzs7QUF1Qkgsb0NBb0dDO0FBdkhZLFFBQUEsc0JBQXNCLEdBQXNCO0lBQ3ZELElBQUksRUFBRSxlQUFlO0lBQ3JCLFdBQVcsRUFBRSxpRkFBaUY7SUFDOUYsV0FBVyxFQUFFO1FBQ1gsSUFBSSxFQUFFLFFBQVE7UUFDZCxVQUFVLEVBQUU7WUFDVixJQUFJLEVBQUU7Z0JBQ0osSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsSUFBSSxFQUFFLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsS0FBSyxDQUFDO2dCQUM3QyxXQUFXLEVBQUUseUNBQXlDO2FBQ3ZEO1NBQ0Y7S0FDRjtDQUNGLENBQUM7QUFNSyxLQUFLLFVBQVUsWUFBWSxDQUNoQyxJQUE2QixFQUM3QixRQUF1QjtJQUV2QixNQUFNLEVBQUUsSUFBSSxHQUFHLEtBQUssRUFBRSxHQUFHLElBQW1DLENBQUM7SUFFN0QsSUFBSSxDQUFDO1FBQ0gsMENBQTBDO1FBQzFDLElBQUksQ0FBQyxRQUFRLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUNoQyxPQUFPO2dCQUNMLE9BQU8sRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsa0NBQWtDLEVBQUUsQ0FBQztnQkFDckUsT0FBTyxFQUFFLElBQUk7YUFDZCxDQUFDO1FBQ0osQ0FBQztRQUVELE1BQU0sa0JBQWtCLEdBQUcsUUFBUSxDQUFDLGlCQUFpQixDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFFOUUsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDeEIsT0FBTztnQkFDTCxPQUFPLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLHdCQUF3QixFQUFFLENBQUM7Z0JBQzNELE9BQU8sRUFBRSxJQUFJO2FBQ2QsQ0FBQztRQUNKLENBQUM7UUFFRCxNQUFNLE9BQU8sR0FBYSxFQUFFLENBQUM7UUFFN0IsZ0NBQWdDO1FBQ2hDLE1BQU0sY0FBYyxHQUFHLENBQUMsV0FBbUIsRUFBRSxXQUFnQixFQUFZLEVBQUU7WUFDekUsTUFBTSxRQUFRLEdBQWEsRUFBRSxDQUFDO1lBQzlCLElBQUksV0FBVyxJQUFJLE9BQU8sV0FBVyxLQUFLLFFBQVEsRUFBRSxDQUFDO2dCQUNuRCxLQUFLLE1BQU0sT0FBTyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztvQkFDL0MsTUFBTSxJQUFJLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO29CQUNsQyxNQUFNLEtBQUssR0FBRyxJQUFJLEVBQUUsS0FBSyxJQUFJLFdBQVcsQ0FBQztvQkFDekMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLE9BQU8sR0FBRyxLQUFLLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQyxLQUFLLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUMvRSxDQUFDO1lBQ0gsQ0FBQztZQUNELE9BQU8sUUFBUSxDQUFDO1FBQ2xCLENBQUMsQ0FBQztRQUVGLGVBQWU7UUFDZixJQUFJLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxLQUFLLEtBQUssRUFBRSxDQUFDO1lBQ3JDLE9BQU8sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDOUIsTUFBTSxXQUFXLEdBQUcsY0FBYyxDQUFDLEtBQUssRUFBRSxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNsRSxJQUFJLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQzNCLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxXQUFXLENBQUMsQ0FBQztZQUMvQixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sT0FBTyxDQUFDLElBQUksQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO1lBQ2hELENBQUM7UUFDSCxDQUFDO1FBRUQsd0NBQXdDO1FBQ3hDLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDMUMsT0FBTyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1lBRXJDLElBQUksa0JBQWtCLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQzdCLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQ3pCLE1BQU0sYUFBYSxHQUFHLGNBQWMsQ0FBQyxPQUFPLEVBQUUsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3hFLElBQUksYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztvQkFDN0IsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN0RCxDQUFDO1lBQ0gsQ0FBQztZQUVELElBQUksa0JBQWtCLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQy9CLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7Z0JBQzNCLE1BQU0sZUFBZSxHQUFHLGNBQWMsQ0FBQyxTQUFTLEVBQUUsa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQzlFLElBQUksZUFBZSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztvQkFDL0IsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN4RCxDQUFDO1lBQ0gsQ0FBQztZQUVELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDN0QsT0FBTyxDQUFDLElBQUksQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDO1lBQ3JELENBQUM7UUFDSCxDQUFDO1FBRUQsOEJBQThCO1FBQzlCLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLEtBQUssV0FBVyxFQUFFLENBQUM7WUFDM0MsT0FBTyxDQUFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1lBQ3ZDLE1BQU0sYUFBYSxHQUFHLGNBQWMsQ0FBQyxPQUFPLEVBQUUsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDeEUsSUFBSSxhQUFhLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUM3QixPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsYUFBYSxDQUFDLENBQUM7WUFDakMsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE9BQU8sQ0FBQyxJQUFJLENBQUMsc0NBQXNDLENBQUMsQ0FBQztZQUN2RCxDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU87WUFDTCxPQUFPLEVBQUU7Z0JBQ1A7b0JBQ0UsSUFBSSxFQUFFLE1BQU07b0JBQ1osSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO2lCQUN6QjthQUNGO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFBQyxPQUFPLEtBQVUsRUFBRSxDQUFDO1FBQ3BCLE9BQU87WUFDTCxPQUFPLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLDRCQUE0QixLQUFLLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztZQUM5RSxPQUFPLEVBQUUsSUFBSTtTQUNkLENBQUM7SUFDSixDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogbGlzdF9zZXJ2aWNlcyBUb29sXG4gKiBMaXN0IGF2YWlsYWJsZSBMaWdodG5pbmcgU2VydmljZXMgKFBIUCwgTXlTUUwsIE5naW54IHZlcnNpb25zKVxuICovXG5cbmltcG9ydCB7IE1jcFRvb2xEZWZpbml0aW9uLCBNY3BUb29sUmVzdWx0LCBMb2NhbFNlcnZpY2VzIH0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL3R5cGVzJztcblxuZXhwb3J0IGNvbnN0IGxpc3RTZXJ2aWNlc0RlZmluaXRpb246IE1jcFRvb2xEZWZpbml0aW9uID0ge1xuICBuYW1lOiAnbGlzdF9zZXJ2aWNlcycsXG4gIGRlc2NyaXB0aW9uOiAnTGlzdCBhdmFpbGFibGUgc2VydmljZSB2ZXJzaW9ucyAoUEhQLCBNeVNRTCwgTmdpbngpIHRoYXQgY2FuIGJlIHVzZWQgd2l0aCBzaXRlcycsXG4gIGlucHV0U2NoZW1hOiB7XG4gICAgdHlwZTogJ29iamVjdCcsXG4gICAgcHJvcGVydGllczoge1xuICAgICAgdHlwZToge1xuICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgZW51bTogWydwaHAnLCAnZGF0YWJhc2UnLCAnd2Vic2VydmVyJywgJ2FsbCddLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ1R5cGUgb2Ygc2VydmljZXMgdG8gbGlzdCAoZGVmYXVsdDogYWxsKScsXG4gICAgICB9LFxuICAgIH0sXG4gIH0sXG59O1xuXG5pbnRlcmZhY2UgTGlzdFNlcnZpY2VzQXJncyB7XG4gIHR5cGU/OiAncGhwJyB8ICdkYXRhYmFzZScgfCAnd2Vic2VydmVyJyB8ICdhbGwnO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbGlzdFNlcnZpY2VzKFxuICBhcmdzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgc2VydmljZXM6IExvY2FsU2VydmljZXNcbik6IFByb21pc2U8TWNwVG9vbFJlc3VsdD4ge1xuICBjb25zdCB7IHR5cGUgPSAnYWxsJyB9ID0gYXJncyBhcyB1bmtub3duIGFzIExpc3RTZXJ2aWNlc0FyZ3M7XG5cbiAgdHJ5IHtcbiAgICAvLyBDaGVjayBpZiBsaWdodG5pbmdTZXJ2aWNlcyBpcyBhdmFpbGFibGVcbiAgICBpZiAoIXNlcnZpY2VzLmxpZ2h0bmluZ1NlcnZpY2VzKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBjb250ZW50OiBbeyB0eXBlOiAndGV4dCcsIHRleHQ6ICdMaWdodG5pbmcgU2VydmljZXMgbm90IGF2YWlsYWJsZScgfV0sXG4gICAgICAgIGlzRXJyb3I6IHRydWUsXG4gICAgICB9O1xuICAgIH1cblxuICAgIGNvbnN0IHJlZ2lzdGVyZWRTZXJ2aWNlcyA9IHNlcnZpY2VzLmxpZ2h0bmluZ1NlcnZpY2VzLmdldFJlZ2lzdGVyZWRTZXJ2aWNlcygpO1xuXG4gICAgaWYgKCFyZWdpc3RlcmVkU2VydmljZXMpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNvbnRlbnQ6IFt7IHR5cGU6ICd0ZXh0JywgdGV4dDogJ05vIHNlcnZpY2VzIHJlZ2lzdGVyZWQnIH1dLFxuICAgICAgICBpc0Vycm9yOiB0cnVlLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBjb25zdCByZXN1bHRzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgLy8gSGVscGVyIHRvIGZvcm1hdCBzZXJ2aWNlIGxpc3RcbiAgICBjb25zdCBmb3JtYXRTZXJ2aWNlcyA9IChzZXJ2aWNlTmFtZTogc3RyaW5nLCBzZXJ2aWNlRGF0YTogYW55KTogc3RyaW5nW10gPT4ge1xuICAgICAgY29uc3QgdmVyc2lvbnM6IHN0cmluZ1tdID0gW107XG4gICAgICBpZiAoc2VydmljZURhdGEgJiYgdHlwZW9mIHNlcnZpY2VEYXRhID09PSAnb2JqZWN0Jykge1xuICAgICAgICBmb3IgKGNvbnN0IHZlcnNpb24gb2YgT2JqZWN0LmtleXMoc2VydmljZURhdGEpKSB7XG4gICAgICAgICAgY29uc3QgaW5mbyA9IHNlcnZpY2VEYXRhW3ZlcnNpb25dO1xuICAgICAgICAgIGNvbnN0IGxhYmVsID0gaW5mbz8ubGFiZWwgfHwgc2VydmljZU5hbWU7XG4gICAgICAgICAgdmVyc2lvbnMucHVzaChgICAtICR7dmVyc2lvbn0ke2xhYmVsICE9PSBzZXJ2aWNlTmFtZSA/IGAgKCR7bGFiZWx9KWAgOiAnJ31gKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHZlcnNpb25zO1xuICAgIH07XG5cbiAgICAvLyBQSFAgdmVyc2lvbnNcbiAgICBpZiAodHlwZSA9PT0gJ2FsbCcgfHwgdHlwZSA9PT0gJ3BocCcpIHtcbiAgICAgIHJlc3VsdHMucHVzaCgnUEhQIFZlcnNpb25zOicpO1xuICAgICAgY29uc3QgcGhwVmVyc2lvbnMgPSBmb3JtYXRTZXJ2aWNlcygncGhwJywgcmVnaXN0ZXJlZFNlcnZpY2VzLnBocCk7XG4gICAgICBpZiAocGhwVmVyc2lvbnMubGVuZ3RoID4gMCkge1xuICAgICAgICByZXN1bHRzLnB1c2goLi4ucGhwVmVyc2lvbnMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzdWx0cy5wdXNoKCcgIFtObyBQSFAgdmVyc2lvbnMgaW5zdGFsbGVkXScpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIERhdGFiYXNlIHZlcnNpb25zIChNeVNRTCBhbmQgTWFyaWFEQilcbiAgICBpZiAodHlwZSA9PT0gJ2FsbCcgfHwgdHlwZSA9PT0gJ2RhdGFiYXNlJykge1xuICAgICAgcmVzdWx0cy5wdXNoKCdcXG5EYXRhYmFzZSBWZXJzaW9uczonKTtcblxuICAgICAgaWYgKHJlZ2lzdGVyZWRTZXJ2aWNlcy5teXNxbCkge1xuICAgICAgICByZXN1bHRzLnB1c2goJyAgTXlTUUw6Jyk7XG4gICAgICAgIGNvbnN0IG15c3FsVmVyc2lvbnMgPSBmb3JtYXRTZXJ2aWNlcygnbXlzcWwnLCByZWdpc3RlcmVkU2VydmljZXMubXlzcWwpO1xuICAgICAgICBpZiAobXlzcWxWZXJzaW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgcmVzdWx0cy5wdXNoKC4uLm15c3FsVmVyc2lvbnMubWFwKCh2KSA9PiAnICAnICsgdikpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChyZWdpc3RlcmVkU2VydmljZXMubWFyaWFkYikge1xuICAgICAgICByZXN1bHRzLnB1c2goJyAgTWFyaWFEQjonKTtcbiAgICAgICAgY29uc3QgbWFyaWFkYlZlcnNpb25zID0gZm9ybWF0U2VydmljZXMoJ21hcmlhZGInLCByZWdpc3RlcmVkU2VydmljZXMubWFyaWFkYik7XG4gICAgICAgIGlmIChtYXJpYWRiVmVyc2lvbnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHJlc3VsdHMucHVzaCguLi5tYXJpYWRiVmVyc2lvbnMubWFwKCh2KSA9PiAnICAnICsgdikpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICghcmVnaXN0ZXJlZFNlcnZpY2VzLm15c3FsICYmICFyZWdpc3RlcmVkU2VydmljZXMubWFyaWFkYikge1xuICAgICAgICByZXN1bHRzLnB1c2goJyAgW05vIGRhdGFiYXNlIHZlcnNpb25zIGluc3RhbGxlZF0nKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBXZWIgc2VydmVyIHZlcnNpb25zIChOZ2lueClcbiAgICBpZiAodHlwZSA9PT0gJ2FsbCcgfHwgdHlwZSA9PT0gJ3dlYnNlcnZlcicpIHtcbiAgICAgIHJlc3VsdHMucHVzaCgnXFxuV2ViIFNlcnZlciBWZXJzaW9uczonKTtcbiAgICAgIGNvbnN0IG5naW54VmVyc2lvbnMgPSBmb3JtYXRTZXJ2aWNlcygnbmdpbngnLCByZWdpc3RlcmVkU2VydmljZXMubmdpbngpO1xuICAgICAgaWYgKG5naW54VmVyc2lvbnMubGVuZ3RoID4gMCkge1xuICAgICAgICByZXN1bHRzLnB1c2goLi4ubmdpbnhWZXJzaW9ucyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXN1bHRzLnB1c2goJyAgW05vIHdlYiBzZXJ2ZXIgdmVyc2lvbnMgaW5zdGFsbGVkXScpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBjb250ZW50OiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgdGV4dDogcmVzdWx0cy5qb2luKCdcXG4nKSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfTtcbiAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgIHJldHVybiB7XG4gICAgICBjb250ZW50OiBbeyB0eXBlOiAndGV4dCcsIHRleHQ6IGBGYWlsZWQgdG8gbGlzdCBzZXJ2aWNlczogJHtlcnJvci5tZXNzYWdlfWAgfV0sXG4gICAgICBpc0Vycm9yOiB0cnVlLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* list_sites Tool
|
|
3
|
+
* List all WordPress sites in Local
|
|
4
|
+
*/
|
|
5
|
+
import { McpToolDefinition, McpToolResult, LocalServices } from '../../../common/types';
|
|
6
|
+
export declare const listSitesDefinition: McpToolDefinition;
|
|
7
|
+
export declare function listSites(args: Record<string, unknown>, services: LocalServices): Promise<McpToolResult>;
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* list_sites Tool
|
|
4
|
+
* List all WordPress sites in Local
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.listSitesDefinition = void 0;
|
|
8
|
+
exports.listSites = listSites;
|
|
9
|
+
exports.listSitesDefinition = {
|
|
10
|
+
name: 'list_sites',
|
|
11
|
+
description: 'List all WordPress sites in Local with their name, ID, status, and domain',
|
|
12
|
+
inputSchema: {
|
|
13
|
+
type: 'object',
|
|
14
|
+
properties: {
|
|
15
|
+
status: {
|
|
16
|
+
type: 'string',
|
|
17
|
+
enum: ['all', 'running', 'stopped'],
|
|
18
|
+
description: 'Filter sites by status (default: all)',
|
|
19
|
+
},
|
|
20
|
+
},
|
|
21
|
+
},
|
|
22
|
+
};
|
|
23
|
+
async function listSites(args, services) {
|
|
24
|
+
const { status = 'all' } = args;
|
|
25
|
+
try {
|
|
26
|
+
const sitesMap = services.siteData.getSites();
|
|
27
|
+
const allSites = Object.values(sitesMap);
|
|
28
|
+
// Get status for each site
|
|
29
|
+
const sitesWithStatus = await Promise.all(allSites.map(async (site) => {
|
|
30
|
+
const siteStatus = await services.siteProcessManager.getSiteStatus(site);
|
|
31
|
+
return {
|
|
32
|
+
id: site.id,
|
|
33
|
+
name: site.name,
|
|
34
|
+
status: siteStatus,
|
|
35
|
+
domain: site.domain,
|
|
36
|
+
path: site.path,
|
|
37
|
+
};
|
|
38
|
+
}));
|
|
39
|
+
// Filter by status if requested
|
|
40
|
+
let filteredSites = sitesWithStatus;
|
|
41
|
+
if (status === 'running') {
|
|
42
|
+
filteredSites = sitesWithStatus.filter((s) => s.status === 'running');
|
|
43
|
+
}
|
|
44
|
+
else if (status === 'stopped') {
|
|
45
|
+
filteredSites = sitesWithStatus.filter((s) => s.status !== 'running');
|
|
46
|
+
}
|
|
47
|
+
const result = {
|
|
48
|
+
count: filteredSites.length,
|
|
49
|
+
sites: filteredSites,
|
|
50
|
+
};
|
|
51
|
+
return {
|
|
52
|
+
content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
catch (error) {
|
|
56
|
+
return {
|
|
57
|
+
content: [{ type: 'text', text: `Failed to list sites: ${error.message}` }],
|
|
58
|
+
isError: true,
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdFNpdGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL21haW4vbWNwL3Rvb2xzL2xpc3RTaXRlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7OztHQUdHOzs7QUF1QkgsOEJBOENDO0FBakVZLFFBQUEsbUJBQW1CLEdBQXNCO0lBQ3BELElBQUksRUFBRSxZQUFZO0lBQ2xCLFdBQVcsRUFBRSwyRUFBMkU7SUFDeEYsV0FBVyxFQUFFO1FBQ1gsSUFBSSxFQUFFLFFBQVE7UUFDZCxVQUFVLEVBQUU7WUFDVixNQUFNLEVBQUU7Z0JBQ04sSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsSUFBSSxFQUFFLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxTQUFTLENBQUM7Z0JBQ25DLFdBQVcsRUFBRSx1Q0FBdUM7YUFDckQ7U0FDRjtLQUNGO0NBQ0YsQ0FBQztBQU1LLEtBQUssVUFBVSxTQUFTLENBQzdCLElBQTZCLEVBQzdCLFFBQXVCO0lBRXZCLE1BQU0sRUFBRSxNQUFNLEdBQUcsS0FBSyxFQUFFLEdBQUcsSUFBcUIsQ0FBQztJQUVqRCxJQUFJLENBQUM7UUFDSCxNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzlDLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFekMsMkJBQTJCO1FBQzNCLE1BQU0sZUFBZSxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FDdkMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBUyxFQUFFLEVBQUU7WUFDL0IsTUFBTSxVQUFVLEdBQUcsTUFBTSxRQUFRLENBQUMsa0JBQWtCLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3pFLE9BQU87Z0JBQ0wsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFO2dCQUNYLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtnQkFDZixNQUFNLEVBQUUsVUFBVTtnQkFDbEIsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO2dCQUNuQixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7YUFDaEIsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUNILENBQUM7UUFFRixnQ0FBZ0M7UUFDaEMsSUFBSSxhQUFhLEdBQUcsZUFBZSxDQUFDO1FBQ3BDLElBQUksTUFBTSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3pCLGFBQWEsR0FBRyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxLQUFLLFNBQVMsQ0FBQyxDQUFDO1FBQ3hFLENBQUM7YUFBTSxJQUFJLE1BQU0sS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUNoQyxhQUFhLEdBQUcsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sS0FBSyxTQUFTLENBQUMsQ0FBQztRQUN4RSxDQUFDO1FBRUQsTUFBTSxNQUFNLEdBQUc7WUFDYixLQUFLLEVBQUUsYUFBYSxDQUFDLE1BQU07WUFDM0IsS0FBSyxFQUFFLGFBQWE7U0FDckIsQ0FBQztRQUVGLE9BQU87WUFDTCxPQUFPLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDO1NBQ25FLENBQUM7SUFDSixDQUFDO0lBQUMsT0FBTyxLQUFVLEVBQUUsQ0FBQztRQUNwQixPQUFPO1lBQ0wsT0FBTyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSx5QkFBeUIsS0FBSyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7WUFDM0UsT0FBTyxFQUFFLElBQUk7U0FDZCxDQUFDO0lBQ0osQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIGxpc3Rfc2l0ZXMgVG9vbFxuICogTGlzdCBhbGwgV29yZFByZXNzIHNpdGVzIGluIExvY2FsXG4gKi9cblxuaW1wb3J0IHsgTWNwVG9vbERlZmluaXRpb24sIE1jcFRvb2xSZXN1bHQsIExvY2FsU2VydmljZXMgfSBmcm9tICcuLi8uLi8uLi9jb21tb24vdHlwZXMnO1xuXG5leHBvcnQgY29uc3QgbGlzdFNpdGVzRGVmaW5pdGlvbjogTWNwVG9vbERlZmluaXRpb24gPSB7XG4gIG5hbWU6ICdsaXN0X3NpdGVzJyxcbiAgZGVzY3JpcHRpb246ICdMaXN0IGFsbCBXb3JkUHJlc3Mgc2l0ZXMgaW4gTG9jYWwgd2l0aCB0aGVpciBuYW1lLCBJRCwgc3RhdHVzLCBhbmQgZG9tYWluJyxcbiAgaW5wdXRTY2hlbWE6IHtcbiAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICBzdGF0dXM6IHtcbiAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgIGVudW06IFsnYWxsJywgJ3J1bm5pbmcnLCAnc3RvcHBlZCddLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ0ZpbHRlciBzaXRlcyBieSBzdGF0dXMgKGRlZmF1bHQ6IGFsbCknLFxuICAgICAgfSxcbiAgICB9LFxuICB9LFxufTtcblxuaW50ZXJmYWNlIExpc3RTaXRlc0FyZ3Mge1xuICBzdGF0dXM/OiAnYWxsJyB8ICdydW5uaW5nJyB8ICdzdG9wcGVkJztcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxpc3RTaXRlcyhcbiAgYXJnczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gIHNlcnZpY2VzOiBMb2NhbFNlcnZpY2VzXG4pOiBQcm9taXNlPE1jcFRvb2xSZXN1bHQ+IHtcbiAgY29uc3QgeyBzdGF0dXMgPSAnYWxsJyB9ID0gYXJncyBhcyBMaXN0U2l0ZXNBcmdzO1xuXG4gIHRyeSB7XG4gICAgY29uc3Qgc2l0ZXNNYXAgPSBzZXJ2aWNlcy5zaXRlRGF0YS5nZXRTaXRlcygpO1xuICAgIGNvbnN0IGFsbFNpdGVzID0gT2JqZWN0LnZhbHVlcyhzaXRlc01hcCk7XG5cbiAgICAvLyBHZXQgc3RhdHVzIGZvciBlYWNoIHNpdGVcbiAgICBjb25zdCBzaXRlc1dpdGhTdGF0dXMgPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIGFsbFNpdGVzLm1hcChhc3luYyAoc2l0ZTogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IHNpdGVTdGF0dXMgPSBhd2FpdCBzZXJ2aWNlcy5zaXRlUHJvY2Vzc01hbmFnZXIuZ2V0U2l0ZVN0YXR1cyhzaXRlKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBpZDogc2l0ZS5pZCxcbiAgICAgICAgICBuYW1lOiBzaXRlLm5hbWUsXG4gICAgICAgICAgc3RhdHVzOiBzaXRlU3RhdHVzLFxuICAgICAgICAgIGRvbWFpbjogc2l0ZS5kb21haW4sXG4gICAgICAgICAgcGF0aDogc2l0ZS5wYXRoLFxuICAgICAgICB9O1xuICAgICAgfSlcbiAgICApO1xuXG4gICAgLy8gRmlsdGVyIGJ5IHN0YXR1cyBpZiByZXF1ZXN0ZWRcbiAgICBsZXQgZmlsdGVyZWRTaXRlcyA9IHNpdGVzV2l0aFN0YXR1cztcbiAgICBpZiAoc3RhdHVzID09PSAncnVubmluZycpIHtcbiAgICAgIGZpbHRlcmVkU2l0ZXMgPSBzaXRlc1dpdGhTdGF0dXMuZmlsdGVyKChzKSA9PiBzLnN0YXR1cyA9PT0gJ3J1bm5pbmcnKTtcbiAgICB9IGVsc2UgaWYgKHN0YXR1cyA9PT0gJ3N0b3BwZWQnKSB7XG4gICAgICBmaWx0ZXJlZFNpdGVzID0gc2l0ZXNXaXRoU3RhdHVzLmZpbHRlcigocykgPT4gcy5zdGF0dXMgIT09ICdydW5uaW5nJyk7XG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0ID0ge1xuICAgICAgY291bnQ6IGZpbHRlcmVkU2l0ZXMubGVuZ3RoLFxuICAgICAgc2l0ZXM6IGZpbHRlcmVkU2l0ZXMsXG4gICAgfTtcblxuICAgIHJldHVybiB7XG4gICAgICBjb250ZW50OiBbeyB0eXBlOiAndGV4dCcsIHRleHQ6IEpTT04uc3RyaW5naWZ5KHJlc3VsdCwgbnVsbCwgMikgfV0sXG4gICAgfTtcbiAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgIHJldHVybiB7XG4gICAgICBjb250ZW50OiBbeyB0eXBlOiAndGV4dCcsIHRleHQ6IGBGYWlsZWQgdG8gbGlzdCBzaXRlczogJHtlcnJvci5tZXNzYWdlfWAgfV0sXG4gICAgICBpc0Vycm9yOiB0cnVlLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* open_adminer Tool
|
|
3
|
+
* Open Adminer database management UI for a site
|
|
4
|
+
*/
|
|
5
|
+
import { McpToolDefinition, McpToolResult, LocalServices } from '../../../common/types';
|
|
6
|
+
export declare const openAdminerDefinition: McpToolDefinition;
|
|
7
|
+
export declare function openAdminer(args: Record<string, unknown>, services: LocalServices): Promise<McpToolResult>;
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* open_adminer Tool
|
|
4
|
+
* Open Adminer database management UI for a site
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.openAdminerDefinition = void 0;
|
|
8
|
+
exports.openAdminer = openAdminer;
|
|
9
|
+
const helpers_1 = require("./helpers");
|
|
10
|
+
exports.openAdminerDefinition = {
|
|
11
|
+
name: 'open_adminer',
|
|
12
|
+
description: 'Open Adminer database management UI for a site',
|
|
13
|
+
inputSchema: {
|
|
14
|
+
type: 'object',
|
|
15
|
+
properties: {
|
|
16
|
+
site: {
|
|
17
|
+
type: 'string',
|
|
18
|
+
description: 'Site name or ID',
|
|
19
|
+
},
|
|
20
|
+
},
|
|
21
|
+
required: ['site'],
|
|
22
|
+
},
|
|
23
|
+
};
|
|
24
|
+
async function openAdminer(args, services) {
|
|
25
|
+
const { site: siteQuery } = args;
|
|
26
|
+
const paramError = (0, helpers_1.validateRequiredParam)(siteQuery, 'site');
|
|
27
|
+
if (paramError)
|
|
28
|
+
return paramError;
|
|
29
|
+
const siteResult = (0, helpers_1.findSiteOrError)(siteQuery, services.siteData);
|
|
30
|
+
if ('error' in siteResult)
|
|
31
|
+
return siteResult.error;
|
|
32
|
+
const { site } = siteResult;
|
|
33
|
+
try {
|
|
34
|
+
// Check if adminer service exists
|
|
35
|
+
if (!services.adminer) {
|
|
36
|
+
return {
|
|
37
|
+
content: [{ type: 'text', text: 'Adminer service not available' }],
|
|
38
|
+
isError: true,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
// Open Adminer
|
|
42
|
+
await services.adminer.open(site);
|
|
43
|
+
return {
|
|
44
|
+
content: [
|
|
45
|
+
{
|
|
46
|
+
type: 'text',
|
|
47
|
+
text: `Opened Adminer for "${site.name}". Database admin UI should open in your browser.`,
|
|
48
|
+
},
|
|
49
|
+
],
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
catch (error) {
|
|
53
|
+
return {
|
|
54
|
+
content: [{ type: 'text', text: `Failed to open Adminer: ${error.message}` }],
|
|
55
|
+
isError: true,
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlbkFkbWluZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbWFpbi9tY3AvdG9vbHMvb3BlbkFkbWluZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7R0FHRzs7O0FBd0JILGtDQXVDQztBQTVERCx1Q0FBbUU7QUFFdEQsUUFBQSxxQkFBcUIsR0FBc0I7SUFDdEQsSUFBSSxFQUFFLGNBQWM7SUFDcEIsV0FBVyxFQUFFLGdEQUFnRDtJQUM3RCxXQUFXLEVBQUU7UUFDWCxJQUFJLEVBQUUsUUFBUTtRQUNkLFVBQVUsRUFBRTtZQUNWLElBQUksRUFBRTtnQkFDSixJQUFJLEVBQUUsUUFBUTtnQkFDZCxXQUFXLEVBQUUsaUJBQWlCO2FBQy9CO1NBQ0Y7UUFDRCxRQUFRLEVBQUUsQ0FBQyxNQUFNLENBQUM7S0FDbkI7Q0FDRixDQUFDO0FBTUssS0FBSyxVQUFVLFdBQVcsQ0FDL0IsSUFBNkIsRUFDN0IsUUFBdUI7SUFFdkIsTUFBTSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsR0FBRyxJQUFrQyxDQUFDO0lBRS9ELE1BQU0sVUFBVSxHQUFHLElBQUEsK0JBQXFCLEVBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzVELElBQUksVUFBVTtRQUFFLE9BQU8sVUFBVSxDQUFDO0lBRWxDLE1BQU0sVUFBVSxHQUFHLElBQUEseUJBQWUsRUFBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2pFLElBQUksT0FBTyxJQUFJLFVBQVU7UUFBRSxPQUFPLFVBQVUsQ0FBQyxLQUFLLENBQUM7SUFDbkQsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLFVBQVUsQ0FBQztJQUU1QixJQUFJLENBQUM7UUFDSCxrQ0FBa0M7UUFDbEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUN0QixPQUFPO2dCQUNMLE9BQU8sRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsK0JBQStCLEVBQUUsQ0FBQztnQkFDbEUsT0FBTyxFQUFFLElBQUk7YUFDZCxDQUFDO1FBQ0osQ0FBQztRQUVELGVBQWU7UUFDZixNQUFNLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRWxDLE9BQU87WUFDTCxPQUFPLEVBQUU7Z0JBQ1A7b0JBQ0UsSUFBSSxFQUFFLE1BQU07b0JBQ1osSUFBSSxFQUFFLHVCQUF1QixJQUFJLENBQUMsSUFBSSxtREFBbUQ7aUJBQzFGO2FBQ0Y7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUFDLE9BQU8sS0FBVSxFQUFFLENBQUM7UUFDcEIsT0FBTztZQUNMLE9BQU8sRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsMkJBQTJCLEtBQUssQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO1lBQzdFLE9BQU8sRUFBRSxJQUFJO1NBQ2QsQ0FBQztJQUNKLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBvcGVuX2FkbWluZXIgVG9vbFxuICogT3BlbiBBZG1pbmVyIGRhdGFiYXNlIG1hbmFnZW1lbnQgVUkgZm9yIGEgc2l0ZVxuICovXG5cbmltcG9ydCB7IE1jcFRvb2xEZWZpbml0aW9uLCBNY3BUb29sUmVzdWx0LCBMb2NhbFNlcnZpY2VzIH0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL3R5cGVzJztcbmltcG9ydCB7IHZhbGlkYXRlUmVxdWlyZWRQYXJhbSwgZmluZFNpdGVPckVycm9yIH0gZnJvbSAnLi9oZWxwZXJzJztcblxuZXhwb3J0IGNvbnN0IG9wZW5BZG1pbmVyRGVmaW5pdGlvbjogTWNwVG9vbERlZmluaXRpb24gPSB7XG4gIG5hbWU6ICdvcGVuX2FkbWluZXInLFxuICBkZXNjcmlwdGlvbjogJ09wZW4gQWRtaW5lciBkYXRhYmFzZSBtYW5hZ2VtZW50IFVJIGZvciBhIHNpdGUnLFxuICBpbnB1dFNjaGVtYToge1xuICAgIHR5cGU6ICdvYmplY3QnLFxuICAgIHByb3BlcnRpZXM6IHtcbiAgICAgIHNpdGU6IHtcbiAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnU2l0ZSBuYW1lIG9yIElEJyxcbiAgICAgIH0sXG4gICAgfSxcbiAgICByZXF1aXJlZDogWydzaXRlJ10sXG4gIH0sXG59O1xuXG5pbnRlcmZhY2UgT3BlbkFkbWluZXJBcmdzIHtcbiAgc2l0ZTogc3RyaW5nO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gb3BlbkFkbWluZXIoXG4gIGFyZ3M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICBzZXJ2aWNlczogTG9jYWxTZXJ2aWNlc1xuKTogUHJvbWlzZTxNY3BUb29sUmVzdWx0PiB7XG4gIGNvbnN0IHsgc2l0ZTogc2l0ZVF1ZXJ5IH0gPSBhcmdzIGFzIHVua25vd24gYXMgT3BlbkFkbWluZXJBcmdzO1xuXG4gIGNvbnN0IHBhcmFtRXJyb3IgPSB2YWxpZGF0ZVJlcXVpcmVkUGFyYW0oc2l0ZVF1ZXJ5LCAnc2l0ZScpO1xuICBpZiAocGFyYW1FcnJvcikgcmV0dXJuIHBhcmFtRXJyb3I7XG5cbiAgY29uc3Qgc2l0ZVJlc3VsdCA9IGZpbmRTaXRlT3JFcnJvcihzaXRlUXVlcnksIHNlcnZpY2VzLnNpdGVEYXRhKTtcbiAgaWYgKCdlcnJvcicgaW4gc2l0ZVJlc3VsdCkgcmV0dXJuIHNpdGVSZXN1bHQuZXJyb3I7XG4gIGNvbnN0IHsgc2l0ZSB9ID0gc2l0ZVJlc3VsdDtcblxuICB0cnkge1xuICAgIC8vIENoZWNrIGlmIGFkbWluZXIgc2VydmljZSBleGlzdHNcbiAgICBpZiAoIXNlcnZpY2VzLmFkbWluZXIpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNvbnRlbnQ6IFt7IHR5cGU6ICd0ZXh0JywgdGV4dDogJ0FkbWluZXIgc2VydmljZSBub3QgYXZhaWxhYmxlJyB9XSxcbiAgICAgICAgaXNFcnJvcjogdHJ1ZSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gT3BlbiBBZG1pbmVyXG4gICAgYXdhaXQgc2VydmljZXMuYWRtaW5lci5vcGVuKHNpdGUpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbnRlbnQ6IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICB0ZXh0OiBgT3BlbmVkIEFkbWluZXIgZm9yIFwiJHtzaXRlLm5hbWV9XCIuIERhdGFiYXNlIGFkbWluIFVJIHNob3VsZCBvcGVuIGluIHlvdXIgYnJvd3Nlci5gLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9O1xuICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbnRlbnQ6IFt7IHR5cGU6ICd0ZXh0JywgdGV4dDogYEZhaWxlZCB0byBvcGVuIEFkbWluZXI6ICR7ZXJyb3IubWVzc2FnZX1gIH1dLFxuICAgICAgaXNFcnJvcjogdHJ1ZSxcbiAgICB9O1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* open_site Tool
|
|
3
|
+
* Open a WordPress site in the default browser
|
|
4
|
+
*/
|
|
5
|
+
import { McpToolDefinition, McpToolResult, LocalServices } from '../../../common/types';
|
|
6
|
+
export declare const openSiteDefinition: McpToolDefinition;
|
|
7
|
+
export declare function openSite(args: Record<string, unknown>, services: LocalServices): Promise<McpToolResult>;
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* open_site Tool
|
|
4
|
+
* Open a WordPress site in the default browser
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.openSiteDefinition = void 0;
|
|
8
|
+
exports.openSite = openSite;
|
|
9
|
+
const helpers_1 = require("./helpers");
|
|
10
|
+
exports.openSiteDefinition = {
|
|
11
|
+
name: 'open_site',
|
|
12
|
+
description: 'Open a WordPress site in the default browser',
|
|
13
|
+
inputSchema: {
|
|
14
|
+
type: 'object',
|
|
15
|
+
properties: {
|
|
16
|
+
site: {
|
|
17
|
+
type: 'string',
|
|
18
|
+
description: 'Site name or ID',
|
|
19
|
+
},
|
|
20
|
+
path: {
|
|
21
|
+
type: 'string',
|
|
22
|
+
description: 'Path to open (default: /, use /wp-admin for admin panel)',
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
required: ['site'],
|
|
26
|
+
},
|
|
27
|
+
};
|
|
28
|
+
async function openSite(args, services) {
|
|
29
|
+
const { site: siteQuery, path = '/' } = args;
|
|
30
|
+
const paramError = (0, helpers_1.validateRequiredParam)(siteQuery, 'site');
|
|
31
|
+
if (paramError)
|
|
32
|
+
return paramError;
|
|
33
|
+
const siteResult = (0, helpers_1.findSiteOrError)(siteQuery, services.siteData);
|
|
34
|
+
if ('error' in siteResult)
|
|
35
|
+
return siteResult.error;
|
|
36
|
+
const { site } = siteResult;
|
|
37
|
+
try {
|
|
38
|
+
// Get the site URL
|
|
39
|
+
const domain = site.domain || `${site.name}.local`;
|
|
40
|
+
const protocol = site.services?.nginx?.https === 'on' ? 'https' : 'http';
|
|
41
|
+
const url = `${protocol}://${domain}${path}`;
|
|
42
|
+
// Use the browser manager to open the URL
|
|
43
|
+
if (services.browserManager) {
|
|
44
|
+
await services.browserManager.openURL(url);
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
// Fallback to shell open
|
|
48
|
+
const { shell } = require('electron');
|
|
49
|
+
await shell.openExternal(url);
|
|
50
|
+
}
|
|
51
|
+
return {
|
|
52
|
+
content: [{ type: 'text', text: `Opened ${url} in browser` }],
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
catch (error) {
|
|
56
|
+
return {
|
|
57
|
+
content: [{ type: 'text', text: `Failed to open site: ${error.message}` }],
|
|
58
|
+
isError: true,
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlblNpdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbWFpbi9tY3AvdG9vbHMvb3BlblNpdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7R0FHRzs7O0FBNkJILDRCQXFDQztBQS9ERCx1Q0FBbUU7QUFFdEQsUUFBQSxrQkFBa0IsR0FBc0I7SUFDbkQsSUFBSSxFQUFFLFdBQVc7SUFDakIsV0FBVyxFQUFFLDhDQUE4QztJQUMzRCxXQUFXLEVBQUU7UUFDWCxJQUFJLEVBQUUsUUFBUTtRQUNkLFVBQVUsRUFBRTtZQUNWLElBQUksRUFBRTtnQkFDSixJQUFJLEVBQUUsUUFBUTtnQkFDZCxXQUFXLEVBQUUsaUJBQWlCO2FBQy9CO1lBQ0QsSUFBSSxFQUFFO2dCQUNKLElBQUksRUFBRSxRQUFRO2dCQUNkLFdBQVcsRUFBRSwwREFBMEQ7YUFDeEU7U0FDRjtRQUNELFFBQVEsRUFBRSxDQUFDLE1BQU0sQ0FBQztLQUNuQjtDQUNGLENBQUM7QUFPSyxLQUFLLFVBQVUsUUFBUSxDQUM1QixJQUE2QixFQUM3QixRQUF1QjtJQUV2QixNQUFNLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLEdBQUcsR0FBRyxFQUFFLEdBQUcsSUFBK0IsQ0FBQztJQUV4RSxNQUFNLFVBQVUsR0FBRyxJQUFBLCtCQUFxQixFQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUM1RCxJQUFJLFVBQVU7UUFBRSxPQUFPLFVBQVUsQ0FBQztJQUVsQyxNQUFNLFVBQVUsR0FBRyxJQUFBLHlCQUFlLEVBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNqRSxJQUFJLE9BQU8sSUFBSSxVQUFVO1FBQUUsT0FBTyxVQUFVLENBQUMsS0FBSyxDQUFDO0lBQ25ELE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxVQUFVLENBQUM7SUFFNUIsSUFBSSxDQUFDO1FBQ0gsbUJBQW1CO1FBQ25CLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxRQUFRLENBQUM7UUFDbkQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsS0FBSyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFDekUsTUFBTSxHQUFHLEdBQUcsR0FBRyxRQUFRLE1BQU0sTUFBTSxHQUFHLElBQUksRUFBRSxDQUFDO1FBRTdDLDBDQUEwQztRQUMxQyxJQUFJLFFBQVEsQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUM1QixNQUFNLFFBQVEsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzdDLENBQUM7YUFBTSxDQUFDO1lBQ04seUJBQXlCO1lBQ3pCLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDdEMsTUFBTSxLQUFLLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2hDLENBQUM7UUFFRCxPQUFPO1lBQ0wsT0FBTyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxVQUFVLEdBQUcsYUFBYSxFQUFFLENBQUM7U0FDOUQsQ0FBQztJQUNKLENBQUM7SUFBQyxPQUFPLEtBQVUsRUFBRSxDQUFDO1FBQ3BCLE9BQU87WUFDTCxPQUFPLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLHdCQUF3QixLQUFLLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztZQUMxRSxPQUFPLEVBQUUsSUFBSTtTQUNkLENBQUM7SUFDSixDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogb3Blbl9zaXRlIFRvb2xcbiAqIE9wZW4gYSBXb3JkUHJlc3Mgc2l0ZSBpbiB0aGUgZGVmYXVsdCBicm93c2VyXG4gKi9cblxuaW1wb3J0IHsgTWNwVG9vbERlZmluaXRpb24sIE1jcFRvb2xSZXN1bHQsIExvY2FsU2VydmljZXMgfSBmcm9tICcuLi8uLi8uLi9jb21tb24vdHlwZXMnO1xuaW1wb3J0IHsgdmFsaWRhdGVSZXF1aXJlZFBhcmFtLCBmaW5kU2l0ZU9yRXJyb3IgfSBmcm9tICcuL2hlbHBlcnMnO1xuXG5leHBvcnQgY29uc3Qgb3BlblNpdGVEZWZpbml0aW9uOiBNY3BUb29sRGVmaW5pdGlvbiA9IHtcbiAgbmFtZTogJ29wZW5fc2l0ZScsXG4gIGRlc2NyaXB0aW9uOiAnT3BlbiBhIFdvcmRQcmVzcyBzaXRlIGluIHRoZSBkZWZhdWx0IGJyb3dzZXInLFxuICBpbnB1dFNjaGVtYToge1xuICAgIHR5cGU6ICdvYmplY3QnLFxuICAgIHByb3BlcnRpZXM6IHtcbiAgICAgIHNpdGU6IHtcbiAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnU2l0ZSBuYW1lIG9yIElEJyxcbiAgICAgIH0sXG4gICAgICBwYXRoOiB7XG4gICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ1BhdGggdG8gb3BlbiAoZGVmYXVsdDogLywgdXNlIC93cC1hZG1pbiBmb3IgYWRtaW4gcGFuZWwpJyxcbiAgICAgIH0sXG4gICAgfSxcbiAgICByZXF1aXJlZDogWydzaXRlJ10sXG4gIH0sXG59O1xuXG5pbnRlcmZhY2UgT3BlblNpdGVBcmdzIHtcbiAgc2l0ZTogc3RyaW5nO1xuICBwYXRoPzogc3RyaW5nO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gb3BlblNpdGUoXG4gIGFyZ3M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICBzZXJ2aWNlczogTG9jYWxTZXJ2aWNlc1xuKTogUHJvbWlzZTxNY3BUb29sUmVzdWx0PiB7XG4gIGNvbnN0IHsgc2l0ZTogc2l0ZVF1ZXJ5LCBwYXRoID0gJy8nIH0gPSBhcmdzIGFzIHVua25vd24gYXMgT3BlblNpdGVBcmdzO1xuXG4gIGNvbnN0IHBhcmFtRXJyb3IgPSB2YWxpZGF0ZVJlcXVpcmVkUGFyYW0oc2l0ZVF1ZXJ5LCAnc2l0ZScpO1xuICBpZiAocGFyYW1FcnJvcikgcmV0dXJuIHBhcmFtRXJyb3I7XG5cbiAgY29uc3Qgc2l0ZVJlc3VsdCA9IGZpbmRTaXRlT3JFcnJvcihzaXRlUXVlcnksIHNlcnZpY2VzLnNpdGVEYXRhKTtcbiAgaWYgKCdlcnJvcicgaW4gc2l0ZVJlc3VsdCkgcmV0dXJuIHNpdGVSZXN1bHQuZXJyb3I7XG4gIGNvbnN0IHsgc2l0ZSB9ID0gc2l0ZVJlc3VsdDtcblxuICB0cnkge1xuICAgIC8vIEdldCB0aGUgc2l0ZSBVUkxcbiAgICBjb25zdCBkb21haW4gPSBzaXRlLmRvbWFpbiB8fCBgJHtzaXRlLm5hbWV9LmxvY2FsYDtcbiAgICBjb25zdCBwcm90b2NvbCA9IHNpdGUuc2VydmljZXM/Lm5naW54Py5odHRwcyA9PT0gJ29uJyA/ICdodHRwcycgOiAnaHR0cCc7XG4gICAgY29uc3QgdXJsID0gYCR7cHJvdG9jb2x9Oi8vJHtkb21haW59JHtwYXRofWA7XG5cbiAgICAvLyBVc2UgdGhlIGJyb3dzZXIgbWFuYWdlciB0byBvcGVuIHRoZSBVUkxcbiAgICBpZiAoc2VydmljZXMuYnJvd3Nlck1hbmFnZXIpIHtcbiAgICAgIGF3YWl0IHNlcnZpY2VzLmJyb3dzZXJNYW5hZ2VyLm9wZW5VUkwodXJsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gRmFsbGJhY2sgdG8gc2hlbGwgb3BlblxuICAgICAgY29uc3QgeyBzaGVsbCB9ID0gcmVxdWlyZSgnZWxlY3Ryb24nKTtcbiAgICAgIGF3YWl0IHNoZWxsLm9wZW5FeHRlcm5hbCh1cmwpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBjb250ZW50OiBbeyB0eXBlOiAndGV4dCcsIHRleHQ6IGBPcGVuZWQgJHt1cmx9IGluIGJyb3dzZXJgIH1dLFxuICAgIH07XG4gIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICByZXR1cm4ge1xuICAgICAgY29udGVudDogW3sgdHlwZTogJ3RleHQnLCB0ZXh0OiBgRmFpbGVkIHRvIG9wZW4gc2l0ZTogJHtlcnJvci5tZXNzYWdlfWAgfV0sXG4gICAgICBpc0Vycm9yOiB0cnVlLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* rename_site Tool
|
|
3
|
+
* Rename a WordPress site
|
|
4
|
+
*/
|
|
5
|
+
import { McpToolDefinition, McpToolResult, LocalServices } from '../../../common/types';
|
|
6
|
+
export declare const renameSiteDefinition: McpToolDefinition;
|
|
7
|
+
export declare function renameSite(args: Record<string, unknown>, services: LocalServices): Promise<McpToolResult>;
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* rename_site Tool
|
|
4
|
+
* Rename a WordPress site
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.renameSiteDefinition = void 0;
|
|
8
|
+
exports.renameSite = renameSite;
|
|
9
|
+
const helpers_1 = require("./helpers");
|
|
10
|
+
exports.renameSiteDefinition = {
|
|
11
|
+
name: 'rename_site',
|
|
12
|
+
description: 'Rename a WordPress site',
|
|
13
|
+
inputSchema: {
|
|
14
|
+
type: 'object',
|
|
15
|
+
properties: {
|
|
16
|
+
site: {
|
|
17
|
+
type: 'string',
|
|
18
|
+
description: 'Current site name or ID',
|
|
19
|
+
},
|
|
20
|
+
newName: {
|
|
21
|
+
type: 'string',
|
|
22
|
+
description: 'New name for the site',
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
required: ['site', 'newName'],
|
|
26
|
+
},
|
|
27
|
+
};
|
|
28
|
+
async function renameSite(args, services) {
|
|
29
|
+
const { site: siteQuery, newName } = args;
|
|
30
|
+
const siteError = (0, helpers_1.validateRequiredParam)(siteQuery, 'site');
|
|
31
|
+
if (siteError)
|
|
32
|
+
return siteError;
|
|
33
|
+
const nameError = (0, helpers_1.validateRequiredParam)(newName, 'newName');
|
|
34
|
+
if (nameError)
|
|
35
|
+
return nameError;
|
|
36
|
+
if (!newName.trim()) {
|
|
37
|
+
return (0, helpers_1.createErrorResult)('Error: newName cannot be empty');
|
|
38
|
+
}
|
|
39
|
+
const siteResult = (0, helpers_1.findSiteOrError)(siteQuery, services.siteData);
|
|
40
|
+
if ('error' in siteResult)
|
|
41
|
+
return siteResult.error;
|
|
42
|
+
const { site } = siteResult;
|
|
43
|
+
const oldName = site.name;
|
|
44
|
+
try {
|
|
45
|
+
// Check if updateSite method exists on siteData
|
|
46
|
+
if (!services.siteData.updateSite) {
|
|
47
|
+
return {
|
|
48
|
+
content: [{ type: 'text', text: 'Site update service not available' }],
|
|
49
|
+
isError: true,
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
// Update the site name
|
|
53
|
+
services.siteData.updateSite(site.id, { name: newName.trim() });
|
|
54
|
+
return {
|
|
55
|
+
content: [
|
|
56
|
+
{
|
|
57
|
+
type: 'text',
|
|
58
|
+
text: `Successfully renamed site from "${oldName}" to "${newName.trim()}"`,
|
|
59
|
+
},
|
|
60
|
+
],
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
catch (error) {
|
|
64
|
+
return {
|
|
65
|
+
content: [{ type: 'text', text: `Failed to rename site: ${error.message}` }],
|
|
66
|
+
isError: true,
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuYW1lU2l0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9tYWluL21jcC90b29scy9yZW5hbWVTaXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7O0dBR0c7OztBQTZCSCxnQ0FpREM7QUEzRUQsdUNBQXNGO0FBRXpFLFFBQUEsb0JBQW9CLEdBQXNCO0lBQ3JELElBQUksRUFBRSxhQUFhO0lBQ25CLFdBQVcsRUFBRSx5QkFBeUI7SUFDdEMsV0FBVyxFQUFFO1FBQ1gsSUFBSSxFQUFFLFFBQVE7UUFDZCxVQUFVLEVBQUU7WUFDVixJQUFJLEVBQUU7Z0JBQ0osSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsV0FBVyxFQUFFLHlCQUF5QjthQUN2QztZQUNELE9BQU8sRUFBRTtnQkFDUCxJQUFJLEVBQUUsUUFBUTtnQkFDZCxXQUFXLEVBQUUsdUJBQXVCO2FBQ3JDO1NBQ0Y7UUFDRCxRQUFRLEVBQUUsQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDO0tBQzlCO0NBQ0YsQ0FBQztBQU9LLEtBQUssVUFBVSxVQUFVLENBQzlCLElBQTZCLEVBQzdCLFFBQXVCO0lBRXZCLE1BQU0sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxHQUFHLElBQWlDLENBQUM7SUFFdkUsTUFBTSxTQUFTLEdBQUcsSUFBQSwrQkFBcUIsRUFBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDM0QsSUFBSSxTQUFTO1FBQUUsT0FBTyxTQUFTLENBQUM7SUFFaEMsTUFBTSxTQUFTLEdBQUcsSUFBQSwrQkFBcUIsRUFBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDNUQsSUFBSSxTQUFTO1FBQUUsT0FBTyxTQUFTLENBQUM7SUFFaEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO1FBQ3BCLE9BQU8sSUFBQSwyQkFBaUIsRUFBQyxnQ0FBZ0MsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRCxNQUFNLFVBQVUsR0FBRyxJQUFBLHlCQUFlLEVBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNqRSxJQUFJLE9BQU8sSUFBSSxVQUFVO1FBQUUsT0FBTyxVQUFVLENBQUMsS0FBSyxDQUFDO0lBQ25ELE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxVQUFVLENBQUM7SUFFNUIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztJQUUxQixJQUFJLENBQUM7UUFFSCxnREFBZ0Q7UUFDaEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDbEMsT0FBTztnQkFDTCxPQUFPLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLG1DQUFtQyxFQUFFLENBQUM7Z0JBQ3RFLE9BQU8sRUFBRSxJQUFJO2FBQ2QsQ0FBQztRQUNKLENBQUM7UUFFRCx1QkFBdUI7UUFDdkIsUUFBUSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWhFLE9BQU87WUFDTCxPQUFPLEVBQUU7Z0JBQ1A7b0JBQ0UsSUFBSSxFQUFFLE1BQU07b0JBQ1osSUFBSSxFQUFFLG1DQUFtQyxPQUFPLFNBQVMsT0FBTyxDQUFDLElBQUksRUFBRSxHQUFHO2lCQUMzRTthQUNGO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFBQyxPQUFPLEtBQVUsRUFBRSxDQUFDO1FBQ3BCLE9BQU87WUFDTCxPQUFPLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLDBCQUEwQixLQUFLLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztZQUM1RSxPQUFPLEVBQUUsSUFBSTtTQUNkLENBQUM7SUFDSixDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogcmVuYW1lX3NpdGUgVG9vbFxuICogUmVuYW1lIGEgV29yZFByZXNzIHNpdGVcbiAqL1xuXG5pbXBvcnQgeyBNY3BUb29sRGVmaW5pdGlvbiwgTWNwVG9vbFJlc3VsdCwgTG9jYWxTZXJ2aWNlcyB9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi90eXBlcyc7XG5pbXBvcnQgeyB2YWxpZGF0ZVJlcXVpcmVkUGFyYW0sIGZpbmRTaXRlT3JFcnJvciwgY3JlYXRlRXJyb3JSZXN1bHQgfSBmcm9tICcuL2hlbHBlcnMnO1xuXG5leHBvcnQgY29uc3QgcmVuYW1lU2l0ZURlZmluaXRpb246IE1jcFRvb2xEZWZpbml0aW9uID0ge1xuICBuYW1lOiAncmVuYW1lX3NpdGUnLFxuICBkZXNjcmlwdGlvbjogJ1JlbmFtZSBhIFdvcmRQcmVzcyBzaXRlJyxcbiAgaW5wdXRTY2hlbWE6IHtcbiAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICBzaXRlOiB7XG4gICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ0N1cnJlbnQgc2l0ZSBuYW1lIG9yIElEJyxcbiAgICAgIH0sXG4gICAgICBuZXdOYW1lOiB7XG4gICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ05ldyBuYW1lIGZvciB0aGUgc2l0ZScsXG4gICAgICB9LFxuICAgIH0sXG4gICAgcmVxdWlyZWQ6IFsnc2l0ZScsICduZXdOYW1lJ10sXG4gIH0sXG59O1xuXG5pbnRlcmZhY2UgUmVuYW1lU2l0ZUFyZ3Mge1xuICBzaXRlOiBzdHJpbmc7XG4gIG5ld05hbWU6IHN0cmluZztcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlbmFtZVNpdGUoXG4gIGFyZ3M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICBzZXJ2aWNlczogTG9jYWxTZXJ2aWNlc1xuKTogUHJvbWlzZTxNY3BUb29sUmVzdWx0PiB7XG4gIGNvbnN0IHsgc2l0ZTogc2l0ZVF1ZXJ5LCBuZXdOYW1lIH0gPSBhcmdzIGFzIHVua25vd24gYXMgUmVuYW1lU2l0ZUFyZ3M7XG5cbiAgY29uc3Qgc2l0ZUVycm9yID0gdmFsaWRhdGVSZXF1aXJlZFBhcmFtKHNpdGVRdWVyeSwgJ3NpdGUnKTtcbiAgaWYgKHNpdGVFcnJvcikgcmV0dXJuIHNpdGVFcnJvcjtcblxuICBjb25zdCBuYW1lRXJyb3IgPSB2YWxpZGF0ZVJlcXVpcmVkUGFyYW0obmV3TmFtZSwgJ25ld05hbWUnKTtcbiAgaWYgKG5hbWVFcnJvcikgcmV0dXJuIG5hbWVFcnJvcjtcblxuICBpZiAoIW5ld05hbWUudHJpbSgpKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUVycm9yUmVzdWx0KCdFcnJvcjogbmV3TmFtZSBjYW5ub3QgYmUgZW1wdHknKTtcbiAgfVxuXG4gIGNvbnN0IHNpdGVSZXN1bHQgPSBmaW5kU2l0ZU9yRXJyb3Ioc2l0ZVF1ZXJ5LCBzZXJ2aWNlcy5zaXRlRGF0YSk7XG4gIGlmICgnZXJyb3InIGluIHNpdGVSZXN1bHQpIHJldHVybiBzaXRlUmVzdWx0LmVycm9yO1xuICBjb25zdCB7IHNpdGUgfSA9IHNpdGVSZXN1bHQ7XG5cbiAgY29uc3Qgb2xkTmFtZSA9IHNpdGUubmFtZTtcblxuICB0cnkge1xuXG4gICAgLy8gQ2hlY2sgaWYgdXBkYXRlU2l0ZSBtZXRob2QgZXhpc3RzIG9uIHNpdGVEYXRhXG4gICAgaWYgKCFzZXJ2aWNlcy5zaXRlRGF0YS51cGRhdGVTaXRlKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBjb250ZW50OiBbeyB0eXBlOiAndGV4dCcsIHRleHQ6ICdTaXRlIHVwZGF0ZSBzZXJ2aWNlIG5vdCBhdmFpbGFibGUnIH1dLFxuICAgICAgICBpc0Vycm9yOiB0cnVlLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBVcGRhdGUgdGhlIHNpdGUgbmFtZVxuICAgIHNlcnZpY2VzLnNpdGVEYXRhLnVwZGF0ZVNpdGUoc2l0ZS5pZCwgeyBuYW1lOiBuZXdOYW1lLnRyaW0oKSB9KTtcblxuICAgIHJldHVybiB7XG4gICAgICBjb250ZW50OiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgdGV4dDogYFN1Y2Nlc3NmdWxseSByZW5hbWVkIHNpdGUgZnJvbSBcIiR7b2xkTmFtZX1cIiB0byBcIiR7bmV3TmFtZS50cmltKCl9XCJgLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9O1xuICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbnRlbnQ6IFt7IHR5cGU6ICd0ZXh0JywgdGV4dDogYEZhaWxlZCB0byByZW5hbWUgc2l0ZTogJHtlcnJvci5tZXNzYWdlfWAgfV0sXG4gICAgICBpc0Vycm9yOiB0cnVlLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* restart_site Tool
|
|
3
|
+
* Restart a WordPress site
|
|
4
|
+
*/
|
|
5
|
+
import { McpToolDefinition, McpToolResult, LocalServices } from '../../../common/types';
|
|
6
|
+
export declare const restartSiteDefinition: McpToolDefinition;
|
|
7
|
+
export declare function restartSite(args: Record<string, unknown>, services: LocalServices): Promise<McpToolResult>;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* restart_site Tool
|
|
4
|
+
* Restart a WordPress site
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.restartSiteDefinition = void 0;
|
|
8
|
+
exports.restartSite = restartSite;
|
|
9
|
+
const helpers_1 = require("./helpers");
|
|
10
|
+
exports.restartSiteDefinition = {
|
|
11
|
+
name: 'restart_site',
|
|
12
|
+
description: 'Restart a WordPress site by name or ID. If stopped, it will be started.',
|
|
13
|
+
inputSchema: {
|
|
14
|
+
type: 'object',
|
|
15
|
+
properties: {
|
|
16
|
+
site: {
|
|
17
|
+
type: 'string',
|
|
18
|
+
description: 'Site name or ID (partial names work)',
|
|
19
|
+
},
|
|
20
|
+
},
|
|
21
|
+
required: ['site'],
|
|
22
|
+
},
|
|
23
|
+
};
|
|
24
|
+
async function restartSite(args, services) {
|
|
25
|
+
const { site: siteQuery } = args;
|
|
26
|
+
const paramError = (0, helpers_1.validateRequiredParam)(siteQuery, 'site');
|
|
27
|
+
if (paramError)
|
|
28
|
+
return paramError;
|
|
29
|
+
const siteResult = (0, helpers_1.findSiteOrError)(siteQuery, services.siteData);
|
|
30
|
+
if ('error' in siteResult)
|
|
31
|
+
return siteResult.error;
|
|
32
|
+
const { site } = siteResult;
|
|
33
|
+
try {
|
|
34
|
+
const currentStatus = await services.siteProcessManager.getSiteStatus(site);
|
|
35
|
+
if (currentStatus === 'running') {
|
|
36
|
+
await services.siteProcessManager.restart(site);
|
|
37
|
+
return {
|
|
38
|
+
content: [{ type: 'text', text: `Site "${site.name}" restarted successfully` }],
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
// If not running, just start it
|
|
43
|
+
await services.siteProcessManager.start(site);
|
|
44
|
+
return {
|
|
45
|
+
content: [{ type: 'text', text: `Site "${site.name}" was stopped, now started` }],
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
catch (error) {
|
|
50
|
+
return {
|
|
51
|
+
content: [{ type: 'text', text: `Failed to restart site: ${error.message}` }],
|
|
52
|
+
isError: true,
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdGFydFNpdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbWFpbi9tY3AvdG9vbHMvcmVzdGFydFNpdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7R0FHRzs7O0FBd0JILGtDQWtDQztBQXZERCx1Q0FBbUU7QUFFdEQsUUFBQSxxQkFBcUIsR0FBc0I7SUFDdEQsSUFBSSxFQUFFLGNBQWM7SUFDcEIsV0FBVyxFQUFFLHlFQUF5RTtJQUN0RixXQUFXLEVBQUU7UUFDWCxJQUFJLEVBQUUsUUFBUTtRQUNkLFVBQVUsRUFBRTtZQUNWLElBQUksRUFBRTtnQkFDSixJQUFJLEVBQUUsUUFBUTtnQkFDZCxXQUFXLEVBQUUsc0NBQXNDO2FBQ3BEO1NBQ0Y7UUFDRCxRQUFRLEVBQUUsQ0FBQyxNQUFNLENBQUM7S0FDbkI7Q0FDRixDQUFDO0FBTUssS0FBSyxVQUFVLFdBQVcsQ0FDL0IsSUFBNkIsRUFDN0IsUUFBdUI7SUFFdkIsTUFBTSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsR0FBRyxJQUFrQyxDQUFDO0lBRS9ELE1BQU0sVUFBVSxHQUFHLElBQUEsK0JBQXFCLEVBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzVELElBQUksVUFBVTtRQUFFLE9BQU8sVUFBVSxDQUFDO0lBRWxDLE1BQU0sVUFBVSxHQUFHLElBQUEseUJBQWUsRUFBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2pFLElBQUksT0FBTyxJQUFJLFVBQVU7UUFBRSxPQUFPLFVBQVUsQ0FBQyxLQUFLLENBQUM7SUFDbkQsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLFVBQVUsQ0FBQztJQUU1QixJQUFJLENBQUM7UUFDSCxNQUFNLGFBQWEsR0FBRyxNQUFNLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFNUUsSUFBSSxhQUFhLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDaEMsTUFBTSxRQUFRLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2hELE9BQU87Z0JBQ0wsT0FBTyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxTQUFTLElBQUksQ0FBQyxJQUFJLDBCQUEwQixFQUFFLENBQUM7YUFDaEYsQ0FBQztRQUNKLENBQUM7YUFBTSxDQUFDO1lBQ04sZ0NBQWdDO1lBQ2hDLE1BQU0sUUFBUSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM5QyxPQUFPO2dCQUNMLE9BQU8sRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsU0FBUyxJQUFJLENBQUMsSUFBSSw0QkFBNEIsRUFBRSxDQUFDO2FBQ2xGLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUFDLE9BQU8sS0FBVSxFQUFFLENBQUM7UUFDcEIsT0FBTztZQUNMLE9BQU8sRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsMkJBQTJCLEtBQUssQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO1lBQzdFLE9BQU8sRUFBRSxJQUFJO1NBQ2QsQ0FBQztJQUNKLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiByZXN0YXJ0X3NpdGUgVG9vbFxuICogUmVzdGFydCBhIFdvcmRQcmVzcyBzaXRlXG4gKi9cblxuaW1wb3J0IHsgTWNwVG9vbERlZmluaXRpb24sIE1jcFRvb2xSZXN1bHQsIExvY2FsU2VydmljZXMgfSBmcm9tICcuLi8uLi8uLi9jb21tb24vdHlwZXMnO1xuaW1wb3J0IHsgdmFsaWRhdGVSZXF1aXJlZFBhcmFtLCBmaW5kU2l0ZU9yRXJyb3IgfSBmcm9tICcuL2hlbHBlcnMnO1xuXG5leHBvcnQgY29uc3QgcmVzdGFydFNpdGVEZWZpbml0aW9uOiBNY3BUb29sRGVmaW5pdGlvbiA9IHtcbiAgbmFtZTogJ3Jlc3RhcnRfc2l0ZScsXG4gIGRlc2NyaXB0aW9uOiAnUmVzdGFydCBhIFdvcmRQcmVzcyBzaXRlIGJ5IG5hbWUgb3IgSUQuIElmIHN0b3BwZWQsIGl0IHdpbGwgYmUgc3RhcnRlZC4nLFxuICBpbnB1dFNjaGVtYToge1xuICAgIHR5cGU6ICdvYmplY3QnLFxuICAgIHByb3BlcnRpZXM6IHtcbiAgICAgIHNpdGU6IHtcbiAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnU2l0ZSBuYW1lIG9yIElEIChwYXJ0aWFsIG5hbWVzIHdvcmspJyxcbiAgICAgIH0sXG4gICAgfSxcbiAgICByZXF1aXJlZDogWydzaXRlJ10sXG4gIH0sXG59O1xuXG5pbnRlcmZhY2UgUmVzdGFydFNpdGVBcmdzIHtcbiAgc2l0ZTogc3RyaW5nO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVzdGFydFNpdGUoXG4gIGFyZ3M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICBzZXJ2aWNlczogTG9jYWxTZXJ2aWNlc1xuKTogUHJvbWlzZTxNY3BUb29sUmVzdWx0PiB7XG4gIGNvbnN0IHsgc2l0ZTogc2l0ZVF1ZXJ5IH0gPSBhcmdzIGFzIHVua25vd24gYXMgUmVzdGFydFNpdGVBcmdzO1xuXG4gIGNvbnN0IHBhcmFtRXJyb3IgPSB2YWxpZGF0ZVJlcXVpcmVkUGFyYW0oc2l0ZVF1ZXJ5LCAnc2l0ZScpO1xuICBpZiAocGFyYW1FcnJvcikgcmV0dXJuIHBhcmFtRXJyb3I7XG5cbiAgY29uc3Qgc2l0ZVJlc3VsdCA9IGZpbmRTaXRlT3JFcnJvcihzaXRlUXVlcnksIHNlcnZpY2VzLnNpdGVEYXRhKTtcbiAgaWYgKCdlcnJvcicgaW4gc2l0ZVJlc3VsdCkgcmV0dXJuIHNpdGVSZXN1bHQuZXJyb3I7XG4gIGNvbnN0IHsgc2l0ZSB9ID0gc2l0ZVJlc3VsdDtcblxuICB0cnkge1xuICAgIGNvbnN0IGN1cnJlbnRTdGF0dXMgPSBhd2FpdCBzZXJ2aWNlcy5zaXRlUHJvY2Vzc01hbmFnZXIuZ2V0U2l0ZVN0YXR1cyhzaXRlKTtcblxuICAgIGlmIChjdXJyZW50U3RhdHVzID09PSAncnVubmluZycpIHtcbiAgICAgIGF3YWl0IHNlcnZpY2VzLnNpdGVQcm9jZXNzTWFuYWdlci5yZXN0YXJ0KHNpdGUpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY29udGVudDogW3sgdHlwZTogJ3RleHQnLCB0ZXh0OiBgU2l0ZSBcIiR7c2l0ZS5uYW1lfVwiIHJlc3RhcnRlZCBzdWNjZXNzZnVsbHlgIH1dLFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gSWYgbm90IHJ1bm5pbmcsIGp1c3Qgc3RhcnQgaXRcbiAgICAgIGF3YWl0IHNlcnZpY2VzLnNpdGVQcm9jZXNzTWFuYWdlci5zdGFydChzaXRlKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNvbnRlbnQ6IFt7IHR5cGU6ICd0ZXh0JywgdGV4dDogYFNpdGUgXCIke3NpdGUubmFtZX1cIiB3YXMgc3RvcHBlZCwgbm93IHN0YXJ0ZWRgIH1dLFxuICAgICAgfTtcbiAgICB9XG4gIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICByZXR1cm4ge1xuICAgICAgY29udGVudDogW3sgdHlwZTogJ3RleHQnLCB0ZXh0OiBgRmFpbGVkIHRvIHJlc3RhcnQgc2l0ZTogJHtlcnJvci5tZXNzYWdlfWAgfV0sXG4gICAgICBpc0Vycm9yOiB0cnVlLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* save_blueprint Tool
|
|
3
|
+
* Save a site as a blueprint
|
|
4
|
+
*/
|
|
5
|
+
import { McpToolDefinition, McpToolResult, LocalServices } from '../../../common/types';
|
|
6
|
+
export declare const saveBlueprintDefinition: McpToolDefinition;
|
|
7
|
+
export declare function saveBlueprint(args: Record<string, unknown>, services: LocalServices): Promise<McpToolResult>;
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* save_blueprint Tool
|
|
4
|
+
* Save a site as a blueprint
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.saveBlueprintDefinition = void 0;
|
|
8
|
+
exports.saveBlueprint = saveBlueprint;
|
|
9
|
+
const helpers_1 = require("./helpers");
|
|
10
|
+
exports.saveBlueprintDefinition = {
|
|
11
|
+
name: 'save_blueprint',
|
|
12
|
+
description: 'Save a site as a blueprint (template) for creating new sites',
|
|
13
|
+
inputSchema: {
|
|
14
|
+
type: 'object',
|
|
15
|
+
properties: {
|
|
16
|
+
site: {
|
|
17
|
+
type: 'string',
|
|
18
|
+
description: 'Site name or ID to save as blueprint',
|
|
19
|
+
},
|
|
20
|
+
name: {
|
|
21
|
+
type: 'string',
|
|
22
|
+
description: 'Name for the blueprint',
|
|
23
|
+
},
|
|
24
|
+
description: {
|
|
25
|
+
type: 'string',
|
|
26
|
+
description: 'Optional description for the blueprint',
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
required: ['site', 'name'],
|
|
30
|
+
},
|
|
31
|
+
};
|
|
32
|
+
async function saveBlueprint(args, services) {
|
|
33
|
+
const { site: siteQuery, name, description } = args;
|
|
34
|
+
if (!siteQuery) {
|
|
35
|
+
return {
|
|
36
|
+
content: [{ type: 'text', text: 'Error: site parameter is required' }],
|
|
37
|
+
isError: true,
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
if (!name) {
|
|
41
|
+
return {
|
|
42
|
+
content: [{ type: 'text', text: 'Error: name parameter is required' }],
|
|
43
|
+
isError: true,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
try {
|
|
47
|
+
const site = (0, helpers_1.findSite)(siteQuery, services.siteData);
|
|
48
|
+
if (!site) {
|
|
49
|
+
const allSites = services.siteData.getSites();
|
|
50
|
+
const siteNames = allSites.map((s) => s.name).join(', ');
|
|
51
|
+
return {
|
|
52
|
+
content: [
|
|
53
|
+
{
|
|
54
|
+
type: 'text',
|
|
55
|
+
text: `Site not found: "${siteQuery}". Available sites: ${siteNames || 'none'}`,
|
|
56
|
+
},
|
|
57
|
+
],
|
|
58
|
+
isError: true,
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
// Check if blueprints service exists
|
|
62
|
+
if (!services.blueprints) {
|
|
63
|
+
return {
|
|
64
|
+
content: [{ type: 'text', text: 'Blueprints service not available' }],
|
|
65
|
+
isError: true,
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
// Save the blueprint
|
|
69
|
+
const blueprint = await services.blueprints.saveBlueprint(site, {
|
|
70
|
+
name,
|
|
71
|
+
description: description || '',
|
|
72
|
+
});
|
|
73
|
+
return {
|
|
74
|
+
content: [
|
|
75
|
+
{
|
|
76
|
+
type: 'text',
|
|
77
|
+
text: `Successfully saved blueprint "${name}" from site "${site.name}" (ID: ${blueprint.id})`,
|
|
78
|
+
},
|
|
79
|
+
],
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
catch (error) {
|
|
83
|
+
return {
|
|
84
|
+
content: [{ type: 'text', text: `Failed to save blueprint: ${error.message}` }],
|
|
85
|
+
isError: true,
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2F2ZUJsdWVwcmludC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9tYWluL21jcC90b29scy9zYXZlQmx1ZXByaW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7O0dBR0c7OztBQWtDSCxzQ0FpRUM7QUFoR0QsdUNBQXFDO0FBRXhCLFFBQUEsdUJBQXVCLEdBQXNCO0lBQ3hELElBQUksRUFBRSxnQkFBZ0I7SUFDdEIsV0FBVyxFQUFFLDhEQUE4RDtJQUMzRSxXQUFXLEVBQUU7UUFDWCxJQUFJLEVBQUUsUUFBUTtRQUNkLFVBQVUsRUFBRTtZQUNWLElBQUksRUFBRTtnQkFDSixJQUFJLEVBQUUsUUFBUTtnQkFDZCxXQUFXLEVBQUUsc0NBQXNDO2FBQ3BEO1lBQ0QsSUFBSSxFQUFFO2dCQUNKLElBQUksRUFBRSxRQUFRO2dCQUNkLFdBQVcsRUFBRSx3QkFBd0I7YUFDdEM7WUFDRCxXQUFXLEVBQUU7Z0JBQ1gsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsV0FBVyxFQUFFLHdDQUF3QzthQUN0RDtTQUNGO1FBQ0QsUUFBUSxFQUFFLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQztLQUMzQjtDQUNGLENBQUM7QUFRSyxLQUFLLFVBQVUsYUFBYSxDQUNqQyxJQUE2QixFQUM3QixRQUF1QjtJQUV2QixNQUFNLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLEdBQUcsSUFBb0MsQ0FBQztJQUVwRixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDZixPQUFPO1lBQ0wsT0FBTyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxtQ0FBbUMsRUFBRSxDQUFDO1lBQ3RFLE9BQU8sRUFBRSxJQUFJO1NBQ2QsQ0FBQztJQUNKLENBQUM7SUFFRCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDVixPQUFPO1lBQ0wsT0FBTyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxtQ0FBbUMsRUFBRSxDQUFDO1lBQ3RFLE9BQU8sRUFBRSxJQUFJO1NBQ2QsQ0FBQztJQUNKLENBQUM7SUFFRCxJQUFJLENBQUM7UUFDSCxNQUFNLElBQUksR0FBRyxJQUFBLGtCQUFRLEVBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUVwRCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDVixNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzlDLE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDOUQsT0FBTztnQkFDTCxPQUFPLEVBQUU7b0JBQ1A7d0JBQ0UsSUFBSSxFQUFFLE1BQU07d0JBQ1osSUFBSSxFQUFFLG9CQUFvQixTQUFTLHVCQUF1QixTQUFTLElBQUksTUFBTSxFQUFFO3FCQUNoRjtpQkFDRjtnQkFDRCxPQUFPLEVBQUUsSUFBSTthQUNkLENBQUM7UUFDSixDQUFDO1FBRUQscUNBQXFDO1FBQ3JDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDekIsT0FBTztnQkFDTCxPQUFPLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLGtDQUFrQyxFQUFFLENBQUM7Z0JBQ3JFLE9BQU8sRUFBRSxJQUFJO2FBQ2QsQ0FBQztRQUNKLENBQUM7UUFFRCxxQkFBcUI7UUFDckIsTUFBTSxTQUFTLEdBQUcsTUFBTSxRQUFRLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUU7WUFDOUQsSUFBSTtZQUNKLFdBQVcsRUFBRSxXQUFXLElBQUksRUFBRTtTQUMvQixDQUFDLENBQUM7UUFFSCxPQUFPO1lBQ0wsT0FBTyxFQUFFO2dCQUNQO29CQUNFLElBQUksRUFBRSxNQUFNO29CQUNaLElBQUksRUFBRSxpQ0FBaUMsSUFBSSxnQkFBZ0IsSUFBSSxDQUFDLElBQUksVUFBVSxTQUFTLENBQUMsRUFBRSxHQUFHO2lCQUM5RjthQUNGO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFBQyxPQUFPLEtBQVUsRUFBRSxDQUFDO1FBQ3BCLE9BQU87WUFDTCxPQUFPLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLDZCQUE2QixLQUFLLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztZQUMvRSxPQUFPLEVBQUUsSUFBSTtTQUNkLENBQUM7SUFDSixDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogc2F2ZV9ibHVlcHJpbnQgVG9vbFxuICogU2F2ZSBhIHNpdGUgYXMgYSBibHVlcHJpbnRcbiAqL1xuXG5pbXBvcnQgeyBNY3BUb29sRGVmaW5pdGlvbiwgTWNwVG9vbFJlc3VsdCwgTG9jYWxTZXJ2aWNlcyB9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi90eXBlcyc7XG5pbXBvcnQgeyBmaW5kU2l0ZSB9IGZyb20gJy4vaGVscGVycyc7XG5cbmV4cG9ydCBjb25zdCBzYXZlQmx1ZXByaW50RGVmaW5pdGlvbjogTWNwVG9vbERlZmluaXRpb24gPSB7XG4gIG5hbWU6ICdzYXZlX2JsdWVwcmludCcsXG4gIGRlc2NyaXB0aW9uOiAnU2F2ZSBhIHNpdGUgYXMgYSBibHVlcHJpbnQgKHRlbXBsYXRlKSBmb3IgY3JlYXRpbmcgbmV3IHNpdGVzJyxcbiAgaW5wdXRTY2hlbWE6IHtcbiAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICBzaXRlOiB7XG4gICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ1NpdGUgbmFtZSBvciBJRCB0byBzYXZlIGFzIGJsdWVwcmludCcsXG4gICAgICB9LFxuICAgICAgbmFtZToge1xuICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdOYW1lIGZvciB0aGUgYmx1ZXByaW50JyxcbiAgICAgIH0sXG4gICAgICBkZXNjcmlwdGlvbjoge1xuICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdPcHRpb25hbCBkZXNjcmlwdGlvbiBmb3IgdGhlIGJsdWVwcmludCcsXG4gICAgICB9LFxuICAgIH0sXG4gICAgcmVxdWlyZWQ6IFsnc2l0ZScsICduYW1lJ10sXG4gIH0sXG59O1xuXG5pbnRlcmZhY2UgU2F2ZUJsdWVwcmludEFyZ3Mge1xuICBzaXRlOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzYXZlQmx1ZXByaW50KFxuICBhcmdzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgc2VydmljZXM6IExvY2FsU2VydmljZXNcbik6IFByb21pc2U8TWNwVG9vbFJlc3VsdD4ge1xuICBjb25zdCB7IHNpdGU6IHNpdGVRdWVyeSwgbmFtZSwgZGVzY3JpcHRpb24gfSA9IGFyZ3MgYXMgdW5rbm93biBhcyBTYXZlQmx1ZXByaW50QXJncztcblxuICBpZiAoIXNpdGVRdWVyeSkge1xuICAgIHJldHVybiB7XG4gICAgICBjb250ZW50OiBbeyB0eXBlOiAndGV4dCcsIHRleHQ6ICdFcnJvcjogc2l0ZSBwYXJhbWV0ZXIgaXMgcmVxdWlyZWQnIH1dLFxuICAgICAgaXNFcnJvcjogdHJ1ZSxcbiAgICB9O1xuICB9XG5cbiAgaWYgKCFuYW1lKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbnRlbnQ6IFt7IHR5cGU6ICd0ZXh0JywgdGV4dDogJ0Vycm9yOiBuYW1lIHBhcmFtZXRlciBpcyByZXF1aXJlZCcgfV0sXG4gICAgICBpc0Vycm9yOiB0cnVlLFxuICAgIH07XG4gIH1cblxuICB0cnkge1xuICAgIGNvbnN0IHNpdGUgPSBmaW5kU2l0ZShzaXRlUXVlcnksIHNlcnZpY2VzLnNpdGVEYXRhKTtcblxuICAgIGlmICghc2l0ZSkge1xuICAgICAgY29uc3QgYWxsU2l0ZXMgPSBzZXJ2aWNlcy5zaXRlRGF0YS5nZXRTaXRlcygpO1xuICAgICAgY29uc3Qgc2l0ZU5hbWVzID0gYWxsU2l0ZXMubWFwKChzOiBhbnkpID0+IHMubmFtZSkuam9pbignLCAnKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNvbnRlbnQ6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICB0ZXh0OiBgU2l0ZSBub3QgZm91bmQ6IFwiJHtzaXRlUXVlcnl9XCIuIEF2YWlsYWJsZSBzaXRlczogJHtzaXRlTmFtZXMgfHwgJ25vbmUnfWAsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgaXNFcnJvcjogdHJ1ZSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gQ2hlY2sgaWYgYmx1ZXByaW50cyBzZXJ2aWNlIGV4aXN0c1xuICAgIGlmICghc2VydmljZXMuYmx1ZXByaW50cykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY29udGVudDogW3sgdHlwZTogJ3RleHQnLCB0ZXh0OiAnQmx1ZXByaW50cyBzZXJ2aWNlIG5vdCBhdmFpbGFibGUnIH1dLFxuICAgICAgICBpc0Vycm9yOiB0cnVlLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBTYXZlIHRoZSBibHVlcHJpbnRcbiAgICBjb25zdCBibHVlcHJpbnQgPSBhd2FpdCBzZXJ2aWNlcy5ibHVlcHJpbnRzLnNhdmVCbHVlcHJpbnQoc2l0ZSwge1xuICAgICAgbmFtZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBkZXNjcmlwdGlvbiB8fCAnJyxcbiAgICB9KTtcblxuICAgIHJldHVybiB7XG4gICAgICBjb250ZW50OiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgdGV4dDogYFN1Y2Nlc3NmdWxseSBzYXZlZCBibHVlcHJpbnQgXCIke25hbWV9XCIgZnJvbSBzaXRlIFwiJHtzaXRlLm5hbWV9XCIgKElEOiAke2JsdWVwcmludC5pZH0pYCxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfTtcbiAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgIHJldHVybiB7XG4gICAgICBjb250ZW50OiBbeyB0eXBlOiAndGV4dCcsIHRleHQ6IGBGYWlsZWQgdG8gc2F2ZSBibHVlcHJpbnQ6ICR7ZXJyb3IubWVzc2FnZX1gIH1dLFxuICAgICAgaXNFcnJvcjogdHJ1ZSxcbiAgICB9O1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* start_site Tool
|
|
3
|
+
* Start a WordPress site
|
|
4
|
+
*/
|
|
5
|
+
import { McpToolDefinition, McpToolResult, LocalServices } from '../../../common/types';
|
|
6
|
+
export declare const startSiteDefinition: McpToolDefinition;
|
|
7
|
+
export declare function startSite(args: Record<string, unknown>, services: LocalServices): Promise<McpToolResult>;
|