@weavetab/mcp 2.5.0-beta.5 → 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 (160) hide show
  1. package/AGENTS.md +49 -49
  2. package/ARCHITECTURE.md +590 -590
  3. package/README.md +216 -100
  4. package/SECURITY.md +207 -207
  5. package/TROUBLESHOOTING.md +373 -365
  6. package/dist/anticaptcha/detector.js +395 -395
  7. package/dist/anticaptcha/solver.js +130 -130
  8. package/dist/cdp/bridge.js +73 -73
  9. package/dist/cdp/connector.js +46 -22
  10. package/dist/cdp/extension.js +34 -34
  11. package/dist/cdp/helpers.js +174 -174
  12. package/dist/cdp/pruner.js +195 -195
  13. package/dist/cdp/ref_cache.js +66 -66
  14. package/dist/cdp/security.js +10 -10
  15. package/dist/cdp/verify.js +57 -57
  16. package/dist/cdp/walker.js +563 -525
  17. package/dist/cli/plugin.js +26 -3
  18. package/dist/config/loader.d.ts +0 -3
  19. package/dist/config/loader.js +0 -9
  20. package/dist/index.js +0 -4
  21. package/dist/intelligence/intent.js +81 -81
  22. package/dist/intelligence/sessionMemory.js +2 -2
  23. package/dist/overlay/ghost.js +22 -22
  24. package/dist/overlay/injector.js +89 -89
  25. package/dist/plugin/extension_bridge.js +54 -54
  26. package/dist/plugin/interface.d.ts +7 -0
  27. package/dist/plugin/loader.js +3 -4
  28. package/dist/plugin/schema.d.ts +11 -0
  29. package/dist/plugin/schema.js +59 -0
  30. package/dist/security/guard.js +18 -18
  31. package/dist/sensors/actionability.js +167 -167
  32. package/dist/sensors/guard.js +29 -29
  33. package/dist/sensors/network.js +15 -17
  34. package/dist/server.d.ts +1 -1
  35. package/dist/server.js +173 -144
  36. package/dist/state/delta.js +6 -7
  37. package/dist/tools/automation.js +85 -85
  38. package/dist/tools/canvas.js +48 -25
  39. package/dist/tools/checkpoint.js +94 -35
  40. package/dist/tools/click.js +52 -41
  41. package/dist/tools/clipboard.js +80 -74
  42. package/dist/tools/design_extract.js +441 -441
  43. package/dist/tools/dialog.js +13 -13
  44. package/dist/tools/emulation.d.ts +2 -0
  45. package/dist/tools/emulation.js +7 -0
  46. package/dist/tools/fill.js +344 -347
  47. package/dist/tools/find.js +78 -52
  48. package/dist/tools/highlight.js +67 -67
  49. package/dist/tools/inspect.js +54 -25
  50. package/dist/tools/key.js +42 -35
  51. package/dist/tools/navigate.d.ts +1 -1
  52. package/dist/tools/navigate.js +35 -35
  53. package/dist/tools/office/parse.js +62 -18
  54. package/dist/tools/pdf.d.ts +9 -0
  55. package/dist/tools/pdf.js +7 -4
  56. package/dist/tools/performance.d.ts +11 -4
  57. package/dist/tools/performance.js +94 -42
  58. package/dist/tools/performance_test.d.ts +2 -2
  59. package/dist/tools/performance_test.js +69 -69
  60. package/dist/tools/pointer.js +116 -116
  61. package/dist/tools/read.js +99 -67
  62. package/dist/tools/recording.js +9 -0
  63. package/dist/tools/scrape.js +146 -146
  64. package/dist/tools/screenshot.d.ts +2 -0
  65. package/dist/tools/screenshot.js +46 -4
  66. package/dist/tools/scroll.d.ts +3 -1
  67. package/dist/tools/scroll.js +13 -15
  68. package/dist/tools/select.d.ts +3 -0
  69. package/dist/tools/select.js +131 -124
  70. package/dist/tools/snapshot.js +8 -6
  71. package/dist/tools/storage.d.ts +5 -1
  72. package/dist/tools/storage.js +16 -0
  73. package/dist/tools/tabs.d.ts +7 -5
  74. package/dist/tools/tabs.js +79 -26
  75. package/dist/tools/thought.js +8 -8
  76. package/dist/tools/type.js +274 -274
  77. package/dist/tools/type_secret.js +23 -23
  78. package/dist/tools/upload.js +3 -3
  79. package/dist/tools/video_compiler.js +9 -0
  80. package/dist/tools/wait.js +35 -35
  81. package/dist/version.d.ts +1 -1
  82. package/dist/version.js +1 -1
  83. package/docs/DOCUMENTATION.md +583 -585
  84. package/docs/PLUGINS.md +139 -121
  85. package/docs/TOOLS.md +3 -4
  86. package/docs/architecture/blind-injection.md +83 -83
  87. package/docs/architecture/overview.md +49 -49
  88. package/docs/configuration/configuration.md +39 -27
  89. package/docs/configuration/folders.md +62 -55
  90. package/docs/desktop-automation/electron-apps.md +225 -214
  91. package/docs/get-started/installation.md +1 -1
  92. package/docs/get-started/introduction.md +60 -60
  93. package/docs/get-started/quickstart.md +2 -2
  94. package/docs/get-started/setup-wizard.md +1 -1
  95. package/docs/intelligence/site-profiles.md +151 -151
  96. package/docs/tools/tools.md +582 -631
  97. package/docs/troubleshooting/trouble-loop.md +31 -31
  98. package/ext-dist/background.js +415 -415
  99. package/ext-dist/content.js +2527 -2527
  100. package/ext-dist/dashboard.html +583 -583
  101. package/ext-dist/hud/hud.js +3 -3
  102. package/ext-dist/hud/index.html +20 -20
  103. package/ext-dist/manifest.json +73 -73
  104. package/ext-dist/styles.css +223 -223
  105. package/mcp.json +796 -805
  106. package/package.json +8 -8
  107. package/server.json +23 -23
  108. package/smithery.yaml +7 -11
  109. package/dist/cdp/walker.test.d.ts +0 -2
  110. package/dist/cdp/walker.test.js +0 -172
  111. package/dist/intelligence/sessionMemory.test.d.ts +0 -2
  112. package/dist/intelligence/sessionMemory.test.js +0 -62
  113. package/dist/intelligence/trail.test.d.ts +0 -2
  114. package/dist/intelligence/trail.test.js +0 -110
  115. package/dist/state/cache.test.d.ts +0 -2
  116. package/dist/state/cache.test.js +0 -76
  117. package/dist/state/delta.test.d.ts +0 -2
  118. package/dist/state/delta.test.js +0 -279
  119. package/dist/state/groups.d.ts +0 -15
  120. package/dist/state/groups.js +0 -80
  121. package/dist/tools/accessibility.d.ts +0 -14
  122. package/dist/tools/accessibility.js +0 -32
  123. package/dist/tools/ask.d.ts +0 -14
  124. package/dist/tools/ask.js +0 -49
  125. package/dist/tools/click_and_wait.d.ts +0 -33
  126. package/dist/tools/click_and_wait.js +0 -149
  127. package/dist/tools/drag.d.ts +0 -15
  128. package/dist/tools/drag.js +0 -29
  129. package/dist/tools/geo.d.ts +0 -19
  130. package/dist/tools/geo.js +0 -29
  131. package/dist/tools/github/analyze.d.ts +0 -4
  132. package/dist/tools/github/analyze.js +0 -113
  133. package/dist/tools/github/cache.d.ts +0 -21
  134. package/dist/tools/github/cache.js +0 -28
  135. package/dist/tools/github/index.d.ts +0 -19
  136. package/dist/tools/github/index.js +0 -40
  137. package/dist/tools/github/issues.d.ts +0 -9
  138. package/dist/tools/github/issues.js +0 -88
  139. package/dist/tools/github/pr.d.ts +0 -5
  140. package/dist/tools/github/pr.js +0 -88
  141. package/dist/tools/github/rateLimiter.d.ts +0 -4
  142. package/dist/tools/github/rateLimiter.js +0 -46
  143. package/dist/tools/github/read.d.ts +0 -34
  144. package/dist/tools/github/read.js +0 -74
  145. package/dist/tools/github/repoContext.d.ts +0 -20
  146. package/dist/tools/github/repoContext.js +0 -129
  147. package/dist/tools/hover.d.ts +0 -19
  148. package/dist/tools/hover.js +0 -57
  149. package/dist/tools/integration.test.d.ts +0 -2
  150. package/dist/tools/integration.test.js +0 -96
  151. package/dist/tools/macro_compiler.d.ts +0 -7
  152. package/dist/tools/macro_compiler.js +0 -82
  153. package/dist/tools/mouse.d.ts +0 -21
  154. package/dist/tools/mouse.js +0 -62
  155. package/dist/tools/response.d.ts +0 -129
  156. package/dist/tools/response.js +0 -5
  157. package/dist/tools/wait_for.d.ts +0 -23
  158. package/dist/tools/wait_for.js +0 -30
  159. package/dist/tools/windows.d.ts +0 -22
  160. package/dist/tools/windows.js +0 -57
@@ -1,60 +1,60 @@
1
- ---
2
- title: "Introduction"
3
- description: "What Weavetab is, Layer 0 CDP architecture, and design tenets."
4
- product: mcp
5
- section: get-started
6
- icon: BookOpen
7
- slug: introduction
8
- ---
9
-
10
- # Introduction
11
-
12
- Weavetab is a production-grade, local **Model Context Protocol (MCP) server** that grants AI agents human-like control over Chromium browsers and native **Electron desktop applications** (VS Code, Discord, Slack, Figma, Obsidian, Postman, Antigravity IDE, etc.) — communicating directly over the **Chrome DevTools Protocol (CDP)** at Layer 0.
13
-
14
- No WebDriver. No browser binary downloads. No Playwright or Puppeteer abstraction layer. No cloud dependency. Tool invocations resolve in **3–8 ms** of mean latency.
15
-
16
- ## Synchronized Ecosystem Releases
17
-
18
- Both **`@weavetab/mcp`** and the **`@weavetab/sdk`** share synchronized release lines. Every capability introduced in the core runtime is immediately available in the developer SDK with 100% type safety and zero version mismatch.
19
-
20
- ```bash
21
- # Install core Weavetab MCP server globally
22
- npm install -g @weavetab/mcp@latest
23
-
24
- # Or run directly via npx
25
- npx -y @weavetab/mcp@latest
26
-
27
- # Install Weavetab Developer SDK as a dev dependency
28
- npm install -D @weavetab/sdk@latest
29
- ```
30
-
31
- ## Design Tenets
32
-
33
- | Tenet | Implementation |
34
- |---|---|
35
- | **Ultra-Low Latency** | Sub-10 ms tool execution via direct CDP WebSocket connections |
36
- | **Universal Control** | Native orchestration across Chromium web tabs and any Electron desktop app |
37
- | **Autonomous CAPTCHA** | Zero-API solving (Cloudflare Turnstile, GeeTest, reCAPTCHA) via human Bézier mouse physics |
38
- | **Security & RBAC** | 4-tier RBAC + domain policies + Blind Credential Injection + profile isolation |
39
- | **Token Efficiency** | Semantic Delta diffing (up to 97% reduction) + intelligent DOM pruning |
40
- | **Stealth & Physics** | Ghost Cursor (Bézier curves), human typing jitter, and CDP early-script fingerprint spoofing |
41
- | **Self-Learning** | Per-domain session memory, framework detection, and automated loop recovery |
42
- | **Zero Cloud** | Pure local computation. No external telemetry or cloud tracking unless explicitly opted in |
43
-
44
- ## What You Get
45
-
46
- - **44 built-in MCP tools** covering DOM vision, input synthesis, desktop apps, tabs, network interception, office files, design extraction, and plugin lifecycle
47
- - **Universal Desktop App Runtime** — control Chrome and native Electron apps (Discord, Figma, VS Code) side-by-side without port conflicts
48
- - **Autonomous Zero-API CAPTCHA Solver** — solve Cloudflare Turnstile, GeeTest, and reCAPTCHA locally via CDP mouse physics with $0 API costs
49
- - **Two transport modes** — stdio (Claude Desktop, Cursor, VS Code, Windsurf, Antigravity) and WebSocket (`weavetab --ws --port 3000`)
50
- - **Five RBAC roles** — `admin`, `operator`, `viewer`, `automation`, and `system`
51
- - **Per-domain policies** — ring-fences sensitive banking, internal, and production surfaces
52
- - **Blind Injection** — credentials resolved server-side from `secrets.json` and never exposed to the LLM
53
- - **Extensible Plugin System** — auto-discovers and mounts custom MCP tools from `node_modules`
54
-
55
- ## Next Steps
56
-
57
- - **[Quickstart](quickstart.md)** — install and run a first mission in 60 seconds
58
- - **[Desktop & Electron Apps](../desktop-automation/electron-apps.md)** — configure and control desktop apps
59
- - **[Autonomous CAPTCHA Solver](../captcha-stealth/captcha-solver.md)** — zero-API anti-bot solving
60
- - **[MCP Tools Reference](../tools/tools.md)** — full reference for all 44 built-in automation tools
1
+ ---
2
+ title: "Introduction"
3
+ description: "What Weavetab is, Layer 0 CDP architecture, and design tenets."
4
+ product: mcp
5
+ section: get-started
6
+ icon: BookOpen
7
+ slug: introduction
8
+ ---
9
+
10
+ # Introduction
11
+
12
+ Weavetab is a production-grade, local **Model Context Protocol (MCP) server** that grants AI agents human-like control over Chromium browsers and native **Electron desktop applications** (VS Code, Discord, Slack, Figma, Obsidian, Postman, Antigravity IDE, etc.) — communicating directly over the **Chrome DevTools Protocol (CDP)** at Layer 0.
13
+
14
+ No WebDriver. No browser binary downloads. No Playwright or Puppeteer abstraction layer. No cloud dependency. Tool invocations resolve in **3–8 ms** of mean latency.
15
+
16
+ ## Synchronized Ecosystem Releases
17
+
18
+ Both **`@weavetab/mcp`** and the **`@weavetab/sdk`** share synchronized release lines. Every capability introduced in the core runtime is immediately available in the developer SDK with 100% type safety and zero version mismatch.
19
+
20
+ ```bash
21
+ # Install core Weavetab MCP server globally
22
+ npm install -g @weavetab/mcp@latest
23
+
24
+ # Or run directly via npx
25
+ npx -y @weavetab/mcp@latest
26
+
27
+ # Install Weavetab Developer SDK as a dev dependency
28
+ npm install -D @weavetab/sdk@latest
29
+ ```
30
+
31
+ ## Design Tenets
32
+
33
+ | Tenet | Implementation |
34
+ |---|---|
35
+ | **Ultra-Low Latency** | Sub-10 ms tool execution via direct CDP WebSocket connections |
36
+ | **Universal Control** | Native orchestration across Chromium web tabs and any Electron desktop app |
37
+ | **Autonomous CAPTCHA** | Zero-API solving (Cloudflare Turnstile, GeeTest, reCAPTCHA) via human Bézier mouse physics |
38
+ | **Security & RBAC** | 5-tier RBAC + domain policies + Blind Credential Injection + profile isolation |
39
+ | **Token Efficiency** | Semantic Delta diffing (up to 97% reduction) + intelligent DOM pruning |
40
+ | **Stealth & Physics** | Ghost Cursor (Bézier curves), human typing jitter, and CDP early-script fingerprint spoofing |
41
+ | **Self-Learning** | Per-domain session memory, framework detection, and automated loop recovery |
42
+ | **Zero Cloud** | Pure local computation. No external telemetry or cloud tracking unless explicitly opted in |
43
+
44
+ ## What You Get
45
+
46
+ - **41 built-in MCP tools** covering DOM vision, input synthesis, desktop apps, tabs, network interception, office files, design extraction, and plugin lifecycle
47
+ - **Universal Desktop App Runtime** — control Chrome and native Electron apps (Discord, Figma, VS Code) side-by-side without port conflicts
48
+ - **Autonomous Zero-API CAPTCHA Solver** — solve Cloudflare Turnstile, GeeTest, and reCAPTCHA locally via CDP mouse physics with $0 API costs
49
+ - **Two transport modes** — stdio (Claude Desktop, Cursor, VS Code, Windsurf, Antigravity) and WebSocket (`weavetab --ws --port 3000`)
50
+ - **Five RBAC roles** — `admin`, `operator`, `viewer`, `automation`, and `system`
51
+ - **Per-domain policies** — ring-fences sensitive banking, internal, and production surfaces
52
+ - **Blind Injection** — credentials resolved server-side from `secrets.json` and never exposed to the LLM
53
+ - **Extensible Plugin System** — auto-discovers and mounts custom MCP tools from `node_modules`
54
+
55
+ ## Next Steps
56
+
57
+ - **[Quickstart](quickstart.md)** — install and run a first mission in 60 seconds
58
+ - **[Desktop & Electron Apps](../desktop-automation/electron-apps.md)** — configure and control desktop apps
59
+ - **[Autonomous CAPTCHA Solver](../captcha-stealth/captcha-solver.md)** — zero-API anti-bot solving
60
+ - **[MCP Tools Reference](../tools/tools.md)** — full reference for all 41 built-in automation tools
@@ -44,8 +44,8 @@ Use `browser_burst` to chain multiple actions in a single round-trip:
44
44
  "name": "browser_burst",
45
45
  "arguments": {
46
46
  "steps": [
47
- { "action": "navigate_and_read", "url": "https://example.com" },
48
- { "action": "click_and_wait", "selector": "#login-btn" }
47
+ { "tool": "navigate_and_read", "url": "https://example.com" },
48
+ { "tool": "click_and_wait", "selector": "#login-btn" }
49
49
  ]
50
50
  }
51
51
  }
@@ -19,7 +19,7 @@ The wizard walks through every option across 6 interactive phases. Re-run it at
19
19
 
20
20
  ## Wizard Phases
21
21
 
22
- 1. **Phase 1 — Essentials:** Browser path, RBAC role (`admin`, `viewer`, `automation`), headless mode, dev mode, max tabs, actionability timeout, domain block/allow lists.
22
+ 1. **Phase 1 — Essentials:** Browser path, RBAC role (`admin`, `operator`, `viewer`, `automation`), headless mode, dev mode, max tabs, actionability timeout, domain block/allow lists.
23
23
  2. **Phase 2 — Advanced (optional):** Browser engine selection, timeouts and rate limits, telemetry opt-in, download/proxy directories, domain policy entries.
24
24
  3. **Phase 3 — Save Location:** Global (`~/.weavetab/config.json`).
25
25
  4. **Phase 4 — MCP Auto-Config:** Auto-detects installed IDEs (Claude Desktop, Cursor, Windsurf) and merges Weavetab into their MCP configuration.
@@ -1,151 +1,151 @@
1
- ---
2
- title: "Site Profiles and Intelligent Memory"
3
- description: "Persistent cross-session workflow memory, pattern compilation, and quirk bypass in ~/.weavetab-system/memory/sites/."
4
- product: mcp
5
- section: intelligence
6
- icon: Brain
7
- slug: site-profiles
8
- ---
9
-
10
- # Site Profiles and Intelligent Memory Engine
11
-
12
- Every browser automation session normally starts from zero context. The agent re-inspects DOM trees, re-triggers cookie banners, and re-discovers login fields.
13
-
14
- Weavetab solves this with a **Two-Tier Persistent Memory System** that accumulates knowledge about domains and workflows across sessions.
15
-
16
- ---
17
-
18
- ## Directory Hierarchy: System vs. User Space
19
-
20
- | Directory | Purpose | Managed By |
21
- | :--- | :--- | :--- |
22
- | `~/.weavetab-system/memory/sites/` | **Persistent Site Profiles**: named workflow patterns, quirks, reliability scores | Weavetab Engine (autonomous) |
23
- | `~/.weavetab-system/memory/` | **Selector Confidence Cache**: per-domain element selectors and strike counters | Weavetab Engine (autonomous) |
24
- | `~/.weavetab-system/sessions/` | **Rolling Action Trails**: 50-step window for loop detection | Weavetab Engine (autonomous) |
25
- | `~/.weavetab/` | **User Configuration**: `config.json`, `secrets.json`, `policy.json`, plugins | User / Developer (manual) |
26
-
27
- > **Directory Law**: Machine-compiled memory profiles are strictly located in `~/.weavetab-system/memory/sites/`. User configuration in `~/.weavetab/` is never polluted by machine learning trails or dynamic decay counters.
28
-
29
- ---
30
-
31
- ## Site Profile Schema
32
-
33
- Profiles are stored as `<sanitized-hostname>.json` under `~/.weavetab-system/memory/sites/`:
34
-
35
- ```json
36
- {
37
- "origin": "https://github.com",
38
- "framework": "react",
39
- "shadowDom": false,
40
- "captcha_frequency": "rare",
41
- "quirks": {
42
- "cookie_banner": {
43
- "selector": "#cookie-consent",
44
- "action": "click .accept-all",
45
- "appears": "first_visit"
46
- },
47
- "rate_limit": {
48
- "threshold": "60req/min",
49
- "recovery": "wait 30s"
50
- }
51
- },
52
- "patterns": {
53
- "login_flow": {
54
- "name": "login_flow",
55
- "steps": [
56
- { "tool": "browser_navigate", "target": "https://github.com/login" },
57
- { "tool": "browser_fill", "target": "#login_field", "value": "{{username}}" },
58
- { "tool": "browser_fill", "target": "#password", "value": "{{password}}" },
59
- { "tool": "browser_click", "target": "[type=submit]" }
60
- ],
61
- "success_indicator": "a[aria-label='Homepage']",
62
- "entry": "/login",
63
- "avg_duration_ms": 3200,
64
- "reliability": 0.96,
65
- "strikes": 0,
66
- "last_verified": "2026-09-16T08:00:00.000Z",
67
- "total_executions": 12,
68
- "successful_executions": 12
69
- }
70
- },
71
- "visitCount": 15,
72
- "updatedAt": "2026-09-16T08:00:00.000Z"
73
- }
74
- ```
75
-
76
- ---
77
-
78
- ## The Pattern Compiler
79
-
80
- When an agent executes an automation flow:
81
- 1. **Trail Capture**: Steps are tracked via the lightweight action trail.
82
- 2. **Selector Stabilization**: Volatile CSS hash classes (`[class*="hash-"]`), positional pseudos (`:nth-child`), and deep anonymous structural chains are filtered out. Only semantic selectors (`id`, `data-testid`, semantic attributes, roles) are persisted.
83
- 3. **Merge-on-Write**: Calling `browser_pattern_learn` updates existing patterns in place. Duplicate calls never create duplicate files or duplicate entries.
84
- 4. **Anti-Spam Guard**: If an incoming pattern is identical to stored disk state, the disk write is skipped entirely.
85
-
86
- ---
87
-
88
- ## Reliability Scoring and 3-Strike Degradation
89
-
90
- Each pattern tracks a reliability score (`0.0` to `1.0`) computed via Exponentially Weighted Moving Average (EWMA with $\alpha = 0.15$):
91
-
92
- $$\text{Reliability}_{t} = 0.85 \times \text{Reliability}_{t-1} + 0.15 \times (\text{Success} ? 1 : 0)$$
93
-
94
- ### Decision Thresholds
95
-
96
- - **Fast-Path ($\ge 0.80$)**: Replay stored steps directly via `browser_burst` — skips exploratory DOM navigation entirely.
97
- - **Cautious Replay ($0.50 - 0.79$)**: Replay steps, but verify `success_indicator` after critical steps.
98
- - **Re-Learn ($< 0.50$ or $\ge 3$ consecutive strikes)**: Pattern is flagged `[RE-LEARN NEEDED]`. The agent falls back to fresh DOM exploration, then calls `browser_pattern_learn` to teach the updated steps.
99
-
100
- ---
101
-
102
- ## MCP Tools
103
-
104
- ### `browser_pattern_learn`
105
- All site memory operations use a single tool. Use `action: "get"` to read a site profile, `action: "learn"` to register a workflow, `action: "record_execution"` to update reliability scores, and `action: "record_quirk"` to store site quirks:
106
-
107
- ```json
108
- { "action": "get", "origin": "https://github.com" }
109
- ```
110
-
111
- ```json
112
- {
113
- "origin": "https://github.com",
114
- "action": "learn",
115
- "name": "login_flow",
116
- "steps": [
117
- { "tool": "browser_click", "target": ".btn-login" },
118
- { "tool": "browser_fill", "target": "#login_field", "value": "{{username}}" }
119
- ],
120
- "success_indicator": "a[aria-label='Homepage']"
121
- }
122
- ```
123
-
124
- ---
125
-
126
- ## SDK Plugin Integration (`ctx.memory`)
127
-
128
- Plugin authors can interact with persistent site memory directly via the SDK:
129
-
130
- ```typescript
131
- import { definePlugin } from "@weavetab/sdk";
132
-
133
- export default definePlugin({
134
- name: "custom-site-automator",
135
- async onLoad(ctx) {
136
- // Read current profile
137
- const profile = await ctx.memory?.getSiteProfile("https://github.com");
138
-
139
- // Check reliability
140
- const reliability = await ctx.memory?.getReliability("https://github.com", "login_flow");
141
- if (reliability && reliability >= 0.8) {
142
- ctx.logger.info("Fast-path ready for login_flow");
143
- }
144
-
145
- // Teach a new pattern
146
- await ctx.memory?.learnPattern("https://github.com", "quick_search", {
147
- steps: [{ tool: "browser_fill", target: "input.header-search-input", value: "test" }]
148
- });
149
- }
150
- });
151
- ```
1
+ ---
2
+ title: "Site Profiles and Intelligent Memory"
3
+ description: "Persistent cross-session workflow memory, pattern compilation, and quirk bypass in ~/.weavetab-system/memory/sites/."
4
+ product: mcp
5
+ section: intelligence
6
+ icon: Brain
7
+ slug: site-profiles
8
+ ---
9
+
10
+ # Site Profiles and Intelligent Memory Engine
11
+
12
+ Every browser automation session normally starts from zero context. The agent re-inspects DOM trees, re-triggers cookie banners, and re-discovers login fields.
13
+
14
+ Weavetab solves this with a **Two-Tier Persistent Memory System** that accumulates knowledge about domains and workflows across sessions.
15
+
16
+ ---
17
+
18
+ ## Directory Hierarchy: System vs. User Space
19
+
20
+ | Directory | Purpose | Managed By |
21
+ | :--- | :--- | :--- |
22
+ | `~/.weavetab-system/memory/sites/` | **Persistent Site Profiles**: named workflow patterns, quirks, reliability scores | Weavetab Engine (autonomous) |
23
+ | `~/.weavetab-system/memory/` | **Selector Confidence Cache**: per-domain element selectors and strike counters | Weavetab Engine (autonomous) |
24
+ | `~/.weavetab-system/sessions/` | **Rolling Action Trails**: 50-step window for loop detection | Weavetab Engine (autonomous) |
25
+ | `~/.weavetab/` | **User Configuration**: `config.json`, `secrets.json`, `knowledge/`, plugins | User / Developer (manual) |
26
+
27
+ > **Directory Law**: Machine-compiled memory profiles are strictly located in `~/.weavetab-system/memory/sites/`. User configuration in `~/.weavetab/` is never polluted by machine learning trails or dynamic decay counters.
28
+
29
+ ---
30
+
31
+ ## Site Profile Schema
32
+
33
+ Profiles are stored as `<sanitized-hostname>.json` under `~/.weavetab-system/memory/sites/`:
34
+
35
+ ```json
36
+ {
37
+ "origin": "https://github.com",
38
+ "framework": "react",
39
+ "shadowDom": false,
40
+ "captcha_frequency": "rare",
41
+ "quirks": {
42
+ "cookie_banner": {
43
+ "selector": "#cookie-consent",
44
+ "action": "click .accept-all",
45
+ "appears": "first_visit"
46
+ },
47
+ "rate_limit": {
48
+ "threshold": "60req/min",
49
+ "recovery": "wait 30s"
50
+ }
51
+ },
52
+ "patterns": {
53
+ "login_flow": {
54
+ "name": "login_flow",
55
+ "steps": [
56
+ { "tool": "browser_navigate", "target": "https://github.com/login" },
57
+ { "tool": "browser_fill", "target": "#login_field", "value": "{{username}}" },
58
+ { "tool": "browser_fill", "target": "#password", "value": "{{password}}" },
59
+ { "tool": "browser_click", "target": "[type=submit]" }
60
+ ],
61
+ "success_indicator": "a[aria-label='Homepage']",
62
+ "entry": "/login",
63
+ "avg_duration_ms": 3200,
64
+ "reliability": 0.96,
65
+ "strikes": 0,
66
+ "last_verified": "2026-09-16T08:00:00.000Z",
67
+ "total_executions": 12,
68
+ "successful_executions": 12
69
+ }
70
+ },
71
+ "visitCount": 15,
72
+ "updatedAt": "2026-09-16T08:00:00.000Z"
73
+ }
74
+ ```
75
+
76
+ ---
77
+
78
+ ## The Pattern Compiler
79
+
80
+ When an agent executes an automation flow:
81
+ 1. **Trail Capture**: Steps are tracked via the lightweight action trail.
82
+ 2. **Selector Stabilization**: Volatile CSS hash classes (`[class*="hash-"]`), positional pseudos (`:nth-child`), and deep anonymous structural chains are filtered out. Only semantic selectors (`id`, `data-testid`, semantic attributes, roles) are persisted.
83
+ 3. **Merge-on-Write**: Calling `browser_pattern_learn` updates existing patterns in place. Duplicate calls never create duplicate files or duplicate entries.
84
+ 4. **Anti-Spam Guard**: If an incoming pattern is identical to stored disk state, the disk write is skipped entirely.
85
+
86
+ ---
87
+
88
+ ## Reliability Scoring and 3-Strike Degradation
89
+
90
+ Each pattern tracks a reliability score (`0.0` to `1.0`) computed via Exponentially Weighted Moving Average (EWMA with $\alpha = 0.15$):
91
+
92
+ $$\text{Reliability}_{t} = 0.85 \times \text{Reliability}_{t-1} + 0.15 \times (\text{Success} ? 1 : 0)$$
93
+
94
+ ### Decision Thresholds
95
+
96
+ - **Fast-Path ($\ge 0.80$)**: Replay stored steps directly via `browser_burst` — skips exploratory DOM navigation entirely.
97
+ - **Cautious Replay ($0.50 - 0.79$)**: Replay steps, but verify `success_indicator` after critical steps.
98
+ - **Re-Learn ($< 0.50$ or $\ge 3$ consecutive strikes)**: Pattern is flagged `[RE-LEARN NEEDED]`. The agent falls back to fresh DOM exploration, then calls `browser_pattern_learn` to teach the updated steps.
99
+
100
+ ---
101
+
102
+ ## MCP Tools
103
+
104
+ ### `browser_pattern_learn`
105
+ All site memory operations use a single tool. Use `action: "get"` to read a site profile, `action: "learn"` to register a workflow, `action: "record_execution"` to update reliability scores, and `action: "record_quirk"` to store site quirks:
106
+
107
+ ```json
108
+ { "tool": "get", "origin": "https://github.com" }
109
+ ```
110
+
111
+ ```json
112
+ {
113
+ "origin": "https://github.com",
114
+ "action": "learn",
115
+ "name": "login_flow",
116
+ "steps": [
117
+ { "tool": "browser_click", "target": ".btn-login" },
118
+ { "tool": "browser_fill", "target": "#login_field", "value": "{{username}}" }
119
+ ],
120
+ "success_indicator": "a[aria-label='Homepage']"
121
+ }
122
+ ```
123
+
124
+ ---
125
+
126
+ ## SDK Plugin Integration (`ctx.memory`)
127
+
128
+ Plugin authors can interact with persistent site memory directly via the SDK:
129
+
130
+ ```typescript
131
+ import { definePlugin } from "@weavetab/sdk";
132
+
133
+ export default definePlugin({
134
+ name: "custom-site-automator",
135
+ async onLoad(ctx) {
136
+ // Read current profile
137
+ const profile = await ctx.memory?.getSiteProfile("https://github.com");
138
+
139
+ // Check reliability
140
+ const reliability = await ctx.memory?.getReliability("https://github.com", "login_flow");
141
+ if (reliability && reliability >= 0.8) {
142
+ ctx.logger.info("Fast-path ready for login_flow");
143
+ }
144
+
145
+ // Teach a new pattern
146
+ await ctx.memory?.learnPattern("https://github.com", "quick_search", {
147
+ steps: [{ tool: "browser_fill", target: "input.header-search-input", value: "test" }]
148
+ });
149
+ }
150
+ });
151
+ ```