@opentabs-dev/mcp-server 0.0.66 → 0.0.68

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 (123) hide show
  1. package/dist/browser-tools/analyze-site.d.ts.map +1 -1
  2. package/dist/browser-tools/analyze-site.js +3 -1
  3. package/dist/browser-tools/analyze-site.js.map +1 -1
  4. package/dist/browser-tools/extension-get-logs.d.ts +2 -2
  5. package/dist/browser-tools/get-console-logs.d.ts +2 -2
  6. package/dist/extension-handlers.d.ts +2 -1
  7. package/dist/extension-handlers.d.ts.map +1 -1
  8. package/dist/extension-handlers.js +22 -1
  9. package/dist/extension-handlers.js.map +1 -1
  10. package/dist/extension-protocol.d.ts.map +1 -1
  11. package/dist/extension-protocol.js +6 -1
  12. package/dist/extension-protocol.js.map +1 -1
  13. package/dist/mcp-setup.d.ts +1 -13
  14. package/dist/mcp-setup.d.ts.map +1 -1
  15. package/dist/mcp-setup.js +4 -96
  16. package/dist/mcp-setup.js.map +1 -1
  17. package/dist/reload.js +5 -5
  18. package/dist/reload.js.map +1 -1
  19. package/package.json +3 -1
  20. package/dist/browser-tool-names.d.ts +0 -14
  21. package/dist/browser-tool-names.d.ts.map +0 -1
  22. package/dist/browser-tool-names.js +0 -55
  23. package/dist/browser-tool-names.js.map +0 -1
  24. package/dist/discovery-legacy.d.ts +0 -32
  25. package/dist/discovery-legacy.d.ts.map +0 -1
  26. package/dist/discovery-legacy.js +0 -415
  27. package/dist/discovery-legacy.js.map +0 -1
  28. package/dist/manifest-schema.d.ts +0 -14
  29. package/dist/manifest-schema.d.ts.map +0 -1
  30. package/dist/manifest-schema.js +0 -51
  31. package/dist/manifest-schema.js.map +0 -1
  32. package/dist/mcp-prompts.d.ts +0 -71
  33. package/dist/mcp-prompts.d.ts.map +0 -1
  34. package/dist/mcp-prompts.js +0 -248
  35. package/dist/mcp-prompts.js.map +0 -1
  36. package/dist/mcp-resources.d.ts +0 -53
  37. package/dist/mcp-resources.d.ts.map +0 -1
  38. package/dist/mcp-resources.js +0 -139
  39. package/dist/mcp-resources.js.map +0 -1
  40. package/dist/permissions.d.ts +0 -59
  41. package/dist/permissions.d.ts.map +0 -1
  42. package/dist/permissions.js +0 -144
  43. package/dist/permissions.js.map +0 -1
  44. package/dist/prompts/audit-ai-docs.d.ts +0 -6
  45. package/dist/prompts/audit-ai-docs.d.ts.map +0 -1
  46. package/dist/prompts/audit-ai-docs.js +0 -155
  47. package/dist/prompts/audit-ai-docs.js.map +0 -1
  48. package/dist/prompts/build-plugin.d.ts +0 -3
  49. package/dist/prompts/build-plugin.d.ts.map +0 -1
  50. package/dist/prompts/build-plugin.js +0 -455
  51. package/dist/prompts/build-plugin.js.map +0 -1
  52. package/dist/prompts/contribute-learnings.d.ts +0 -12
  53. package/dist/prompts/contribute-learnings.d.ts.map +0 -1
  54. package/dist/prompts/contribute-learnings.js +0 -107
  55. package/dist/prompts/contribute-learnings.js.map +0 -1
  56. package/dist/prompts/plugin-icon.d.ts +0 -5
  57. package/dist/prompts/plugin-icon.d.ts.map +0 -1
  58. package/dist/prompts/plugin-icon.js +0 -147
  59. package/dist/prompts/plugin-icon.js.map +0 -1
  60. package/dist/prompts/setup-plugin.d.ts +0 -3
  61. package/dist/prompts/setup-plugin.d.ts.map +0 -1
  62. package/dist/prompts/setup-plugin.js +0 -197
  63. package/dist/prompts/setup-plugin.js.map +0 -1
  64. package/dist/prompts/troubleshoot.d.ts +0 -3
  65. package/dist/prompts/troubleshoot.d.ts.map +0 -1
  66. package/dist/prompts/troubleshoot.js +0 -191
  67. package/dist/prompts/troubleshoot.js.map +0 -1
  68. package/dist/resources/browser-tools.d.ts +0 -3
  69. package/dist/resources/browser-tools.d.ts.map +0 -1
  70. package/dist/resources/browser-tools.js +0 -100
  71. package/dist/resources/browser-tools.js.map +0 -1
  72. package/dist/resources/cli.d.ts +0 -3
  73. package/dist/resources/cli.d.ts.map +0 -1
  74. package/dist/resources/cli.js +0 -217
  75. package/dist/resources/cli.js.map +0 -1
  76. package/dist/resources/plugin-development.d.ts +0 -3
  77. package/dist/resources/plugin-development.d.ts.map +0 -1
  78. package/dist/resources/plugin-development.js +0 -596
  79. package/dist/resources/plugin-development.js.map +0 -1
  80. package/dist/resources/quick-start.d.ts +0 -3
  81. package/dist/resources/quick-start.d.ts.map +0 -1
  82. package/dist/resources/quick-start.js +0 -210
  83. package/dist/resources/quick-start.js.map +0 -1
  84. package/dist/resources/sdk-api.d.ts +0 -3
  85. package/dist/resources/sdk-api.d.ts.map +0 -1
  86. package/dist/resources/sdk-api.js +0 -199
  87. package/dist/resources/sdk-api.js.map +0 -1
  88. package/dist/resources/self-improvement.d.ts +0 -10
  89. package/dist/resources/self-improvement.d.ts.map +0 -1
  90. package/dist/resources/self-improvement.js +0 -91
  91. package/dist/resources/self-improvement.js.map +0 -1
  92. package/dist/resources/status.d.ts +0 -5
  93. package/dist/resources/status.d.ts.map +0 -1
  94. package/dist/resources/status.js +0 -27
  95. package/dist/resources/status.js.map +0 -1
  96. package/dist/resources/troubleshooting.d.ts +0 -3
  97. package/dist/resources/troubleshooting.d.ts.map +0 -1
  98. package/dist/resources/troubleshooting.js +0 -167
  99. package/dist/resources/troubleshooting.js.map +0 -1
  100. package/dist/sanitize-tool-output.d.ts +0 -20
  101. package/dist/sanitize-tool-output.d.ts.map +0 -1
  102. package/dist/sanitize-tool-output.js +0 -52
  103. package/dist/sanitize-tool-output.js.map +0 -1
  104. package/dist/skip-confirmation.d.ts +0 -15
  105. package/dist/skip-confirmation.d.ts.map +0 -1
  106. package/dist/skip-confirmation.js +0 -16
  107. package/dist/skip-confirmation.js.map +0 -1
  108. package/dist/skip-permissions.d.ts +0 -11
  109. package/dist/skip-permissions.d.ts.map +0 -1
  110. package/dist/skip-permissions.js +0 -12
  111. package/dist/skip-permissions.js.map +0 -1
  112. package/dist/skip-sanitization.d.ts +0 -17
  113. package/dist/skip-sanitization.d.ts.map +0 -1
  114. package/dist/skip-sanitization.js +0 -18
  115. package/dist/skip-sanitization.js.map +0 -1
  116. package/dist/skip-verification.d.ts +0 -11
  117. package/dist/skip-verification.d.ts.map +0 -1
  118. package/dist/skip-verification.js +0 -12
  119. package/dist/skip-verification.js.map +0 -1
  120. package/dist/verify-plugin.d.ts +0 -53
  121. package/dist/verify-plugin.d.ts.map +0 -1
  122. package/dist/verify-plugin.js +0 -123
  123. package/dist/verify-plugin.js.map +0 -1
package/dist/reload.js CHANGED
@@ -20,7 +20,7 @@ import { startConfigWatching, startFileWatching, stopFileWatching } from './file
20
20
  import { sweepStaleSessions } from './http-routes.js';
21
21
  import { pruneStaleBuffers } from './log-buffer.js';
22
22
  import { log } from './logger.js';
23
- import { notifyAllListsChanged, rebuildCachedBrowserTools, registerMcpHandlers } from './mcp-setup.js';
23
+ import { notifyToolListChanged, rebuildCachedBrowserTools, registerMcpHandlers } from './mcp-setup.js';
24
24
  import { buildRegistry } from './registry.js';
25
25
  import { checkForUpdates } from './version-check.js';
26
26
  /**
@@ -120,7 +120,7 @@ const pruneStaleState = (state) => {
120
120
  const createFileWatcherCallbacks = (state, sessionServers, transports) => {
121
121
  const notifyAllClients = () => {
122
122
  for (const srv of sessionServers) {
123
- notifyAllListsChanged(srv);
123
+ notifyToolListChanged(srv);
124
124
  }
125
125
  };
126
126
  return {
@@ -397,7 +397,7 @@ const performReload = async (state, sessionServers, transports, isHotReload) =>
397
397
  }
398
398
  log.info(`Hot reload: re-registered ${reregistered}/${sessionServers.length} session(s), notifying of list changes`);
399
399
  for (const srv of sessionServers) {
400
- notifyAllListsChanged(srv);
400
+ notifyToolListChanged(srv);
401
401
  }
402
402
  }
403
403
  // Version check: async via `npm view`, best-effort on every reload
@@ -440,11 +440,11 @@ const performConfigReload = async (state, sessionServers, transports) => {
440
440
  // Clear and restart the sweep timer so it uses fresh references
441
441
  restartSweepTimer(state, transports, sessionServers);
442
442
  await reloadCore({ state, sessionServers, transports });
443
- // Notify all MCP clients that tool/resource/prompt lists changed after config reload.
443
+ // Notify all MCP clients that tool lists changed after config reload.
444
444
  // (performReload handles its own notification after handler re-registration,
445
445
  // so reloadCore itself does not notify — each caller is responsible.)
446
446
  for (const srv of sessionServers) {
447
- notifyAllListsChanged(srv);
447
+ notifyToolListChanged(srv);
448
448
  }
449
449
  log.info(`Config reload complete: ${state.registry.plugins.size} plugin(s) in ${Date.now() - startTs}ms`);
450
450
  return { plugins: state.registry.plugins.size, durationMs: Date.now() - startTs };
@@ -1 +1 @@
1
- {"version":3,"file":"reload.js","sourceRoot":"","sources":["../src/reload.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reload.js","sourceRoot":"","sources":["../src/reload.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAC1F,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACrH,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC7F,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAElC,OAAO,EAAE,qBAAqB,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACvG,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAQrD;;;;;;;;;GASG;AACH,MAAM,gBAAgB,GAAG,2BAAoC,CAAC;AAE9D,MAAM,cAAc,GAAG,GAAkB,EAAE,CACvC,UAAsC,CAAC,gBAAgB,CAA+B,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;AAEhH,MAAM,cAAc,GAAG,CAAC,OAAsB,EAAQ,EAAE;IACrD,UAAsC,CAAC,gBAAgB,CAAC,GAAG,OAAO,CAAC;AACtE,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,eAAe,GAAG,CAAC,KAAkB,EAAQ,EAAE;IACnD,KAAK,MAAM,UAAU,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC;QACjD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;YAC5C,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAED,KAAK,MAAM,UAAU,IAAI,KAAK,CAAC,gBAAgB,CAAC,IAAI,EAAE,EAAE,CAAC;QACvD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;YAC5C,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAED,6DAA6D;IAC7D,+DAA+D;IAC/D,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IACjE,IAAI,4BAA4B,GAAG,CAAC,CAAC;IACrC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,EAAE,CAAC;QACvD,IAAI,GAAG,KAAK,SAAS,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACrD,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;YACrD,4BAA4B,EAAE,CAAC;QACjC,CAAC;IACH,CAAC;IACD,IAAI,4BAA4B,GAAG,CAAC,EAAE,CAAC;QACrC,GAAG,CAAC,IAAI,CAAC,UAAU,4BAA4B,wCAAwC,CAAC,CAAC;IAC3F,CAAC;IAED,wEAAwE;IACxE,KAAK,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,iBAAiB,CAAC,EAAE,CAAC;QAC3E,IAAI,CAAC,MAAM,CAAC,KAAK;YAAE,SAAS;QAC5B,MAAM,MAAM,GAAG,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACxF,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC7B,+CAA+C;YAC/C,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;YAC9E,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;gBACjD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACpC,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;gBACjD,CAAC;YACH,CAAC;QACH,CAAC;aAAM,IAAI,MAAM,EAAE,CAAC;YAClB,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YAC/D,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;gBACjD,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACnC,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;gBACjD,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,8CAA8C;IAC9C,iBAAiB,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAE1D,8DAA8D;IAC9D,MAAM,WAAW,GAAG,IAAI,GAAG,CACzB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;SACxC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC;SAC1B,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAC/C,CAAC;IACF,KAAK,CAAC,eAAe,GAAG,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAEnF,0EAA0E;IAC1E,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;IACpC,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC;QAChD,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YAC/B,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,qBAAqB,EAAE,CAAC;QAChD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1B,KAAK,CAAC,qBAAqB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;AACH,CAAC,CAAC;AASF;;;;GAIG;AACH,MAAM,0BAA0B,GAAG,CACjC,KAAkB,EAClB,cAAmC,EACnC,UAAiE,EACjE,EAAE;IACF,MAAM,gBAAgB,GAAG,GAAS,EAAE;QAClC,KAAK,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;YACjC,qBAAqB,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC,CAAC;IAEF,OAAO;QACL,iBAAiB,EAAE,CAAC,UAAkB,EAAE,EAAE;YACxC,gBAAgB,EAAE,CAAC;YACnB,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YACtD,IAAI,MAAM,EAAE,CAAC;gBACX,KAAK,gBAAgB,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;oBACjG,GAAG,CAAC,KAAK,CAAC,oCAAoC,UAAU,GAAG,EAAE,GAAG,CAAC,CAAC;gBACpE,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QACD,aAAa,EAAE,CAAC,UAAkB,EAAE,IAAY,EAAE,SAAkB,EAAE,EAAE;YACtE,KAAK,gBAAgB,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;gBAC/E,GAAG,CAAC,KAAK,CAAC,oCAAoC,UAAU,GAAG,EAAE,GAAG,CAAC,CAAC;YACpE,CAAC,CAAC,CAAC;QACL,CAAC;QACD,eAAe,EAAE,GAAG,EAAE;YACpB,KAAK,mBAAmB,CAAC,KAAK,EAAE,cAAc,EAAE,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;gBACjF,GAAG,CAAC,KAAK,CAAC,+BAA+B,EAAE,GAAG,CAAC,CAAC;YAClD,CAAC,CAAC,CAAC;QACL,CAAC;QACD,kBAAkB,EAAE,CAAC,UAAkB,EAAE,EAAE;YACzC,GAAG,CAAC,IAAI,CAAC,WAAW,UAAU,uEAAuE,CAAC,CAAC;YACvG,KAAK,CAAC,QAAQ,GAAG,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC1G,gBAAgB,EAAE,CAAC;YACnB,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;gBACtB,KAAK,YAAY,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;oBAC9C,GAAG,CAAC,KAAK,CAAC,kDAAkD,EAAE,GAAG,CAAC,CAAC;gBACrE,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,0BAA0B,GAAG,CAAC,KAAkB,EAAQ,EAAE;IAC9D,IAAI,UAAU,GAAG,CAAC,CAAC;IAEnB,KAAK,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,iBAAiB,CAAC,EAAE,CAAC;QAC3E,IAAI,UAAU,KAAK,SAAS;YAAE,SAAS;QACvC,IAAI,CAAC,MAAM,CAAC,eAAe;YAAE,SAAS;QAEtC,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACtD,IAAI,CAAC,MAAM;YAAE,SAAS;QAEtB,IAAI,MAAM,CAAC,eAAe,KAAK,MAAM,CAAC,OAAO,EAAE,CAAC;YAC9C,GAAG,CAAC,IAAI,CACN,WAAW,UAAU,mBAAmB,MAAM,CAAC,eAAe,QAAQ,MAAM,CAAC,OAAO,kCAAkC,CACvH,CAAC;YACF,MAAM,CAAC,UAAU,GAAG,KAAK,CAAC;YAC1B,MAAM,CAAC,eAAe,GAAG,SAAS,CAAC;YACnC,OAAO,MAAM,CAAC,KAAK,CAAC;YACpB,UAAU,EAAE,CAAC;QACf,CAAC;IACH,CAAC;IAED,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;QACnB,KAAK,qBAAqB,CAAC,KAAK,EAAE,KAAK,CAAC,iBAAiB,CAAC,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;YAChF,GAAG,CAAC,KAAK,CAAC,8CAA8C,EAAE,GAAG,CAAC,CAAC;QACjE,CAAC,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,GAAG,KAAK,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,UAAU,EAAkB,EAAiB,EAAE;IAChG,uFAAuF;IACvF,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACxB,kBAAkB,CAAC,KAAK,EAAE,UAAU,EAAE,cAAc,CAAC,CAAC;IAEtD,8EAA8E;IAC9E,iFAAiF;IACjF,oFAAoF;IACpF,mFAAmF;IACnF,oFAAoF;IACpF,MAAM,eAAe,GAAG,KAAK,CAAC,YAAY,CAAC,mBAAmB,CAAC;IAE/D,IAAI,aAAa,GAAG,KAAK,CAAC;IAC1B,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;QAClC,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;QACjC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;QAEnF,8DAA8D;QAC9D,sFAAsF;QACtF,MAAM,WAAW,GAAG,QAAQ,CAAC;QAC7B,MAAM,oBAAoB,GAAG,EAAE,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;QACvD,MAAM,cAAc,GAAG,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;QAChD,MAAM,kBAAkB,GAAG,MAAM,CAAC;QAClC,wEAAwE;QACxE,sEAAsE;QACtE,qEAAqE;QACrE,MAAM,kBAAkB,GAAG,KAAK,CAAC,eAAe,CAAC;QAEjD,yEAAyE;QACzE,wEAAwE;QACxE,gDAAgD;QAChD,MAAM,eAAe,GAAG,EAAE,YAAY,EAAE,KAAK,CAAC,YAAY,EAAE,kBAAkB,EAAE,EAAyB,EAAE,CAAC;QAC5G,yBAAyB,CAAC,eAAyC,CAAC,CAAC;QACrE,MAAM,qBAAqB,GAAG,eAAe,CAAC,kBAAkB,CAAC;QAEjE,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,GAAG,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,4BAA4B,CAAC,CAAC;YACvD,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;gBACvB,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,SAAS,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;YAC7C,CAAC;QACH,CAAC;QAED,GAAG,CAAC,IAAI,CACN,kBAAkB,MAAM,CAAC,YAAY,CAAC,MAAM,0BAA0B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,MAAM,uBAAuB,CACpI,CAAC;QAEF,gEAAgE;QAChE,KAAK,CAAC,QAAQ,GAAG,WAAW,CAAC;QAC7B,KAAK,CAAC,iBAAiB,GAAG,oBAAoB,CAAC;QAC/C,KAAK,CAAC,WAAW,GAAG,cAAc,CAAC;QACnC,KAAK,CAAC,eAAe,GAAG,kBAAkB,CAAC;QAC3C,KAAK,CAAC,eAAe,GAAG,kBAAkB,CAAC;QAC3C,KAAK,CAAC,kBAAkB,GAAG,qBAAqB,CAAC;QAEjD,oDAAoD;QACpD,eAAe,CAAC,KAAK,CAAC,CAAC;QAEvB,gGAAgG;QAChG,+EAA+E;QAC/E,0BAA0B,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,KAAK,CAAC,wCAAwC,EAAE,GAAG,CAAC,CAAC;IAC3D,CAAC;IAED,6EAA6E;IAC7E,2EAA2E;IAC3E,0EAA0E;IAC1E,MAAM,cAAc,GAAG,KAAK,CAAC,QAAQ,CAAC;IACtC,IAAI,CAAC;QACH,KAAK,CAAC,QAAQ,GAAG,MAAM,UAAU,EAAE,CAAC;QACpC,aAAa,GAAG,cAAc,KAAK,IAAI,IAAI,KAAK,CAAC,QAAQ,KAAK,cAAc,CAAC;IAC/E,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,KAAK,CAAC,sDAAsD,EAAE,GAAG,CAAC,CAAC;IACzE,CAAC;IAED,2EAA2E;IAC3E,wEAAwE;IACxE,IAAI,KAAK,EAAE,EAAE,CAAC;QACZ,MAAM,SAAS,GAAG,0BAA0B,CAAC,KAAK,EAAE,cAAc,EAAE,UAAU,CAAC,CAAC;QAChF,MAAM,WAAW,GAAG,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC7D,iBAAiB,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;QACjD,mBAAmB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAEtC,yEAAyE;QACzE,4EAA4E;QAC5E,gFAAgF;QAChF,uFAAuF;QACvF,mFAAmF;QACnF,wFAAwF;QACxF,+EAA+E;QAC/E,IACE,eAAe,KAAK,IAAI;YACxB,KAAK,CAAC,YAAY,CAAC,mBAAmB,KAAK,IAAI;YAC/C,KAAK,CAAC,YAAY,CAAC,mBAAmB,GAAG,eAAe,EACxD,CAAC;YACD,GAAG,CAAC,IAAI,CAAC,oFAAoF,CAAC,CAAC;YAC/F,SAAS,CAAC,eAAe,EAAE,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;QACtB,MAAM,YAAY,CAAC,KAAK,CAAC,CAAC;QAE1B,0EAA0E;QAC1E,yEAAyE;QACzE,sEAAsE;QACtE,IAAI,aAAa,EAAE,CAAC;YAClB,GAAG,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC;YACrE,UAAU,CAAC,GAAG,EAAE;gBACd,IAAI,CAAC;oBACH,mBAAmB,CAAC,KAAK,CAAC,CAAC;gBAC7B,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,GAAG,CAAC,IAAI,CAAC,yCAAyC,EAAE,GAAG,CAAC,CAAC;gBAC3D,CAAC;YACH,CAAC,EAAE,GAAG,CAAC,CAAC;QACV,CAAC;IACH,CAAC;AACH,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,iBAAiB,GAAG,CACxB,KAAkB,EAClB,UAAiE,EACjE,cAAmC,EAC7B,EAAE;IACR,IAAI,KAAK,CAAC,YAAY,KAAK,IAAI,EAAE,CAAC;QAChC,aAAa,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAClC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC;IAC5B,CAAC;IACD,KAAK,CAAC,YAAY,GAAG,WAAW,CAAC,GAAG,EAAE;QACpC,kBAAkB,CAAC,KAAK,EAAE,UAAU,EAAE,cAAc,CAAC,CAAC;IACxD,CAAC,EAAE,MAAM,CAAC,CAAC;AACb,CAAC,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,MAAM,aAAa,GAAG,KAAK,EACzB,KAAkB,EAClB,cAAmC,EACnC,UAAiE,EACjE,WAAoB,EACG,EAAE;IACzB,yEAAyE;IACzE,2EAA2E;IAC3E,yEAAyE;IACzE,iDAAiD;IACjD,IAAI,YAAyB,CAAC;IAC9B,MAAM,KAAK,GAAG,IAAI,OAAO,CAAO,OAAO,CAAC,EAAE;QACxC,YAAY,GAAG,OAAO,CAAC;IACzB,CAAC,CAAC,CAAC;IACH,MAAM,YAAY,GAAG,cAAc,EAAE,CAAC;IACtC,cAAc,CAAC,KAAK,CAAC,CAAC;IACtB,MAAM,YAAY,CAAC;IACnB,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAE3B,IAAI,CAAC;QACH,4EAA4E;QAC5E,uEAAuE;QACvE,iBAAiB,CAAC,KAAK,EAAE,UAAU,EAAE,cAAc,CAAC,CAAC;QAErD,wEAAwE;QACxE,mEAAmE;QACnE,kEAAkE;QAClE,IAAI,CAAC;YACH,MAAM,aAAa,GAAG,MAAM,wBAAwB,EAAE,CAAC;YACvD,IAAI,aAAa,CAAC,cAAc,EAAE,CAAC;gBACjC,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;oBACtB,kEAAkE;oBAClE,mEAAmE;oBACnE,8DAA8D;oBAC9D,GAAG,CAAC,IAAI,CAAC,0EAA0E,CAAC,CAAC;oBACrF,UAAU,CAAC,GAAG,EAAE;wBACd,IAAI,CAAC;4BACH,mBAAmB,CAAC,KAAK,CAAC,CAAC;wBAC7B,CAAC;wBAAC,OAAO,GAAG,EAAE,CAAC;4BACb,GAAG,CAAC,IAAI,CAAC,yCAAyC,EAAE,GAAG,CAAC,CAAC;wBAC3D,CAAC;oBACH,CAAC,EAAE,GAAG,CAAC,CAAC;gBACV,CAAC;qBAAM,CAAC;oBACN,4DAA4D;oBAC5D,GAAG,CAAC,IAAI,CAAC,2EAA2E,CAAC,CAAC;oBACtF,KAAK,CAAC,sBAAsB,GAAG,IAAI,CAAC;gBACtC,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,IAAI,CAAC,8DAA8D,EAAE,GAAG,CAAC,CAAC;QAChF,CAAC;QAED,mEAAmE;QACnE,IAAI,CAAC;YACH,MAAM,qBAAqB,EAAE,CAAC;QAChC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,IAAI,CAAC,2BAA2B,EAAE,GAAG,CAAC,CAAC;QAC7C,CAAC;QAED,6EAA6E;QAC7E,oEAAoE;QACpE,KAAK,CAAC,YAAY,GAAG,YAAY,CAAC;QAElC,MAAM,UAAU,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,CAAC,CAAC;QAExD,uEAAuE;QACvE,mEAAmE;QACnE,sEAAsE;QACtE,6EAA6E;QAC7E,IAAI,WAAW,EAAE,CAAC;YAChB,IAAI,YAAY,GAAG,CAAC,CAAC;YACrB,KAAK,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;gBACjC,IAAI,CAAC;oBACH,mBAAmB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;oBAChC,YAAY,EAAE,CAAC;gBACjB,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,GAAG,CAAC,IAAI,CAAC,8CAA8C,EAAE,GAAG,CAAC,CAAC;gBAChE,CAAC;YACH,CAAC;YACD,GAAG,CAAC,IAAI,CACN,6BAA6B,YAAY,IAAI,cAAc,CAAC,MAAM,wCAAwC,CAC3G,CAAC;YACF,KAAK,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;gBACjC,qBAAqB,CAAC,GAAG,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC;QAED,mEAAmE;QACnE,IAAI,CAAC;YACH,MAAM,eAAe,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;QAAC,MAAM,CAAC;YACP,4DAA4D;QAC9D,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC;QACxC,OAAO;YACL,mBAAmB,EAAE,IAAI,CAAC,GAAG,EAAE;YAC/B,oBAAoB,EAAE,UAAU;SACjC,CAAC;IACJ,CAAC;YAAS,CAAC;QACT,2DAA2D;QAC3D,YAAY,EAAE,CAAC;IACjB,CAAC;AACH,CAAC,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,mBAAmB,GAAG,KAAK,EAC/B,KAAkB,EAClB,cAAmC,EACnC,UAAiE,EACf,EAAE;IACpD,8EAA8E;IAC9E,IAAI,YAAyB,CAAC;IAC9B,MAAM,KAAK,GAAG,IAAI,OAAO,CAAO,OAAO,CAAC,EAAE;QACxC,YAAY,GAAG,OAAO,CAAC;IACzB,CAAC,CAAC,CAAC;IACH,MAAM,YAAY,GAAG,cAAc,EAAE,CAAC;IACtC,cAAc,CAAC,KAAK,CAAC,CAAC;IACtB,MAAM,YAAY,CAAC;IACnB,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAE3B,IAAI,CAAC;QACH,gEAAgE;QAChE,iBAAiB,CAAC,KAAK,EAAE,UAAU,EAAE,cAAc,CAAC,CAAC;QAErD,MAAM,UAAU,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,CAAC,CAAC;QAExD,sEAAsE;QACtE,6EAA6E;QAC7E,sEAAsE;QACtE,KAAK,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;YACjC,qBAAqB,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC;QAED,GAAG,CAAC,IAAI,CAAC,2BAA2B,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,iBAAiB,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,IAAI,CAAC,CAAC;QAE1G,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC;IACpF,CAAC;YAAS,CAAC;QACT,2DAA2D;QAC3D,YAAY,EAAE,CAAC;IACjB,CAAC;AACH,CAAC,CAAC;AAGF,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,7 @@
1
1
  {
2
2
  "name": "@opentabs-dev/mcp-server",
3
- "version": "0.0.66",
3
+ "version": "0.0.68",
4
+ "license": "MIT",
4
5
  "engines": {
5
6
  "node": ">= 22.0.0"
6
7
  },
@@ -26,6 +27,7 @@
26
27
  "@modelcontextprotocol/sdk": "^1.27.1",
27
28
  "@opentabs-dev/shared": "*",
28
29
  "ajv": "^8.18.0",
30
+ "open": "^11.0.0",
29
31
  "ws": "^8.19.0",
30
32
  "zod": "^4.3.6"
31
33
  }
@@ -1,14 +0,0 @@
1
- /**
2
- * Static list of all browser tool names.
3
- *
4
- * Extracted into its own module so the plugin loader can check for browser
5
- * tool name references (prompt injection detection) without pulling in the
6
- * full browser-tools barrel and its heavy dependencies (Zod schemas,
7
- * handler implementations, etc.).
8
- *
9
- * browser-tools/index.ts validates at module load time that this list
10
- * matches the actual tool definitions.
11
- */
12
- declare const BROWSER_TOOL_NAMES: readonly string[];
13
- export { BROWSER_TOOL_NAMES };
14
- //# sourceMappingURL=browser-tool-names.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"browser-tool-names.d.ts","sourceRoot":"","sources":["../src/browser-tool-names.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,QAAA,MAAM,kBAAkB,EAAE,SAAS,MAAM,EAyCxC,CAAC;AAEF,OAAO,EAAE,kBAAkB,EAAE,CAAC"}
@@ -1,55 +0,0 @@
1
- /**
2
- * Static list of all browser tool names.
3
- *
4
- * Extracted into its own module so the plugin loader can check for browser
5
- * tool name references (prompt injection detection) without pulling in the
6
- * full browser-tools barrel and its heavy dependencies (Zod schemas,
7
- * handler implementations, etc.).
8
- *
9
- * browser-tools/index.ts validates at module load time that this list
10
- * matches the actual tool definitions.
11
- */
12
- const BROWSER_TOOL_NAMES = [
13
- 'extension_reload',
14
- 'browser_list_tabs',
15
- 'browser_open_tab',
16
- 'browser_close_tab',
17
- 'browser_navigate_tab',
18
- 'browser_focus_tab',
19
- 'browser_get_tab_info',
20
- 'browser_execute_script',
21
- 'browser_screenshot_tab',
22
- 'browser_get_tab_content',
23
- 'browser_get_page_html',
24
- 'browser_get_storage',
25
- 'browser_click_element',
26
- 'browser_type_text',
27
- 'browser_select_option',
28
- 'browser_wait_for_element',
29
- 'browser_query_elements',
30
- 'browser_get_cookies',
31
- 'browser_set_cookie',
32
- 'browser_delete_cookies',
33
- 'browser_enable_network_capture',
34
- 'browser_get_network_requests',
35
- 'browser_get_websocket_frames',
36
- 'browser_export_har',
37
- 'browser_disable_network_capture',
38
- 'browser_get_console_logs',
39
- 'browser_clear_console_logs',
40
- 'browser_list_resources',
41
- 'browser_get_resource_content',
42
- 'browser_press_key',
43
- 'browser_scroll',
44
- 'browser_hover_element',
45
- 'browser_handle_dialog',
46
- 'extension_get_state',
47
- 'extension_get_logs',
48
- 'extension_get_side_panel',
49
- 'extension_check_adapter',
50
- 'extension_force_reconnect',
51
- 'plugin_analyze_site',
52
- 'plugin_list_tabs',
53
- ];
54
- export { BROWSER_TOOL_NAMES };
55
- //# sourceMappingURL=browser-tool-names.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"browser-tool-names.js","sourceRoot":"","sources":["../src/browser-tool-names.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,MAAM,kBAAkB,GAAsB;IAC5C,kBAAkB;IAClB,mBAAmB;IACnB,kBAAkB;IAClB,mBAAmB;IACnB,sBAAsB;IACtB,mBAAmB;IACnB,sBAAsB;IACtB,wBAAwB;IACxB,wBAAwB;IACxB,yBAAyB;IACzB,uBAAuB;IACvB,qBAAqB;IACrB,uBAAuB;IACvB,mBAAmB;IACnB,uBAAuB;IACvB,0BAA0B;IAC1B,wBAAwB;IACxB,qBAAqB;IACrB,oBAAoB;IACpB,wBAAwB;IACxB,gCAAgC;IAChC,8BAA8B;IAC9B,8BAA8B;IAC9B,oBAAoB;IACpB,iCAAiC;IACjC,0BAA0B;IAC1B,4BAA4B;IAC5B,wBAAwB;IACxB,8BAA8B;IAC9B,mBAAmB;IACnB,gBAAgB;IAChB,uBAAuB;IACvB,uBAAuB;IACvB,qBAAqB;IACrB,oBAAoB;IACpB,0BAA0B;IAC1B,yBAAyB;IACzB,2BAA2B;IAC3B,qBAAqB;IACrB,kBAAkB;CACnB,CAAC;AAEF,OAAO,EAAE,kBAAkB,EAAE,CAAC"}
@@ -1,32 +0,0 @@
1
- /**
2
- * Legacy plugin discovery (opentabs-plugin.json based).
3
- *
4
- * Provides the old discoverPlugins and loadPluginFromDir functions that read
5
- * opentabs-plugin.json manifests. Used by reload.ts and file-watcher.ts until
6
- * they are migrated to the new package.json-based pipeline in later stories.
7
- *
8
- * This file will be deleted once US-009 (reload.ts), US-012 (file-watcher.ts),
9
- * and US-020 (cleanup) are complete.
10
- */
11
- import type { FailedPlugin, RegisteredPlugin } from './state.js';
12
- import type { TrustTier } from '@opentabs-dev/shared';
13
- /**
14
- * Load a single plugin from a directory.
15
- * Reads opentabs-plugin.json and dist/adapter.iife.js.
16
- */
17
- declare const loadPluginFromDir: (dir: string, trustTier: TrustTier, npmPkgName: string | null, sourcePath?: string) => Promise<RegisteredPlugin>;
18
- /** Result of full plugin discovery: successfully loaded plugins and failed paths */
19
- interface DiscoveryOutcome {
20
- plugins: Map<string, RegisteredPlugin>;
21
- failures: FailedPlugin[];
22
- }
23
- /**
24
- * Legacy plugin discovery using opentabs-plugin.json manifests.
25
- * Discovers from both node_modules and local filesystem paths.
26
- *
27
- * This function will be replaced by the new discoverPlugins in discovery.ts
28
- * once reload.ts (US-009) and file-watcher.ts (US-012) are migrated.
29
- */
30
- declare const discoverPluginsLegacy: (localPaths: string[], allowedNpmPackages: string[], rootDir?: string) => Promise<DiscoveryOutcome>;
31
- export { discoverPluginsLegacy, loadPluginFromDir };
32
- //# sourceMappingURL=discovery-legacy.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"discovery-legacy.d.ts","sourceRoot":"","sources":["../src/discovery-legacy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAUH,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACjE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAqEtD;;;GAGG;AACH,QAAA,MAAM,iBAAiB,GACrB,KAAK,MAAM,EACX,WAAW,SAAS,EACpB,YAAY,MAAM,GAAG,IAAI,EACzB,aAAa,MAAM,KAClB,OAAO,CAAC,gBAAgB,CA+E1B,CAAC;AA4PF,oFAAoF;AACpF,UAAU,gBAAgB;IACxB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IACvC,QAAQ,EAAE,YAAY,EAAE,CAAC;CAC1B;AAED;;;;;;GAMG;AACH,QAAA,MAAM,qBAAqB,GACzB,YAAY,MAAM,EAAE,EACpB,oBAAoB,MAAM,EAAE,EAC5B,UAAU,MAAM,KACf,OAAO,CAAC,gBAAgB,CAoC1B,CAAC;AAEF,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,CAAC"}
@@ -1,415 +0,0 @@
1
- /**
2
- * Legacy plugin discovery (opentabs-plugin.json based).
3
- *
4
- * Provides the old discoverPlugins and loadPluginFromDir functions that read
5
- * opentabs-plugin.json manifests. Used by reload.ts and file-watcher.ts until
6
- * they are migrated to the new package.json-based pipeline in later stories.
7
- *
8
- * This file will be deleted once US-009 (reload.ts), US-012 (file-watcher.ts),
9
- * and US-020 (cleanup) are complete.
10
- */
11
- import { browserTools } from './browser-tools/index.js';
12
- import { log } from './logger.js';
13
- import { parseManifest } from './manifest-schema.js';
14
- import { isAllowedPluginPath } from './resolver.js';
15
- import { validatePluginName, validateUrlPattern } from '@opentabs-dev/shared';
16
- import { readdir, stat } from 'node:fs/promises';
17
- import { join, resolve, dirname } from 'node:path';
18
- import { fileURLToPath } from 'node:url';
19
- /**
20
- * The mcp-server package root directory, resolved from this module's URL.
21
- * Used as the default rootDir for npm plugin discovery so that `node_modules`
22
- * scanning works regardless of the process's working directory.
23
- */
24
- const PACKAGE_DIR = resolve(dirname(fileURLToPath(import.meta.url)), '..');
25
- /**
26
- * Extract the plugin name from an npm package name.
27
- * opentabs-plugin-slack → slack
28
- * @myorg/opentabs-plugin-jira → myorg-jira
29
- */
30
- const pluginNameFromPackage = (pkgName) => {
31
- if (pkgName.startsWith('@')) {
32
- // Scoped: @scope/opentabs-plugin-name → scope-name
33
- const parts = pkgName.split('/');
34
- const scopePart = parts[0] ?? '';
35
- const namePart = parts[1] ?? '';
36
- const scope = scopePart.slice(1); // remove @
37
- const pluginSuffix = namePart.replace(/^opentabs-plugin-/, '');
38
- return `${scope}-${pluginSuffix}`;
39
- }
40
- return pkgName.replace(/^opentabs-plugin-/, '');
41
- };
42
- /**
43
- * Determine trust tier from how the plugin was discovered.
44
- */
45
- const determineTrustTierLegacy = (pkgName, isLocal) => {
46
- if (isLocal)
47
- return 'local';
48
- if (pkgName && pkgName.startsWith('@opentabs-dev/'))
49
- return 'official';
50
- return 'community';
51
- };
52
- /**
53
- * Browser tool names that should not appear in plugin tool descriptions.
54
- * Presence of these names may indicate a prompt injection attempt where
55
- * a plugin tries to instruct the AI agent to invoke browser-level tools.
56
- * Derived from the browserTools array so the list stays in sync automatically.
57
- */
58
- const BROWSER_TOOL_NAMES = browserTools.map(t => t.name);
59
- /**
60
- * Check plugin tool descriptions for references to browser tool names.
61
- * Returns an array of { toolName, browserToolName } for each match found.
62
- */
63
- const checkBrowserToolReferences = (tools) => {
64
- const matches = [];
65
- for (const tool of tools) {
66
- const descLower = tool.description.toLowerCase();
67
- for (const btName of BROWSER_TOOL_NAMES) {
68
- if (descLower.includes(btName)) {
69
- matches.push({ toolName: tool.name, browserToolName: btName });
70
- }
71
- }
72
- }
73
- return matches;
74
- };
75
- /**
76
- * Load a single plugin from a directory.
77
- * Reads opentabs-plugin.json and dist/adapter.iife.js.
78
- */
79
- const loadPluginFromDir = async (dir, trustTier, npmPkgName, sourcePath) => {
80
- const manifestPath = join(dir, 'opentabs-plugin.json');
81
- const iifePath = join(dir, 'dist', 'adapter.iife.js');
82
- // Read and validate manifest
83
- const manifestRaw = await Bun.file(manifestPath).text();
84
- const manifest = parseManifest(manifestRaw, manifestPath);
85
- // Derive the internal plugin name.
86
- // Handles both bare names ("slack") and legacy prefixed names ("opentabs-plugin-slack").
87
- let pluginName;
88
- if (npmPkgName) {
89
- pluginName = pluginNameFromPackage(npmPkgName);
90
- const manifestBare = manifest.name.replace(/^opentabs-plugin-/, '');
91
- if (manifestBare !== pluginName) {
92
- log.warn(`Plugin manifest name "${manifest.name}" doesn't match package name "${npmPkgName}" (expected plugin name: ${pluginName}, got: ${manifestBare})`);
93
- }
94
- }
95
- else {
96
- // Local plugin — strip legacy prefix if present
97
- pluginName = manifest.name.replace(/^opentabs-plugin-/, '');
98
- }
99
- // Validate plugin name
100
- const nameError = validatePluginName(pluginName);
101
- if (nameError) {
102
- throw new Error(nameError);
103
- }
104
- // Validate URL patterns
105
- for (const pattern of manifest.url_patterns) {
106
- const patternError = validateUrlPattern(pattern);
107
- if (patternError)
108
- throw new Error(patternError);
109
- }
110
- // Warn if any tool description references browser tool names (possible prompt injection)
111
- for (const match of checkBrowserToolReferences(manifest.tools)) {
112
- log.warn(`Plugin "${pluginName}" tool "${match.toolName}" description references browser tool "${match.browserToolName}" — possible prompt injection attempt`);
113
- }
114
- // Read IIFE — reject missing, empty, or oversized files
115
- const MAX_IIFE_SIZE = 5 * 1024 * 1024;
116
- const iifeFile = Bun.file(iifePath);
117
- if (!(await iifeFile.exists())) {
118
- throw new Error(`Adapter IIFE not found at ${iifePath}`);
119
- }
120
- const iifeSize = iifeFile.size;
121
- if (iifeSize > MAX_IIFE_SIZE) {
122
- throw new Error(`Adapter IIFE for "${pluginName}" is ${(iifeSize / 1024 / 1024).toFixed(1)}MB, exceeding the 5MB limit`);
123
- }
124
- const iife = await iifeFile.text();
125
- if (iife.length === 0) {
126
- throw new Error(`Adapter IIFE at ${iifePath} is empty — rebuild the plugin`);
127
- }
128
- return {
129
- name: pluginName,
130
- version: manifest.version,
131
- displayName: manifest.displayName,
132
- urlPatterns: manifest.url_patterns,
133
- trustTier,
134
- iife,
135
- tools: manifest.tools.map(t => ({
136
- name: t.name,
137
- displayName: t.displayName,
138
- description: t.description,
139
- icon: t.icon,
140
- input_schema: t.input_schema,
141
- output_schema: t.output_schema,
142
- })),
143
- adapterHash: manifest.adapterHash,
144
- sourcePath,
145
- npmPackageName: npmPkgName ?? undefined,
146
- };
147
- };
148
- /**
149
- * Check if a directory exists and is accessible.
150
- */
151
- const dirExists = async (path) => {
152
- try {
153
- const s = await stat(path);
154
- return s.isDirectory();
155
- }
156
- catch {
157
- return false;
158
- }
159
- };
160
- /**
161
- * Check if a file exists and is accessible.
162
- */
163
- const fileExists = async (path) => Bun.file(path).exists();
164
- /**
165
- * Scan node_modules for opentabs plugins.
166
- * Looks for:
167
- * 1. node_modules/opentabs-plugin-* directories
168
- * 2. node_modules/@* /opentabs-plugin-* directories (scoped packages)
169
- * 3. Any package with 'opentabs-plugin' keyword in package.json
170
- *
171
- * Only packages listed in allowedPackages are loaded. Discovered packages
172
- * not in the allow list are logged as skipped with instructions to add them.
173
- */
174
- const discoverFromNodeModules = async (rootDir, allowedPackages) => {
175
- const allowedSet = new Set(allowedPackages);
176
- const results = [];
177
- const nodeModulesDir = join(rootDir, 'node_modules');
178
- if (!(await dirExists(nodeModulesDir))) {
179
- return results;
180
- }
181
- let entries;
182
- try {
183
- entries = await readdir(nodeModulesDir);
184
- }
185
- catch {
186
- return results;
187
- }
188
- // Track already-discovered package dirs to avoid duplicate keyword scan
189
- const discoveredDirs = new Set();
190
- // 1. Direct matches: opentabs-plugin-*
191
- for (const entry of entries) {
192
- if (!entry.startsWith('opentabs-plugin-'))
193
- continue;
194
- const pkgDir = join(nodeModulesDir, entry);
195
- if (!(await dirExists(pkgDir)))
196
- continue;
197
- if (!(await fileExists(join(pkgDir, 'opentabs-plugin.json'))))
198
- continue;
199
- if (!allowedSet.has(entry)) {
200
- log.info(`Skipping npm plugin "${entry}" — not listed in config.npmPlugins. Add it to ~/.opentabs/config.json to enable.`);
201
- discoveredDirs.add(pkgDir);
202
- continue;
203
- }
204
- const trustTier = determineTrustTierLegacy(entry, false);
205
- try {
206
- const plugin = await loadPluginFromDir(pkgDir, trustTier, entry);
207
- results.push({ plugin, source: `node_modules/${entry}` });
208
- discoveredDirs.add(pkgDir);
209
- }
210
- catch (err) {
211
- log.error(`Failed to load plugin from node_modules/${entry}:`, err);
212
- }
213
- }
214
- // 2. Scoped packages: @scope/opentabs-plugin-*
215
- for (const entry of entries) {
216
- if (!entry.startsWith('@'))
217
- continue;
218
- const scopeDir = join(nodeModulesDir, entry);
219
- if (!(await dirExists(scopeDir)))
220
- continue;
221
- let scopeEntries;
222
- try {
223
- scopeEntries = await readdir(scopeDir);
224
- }
225
- catch {
226
- continue;
227
- }
228
- for (const scopeEntry of scopeEntries) {
229
- if (!scopeEntry.startsWith('opentabs-plugin-'))
230
- continue;
231
- const pkgDir = join(scopeDir, scopeEntry);
232
- if (!(await dirExists(pkgDir)))
233
- continue;
234
- if (!(await fileExists(join(pkgDir, 'opentabs-plugin.json'))))
235
- continue;
236
- const fullPkgName = `${entry}/${scopeEntry}`;
237
- if (!allowedSet.has(fullPkgName)) {
238
- log.info(`Skipping npm plugin "${fullPkgName}" — not listed in config.npmPlugins. Add it to ~/.opentabs/config.json to enable.`);
239
- discoveredDirs.add(pkgDir);
240
- continue;
241
- }
242
- const trustTier = determineTrustTierLegacy(fullPkgName, false);
243
- try {
244
- const plugin = await loadPluginFromDir(pkgDir, trustTier, fullPkgName);
245
- results.push({
246
- plugin,
247
- source: `node_modules/${fullPkgName}`,
248
- });
249
- discoveredDirs.add(pkgDir);
250
- }
251
- catch (err) {
252
- log.error(`Failed to load plugin from node_modules/${fullPkgName}:`, err);
253
- }
254
- }
255
- }
256
- // 3. Keyword fallback: scan remaining packages for 'opentabs-plugin' keyword.
257
- // Check for opentabs-plugin.json first (cheap stat) before reading package.json (expensive parse).
258
- for (const entry of entries) {
259
- if (entry.startsWith('.') || entry.startsWith('@'))
260
- continue;
261
- if (entry.startsWith('opentabs-plugin-'))
262
- continue; // Already checked
263
- const pkgDir = join(nodeModulesDir, entry);
264
- if (discoveredDirs.has(pkgDir))
265
- continue;
266
- if (!(await dirExists(pkgDir)))
267
- continue;
268
- if (!(await fileExists(join(pkgDir, 'opentabs-plugin.json'))))
269
- continue;
270
- const pkgJsonPath = join(pkgDir, 'package.json');
271
- if (!(await fileExists(pkgJsonPath)))
272
- continue;
273
- try {
274
- const pkgJson = JSON.parse(await Bun.file(pkgJsonPath).text());
275
- const keywords = pkgJson.keywords;
276
- if (!Array.isArray(keywords) || !keywords.includes('opentabs-plugin'))
277
- continue;
278
- if (!allowedSet.has(entry)) {
279
- log.info(`Skipping npm plugin "${entry}" — not listed in config.npmPlugins. Add it to ~/.opentabs/config.json to enable.`);
280
- discoveredDirs.add(pkgDir);
281
- continue;
282
- }
283
- const trustTier = determineTrustTierLegacy(entry, false);
284
- const plugin = await loadPluginFromDir(pkgDir, trustTier, entry);
285
- results.push({ plugin, source: `node_modules/${entry} (keyword)` });
286
- discoveredDirs.add(pkgDir);
287
- }
288
- catch (err) {
289
- log.error(`Failed to load plugin from node_modules/${entry} (keyword):`, err);
290
- }
291
- }
292
- // Keyword scan for scoped packages too
293
- for (const entry of entries) {
294
- if (!entry.startsWith('@'))
295
- continue;
296
- const scopeDir = join(nodeModulesDir, entry);
297
- if (!(await dirExists(scopeDir)))
298
- continue;
299
- let scopeEntries;
300
- try {
301
- scopeEntries = await readdir(scopeDir);
302
- }
303
- catch {
304
- continue;
305
- }
306
- for (const scopeEntry of scopeEntries) {
307
- if (scopeEntry.startsWith('opentabs-plugin-'))
308
- continue; // Already checked
309
- const pkgDir = join(scopeDir, scopeEntry);
310
- if (discoveredDirs.has(pkgDir))
311
- continue;
312
- if (!(await dirExists(pkgDir)))
313
- continue;
314
- if (!(await fileExists(join(pkgDir, 'opentabs-plugin.json'))))
315
- continue;
316
- const pkgJsonPath = join(pkgDir, 'package.json');
317
- if (!(await fileExists(pkgJsonPath)))
318
- continue;
319
- try {
320
- const pkgJson = JSON.parse(await Bun.file(pkgJsonPath).text());
321
- const keywords = pkgJson.keywords;
322
- if (!Array.isArray(keywords) || !keywords.includes('opentabs-plugin'))
323
- continue;
324
- const fullPkgName = `${entry}/${scopeEntry}`;
325
- if (!allowedSet.has(fullPkgName)) {
326
- log.info(`Skipping npm plugin "${fullPkgName}" — not listed in config.npmPlugins. Add it to ~/.opentabs/config.json to enable.`);
327
- discoveredDirs.add(pkgDir);
328
- continue;
329
- }
330
- const trustTier = determineTrustTierLegacy(fullPkgName, false);
331
- const plugin = await loadPluginFromDir(pkgDir, trustTier, fullPkgName);
332
- results.push({
333
- plugin,
334
- source: `node_modules/${fullPkgName} (keyword)`,
335
- });
336
- discoveredDirs.add(pkgDir);
337
- }
338
- catch (err) {
339
- log.error(`Failed to load plugin from node_modules/${entry}/${scopeEntry} (keyword):`, err);
340
- }
341
- }
342
- }
343
- return results;
344
- };
345
- const discoverFromLocalPaths = async (paths) => {
346
- const results = [];
347
- const failures = [];
348
- for (const pluginPath of paths) {
349
- const resolvedPath = resolve(pluginPath);
350
- if (!(await isAllowedPluginPath(resolvedPath))) {
351
- const msg = `Rejected plugin path outside allowed directories: ${resolvedPath}`;
352
- log.warn(msg);
353
- failures.push({ path: resolvedPath, error: 'Path is outside allowed directories' });
354
- continue;
355
- }
356
- if (!(await dirExists(resolvedPath))) {
357
- const msg = `Local plugin path does not exist: ${resolvedPath}`;
358
- log.warn(msg);
359
- failures.push({ path: resolvedPath, error: 'Directory does not exist' });
360
- continue;
361
- }
362
- if (!(await fileExists(join(resolvedPath, 'opentabs-plugin.json')))) {
363
- const msg = `No opentabs-plugin.json found at: ${resolvedPath}`;
364
- log.warn(msg);
365
- failures.push({ path: resolvedPath, error: 'No opentabs-plugin.json found' });
366
- continue;
367
- }
368
- try {
369
- const plugin = await loadPluginFromDir(resolvedPath, 'local', null, resolvedPath);
370
- results.push({ plugin, source: resolvedPath });
371
- }
372
- catch (err) {
373
- const errorMsg = err instanceof Error ? err.message : String(err);
374
- log.error(`Failed to load local plugin from ${resolvedPath}:`, err);
375
- failures.push({ path: resolvedPath, error: errorMsg });
376
- }
377
- }
378
- return { results, failures };
379
- };
380
- /**
381
- * Legacy plugin discovery using opentabs-plugin.json manifests.
382
- * Discovers from both node_modules and local filesystem paths.
383
- *
384
- * This function will be replaced by the new discoverPlugins in discovery.ts
385
- * once reload.ts (US-009) and file-watcher.ts (US-012) are migrated.
386
- */
387
- const discoverPluginsLegacy = async (localPaths, allowedNpmPackages, rootDir) => {
388
- const resolvedRoot = rootDir ?? PACKAGE_DIR;
389
- log.info('Starting plugin discovery...');
390
- // Discover from both sources in parallel
391
- const [npmResults, localDiscovery] = await Promise.all([
392
- discoverFromNodeModules(resolvedRoot, allowedNpmPackages),
393
- discoverFromLocalPaths(localPaths),
394
- ]);
395
- // Local results first so local plugins take precedence over npm in dedup
396
- const allResults = [...localDiscovery.results, ...npmResults];
397
- const failures = [...localDiscovery.failures];
398
- // Build new plugin Map, checking for duplicates
399
- const plugins = new Map();
400
- let loaded = 0;
401
- for (const { plugin, source } of allResults) {
402
- if (plugins.has(plugin.name)) {
403
- log.warn(`Duplicate plugin "${plugin.name}" from ${source} — skipping (already loaded)`);
404
- continue;
405
- }
406
- plugins.set(plugin.name, plugin);
407
- loaded++;
408
- const toolNames = plugin.tools.map(t => t.name).join(', ');
409
- log.info(`Discovered plugin: ${plugin.name} v${plugin.version} (${plugin.trustTier}) from ${source} — tools: [${toolNames}]`);
410
- }
411
- log.info(`Plugin discovery complete: ${loaded} plugin(s) loaded`);
412
- return { plugins, failures };
413
- };
414
- export { discoverPluginsLegacy, loadPluginFromDir };
415
- //# sourceMappingURL=discovery-legacy.js.map