@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.
- package/dist/browser-tools/analyze-site.d.ts.map +1 -1
- package/dist/browser-tools/analyze-site.js +2 -0
- package/dist/browser-tools/analyze-site.js.map +1 -1
- package/dist/browser-tools/clear-console-logs.d.ts.map +1 -1
- package/dist/browser-tools/clear-console-logs.js +2 -0
- package/dist/browser-tools/clear-console-logs.js.map +1 -1
- package/dist/browser-tools/click-element.d.ts.map +1 -1
- package/dist/browser-tools/click-element.js +2 -0
- package/dist/browser-tools/click-element.js.map +1 -1
- package/dist/browser-tools/close-tab.d.ts.map +1 -1
- package/dist/browser-tools/close-tab.js +2 -0
- package/dist/browser-tools/close-tab.js.map +1 -1
- package/dist/browser-tools/definition.d.ts +4 -0
- package/dist/browser-tools/definition.d.ts.map +1 -1
- package/dist/browser-tools/definition.js.map +1 -1
- package/dist/browser-tools/delete-cookies.d.ts.map +1 -1
- package/dist/browser-tools/delete-cookies.js +2 -0
- package/dist/browser-tools/delete-cookies.js.map +1 -1
- package/dist/browser-tools/disable-network-capture.d.ts.map +1 -1
- package/dist/browser-tools/disable-network-capture.js +2 -0
- package/dist/browser-tools/disable-network-capture.js.map +1 -1
- package/dist/browser-tools/enable-network-capture.d.ts.map +1 -1
- package/dist/browser-tools/enable-network-capture.js +2 -0
- package/dist/browser-tools/enable-network-capture.js.map +1 -1
- package/dist/browser-tools/execute-script.d.ts.map +1 -1
- package/dist/browser-tools/execute-script.js +2 -0
- package/dist/browser-tools/execute-script.js.map +1 -1
- package/dist/browser-tools/export-har.d.ts.map +1 -1
- package/dist/browser-tools/export-har.js +2 -0
- package/dist/browser-tools/export-har.js.map +1 -1
- package/dist/browser-tools/extension-check-adapter.d.ts.map +1 -1
- package/dist/browser-tools/extension-check-adapter.js +2 -0
- package/dist/browser-tools/extension-check-adapter.js.map +1 -1
- package/dist/browser-tools/extension-force-reconnect.d.ts.map +1 -1
- package/dist/browser-tools/extension-force-reconnect.js +2 -0
- package/dist/browser-tools/extension-force-reconnect.js.map +1 -1
- package/dist/browser-tools/extension-get-logs.d.ts +1 -1
- package/dist/browser-tools/extension-get-logs.d.ts.map +1 -1
- package/dist/browser-tools/extension-get-logs.js +2 -0
- package/dist/browser-tools/extension-get-logs.js.map +1 -1
- package/dist/browser-tools/extension-get-side-panel.d.ts.map +1 -1
- package/dist/browser-tools/extension-get-side-panel.js +2 -0
- package/dist/browser-tools/extension-get-side-panel.js.map +1 -1
- package/dist/browser-tools/extension-get-state.d.ts.map +1 -1
- package/dist/browser-tools/extension-get-state.js +2 -0
- package/dist/browser-tools/extension-get-state.js.map +1 -1
- package/dist/browser-tools/focus-tab.d.ts.map +1 -1
- package/dist/browser-tools/focus-tab.js +2 -0
- package/dist/browser-tools/focus-tab.js.map +1 -1
- package/dist/browser-tools/get-console-logs.d.ts +1 -1
- package/dist/browser-tools/get-console-logs.d.ts.map +1 -1
- package/dist/browser-tools/get-console-logs.js +2 -0
- package/dist/browser-tools/get-console-logs.js.map +1 -1
- package/dist/browser-tools/get-cookies.d.ts.map +1 -1
- package/dist/browser-tools/get-cookies.js +2 -0
- package/dist/browser-tools/get-cookies.js.map +1 -1
- package/dist/browser-tools/get-network-requests.d.ts.map +1 -1
- package/dist/browser-tools/get-network-requests.js +2 -0
- package/dist/browser-tools/get-network-requests.js.map +1 -1
- package/dist/browser-tools/get-page-html.d.ts.map +1 -1
- package/dist/browser-tools/get-page-html.js +2 -0
- package/dist/browser-tools/get-page-html.js.map +1 -1
- package/dist/browser-tools/get-resource-content.d.ts.map +1 -1
- package/dist/browser-tools/get-resource-content.js +2 -0
- package/dist/browser-tools/get-resource-content.js.map +1 -1
- package/dist/browser-tools/get-storage.d.ts.map +1 -1
- package/dist/browser-tools/get-storage.js +2 -0
- package/dist/browser-tools/get-storage.js.map +1 -1
- package/dist/browser-tools/get-tab-content.d.ts.map +1 -1
- package/dist/browser-tools/get-tab-content.js +2 -0
- package/dist/browser-tools/get-tab-content.js.map +1 -1
- package/dist/browser-tools/get-tab-info.d.ts.map +1 -1
- package/dist/browser-tools/get-tab-info.js +2 -0
- package/dist/browser-tools/get-tab-info.js.map +1 -1
- package/dist/browser-tools/get-websocket-frames.d.ts.map +1 -1
- package/dist/browser-tools/get-websocket-frames.js +2 -0
- package/dist/browser-tools/get-websocket-frames.js.map +1 -1
- package/dist/browser-tools/handle-dialog.d.ts.map +1 -1
- package/dist/browser-tools/handle-dialog.js +2 -0
- package/dist/browser-tools/handle-dialog.js.map +1 -1
- package/dist/browser-tools/hover-element.d.ts.map +1 -1
- package/dist/browser-tools/hover-element.js +2 -0
- package/dist/browser-tools/hover-element.js.map +1 -1
- package/dist/browser-tools/index.d.ts.map +1 -1
- package/dist/browser-tools/index.js +5 -0
- package/dist/browser-tools/index.js.map +1 -1
- package/dist/browser-tools/list-resources.d.ts.map +1 -1
- package/dist/browser-tools/list-resources.js +2 -0
- package/dist/browser-tools/list-resources.js.map +1 -1
- package/dist/browser-tools/list-tabs.d.ts.map +1 -1
- package/dist/browser-tools/list-tabs.js +2 -0
- package/dist/browser-tools/list-tabs.js.map +1 -1
- package/dist/browser-tools/navigate-tab.d.ts.map +1 -1
- package/dist/browser-tools/navigate-tab.js +2 -0
- package/dist/browser-tools/navigate-tab.js.map +1 -1
- package/dist/browser-tools/open-tab.d.ts.map +1 -1
- package/dist/browser-tools/open-tab.js +2 -0
- package/dist/browser-tools/open-tab.js.map +1 -1
- package/dist/browser-tools/plugin-list-tabs.d.ts.map +1 -1
- package/dist/browser-tools/plugin-list-tabs.js +2 -0
- package/dist/browser-tools/plugin-list-tabs.js.map +1 -1
- package/dist/browser-tools/press-key.d.ts.map +1 -1
- package/dist/browser-tools/press-key.js +2 -0
- package/dist/browser-tools/press-key.js.map +1 -1
- package/dist/browser-tools/query-elements.d.ts.map +1 -1
- package/dist/browser-tools/query-elements.js +2 -0
- package/dist/browser-tools/query-elements.js.map +1 -1
- package/dist/browser-tools/reload-extension.d.ts.map +1 -1
- package/dist/browser-tools/reload-extension.js +2 -0
- package/dist/browser-tools/reload-extension.js.map +1 -1
- package/dist/browser-tools/screenshot-tab.d.ts.map +1 -1
- package/dist/browser-tools/screenshot-tab.js +2 -0
- package/dist/browser-tools/screenshot-tab.js.map +1 -1
- package/dist/browser-tools/scroll.d.ts.map +1 -1
- package/dist/browser-tools/scroll.js +2 -0
- package/dist/browser-tools/scroll.js.map +1 -1
- package/dist/browser-tools/select-option.d.ts.map +1 -1
- package/dist/browser-tools/select-option.js +2 -0
- package/dist/browser-tools/select-option.js.map +1 -1
- package/dist/browser-tools/set-cookie.d.ts.map +1 -1
- package/dist/browser-tools/set-cookie.js +2 -0
- package/dist/browser-tools/set-cookie.js.map +1 -1
- package/dist/browser-tools/type-text.d.ts.map +1 -1
- package/dist/browser-tools/type-text.js +2 -0
- package/dist/browser-tools/type-text.js.map +1 -1
- package/dist/browser-tools/wait-for-element.d.ts.map +1 -1
- package/dist/browser-tools/wait-for-element.js +2 -0
- package/dist/browser-tools/wait-for-element.js.map +1 -1
- package/dist/config.d.ts +16 -43
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +48 -157
- package/dist/config.js.map +1 -1
- package/dist/discovery.d.ts +1 -4
- package/dist/discovery.d.ts.map +1 -1
- package/dist/discovery.js +5 -17
- package/dist/discovery.js.map +1 -1
- package/dist/extension-handlers.d.ts +22 -14
- package/dist/extension-handlers.d.ts.map +1 -1
- package/dist/extension-handlers.js +114 -188
- package/dist/extension-handlers.js.map +1 -1
- package/dist/extension-protocol.d.ts +4 -9
- package/dist/extension-protocol.d.ts.map +1 -1
- package/dist/extension-protocol.js +16 -45
- package/dist/extension-protocol.js.map +1 -1
- package/dist/file-watcher.js +2 -2
- package/dist/file-watcher.js.map +1 -1
- package/dist/http-routes.d.ts.map +1 -1
- package/dist/http-routes.js +5 -9
- package/dist/http-routes.js.map +1 -1
- package/dist/loader.d.ts +2 -4
- package/dist/loader.d.ts.map +1 -1
- package/dist/loader.js +6 -5
- package/dist/loader.js.map +1 -1
- package/dist/mcp-setup.d.ts +11 -9
- package/dist/mcp-setup.d.ts.map +1 -1
- package/dist/mcp-setup.js +104 -27
- package/dist/mcp-setup.js.map +1 -1
- package/dist/mcp-tool-dispatch.d.ts +24 -12
- package/dist/mcp-tool-dispatch.d.ts.map +1 -1
- package/dist/mcp-tool-dispatch.js +325 -125
- package/dist/mcp-tool-dispatch.js.map +1 -1
- package/dist/plugin-management.d.ts +0 -1
- package/dist/plugin-management.d.ts.map +1 -1
- package/dist/plugin-management.js +1 -2
- package/dist/plugin-management.js.map +1 -1
- package/dist/registry.d.ts +2 -4
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +1 -12
- package/dist/registry.js.map +1 -1
- package/dist/reload.d.ts.map +1 -1
- package/dist/reload.js +73 -37
- package/dist/reload.js.map +1 -1
- package/dist/skip-permissions.d.ts +5 -12
- package/dist/skip-permissions.d.ts.map +1 -1
- package/dist/skip-permissions.js +7 -17
- package/dist/skip-permissions.js.map +1 -1
- package/dist/state.d.ts +42 -45
- package/dist/state.d.ts.map +1 -1
- package/dist/state.js +57 -43
- package/dist/state.js.map +1 -1
- package/dist/version-check.d.ts.map +1 -1
- package/dist/version-check.js +1 -1
- package/dist/version-check.js.map +1 -1
- 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,
|
|
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
|
-
*
|
|
128
|
-
* confirmation
|
|
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
|
|
131
|
-
|
|
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: [
|
|
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
|
-
|
|
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:
|
|
119
|
+
content: [{ type: 'text', text: `Tool ${toolName} was denied by the user.` }],
|
|
142
120
|
isError: true,
|
|
143
121
|
};
|
|
144
122
|
}
|
|
145
|
-
//
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
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: `
|
|
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
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
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
|
-
|
|
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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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-management.d.ts","sourceRoot":"","sources":["../src/plugin-management.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,OAAO,EAIL,wBAAwB,EACxB,mBAAmB,
|
|
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,
|
|
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 {
|