@weavetab/mcp 2.5.0 → 2.5.1
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/AGENTS.md +49 -49
- package/ARCHITECTURE.md +590 -590
- package/LICENSE +216 -216
- package/README.md +269 -269
- package/SECURITY.md +207 -207
- package/TROUBLESHOOTING.md +373 -365
- package/dist/anticaptcha/detector.js +395 -395
- package/dist/anticaptcha/solver.js +130 -130
- package/dist/cdp/bridge.js +73 -73
- package/dist/cdp/connector.js +46 -22
- package/dist/cdp/extension.js +34 -34
- package/dist/cdp/helpers.js +174 -174
- package/dist/cdp/pruner.js +195 -195
- package/dist/cdp/ref_cache.js +66 -66
- package/dist/cdp/security.js +10 -10
- package/dist/cdp/verify.js +57 -57
- package/dist/cdp/walker.js +563 -525
- package/dist/cli/plugin.js +26 -3
- package/dist/config/loader.d.ts +0 -3
- package/dist/config/loader.js +0 -9
- package/dist/index.js +0 -4
- package/dist/intelligence/intent.js +81 -81
- package/dist/intelligence/sessionMemory.js +2 -2
- package/dist/overlay/ghost.js +22 -22
- package/dist/overlay/injector.js +89 -89
- package/dist/plugin/extension_bridge.js +54 -54
- package/dist/plugin/interface.d.ts +7 -0
- package/dist/plugin/loader.js +3 -4
- package/dist/plugin/schema.d.ts +11 -0
- package/dist/plugin/schema.js +59 -0
- package/dist/security/guard.js +18 -18
- package/dist/sensors/actionability.js +167 -167
- package/dist/sensors/guard.js +29 -29
- package/dist/sensors/network.js +15 -17
- package/dist/server.d.ts +1 -1
- package/dist/server.js +173 -144
- package/dist/state/delta.js +6 -7
- package/dist/tools/automation.js +85 -85
- package/dist/tools/canvas.js +48 -25
- package/dist/tools/checkpoint.js +94 -35
- package/dist/tools/click.js +52 -41
- package/dist/tools/clipboard.js +80 -74
- package/dist/tools/design_extract.js +441 -441
- package/dist/tools/dialog.js +13 -13
- package/dist/tools/emulation.d.ts +2 -0
- package/dist/tools/emulation.js +7 -0
- package/dist/tools/fill.js +344 -347
- package/dist/tools/find.js +78 -52
- package/dist/tools/highlight.js +67 -67
- package/dist/tools/inspect.js +54 -25
- package/dist/tools/key.js +42 -35
- package/dist/tools/navigate.d.ts +1 -1
- package/dist/tools/navigate.js +35 -35
- package/dist/tools/office/parse.js +62 -18
- package/dist/tools/pdf.d.ts +9 -0
- package/dist/tools/pdf.js +7 -4
- package/dist/tools/performance.d.ts +11 -4
- package/dist/tools/performance.js +94 -42
- package/dist/tools/performance_test.d.ts +2 -2
- package/dist/tools/performance_test.js +69 -69
- package/dist/tools/pointer.js +116 -116
- package/dist/tools/read.js +99 -67
- package/dist/tools/recording.js +9 -0
- package/dist/tools/scrape.js +146 -146
- package/dist/tools/screenshot.d.ts +2 -0
- package/dist/tools/screenshot.js +46 -4
- package/dist/tools/scroll.d.ts +3 -1
- package/dist/tools/scroll.js +13 -15
- package/dist/tools/select.d.ts +3 -0
- package/dist/tools/select.js +131 -124
- package/dist/tools/snapshot.js +8 -6
- package/dist/tools/storage.d.ts +5 -1
- package/dist/tools/storage.js +16 -0
- package/dist/tools/tabs.d.ts +7 -5
- package/dist/tools/tabs.js +79 -26
- package/dist/tools/thought.js +8 -8
- package/dist/tools/type.js +274 -274
- package/dist/tools/type_secret.js +23 -23
- package/dist/tools/upload.js +3 -3
- package/dist/tools/video_compiler.js +9 -0
- package/dist/tools/wait.js +35 -35
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/docs/DOCUMENTATION.md +583 -585
- package/docs/PLUGINS.md +139 -121
- package/docs/TOOLS.md +3 -4
- package/docs/architecture/blind-injection.md +83 -83
- package/docs/architecture/overview.md +49 -49
- package/docs/architecture/security.md +36 -36
- package/docs/architecture/transport.md +37 -37
- package/docs/cli/cli-commands.md +50 -50
- package/docs/cli/cli-flags.md +28 -28
- package/docs/cli/cli-scripting.md +35 -35
- package/docs/configuration/config-locations.md +23 -23
- package/docs/configuration/configuration.md +39 -27
- package/docs/configuration/env-variables.md +19 -19
- package/docs/configuration/folders.md +62 -55
- package/docs/desktop-automation/electron-apps.md +225 -214
- package/docs/get-started/installation.md +1 -1
- package/docs/get-started/introduction.md +60 -60
- package/docs/get-started/quickstart.md +2 -2
- package/docs/get-started/setup-wizard.md +27 -27
- package/docs/intelligence/site-profiles.md +151 -151
- package/docs/tools/tools.md +582 -631
- package/docs/troubleshooting/trouble-browser.md +27 -27
- package/docs/troubleshooting/trouble-loop.md +31 -31
- package/ext-dist/background.js +415 -415
- package/ext-dist/content.js +2527 -2527
- package/ext-dist/dashboard.html +583 -583
- package/ext-dist/hud/hud.js +3 -3
- package/ext-dist/hud/index.html +20 -20
- package/ext-dist/manifest.json +73 -73
- package/ext-dist/styles.css +223 -223
- package/mcp.json +796 -805
- package/package.json +118 -118
- package/server.json +23 -23
- package/dist/cdp/walker.test.d.ts +0 -2
- package/dist/cdp/walker.test.js +0 -172
- package/dist/intelligence/sessionMemory.test.d.ts +0 -2
- package/dist/intelligence/sessionMemory.test.js +0 -62
- package/dist/intelligence/trail.test.d.ts +0 -2
- package/dist/intelligence/trail.test.js +0 -110
- package/dist/state/cache.test.d.ts +0 -2
- package/dist/state/cache.test.js +0 -76
- package/dist/state/delta.test.d.ts +0 -2
- package/dist/state/delta.test.js +0 -279
- package/dist/state/groups.d.ts +0 -15
- package/dist/state/groups.js +0 -80
- package/dist/tools/accessibility.d.ts +0 -14
- package/dist/tools/accessibility.js +0 -32
- package/dist/tools/ask.d.ts +0 -14
- package/dist/tools/ask.js +0 -49
- package/dist/tools/click_and_wait.d.ts +0 -33
- package/dist/tools/click_and_wait.js +0 -149
- package/dist/tools/drag.d.ts +0 -15
- package/dist/tools/drag.js +0 -29
- package/dist/tools/geo.d.ts +0 -19
- package/dist/tools/geo.js +0 -29
- package/dist/tools/github/analyze.d.ts +0 -4
- package/dist/tools/github/analyze.js +0 -113
- package/dist/tools/github/cache.d.ts +0 -21
- package/dist/tools/github/cache.js +0 -28
- package/dist/tools/github/index.d.ts +0 -19
- package/dist/tools/github/index.js +0 -40
- package/dist/tools/github/issues.d.ts +0 -9
- package/dist/tools/github/issues.js +0 -88
- package/dist/tools/github/pr.d.ts +0 -5
- package/dist/tools/github/pr.js +0 -88
- package/dist/tools/github/rateLimiter.d.ts +0 -4
- package/dist/tools/github/rateLimiter.js +0 -46
- package/dist/tools/github/read.d.ts +0 -34
- package/dist/tools/github/read.js +0 -74
- package/dist/tools/github/repoContext.d.ts +0 -20
- package/dist/tools/github/repoContext.js +0 -129
- package/dist/tools/hover.d.ts +0 -19
- package/dist/tools/hover.js +0 -57
- package/dist/tools/integration.test.d.ts +0 -2
- package/dist/tools/integration.test.js +0 -96
- package/dist/tools/macro_compiler.d.ts +0 -7
- package/dist/tools/macro_compiler.js +0 -82
- package/dist/tools/mouse.d.ts +0 -21
- package/dist/tools/mouse.js +0 -62
- package/dist/tools/response.d.ts +0 -129
- package/dist/tools/response.js +0 -5
- package/dist/tools/wait_for.d.ts +0 -23
- package/dist/tools/wait_for.js +0 -30
- package/dist/tools/windows.d.ts +0 -22
- package/dist/tools/windows.js +0 -57
package/dist/tools/clipboard.js
CHANGED
|
@@ -46,18 +46,24 @@ export async function browserClipboard(session, options, _config) {
|
|
|
46
46
|
throw new Error("browser_clipboard: image write requires a secure context (https or chrome://). Current page is non-secure (file:// or http://).");
|
|
47
47
|
}
|
|
48
48
|
const mime = mimeType || (dataUrl.includes(';') ? dataUrl.split(';')[0].split(':')[1] : "image/png");
|
|
49
|
+
// When both text and an image are supplied, put them in a single ClipboardItem
|
|
50
|
+
// so the plain-text flavor is not silently dropped (Windows keeps both).
|
|
51
|
+
const textFlavor = hasText
|
|
52
|
+
? `itemData['text/plain'] = new Blob([${JSON.stringify(text)}], { type: 'text/plain' });`
|
|
53
|
+
: "";
|
|
49
54
|
const res = await session.Runtime.evaluate({
|
|
50
|
-
expression: `(async function() {
|
|
51
|
-
try {
|
|
52
|
-
const resp = await fetch(${JSON.stringify(dataUrl)});
|
|
53
|
-
const blob = await resp.blob();
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
55
|
+
expression: `(async function() {
|
|
56
|
+
try {
|
|
57
|
+
const resp = await fetch(${JSON.stringify(dataUrl)});
|
|
58
|
+
const blob = await resp.blob();
|
|
59
|
+
const itemData = {};
|
|
60
|
+
itemData[${JSON.stringify(mime)}] = blob;
|
|
61
|
+
${textFlavor}
|
|
62
|
+
await navigator.clipboard.write([ new ClipboardItem(itemData) ]);
|
|
63
|
+
return "ok";
|
|
64
|
+
} catch(e) {
|
|
65
|
+
return "ERR:" + e.message;
|
|
66
|
+
}
|
|
61
67
|
})()`,
|
|
62
68
|
awaitPromise: true,
|
|
63
69
|
returnByValue: true
|
|
@@ -77,13 +83,13 @@ export async function browserClipboard(session, options, _config) {
|
|
|
77
83
|
}
|
|
78
84
|
catch { /* fallback to browser API */ }
|
|
79
85
|
const res = await session.Runtime.evaluate({
|
|
80
|
-
expression: `(async function() {
|
|
81
|
-
try {
|
|
82
|
-
${secureCtx ? `await navigator.clipboard.writeText(${JSON.stringify(text)});` : `throw new Error('non-secure');`}
|
|
83
|
-
return true;
|
|
84
|
-
} catch(e) {
|
|
85
|
-
return false;
|
|
86
|
-
}
|
|
86
|
+
expression: `(async function() {
|
|
87
|
+
try {
|
|
88
|
+
${secureCtx ? `await navigator.clipboard.writeText(${JSON.stringify(text)});` : `throw new Error('non-secure');`}
|
|
89
|
+
return true;
|
|
90
|
+
} catch(e) {
|
|
91
|
+
return false;
|
|
92
|
+
}
|
|
87
93
|
})()`,
|
|
88
94
|
awaitPromise: true,
|
|
89
95
|
returnByValue: true
|
|
@@ -116,15 +122,15 @@ export async function browserClipboard(session, options, _config) {
|
|
|
116
122
|
}
|
|
117
123
|
async function readViaCdpPaste() {
|
|
118
124
|
const { result } = await session.Runtime.evaluate({
|
|
119
|
-
expression: `(function() {
|
|
120
|
-
try {
|
|
121
|
-
var ta = document.createElement('textarea');
|
|
122
|
-
ta.style.cssText = 'position:fixed;top:-999px;left:-999px;opacity:0;width:1px;height:1px';
|
|
123
|
-
document.body.appendChild(ta);
|
|
124
|
-
ta.focus();
|
|
125
|
-
ta.select();
|
|
126
|
-
return true;
|
|
127
|
-
} catch(e) { return false; }
|
|
125
|
+
expression: `(function() {
|
|
126
|
+
try {
|
|
127
|
+
var ta = document.createElement('textarea');
|
|
128
|
+
ta.style.cssText = 'position:fixed;top:-999px;left:-999px;opacity:0;width:1px;height:1px';
|
|
129
|
+
document.body.appendChild(ta);
|
|
130
|
+
ta.focus();
|
|
131
|
+
ta.select();
|
|
132
|
+
return true;
|
|
133
|
+
} catch(e) { return false; }
|
|
128
134
|
})()`,
|
|
129
135
|
returnByValue: true
|
|
130
136
|
});
|
|
@@ -134,12 +140,12 @@ export async function browserClipboard(session, options, _config) {
|
|
|
134
140
|
await session.Input.dispatchKeyEvent({ type: "keyUp", key: "v", windowsVirtualKeyCode: 86, nativeVirtualKeyCode: 86, modifiers: 2 });
|
|
135
141
|
await new Promise(r => setTimeout(r, 100));
|
|
136
142
|
const { result: valRes } = await session.Runtime.evaluate({
|
|
137
|
-
expression: `(function() {
|
|
138
|
-
var ta = document.querySelector('textarea[style*="top:-999px"]');
|
|
139
|
-
if (!ta) return null;
|
|
140
|
-
var v = ta.value;
|
|
141
|
-
ta.remove();
|
|
142
|
-
return v || null;
|
|
143
|
+
expression: `(function() {
|
|
144
|
+
var ta = document.querySelector('textarea[style*="top:-999px"]');
|
|
145
|
+
if (!ta) return null;
|
|
146
|
+
var v = ta.value;
|
|
147
|
+
ta.remove();
|
|
148
|
+
return v || null;
|
|
143
149
|
})()`,
|
|
144
150
|
returnByValue: true
|
|
145
151
|
});
|
|
@@ -170,36 +176,36 @@ export async function browserClipboard(session, options, _config) {
|
|
|
170
176
|
if (!secureCtx)
|
|
171
177
|
return null;
|
|
172
178
|
const res = await session.Runtime.evaluate({
|
|
173
|
-
expression: `(async function() {
|
|
174
|
-
try {
|
|
175
|
-
if (typeof ClipboardItem !== 'undefined') {
|
|
176
|
-
var items = await navigator.clipboard.read();
|
|
177
|
-
var textVal = null, dataUrlVal = null;
|
|
178
|
-
for (var i = 0; i < items.length; i++) {
|
|
179
|
-
var item = items[i];
|
|
180
|
-
var types = item.types;
|
|
181
|
-
for (var j = 0; j < types.length; j++) {
|
|
182
|
-
var type = types[j];
|
|
183
|
-
var blob = await item.getType(type);
|
|
184
|
-
if (type.indexOf('text/') === 0) {
|
|
185
|
-
textVal = await blob.text();
|
|
186
|
-
} else if (type.indexOf('image/') === 0) {
|
|
187
|
-
dataUrlVal = await new Promise(function(rsv) {
|
|
188
|
-
var r = new FileReader();
|
|
189
|
-
r.onload = function() { rsv(r.result); };
|
|
190
|
-
r.readAsDataURL(blob);
|
|
191
|
-
});
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
if (textVal || dataUrlVal) return JSON.stringify({ text: textVal, dataUrl: dataUrlVal });
|
|
196
|
-
}
|
|
197
|
-
var t = await navigator.clipboard.readText();
|
|
198
|
-
if (t) return JSON.stringify({ text: t });
|
|
199
|
-
return null;
|
|
200
|
-
} catch(e) {
|
|
201
|
-
return 'ERR:' + e.message;
|
|
202
|
-
}
|
|
179
|
+
expression: `(async function() {
|
|
180
|
+
try {
|
|
181
|
+
if (typeof ClipboardItem !== 'undefined') {
|
|
182
|
+
var items = await navigator.clipboard.read();
|
|
183
|
+
var textVal = null, dataUrlVal = null;
|
|
184
|
+
for (var i = 0; i < items.length; i++) {
|
|
185
|
+
var item = items[i];
|
|
186
|
+
var types = item.types;
|
|
187
|
+
for (var j = 0; j < types.length; j++) {
|
|
188
|
+
var type = types[j];
|
|
189
|
+
var blob = await item.getType(type);
|
|
190
|
+
if (type.indexOf('text/') === 0) {
|
|
191
|
+
textVal = await blob.text();
|
|
192
|
+
} else if (type.indexOf('image/') === 0) {
|
|
193
|
+
dataUrlVal = await new Promise(function(rsv) {
|
|
194
|
+
var r = new FileReader();
|
|
195
|
+
r.onload = function() { rsv(r.result); };
|
|
196
|
+
r.readAsDataURL(blob);
|
|
197
|
+
});
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
if (textVal || dataUrlVal) return JSON.stringify({ text: textVal, dataUrl: dataUrlVal });
|
|
202
|
+
}
|
|
203
|
+
var t = await navigator.clipboard.readText();
|
|
204
|
+
if (t) return JSON.stringify({ text: t });
|
|
205
|
+
return null;
|
|
206
|
+
} catch(e) {
|
|
207
|
+
return 'ERR:' + e.message;
|
|
208
|
+
}
|
|
203
209
|
})()`,
|
|
204
210
|
awaitPromise: true,
|
|
205
211
|
returnByValue: true,
|
|
@@ -242,17 +248,17 @@ export async function browserClipboard(session, options, _config) {
|
|
|
242
248
|
try {
|
|
243
249
|
const evalResult = await Promise.race([
|
|
244
250
|
session.Runtime.evaluate({
|
|
245
|
-
expression: `(function() {
|
|
246
|
-
try {
|
|
247
|
-
var ta = document.createElement('textarea');
|
|
248
|
-
ta.style.cssText = 'position:fixed;top:-999px;left:-999px;opacity:0';
|
|
249
|
-
document.body.appendChild(ta);
|
|
250
|
-
ta.focus();
|
|
251
|
-
var ok = document.execCommand('paste');
|
|
252
|
-
var v = ta.value;
|
|
253
|
-
ta.remove();
|
|
254
|
-
return ok && v ? JSON.stringify({ text: v }) : null;
|
|
255
|
-
} catch(e) { return null; }
|
|
251
|
+
expression: `(function() {
|
|
252
|
+
try {
|
|
253
|
+
var ta = document.createElement('textarea');
|
|
254
|
+
ta.style.cssText = 'position:fixed;top:-999px;left:-999px;opacity:0';
|
|
255
|
+
document.body.appendChild(ta);
|
|
256
|
+
ta.focus();
|
|
257
|
+
var ok = document.execCommand('paste');
|
|
258
|
+
var v = ta.value;
|
|
259
|
+
ta.remove();
|
|
260
|
+
return ok && v ? JSON.stringify({ text: v }) : null;
|
|
261
|
+
} catch(e) { return null; }
|
|
256
262
|
})()`,
|
|
257
263
|
returnByValue: true
|
|
258
264
|
}),
|