@opentabs-dev/mcp-server 0.0.61 → 0.0.63

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 (184) hide show
  1. package/dist/browser-tools/analyze-site.d.ts.map +1 -1
  2. package/dist/browser-tools/analyze-site.js +2 -0
  3. package/dist/browser-tools/analyze-site.js.map +1 -1
  4. package/dist/browser-tools/clear-console-logs.d.ts.map +1 -1
  5. package/dist/browser-tools/clear-console-logs.js +2 -0
  6. package/dist/browser-tools/clear-console-logs.js.map +1 -1
  7. package/dist/browser-tools/click-element.d.ts.map +1 -1
  8. package/dist/browser-tools/click-element.js +2 -0
  9. package/dist/browser-tools/click-element.js.map +1 -1
  10. package/dist/browser-tools/close-tab.d.ts.map +1 -1
  11. package/dist/browser-tools/close-tab.js +2 -0
  12. package/dist/browser-tools/close-tab.js.map +1 -1
  13. package/dist/browser-tools/definition.d.ts +4 -0
  14. package/dist/browser-tools/definition.d.ts.map +1 -1
  15. package/dist/browser-tools/definition.js.map +1 -1
  16. package/dist/browser-tools/delete-cookies.d.ts.map +1 -1
  17. package/dist/browser-tools/delete-cookies.js +2 -0
  18. package/dist/browser-tools/delete-cookies.js.map +1 -1
  19. package/dist/browser-tools/disable-network-capture.d.ts.map +1 -1
  20. package/dist/browser-tools/disable-network-capture.js +2 -0
  21. package/dist/browser-tools/disable-network-capture.js.map +1 -1
  22. package/dist/browser-tools/enable-network-capture.d.ts.map +1 -1
  23. package/dist/browser-tools/enable-network-capture.js +2 -0
  24. package/dist/browser-tools/enable-network-capture.js.map +1 -1
  25. package/dist/browser-tools/execute-script.d.ts.map +1 -1
  26. package/dist/browser-tools/execute-script.js +2 -0
  27. package/dist/browser-tools/execute-script.js.map +1 -1
  28. package/dist/browser-tools/export-har.d.ts.map +1 -1
  29. package/dist/browser-tools/export-har.js +2 -0
  30. package/dist/browser-tools/export-har.js.map +1 -1
  31. package/dist/browser-tools/extension-check-adapter.d.ts.map +1 -1
  32. package/dist/browser-tools/extension-check-adapter.js +2 -0
  33. package/dist/browser-tools/extension-check-adapter.js.map +1 -1
  34. package/dist/browser-tools/extension-force-reconnect.d.ts.map +1 -1
  35. package/dist/browser-tools/extension-force-reconnect.js +2 -0
  36. package/dist/browser-tools/extension-force-reconnect.js.map +1 -1
  37. package/dist/browser-tools/extension-get-logs.d.ts +1 -1
  38. package/dist/browser-tools/extension-get-logs.d.ts.map +1 -1
  39. package/dist/browser-tools/extension-get-logs.js +2 -0
  40. package/dist/browser-tools/extension-get-logs.js.map +1 -1
  41. package/dist/browser-tools/extension-get-side-panel.d.ts.map +1 -1
  42. package/dist/browser-tools/extension-get-side-panel.js +2 -0
  43. package/dist/browser-tools/extension-get-side-panel.js.map +1 -1
  44. package/dist/browser-tools/extension-get-state.d.ts.map +1 -1
  45. package/dist/browser-tools/extension-get-state.js +2 -0
  46. package/dist/browser-tools/extension-get-state.js.map +1 -1
  47. package/dist/browser-tools/focus-tab.d.ts.map +1 -1
  48. package/dist/browser-tools/focus-tab.js +2 -0
  49. package/dist/browser-tools/focus-tab.js.map +1 -1
  50. package/dist/browser-tools/get-console-logs.d.ts +1 -1
  51. package/dist/browser-tools/get-console-logs.d.ts.map +1 -1
  52. package/dist/browser-tools/get-console-logs.js +2 -0
  53. package/dist/browser-tools/get-console-logs.js.map +1 -1
  54. package/dist/browser-tools/get-cookies.d.ts.map +1 -1
  55. package/dist/browser-tools/get-cookies.js +2 -0
  56. package/dist/browser-tools/get-cookies.js.map +1 -1
  57. package/dist/browser-tools/get-network-requests.d.ts.map +1 -1
  58. package/dist/browser-tools/get-network-requests.js +2 -0
  59. package/dist/browser-tools/get-network-requests.js.map +1 -1
  60. package/dist/browser-tools/get-page-html.d.ts.map +1 -1
  61. package/dist/browser-tools/get-page-html.js +2 -0
  62. package/dist/browser-tools/get-page-html.js.map +1 -1
  63. package/dist/browser-tools/get-resource-content.d.ts.map +1 -1
  64. package/dist/browser-tools/get-resource-content.js +2 -0
  65. package/dist/browser-tools/get-resource-content.js.map +1 -1
  66. package/dist/browser-tools/get-storage.d.ts.map +1 -1
  67. package/dist/browser-tools/get-storage.js +2 -0
  68. package/dist/browser-tools/get-storage.js.map +1 -1
  69. package/dist/browser-tools/get-tab-content.d.ts.map +1 -1
  70. package/dist/browser-tools/get-tab-content.js +2 -0
  71. package/dist/browser-tools/get-tab-content.js.map +1 -1
  72. package/dist/browser-tools/get-tab-info.d.ts.map +1 -1
  73. package/dist/browser-tools/get-tab-info.js +2 -0
  74. package/dist/browser-tools/get-tab-info.js.map +1 -1
  75. package/dist/browser-tools/get-websocket-frames.d.ts.map +1 -1
  76. package/dist/browser-tools/get-websocket-frames.js +2 -0
  77. package/dist/browser-tools/get-websocket-frames.js.map +1 -1
  78. package/dist/browser-tools/handle-dialog.d.ts.map +1 -1
  79. package/dist/browser-tools/handle-dialog.js +2 -0
  80. package/dist/browser-tools/handle-dialog.js.map +1 -1
  81. package/dist/browser-tools/hover-element.d.ts.map +1 -1
  82. package/dist/browser-tools/hover-element.js +2 -0
  83. package/dist/browser-tools/hover-element.js.map +1 -1
  84. package/dist/browser-tools/index.d.ts.map +1 -1
  85. package/dist/browser-tools/index.js +5 -0
  86. package/dist/browser-tools/index.js.map +1 -1
  87. package/dist/browser-tools/list-resources.d.ts.map +1 -1
  88. package/dist/browser-tools/list-resources.js +2 -0
  89. package/dist/browser-tools/list-resources.js.map +1 -1
  90. package/dist/browser-tools/list-tabs.d.ts.map +1 -1
  91. package/dist/browser-tools/list-tabs.js +2 -0
  92. package/dist/browser-tools/list-tabs.js.map +1 -1
  93. package/dist/browser-tools/navigate-tab.d.ts.map +1 -1
  94. package/dist/browser-tools/navigate-tab.js +2 -0
  95. package/dist/browser-tools/navigate-tab.js.map +1 -1
  96. package/dist/browser-tools/open-tab.d.ts.map +1 -1
  97. package/dist/browser-tools/open-tab.js +2 -0
  98. package/dist/browser-tools/open-tab.js.map +1 -1
  99. package/dist/browser-tools/plugin-list-tabs.d.ts.map +1 -1
  100. package/dist/browser-tools/plugin-list-tabs.js +2 -0
  101. package/dist/browser-tools/plugin-list-tabs.js.map +1 -1
  102. package/dist/browser-tools/press-key.d.ts.map +1 -1
  103. package/dist/browser-tools/press-key.js +2 -0
  104. package/dist/browser-tools/press-key.js.map +1 -1
  105. package/dist/browser-tools/query-elements.d.ts.map +1 -1
  106. package/dist/browser-tools/query-elements.js +2 -0
  107. package/dist/browser-tools/query-elements.js.map +1 -1
  108. package/dist/browser-tools/reload-extension.d.ts.map +1 -1
  109. package/dist/browser-tools/reload-extension.js +2 -0
  110. package/dist/browser-tools/reload-extension.js.map +1 -1
  111. package/dist/browser-tools/screenshot-tab.d.ts.map +1 -1
  112. package/dist/browser-tools/screenshot-tab.js +2 -0
  113. package/dist/browser-tools/screenshot-tab.js.map +1 -1
  114. package/dist/browser-tools/scroll.d.ts.map +1 -1
  115. package/dist/browser-tools/scroll.js +2 -0
  116. package/dist/browser-tools/scroll.js.map +1 -1
  117. package/dist/browser-tools/select-option.d.ts.map +1 -1
  118. package/dist/browser-tools/select-option.js +2 -0
  119. package/dist/browser-tools/select-option.js.map +1 -1
  120. package/dist/browser-tools/set-cookie.d.ts.map +1 -1
  121. package/dist/browser-tools/set-cookie.js +2 -0
  122. package/dist/browser-tools/set-cookie.js.map +1 -1
  123. package/dist/browser-tools/type-text.d.ts.map +1 -1
  124. package/dist/browser-tools/type-text.js +2 -0
  125. package/dist/browser-tools/type-text.js.map +1 -1
  126. package/dist/browser-tools/wait-for-element.d.ts.map +1 -1
  127. package/dist/browser-tools/wait-for-element.js +2 -0
  128. package/dist/browser-tools/wait-for-element.js.map +1 -1
  129. package/dist/config.d.ts +16 -43
  130. package/dist/config.d.ts.map +1 -1
  131. package/dist/config.js +48 -157
  132. package/dist/config.js.map +1 -1
  133. package/dist/discovery.d.ts +1 -4
  134. package/dist/discovery.d.ts.map +1 -1
  135. package/dist/discovery.js +5 -17
  136. package/dist/discovery.js.map +1 -1
  137. package/dist/extension-handlers.d.ts +22 -14
  138. package/dist/extension-handlers.d.ts.map +1 -1
  139. package/dist/extension-handlers.js +114 -188
  140. package/dist/extension-handlers.js.map +1 -1
  141. package/dist/extension-protocol.d.ts +4 -9
  142. package/dist/extension-protocol.d.ts.map +1 -1
  143. package/dist/extension-protocol.js +16 -45
  144. package/dist/extension-protocol.js.map +1 -1
  145. package/dist/file-watcher.js +2 -2
  146. package/dist/file-watcher.js.map +1 -1
  147. package/dist/http-routes.d.ts.map +1 -1
  148. package/dist/http-routes.js +5 -9
  149. package/dist/http-routes.js.map +1 -1
  150. package/dist/loader.d.ts +2 -4
  151. package/dist/loader.d.ts.map +1 -1
  152. package/dist/loader.js +6 -5
  153. package/dist/loader.js.map +1 -1
  154. package/dist/mcp-setup.d.ts +11 -9
  155. package/dist/mcp-setup.d.ts.map +1 -1
  156. package/dist/mcp-setup.js +104 -27
  157. package/dist/mcp-setup.js.map +1 -1
  158. package/dist/mcp-tool-dispatch.d.ts +24 -12
  159. package/dist/mcp-tool-dispatch.d.ts.map +1 -1
  160. package/dist/mcp-tool-dispatch.js +325 -125
  161. package/dist/mcp-tool-dispatch.js.map +1 -1
  162. package/dist/plugin-management.d.ts +0 -1
  163. package/dist/plugin-management.d.ts.map +1 -1
  164. package/dist/plugin-management.js +1 -2
  165. package/dist/plugin-management.js.map +1 -1
  166. package/dist/registry.d.ts +2 -4
  167. package/dist/registry.d.ts.map +1 -1
  168. package/dist/registry.js +1 -12
  169. package/dist/registry.js.map +1 -1
  170. package/dist/reload.d.ts.map +1 -1
  171. package/dist/reload.js +73 -37
  172. package/dist/reload.js.map +1 -1
  173. package/dist/skip-permissions.d.ts +5 -12
  174. package/dist/skip-permissions.d.ts.map +1 -1
  175. package/dist/skip-permissions.js +7 -17
  176. package/dist/skip-permissions.js.map +1 -1
  177. package/dist/state.d.ts +42 -45
  178. package/dist/state.d.ts.map +1 -1
  179. package/dist/state.js +57 -43
  180. package/dist/state.js.map +1 -1
  181. package/dist/version-check.d.ts.map +1 -1
  182. package/dist/version-check.js +1 -1
  183. package/dist/version-check.js.map +1 -1
  184. package/package.json +1 -1
@@ -5,16 +5,16 @@
5
5
  * dispatch path can be tested independently. The tools/call handler in
6
6
  * mcp-setup.ts delegates to these functions after resolving the tool name.
7
7
  */
8
+ import { readFile } from 'node:fs/promises';
8
9
  import { toErrorMessage } from '@opentabs-dev/shared';
10
+ import { savePluginPermissions } from './config.js';
11
+ import { buildConfigStatePayload, sendToExtension } from './extension-handlers.js';
9
12
  import { dispatchToExtension, isDispatchError, sendConfirmationRequest, sendInvocationEnd, sendInvocationStart, } from './extension-protocol.js';
10
13
  import { log } from './logger.js';
11
- import { evaluatePermission } from './permissions.js';
12
14
  import { sanitizeErrorMessage } from './sanitize-error.js';
13
- import { appendAuditEntry, isBrowserToolEnabled, isSessionAllowed } from './state.js';
15
+ import { appendAuditEntry, consumeReviewToken, generateReviewToken, getToolPermission, validateReviewToken, } from './state.js';
14
16
  /** Maximum concurrent tool dispatches per plugin to prevent tab performance degradation */
15
17
  const MAX_CONCURRENT_DISPATCHES_PER_PLUGIN = 5;
16
- /** Short timeout for domain resolution — fail fast if the tab is unresponsive */
17
- const DOMAIN_RESOLVE_TIMEOUT_MS = 5_000;
18
18
  /** Keys that could trigger prototype pollution in JSON deserialization */
19
19
  const DANGEROUS_KEYS = new Set(['__proto__', 'constructor', 'prototype']);
20
20
  /**
@@ -35,52 +35,6 @@ const sanitizeOutput = (obj, depth = 0) => {
35
35
  }
36
36
  return result;
37
37
  };
38
- /**
39
- * Extract the target domain hostname for a browser tool call.
40
- *
41
- * - Tools with a `url` param (get_cookies, set_cookie, delete_cookies, open_tab):
42
- * parse the hostname from the URL
43
- * - Tools with a `tabId` param: dispatch browser.getTabInfo to get the tab's URL,
44
- * then parse the hostname
45
- * - Tools with neither: return null (observe-tier tools, extension diagnostics)
46
- */
47
- const resolveToolDomain = async (_toolName, args, state) => {
48
- // URL-based tools: parse domain from the url parameter
49
- const urlArg = args.url;
50
- if (typeof urlArg === 'string' && urlArg !== '') {
51
- try {
52
- return new URL(urlArg).hostname;
53
- }
54
- catch {
55
- return null;
56
- }
57
- }
58
- // Tab-based tools: get the tab's URL via a lightweight dispatch
59
- const tabIdArg = args.tabId;
60
- if (typeof tabIdArg === 'number') {
61
- try {
62
- const tabInfo = (await dispatchToExtension(state, 'browser.getTabInfo', { tabId: tabIdArg }, { timeoutMs: DOMAIN_RESOLVE_TIMEOUT_MS }));
63
- if (typeof tabInfo.url === 'string' && tabInfo.url !== '') {
64
- return new URL(tabInfo.url).hostname;
65
- }
66
- }
67
- catch {
68
- // Tab may be closed or unreachable — domain resolution is best-effort
69
- }
70
- return null;
71
- }
72
- return null;
73
- };
74
- /**
75
- * Truncate tool parameters into a short preview for the confirmation dialog.
76
- * Shows the first ~200 characters of the JSON-stringified args.
77
- */
78
- const truncateParamsPreview = (args) => {
79
- const json = JSON.stringify(args, null, 2);
80
- if (json.length <= 200)
81
- return json;
82
- return `${json.slice(0, 200)}…`;
83
- };
84
38
  /**
85
39
  * Format a structured error response for MCP clients.
86
40
  *
@@ -124,97 +78,88 @@ const formatZodError = (err) => {
124
78
  return `Invalid arguments:\n${issues.join('\n')}`;
125
79
  };
126
80
  /**
127
- * Handle a browser tool call: Zod validation, permission evaluation,
128
- * confirmation flow, execution, output sanitization, and audit logging.
81
+ * Run the 'ask' confirmation flow for a tool call.
82
+ * Sends a confirmation request to the extension, waits for the user's decision,
83
+ * and persists the permission change if alwaysAllow is selected.
84
+ *
85
+ * @returns 'allow' if the user approved, or a ToolCallResult error if denied/failed.
129
86
  */
130
- const handleBrowserToolCall = async (state, toolName, args, cachedBt, extra) => {
131
- if (!isBrowserToolEnabled(state, toolName)) {
87
+ const runAskFlow = async (state, pluginName, toolName, params, extra, callbacks) => {
88
+ // Send MCP progress notification to let the agent know we're waiting for approval
89
+ const progressToken = extra._meta?.progressToken;
90
+ if (progressToken !== undefined) {
91
+ extra
92
+ .sendNotification({
93
+ method: 'notifications/progress',
94
+ params: {
95
+ progressToken,
96
+ progress: 0,
97
+ total: 1,
98
+ message: 'Waiting for user approval in the OpenTabs side panel',
99
+ },
100
+ })
101
+ .catch(() => {
102
+ // Fire-and-forget
103
+ });
104
+ }
105
+ let decision;
106
+ try {
107
+ decision = await sendConfirmationRequest(state, toolName, pluginName, params);
108
+ }
109
+ catch {
132
110
  return {
133
- content: [{ type: 'text', text: `Tool ${toolName} is disabled via configuration` }],
111
+ content: [
112
+ { type: 'text', text: `Tool ${toolName} requires approval but the extension is not connected.` },
113
+ ],
134
114
  isError: true,
135
115
  };
136
116
  }
137
- // Validate args through the tool's Zod input schema
138
- const parseResult = cachedBt.tool.input.safeParse(args);
139
- if (!parseResult.success) {
117
+ if (decision.action === 'deny') {
140
118
  return {
141
- content: [{ type: 'text', text: formatZodError(parseResult.error) }],
119
+ content: [{ type: 'text', text: `Tool ${toolName} was denied by the user.` }],
142
120
  isError: true,
143
121
  };
144
122
  }
145
- // Permission evaluation: resolve domain, check session permissions,
146
- // evaluate against policy, and hold for confirmation if needed.
147
- const parsedArgs = parseResult.data;
148
- const domain = await resolveToolDomain(toolName, parsedArgs, state);
149
- // Check session permissions first (set by previous "Allow Always" actions)
150
- const permission = isSessionAllowed(state.sessionPermissions, toolName, domain)
151
- ? 'allow'
152
- : evaluatePermission(toolName, domain, state);
153
- if (permission === 'deny') {
123
+ // User approved persist to 'auto' if alwaysAllow was selected
124
+ if (decision.alwaysAllow) {
125
+ const existing = state.pluginPermissions[pluginName];
126
+ const toolOverrides = { ...(existing?.tools ?? {}), [toolName]: 'auto' };
127
+ const updatedConfig = { ...existing, tools: toolOverrides };
128
+ state.pluginPermissions[pluginName] = updatedConfig;
129
+ void savePluginPermissions(state, state.pluginPermissions);
130
+ callbacks.onToolConfigChanged();
131
+ }
132
+ return 'allow';
133
+ };
134
+ /**
135
+ * Handle a browser tool call: permission check, Zod validation,
136
+ * confirmation flow (for 'ask'), execution, output sanitization, and audit logging.
137
+ */
138
+ const handleBrowserToolCall = async (state, toolName, args, cachedBt, extra, callbacks) => {
139
+ const permission = getToolPermission(state, 'browser', toolName);
140
+ if (permission === 'off') {
154
141
  return {
155
142
  content: [
156
143
  {
157
144
  type: 'text',
158
- text: `PERMISSION_DENIED: Tool "${toolName}" is denied${domain ? ` for domain "${domain}"` : ''} by permission policy. Ask the user to update their OpenTabs permission configuration if this tool is needed.`,
145
+ text: `Tool "${toolName}" is currently disabled. Ask the user to enable it in the OpenTabs side panel.`,
159
146
  },
160
147
  ],
161
148
  isError: true,
162
149
  };
163
150
  }
164
151
  if (permission === 'ask') {
165
- // Send progress notification to MCP client (if progressToken is available)
166
- const progressToken = extra._meta?.progressToken;
167
- if (progressToken !== undefined) {
168
- extra
169
- .sendNotification({
170
- method: 'notifications/progress',
171
- params: {
172
- progressToken,
173
- progress: 0,
174
- total: 1,
175
- message: 'Waiting for human approval in the OpenTabs side panel...',
176
- },
177
- })
178
- .catch(() => {
179
- // Fire-and-forget
180
- });
181
- }
182
- try {
183
- const paramsPreview = truncateParamsPreview(parsedArgs);
184
- const tabIdArg = parsedArgs.tabId;
185
- const decision = await sendConfirmationRequest(state, toolName, domain, typeof tabIdArg === 'number' ? tabIdArg : undefined, paramsPreview);
186
- if (decision === 'deny') {
187
- return {
188
- content: [
189
- {
190
- type: 'text',
191
- text: `PERMISSION_DENIED: The user denied "${toolName}"${domain ? ` on "${domain}"` : ''}. Inform the user that the operation was blocked by their decision.`,
192
- },
193
- ],
194
- isError: true,
195
- };
196
- }
197
- // decision is 'allow_once' or 'allow_always' — proceed with dispatch
198
- // (allow_always session rules are handled by handleConfirmationResponse in extension-protocol)
199
- }
200
- catch (err) {
201
- const msg = toErrorMessage(err);
202
- if (msg === 'CONFIRMATION_TIMEOUT') {
203
- return {
204
- content: [
205
- {
206
- type: 'text',
207
- text: `CONFIRMATION_TIMEOUT: Human approval for "${toolName}"${domain ? ` on "${domain}"` : ''} timed out after 30 seconds. The user did not respond in the OpenTabs side panel. Ask the user to try again.`,
208
- },
209
- ],
210
- isError: true,
211
- };
212
- }
213
- return {
214
- content: [{ type: 'text', text: `Confirmation error: ${msg}` }],
215
- isError: true,
216
- };
217
- }
152
+ const askResult = await runAskFlow(state, 'browser', toolName, args, extra, callbacks);
153
+ if (askResult !== 'allow')
154
+ return askResult;
155
+ }
156
+ // Validate args through the tool's Zod input schema
157
+ const parseResult = cachedBt.tool.input.safeParse(args);
158
+ if (!parseResult.success) {
159
+ return {
160
+ content: [{ type: 'text', text: formatZodError(parseResult.error) }],
161
+ isError: true,
162
+ };
218
163
  }
219
164
  // Send invocation start notification to extension (for side panel activity indicator)
220
165
  sendInvocationStart(state, 'browser', toolName);
@@ -251,12 +196,41 @@ const handleBrowserToolCall = async (state, toolName, args, cachedBt, extra) =>
251
196
  }
252
197
  };
253
198
  /**
254
- * Handle a plugin tool call: Ajv validation, concurrency limiting,
199
+ * Handle a plugin tool call: permission check, Ajv validation, concurrency limiting,
255
200
  * dispatch to extension, error formatting, and audit logging.
256
201
  *
257
202
  * The caller must have already verified the tool is callable via checkToolCallable.
258
203
  */
259
- const handlePluginToolCall = async (state, toolName, args, pluginName, toolBaseName, lookup, extra) => {
204
+ const handlePluginToolCall = async (state, toolName, args, pluginName, toolBaseName, lookup, extra, callbacks) => {
205
+ // Permission check — applies to all plugin tools
206
+ const permission = getToolPermission(state, pluginName, toolBaseName);
207
+ if (permission === 'off') {
208
+ const plugin = state.registry.plugins.get(pluginName);
209
+ const pluginVersion = plugin?.version ?? 'unknown';
210
+ const permConfig = state.pluginPermissions[pluginName];
211
+ const reviewedVersion = permConfig?.reviewedVersion;
212
+ let statusLine;
213
+ if (reviewedVersion && reviewedVersion !== pluginVersion) {
214
+ statusLine = `Plugin "${pluginName}" has been updated from v${reviewedVersion} to v${pluginVersion} and needs re-review.`;
215
+ }
216
+ else {
217
+ statusLine = `Plugin "${pluginName}" (v${pluginVersion}) has not been reviewed yet.`;
218
+ }
219
+ return {
220
+ content: [
221
+ {
222
+ type: 'text',
223
+ text: `${statusLine}\n\nYou can help the user by:\n1. Ask the user if they would like you to review the plugin's code for security before enabling it.\n2. If they agree, call the plugin_inspect tool to retrieve the adapter source code.\n3. Review the code and share your findings with the user.\n4. If the user approves, call plugin_mark_reviewed to enable the plugin.\n\nAlternatively, the user can enable this plugin directly from the OpenTabs side panel.`,
224
+ },
225
+ ],
226
+ isError: true,
227
+ };
228
+ }
229
+ if (permission === 'ask') {
230
+ const askResult = await runAskFlow(state, pluginName, toolBaseName, args, extra, callbacks);
231
+ if (askResult !== 'allow')
232
+ return askResult;
233
+ }
260
234
  // Extract platform-injected tabId before validation — the plugin's own
261
235
  // schema doesn't know about tabId, so it must be stripped before Ajv runs
262
236
  // (otherwise plugins with additionalProperties: false would reject it).
@@ -418,5 +392,231 @@ const handlePluginToolCall = async (state, toolName, args, pluginName, toolBaseN
418
392
  });
419
393
  }
420
394
  };
421
- export { sanitizeOutput, formatStructuredError, formatZodError, truncateParamsPreview, handleBrowserToolCall, handlePluginToolCall, };
395
+ /** Review guidance text included in plugin_inspect responses */
396
+ const REVIEW_GUIDANCE = `Review this plugin adapter code and report your findings to the user. Be thorough and honest.
397
+
398
+ ## What to check
399
+
400
+ ### 1. Code readability
401
+ - Is the code minified, obfuscated, or bundled into unreadable single-line blocks?
402
+ - The official build tool (opentabs-plugin build) produces unminified, readable JavaScript with original variable names and formatting.
403
+ - Minified or obfuscated code is a significant red flag — it means the author bypassed the standard build process or is intentionally hiding the implementation.
404
+ - Look for intentionally misleading variable names or code structures designed to obscure intent.
405
+
406
+ ### 2. Data exfiltration
407
+ - Does the code make network requests to ANY external domains? Look for: fetch(), XMLHttpRequest, navigator.sendBeacon(), WebSocket connections, new Image() with src (pixel tracking), dynamic script/iframe injection that loads external URLs.
408
+ - Plugin adapters should ONLY interact with the page DOM of the target web application. Any outbound requests to third-party domains are suspicious.
409
+ - Check for encoded/obfuscated URLs (base64, string concatenation to build URLs, hex-encoded strings).
410
+ - Look for data being serialized and sent anywhere — JSON.stringify of DOM content, form data collection, or page scraping beyond what the plugin's stated tools require.
411
+
412
+ ### 3. Credential and sensitive data access
413
+ - Does the code access: document.cookie, localStorage, sessionStorage, indexedDB, Web Crypto API keys, password input fields, authentication tokens, session identifiers, or OAuth tokens?
414
+ - Does it read or modify HTTP-only cookie attributes?
415
+ - Does it access the Clipboard API (navigator.clipboard)?
416
+ - Does it intercept or modify form submissions?
417
+ - These APIs are not needed for normal plugin tool operation.
418
+
419
+ ### 4. Code execution vectors
420
+ - Does the code use: eval(), new Function(), setTimeout/setInterval with string arguments, dynamic script injection (createElement('script')), document.write(), innerHTML with unsanitized content, import() with dynamic URLs?
421
+ - These can be used to execute arbitrary code at runtime, potentially loading malicious payloads after the initial review.
422
+
423
+ ### 5. DOM manipulation beyond stated purpose
424
+ - Does the code's DOM interaction match the plugin's stated purpose?
425
+ - A Slack plugin should read/write Slack-specific DOM elements (message inputs, channel lists, etc.) — not access unrelated page content.
426
+ - Look for broad DOM queries (document.querySelectorAll('*'), document.body.innerHTML) that scrape entire page content rather than targeted element access.
427
+ - Does it attach global event listeners (keydown, input, submit, beforeunload) that could monitor user activity beyond the plugin's scope?
428
+
429
+ ### 6. Destructive actions
430
+ - Even if the code only interacts with the target web service, does it perform any potentially destructive actions?
431
+ - Look for: mass deletion patterns (delete all, remove all, clear all), bulk modification of user data, account settings changes, permission escalation, automated posting/messaging without clear user intent, subscription or billing modifications.
432
+ - Check if the tool implementations match their declared names and descriptions — a tool named 'list_messages' should not be deleting or modifying messages.
433
+
434
+ ### 7. Persistence and stealth
435
+ - Does the code set up any persistence mechanisms? Look for: Service Worker registration, browser extension message passing to unknown targets, periodic timers that run after the tool completes, mutation observers or intersection observers that trigger background behavior, web worker creation.
436
+ - Does the code attempt to hide its activity by suppressing console output, catching and silencing errors, or modifying browser DevTools behavior?
437
+
438
+ ### 8. Scope escalation
439
+ - Does the code attempt to access cross-origin resources or iframes?
440
+ - Does it modify the page's Content Security Policy?
441
+ - Does it interact with browser APIs beyond DOM manipulation (geolocation, camera, microphone, notifications, Bluetooth)?
442
+ - Does it attempt to interact with other browser tabs or windows?
443
+
444
+ ## How to report
445
+ Provide a clear, honest summary to the user:
446
+ 1. Overall assessment: safe / suspicious / dangerous
447
+ 2. What the code does (in plain language)
448
+ 3. Any concerns or red flags found
449
+ 4. Your recommendation: enable or keep disabled
450
+
451
+ Do not downplay concerns. If anything is suspicious, say so clearly.`;
452
+ /**
453
+ * Handle the plugin_inspect platform tool.
454
+ * Returns the plugin's adapter IIFE source code, metadata, and a review token.
455
+ */
456
+ const handlePluginInspect = async (state, args) => {
457
+ const pluginName = args.plugin;
458
+ if (typeof pluginName !== 'string' || pluginName.length === 0) {
459
+ return {
460
+ content: [{ type: 'text', text: 'Invalid arguments: "plugin" must be a non-empty string.' }],
461
+ isError: true,
462
+ };
463
+ }
464
+ const plugin = state.registry.plugins.get(pluginName);
465
+ if (!plugin) {
466
+ const available = [...state.registry.plugins.keys()].join(', ') || '(none)';
467
+ return {
468
+ content: [
469
+ {
470
+ type: 'text',
471
+ text: `Plugin "${pluginName}" not found. Available plugins: ${available}`,
472
+ },
473
+ ],
474
+ isError: true,
475
+ };
476
+ }
477
+ // The adapter IIFE is loaded into memory during plugin discovery
478
+ const adapterSource = plugin.iife;
479
+ if (!adapterSource || adapterSource.length === 0) {
480
+ return {
481
+ content: [
482
+ {
483
+ type: 'text',
484
+ text: `Plugin "${pluginName}" has no adapter IIFE file. The plugin may not have been built correctly.`,
485
+ },
486
+ ],
487
+ isError: true,
488
+ };
489
+ }
490
+ // Read author from package.json if sourcePath is available
491
+ let author;
492
+ if (plugin.sourcePath) {
493
+ try {
494
+ const pkgJson = JSON.parse(await readFile(`${plugin.sourcePath}/package.json`, 'utf-8'));
495
+ if (typeof pkgJson.author === 'string') {
496
+ author = pkgJson.author;
497
+ }
498
+ else if (typeof pkgJson.author === 'object' && pkgJson.author !== null) {
499
+ const authorObj = pkgJson.author;
500
+ author = typeof authorObj.name === 'string' ? authorObj.name : undefined;
501
+ }
502
+ }
503
+ catch {
504
+ // package.json read failure is non-fatal — author will be undefined
505
+ }
506
+ }
507
+ const lineCount = adapterSource.split('\n').length;
508
+ const byteSize = Buffer.byteLength(adapterSource, 'utf-8');
509
+ const reviewToken = generateReviewToken(state, pluginName, plugin.version);
510
+ const response = {
511
+ plugin: pluginName,
512
+ version: plugin.version,
513
+ ...(author ? { author } : {}),
514
+ ...(plugin.npmPackageName ? { npmPackage: plugin.npmPackageName } : {}),
515
+ lineCount,
516
+ byteSize,
517
+ reviewToken,
518
+ reviewGuidance: REVIEW_GUIDANCE,
519
+ adapterSource,
520
+ };
521
+ return {
522
+ content: [{ type: 'text', text: JSON.stringify(response, null, 2) }],
523
+ };
524
+ };
525
+ /** Valid permission values for plugin_mark_reviewed (excludes 'off') */
526
+ const VALID_REVIEW_PERMISSIONS = new Set(['ask', 'auto']);
527
+ /**
528
+ * Handle the plugin_mark_reviewed platform tool.
529
+ * Validates the review token, consumes it, updates plugin permission and reviewedVersion,
530
+ * persists to config, and notifies both MCP clients and the extension.
531
+ */
532
+ const handlePluginMarkReviewed = async (state, args, callbacks) => {
533
+ const pluginName = args.plugin;
534
+ const version = args.version;
535
+ const reviewToken = args.reviewToken;
536
+ const permission = args.permission;
537
+ if (typeof pluginName !== 'string' || pluginName.length === 0) {
538
+ return {
539
+ content: [{ type: 'text', text: 'Invalid arguments: "plugin" must be a non-empty string.' }],
540
+ isError: true,
541
+ };
542
+ }
543
+ if (typeof version !== 'string' || version.length === 0) {
544
+ return {
545
+ content: [{ type: 'text', text: 'Invalid arguments: "version" must be a non-empty string.' }],
546
+ isError: true,
547
+ };
548
+ }
549
+ if (typeof reviewToken !== 'string' || reviewToken.length === 0) {
550
+ return {
551
+ content: [{ type: 'text', text: 'Invalid arguments: "reviewToken" must be a non-empty string.' }],
552
+ isError: true,
553
+ };
554
+ }
555
+ if (typeof permission !== 'string' || !VALID_REVIEW_PERMISSIONS.has(permission)) {
556
+ return {
557
+ content: [
558
+ {
559
+ type: 'text',
560
+ text: 'Invalid arguments: "permission" must be "ask" or "auto". Setting permission to "off" after review is not supported.',
561
+ },
562
+ ],
563
+ isError: true,
564
+ };
565
+ }
566
+ // Verify the plugin exists
567
+ const plugin = state.registry.plugins.get(pluginName);
568
+ if (!plugin) {
569
+ const available = [...state.registry.plugins.keys()].join(', ') || '(none)';
570
+ return {
571
+ content: [
572
+ {
573
+ type: 'text',
574
+ text: `Plugin "${pluginName}" not found. Available plugins: ${available}`,
575
+ },
576
+ ],
577
+ isError: true,
578
+ };
579
+ }
580
+ // Validate the review token
581
+ if (!validateReviewToken(state, reviewToken, pluginName, version)) {
582
+ return {
583
+ content: [
584
+ {
585
+ type: 'text',
586
+ text: 'Invalid or expired review token. You must call plugin_inspect first to get a valid review token for this plugin and version.',
587
+ },
588
+ ],
589
+ isError: true,
590
+ };
591
+ }
592
+ // Consume the token so it cannot be reused
593
+ consumeReviewToken(state, reviewToken);
594
+ // Update plugin permission and reviewedVersion
595
+ const existing = state.pluginPermissions[pluginName] ?? {};
596
+ const updatedConfig = {
597
+ ...existing,
598
+ permission: permission,
599
+ reviewedVersion: version,
600
+ };
601
+ state.pluginPermissions[pluginName] = updatedConfig;
602
+ // Persist to config.json
603
+ void savePluginPermissions(state, state.pluginPermissions);
604
+ // Notify MCP clients that tool list changed (description prefixes update)
605
+ callbacks.onToolConfigChanged();
606
+ // Notify the extension so the side panel refreshes
607
+ sendToExtension(state, {
608
+ jsonrpc: '2.0',
609
+ method: 'plugins.changed',
610
+ params: { ...buildConfigStatePayload(state) },
611
+ });
612
+ return {
613
+ content: [
614
+ {
615
+ type: 'text',
616
+ text: `Plugin "${pluginName}" v${version} has been reviewed and permission set to "${permission}".\n\nNote: This tool should only be called after the user has explicitly confirmed they want to enable the plugin following your code review.`,
617
+ },
618
+ ],
619
+ };
620
+ };
621
+ export { sanitizeOutput, formatStructuredError, formatZodError, handleBrowserToolCall, handlePluginToolCall, handlePluginInspect, handlePluginMarkReviewed, REVIEW_GUIDANCE, };
422
622
  //# sourceMappingURL=mcp-tool-dispatch.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-tool-dispatch.js","sourceRoot":"","sources":["../src/mcp-tool-dispatch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp-tool-dispatch.js","sourceRoot":"","sources":["../src/mcp-tool-dispatch.ts"],"names":[],"mappings":"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"}
@@ -12,7 +12,6 @@ interface PluginSearchResult {
12
12
  description: string;
13
13
  version: string;
14
14
  author: string;
15
- isOfficial: boolean;
16
15
  }
17
16
  interface PluginInstallResult {
18
17
  ok: true;
@@ -1 +1 @@
1
- {"version":3,"file":"plugin-management.d.ts","sourceRoot":"","sources":["../src/plugin-management.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plugin-management.d.ts","sourceRoot":"","sources":["../src/plugin-management.ts"],"names":[],"mappings":"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"}
@@ -9,7 +9,7 @@ import { spawn } from 'node:child_process';
9
9
  import { mkdir, readFile } from 'node:fs/promises';
10
10
  import { homedir } from 'node:os';
11
11
  import { basename, join, resolve } from 'node:path';
12
- import { atomicWrite, getConfigDir, getConfigPath, isValidPluginPackageName, normalizePluginName, OFFICIAL_SCOPE, platformExec, resolvePluginPackageCandidates, } from '@opentabs-dev/shared';
12
+ import { atomicWrite, getConfigDir, getConfigPath, isValidPluginPackageName, normalizePluginName, platformExec, resolvePluginPackageCandidates, } from '@opentabs-dev/shared';
13
13
  import { pluginNameFromPackage } from './loader.js';
14
14
  import { log } from './logger.js';
15
15
  // ---------------------------------------------------------------------------
@@ -128,7 +128,6 @@ const searchNpmPlugins = async (query) => {
128
128
  description: entry.description ?? '',
129
129
  version: entry.version,
130
130
  author: entry.publisher?.username ?? entry.author?.name ?? 'unknown',
131
- isOfficial: entry.name.startsWith(`${OFFICIAL_SCOPE}/`),
132
131
  }));
133
132
  }
134
133
  catch {