@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.
Files changed (49) hide show
  1. package/README.md +4 -0
  2. package/dist/abilities.d.ts +3 -65
  3. package/dist/abilities.d.ts.map +1 -1
  4. package/dist/abilities.js +59 -249
  5. package/dist/abilities.js.map +1 -1
  6. package/dist/config.d.ts +0 -3
  7. package/dist/config.d.ts.map +1 -1
  8. package/dist/config.js +28 -36
  9. package/dist/config.js.map +1 -1
  10. package/dist/confirmation.d.ts +55 -0
  11. package/dist/confirmation.d.ts.map +1 -0
  12. package/dist/confirmation.js +229 -0
  13. package/dist/confirmation.js.map +1 -0
  14. package/dist/errors.d.ts +4 -0
  15. package/dist/errors.d.ts.map +1 -1
  16. package/dist/errors.js +7 -1
  17. package/dist/errors.js.map +1 -1
  18. package/dist/help.d.ts +58 -0
  19. package/dist/help.d.ts.map +1 -0
  20. package/dist/help.js +75 -0
  21. package/dist/help.js.map +1 -0
  22. package/dist/http-client.d.ts +40 -0
  23. package/dist/http-client.d.ts.map +1 -0
  24. package/dist/http-client.js +167 -0
  25. package/dist/http-client.js.map +1 -0
  26. package/dist/index.js +32 -96
  27. package/dist/index.js.map +1 -1
  28. package/dist/logging.d.ts.map +1 -1
  29. package/dist/logging.js +21 -29
  30. package/dist/logging.js.map +1 -1
  31. package/dist/prompts.js +2 -2
  32. package/dist/prompts.js.map +1 -1
  33. package/dist/security.d.ts +3 -1
  34. package/dist/security.d.ts.map +1 -1
  35. package/dist/security.js +26 -1
  36. package/dist/security.js.map +1 -1
  37. package/dist/session.d.ts +44 -0
  38. package/dist/session.d.ts.map +1 -0
  39. package/dist/session.js +87 -0
  40. package/dist/session.js.map +1 -0
  41. package/dist/tool-schema.d.ts +40 -0
  42. package/dist/tool-schema.d.ts.map +1 -0
  43. package/dist/tool-schema.js +309 -0
  44. package/dist/tool-schema.js.map +1 -0
  45. package/dist/tools.d.ts +1 -42
  46. package/dist/tools.d.ts.map +1 -1
  47. package/dist/tools.js +30 -647
  48. package/dist/tools.js.map +1 -1
  49. 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
- const log = (level, message, data) => {
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
- // Fall back to stderr if server not connected or logging not enabled
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
- const log = (level, message, data) => {
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
@@ -1 +1 @@
1
- {"version":3,"file":"logging.js","sourceRoot":"","sources":["../src/logging.ts"],"names":[],"mappings":"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"}
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 ['plugins', 'themes', 'core', 'all'];
406
+ return [...VALID_UPDATE_TYPES];
407
407
  }
408
408
  if (argumentName === 'issue_type') {
409
- return ['connectivity', 'performance', 'security', 'updates'];
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 [];
@@ -1 +1 @@
1
- {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAkBH;;GAEG;AACH,MAAM,iBAAiB,GAAuB;IAC5C,+BAA+B;IAC/B;QACE,IAAI,EAAE,mBAAmB;QACzB,WAAW,EAAE,0CAA0C;QACvD,SAAS,EAAE;YACT,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,gCAAgC,EAAE,QAAQ,EAAE,IAAI,EAAE;YAClF;gBACE,IAAI,EAAE,YAAY;gBAClB,WAAW,EAAE,qEAAqE;gBAClF,QAAQ,EAAE,KAAK;aAChB;SACF;QACD,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC;YACnB;gBACE,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE;oBACP,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,uCAAuC,IAAI,EAAE,OAAO,IAAI,WAAW,IAAI,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,cAAc,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,EAAE;;;;;;;;;;;0CAWrG;iBACjC;aACF;SACF;KACF;IAED,4BAA4B;IAC5B;QACE,IAAI,EAAE,mBAAmB;QACzB,WAAW,EAAE,gEAAgE;QAC7E,SAAS,EAAE,EAAE;QACb,WAAW,EAAE,GAAG,EAAE,CAAC;YACjB;gBACE,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE;oBACP,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE;;;;;;;;;;;;;mDAamC;iBAC1C;aACF;SACF;KACF;IAED,0BAA0B;IAC1B;QACE,IAAI,EAAE,iBAAiB;QACvB,WAAW,EAAE,+CAA+C;QAC5D,SAAS,EAAE;YACT;gBACE,IAAI,EAAE,aAAa;gBACnB,WAAW,EAAE,gDAAgD;gBAC7D,QAAQ,EAAE,KAAK;aAChB;YACD;gBACE,IAAI,EAAE,UAAU;gBAChB,WAAW,EAAE,kDAAkD;gBAC/D,QAAQ,EAAE,KAAK;aAChB;SACF;QACD,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC;YACnB;gBACE,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE;oBACP,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,yBAAyB,IAAI,EAAE,WAAW,IAAI,KAAK,OAAO,IAAI,EAAE,QAAQ,IAAI,WAAW;;;;;wBAK/E,IAAI,EAAE,WAAW,IAAI,EAAE;;;;;;;;;;;;;;oDAcK;iBAC3C;aACF;SACF;KACF;IAED,sBAAsB;IACtB;QACE,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,gDAAgD;QAC7D,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,6BAA6B,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAC5F,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC;YACnB;gBACE,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE;oBACP,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,0CAA0C,IAAI,EAAE,OAAO,IAAI,WAAW;;;;;;;;;;;;;;;;;;;;;;;gDAuBtC;iBACvC;aACF;SACF;KACF;IAED,0BAA0B;IAC1B;QACE,IAAI,EAAE,iBAAiB;QACvB,WAAW,EAAE,gDAAgD;QAC7D,SAAS,EAAE,EAAE;QACb,WAAW,EAAE,GAAG,EAAE,CAAC;YACjB;gBACE,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE;oBACP,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;uDA2BuC;iBAC9C;aACF;SACF;KACF;IAED,yBAAyB;IACzB;QACE,IAAI,EAAE,gBAAgB;QACtB,WAAW,EAAE,mDAAmD;QAChE,SAAS,EAAE;YACT;gBACE,IAAI,EAAE,UAAU;gBAChB,WAAW,EAAE,6CAA6C;gBAC1D,QAAQ,EAAE,KAAK;aAChB;SACF;QACD,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC;YACnB;gBACE,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE;oBACP,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,uCAAuC,IAAI,EAAE,QAAQ,IAAI,mBAAmB;;;;;;;;;;;;;;;;;;;;;;0FAsBF;iBACjF;aACF;SACF;KACF;IAED,wBAAwB;IACxB;QACE,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,0CAA0C;QACvD,SAAS,EAAE;YACT;gBACE,IAAI,EAAE,UAAU;gBAChB,WAAW,EAAE,8CAA8C;gBAC3D,QAAQ,EAAE,KAAK;aAChB;SACF;QACD,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC;YACnB;gBACE,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE;oBACP,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,+BAA+B,IAAI,EAAE,QAAQ,IAAI,mBAAmB;;;;;;;;;;;;;;;;;;;kKAmB8E;iBACzJ;aACF;SACF;KACF;IAED,4BAA4B;IAC5B;QACE,IAAI,EAAE,mBAAmB;QACzB,WAAW,EAAE,qCAAqC;QAClD,SAAS,EAAE;YACT;gBACE,IAAI,EAAE,SAAS;gBACf,WAAW,EAAE,2CAA2C;gBACxD,QAAQ,EAAE,KAAK;aAChB;SACF;QACD,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC;YACnB;gBACE,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE;oBACP,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,sCAAsC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;oGAwBjB;iBAC3F;aACF;SACF;KACF;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,aAAa;IAC3B,OAAO,iBAAiB,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QACxE,IAAI;QACJ,WAAW;QACX,SAAS,EAAE,IAAI;KAChB,CAAC,CAAC,CAAC;AACN,CAAC;AAED,wDAAwD;AACxD,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,CAAC,cAAc,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC;AAE1F,yDAAyD;AACzD,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;AAEzE;;;GAGG;AACH,SAAS,kBAAkB,CACzB,IAAwC;IAExC,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IAEvB,MAAM,SAAS,GAA2B,EAAE,CAAC;IAE7C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAChD,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,SAAS;QAExC,wEAAwE;QACxE,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtB,IAAI,KAAK,KAAK,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC5C,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;YACvE,CAAC;YACD,SAAS,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACzB,CAAC;aAAM,IAAI,GAAG,KAAK,UAAU,EAAE,CAAC;YAC9B,+BAA+B;YAC/B,IAAI,KAAK,KAAK,KAAK,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBACxD,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;YACpF,CAAC;YACD,SAAS,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACzB,CAAC;aAAM,IAAI,GAAG,KAAK,YAAY,EAAE,CAAC;YAChC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBAClC,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,GAAG,iBAAiB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC7F,CAAC;YACD,SAAS,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACzB,CAAC;aAAM,IAAI,GAAG,KAAK,aAAa,EAAE,CAAC;YACjC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBACnC,MAAM,IAAI,KAAK,CACb,uCAAuC,CAAC,GAAG,kBAAkB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC5E,CAAC;YACJ,CAAC;YACD,SAAS,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACzB,CAAC;aAAM,CAAC;YACN,+EAA+E;YAC/E,4CAA4C;YAC5C,SAAS,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,IAAY,EAAE,IAA6B;IACnE,MAAM,MAAM,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IAE5D,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,mFAAmF;IACnF,MAAM,aAAa,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAE/C,OAAO;QACL,QAAQ,EAAE,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC;KAC5C,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,4BAA4B,CAAC,WAAmB,EAAE,YAAoB;IACpF,IAAI,YAAY,KAAK,aAAa,EAAE,CAAC;QACnC,OAAO,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IAC9C,CAAC;IAED,IAAI,YAAY,KAAK,YAAY,EAAE,CAAC;QAClC,OAAO,CAAC,cAAc,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;IAChE,CAAC;IAED,kFAAkF;IAClF,OAAO,EAAE,CAAC;AACZ,CAAC"}
1
+ {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"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"}
@@ -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
  /**
@@ -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,CAwD5E;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;;;;OAIG;IACG,OAAO,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IA4BlD,OAAO,CAAC,MAAM;CAMf;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CASjD"}
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();
@@ -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"}
@@ -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"}