@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.
Files changed (168) hide show
  1. package/AGENTS.md +49 -49
  2. package/ARCHITECTURE.md +590 -590
  3. package/LICENSE +216 -216
  4. package/README.md +269 -269
  5. package/SECURITY.md +207 -207
  6. package/TROUBLESHOOTING.md +373 -365
  7. package/dist/anticaptcha/detector.js +395 -395
  8. package/dist/anticaptcha/solver.js +130 -130
  9. package/dist/cdp/bridge.js +73 -73
  10. package/dist/cdp/connector.js +46 -22
  11. package/dist/cdp/extension.js +34 -34
  12. package/dist/cdp/helpers.js +174 -174
  13. package/dist/cdp/pruner.js +195 -195
  14. package/dist/cdp/ref_cache.js +66 -66
  15. package/dist/cdp/security.js +10 -10
  16. package/dist/cdp/verify.js +57 -57
  17. package/dist/cdp/walker.js +563 -525
  18. package/dist/cli/plugin.js +26 -3
  19. package/dist/config/loader.d.ts +0 -3
  20. package/dist/config/loader.js +0 -9
  21. package/dist/index.js +0 -4
  22. package/dist/intelligence/intent.js +81 -81
  23. package/dist/intelligence/sessionMemory.js +2 -2
  24. package/dist/overlay/ghost.js +22 -22
  25. package/dist/overlay/injector.js +89 -89
  26. package/dist/plugin/extension_bridge.js +54 -54
  27. package/dist/plugin/interface.d.ts +7 -0
  28. package/dist/plugin/loader.js +3 -4
  29. package/dist/plugin/schema.d.ts +11 -0
  30. package/dist/plugin/schema.js +59 -0
  31. package/dist/security/guard.js +18 -18
  32. package/dist/sensors/actionability.js +167 -167
  33. package/dist/sensors/guard.js +29 -29
  34. package/dist/sensors/network.js +15 -17
  35. package/dist/server.d.ts +1 -1
  36. package/dist/server.js +173 -144
  37. package/dist/state/delta.js +6 -7
  38. package/dist/tools/automation.js +85 -85
  39. package/dist/tools/canvas.js +48 -25
  40. package/dist/tools/checkpoint.js +94 -35
  41. package/dist/tools/click.js +52 -41
  42. package/dist/tools/clipboard.js +80 -74
  43. package/dist/tools/design_extract.js +441 -441
  44. package/dist/tools/dialog.js +13 -13
  45. package/dist/tools/emulation.d.ts +2 -0
  46. package/dist/tools/emulation.js +7 -0
  47. package/dist/tools/fill.js +344 -347
  48. package/dist/tools/find.js +78 -52
  49. package/dist/tools/highlight.js +67 -67
  50. package/dist/tools/inspect.js +54 -25
  51. package/dist/tools/key.js +42 -35
  52. package/dist/tools/navigate.d.ts +1 -1
  53. package/dist/tools/navigate.js +35 -35
  54. package/dist/tools/office/parse.js +62 -18
  55. package/dist/tools/pdf.d.ts +9 -0
  56. package/dist/tools/pdf.js +7 -4
  57. package/dist/tools/performance.d.ts +11 -4
  58. package/dist/tools/performance.js +94 -42
  59. package/dist/tools/performance_test.d.ts +2 -2
  60. package/dist/tools/performance_test.js +69 -69
  61. package/dist/tools/pointer.js +116 -116
  62. package/dist/tools/read.js +99 -67
  63. package/dist/tools/recording.js +9 -0
  64. package/dist/tools/scrape.js +146 -146
  65. package/dist/tools/screenshot.d.ts +2 -0
  66. package/dist/tools/screenshot.js +46 -4
  67. package/dist/tools/scroll.d.ts +3 -1
  68. package/dist/tools/scroll.js +13 -15
  69. package/dist/tools/select.d.ts +3 -0
  70. package/dist/tools/select.js +131 -124
  71. package/dist/tools/snapshot.js +8 -6
  72. package/dist/tools/storage.d.ts +5 -1
  73. package/dist/tools/storage.js +16 -0
  74. package/dist/tools/tabs.d.ts +7 -5
  75. package/dist/tools/tabs.js +79 -26
  76. package/dist/tools/thought.js +8 -8
  77. package/dist/tools/type.js +274 -274
  78. package/dist/tools/type_secret.js +23 -23
  79. package/dist/tools/upload.js +3 -3
  80. package/dist/tools/video_compiler.js +9 -0
  81. package/dist/tools/wait.js +35 -35
  82. package/dist/version.d.ts +1 -1
  83. package/dist/version.js +1 -1
  84. package/docs/DOCUMENTATION.md +583 -585
  85. package/docs/PLUGINS.md +139 -121
  86. package/docs/TOOLS.md +3 -4
  87. package/docs/architecture/blind-injection.md +83 -83
  88. package/docs/architecture/overview.md +49 -49
  89. package/docs/architecture/security.md +36 -36
  90. package/docs/architecture/transport.md +37 -37
  91. package/docs/cli/cli-commands.md +50 -50
  92. package/docs/cli/cli-flags.md +28 -28
  93. package/docs/cli/cli-scripting.md +35 -35
  94. package/docs/configuration/config-locations.md +23 -23
  95. package/docs/configuration/configuration.md +39 -27
  96. package/docs/configuration/env-variables.md +19 -19
  97. package/docs/configuration/folders.md +62 -55
  98. package/docs/desktop-automation/electron-apps.md +225 -214
  99. package/docs/get-started/installation.md +1 -1
  100. package/docs/get-started/introduction.md +60 -60
  101. package/docs/get-started/quickstart.md +2 -2
  102. package/docs/get-started/setup-wizard.md +27 -27
  103. package/docs/intelligence/site-profiles.md +151 -151
  104. package/docs/tools/tools.md +582 -631
  105. package/docs/troubleshooting/trouble-browser.md +27 -27
  106. package/docs/troubleshooting/trouble-loop.md +31 -31
  107. package/ext-dist/background.js +415 -415
  108. package/ext-dist/content.js +2527 -2527
  109. package/ext-dist/dashboard.html +583 -583
  110. package/ext-dist/hud/hud.js +3 -3
  111. package/ext-dist/hud/index.html +20 -20
  112. package/ext-dist/manifest.json +73 -73
  113. package/ext-dist/styles.css +223 -223
  114. package/mcp.json +796 -805
  115. package/package.json +118 -118
  116. package/server.json +23 -23
  117. package/dist/cdp/walker.test.d.ts +0 -2
  118. package/dist/cdp/walker.test.js +0 -172
  119. package/dist/intelligence/sessionMemory.test.d.ts +0 -2
  120. package/dist/intelligence/sessionMemory.test.js +0 -62
  121. package/dist/intelligence/trail.test.d.ts +0 -2
  122. package/dist/intelligence/trail.test.js +0 -110
  123. package/dist/state/cache.test.d.ts +0 -2
  124. package/dist/state/cache.test.js +0 -76
  125. package/dist/state/delta.test.d.ts +0 -2
  126. package/dist/state/delta.test.js +0 -279
  127. package/dist/state/groups.d.ts +0 -15
  128. package/dist/state/groups.js +0 -80
  129. package/dist/tools/accessibility.d.ts +0 -14
  130. package/dist/tools/accessibility.js +0 -32
  131. package/dist/tools/ask.d.ts +0 -14
  132. package/dist/tools/ask.js +0 -49
  133. package/dist/tools/click_and_wait.d.ts +0 -33
  134. package/dist/tools/click_and_wait.js +0 -149
  135. package/dist/tools/drag.d.ts +0 -15
  136. package/dist/tools/drag.js +0 -29
  137. package/dist/tools/geo.d.ts +0 -19
  138. package/dist/tools/geo.js +0 -29
  139. package/dist/tools/github/analyze.d.ts +0 -4
  140. package/dist/tools/github/analyze.js +0 -113
  141. package/dist/tools/github/cache.d.ts +0 -21
  142. package/dist/tools/github/cache.js +0 -28
  143. package/dist/tools/github/index.d.ts +0 -19
  144. package/dist/tools/github/index.js +0 -40
  145. package/dist/tools/github/issues.d.ts +0 -9
  146. package/dist/tools/github/issues.js +0 -88
  147. package/dist/tools/github/pr.d.ts +0 -5
  148. package/dist/tools/github/pr.js +0 -88
  149. package/dist/tools/github/rateLimiter.d.ts +0 -4
  150. package/dist/tools/github/rateLimiter.js +0 -46
  151. package/dist/tools/github/read.d.ts +0 -34
  152. package/dist/tools/github/read.js +0 -74
  153. package/dist/tools/github/repoContext.d.ts +0 -20
  154. package/dist/tools/github/repoContext.js +0 -129
  155. package/dist/tools/hover.d.ts +0 -19
  156. package/dist/tools/hover.js +0 -57
  157. package/dist/tools/integration.test.d.ts +0 -2
  158. package/dist/tools/integration.test.js +0 -96
  159. package/dist/tools/macro_compiler.d.ts +0 -7
  160. package/dist/tools/macro_compiler.js +0 -82
  161. package/dist/tools/mouse.d.ts +0 -21
  162. package/dist/tools/mouse.js +0 -62
  163. package/dist/tools/response.d.ts +0 -129
  164. package/dist/tools/response.js +0 -5
  165. package/dist/tools/wait_for.d.ts +0 -23
  166. package/dist/tools/wait_for.js +0 -30
  167. package/dist/tools/windows.d.ts +0 -22
  168. package/dist/tools/windows.js +0 -57
@@ -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
- await navigator.clipboard.write([
55
- new ClipboardItem({ ${JSON.stringify(mime)}: blob })
56
- ]);
57
- return "ok";
58
- } catch(e) {
59
- return "ERR:" + e.message;
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
  }),