@weavetab/mcp 2.5.0-beta.0

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 (281) hide show
  1. package/AGENTS.md +48 -0
  2. package/ARCHITECTURE.md +590 -0
  3. package/LICENSE +631 -0
  4. package/README.md +909 -0
  5. package/SECURITY.md +196 -0
  6. package/TROUBLESHOOTING.md +365 -0
  7. package/dist/anticaptcha/detector.d.ts +49 -0
  8. package/dist/anticaptcha/detector.js +465 -0
  9. package/dist/anticaptcha/integration.d.ts +36 -0
  10. package/dist/anticaptcha/integration.js +123 -0
  11. package/dist/anticaptcha/solver.d.ts +27 -0
  12. package/dist/anticaptcha/solver.js +552 -0
  13. package/dist/audit/logger.d.ts +13 -0
  14. package/dist/audit/logger.js +177 -0
  15. package/dist/audit/telemetry.d.ts +36 -0
  16. package/dist/audit/telemetry.js +162 -0
  17. package/dist/cdp/bridge.d.ts +16 -0
  18. package/dist/cdp/bridge.js +826 -0
  19. package/dist/cdp/confirm.d.ts +26 -0
  20. package/dist/cdp/confirm.js +79 -0
  21. package/dist/cdp/connector.d.ts +37 -0
  22. package/dist/cdp/connector.js +661 -0
  23. package/dist/cdp/extension.d.ts +36 -0
  24. package/dist/cdp/extension.js +118 -0
  25. package/dist/cdp/finder.d.ts +1 -0
  26. package/dist/cdp/finder.js +2 -0
  27. package/dist/cdp/helpers.d.ts +11 -0
  28. package/dist/cdp/helpers.js +195 -0
  29. package/dist/cdp/label_cache.d.ts +12 -0
  30. package/dist/cdp/label_cache.js +51 -0
  31. package/dist/cdp/lock.d.ts +33 -0
  32. package/dist/cdp/lock.js +206 -0
  33. package/dist/cdp/omni_broker.d.ts +17 -0
  34. package/dist/cdp/omni_broker.js +119 -0
  35. package/dist/cdp/profiles.d.ts +1 -0
  36. package/dist/cdp/profiles.js +87 -0
  37. package/dist/cdp/pruner.d.ts +41 -0
  38. package/dist/cdp/pruner.js +263 -0
  39. package/dist/cdp/ref_cache.d.ts +101 -0
  40. package/dist/cdp/ref_cache.js +234 -0
  41. package/dist/cdp/retry.d.ts +5 -0
  42. package/dist/cdp/retry.js +39 -0
  43. package/dist/cdp/retry_enhanced.d.ts +44 -0
  44. package/dist/cdp/retry_enhanced.js +102 -0
  45. package/dist/cdp/security.d.ts +50 -0
  46. package/dist/cdp/security.js +237 -0
  47. package/dist/cdp/verify.d.ts +39 -0
  48. package/dist/cdp/verify.js +143 -0
  49. package/dist/cdp/walker.d.ts +91 -0
  50. package/dist/cdp/walker.js +896 -0
  51. package/dist/cdp/walker.test.d.ts +2 -0
  52. package/dist/cdp/walker.test.js +172 -0
  53. package/dist/cdp/websocket_transport.d.ts +15 -0
  54. package/dist/cdp/websocket_transport.js +118 -0
  55. package/dist/cli/plugin.d.ts +9 -0
  56. package/dist/cli/plugin.js +1134 -0
  57. package/dist/cli/updater.d.ts +1 -0
  58. package/dist/cli/updater.js +72 -0
  59. package/dist/config/loader.d.ts +120 -0
  60. package/dist/config/loader.js +704 -0
  61. package/dist/index.d.ts +2 -0
  62. package/dist/index.js +1248 -0
  63. package/dist/intelligence/hints.d.ts +11 -0
  64. package/dist/intelligence/hints.js +39 -0
  65. package/dist/intelligence/intent.d.ts +33 -0
  66. package/dist/intelligence/intent.js +171 -0
  67. package/dist/intelligence/sessionMemory.d.ts +66 -0
  68. package/dist/intelligence/sessionMemory.js +284 -0
  69. package/dist/intelligence/sessionMemory.test.d.ts +2 -0
  70. package/dist/intelligence/sessionMemory.test.js +62 -0
  71. package/dist/intelligence/trail.d.ts +64 -0
  72. package/dist/intelligence/trail.js +233 -0
  73. package/dist/intelligence/trail.test.d.ts +2 -0
  74. package/dist/intelligence/trail.test.js +110 -0
  75. package/dist/intelligence/vision.d.ts +24 -0
  76. package/dist/intelligence/vision.js +151 -0
  77. package/dist/lifecycle/mission_manager.d.ts +16 -0
  78. package/dist/lifecycle/mission_manager.js +44 -0
  79. package/dist/overlay/bubble.d.ts +16 -0
  80. package/dist/overlay/bubble.js +37 -0
  81. package/dist/overlay/ghost.d.ts +35 -0
  82. package/dist/overlay/ghost.js +508 -0
  83. package/dist/overlay/injector.d.ts +22 -0
  84. package/dist/overlay/injector.js +198 -0
  85. package/dist/plugin/interface.d.ts +134 -0
  86. package/dist/plugin/interface.js +1 -0
  87. package/dist/plugin/loader.d.ts +18 -0
  88. package/dist/plugin/loader.js +155 -0
  89. package/dist/plugin/registry.d.ts +50 -0
  90. package/dist/plugin/registry.js +234 -0
  91. package/dist/security/blacklist.d.ts +24 -0
  92. package/dist/security/blacklist.js +80 -0
  93. package/dist/security/filter.d.ts +2 -0
  94. package/dist/security/filter.js +20 -0
  95. package/dist/security/guard.d.ts +8 -0
  96. package/dist/security/guard.js +35 -0
  97. package/dist/security/ratelimit.d.ts +11 -0
  98. package/dist/security/ratelimit.js +57 -0
  99. package/dist/security/secrets.d.ts +75 -0
  100. package/dist/security/secrets.js +365 -0
  101. package/dist/sensors/actionability.d.ts +81 -0
  102. package/dist/sensors/actionability.js +303 -0
  103. package/dist/sensors/guard.d.ts +25 -0
  104. package/dist/sensors/guard.js +168 -0
  105. package/dist/sensors/mutations.d.ts +23 -0
  106. package/dist/sensors/mutations.js +93 -0
  107. package/dist/sensors/network.d.ts +67 -0
  108. package/dist/sensors/network.js +193 -0
  109. package/dist/sensors/operation_monitor.d.ts +80 -0
  110. package/dist/sensors/operation_monitor.js +203 -0
  111. package/dist/sensors/pacing.d.ts +44 -0
  112. package/dist/sensors/pacing.js +111 -0
  113. package/dist/sensors/thoughts.d.ts +2 -0
  114. package/dist/sensors/thoughts.js +59 -0
  115. package/dist/sensors/wait.d.ts +12 -0
  116. package/dist/sensors/wait.js +44 -0
  117. package/dist/server.d.ts +7 -0
  118. package/dist/server.js +1687 -0
  119. package/dist/state/agent.d.ts +36 -0
  120. package/dist/state/agent.js +101 -0
  121. package/dist/state/cache.d.ts +16 -0
  122. package/dist/state/cache.js +92 -0
  123. package/dist/state/cache.test.d.ts +2 -0
  124. package/dist/state/cache.test.js +76 -0
  125. package/dist/state/delta.d.ts +71 -0
  126. package/dist/state/delta.js +234 -0
  127. package/dist/state/delta.test.d.ts +2 -0
  128. package/dist/state/delta.test.js +279 -0
  129. package/dist/state/groups.d.ts +15 -0
  130. package/dist/state/groups.js +80 -0
  131. package/dist/state/session.d.ts +30 -0
  132. package/dist/state/session.js +155 -0
  133. package/dist/tools/accessibility.d.ts +14 -0
  134. package/dist/tools/accessibility.js +32 -0
  135. package/dist/tools/ask.d.ts +14 -0
  136. package/dist/tools/ask.js +49 -0
  137. package/dist/tools/automation.d.ts +36 -0
  138. package/dist/tools/automation.js +218 -0
  139. package/dist/tools/browser_detect.d.ts +13 -0
  140. package/dist/tools/browser_detect.js +73 -0
  141. package/dist/tools/burst.d.ts +35 -0
  142. package/dist/tools/burst.js +344 -0
  143. package/dist/tools/canvas.d.ts +25 -0
  144. package/dist/tools/canvas.js +132 -0
  145. package/dist/tools/captcha.d.ts +38 -0
  146. package/dist/tools/captcha.js +209 -0
  147. package/dist/tools/click.d.ts +36 -0
  148. package/dist/tools/click.js +561 -0
  149. package/dist/tools/click_and_wait.d.ts +33 -0
  150. package/dist/tools/click_and_wait.js +149 -0
  151. package/dist/tools/clipboard.d.ts +29 -0
  152. package/dist/tools/clipboard.js +279 -0
  153. package/dist/tools/console.d.ts +21 -0
  154. package/dist/tools/console.js +107 -0
  155. package/dist/tools/cookies.d.ts +67 -0
  156. package/dist/tools/cookies.js +121 -0
  157. package/dist/tools/design_extract.d.ts +109 -0
  158. package/dist/tools/design_extract.js +641 -0
  159. package/dist/tools/dialog.d.ts +24 -0
  160. package/dist/tools/dialog.js +109 -0
  161. package/dist/tools/drag.d.ts +15 -0
  162. package/dist/tools/drag.js +29 -0
  163. package/dist/tools/emulation.d.ts +33 -0
  164. package/dist/tools/emulation.js +69 -0
  165. package/dist/tools/eval.d.ts +20 -0
  166. package/dist/tools/eval.js +92 -0
  167. package/dist/tools/fill.d.ts +41 -0
  168. package/dist/tools/fill.js +667 -0
  169. package/dist/tools/find.d.ts +30 -0
  170. package/dist/tools/find.js +60 -0
  171. package/dist/tools/geo.d.ts +19 -0
  172. package/dist/tools/geo.js +29 -0
  173. package/dist/tools/github/analyze.d.ts +4 -0
  174. package/dist/tools/github/analyze.js +113 -0
  175. package/dist/tools/github/cache.d.ts +21 -0
  176. package/dist/tools/github/cache.js +28 -0
  177. package/dist/tools/github/index.d.ts +4 -0
  178. package/dist/tools/github/index.js +4 -0
  179. package/dist/tools/github/issues.d.ts +9 -0
  180. package/dist/tools/github/issues.js +88 -0
  181. package/dist/tools/github/pr.d.ts +5 -0
  182. package/dist/tools/github/pr.js +88 -0
  183. package/dist/tools/github/rateLimiter.d.ts +4 -0
  184. package/dist/tools/github/rateLimiter.js +46 -0
  185. package/dist/tools/github/read.d.ts +34 -0
  186. package/dist/tools/github/read.js +74 -0
  187. package/dist/tools/github/repoContext.d.ts +20 -0
  188. package/dist/tools/github/repoContext.js +129 -0
  189. package/dist/tools/highlight.d.ts +20 -0
  190. package/dist/tools/highlight.js +140 -0
  191. package/dist/tools/hover.d.ts +19 -0
  192. package/dist/tools/hover.js +57 -0
  193. package/dist/tools/inspect.d.ts +17 -0
  194. package/dist/tools/inspect.js +125 -0
  195. package/dist/tools/integration.test.d.ts +2 -0
  196. package/dist/tools/integration.test.js +96 -0
  197. package/dist/tools/key.d.ts +25 -0
  198. package/dist/tools/key.js +173 -0
  199. package/dist/tools/macro_compiler.d.ts +7 -0
  200. package/dist/tools/macro_compiler.js +82 -0
  201. package/dist/tools/mouse.d.ts +21 -0
  202. package/dist/tools/mouse.js +62 -0
  203. package/dist/tools/navigate.d.ts +16 -0
  204. package/dist/tools/navigate.js +188 -0
  205. package/dist/tools/network_intercept.d.ts +17 -0
  206. package/dist/tools/network_intercept.js +151 -0
  207. package/dist/tools/office/index.d.ts +9 -0
  208. package/dist/tools/office/index.js +7 -0
  209. package/dist/tools/office/list.d.ts +15 -0
  210. package/dist/tools/office/list.js +41 -0
  211. package/dist/tools/office/parse.d.ts +20 -0
  212. package/dist/tools/office/parse.js +172 -0
  213. package/dist/tools/pdf.d.ts +22 -0
  214. package/dist/tools/pdf.js +42 -0
  215. package/dist/tools/performance.d.ts +12 -0
  216. package/dist/tools/performance.js +47 -0
  217. package/dist/tools/performance_test.d.ts +70 -0
  218. package/dist/tools/performance_test.js +128 -0
  219. package/dist/tools/plan.d.ts +39 -0
  220. package/dist/tools/plan.js +161 -0
  221. package/dist/tools/pointer.d.ts +35 -0
  222. package/dist/tools/pointer.js +522 -0
  223. package/dist/tools/read.d.ts +30 -0
  224. package/dist/tools/read.js +488 -0
  225. package/dist/tools/recording.d.ts +45 -0
  226. package/dist/tools/recording.js +124 -0
  227. package/dist/tools/response.d.ts +129 -0
  228. package/dist/tools/response.js +5 -0
  229. package/dist/tools/scrape.d.ts +24 -0
  230. package/dist/tools/scrape.js +140 -0
  231. package/dist/tools/screenshot.d.ts +40 -0
  232. package/dist/tools/screenshot.js +79 -0
  233. package/dist/tools/scroll.d.ts +23 -0
  234. package/dist/tools/scroll.js +196 -0
  235. package/dist/tools/select.d.ts +13 -0
  236. package/dist/tools/select.js +217 -0
  237. package/dist/tools/snapshot.d.ts +27 -0
  238. package/dist/tools/snapshot.js +99 -0
  239. package/dist/tools/storage.d.ts +18 -0
  240. package/dist/tools/storage.js +29 -0
  241. package/dist/tools/tabs.d.ts +77 -0
  242. package/dist/tools/tabs.js +342 -0
  243. package/dist/tools/thought.d.ts +16 -0
  244. package/dist/tools/thought.js +79 -0
  245. package/dist/tools/type.d.ts +65 -0
  246. package/dist/tools/type.js +1061 -0
  247. package/dist/tools/type_secret.d.ts +23 -0
  248. package/dist/tools/type_secret.js +229 -0
  249. package/dist/tools/upload.d.ts +19 -0
  250. package/dist/tools/upload.js +103 -0
  251. package/dist/tools/video_compiler.d.ts +24 -0
  252. package/dist/tools/video_compiler.js +199 -0
  253. package/dist/tools/viewport.d.ts +44 -0
  254. package/dist/tools/viewport.js +230 -0
  255. package/dist/tools/wait.d.ts +19 -0
  256. package/dist/tools/wait.js +202 -0
  257. package/dist/tools/wait_for.d.ts +23 -0
  258. package/dist/tools/wait_for.js +30 -0
  259. package/dist/tools/windows.d.ts +22 -0
  260. package/dist/tools/windows.js +57 -0
  261. package/dist/ui/index.d.ts +1 -0
  262. package/dist/ui/index.js +12 -0
  263. package/docs/DEV_MODE.md +68 -0
  264. package/docs/DOCUMENTATION.md +532 -0
  265. package/docs/PLUGINS.md +538 -0
  266. package/docs/TOOLS.md +104 -0
  267. package/docs/dev_plugin.md +310 -0
  268. package/ext-dist/background.js +467 -0
  269. package/ext-dist/content.js +3089 -0
  270. package/ext-dist/dashboard.html +583 -0
  271. package/ext-dist/hud/hud.js +73 -0
  272. package/ext-dist/hud/index.html +20 -0
  273. package/ext-dist/manifest.json +77 -0
  274. package/ext-dist/sidepanel/sidepanel.js +25 -0
  275. package/ext-dist/sidepanel.html +547 -0
  276. package/ext-dist/styles.css +218 -0
  277. package/icon.png +0 -0
  278. package/mcp.json +796 -0
  279. package/package.json +113 -0
  280. package/server.json +23 -0
  281. package/smithery.yaml +11 -0
@@ -0,0 +1,538 @@
1
+ # Weavetab Plugin System Architecture & Developer Guide
2
+
3
+ The **Weavetab Plugin System** is an enterprise-grade extension platform designed for the Model Context Protocol (MCP). It allows developers and enterprises to seamlessly extend, customize, and harden Weavetab's browser automation runtime.
4
+
5
+ Unlike rigid toolkits, Weavetab plugins can:
6
+ 1. **Add New Tools**: Expose custom domain tools (e.g., Notion synchronization, Jira automation, SEO audits).
7
+ 2. **Override & Wrap Built-in Tools**: Intercept and augment native Weavetab tools (e.g., `eval_plus` upgrading `browser_eval` with a sandboxed TypeScript engine and calling `originalHandler`).
8
+ 3. **Remove & Disable Built-in Tools**: Enforce zero-trust enterprise lockdown by stripping dangerous or redundant tools (e.g., disabling `browser_inspect`, `browser_cookies`, or `browser_eval` in restricted production environments).
9
+
10
+ ---
11
+
12
+ ## 1. 3-Tier Security & Trust Hierarchy
13
+
14
+ Weavetab enforces a strict, defense-in-depth trust model across all installed plugins.
15
+
16
+ ```mermaid
17
+ flowchart TD
18
+ subgraph Tiers ["Weavetab Trust Tiers"]
19
+ direction TB
20
+ T1[" ✚ Official Tier\n(@weavetab/plugin-*)"]
21
+ T2[" ✔ Verified Community Tier\n(Listed in verified.json)"]
22
+ T3[" ⚠ Unverified Community Tier\n(Arbitrary NPM packages)"]
23
+ end
24
+
25
+ T1 -->|Full Trust| R1["Instant Activation · Audited Code · Zero Warnings"]
26
+ T2 -->|Vetted Trust| R2["Safe Installation · Verified by Weavetab Maintainers"]
27
+ T3 -->|Zero Trust| R3["Security Warning Banner · Interactive Confirmation · Tool Audit"]
28
+ ```
29
+
30
+ | Trust Tier | Scope / Criteria | Security Status | CLI Badge |
31
+ | :--- | :--- | :--- | :--- |
32
+ | **Official** | Published under `@weavetab/plugin-*` | Built, maintained, and cryptographically verified by the Weavetab Core Team. | `✚ [Official]` |
33
+ | **Verified Community** | Any NPM package listed in [`registry/verified.json`](file:///c:/Users/fy2ne/Music/Weavetab/registry/verified.json) | Community package reviewed and audited by Weavetab maintainers. | `✔ [Verified]` |
34
+ | **Unverified Community** | Any arbitrary NPM package containing a `weavetab.json` manifest | Unvetted third-party package. Prompts the operator with an interactive security audit before installation. | `⚠ [Unverified]` |
35
+
36
+ > [!IMPORTANT]
37
+ > **Universal Package Naming**: Plugins are **not** restricted to `weavetab-plugin-*` naming. Any NPM package containing a valid `weavetab.json` manifest at its root is automatically recognized, parsed, and registered by Weavetab.
38
+
39
+ ---
40
+
41
+ ## 2. Candidate Disambiguation Engine
42
+
43
+ When installing a plugin via short name (e.g., `wt plugin add n8n-wt`), Weavetab queries both official scoped shortcuts and community packages in parallel:
44
+
45
+ * **Official Candidate**: `@weavetab/plugin-<name>` (First-party team package)
46
+ * **Community Candidate**: `<name>` (Community NPM package)
47
+
48
+ ```mermaid
49
+ flowchart TD
50
+ A["wt plugin add n8n-wt"] --> B{Explicit Scope (@...)?}
51
+ B -->|Yes| C["Direct Installation"]
52
+ B -->|No| D["Query Candidates in Parallel"]
53
+
54
+ D --> E["1. @weavetab/plugin-n8n-wt (Official)"]
55
+ D --> F["2. n8n-wt (Community Registry / NPM)"]
56
+
57
+ E & F --> G{Both exist on NPM?}
58
+
59
+ G -->|Yes| H["Interactive Disambiguation Prompt"]
60
+ G -->|Only Official| I["Install @weavetab/plugin-n8n-wt"]
61
+ G -->|Only Community| J["Install n8n-wt"]
62
+
63
+ H -->|Selects Official| I
64
+ H -->|Selects Community| J
65
+ ```
66
+
67
+ ### Disambiguation CLI Selector
68
+ ```text
69
+ ╭────────────────────────────────────────────────────────────────────────╮
70
+ │ Multiple packages found for "n8n-wt". Which one do you want to install?│
71
+ ╰────────────────────────────────────────────────────────────────────────╯
72
+
73
+ ● @weavetab/plugin-n8n-wt [Official] (Made by the Weavetab team)
74
+ ○ n8n-wt [Verified] (Community plugin in verified registry)
75
+ ○ n8n-wt [Unverified] (Third-party community package on npm)
76
+ ```
77
+
78
+ > [!TIP]
79
+ > **CI/CD Automation Flags**:
80
+ > * `wt plugin add <name> --official` (or `-O`): Forces installation of `@weavetab/plugin-<name>`.
81
+ > * `wt plugin add <name> --community` (or `-C`): Forces installation of community package `<name>`.
82
+ > * `wt plugin add <name> --yes` (or `-y`): Bypasses interactive confirmation for unverified plugins in CI environments.
83
+
84
+ ---
85
+
86
+ ## 3. Tool Lifecycle & Capabilities
87
+
88
+ Weavetab plugins provide full programmatic control over the MCP tool registry.
89
+
90
+ ```mermaid
91
+ flowchart LR
92
+ P["Plugin Runtime"] --> A["1. Add New Tools\n(plugin.tools)"]
93
+ P --> B["2. Override Tools\n(plugin.overrides)"]
94
+ P --> C["3. Remove Tools\n(plugin.removeTools)"]
95
+
96
+ A --> M["MCP Tool Registry"]
97
+ B --> M
98
+ C --> M
99
+ ```
100
+
101
+ ### A. Tool Additions (`tools`)
102
+ Plugins can introduce brand new capabilities with full Zod schema validation:
103
+
104
+ ```typescript
105
+ import { z } from "zod";
106
+ import type { WeavetabPlugin } from "./interface.js";
107
+
108
+ const plugin: WeavetabPlugin = {
109
+ name: "notion_sync",
110
+ version: "1.0.0",
111
+ tools: [
112
+ {
113
+ name: "notion_create_page",
114
+ description: "Creates a new structured documentation page in Notion",
115
+ schema: {
116
+ title: z.string().describe("The title of the Notion page"),
117
+ content: z.string().describe("Markdown content for the body"),
118
+ },
119
+ handler: async (args, session, config) => {
120
+ // Full access to Chrome DevTools Protocol session and Weavetab config
121
+ return { success: true, url: "https://notion.so/my-page" };
122
+ },
123
+ },
124
+ ],
125
+ };
126
+ ```
127
+
128
+ ---
129
+
130
+ ### B. Tool Overrides & Wrapping (`overrides`)
131
+ A plugin can intercept, augment, or completely replace built-in tools. When overriding, the plugin receives an optional `originalHandler` function to chain or wrap the base tool execution:
132
+
133
+ ```typescript
134
+ import { z } from "zod";
135
+ import type { WeavetabPlugin } from "./interface.js";
136
+
137
+ const evalPlusPlugin: WeavetabPlugin = {
138
+ name: "eval_plus",
139
+ version: "2.1.0",
140
+ overrides: [
141
+ {
142
+ name: "browser_eval",
143
+ description: "High-performance TypeScript & Sandboxed JavaScript runtime for browser evaluation",
144
+ schema: {
145
+ code: z.string().describe("TypeScript or JS code to evaluate"),
146
+ sandbox: z.boolean().optional().describe("Execute in isolated sandbox"),
147
+ },
148
+ handler: async (args, session, config, originalHandler) => {
149
+ // Pre-processing: transpile TypeScript to JavaScript
150
+ const transpiledCode = transpileTypeScript(args.code);
151
+
152
+ if (!args.sandbox && originalHandler) {
153
+ // Pass execution down to Weavetab's native browser_eval handler
154
+ return await originalHandler({ code: transpiledCode }, session, config);
155
+ }
156
+
157
+ // Custom sandboxed execution via isolated CDP execution context
158
+ const result = await runInIsolatedWorld(session, transpiledCode);
159
+ return { success: true, sandboxed: true, result };
160
+ },
161
+ },
162
+ ],
163
+ };
164
+ ```
165
+
166
+ ---
167
+
168
+ ### C. Tool Removals (`removeTools`)
169
+ For enterprise compliance, zero-trust environments, or locked-down production agents, plugins can completely unregister built-in tools:
170
+
171
+ ```typescript
172
+ import type { WeavetabPlugin } from "./interface.js";
173
+
174
+ const enterpriseLockdown: WeavetabPlugin = {
175
+ name: "enterprise_security_lockdown",
176
+ version: "1.0.0",
177
+ removeTools: [
178
+ "browser_eval", // Disable arbitrary script evaluation
179
+ "browser_cookies", // Prevent cookie extraction
180
+ "browser_storage", // Prevent storage inspection
181
+ "browser_inspect", // Prevent raw source tree dumps
182
+ ],
183
+ };
184
+ ```
185
+
186
+ > [!CAUTION]
187
+ > When a tool is removed by a plugin, it is permanently deleted from the MCP Server tool registry during that session. Any agent attempting to invoke a removed tool will receive a tool-not-found error.
188
+
189
+ ---
190
+
191
+ ## 4. Manifest Specification (`weavetab.json`)
192
+
193
+ Every plugin package must include a `weavetab.json` file in its root directory. This manifest acts as the security contract for the plugin.
194
+
195
+ ### Complete Manifest Schema
196
+ ```json
197
+ {
198
+ "$schema": "https://weavetab.dev/schema/plugin.json",
199
+ "name": "eval_plus",
200
+ "version": "2.1.0",
201
+ "description": "Enterprise TypeScript evaluation engine and runtime sandbox for Weavetab",
202
+ "authors": [
203
+ {
204
+ "name": "Acme Security Labs",
205
+ "role": "Lead Architect",
206
+ "url": "https://github.com/acme"
207
+ }
208
+ ],
209
+ "logo": "images/logo.svg",
210
+ "banner": "images/banner.svg",
211
+ "license": "MIT",
212
+ "tags": ["Security", "Sandbox", "TypeScript", "MCP"],
213
+ "compatibility": {
214
+ "weavetab": "^2.5.0",
215
+ "node": ">=18.0.0"
216
+ },
217
+ "tools": [
218
+ {
219
+ "name": "browser_eval_ts",
220
+ "description": "Evaluates pure TypeScript files in browser context",
221
+ "inputSchema": {
222
+ "type": "object",
223
+ "properties": {
224
+ "code": {
225
+ "type": "string",
226
+ "description": "TypeScript code string to transpile and evaluate"
227
+ }
228
+ },
229
+ "required": ["code"]
230
+ }
231
+ }
232
+ ],
233
+ "permissions": {
234
+ "network": {
235
+ "domains": ["*.acme.corp"],
236
+ "reason": "Required to transpile TypeScript compiler modules on-demand"
237
+ },
238
+ "cdp": {
239
+ "evaluate": true,
240
+ "click": true,
241
+ "reason": "Required to inject transpiled bytecode into isolated CDP contexts"
242
+ },
243
+ "fs": {
244
+ "read": ["./types/*"],
245
+ "reason": "Reads local TypeScript declaration definitions"
246
+ }
247
+ }
248
+ }
249
+ ```
250
+
251
+ ### Manifest Fields Reference
252
+
253
+ | Field | Type | Required | Description |
254
+ | :--- | :--- | :--- | :--- |
255
+ | `name` | `string` | **Yes** | Display or package name. |
256
+ | `version` | `string` | **Yes** | Semantic version string (`1.0.0`). |
257
+ | `description` | `string` | Recommended | Human-readable description of plugin capabilities. |
258
+ | `authors` | `array` | **Yes** | Authors array with custom roles ($\ge 3$ chars) and optional GitHub/NPM profile URLs for auto avatar resolution. |
259
+ | `logo` | `string` | Optional | Path to local logo asset (e.g. `images/logo.svg`). |
260
+ | `banner` | `string` | Optional | Path to local banner asset (e.g. `images/banner.svg`). |
261
+ | `compatibility` | `object` | Optional | Runtime version compatibility (`weavetab` and `node`). |
262
+ | `tools` | `array` | Optional | List of exposed MCP tools registered by this plugin. |
263
+ | `permissions` | `object` | Optional | Explicit security scopes and human-readable justification reasons. |
264
+
265
+ > [!TIP]
266
+ > For a full step-by-step tutorial on building plugins from scratch, see [Developer Plugin Guide](file:///c:/Users/fy2ne/Music/Weavetab/docs/dev_plugin.md).
267
+
268
+ ---
269
+
270
+ ## 5. CLI Plugin Command Suite
271
+
272
+ Weavetab provides a dedicated CLI suite (`wt plugin`) for managing plugins, discovering packages, auditing security, and generating manifests.
273
+
274
+ ### 1. `wt plugin add <package>`
275
+ Installs a plugin into the local environment with automatic candidate resolution and trust auditing.
276
+
277
+ ```bash
278
+ # Install via short name (resolves official @weavetab/plugin-vision or vision)
279
+ wt plugin add vision
280
+
281
+ # Install explicit community package
282
+ wt plugin add eval_plus
283
+
284
+ # Non-interactive installation for CI/CD
285
+ wt plugin add eval_plus --yes
286
+ ```
287
+
288
+ If an unverified package requests tool modifications, a security warning is displayed:
289
+
290
+ ```text
291
+ ╭───────────────────────────────────────────────────────────────────╮
292
+ │ ⚠️ SECURITY WARNING: UNVERIFIED COMMUNITY PLUGIN │
293
+ │ │
294
+ │ Package "eval_plus" is NOT verified by Weavetab. │
295
+ │ It is an unvetted third-party package and may potentially contain:│
296
+ │ • Arbitrary code execution during installation or runtime │
297
+ │ • CDP browser control (evaluating scripts, session access) │
298
+ │ • Tool overrides / removals │
299
+ │ │
300
+ │ Install and run this plugin strictly at your own risk! │
301
+ ╰───────────────────────────────────────────────────────────────────╯
302
+ ```
303
+
304
+ ---
305
+
306
+ ### 2. `wt plugin browse`
307
+ Opens an interactive, terminal-based marketplace explorer to discover official and verified community plugins with 1-click installation.
308
+
309
+ ```bash
310
+ wt plugin browse
311
+ ```
312
+
313
+ ---
314
+
315
+ ### 3. `wt plugin search [query]`
316
+ Live search across both the Weavetab Verified Registry and NPM for plugins matching the search query.
317
+
318
+ ```bash
319
+ wt plugin search accessibility
320
+ ```
321
+
322
+ ---
323
+
324
+ ### 4. `wt plugin verify <package>`
325
+ Audits the trust tier, verification status, and declared permissions of any package before installation.
326
+
327
+ ```bash
328
+ wt plugin verify @weavetab/plugin-n8n-wt
329
+ wt plugin verify eval_plus
330
+ ```
331
+
332
+ ---
333
+
334
+ ### 5. `wt plugin list`
335
+ Lists all installed plugins in the active Weavetab environment, displaying versions, trust tiers, and exposed/overridden tools.
336
+
337
+ ```bash
338
+ wt plugin list
339
+ ```
340
+
341
+ ---
342
+
343
+ ### 6. `wt plugin remove <package>`
344
+ Uninstalls a plugin from `node_modules`.
345
+
346
+ ```bash
347
+ wt plugin remove eval_plus
348
+ ```
349
+
350
+ ---
351
+
352
+ ### 7. `wt plugin init`
353
+ Interactive CLI wizard that introspects your plugin source code and generates a standardized `weavetab.json` manifest.
354
+
355
+ ```bash
356
+ wt plugin init
357
+ ```
358
+
359
+ The wizard prompts for:
360
+ 1. Plugin ID and package metadata
361
+ 2. Network, CDP, and File System access requirements
362
+ 3. Tool override and removal specifications
363
+
364
+ ---
365
+
366
+ ## 6. Step-by-Step Plugin Authoring Guide
367
+
368
+ ### Step 1: Initialize Project
369
+ ```bash
370
+ mkdir wt-eval-plus
371
+ cd wt-eval-plus
372
+ npm init -y
373
+ ```
374
+
375
+ ### Step 2: Configure `package.json`
376
+ ```json
377
+ {
378
+ "name": "eval_plus",
379
+ "version": "1.0.0",
380
+ "type": "module",
381
+ "main": "dist/index.js",
382
+ "scripts": {
383
+ "build": "tsc"
384
+ },
385
+ "dependencies": {
386
+ "zod": "^3.23.8"
387
+ },
388
+ "devDependencies": {
389
+ "typescript": "^5.4.0",
390
+ "@types/node": "^20.0.0"
391
+ }
392
+ }
393
+ ```
394
+
395
+ ### Step 3: Implement Plugin Entry (`src/index.ts`)
396
+ ```typescript
397
+ import { z } from "zod";
398
+
399
+ export default {
400
+ name: "eval_plus",
401
+ version: "1.0.0",
402
+ description: "Enhanced evaluation with TypeScript and sandbox support",
403
+
404
+ // 1. Tool Additions
405
+ tools: [
406
+ {
407
+ name: "browser_eval_ts",
408
+ description: "Compile and evaluate TypeScript code in page context",
409
+ schema: {
410
+ code: z.string().describe("TypeScript code string"),
411
+ },
412
+ handler: async (args, session, config) => {
413
+ // Compile TypeScript to JS
414
+ const js = compileTS(args.code);
415
+ const { result } = await session.Runtime.evaluate({
416
+ expression: js,
417
+ returnByValue: true,
418
+ });
419
+ return { value: result.value };
420
+ },
421
+ },
422
+ ],
423
+
424
+ // 2. Tool Overrides (Wrapping built-in browser_eval)
425
+ overrides: [
426
+ {
427
+ name: "browser_eval",
428
+ description: "Enhanced browser_eval with pre-execution safety filters",
429
+ schema: {
430
+ expression: z.string().describe("JavaScript expression"),
431
+ },
432
+ handler: async (args, session, config, originalHandler) => {
433
+ if (args.expression.includes("localStorage.clear()")) {
434
+ throw new Error("[SECURITY] localStorage wiping blocked by eval_plus");
435
+ }
436
+ if (originalHandler) {
437
+ return await originalHandler(args, session, config);
438
+ }
439
+ return { success: true };
440
+ },
441
+ },
442
+ ],
443
+
444
+ // 3. Tool Removals
445
+ removeTools: ["browser_inspect"],
446
+
447
+ // 4. Lifecycle Hooks
448
+ onLoad: async () => {
449
+ process.stderr.write("[eval_plus] Initialized sandbox engine successfully.\n");
450
+ },
451
+ onUnload: async () => {
452
+ process.stderr.write("[eval_plus] Sandbox engine cleaned up.\n");
453
+ },
454
+ };
455
+
456
+ function compileTS(tsCode: string): string {
457
+ // Simple transpile logic or compiler integration
458
+ return tsCode;
459
+ }
460
+ ```
461
+
462
+ ### Step 4: Generate Manifest
463
+ Run `npx weavetab init` or create `weavetab.json`:
464
+ ```json
465
+ {
466
+ "$schema": "https://weavetab.dev/schema/plugin.json",
467
+ "name": "eval_plus",
468
+ "version": "1.0.0",
469
+ "description": "Enhanced evaluation with TypeScript and sandbox support",
470
+ "authors": [
471
+ {
472
+ "name": "Acme Security Labs",
473
+ "role": "Lead Architect",
474
+ "url": "https://github.com/acme"
475
+ }
476
+ ],
477
+ "permissions": {
478
+ "network": {
479
+ "domains": ["*.acme.corp"],
480
+ "reason": "Required to transpile TypeScript compiler modules on-demand"
481
+ },
482
+ "cdp": {
483
+ "evaluate": true,
484
+ "click": true,
485
+ "reason": "Required to inject transpiled bytecode into isolated CDP contexts"
486
+ }
487
+ }
488
+ }
489
+ ```
490
+
491
+ ### Step 5: Build and Validate Plugin
492
+ ```bash
493
+ npx weavetab build
494
+ ```
495
+ This runs TypeScript compilation, introspects exported MCP tools, audits permissions, and verifies manifest integrity.
496
+
497
+ In your Weavetab project directory:
498
+ ```bash
499
+ npm link eval_plus
500
+ wt plugin list
501
+ ```
502
+
503
+ ---
504
+
505
+ ## 7. Performance Profiling via `devMode`
506
+
507
+ To benchmark plugin performance and ensure sub-millisecond execution overhead:
508
+
509
+ 1. Enable Developer Mode: `WEAVETAB_DEV=1 wt start` (or set `"devMode": true` in `~/.weavetab/config.json`).
510
+ 2. Run your tool.
511
+ 3. Weavetab measures and records execution duration in real time:
512
+ ```json
513
+ {
514
+ "success": true,
515
+ "execution_ms": 14,
516
+ "result": { ... }
517
+ }
518
+ ```
519
+ 4. Check real-time HUD telemetry inside the attached Chrome browser to inspect WebSocket latency, DOM mutation counts, and memory footprint.
520
+
521
+ ---
522
+
523
+ ## 8. Publishing & Verification
524
+
525
+ 1. **Publish to NPM**:
526
+ ```bash
527
+ npm publish --access public
528
+ ```
529
+ 2. **Submit for Community Verification**:
530
+ Submit a Pull Request to [Weavetab Community Registry](https://github.com/weavetab/registry) adding your package name to `verified.json`:
531
+ ```json
532
+ [
533
+ "eval_plus",
534
+ "github-automation",
535
+ "vision-accessibility"
536
+ ]
537
+ ```
538
+ 3. Once reviewed and merged by the Weavetab maintainers, your plugin will automatically receive the `✔ [Verified]` badge across all Weavetab CLI installations worldwide.
package/docs/TOOLS.md ADDED
@@ -0,0 +1,104 @@
1
+ # Weavetab MCP Tool Reference
2
+
3
+ > **Version:** 2.5.0 | **Total Registered Tools:** 45 | **Architecture:** Layer 0 Direct CDP & Extension Bridge
4
+
5
+ Weavetab provides 45 production-grade MCP tools engineered for browser automation, GitHub repository analysis, Office document parsing, and deep web inspection.
6
+
7
+ ---
8
+
9
+ ## Tool Directory
10
+
11
+ | # | Tool Name | Category | Description | Key Capabilities & Parameters |
12
+ | :--- | :--- | :--- | :--- | :--- |
13
+ | 1 | `browser_map` | `vision` | DOM tree snapshotter with volatile ref IDs (`w:NN`). For complex SPAs, supports delta diffing, semantic pruning, and AX tree fallback. | `delta: boolean` (up to 97% token reduction), `scope: string`, `query: string`, `force: boolean` |
14
+ | 2 | `browser_navigate` | `navigation` | Navigates to a URL with blocklist checks, network idle wait, and `weavetab://` scheme support. | `url: string`, `timeoutMs?: number` |
15
+ | 3 | `browser_click` | `input` | Physical click engine using Bézier curve kinematics (Ghost Cursor) and multi-stage fallback targeting (`ref` -> `selector` -> `label` -> `intent` -> `coords`). | `ref?: string`, `selector?: string`, `label?: string`, `coords?: [number, number]` |
16
+ | 4 | `browser_type` | `input` | Keystroke dispatch with humanized temporal jitter, stuck-input monitoring, and `clearFirst` support. | `ref?: string`, `text: string`, `clearFirst?: boolean` |
17
+ | 5 | `browser_type_secret` | `input` | Blind credential injection from environment variables or secrets store without exposing values to LLM context (`[REDACTED]`). | `envVar: string`, `ref?: string`, `selector?: string` |
18
+ | 6 | `browser_key` | `input` | Presses native key combinations (Ctrl, Alt, Shift, Meta, Enter, Tab, Escape, etc.). | `key: string`, `modifiers?: string[]` |
19
+ | 7 | `browser_scroll` | `input` | Smooth directional scrolling or scroll-to-element centering via CDP wheel events. | `direction?: "down" \| "up" \| "left" \| "right"`, `amount?: number`, `ref?: string` |
20
+ | 8 | `browser_dialog` | `dialog` | Accepts, dismisses, or responds to JS `alert`, `confirm`, and `prompt` dialogs. | `action: "accept" \| "dismiss"`, `promptText?: string` |
21
+ | 9 | `browser_burst` | `execution` | Atomic multi-step action pipeline execution in a single JSON-RPC round-trip. | `steps: Array<MacroStep>` (`navigate_and_read`, `type_and_send`, `click_and_wait`, etc.) |
22
+ | 10 | `browser_tabs` | `tabs` | Full tab and window CRUD lifecycle management (open, switch, close, list, consolidate, heal). | `action: "list" \| "open" \| "switch" \| "close" \| "consolidate" \| "heal" \| "list_windows" \| "focus_window"`, `url?: string`, `tabId?: number` |
23
+ | 11 | `browser_wait` | `navigation` | Pause until DOM element, text, URL, network idle, or DOM stability condition is met. | `condition: "element" \| "text" \| "url" \| "stable" \| "network" \| "auto"`, `target?: string`, `timeoutMs?: number` |
24
+ | 12 | `browser_captcha` | `security` | Autonomous detection and solving of turnstile, reCAPTCHA, and hCaptcha challenges. | `action: "detect" \| "solve" \| "status"`, `timeoutMs?: number` |
25
+ | 13 | `browser_thoughts` | `overlay` | Visual agent-to-user status HUD overlay (feedback banner or interactive question box). | `mode: "feedback" \| "question"`, `message: string`, `options?: string[]` |
26
+ | 14 | `browser_pointer` | `input` | Precision mouse pointer control including hover flyout triggers and drag-and-drop. | `action: "hover" \| "click" \| "double_click" \| "drag_and_drop"`, `ref?: string`, `targetRef?: string`, `waitForChild?: boolean` |
27
+ | 15 | `browser_select` | `input` | Selects native dropdown options by text or value, firing framework-safe synthetic events. | `ref?: string`, `value?: string`, `label?: string` |
28
+ | 16 | `browser_fill` | `input` | Smart multi-field form completion across text inputs, radios, checkboxes, and dropdowns. | `fields: Array<{ ref?: string, selector?: string, value: string }>` |
29
+ | 17 | `browser_plan` | `overlay` | Real-time task dashboard HUD panel rendered inside isolated Shadow DOM overlay. | `action: "create" \| "update" \| "clear"`, `tasks?: Array<{ id: string, title: string, status: "pending" \| "in_progress" \| "done" \| "failed" }>` |
30
+ | 18 | `browser_highlight` | `overlay` | Temporary visual CDP overlay highlights over target elements without DOM mutations. | `ref?: string`, `selector?: string`, `color?: string`, `durationMs?: number` |
31
+ | 19 | `browser_upload` | `input` | Direct file input upload bypassing OS file pickers via CDP `DOM.setFileInputFiles`. | `ref?: string`, `selector?: string`, `files: string[]` |
32
+ | 20 | `browser_find` | `vision` | Sub-5ms CDP text search without full DOM walk overhead. Zero token waste. | `query: string`, `caseSensitive?: boolean` |
33
+ | 21 | `browser_storage` | `storage` | Key-value store management for `localStorage` and `sessionStorage`. | `action: "get" \| "set" \| "clear" \| "remove"`, `type: "local" \| "session"`, `key?: string`, `value?: string` |
34
+ | 22 | `browser_network_intercept` | `network` | Request mocking, URL pattern blocking, and network timing/TLS diagnostic extraction. | `action: "mock" \| "block" \| "clear" \| "get_logs"`, `pattern?: string`, `response?: object` |
35
+ | 23 | `browser_console` | `inspection` | Sub-5ms access to buffered console API outputs, exceptions, and network errors. | `action: "get" \| "clear"`, `minLevel?: "log" \| "warn" \| "error"` |
36
+ | 24 | `browser_pdf` | `output` | Generates a PDF printout of the active page with layout and page range controls. | `landscape?: boolean`, `printBackground?: boolean`, `pageRanges?: string`, `outputPath?: string` |
37
+ | 25 | `browser_eval` | `evaluation` | Evaluates arbitrary JavaScript expressions directly in the main frame JS context. | `expression: string`, `awaitPromise?: boolean` |
38
+ | 26 | `browser_cookies` | `storage` | Full CRUD operations for browser cookies via CDP Network domain. | `action: "get" \| "set" \| "clear" \| "remove"`, `name?: string`, `value?: string`, `domain?: string` |
39
+ | 27 | `browser_canvas` | `vision` | Export canvas pixel data as Base64 PNG or execute coordinate gesture paths on charts/games. | `action: "get_image" \| "draw"`, `ref?: string`, `path?: Array<[number, number]>` |
40
+ | 28 | `browser_scrape` | `vision` | High-speed structured data extraction via CSS or XPath selectors in a single evaluation step. | `selector: string`, `attributes?: string[]`, `isXpath?: boolean` |
41
+ | 29 | `browser_snapshot` | `vision` | Capture or restore an MHTML snapshot (DOM + inline assets) for offline archival or verification. | `action: "capture" \| "restore"`, `filePath?: string` |
42
+ | 30 | `browser_screenshot` | `vision` | Visual screenshot capture in PNG or JPEG format with full-page and bounding box support. | `fullPage?: boolean`, `format?: "png" \| "jpeg"`, `quality?: number`, `clip?: object` |
43
+ | 31 | `browser_viewport` | `emulation` | Viewport dimensions, device scale factor, touch support, geolocation, and locale overrides. | `width?: number`, `height?: number`, `deviceScaleFactor?: number`, `isMobile?: boolean` |
44
+ | 32 | `browser_clipboard` | `interaction` | Plaintext and Base64 image reading/writing to the system clipboard. | `action: "read" \| "write"`, `text?: string` |
45
+ | 33 | `browser_inspect` | `inspection` | Deep DOM element inspection returning computed styles, box model, and attached event listeners. | `ref?: string`, `selector?: string` |
46
+ | 34 | `browser_automation` | `execution` | Injects self-running background tracking scripts into the page context. | `action: "inject" \| "remove" \| "list"`, `scriptName: string`, `code?: string` |
47
+ | 35 | `browser_recording` | `output` | Records browser session video screencasts into `.webp`, `.gif`, `.webm`, or `.mp4`. | `action: "start" \| "stop" \| "status"`, `fps?: number`, `format?: "webp" \| "gif" \| "webm" \| "mp4"` |
48
+ | 36 | `browser_reset_loop_counter` | `safety` | Resets the repetitive action strike counter to zero for long-running workflows. | `reason: string` |
49
+ | 37 | `browser_detect` | `system` | Detects installed local browsers and reports CDP feature support matrices across engines. | `target?: "chromium" \| "firefox" \| "webkit" \| "all"` |
50
+ | 38 | `browser_performance` | `performance` | Retrieves Core Web Vitals (FCP, LCP, CLS) and network resource timing breakdowns. | `includeResourceTimings?: boolean` |
51
+ | 39 | `browser_macro_compile` | `macro` | Compiles recent action trails into reusable `browser_burst` macro sequences. | `maxSteps?: number`, `macroName?: string` |
52
+ | 40 | `github_analyze` | `github` | Analyzes GitHub repository structure, file trees, and README content without API rate limits. | `owner: string`, `repo: string`, `branch?: string` |
53
+ | 41 | `github_read` | `github` | Reads raw file contents from public or private GitHub repositories. | `owner: string`, `repo: string`, `path: string`, `ref?: string` |
54
+ | 42 | `github_issues` | `github` | Lists, searches, and fetches GitHub issue details and discussion threads. | `owner: string`, `repo: string`, `action: "list" \| "get" \| "search"`, `issueNumber?: number` |
55
+ | 43 | `github_get_pr` | `github` | Inspects GitHub Pull Requests including changed files, diffs, and review comments. | `owner: string`, `repo: string`, `prNumber: number` |
56
+ | 44 | `browser_office` | `office` | Parses and extracts structured content/tables from Word (`.docx`), Excel (`.xlsx`), and PDF documents. | `action: "parse" \| "list" \| "search"`, `filePath: string` |
57
+ | 45 | `browser_emulate` | `emulation` | Advanced network throttling, offline mode, user-agent spoofing, and CPU throttling. | `networkProfile?: "offline" \| "3g_slow" \| "3g_fast" \| "4g"`, `cpuThrottlingRate?: number`, `userAgent?: string` |
58
+
59
+ ---
60
+
61
+ ## Detailed Tool Guidance & Examples
62
+
63
+ ### 1. High-Efficiency Data Extraction
64
+ When extracting tabular data or structured text from a webpage, prefer **`browser_scrape`** or **`browser_find`** over `browser_map` to save 95%+ context tokens:
65
+ ```json
66
+ {
67
+ "name": "browser_scrape",
68
+ "arguments": {
69
+ "selector": "table.pricing-table tr",
70
+ "attributes": ["innerText", "data-plan-id"]
71
+ }
72
+ }
73
+ ```
74
+
75
+ ### 2. Multi-Action Pipeline Chaining
76
+ To reduce JSON-RPC transport overhead, chain repetitive form inputs and navigations into a single **`browser_burst`** request:
77
+ ```json
78
+ {
79
+ "name": "browser_burst",
80
+ "arguments": {
81
+ "steps": [
82
+ { "action": "navigate_and_read", "url": "https://example.com/login" },
83
+ { "action": "type_and_send", "ref": "w:12", "text": "user@example.com" },
84
+ { "action": "click_and_wait", "ref": "w:15" }
85
+ ]
86
+ }
87
+ }
88
+ ```
89
+
90
+ ### 3. Blind Credential Injection
91
+ For enterprise security, inject secrets without exposing raw password text to the AI model logs or context stream:
92
+ ```json
93
+ {
94
+ "name": "browser_type_secret",
95
+ "arguments": {
96
+ "envVar": "WORKFLOW_AUTH_TOKEN",
97
+ "selector": "#api-key-input"
98
+ }
99
+ }
100
+ ```
101
+
102
+ ---
103
+
104
+ *Updated & verified for Weavetab v2.5.0.*