neuron-inspector 0.8.0 → 1.0.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 (125) hide show
  1. package/README.md +345 -42
  2. package/dist/automations/executor.d.ts +21 -0
  3. package/dist/automations/executor.js +835 -0
  4. package/dist/automations/executor.js.map +1 -0
  5. package/dist/automations/index.d.ts +7 -0
  6. package/dist/automations/index.js +21 -0
  7. package/dist/automations/index.js.map +1 -0
  8. package/dist/automations/store.d.ts +15 -0
  9. package/dist/automations/store.js +193 -0
  10. package/dist/automations/store.js.map +1 -0
  11. package/dist/automations/tools.d.ts +14 -0
  12. package/dist/automations/tools.js +735 -0
  13. package/dist/automations/tools.js.map +1 -0
  14. package/dist/automations/types.d.ts +211 -0
  15. package/dist/automations/types.js +4 -0
  16. package/dist/automations/types.js.map +1 -0
  17. package/dist/business-tools.d.ts +17 -0
  18. package/dist/business-tools.js +3065 -0
  19. package/dist/business-tools.js.map +1 -0
  20. package/dist/collections/__tests__/assertions.test.js +203 -0
  21. package/dist/collections/__tests__/assertions.test.js.map +1 -0
  22. package/dist/collections/__tests__/dynamic-vars.test.d.ts +1 -0
  23. package/dist/collections/__tests__/dynamic-vars.test.js +169 -0
  24. package/dist/collections/__tests__/dynamic-vars.test.js.map +1 -0
  25. package/dist/collections/__tests__/execution.test.d.ts +1 -0
  26. package/dist/collections/__tests__/execution.test.js +271 -0
  27. package/dist/collections/__tests__/execution.test.js.map +1 -0
  28. package/dist/collections/__tests__/integration.test.d.ts +1 -0
  29. package/dist/collections/__tests__/integration.test.js +478 -0
  30. package/dist/collections/__tests__/integration.test.js.map +1 -0
  31. package/dist/collections/__tests__/resolver.test.d.ts +1 -0
  32. package/dist/collections/__tests__/resolver.test.js +282 -0
  33. package/dist/collections/__tests__/resolver.test.js.map +1 -0
  34. package/dist/collections/__tests__/scenario.test.d.ts +1 -0
  35. package/dist/collections/__tests__/scenario.test.js +367 -0
  36. package/dist/collections/__tests__/scenario.test.js.map +1 -0
  37. package/dist/collections/__tests__/scripts.test.d.ts +1 -0
  38. package/dist/collections/__tests__/scripts.test.js +245 -0
  39. package/dist/collections/__tests__/scripts.test.js.map +1 -0
  40. package/dist/collections/__tests__/store.test.d.ts +1 -0
  41. package/dist/collections/__tests__/store.test.js +313 -0
  42. package/dist/collections/__tests__/store.test.js.map +1 -0
  43. package/dist/collections/assertions.d.ts +16 -0
  44. package/dist/collections/assertions.js +107 -0
  45. package/dist/collections/assertions.js.map +1 -0
  46. package/dist/collections/dynamic-vars.d.ts +75 -0
  47. package/dist/collections/dynamic-vars.js +187 -0
  48. package/dist/collections/dynamic-vars.js.map +1 -0
  49. package/dist/collections/executor.d.ts +100 -0
  50. package/dist/collections/executor.js +301 -0
  51. package/dist/collections/executor.js.map +1 -0
  52. package/dist/collections/http.d.ts +9 -0
  53. package/dist/collections/http.js +194 -0
  54. package/dist/collections/http.js.map +1 -0
  55. package/dist/collections/index.d.ts +12 -0
  56. package/dist/collections/index.js +27 -0
  57. package/dist/collections/index.js.map +1 -0
  58. package/dist/collections/postman.d.ts +10 -0
  59. package/dist/collections/postman.js +288 -0
  60. package/dist/collections/postman.js.map +1 -0
  61. package/dist/collections/resolver.d.ts +74 -0
  62. package/dist/collections/resolver.js +330 -0
  63. package/dist/collections/resolver.js.map +1 -0
  64. package/dist/collections/scripts.d.ts +20 -0
  65. package/dist/collections/scripts.js +225 -0
  66. package/dist/collections/scripts.js.map +1 -0
  67. package/dist/collections/store.d.ts +68 -0
  68. package/dist/collections/store.js +507 -0
  69. package/dist/collections/store.js.map +1 -0
  70. package/dist/collections/tools.d.ts +8 -0
  71. package/dist/collections/tools.js +1276 -0
  72. package/dist/collections/tools.js.map +1 -0
  73. package/dist/collections/types.d.ts +226 -0
  74. package/dist/collections/types.js +3 -0
  75. package/dist/collections/types.js.map +1 -0
  76. package/dist/compound-tools.js +136 -2
  77. package/dist/compound-tools.js.map +1 -1
  78. package/dist/killswitch.d.ts +8 -0
  79. package/dist/killswitch.js +304 -0
  80. package/dist/killswitch.js.map +1 -0
  81. package/dist/monitor.d.ts +36 -2
  82. package/dist/monitor.js +213 -38
  83. package/dist/monitor.js.map +1 -1
  84. package/dist/paths.d.ts +16 -0
  85. package/dist/paths.js +39 -0
  86. package/dist/paths.js.map +1 -0
  87. package/dist/recipe-tools.js +67 -9
  88. package/dist/recipe-tools.js.map +1 -1
  89. package/dist/recipes.d.ts +6 -0
  90. package/dist/recipes.js +83 -8
  91. package/dist/recipes.js.map +1 -1
  92. package/dist/resilience.d.ts +112 -0
  93. package/dist/resilience.js +319 -0
  94. package/dist/resilience.js.map +1 -0
  95. package/dist/scheduler.js +4 -8
  96. package/dist/scheduler.js.map +1 -1
  97. package/dist/server.js +221 -60
  98. package/dist/server.js.map +1 -1
  99. package/dist/session-state.js +2 -2
  100. package/dist/session-state.js.map +1 -1
  101. package/dist/tools.js +54 -0
  102. package/dist/tools.js.map +1 -1
  103. package/package.json +4 -3
  104. package/recipes/autopilot/agent.md +316 -0
  105. package/recipes/autopilot/learnings.md +33 -0
  106. package/recipes/autopilot/recipe.yaml +96 -0
  107. package/recipes/inbox-responder/agent.md +268 -0
  108. package/recipes/inbox-responder/learnings.md +25 -0
  109. package/recipes/inbox-responder/recipe.yaml +82 -0
  110. package/recipes/linkedin-job-scraper/agent.md +144 -0
  111. package/recipes/linkedin-job-scraper/learnings.md +3 -0
  112. package/recipes/linkedin-job-scraper/recipe.yaml +71 -0
  113. package/recipes/linkedin-outreach/learnings.md +17 -1
  114. package/recipes/planner/agent.md +66 -1
  115. package/recipes/planner/learnings.md +49 -1
  116. package/recipes/sheets-data-entry/agent.md +166 -0
  117. package/recipes/sheets-data-entry/learnings.md +3 -0
  118. package/recipes/sheets-data-entry/recipe.yaml +78 -0
  119. package/recipes/social-ops/learnings.md +33 -13
  120. package/recipes/x-job-scraper/agent.md +156 -0
  121. package/recipes/x-job-scraper/learnings.md +3 -0
  122. package/recipes/x-job-scraper/recipe.yaml +72 -0
  123. package/dist/__tests__/correlation.test.js +0 -53
  124. package/dist/__tests__/correlation.test.js.map +0 -1
  125. /package/dist/{__tests__/correlation.test.d.ts → collections/__tests__/assertions.test.d.ts} +0 -0
package/README.md CHANGED
@@ -1,8 +1,8 @@
1
1
  # neuron-inspector
2
2
 
3
- **51 browser tools for AI agents.** Your AI can't see your browser. This fixes that.
3
+ **177 browser tools for AI agents.** Your AI can't see your browser. This fixes that.
4
4
 
5
- Inspect DOM, automate clicks, run JavaScript, search network traffic, audit security, check accessibility, scan SEO, mock APIs, extract structured data, record demos — all from Claude Code, Cursor, Windsurf, or any MCP client.
5
+ Inspect DOM, automate clicks, run JavaScript, search network traffic, audit security, check accessibility, scan SEO, mock APIs, extract structured data, record demos, scan profiles, score leads, track competitors, monitor mentions, build revenue pipelines — all from Claude Code, Cursor, Windsurf, or any MCP client.
6
6
 
7
7
  No API keys. No cloud. Runs on localhost.
8
8
 
@@ -63,9 +63,61 @@ Open any page in Chrome. Ask your AI agent to interact with it. Done.
63
63
 
64
64
  ---
65
65
 
66
+ ## Multi-Profile Setup
67
+
68
+ Each Chrome profile can connect to a different bridge instance. This enables multi-account workflows where each profile is logged into different social media accounts.
69
+
70
+ ### 1. Set the bridge port per Chrome profile
71
+
72
+ Open the extension popup > Settings (gear icon) > enable Developer Mode. Set a unique **Bridge Port** for each Chrome profile:
73
+
74
+ - Profile A (personal): port `7377` (default)
75
+ - Profile B (business): port `7378`
76
+ - Profile C (client): port `7379`
77
+
78
+ ### 2. Start a bridge per profile
79
+
80
+ Each bridge gets its own port (`NEURON_BRIDGE_PORT`) and its own data directory (`NEURON_DATA_DIR`) so leads, monitors, sessions, and recipes stay isolated.
81
+
82
+ ```bash
83
+ # Terminal 1 — personal (default port + default data dir)
84
+ npx neuron-inspector
85
+
86
+ # Terminal 2 — business
87
+ NEURON_BRIDGE_PORT=7378 NEURON_DATA_DIR=~/.neuron/letschop npx neuron-inspector
88
+
89
+ # Terminal 3 — client
90
+ NEURON_BRIDGE_PORT=7379 NEURON_DATA_DIR=~/.neuron/dlvh npx neuron-inspector
91
+ ```
92
+
93
+ ### 3. Register each bridge with your AI tool
94
+
95
+ ```bash
96
+ claude mcp add rasheed-personal -- npx neuron-inspector
97
+ claude mcp add letschop -- env NEURON_BRIDGE_PORT=7378 NEURON_DATA_DIR=~/.neuron/letschop npx neuron-inspector
98
+ claude mcp add dlvh -- env NEURON_BRIDGE_PORT=7379 NEURON_DATA_DIR=~/.neuron/dlvh npx neuron-inspector
99
+ ```
100
+
101
+ Each bridge logs its data directory on startup so you can confirm isolation:
102
+
103
+ ```
104
+ [bridge] Data directory: /Users/you/.neuron/letschop
105
+ [bridge] Primary mode — WebSocket server on 127.0.0.1:7378
106
+ ```
107
+
108
+ Data layout:
109
+
110
+ ```
111
+ ~/.neuron/ ← rasheed-personal (default)
112
+ ~/.neuron/letschop/ ← letschop leads, monitors, recipes, collections
113
+ ~/.neuron/dlvh/ ← dlvh leads, monitors, recipes, collections
114
+ ```
115
+
116
+ ---
117
+
66
118
  ## What you can do
67
119
 
68
- ### Ask your agent to debug a page
120
+ ### Debug a page
69
121
 
70
122
  > "Why is this page slow?"
71
123
 
@@ -79,55 +131,63 @@ The agent calls `neuron_perf_snapshot` and gets back Core Web Vitals, render-blo
79
131
 
80
132
  `neuron_a11y_audit` runs a WCAG audit — color contrast failures, missing alt text, broken heading hierarchy, unlabeled form fields.
81
133
 
82
- ### Ask your agent to explore traffic
134
+ ### Explore traffic
83
135
 
84
136
  > "What APIs is this SPA calling?"
85
137
 
86
138
  `neuron_discover_apis` maps every endpoint from observed traffic — call counts, status codes, auth patterns, response shapes.
87
139
 
88
- > "Search all network responses for 'user_id'"
140
+ > "Reverse-engineer this site's API into a collection"
141
+
142
+ `neuron_api_blueprint` analyzes traffic, infers schemas, detects auth patterns, and creates a ready-to-use API collection.
89
143
 
90
- `neuron_search_traffic` does full-text search across every captured response body.
144
+ ### Prospect and generate leads
91
145
 
92
- > "Show me the network waterfall"
146
+ > "Scan these 20 Instagram profiles and score them as leads"
93
147
 
94
- `neuron_waterfall` gives DNS, TCP, TLS, TTFB timing per resource — the same view as DevTools Network, but in your agent's context.
148
+ `neuron_profile_scanner` visits each profile, extracts data. `neuron_lead_scorer` scores them by follower count, bio keywords, website presence.
95
149
 
96
- ### Ask your agent to interact with the page
150
+ > "Find people asking for delivery services in this hashtag feed"
97
151
 
98
- > "Click the Sign Up button"
152
+ `neuron_demand_scanner` scrolls the feed, matches trigger phrases like "looking for", "need a", "who delivers", and enriches each poster's profile.
99
153
 
100
- `neuron_click` finds it by CSS selector or visible text and clicks it.
154
+ > "Who are my competitor's most engaged followers?"
101
155
 
102
- > "Fill in the email field with test@example.com"
156
+ `neuron_competitor_mapper` scans their recent posts, ranks commenters by frequency, and categorizes each as potential customer, fellow business, or influencer.
103
157
 
104
- `neuron_type` targets the input and types into it.
158
+ ### Monitor and track
105
159
 
106
- > "Scroll down and extract all the product listings"
160
+ > "Watch this collection for new items matching 'logistics'"
107
161
 
108
- `neuron_scroll` + `neuron_extract_data` — scrolls the page and pulls structured data from repeating patterns (cards, tables, feeds).
162
+ `neuron_collection_watch` creates a persistent monitor that alerts when matching content appears.
109
163
 
110
- ### Ask your agent to test edge cases
164
+ > "Show me all opportunities from the last 24 hours"
111
165
 
112
- > "Mock the payments API to return a 500 error"
166
+ `neuron_opportunity_radar` aggregates alerts from all your monitors into one feed.
113
167
 
114
- `neuron_set_mock` intercepts matching requests and returns your custom response. Test error states without touching the real backend.
168
+ > "Track who mentions our brand across platforms"
115
169
 
116
- > "Take a snapshot, click submit, then tell me what changed"
170
+ `neuron_mention_tracker` scans feeds for your brand terms and saves matches to a searchable bank.
117
171
 
118
- `neuron_snapshot_state` before, action, `neuron_diff_states` after — detects DOM changes, added/removed elements, URL changes.
172
+ ### Automate social actions
119
173
 
120
- ### Ask your agent to record and replay
174
+ > "Like this post and leave a comment"
121
175
 
122
- > "Record what I'm doing as a workflow"
176
+ `neuron_quick_action` handles per-platform DOM selectors — works across Instagram, X, LinkedIn, TikTok, Facebook.
123
177
 
124
- `neuron_start_recording` captures clicks, typing, and navigation. `neuron_start_demo` replays it as a polished video with chapter markers and cursor overlay.
178
+ > "Send personalized DMs to this lead list"
179
+
180
+ `neuron_dm_outreach` composes messages from a template with merge fields, paces them to avoid detection, and tracks status.
125
181
 
126
182
  ---
127
183
 
128
- ## All 51 tools
184
+ ## All 177 tools
185
+
186
+ ### Browser Primitives (55 tools)
187
+
188
+ Low-level extension commands forwarded over WebSocket.
129
189
 
130
- ### Inspect & Debug
190
+ #### Inspect & Debug
131
191
  | Tool | What it does |
132
192
  |------|-------------|
133
193
  | `neuron_query_dom` | DOM snapshot of the page or a subtree |
@@ -137,19 +197,24 @@ The agent calls `neuron_perf_snapshot` and gets back Core Web Vitals, render-blo
137
197
  | `neuron_screenshot` | PNG screenshot of the visible area |
138
198
  | `neuron_diagnose` | Connection health check |
139
199
  | `neuron_list_tabs` | Open tabs with platform detection |
200
+ | `neuron_session_diagnostics` | Agent session health |
201
+ | `neuron_action_space` | Snapshot all interactable controls on a page |
140
202
 
141
- ### Browse & Automate
203
+ #### Browse & Automate
142
204
  | Tool | What it does |
143
205
  |------|-------------|
144
206
  | `neuron_click` | Click by selector or text |
145
207
  | `neuron_type` | Type into inputs and contenteditable |
146
208
  | `neuron_scroll` | Scroll by pixels or into view |
147
209
  | `neuron_navigate` | Navigate to a URL |
210
+ | `neuron_press_key` | Press keyboard key (Enter, Tab, Escape, etc.) |
211
+ | `neuron_focus_tab` | Bring a tab to the foreground |
148
212
  | `neuron_open_tab` | Open a new tab |
149
213
  | `neuron_reload` | Reload a tab |
150
214
  | `neuron_run_sequence` | Multi-step automation (click, type, wait, eval) |
215
+ | `neuron_trigger_post` | Trigger the IG post runner |
151
216
 
152
- ### Network Intelligence
217
+ #### Network Intelligence
153
218
  | Tool | What it does |
154
219
  |------|-------------|
155
220
  | `neuron_get_requests` | Query HTTP requests by tab, method, status, URL |
@@ -161,28 +226,28 @@ The agent calls `neuron_perf_snapshot` and gets back Core Web Vitals, render-blo
161
226
  | `neuron_replay_request` | Re-fire a request with the browser's live session |
162
227
  | `neuron_waterfall` | DNS/TLS/TTFB timing per resource |
163
228
 
164
- ### Security
229
+ #### Security & Auth
165
230
  | Tool | What it does |
166
231
  |------|-------------|
167
232
  | `neuron_security_scan` | Leaked secrets, missing headers, CORS, mixed content |
168
233
  | `neuron_check_auth` | Verify platform credentials |
169
234
  | `neuron_detect_blocker` | Detect rate limits, captchas, login walls |
170
235
 
171
- ### Quality
236
+ #### Quality
172
237
  | Tool | What it does |
173
238
  |------|-------------|
174
239
  | `neuron_a11y_audit` | WCAG audit — contrast, labels, headings, tabindex |
175
240
  | `neuron_perf_snapshot` | Core Web Vitals, resource breakdown, memory |
176
241
  | `neuron_seo_audit` | Meta, OG, headings, structured data, links |
177
242
 
178
- ### Network Mocking
243
+ #### Network Mocking
179
244
  | Tool | What it does |
180
245
  |------|-------------|
181
246
  | `neuron_set_mock` | Intercept requests, return custom responses |
182
247
  | `neuron_get_mocks` | List active mock rules |
183
248
  | `neuron_clear_mocks` | Remove all mocks |
184
249
 
185
- ### Cookies & Storage
250
+ #### Cookies & Storage
186
251
  | Tool | What it does |
187
252
  |------|-------------|
188
253
  | `neuron_get_cookies` | Read cookies for a URL |
@@ -191,7 +256,7 @@ The agent calls `neuron_perf_snapshot` and gets back Core Web Vitals, render-blo
191
256
  | `neuron_get_storage` | Read localStorage / sessionStorage |
192
257
  | `neuron_clear_storage` | Clear storage |
193
258
 
194
- ### Page Monitoring
259
+ #### Page State
195
260
  | Tool | What it does |
196
261
  |------|-------------|
197
262
  | `neuron_snapshot_state` | Capture page state for later diff |
@@ -201,28 +266,213 @@ The agent calls `neuron_perf_snapshot` and gets back Core Web Vitals, render-blo
201
266
  | `neuron_stop_watch` | Stop watching |
202
267
  | `neuron_extract_data` | Extract structured data from feeds, tables, listings |
203
268
 
204
- ### Demo Recording
269
+ #### Demo Recording
205
270
  | Tool | What it does |
206
271
  |------|-------------|
207
272
  | `neuron_start_recording` | Record interactions as a workflow |
208
273
  | `neuron_stop_recording` | Save the recording |
209
274
  | `neuron_list_workflows` | List saved workflows |
275
+ | `neuron_toggle_workflow` | Enable or disable a workflow |
210
276
  | `neuron_start_replay` | Replay a workflow |
211
277
  | `neuron_stop_replay` | Stop replay |
212
278
  | `neuron_start_demo` | Record a demo video with chapters + cursor |
213
279
  | `neuron_workflow_status` | Engine state |
214
280
 
215
- ### Other
281
+ ### Compound Tools (15 tools)
282
+
283
+ Bridge-side orchestration that chains multiple primitives in one call.
284
+
216
285
  | Tool | What it does |
217
286
  |------|-------------|
218
- | `neuron_trigger_post` | Trigger the post runner |
219
- | `neuron_session_diagnostics` | Agent session health |
287
+ | `neuron_research_page` | Deep-read a URL: navigate, scroll, extract, screenshot |
288
+ | `neuron_research_profiles` | Research multiple URLs in parallel (max 8) |
289
+ | `neuron_search_and_collect` | Search a site and collect results across pages |
290
+ | `neuron_fill_and_submit` | Fill a form and optionally submit it |
291
+ | `neuron_audit_page` | Run all quality audits in one call |
292
+ | `neuron_monitor_action` | Snapshot, act, diff to verify changes |
293
+ | `neuron_wait_for` | Wait for element, text, or URL condition |
294
+ | `neuron_smart_click` | Click with retry, fallback chain, verification |
295
+ | `neuron_smart_type` | Type with retry and value verification |
296
+ | `neuron_health_check` | Check tab readiness (no blockers, no captcha) |
297
+ | `neuron_vision_act` | Screenshot + describe + act (no selectors needed) |
298
+ | `neuron_approve_via_whatsapp` | Send approval request to WhatsApp, wait for reply |
299
+ | `neuron_extract_to_json` | Extract data as clean JSON/CSV/YAML |
300
+ | `neuron_grab_media` | Extract and download video/audio from any page |
301
+ | `neuron_grab_media_batch` | Download videos from multiple URLs (max 5) |
302
+
303
+ ### Business Intelligence Tools (29 tools)
304
+
305
+ High-level tools for prospecting, lead generation, competitive intelligence, and social automation. All compound tools — they chain extension primitives with no new extension code.
306
+
307
+ #### Prospecting
308
+ | Tool | What it does |
309
+ |------|-------------|
310
+ | `neuron_profile_scanner` | Batch-scan profile URLs with session resume support |
311
+ | `neuron_hashtag_scout` | Scout hashtag feeds, extract posts and authors |
312
+ | `neuron_local_scout` | Search location/explore feeds with profile enrichment and filters |
313
+ | `neuron_bio_harvester` | Extract all links from profile bios (websites, WhatsApp, Linktree, email) |
314
+ | `neuron_cross_platform_finder` | Find a handle across platforms with confidence scores |
315
+
316
+ #### Lead Generation
317
+ | Tool | What it does |
318
+ |------|-------------|
319
+ | `neuron_demand_scanner` | Find demand signals via trigger phrases, optional recurring monitor |
320
+ | `neuron_post_to_lead` | Monitor post comments for trigger keywords, extract leads |
321
+ | `neuron_comment_miner` | Extract commenters from a post as a lead list |
322
+ | `neuron_lead_scorer` | Score leads by follower count, bio keywords, website, location |
323
+ | `neuron_revenue_tracker` | CRM-lite funnel: discovered to closed-won with revenue attribution |
324
+
325
+ #### Competitive Intelligence
326
+ | Tool | What it does |
327
+ |------|-------------|
328
+ | `neuron_competitor_mapper` | Map a competitor's engaged audience, categorize commenters |
329
+ | `neuron_influencer_vetter` | Trust score (0-100) with red flag detection |
330
+ | `neuron_engagement_analyzer` | Analyze your own posting performance with recommendations |
331
+
332
+ #### Brand & Content
333
+ | Tool | What it does |
334
+ |------|-------------|
335
+ | `neuron_mention_tracker` | Track brand mentions across platforms, optional recurring monitor |
336
+ | `neuron_social_proof` | Collect testimonials and positive mentions |
337
+ | `neuron_post_analyzer` | Extract metrics and classify posts (single or batch) |
338
+ | `neuron_content_pipeline` | Repurpose content across platform formats |
339
+
340
+ #### Collections & Monitoring
341
+ | Tool | What it does |
342
+ |------|-------------|
343
+ | `neuron_collection_harvest` | One-shot deep-scroll + extract + keyword filter on any feed |
344
+ | `neuron_collection_watch` | Persistent monitor for new items in a collection |
345
+ | `neuron_opportunity_radar` | Aggregated alert feed from all monitors |
346
+ | `neuron_page_watch` | Semantic page change monitor with structured diffs |
347
+
348
+ #### Social Automation
349
+ | Tool | What it does |
350
+ |------|-------------|
351
+ | `neuron_quick_action` | Platform-aware like/comment/follow/DM (per-platform selectors) |
352
+ | `neuron_dm_outreach` | Paced DM campaigns with merge templates |
353
+ | `neuron_group_link_scanner` | Extract WhatsApp/Telegram group invite links |
354
+
355
+ #### Data Extraction
356
+ | Tool | What it does |
357
+ |------|-------------|
358
+ | `neuron_pattern_learner` | Learn CSS selectors from example text, store for reuse |
359
+
360
+ #### Network Analysis
361
+ | Tool | What it does |
362
+ |------|-------------|
363
+ | `neuron_site_xray` | Full network analysis (requests, perf, security, APIs in parallel) |
364
+ | `neuron_traffic_replay` | Capture/replay/list HAR traffic with mock rules |
365
+ | `neuron_api_blueprint` | Reverse-engineer APIs from traffic into a collection |
366
+ | `neuron_page_weight` | Asset breakdown by category with budget violation detection |
367
+
368
+ ### Recipe Tools (17 tools)
369
+
370
+ Manage and run recipe workflows — purpose-built agents that get better with every run.
371
+
372
+ | Tool | What it does |
373
+ |------|-------------|
374
+ | `neuron_recipe_run` | Start a recipe with variables and rules |
375
+ | `neuron_recipe_complete` | End a recipe run and log the outcome |
376
+ | `neuron_recipe_list` | List available recipes |
377
+ | `neuron_recipe_get` | Get a recipe's full contents |
378
+ | `neuron_recipe_create` | Create a new recipe |
379
+ | `neuron_recipe_update` | Update a recipe |
380
+ | `neuron_recipe_delete` | Delete a recipe |
381
+ | `neuron_recipe_log` | Log a run outcome to memory |
382
+ | `neuron_recipe_memory` | Read run history |
383
+ | `neuron_recipe_import` | Import from GitHub or local path |
384
+ | `neuron_recipe_export` | Export a recipe for sharing |
385
+ | `neuron_profile_get` | Read user profile |
386
+ | `neuron_profile_save` | Save user profile |
387
+ | `neuron_rules_get` | Read active rules |
388
+ | `neuron_rules_set` | Set or update rules |
389
+ | `neuron_quickstart` | First-run onboarding |
390
+
391
+ ### Scheduler Tools (4 tools)
392
+
393
+ | Tool | What it does |
394
+ |------|-------------|
395
+ | `neuron_schedule_recipe` | Schedule a recipe on interval or cron |
396
+ | `neuron_schedule_list` | List all scheduled recipes |
397
+ | `neuron_schedule_remove` | Remove a schedule |
398
+ | `neuron_schedule_toggle` | Enable or disable a schedule |
399
+
400
+ ### Session State Tools (5 tools)
401
+
402
+ | Tool | What it does |
403
+ |------|-------------|
404
+ | `neuron_session_save` | Save session state for resumption |
405
+ | `neuron_session_load` | Load session state |
406
+ | `neuron_session_list` | List active sessions |
407
+ | `neuron_session_delete` | Delete a session |
408
+ | `neuron_session_checkpoint` | Quick progress update |
409
+
410
+ ### Monitor Tools (8 tools)
411
+
412
+ | Tool | What it does |
413
+ |------|-------------|
414
+ | `neuron_monitor_create` | Create a page monitor |
415
+ | `neuron_monitor_list` | List all monitors |
416
+ | `neuron_monitor_get` | Get monitor details |
417
+ | `neuron_monitor_update` | Update monitor config |
418
+ | `neuron_monitor_remove` | Remove a monitor |
419
+ | `neuron_monitor_toggle` | Enable/disable a monitor |
420
+ | `neuron_monitor_check` | Force an immediate check |
421
+ | `neuron_monitor_alerts` | Get recent alerts |
422
+
423
+ ### Control Tools (4 tools)
424
+
425
+ | Tool | What it does |
426
+ |------|-------------|
427
+ | `neuron_stop` | Emergency stop all autonomous operations |
428
+ | `neuron_status` | Show what's currently running |
429
+ | `neuron_pause_all` | Pause all monitors and schedules |
430
+ | `neuron_resume_all` | Resume all paused operations |
431
+
432
+ ### API Collection Tools (28 tools)
433
+
434
+ Full Postman-like API collection management persisted to `~/.neuron/collections/`.
435
+
436
+ | Tool | What it does |
437
+ |------|-------------|
438
+ | `neuron_api_list_collections` | List all collections |
439
+ | `neuron_api_get_collection` | Get collection structure |
440
+ | `neuron_api_create_collection` | Create a collection |
441
+ | `neuron_api_delete_collection` | Delete a collection |
442
+ | `neuron_api_update_collection` | Update name/description |
443
+ | `neuron_api_set_defaults` | Set collection-level defaults |
444
+ | `neuron_api_upsert_endpoint` | Add or update an endpoint |
445
+ | `neuron_api_remove_endpoint` | Remove an endpoint |
446
+ | `neuron_api_move_endpoint` | Move endpoint between folders |
447
+ | `neuron_api_create_folder` | Create a folder |
448
+ | `neuron_api_update_folder` | Update folder config |
449
+ | `neuron_api_delete_folder` | Delete a folder |
450
+ | `neuron_api_list_folders` | List folders |
451
+ | `neuron_api_set_env` | Create/update an environment |
452
+ | `neuron_api_remove_env` | Remove an environment |
453
+ | `neuron_api_list_envs` | List environments |
454
+ | `neuron_api_switch_env` | Set active environment |
455
+ | `neuron_api_create_scenario` | Create a test scenario |
456
+ | `neuron_api_update_scenario` | Update a scenario |
457
+ | `neuron_api_delete_scenario` | Delete a scenario |
458
+ | `neuron_api_list_scenarios` | List scenarios |
459
+ | `neuron_api_run` | Run endpoints against an environment |
460
+ | `neuron_api_run_scenario` | Run a scenario with variable chaining |
461
+ | `neuron_api_query` | Search endpoints across collections |
462
+ | `neuron_api_generate_tests` | Suggest test assertions |
463
+ | `neuron_api_export_collection` | Export as YAML or Postman JSON |
464
+ | `neuron_api_import_collection` | Import from YAML or Postman JSON |
465
+ | `neuron_api_import_file` | Import from a file path |
466
+
467
+ ### Automation Tools (12 tools)
468
+
469
+ Browser automation workflows with scheduling and persistence.
220
470
 
221
471
  ---
222
472
 
223
473
  ## Recipes — purpose-built agents
224
474
 
225
- The 51 tools are primitives. A **recipe** turns them into a purpose-built agent — a QA engineer, a job applicant, a web researcher. Recipes are shareable, and they get better with every run.
475
+ The 177 tools are primitives. A **recipe** turns them into a purpose-built agent — a QA engineer, a job applicant, a web researcher. Recipes are shareable, and they get better with every run.
226
476
 
227
477
  ### Built-in recipes
228
478
 
@@ -238,15 +488,68 @@ A recipe is a folder with instructions (`agent.md`) and config (`recipe.yaml`).
238
488
 
239
489
  **Recipes are alive.** Each run captures outcomes to `memory/`. After enough runs, the agent reviews what worked and updates its own strategy in `learnings.md`. A job applicant that discovers technical-tone cover letters get 3x more responses will start writing technical-tone cover letters by default.
240
490
 
241
- **Recipes feed each other.** The web researcher produces reports that the job applicant reads to tailor cover letters. The QA engineer reads its own previous reports to re-check if old bugs are fixed. Output from one recipe is input to another.
491
+ ### Build your own
242
492
 
243
- ### Use a recipe
493
+ See [RECIPE-SPEC.md](RECIPE-SPEC.md) for the full format.
244
494
 
245
- Copy a recipe's `agent.md` into your project as a CLAUDE.md (or append it), fill in the `{{variables}}` from `recipe.yaml`, and run. The recipe tells your AI agent exactly how to use the 51 tools for that purpose.
495
+ ---
246
496
 
247
- ### Build your own
497
+ ## Data storage
498
+
499
+ All persistent data lives in `~/.neuron/`:
500
+
501
+ ```
502
+ ~/.neuron/
503
+ pipeline.yaml # Revenue tracker leads
504
+ testimonials.yaml # Social proof bank
505
+ mentions.yaml # Brand mention history
506
+ extractors.yaml # Learned extraction patterns
507
+ group-links.yaml # WhatsApp/Telegram links
508
+ outreach-campaigns.yaml # DM outreach campaigns
509
+ monitors.yaml # Monitor configurations
510
+ monitor-alerts.yaml # Monitor alert history
511
+ collections/ # API collections (YAML)
512
+ sessions/ # Session state files
513
+ replays/ # HAR traffic captures
514
+ recipes/ # Recipe definitions
515
+ rules.yaml # Global rules
516
+ profile.yaml # User profile
517
+ ```
518
+
519
+ ---
520
+
521
+ ## Development
522
+
523
+ ```bash
524
+ # Build the bridge
525
+ cd packages/extension/bridge
526
+ npx tsc
527
+
528
+ # Build the full extension
529
+ cd packages/extension
530
+ node build.js
531
+
532
+ # Type-check without emitting
533
+ npx tsc --noEmit
534
+ ```
248
535
 
249
- See [RECIPE-SPEC.md](RECIPE-SPEC.md) for the full format. The core idea: write the instructions you'd give a skilled human, reference the tools by name, add reflect/evolve sections so the agent improves itself, and declare your variables so others can import and customize.
536
+ ### Source files
537
+
538
+ | File | Purpose |
539
+ |------|---------|
540
+ | `server.ts` | MCP server, WebSocket bridge, tool registration |
541
+ | `tools.ts` | Browser primitive definitions + name mapping |
542
+ | `compound-tools.ts` | Compound tools (research, search, fill, audit, media) |
543
+ | `business-tools.ts` | 29 business intelligence and developer tools |
544
+ | `recipe-tools.ts` | Recipe management + rules + profile |
545
+ | `scheduler.ts` | Cron-like recipe scheduling |
546
+ | `session-state.ts` | Session state persistence |
547
+ | `monitor.ts` | Page monitoring with alerts |
548
+ | `killswitch.ts` | Emergency stop, pause, resume |
549
+ | `resilience.ts` | Retry, wait, health check helpers |
550
+ | `correlation.ts` | WebSocket request/response correlation |
551
+ | `collections/` | API collection CRUD + runner |
552
+ | `automations/` | Browser automation workflows |
250
553
 
251
554
  ---
252
555
 
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Step Execution Engine — Browser Automation
3
+ *
4
+ * Dispatches automation steps to bridge primitives via WebSocket.
5
+ * Handles variable substitution, tab tracking, assertions, extraction,
6
+ * retry logic, and error handling.
7
+ */
8
+ import type { WebSocket } from "ws";
9
+ import type { PendingCalls } from "../correlation.js";
10
+ import type { Suite, Step, StepResult, RunResult } from "./types.js";
11
+ interface BridgeContext {
12
+ ws: WebSocket;
13
+ pending: PendingCalls;
14
+ }
15
+ export declare function executeStep(ctx: BridgeContext, step: Step, variables: Record<string, string>, tabId: number | null, suiteDefaults?: Suite["defaults"]): Promise<{
16
+ result: StepResult;
17
+ tabId: number | null;
18
+ variables: Record<string, string>;
19
+ }>;
20
+ export declare function executeSuite(ctx: BridgeContext, suiteId: string, suite: Suite): Promise<RunResult>;
21
+ export {};