@mainwp/mcp 1.0.0-beta.1 → 1.0.0-beta.2
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 +4 -0
- package/dist/abilities.d.ts +3 -65
- package/dist/abilities.d.ts.map +1 -1
- package/dist/abilities.js +59 -249
- package/dist/abilities.js.map +1 -1
- package/dist/config.d.ts +0 -3
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +28 -36
- package/dist/config.js.map +1 -1
- package/dist/confirmation.d.ts +55 -0
- package/dist/confirmation.d.ts.map +1 -0
- package/dist/confirmation.js +229 -0
- package/dist/confirmation.js.map +1 -0
- package/dist/errors.d.ts +4 -0
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +7 -1
- package/dist/errors.js.map +1 -1
- package/dist/help.d.ts +58 -0
- package/dist/help.d.ts.map +1 -0
- package/dist/help.js +75 -0
- package/dist/help.js.map +1 -0
- package/dist/http-client.d.ts +40 -0
- package/dist/http-client.d.ts.map +1 -0
- package/dist/http-client.js +167 -0
- package/dist/http-client.js.map +1 -0
- package/dist/index.js +32 -96
- package/dist/index.js.map +1 -1
- package/dist/logging.d.ts.map +1 -1
- package/dist/logging.js +21 -29
- package/dist/logging.js.map +1 -1
- package/dist/prompts.js +2 -2
- package/dist/prompts.js.map +1 -1
- package/dist/security.d.ts +3 -1
- package/dist/security.d.ts.map +1 -1
- package/dist/security.js +26 -1
- package/dist/security.js.map +1 -1
- package/dist/session.d.ts +44 -0
- package/dist/session.d.ts.map +1 -0
- package/dist/session.js +87 -0
- package/dist/session.js.map +1 -0
- package/dist/tool-schema.d.ts +40 -0
- package/dist/tool-schema.d.ts.map +1 -0
- package/dist/tool-schema.js +309 -0
- package/dist/tool-schema.js.map +1 -0
- package/dist/tools.d.ts +1 -42
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +30 -647
- package/dist/tools.js.map +1 -1
- package/package.json +5 -4
package/dist/logging.js
CHANGED
|
@@ -4,6 +4,23 @@
|
|
|
4
4
|
* Provides MCP-compliant logging with severity levels.
|
|
5
5
|
* Uses server.sendLoggingMessage() when connected, falls back to stderr.
|
|
6
6
|
*/
|
|
7
|
+
/** Build the 6-method Logger dispatch from a single log function. */
|
|
8
|
+
function buildLoggerMethods(log) {
|
|
9
|
+
return {
|
|
10
|
+
debug: (message, data) => log('debug', message, data),
|
|
11
|
+
info: (message, data) => log('info', message, data),
|
|
12
|
+
notice: (message, data) => log('notice', message, data),
|
|
13
|
+
warning: (message, data) => log('warning', message, data),
|
|
14
|
+
error: (message, data) => log('error', message, data),
|
|
15
|
+
critical: (message, data) => log('critical', message, data),
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
/** Format and write a log line to stderr. */
|
|
19
|
+
function logToStderr(level, loggerName, message, data) {
|
|
20
|
+
const timestamp = new Date().toISOString();
|
|
21
|
+
const dataStr = data ? ` ${JSON.stringify(data)}` : '';
|
|
22
|
+
console.error(`[${timestamp}] [${level.toUpperCase()}] [${loggerName}] ${message}${dataStr}`);
|
|
23
|
+
}
|
|
7
24
|
/**
|
|
8
25
|
* Create a logger that sends structured messages to MCP clients.
|
|
9
26
|
*
|
|
@@ -11,10 +28,8 @@
|
|
|
11
28
|
* @param loggerName - Name to identify the logging source (default: 'mainwp-mcp')
|
|
12
29
|
*/
|
|
13
30
|
export function createLogger(server, loggerName = 'mainwp-mcp') {
|
|
14
|
-
|
|
15
|
-
// Build the log data payload
|
|
31
|
+
return buildLoggerMethods((level, message, data) => {
|
|
16
32
|
const logData = data ? { message, ...data } : message;
|
|
17
|
-
// Try to send via MCP protocol
|
|
18
33
|
server
|
|
19
34
|
.sendLoggingMessage({
|
|
20
35
|
level,
|
|
@@ -22,20 +37,9 @@ export function createLogger(server, loggerName = 'mainwp-mcp') {
|
|
|
22
37
|
data: logData,
|
|
23
38
|
})
|
|
24
39
|
.catch(() => {
|
|
25
|
-
|
|
26
|
-
const timestamp = new Date().toISOString();
|
|
27
|
-
const dataStr = data ? ` ${JSON.stringify(data)}` : '';
|
|
28
|
-
console.error(`[${timestamp}] [${level.toUpperCase()}] [${loggerName}] ${message}${dataStr}`);
|
|
40
|
+
logToStderr(level, loggerName, message, data);
|
|
29
41
|
});
|
|
30
|
-
};
|
|
31
|
-
return {
|
|
32
|
-
debug: (message, data) => log('debug', message, data),
|
|
33
|
-
info: (message, data) => log('info', message, data),
|
|
34
|
-
notice: (message, data) => log('notice', message, data),
|
|
35
|
-
warning: (message, data) => log('warning', message, data),
|
|
36
|
-
error: (message, data) => log('error', message, data),
|
|
37
|
-
critical: (message, data) => log('critical', message, data),
|
|
38
|
-
};
|
|
42
|
+
});
|
|
39
43
|
}
|
|
40
44
|
/**
|
|
41
45
|
* Create a child logger that automatically includes a request correlation ID
|
|
@@ -57,18 +61,6 @@ export function withRequestId(logger, requestId) {
|
|
|
57
61
|
* Does not require a server instance.
|
|
58
62
|
*/
|
|
59
63
|
export function createStderrLogger(loggerName = 'mainwp-mcp') {
|
|
60
|
-
|
|
61
|
-
const timestamp = new Date().toISOString();
|
|
62
|
-
const dataStr = data ? ` ${JSON.stringify(data)}` : '';
|
|
63
|
-
console.error(`[${timestamp}] [${level.toUpperCase()}] [${loggerName}] ${message}${dataStr}`);
|
|
64
|
-
};
|
|
65
|
-
return {
|
|
66
|
-
debug: (message, data) => log('debug', message, data),
|
|
67
|
-
info: (message, data) => log('info', message, data),
|
|
68
|
-
notice: (message, data) => log('notice', message, data),
|
|
69
|
-
warning: (message, data) => log('warning', message, data),
|
|
70
|
-
error: (message, data) => log('error', message, data),
|
|
71
|
-
critical: (message, data) => log('critical', message, data),
|
|
72
|
-
};
|
|
64
|
+
return buildLoggerMethods((level, message, data) => logToStderr(level, loggerName, message, data));
|
|
73
65
|
}
|
|
74
66
|
//# sourceMappingURL=logging.js.map
|
package/dist/logging.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logging.js","sourceRoot":"","sources":["../src/logging.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"logging.js","sourceRoot":"","sources":["../src/logging.ts"],"names":[],"mappings":"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"}
|
package/dist/prompts.js
CHANGED
|
@@ -403,10 +403,10 @@ export function getPrompt(name, args) {
|
|
|
403
403
|
*/
|
|
404
404
|
export function getPromptArgumentCompletions(_promptName, argumentName) {
|
|
405
405
|
if (argumentName === 'update_type') {
|
|
406
|
-
return [
|
|
406
|
+
return [...VALID_UPDATE_TYPES];
|
|
407
407
|
}
|
|
408
408
|
if (argumentName === 'issue_type') {
|
|
409
|
-
return [
|
|
409
|
+
return [...VALID_ISSUE_TYPES];
|
|
410
410
|
}
|
|
411
411
|
// site_id and site_ids require dynamic data - return empty for static completions
|
|
412
412
|
return [];
|
package/dist/prompts.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"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"}
|
package/dist/security.d.ts
CHANGED
|
@@ -30,8 +30,10 @@ export declare class RateLimiter {
|
|
|
30
30
|
* Acquire a token, waiting if necessary.
|
|
31
31
|
* Returns immediately if rate limiting is disabled (maxTokens = 0).
|
|
32
32
|
* @param signal - Optional AbortSignal to cancel the wait
|
|
33
|
+
* @param maxWaitMs - Maximum time to wait for a token (default: 30000ms).
|
|
34
|
+
* Prevents indefinite blocking when the rate limit is very low.
|
|
33
35
|
*/
|
|
34
|
-
acquire(signal?: AbortSignal): Promise<void>;
|
|
36
|
+
acquire(signal?: AbortSignal, maxWaitMs?: number): Promise<void>;
|
|
35
37
|
private refill;
|
|
36
38
|
}
|
|
37
39
|
/**
|
package/dist/security.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"security.d.ts","sourceRoot":"","sources":["../src/security.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AASH;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,SAAI,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"security.d.ts","sourceRoot":"","sources":["../src/security.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AASH;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,SAAI,GAAG,IAAI,CAkF5E;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAiCrD;AAED;;;GAGG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;gBAExB,iBAAiB,EAAE,MAAM;IAOrC;;;;;;OAMG;IACG,OAAO,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,SAAS,SAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IA+BrE,OAAO,CAAC,MAAM;CAMf;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CASjD"}
|
package/dist/security.js
CHANGED
|
@@ -35,6 +35,26 @@ export function validateInput(args, depth = 0) {
|
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
|
+
// Plural ID fields (e.g., site_ids): must be an array of valid positive integers
|
|
39
|
+
if (key.endsWith('_ids')) {
|
|
40
|
+
if (!Array.isArray(value)) {
|
|
41
|
+
throw McpErrorFactory.invalidParams(`"${key}" must be an array`, { parameter: key });
|
|
42
|
+
}
|
|
43
|
+
for (const item of value) {
|
|
44
|
+
if (typeof item !== 'string' && typeof item !== 'number') {
|
|
45
|
+
throw McpErrorFactory.invalidParams(`Element in "${key}" must be a string or number, got ${typeof item}`, { parameter: key });
|
|
46
|
+
}
|
|
47
|
+
const numItem = typeof item === 'string' ? Number(item) : item;
|
|
48
|
+
if (!Number.isFinite(numItem) ||
|
|
49
|
+
!Number.isInteger(numItem) ||
|
|
50
|
+
numItem < 1 ||
|
|
51
|
+
numItem > Number.MAX_SAFE_INTEGER) {
|
|
52
|
+
throw McpErrorFactory.invalidParams(`Element in "${key}" must be a positive integer`, {
|
|
53
|
+
parameter: key,
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
38
58
|
// Array validation
|
|
39
59
|
if (Array.isArray(value)) {
|
|
40
60
|
if (value.length > MAX_ARRAY_ELEMENTS) {
|
|
@@ -102,8 +122,10 @@ export class RateLimiter {
|
|
|
102
122
|
* Acquire a token, waiting if necessary.
|
|
103
123
|
* Returns immediately if rate limiting is disabled (maxTokens = 0).
|
|
104
124
|
* @param signal - Optional AbortSignal to cancel the wait
|
|
125
|
+
* @param maxWaitMs - Maximum time to wait for a token (default: 30000ms).
|
|
126
|
+
* Prevents indefinite blocking when the rate limit is very low.
|
|
105
127
|
*/
|
|
106
|
-
async acquire(signal) {
|
|
128
|
+
async acquire(signal, maxWaitMs = 30000) {
|
|
107
129
|
if (this.maxTokens === 0)
|
|
108
130
|
return; // Disabled
|
|
109
131
|
this.refill();
|
|
@@ -112,6 +134,9 @@ export class RateLimiter {
|
|
|
112
134
|
throw new Error('Rate limiter acquire aborted');
|
|
113
135
|
}
|
|
114
136
|
const waitTime = Math.ceil((1 - this.tokens) / this.refillRate);
|
|
137
|
+
if (waitTime > maxWaitMs) {
|
|
138
|
+
throw new Error(`Rate limit wait time (${waitTime}ms) exceeds maximum (${maxWaitMs}ms)`);
|
|
139
|
+
}
|
|
115
140
|
await new Promise((resolve, reject) => {
|
|
116
141
|
const timer = setTimeout(() => {
|
|
117
142
|
cleanup();
|
package/dist/security.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"security.js","sourceRoot":"","sources":["../src/security.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"security.js","sourceRoot":"","sources":["../src/security.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session Data Tracking
|
|
3
|
+
*
|
|
4
|
+
* Tracks cumulative response bytes per server session and detects
|
|
5
|
+
* idempotent no-op errors from upstream.
|
|
6
|
+
*
|
|
7
|
+
* Concurrency note: The module-level counter assumes MCP tool executions
|
|
8
|
+
* are processed sequentially (stdio transport handles one request at a time).
|
|
9
|
+
*/
|
|
10
|
+
import type { Config } from './config.js';
|
|
11
|
+
import type { Logger } from './logging.js';
|
|
12
|
+
/**
|
|
13
|
+
* No-op error codes and their human-readable descriptions.
|
|
14
|
+
* Single source of truth: NOOP_ERROR_CODES is derived from this map's keys.
|
|
15
|
+
* When adding new idempotent abilities that return new error codes, add them here.
|
|
16
|
+
*/
|
|
17
|
+
export declare const NOOP_DESCRIPTIONS: Record<string, string>;
|
|
18
|
+
/**
|
|
19
|
+
* Format byte counts as human-readable strings (e.g., "50.0 MB", "2.5 KB").
|
|
20
|
+
*/
|
|
21
|
+
export declare function formatBytes(bytes: number): string;
|
|
22
|
+
/**
|
|
23
|
+
* Check whether an error represents an idempotent no-op (already in desired state).
|
|
24
|
+
* Only matches 4xx HTTP errors with a recognized no-op error code.
|
|
25
|
+
* @internal
|
|
26
|
+
*/
|
|
27
|
+
export declare function isNoOpError(error: unknown): boolean;
|
|
28
|
+
/**
|
|
29
|
+
* Get the current cumulative session data usage in bytes and the configured limit.
|
|
30
|
+
*/
|
|
31
|
+
export declare function getSessionDataUsage(config: Config): {
|
|
32
|
+
used: number;
|
|
33
|
+
limit: number;
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* Track response size and enforce the session data limit.
|
|
37
|
+
* Throws McpError with RESOURCE_EXHAUSTED if adding these bytes would exceed the cap.
|
|
38
|
+
*/
|
|
39
|
+
export declare function trackSessionData(text: string, config: Config, logger: Logger, context: string): number;
|
|
40
|
+
/**
|
|
41
|
+
* Reset the cumulative session data counter to zero.
|
|
42
|
+
*/
|
|
43
|
+
export declare function resetSessionData(): void;
|
|
44
|
+
//# sourceMappingURL=session.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAUpD,CAAC;AAIF;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAIjD;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAMnD;AAOD;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAEnF;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,GACd,MAAM,CAeR;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC"}
|
package/dist/session.js
ADDED
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session Data Tracking
|
|
3
|
+
*
|
|
4
|
+
* Tracks cumulative response bytes per server session and detects
|
|
5
|
+
* idempotent no-op errors from upstream.
|
|
6
|
+
*
|
|
7
|
+
* Concurrency note: The module-level counter assumes MCP tool executions
|
|
8
|
+
* are processed sequentially (stdio transport handles one request at a time).
|
|
9
|
+
*/
|
|
10
|
+
import { McpErrorFactory } from './errors.js';
|
|
11
|
+
/**
|
|
12
|
+
* No-op error codes and their human-readable descriptions.
|
|
13
|
+
* Single source of truth: NOOP_ERROR_CODES is derived from this map's keys.
|
|
14
|
+
* When adding new idempotent abilities that return new error codes, add them here.
|
|
15
|
+
*/
|
|
16
|
+
export const NOOP_DESCRIPTIONS = {
|
|
17
|
+
already_active: 'Already active — no action needed',
|
|
18
|
+
already_inactive: 'Already inactive — no action needed',
|
|
19
|
+
already_installed: 'Already installed — no action needed',
|
|
20
|
+
already_connected: 'Already connected — no action needed',
|
|
21
|
+
already_disconnected: 'Already disconnected — no action needed',
|
|
22
|
+
already_suspended: 'Already suspended — no action needed',
|
|
23
|
+
already_unsuspended: 'Already unsuspended — no action needed',
|
|
24
|
+
no_updates_available: 'No updates available',
|
|
25
|
+
nothing_to_update: 'Nothing to update',
|
|
26
|
+
};
|
|
27
|
+
const NOOP_ERROR_CODES = new Set(Object.keys(NOOP_DESCRIPTIONS));
|
|
28
|
+
/**
|
|
29
|
+
* Format byte counts as human-readable strings (e.g., "50.0 MB", "2.5 KB").
|
|
30
|
+
*/
|
|
31
|
+
export function formatBytes(bytes) {
|
|
32
|
+
if (bytes >= 1048576)
|
|
33
|
+
return `${(bytes / 1048576).toFixed(1)} MB`;
|
|
34
|
+
if (bytes >= 1024)
|
|
35
|
+
return `${(bytes / 1024).toFixed(1)} KB`;
|
|
36
|
+
return `${bytes} bytes`;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Check whether an error represents an idempotent no-op (already in desired state).
|
|
40
|
+
* Only matches 4xx HTTP errors with a recognized no-op error code.
|
|
41
|
+
* @internal
|
|
42
|
+
*/
|
|
43
|
+
export function isNoOpError(error) {
|
|
44
|
+
if (typeof error !== 'object' || error === null)
|
|
45
|
+
return false;
|
|
46
|
+
const { status, code } = error;
|
|
47
|
+
if (typeof status !== 'number' || status < 400 || status > 499)
|
|
48
|
+
return false;
|
|
49
|
+
if (typeof code !== 'string')
|
|
50
|
+
return false;
|
|
51
|
+
return NOOP_ERROR_CODES.has(code);
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Cumulative session data counter.
|
|
55
|
+
*/
|
|
56
|
+
let sessionDataBytes = 0;
|
|
57
|
+
/**
|
|
58
|
+
* Get the current cumulative session data usage in bytes and the configured limit.
|
|
59
|
+
*/
|
|
60
|
+
export function getSessionDataUsage(config) {
|
|
61
|
+
return { used: sessionDataBytes, limit: config.maxSessionData };
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Track response size and enforce the session data limit.
|
|
65
|
+
* Throws McpError with RESOURCE_EXHAUSTED if adding these bytes would exceed the cap.
|
|
66
|
+
*/
|
|
67
|
+
export function trackSessionData(text, config, logger, context) {
|
|
68
|
+
const bytes = Buffer.byteLength(text, 'utf8');
|
|
69
|
+
if (sessionDataBytes + bytes > config.maxSessionData) {
|
|
70
|
+
logger.error(`Session data limit exceeded ${context}`, {
|
|
71
|
+
bytes,
|
|
72
|
+
sessionDataBytes,
|
|
73
|
+
maxSessionData: config.maxSessionData,
|
|
74
|
+
wouldBe: sessionDataBytes + bytes,
|
|
75
|
+
});
|
|
76
|
+
throw McpErrorFactory.resourceExhausted(`Session data limit reached (${formatBytes(sessionDataBytes + bytes)} of ${formatBytes(config.maxSessionData)}). Start a new session to continue.`);
|
|
77
|
+
}
|
|
78
|
+
sessionDataBytes += bytes;
|
|
79
|
+
return bytes;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Reset the cumulative session data counter to zero.
|
|
83
|
+
*/
|
|
84
|
+
export function resetSessionData() {
|
|
85
|
+
sessionDataBytes = 0;
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=session.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAG9C;;;;GAIG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAA2B;IACvD,cAAc,EAAE,mCAAmC;IACnD,gBAAgB,EAAE,qCAAqC;IACvD,iBAAiB,EAAE,sCAAsC;IACzD,iBAAiB,EAAE,sCAAsC;IACzD,oBAAoB,EAAE,yCAAyC;IAC/D,iBAAiB,EAAE,sCAAsC;IACzD,mBAAmB,EAAE,wCAAwC;IAC7D,oBAAoB,EAAE,sBAAsB;IAC5C,iBAAiB,EAAE,mBAAmB;CACvC,CAAC;AAEF,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;AAEjE;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,KAAa;IACvC,IAAI,KAAK,IAAI,OAAO;QAAE,OAAO,GAAG,CAAC,KAAK,GAAG,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;IAClE,IAAI,KAAK,IAAI,IAAI;QAAE,OAAO,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;IAC5D,OAAO,GAAG,KAAK,QAAQ,CAAC;AAC1B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,KAAc;IACxC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAC9D,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,KAA6C,CAAC;IACvE,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,GAAG,GAAG,IAAI,MAAM,GAAG,GAAG;QAAE,OAAO,KAAK,CAAC;IAC7E,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC3C,OAAO,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,IAAI,gBAAgB,GAAG,CAAC,CAAC;AAEzB;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAc;IAChD,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,CAAC,cAAc,EAAE,CAAC;AAClE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAC9B,IAAY,EACZ,MAAc,EACd,MAAc,EACd,OAAe;IAEf,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC9C,IAAI,gBAAgB,GAAG,KAAK,GAAG,MAAM,CAAC,cAAc,EAAE,CAAC;QACrD,MAAM,CAAC,KAAK,CAAC,+BAA+B,OAAO,EAAE,EAAE;YACrD,KAAK;YACL,gBAAgB;YAChB,cAAc,EAAE,MAAM,CAAC,cAAc;YACrC,OAAO,EAAE,gBAAgB,GAAG,KAAK;SAClC,CAAC,CAAC;QACH,MAAM,eAAe,CAAC,iBAAiB,CACrC,+BAA+B,WAAW,CAAC,gBAAgB,GAAG,KAAK,CAAC,OAAO,WAAW,CAAC,MAAM,CAAC,cAAc,CAAC,qCAAqC,CACnJ,CAAC;IACJ,CAAC;IACD,gBAAgB,IAAI,KAAK,CAAC;IAC1B,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB;IAC9B,gBAAgB,GAAG,CAAC,CAAC;AACvB,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool Schema Conversion
|
|
3
|
+
*
|
|
4
|
+
* Converts MainWP Abilities into MCP Tool definitions with schema compression,
|
|
5
|
+
* safety annotations, and LLM instruction generation.
|
|
6
|
+
* All functions are pure — no module-level state.
|
|
7
|
+
*/
|
|
8
|
+
import type { Tool } from '@modelcontextprotocol/sdk/types.js';
|
|
9
|
+
import type { Ability, AbilityAnnotations } from './abilities.js';
|
|
10
|
+
import type { SchemaVerbosity } from './config.js';
|
|
11
|
+
/**
|
|
12
|
+
* Generate contextual LLM instruction text from ability metadata.
|
|
13
|
+
*
|
|
14
|
+
* Produces safety guidance that tells the AI how to use a tool correctly:
|
|
15
|
+
* preview-first workflows, dry-run suggestions, or read-only assurance.
|
|
16
|
+
* API-provided instructions are prepended (they take priority).
|
|
17
|
+
* @internal
|
|
18
|
+
*/
|
|
19
|
+
export declare function generateInstructions(meta: AbilityAnnotations | undefined, hasDryRun: boolean, hasConfirm: boolean): string;
|
|
20
|
+
/**
|
|
21
|
+
* Build safety tag string for tool descriptions.
|
|
22
|
+
*
|
|
23
|
+
* Standard mode: verbose tags like `[DESTRUCTIVE, Requires two-step confirmation]`
|
|
24
|
+
* Compact mode: short tags like `[destructive, confirm]`
|
|
25
|
+
* @internal
|
|
26
|
+
*/
|
|
27
|
+
export declare function buildSafetyTags(meta: AbilityAnnotations | undefined, hasDryRun: boolean, hasConfirm: boolean, verbosity: SchemaVerbosity): string;
|
|
28
|
+
/**
|
|
29
|
+
* Convert a MainWP Ability to an MCP Tool definition
|
|
30
|
+
*
|
|
31
|
+
* Enhances tool metadata with:
|
|
32
|
+
* - MCP semantic annotations (readOnlyHint, destructiveHint, idempotentHint, title, openWorldHint)
|
|
33
|
+
* - Contextual LLM instructions for safe tool usage
|
|
34
|
+
* - Highlighted safety parameters (dry_run, confirm) in descriptions
|
|
35
|
+
*
|
|
36
|
+
* @param ability - The MainWP ability to convert
|
|
37
|
+
* @param verbosity - Schema verbosity level ('compact' or 'standard')
|
|
38
|
+
*/
|
|
39
|
+
export declare function abilityToTool(ability: Ability, verbosity?: SchemaVerbosity): Tool;
|
|
40
|
+
//# sourceMappingURL=tool-schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-schema.d.ts","sourceRoot":"","sources":["../src/tool-schema.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC/D,OAAO,KAAK,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAClE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAoKnD;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,kBAAkB,GAAG,SAAS,EACpC,SAAS,EAAE,OAAO,EAClB,UAAU,EAAE,OAAO,GAClB,MAAM,CAyBR;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,kBAAkB,GAAG,SAAS,EACpC,SAAS,EAAE,OAAO,EAClB,UAAU,EAAE,OAAO,EACnB,SAAS,EAAE,eAAe,GACzB,MAAM,CAqBR;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,GAAE,eAA4B,GAAG,IAAI,CAsF7F"}
|