neuron-inspector 0.4.3 → 0.5.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.
- package/dist/compound-tools.js +123 -0
- package/dist/compound-tools.js.map +1 -1
- package/dist/resilience.d.ts +112 -0
- package/dist/resilience.js +319 -0
- package/dist/resilience.js.map +1 -0
- package/package.json +1 -1
- package/recipes/inbox-responder/agent.md +268 -0
- package/recipes/inbox-responder/learnings.md +25 -0
- package/recipes/inbox-responder/recipe.yaml +82 -0
- package/recipes/planner/agent.md +66 -1
- package/recipes/planner/learnings.md +49 -1
package/dist/compound-tools.js
CHANGED
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
* know about them — they just issue sequences of existing TOOL_CALL
|
|
8
8
|
* messages via the same PendingCalls correlation.
|
|
9
9
|
*/
|
|
10
|
+
import { waitForElement, waitForText, waitForNavigation, resilientClick, resilientType, healthCheck, } from "./resilience.js";
|
|
10
11
|
// ── Helpers ─────────────────────────────────────────────────
|
|
11
12
|
async function call(ctx, primitive, args, timeoutMs = 15000) {
|
|
12
13
|
return ctx.pending.call(ctx.ws, primitive, args, timeoutMs);
|
|
@@ -167,6 +168,81 @@ export const COMPOUND_TOOLS = [
|
|
|
167
168
|
required: ["tabId", "action"],
|
|
168
169
|
},
|
|
169
170
|
},
|
|
171
|
+
{
|
|
172
|
+
name: "neuron_wait_for",
|
|
173
|
+
description: "Wait for a condition to be true before proceeding. Polls at intervals until the condition is " +
|
|
174
|
+
"met or timeout. Use instead of fixed sleep() — waits for an element to appear, text to show " +
|
|
175
|
+
"up, or URL to change. Returns when the condition is met, throws on timeout.",
|
|
176
|
+
inputSchema: {
|
|
177
|
+
type: "object",
|
|
178
|
+
properties: {
|
|
179
|
+
tabId: { type: "number", description: "Chrome tab ID" },
|
|
180
|
+
condition: {
|
|
181
|
+
type: "string",
|
|
182
|
+
description: "What to wait for: 'element' (CSS selector appears), 'text' (text appears on page), 'url' (URL contains string)",
|
|
183
|
+
},
|
|
184
|
+
selectors: { type: "array", items: { type: "string" }, description: "CSS selectors to wait for (when condition='element')" },
|
|
185
|
+
text: { type: "string", description: "Text to wait for (when condition='text')" },
|
|
186
|
+
urlContains: { type: "string", description: "URL substring to wait for (when condition='url')" },
|
|
187
|
+
timeoutMs: { type: "number", description: "Max wait time in ms (default: 10000)" },
|
|
188
|
+
intervalMs: { type: "number", description: "Poll interval in ms (default: 500)" },
|
|
189
|
+
},
|
|
190
|
+
required: ["tabId", "condition"],
|
|
191
|
+
},
|
|
192
|
+
},
|
|
193
|
+
{
|
|
194
|
+
name: "neuron_smart_click",
|
|
195
|
+
description: "Click with automatic retry and fallback chain. Tries CSS selectors first, then visible text, " +
|
|
196
|
+
"then aria-labels, scrolling to find the element between attempts. Optionally verifies the click " +
|
|
197
|
+
"had an effect (element appeared, disappeared, or changed). Use instead of neuron_click when " +
|
|
198
|
+
"reliability matters.",
|
|
199
|
+
inputSchema: {
|
|
200
|
+
type: "object",
|
|
201
|
+
properties: {
|
|
202
|
+
tabId: { type: "number", description: "Chrome tab ID" },
|
|
203
|
+
selectors: { type: "array", items: { type: "string" }, description: "CSS selectors to try (priority order)" },
|
|
204
|
+
texts: { type: "array", items: { type: "string" }, description: "Visible text labels to try" },
|
|
205
|
+
ariaLabels: { type: "array", items: { type: "string" }, description: "Aria labels to try" },
|
|
206
|
+
scrollToFind: { type: "boolean", description: "Scroll to find the element if not visible (default: true)" },
|
|
207
|
+
maxRetries: { type: "number", description: "Max attempts (default: 3)" },
|
|
208
|
+
verifySelector: { type: "string", description: "CSS selector to check after clicking (verification)" },
|
|
209
|
+
verifyChange: { type: "string", description: "Expected change: 'appears', 'disappears', 'changes'" },
|
|
210
|
+
},
|
|
211
|
+
required: ["tabId"],
|
|
212
|
+
},
|
|
213
|
+
},
|
|
214
|
+
{
|
|
215
|
+
name: "neuron_smart_type",
|
|
216
|
+
description: "Type with retry, value verification, and optional Enter press. After typing, reads back " +
|
|
217
|
+
"the field to confirm the text was accepted by the framework. If verification fails, retries. " +
|
|
218
|
+
"Set pressEnter=true for send-on-enter fields (LinkedIn, X DMs). Use instead of neuron_type " +
|
|
219
|
+
"when the target is a framework-rendered input.",
|
|
220
|
+
inputSchema: {
|
|
221
|
+
type: "object",
|
|
222
|
+
properties: {
|
|
223
|
+
tabId: { type: "number", description: "Chrome tab ID" },
|
|
224
|
+
selectors: { type: "array", items: { type: "string" }, description: "CSS selectors for the input" },
|
|
225
|
+
value: { type: "string", description: "Text to type" },
|
|
226
|
+
verify: { type: "boolean", description: "Read back the field to confirm (default: true)" },
|
|
227
|
+
pressEnter: { type: "boolean", description: "Press Enter after typing — for send-on-enter fields (default: false)" },
|
|
228
|
+
maxRetries: { type: "number", description: "Max attempts (default: 3)" },
|
|
229
|
+
},
|
|
230
|
+
required: ["tabId", "selectors", "value"],
|
|
231
|
+
},
|
|
232
|
+
},
|
|
233
|
+
{
|
|
234
|
+
name: "neuron_health_check",
|
|
235
|
+
description: "Check if a tab is healthy and ready for interaction. Verifies: extension connected, tab " +
|
|
236
|
+
"accessible, no login wall, no captcha, no rate limit block. Call this before starting any " +
|
|
237
|
+
"recipe or multi-step interaction. Returns ready=true if safe to proceed.",
|
|
238
|
+
inputSchema: {
|
|
239
|
+
type: "object",
|
|
240
|
+
properties: {
|
|
241
|
+
tabId: { type: "number", description: "Chrome tab ID to check" },
|
|
242
|
+
},
|
|
243
|
+
required: ["tabId"],
|
|
244
|
+
},
|
|
245
|
+
},
|
|
170
246
|
{
|
|
171
247
|
name: "neuron_vision_act",
|
|
172
248
|
description: "Take a screenshot of the page and describe what's visible, then perform an action based on " +
|
|
@@ -283,6 +359,14 @@ export async function handleCompoundTool(name, args, ctx) {
|
|
|
283
359
|
return auditPage(args, ctx);
|
|
284
360
|
case "neuron_monitor_action":
|
|
285
361
|
return monitorAction(args, ctx);
|
|
362
|
+
case "neuron_wait_for":
|
|
363
|
+
return handleWaitFor(args, ctx);
|
|
364
|
+
case "neuron_smart_click":
|
|
365
|
+
return handleSmartClick(args, ctx);
|
|
366
|
+
case "neuron_smart_type":
|
|
367
|
+
return handleSmartType(args, ctx);
|
|
368
|
+
case "neuron_health_check":
|
|
369
|
+
return healthCheck(ctx, args.tabId);
|
|
286
370
|
case "neuron_vision_act":
|
|
287
371
|
return visionAct(args, ctx);
|
|
288
372
|
case "neuron_approve_via_whatsapp":
|
|
@@ -639,6 +723,45 @@ async function monitorAction(args, ctx) {
|
|
|
639
723
|
errors,
|
|
640
724
|
};
|
|
641
725
|
}
|
|
726
|
+
// ── Resilience tool handlers ────────────────────────────────
|
|
727
|
+
async function handleWaitFor(args, ctx) {
|
|
728
|
+
const tabId = args.tabId;
|
|
729
|
+
const condition = args.condition;
|
|
730
|
+
const opts = {
|
|
731
|
+
timeoutMs: args.timeoutMs ?? 10000,
|
|
732
|
+
intervalMs: args.intervalMs ?? 500,
|
|
733
|
+
};
|
|
734
|
+
switch (condition) {
|
|
735
|
+
case "element":
|
|
736
|
+
return waitForElement(ctx, tabId, args.selectors, opts);
|
|
737
|
+
case "text":
|
|
738
|
+
return waitForText(ctx, tabId, args.text, opts);
|
|
739
|
+
case "url":
|
|
740
|
+
return waitForNavigation(ctx, tabId, { ...opts, urlContains: args.urlContains });
|
|
741
|
+
default:
|
|
742
|
+
throw new Error(`Unknown wait condition: ${condition}. Use 'element', 'text', or 'url'.`);
|
|
743
|
+
}
|
|
744
|
+
}
|
|
745
|
+
async function handleSmartClick(args, ctx) {
|
|
746
|
+
return resilientClick(ctx, args.tabId, {
|
|
747
|
+
selectors: args.selectors,
|
|
748
|
+
texts: args.texts,
|
|
749
|
+
ariaLabels: args.ariaLabels,
|
|
750
|
+
scrollToFind: args.scrollToFind ?? true,
|
|
751
|
+
maxRetries: args.maxRetries ?? 3,
|
|
752
|
+
verifySelector: args.verifySelector,
|
|
753
|
+
verifyChange: args.verifyChange,
|
|
754
|
+
});
|
|
755
|
+
}
|
|
756
|
+
async function handleSmartType(args, ctx) {
|
|
757
|
+
return resilientType(ctx, args.tabId, {
|
|
758
|
+
selectors: args.selectors,
|
|
759
|
+
value: args.value,
|
|
760
|
+
verify: args.verify ?? true,
|
|
761
|
+
pressEnter: args.pressEnter ?? false,
|
|
762
|
+
maxRetries: args.maxRetries ?? 3,
|
|
763
|
+
});
|
|
764
|
+
}
|
|
642
765
|
// ── Vision-based action ─────────────────────────────────────
|
|
643
766
|
async function visionAct(args, ctx) {
|
|
644
767
|
const tabId = args.tabId;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compound-tools.js","sourceRoot":"","sources":["../src/compound-tools.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"compound-tools.js","sourceRoot":"","sources":["../src/compound-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resilience layer — smart waiting, retry with fallbacks, and action
|
|
3
|
+
* verification. Makes the difference between "clicks and hopes" and
|
|
4
|
+
* "clicks, verifies, retries with a different approach if needed."
|
|
5
|
+
*
|
|
6
|
+
* These wrap the raw extension primitives with reliability patterns.
|
|
7
|
+
* Compound tools and recipes should use these instead of raw call().
|
|
8
|
+
*/
|
|
9
|
+
import type { WebSocket } from "ws";
|
|
10
|
+
import type { PendingCalls } from "./correlation.js";
|
|
11
|
+
interface BridgeContext {
|
|
12
|
+
ws: WebSocket;
|
|
13
|
+
pending: PendingCalls;
|
|
14
|
+
}
|
|
15
|
+
export interface WaitOptions {
|
|
16
|
+
/** Max time to wait in ms (default: 10000) */
|
|
17
|
+
timeoutMs?: number;
|
|
18
|
+
/** Poll interval in ms (default: 500) */
|
|
19
|
+
intervalMs?: number;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Wait for an element matching CSS selectors to appear in the DOM.
|
|
23
|
+
* Polls at `intervalMs` until found or `timeoutMs` expires.
|
|
24
|
+
* Returns the element info when found, throws on timeout.
|
|
25
|
+
*/
|
|
26
|
+
export declare function waitForElement(ctx: BridgeContext, tabId: number, selectors: string[], opts?: WaitOptions): Promise<{
|
|
27
|
+
found: true;
|
|
28
|
+
selector: string;
|
|
29
|
+
count: number;
|
|
30
|
+
}>;
|
|
31
|
+
/**
|
|
32
|
+
* Wait for visible text to appear on the page.
|
|
33
|
+
* Polls by extracting page content and searching for the text.
|
|
34
|
+
*/
|
|
35
|
+
export declare function waitForText(ctx: BridgeContext, tabId: number, text: string, opts?: WaitOptions): Promise<{
|
|
36
|
+
found: true;
|
|
37
|
+
}>;
|
|
38
|
+
/**
|
|
39
|
+
* Wait for the page URL to change (after a navigation or redirect).
|
|
40
|
+
*/
|
|
41
|
+
export declare function waitForNavigation(ctx: BridgeContext, tabId: number, opts?: WaitOptions & {
|
|
42
|
+
urlContains?: string;
|
|
43
|
+
}): Promise<{
|
|
44
|
+
url: string;
|
|
45
|
+
}>;
|
|
46
|
+
export interface ClickOptions {
|
|
47
|
+
/** CSS selectors to try, in priority order */
|
|
48
|
+
selectors?: string[];
|
|
49
|
+
/** Visible text labels to try */
|
|
50
|
+
texts?: string[];
|
|
51
|
+
/** Aria labels to try */
|
|
52
|
+
ariaLabels?: string[];
|
|
53
|
+
/** Scroll to find the element if not immediately visible */
|
|
54
|
+
scrollToFind?: boolean;
|
|
55
|
+
/** Max retry attempts (default: 3) */
|
|
56
|
+
maxRetries?: number;
|
|
57
|
+
/** Verify click by checking for state change (optional) */
|
|
58
|
+
verifySelector?: string;
|
|
59
|
+
/** Expected change after click: appears, disappears, changes */
|
|
60
|
+
verifyChange?: "appears" | "disappears" | "changes";
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Click with automatic fallback chain and retry.
|
|
64
|
+
* Tries: CSS selectors → text matching → aria-labels → scroll + retry.
|
|
65
|
+
* Optionally verifies the click had an effect.
|
|
66
|
+
*/
|
|
67
|
+
export declare function resilientClick(ctx: BridgeContext, tabId: number, opts: ClickOptions): Promise<{
|
|
68
|
+
clicked: true;
|
|
69
|
+
method: string;
|
|
70
|
+
verified?: boolean;
|
|
71
|
+
}>;
|
|
72
|
+
export interface TypeOptions {
|
|
73
|
+
selectors: string[];
|
|
74
|
+
value: string;
|
|
75
|
+
/** Max retry attempts (default: 3) */
|
|
76
|
+
maxRetries?: number;
|
|
77
|
+
/** Verify by reading back the value after typing */
|
|
78
|
+
verify?: boolean;
|
|
79
|
+
/** Press Enter after typing (for send-on-enter fields) */
|
|
80
|
+
pressEnter?: boolean;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Type with retry and value verification.
|
|
84
|
+
* After typing, optionally reads back the field to confirm the text was accepted.
|
|
85
|
+
* For contenteditable (LinkedIn, X), uses execCommand internally.
|
|
86
|
+
*/
|
|
87
|
+
export declare function resilientType(ctx: BridgeContext, tabId: number, opts: TypeOptions): Promise<{
|
|
88
|
+
typed: true;
|
|
89
|
+
verified?: boolean;
|
|
90
|
+
pressedEnter?: boolean;
|
|
91
|
+
}>;
|
|
92
|
+
export interface HealthStatus {
|
|
93
|
+
extensionConnected: boolean;
|
|
94
|
+
tabAccessible: boolean;
|
|
95
|
+
tabUrl?: string;
|
|
96
|
+
blockerDetected: boolean;
|
|
97
|
+
blockerType?: string;
|
|
98
|
+
ready: boolean;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Check if a tab is healthy and ready for interaction.
|
|
102
|
+
* Verifies: extension connected, tab accessible, no login wall/captcha.
|
|
103
|
+
* Call this before any recipe execution.
|
|
104
|
+
*/
|
|
105
|
+
export declare function healthCheck(ctx: BridgeContext, tabId: number): Promise<HealthStatus>;
|
|
106
|
+
/**
|
|
107
|
+
* Scroll a container to its bottom to load the latest content.
|
|
108
|
+
* Tries: specific container selector → general page scroll.
|
|
109
|
+
* Waits for content to load after scrolling.
|
|
110
|
+
*/
|
|
111
|
+
export declare function scrollToLatest(ctx: BridgeContext, tabId: number, containerSelector?: string): Promise<void>;
|
|
112
|
+
export type { BridgeContext };
|
|
@@ -0,0 +1,319 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resilience layer — smart waiting, retry with fallbacks, and action
|
|
3
|
+
* verification. Makes the difference between "clicks and hopes" and
|
|
4
|
+
* "clicks, verifies, retries with a different approach if needed."
|
|
5
|
+
*
|
|
6
|
+
* These wrap the raw extension primitives with reliability patterns.
|
|
7
|
+
* Compound tools and recipes should use these instead of raw call().
|
|
8
|
+
*/
|
|
9
|
+
async function call(ctx, primitive, args, timeoutMs = 15000) {
|
|
10
|
+
return ctx.pending.call(ctx.ws, primitive, args, timeoutMs);
|
|
11
|
+
}
|
|
12
|
+
function sleep(ms) {
|
|
13
|
+
return new Promise((r) => setTimeout(r, ms));
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Wait for an element matching CSS selectors to appear in the DOM.
|
|
17
|
+
* Polls at `intervalMs` until found or `timeoutMs` expires.
|
|
18
|
+
* Returns the element info when found, throws on timeout.
|
|
19
|
+
*/
|
|
20
|
+
export async function waitForElement(ctx, tabId, selectors, opts = {}) {
|
|
21
|
+
const timeout = opts.timeoutMs ?? 10000;
|
|
22
|
+
const interval = opts.intervalMs ?? 500;
|
|
23
|
+
const start = Date.now();
|
|
24
|
+
while (Date.now() - start < timeout) {
|
|
25
|
+
try {
|
|
26
|
+
const result = (await call(ctx, "findElements", {
|
|
27
|
+
tabId,
|
|
28
|
+
selectors,
|
|
29
|
+
limit: 1,
|
|
30
|
+
}));
|
|
31
|
+
if (Array.isArray(result) && result.length > 0) {
|
|
32
|
+
// Find which selector matched
|
|
33
|
+
const matched = result[0]?.selector ?? selectors[0];
|
|
34
|
+
return { found: true, selector: matched, count: result.length };
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
// findElements failed — page might still be loading, retry
|
|
39
|
+
}
|
|
40
|
+
await sleep(interval);
|
|
41
|
+
}
|
|
42
|
+
throw new Error(`Timeout: element not found after ${timeout}ms. Tried selectors: ${selectors.join(", ")}`);
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Wait for visible text to appear on the page.
|
|
46
|
+
* Polls by extracting page content and searching for the text.
|
|
47
|
+
*/
|
|
48
|
+
export async function waitForText(ctx, tabId, text, opts = {}) {
|
|
49
|
+
const timeout = opts.timeoutMs ?? 10000;
|
|
50
|
+
const interval = opts.intervalMs ?? 500;
|
|
51
|
+
const start = Date.now();
|
|
52
|
+
while (Date.now() - start < timeout) {
|
|
53
|
+
try {
|
|
54
|
+
const result = (await call(ctx, "findElements", {
|
|
55
|
+
tabId,
|
|
56
|
+
texts: [text],
|
|
57
|
+
limit: 1,
|
|
58
|
+
}));
|
|
59
|
+
if (Array.isArray(result) && result.length > 0) {
|
|
60
|
+
return { found: true };
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
catch {
|
|
64
|
+
// retry
|
|
65
|
+
}
|
|
66
|
+
await sleep(interval);
|
|
67
|
+
}
|
|
68
|
+
throw new Error(`Timeout: text "${text}" not found after ${timeout}ms`);
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Wait for the page URL to change (after a navigation or redirect).
|
|
72
|
+
*/
|
|
73
|
+
export async function waitForNavigation(ctx, tabId, opts = {}) {
|
|
74
|
+
const timeout = opts.timeoutMs ?? 10000;
|
|
75
|
+
const interval = opts.intervalMs ?? 500;
|
|
76
|
+
const start = Date.now();
|
|
77
|
+
while (Date.now() - start < timeout) {
|
|
78
|
+
try {
|
|
79
|
+
const tabs = (await call(ctx, "listTabs", {}));
|
|
80
|
+
const tab = tabs?.find((t) => t.id === tabId);
|
|
81
|
+
if (tab?.url) {
|
|
82
|
+
if (!opts.urlContains || tab.url.includes(opts.urlContains)) {
|
|
83
|
+
return { url: tab.url };
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
catch {
|
|
88
|
+
// retry
|
|
89
|
+
}
|
|
90
|
+
await sleep(interval);
|
|
91
|
+
}
|
|
92
|
+
throw new Error(`Timeout: navigation not detected after ${timeout}ms`);
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Click with automatic fallback chain and retry.
|
|
96
|
+
* Tries: CSS selectors → text matching → aria-labels → scroll + retry.
|
|
97
|
+
* Optionally verifies the click had an effect.
|
|
98
|
+
*/
|
|
99
|
+
export async function resilientClick(ctx, tabId, opts) {
|
|
100
|
+
const maxRetries = opts.maxRetries ?? 3;
|
|
101
|
+
// Focus tab first — background tabs can't click
|
|
102
|
+
await call(ctx, "focusTab", { tabId });
|
|
103
|
+
await sleep(300);
|
|
104
|
+
for (let attempt = 0; attempt < maxRetries; attempt++) {
|
|
105
|
+
// Try CSS selectors
|
|
106
|
+
if (opts.selectors?.length) {
|
|
107
|
+
try {
|
|
108
|
+
const result = (await call(ctx, "clickElement", {
|
|
109
|
+
tabId,
|
|
110
|
+
selectors: opts.selectors,
|
|
111
|
+
}));
|
|
112
|
+
if (result?.clicked) {
|
|
113
|
+
const verified = opts.verifySelector
|
|
114
|
+
? await verifyAction(ctx, tabId, opts.verifySelector, opts.verifyChange)
|
|
115
|
+
: undefined;
|
|
116
|
+
return { clicked: true, method: `selector:${result.selector}`, verified };
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
catch { /* try next method */ }
|
|
120
|
+
}
|
|
121
|
+
// Try text matching
|
|
122
|
+
if (opts.texts?.length) {
|
|
123
|
+
try {
|
|
124
|
+
const result = (await call(ctx, "clickElement", {
|
|
125
|
+
tabId,
|
|
126
|
+
texts: opts.texts,
|
|
127
|
+
}));
|
|
128
|
+
if (result?.clicked) {
|
|
129
|
+
const verified = opts.verifySelector
|
|
130
|
+
? await verifyAction(ctx, tabId, opts.verifySelector, opts.verifyChange)
|
|
131
|
+
: undefined;
|
|
132
|
+
return { clicked: true, method: `text:${opts.texts[0]}`, verified };
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
catch { /* try next method */ }
|
|
136
|
+
}
|
|
137
|
+
// Try aria-labels as selectors
|
|
138
|
+
if (opts.ariaLabels?.length) {
|
|
139
|
+
const ariaSelectors = opts.ariaLabels.map((l) => `[aria-label="${l}"], [aria-label*="${l}"]`);
|
|
140
|
+
try {
|
|
141
|
+
const result = (await call(ctx, "clickElement", {
|
|
142
|
+
tabId,
|
|
143
|
+
selectors: ariaSelectors,
|
|
144
|
+
}));
|
|
145
|
+
if (result?.clicked) {
|
|
146
|
+
const verified = opts.verifySelector
|
|
147
|
+
? await verifyAction(ctx, tabId, opts.verifySelector, opts.verifyChange)
|
|
148
|
+
: undefined;
|
|
149
|
+
return { clicked: true, method: `aria:${opts.ariaLabels[0]}`, verified };
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
catch { /* try next method */ }
|
|
153
|
+
}
|
|
154
|
+
// Scroll and retry on non-final attempts
|
|
155
|
+
if (opts.scrollToFind !== false && attempt < maxRetries - 1) {
|
|
156
|
+
await call(ctx, "scrollPage", { tabId, deltaY: 400, smooth: true });
|
|
157
|
+
await sleep(500);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
throw new Error(`Click failed after ${maxRetries} attempts. Tried: ` +
|
|
161
|
+
[
|
|
162
|
+
opts.selectors?.length ? `selectors(${opts.selectors.length})` : null,
|
|
163
|
+
opts.texts?.length ? `texts(${opts.texts.join(",")})` : null,
|
|
164
|
+
opts.ariaLabels?.length ? `aria(${opts.ariaLabels.join(",")})` : null,
|
|
165
|
+
].filter(Boolean).join(", "));
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Type with retry and value verification.
|
|
169
|
+
* After typing, optionally reads back the field to confirm the text was accepted.
|
|
170
|
+
* For contenteditable (LinkedIn, X), uses execCommand internally.
|
|
171
|
+
*/
|
|
172
|
+
export async function resilientType(ctx, tabId, opts) {
|
|
173
|
+
const maxRetries = opts.maxRetries ?? 3;
|
|
174
|
+
// Focus tab first
|
|
175
|
+
await call(ctx, "focusTab", { tabId });
|
|
176
|
+
await sleep(300);
|
|
177
|
+
for (let attempt = 0; attempt < maxRetries; attempt++) {
|
|
178
|
+
try {
|
|
179
|
+
const result = (await call(ctx, "typeText", {
|
|
180
|
+
tabId,
|
|
181
|
+
selectors: opts.selectors,
|
|
182
|
+
value: opts.value,
|
|
183
|
+
}));
|
|
184
|
+
if (result?.typed) {
|
|
185
|
+
// Verify by extracting the field's current value
|
|
186
|
+
let verified;
|
|
187
|
+
if (opts.verify) {
|
|
188
|
+
await sleep(300);
|
|
189
|
+
verified = await verifyTyped(ctx, tabId, opts.selectors, opts.value);
|
|
190
|
+
if (!verified && attempt < maxRetries - 1) {
|
|
191
|
+
continue; // retry — the text wasn't accepted
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
// Press Enter if requested
|
|
195
|
+
let pressedEnter;
|
|
196
|
+
if (opts.pressEnter) {
|
|
197
|
+
await sleep(200);
|
|
198
|
+
try {
|
|
199
|
+
await call(ctx, "pressKey", { tabId, key: "Enter", selectors: opts.selectors });
|
|
200
|
+
pressedEnter = true;
|
|
201
|
+
}
|
|
202
|
+
catch {
|
|
203
|
+
pressedEnter = false;
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
return { typed: true, verified, pressedEnter };
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
catch { /* retry */ }
|
|
210
|
+
// Wait before retry
|
|
211
|
+
await sleep(500);
|
|
212
|
+
}
|
|
213
|
+
throw new Error(`Type failed after ${maxRetries} attempts. Selectors: ${opts.selectors.join(", ")}`);
|
|
214
|
+
}
|
|
215
|
+
// ── Verification helpers ────────────────────────────────────
|
|
216
|
+
async function verifyAction(ctx, tabId, selector, change) {
|
|
217
|
+
await sleep(500);
|
|
218
|
+
try {
|
|
219
|
+
const result = (await call(ctx, "findElements", {
|
|
220
|
+
tabId,
|
|
221
|
+
selectors: [selector],
|
|
222
|
+
limit: 1,
|
|
223
|
+
}));
|
|
224
|
+
const exists = Array.isArray(result) && result.length > 0;
|
|
225
|
+
switch (change) {
|
|
226
|
+
case "appears": return exists;
|
|
227
|
+
case "disappears": return !exists;
|
|
228
|
+
case "changes": return true; // can't verify generic "changed" without before/after
|
|
229
|
+
default: return exists;
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
catch {
|
|
233
|
+
return false;
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
async function verifyTyped(ctx, tabId, selectors, expectedValue) {
|
|
237
|
+
try {
|
|
238
|
+
const elements = (await call(ctx, "findElements", {
|
|
239
|
+
tabId,
|
|
240
|
+
selectors,
|
|
241
|
+
limit: 1,
|
|
242
|
+
}));
|
|
243
|
+
if (!elements?.length)
|
|
244
|
+
return false;
|
|
245
|
+
const el = elements[0];
|
|
246
|
+
// Check textContent or value
|
|
247
|
+
const text = String(el.textContent ?? el.value ?? el.innerText ?? "");
|
|
248
|
+
// Fuzzy match — the field should contain at least part of our text
|
|
249
|
+
return text.includes(expectedValue.slice(0, 20)) || text.length > 0;
|
|
250
|
+
}
|
|
251
|
+
catch {
|
|
252
|
+
return false;
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* Check if a tab is healthy and ready for interaction.
|
|
257
|
+
* Verifies: extension connected, tab accessible, no login wall/captcha.
|
|
258
|
+
* Call this before any recipe execution.
|
|
259
|
+
*/
|
|
260
|
+
export async function healthCheck(ctx, tabId) {
|
|
261
|
+
const status = {
|
|
262
|
+
extensionConnected: true, // if we got here, extension is connected
|
|
263
|
+
tabAccessible: false,
|
|
264
|
+
blockerDetected: false,
|
|
265
|
+
ready: false,
|
|
266
|
+
};
|
|
267
|
+
// Check tab is accessible
|
|
268
|
+
try {
|
|
269
|
+
const tabs = (await call(ctx, "listTabs", {}));
|
|
270
|
+
const tab = tabs?.find((t) => t.id === tabId);
|
|
271
|
+
if (tab) {
|
|
272
|
+
status.tabAccessible = true;
|
|
273
|
+
status.tabUrl = tab.url;
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
catch {
|
|
277
|
+
return status;
|
|
278
|
+
}
|
|
279
|
+
// Check for blockers (login walls, captchas, rate limits)
|
|
280
|
+
try {
|
|
281
|
+
const blocker = (await call(ctx, "detectBlocker", { tabId }));
|
|
282
|
+
if (blocker?.blocked) {
|
|
283
|
+
status.blockerDetected = true;
|
|
284
|
+
status.blockerType = blocker.type;
|
|
285
|
+
return status;
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
catch {
|
|
289
|
+
// detectBlocker not available or errored — assume OK
|
|
290
|
+
}
|
|
291
|
+
status.ready = status.tabAccessible && !status.blockerDetected;
|
|
292
|
+
return status;
|
|
293
|
+
}
|
|
294
|
+
// ── Scroll to latest ────────────────────────────────────────
|
|
295
|
+
/**
|
|
296
|
+
* Scroll a container to its bottom to load the latest content.
|
|
297
|
+
* Tries: specific container selector → general page scroll.
|
|
298
|
+
* Waits for content to load after scrolling.
|
|
299
|
+
*/
|
|
300
|
+
export async function scrollToLatest(ctx, tabId, containerSelector) {
|
|
301
|
+
if (containerSelector) {
|
|
302
|
+
// Try to scroll the specific container
|
|
303
|
+
try {
|
|
304
|
+
await call(ctx, "scrollPage", {
|
|
305
|
+
tabId,
|
|
306
|
+
selector: containerSelector,
|
|
307
|
+
});
|
|
308
|
+
await sleep(800);
|
|
309
|
+
return;
|
|
310
|
+
}
|
|
311
|
+
catch {
|
|
312
|
+
// Fall through to generic scroll
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
// Generic: scroll the page to the bottom
|
|
316
|
+
await call(ctx, "scrollPage", { tabId, deltaY: 99999, smooth: true });
|
|
317
|
+
await sleep(800);
|
|
318
|
+
}
|
|
319
|
+
//# sourceMappingURL=resilience.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resilience.js","sourceRoot":"","sources":["../src/resilience.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "neuron-inspector",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"description": "91 tools for AI agents. Turn Chrome into an MCP server — inspect DOM, automate clicks, audit security, mock APIs, extract data, download videos, schedule agents, monitor pages, self-improving recipes.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/server.js",
|
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
# Inbox Responder
|
|
2
|
+
|
|
3
|
+
You watch inboxes for new messages, draft replies, and send them for WhatsApp approval. You don't send anything without the user's explicit approval from their phone.
|
|
4
|
+
|
|
5
|
+
The loop: check inbox → find new messages → draft reply → send to WhatsApp → wait for approve/reject → send or skip.
|
|
6
|
+
|
|
7
|
+
## Strategy
|
|
8
|
+
|
|
9
|
+
### Phase 0: Load state
|
|
10
|
+
|
|
11
|
+
1. `neuron_session_load` with session_id `inbox-responder` — check for existing state
|
|
12
|
+
2. If state exists, load `last_checked` timestamps per inbox and `seen_messages` list
|
|
13
|
+
3. If no state, initialize: `{ last_checked: {}, seen_messages: [] }`
|
|
14
|
+
4. Read `learnings.md` for reply patterns that work
|
|
15
|
+
5. Read `{{output_path}}/response-log.yaml` for history
|
|
16
|
+
|
|
17
|
+
### Phase 1: Check each inbox
|
|
18
|
+
|
|
19
|
+
For each inbox in `{{inboxes}}`:
|
|
20
|
+
|
|
21
|
+
**IMPORTANT: Scroll to latest.** Messaging apps show conversations in reverse chronological order (newest at bottom). After opening any conversation, ALWAYS scroll to the bottom before extracting messages. Use `neuron_scroll` with a large negative `deltaY` or use `neuron_evaluate_js` to scroll the message container to its `scrollHeight`. Without this, you'll read old messages and miss the most recent one.
|
|
22
|
+
|
|
23
|
+
#### LinkedIn
|
|
24
|
+
|
|
25
|
+
1. `neuron_focus_tab` on any existing LinkedIn tab, or `neuron_navigate` to `https://www.linkedin.com/messaging/`
|
|
26
|
+
2. Wait 3 seconds for the page to load
|
|
27
|
+
3. `neuron_extract_data` with selector `.msg-conversation-listitem` to get the conversation list
|
|
28
|
+
4. Look for unread indicators: elements with `.msg-conversation-card__unread-count` or bold text styling
|
|
29
|
+
5. For each unread conversation:
|
|
30
|
+
- `neuron_click` with `texts: ["<person name>"]` to open it
|
|
31
|
+
- **Scroll to latest:** `neuron_scroll` with `selector: ".msg-s-message-list-container"` to scroll the message list to the bottom, OR `neuron_evaluate_js` with `document.querySelector('.msg-s-message-list-container').scrollTop = document.querySelector('.msg-s-message-list-container').scrollHeight`
|
|
32
|
+
- Wait 1 second for lazy-loaded messages to render
|
|
33
|
+
- `neuron_extract_data` with selector `.msg-s-event-listitem` to read messages
|
|
34
|
+
- The LAST items in the extracted list are the most recent — read from the bottom
|
|
35
|
+
- Extract: sender name, their message text, timestamp
|
|
36
|
+
- Check against `seen_messages` — skip if already processed
|
|
37
|
+
- Check against `{{auto_skip}}` patterns — skip newsletters, automated messages
|
|
38
|
+
- Add to the `new_messages` queue
|
|
39
|
+
|
|
40
|
+
#### Gmail
|
|
41
|
+
|
|
42
|
+
1. `neuron_focus_tab` on any existing Gmail tab, or `neuron_navigate` to `{{gmail_url}}`
|
|
43
|
+
2. Wait 3 seconds for load
|
|
44
|
+
3. `neuron_extract_data` with selector `tr.zE` (unread rows in Gmail) or `tr.zA` (all rows, unread have `zE` class)
|
|
45
|
+
4. For each unread email:
|
|
46
|
+
- `neuron_click` to open it
|
|
47
|
+
- **Scroll to latest:** `neuron_scroll` with `deltaY: 99999` to reach the bottom of the email thread (shows most recent reply)
|
|
48
|
+
- Wait 1 second
|
|
49
|
+
- `neuron_extract_data` to read: sender, subject, body of the latest message in the thread
|
|
50
|
+
- Check against `seen_messages` and `{{auto_skip}}`
|
|
51
|
+
- Add to `new_messages` queue
|
|
52
|
+
|
|
53
|
+
#### X / Twitter DMs
|
|
54
|
+
|
|
55
|
+
1. `neuron_focus_tab` or `neuron_navigate` to `https://x.com/messages`
|
|
56
|
+
2. Wait 3 seconds for load
|
|
57
|
+
3. `neuron_extract_data` on the conversation list — look for unread indicators (bold text, dot badge)
|
|
58
|
+
4. For each unread conversation:
|
|
59
|
+
- `neuron_click` to open it
|
|
60
|
+
- **Scroll to latest:** `neuron_scroll` with `selector: "[data-testid='DmScrollerContainer']"` or scroll the message container to bottom
|
|
61
|
+
- Wait 1 second
|
|
62
|
+
- `neuron_extract_data` on the message list
|
|
63
|
+
- Extract the last message (bottom of list = most recent)
|
|
64
|
+
- Check against `seen_messages` and `{{auto_skip}}`
|
|
65
|
+
- Add to `new_messages` queue
|
|
66
|
+
|
|
67
|
+
#### Instagram DMs
|
|
68
|
+
|
|
69
|
+
1. `neuron_focus_tab` or `neuron_navigate` to `https://www.instagram.com/direct/inbox/`
|
|
70
|
+
2. Wait 3 seconds for load
|
|
71
|
+
3. `neuron_extract_data` on the conversation list — look for unread indicators
|
|
72
|
+
4. For each unread conversation:
|
|
73
|
+
- `neuron_click` to open it
|
|
74
|
+
- **Scroll to latest:** `neuron_scroll` with `deltaY: 99999` to bottom of message thread
|
|
75
|
+
- Wait 1 second
|
|
76
|
+
- `neuron_extract_data` on the message list
|
|
77
|
+
- Most recent message is at the bottom
|
|
78
|
+
- Check against `seen_messages` and `{{auto_skip}}`
|
|
79
|
+
- Add to `new_messages` queue
|
|
80
|
+
|
|
81
|
+
#### TikTok DMs
|
|
82
|
+
|
|
83
|
+
1. `neuron_focus_tab` or `neuron_navigate` to `https://www.tiktok.com/messages`
|
|
84
|
+
2. Wait 3 seconds for load
|
|
85
|
+
3. `neuron_extract_data` on the conversation list
|
|
86
|
+
4. For each unread conversation:
|
|
87
|
+
- `neuron_click` to open it
|
|
88
|
+
- **Scroll to latest:** `neuron_scroll` with `deltaY: 99999` to bottom
|
|
89
|
+
- Wait 1 second
|
|
90
|
+
- `neuron_extract_data` on the message list
|
|
91
|
+
- Check against `seen_messages` and `{{auto_skip}}`
|
|
92
|
+
- Add to `new_messages` queue
|
|
93
|
+
|
|
94
|
+
### Phase 2: Draft replies
|
|
95
|
+
|
|
96
|
+
For each message in `new_messages`:
|
|
97
|
+
|
|
98
|
+
1. Read the full message context (their message + any prior conversation if visible)
|
|
99
|
+
|
|
100
|
+
2. Draft a reply based on `{{reply_style}}`:
|
|
101
|
+
- **match-their-tone**: If they're casual, reply casual. If formal, match it. Mirror their energy.
|
|
102
|
+
- **professional**: Clean, respectful, direct. No slang.
|
|
103
|
+
- **casual**: Friendly, short, like texting a colleague.
|
|
104
|
+
- **brief**: 1-2 sentences max. Acknowledge and respond.
|
|
105
|
+
|
|
106
|
+
3. Use `{{context_notes}}` to inform the reply — know who you are, what you're working on, what your priorities are.
|
|
107
|
+
|
|
108
|
+
4. Rules for drafting:
|
|
109
|
+
- Keep it short — match or be shorter than their message length
|
|
110
|
+
- Answer their question directly if they asked one
|
|
111
|
+
- If they're pitching you something, be polite but non-committal: "Thanks for sharing — I'll take a look"
|
|
112
|
+
- If they're following up, acknowledge it: "Noted, I'll get back to you on this"
|
|
113
|
+
- If it's a greeting/networking message, be warm but brief
|
|
114
|
+
- Never write anything you wouldn't want screenshotted and shared
|
|
115
|
+
- No AI-sounding language — no "I hope this message finds you well", no em dashes, no "I'd be happy to"
|
|
116
|
+
|
|
117
|
+
### Phase 3: Approve via WhatsApp
|
|
118
|
+
|
|
119
|
+
For each drafted reply:
|
|
120
|
+
|
|
121
|
+
1. `neuron_approve_via_whatsapp` with:
|
|
122
|
+
- `phone`: `{{approval_phone}}`
|
|
123
|
+
- `api_key`: `{{neuron_api_key}}`
|
|
124
|
+
- `prompt`: A clear summary for the phone screen:
|
|
125
|
+
```
|
|
126
|
+
New [platform] message from [sender]:
|
|
127
|
+
"[their message, truncated to 200 chars]"
|
|
128
|
+
|
|
129
|
+
Drafted reply:
|
|
130
|
+
"[your draft]"
|
|
131
|
+
|
|
132
|
+
Approve to send, reject to skip.
|
|
133
|
+
```
|
|
134
|
+
- `context`: The full message thread for reference
|
|
135
|
+
- `timeout_seconds`: 300 (5 minutes — if no response, skip for now)
|
|
136
|
+
|
|
137
|
+
2. Wait for the response:
|
|
138
|
+
- **approved**: Proceed to Phase 4 (send)
|
|
139
|
+
- **rejected**: Skip this message, log as rejected. If the rejection includes a reason, learn from it.
|
|
140
|
+
- **timeout**: Skip for now, will retry next check
|
|
141
|
+
|
|
142
|
+
### Phase 4: Send approved replies
|
|
143
|
+
|
|
144
|
+
For each approved reply:
|
|
145
|
+
|
|
146
|
+
1. `neuron_focus_tab` on the inbox tab
|
|
147
|
+
|
|
148
|
+
2. Navigate back to the conversation if not already there
|
|
149
|
+
|
|
150
|
+
3. **LinkedIn:**
|
|
151
|
+
- `neuron_click` to open the conversation
|
|
152
|
+
- `neuron_scroll` to bottom of conversation so compose box is visible
|
|
153
|
+
- `neuron_type` with selectors `[".msg-form__contenteditable", "[contenteditable='true'][role='textbox']"]`
|
|
154
|
+
- `neuron_press_key` with key `Enter`
|
|
155
|
+
- Wait 2 seconds
|
|
156
|
+
- `neuron_extract_data` on the last message to verify your reply appeared
|
|
157
|
+
|
|
158
|
+
4. **Gmail:**
|
|
159
|
+
- Open the email thread
|
|
160
|
+
- `neuron_scroll` to bottom of thread
|
|
161
|
+
- `neuron_click` on "Reply" button (texts: `["Reply"]`)
|
|
162
|
+
- Wait 2 seconds for the reply composer to load
|
|
163
|
+
- `neuron_find_elements` for `div[aria-label="Message Body"]` or `div[contenteditable='true']` — wait until found
|
|
164
|
+
- `neuron_type` the reply
|
|
165
|
+
- `neuron_click` on Send button (selectors: `["div[aria-label*='Send']", "button[aria-label*='Send']"]`)
|
|
166
|
+
- Wait 2 seconds, verify "Message sent" or the reply appears in the thread
|
|
167
|
+
|
|
168
|
+
5. **X DMs:**
|
|
169
|
+
- Open the conversation
|
|
170
|
+
- `neuron_scroll` to bottom
|
|
171
|
+
- `neuron_type` into `div[data-testid="dmComposerTextInput"]` or `div[role="textbox"]`
|
|
172
|
+
- `neuron_press_key` Enter
|
|
173
|
+
- Wait 1 second, verify
|
|
174
|
+
|
|
175
|
+
6. **Instagram DMs:**
|
|
176
|
+
- Open the conversation
|
|
177
|
+
- `neuron_scroll` to bottom
|
|
178
|
+
- `neuron_type` into `textarea[placeholder*="Message"]` or `div[contenteditable="true"][role="textbox"]`
|
|
179
|
+
- `neuron_press_key` Enter
|
|
180
|
+
- Wait 1 second, verify
|
|
181
|
+
|
|
182
|
+
7. **TikTok DMs:**
|
|
183
|
+
- Open the conversation
|
|
184
|
+
- `neuron_scroll` to bottom
|
|
185
|
+
- `neuron_type` into the message input (try `div[contenteditable="true"]`, `textarea`)
|
|
186
|
+
- `neuron_press_key` Enter
|
|
187
|
+
- Wait 1 second, verify
|
|
188
|
+
|
|
189
|
+
### Phase 5: Log and checkpoint
|
|
190
|
+
|
|
191
|
+
After processing all messages:
|
|
192
|
+
|
|
193
|
+
1. Update `seen_messages` with all processed message IDs/content hashes
|
|
194
|
+
2. Update `last_checked` timestamps per inbox
|
|
195
|
+
3. `neuron_session_save` with the updated state
|
|
196
|
+
4. Append to `{{output_path}}/response-log.yaml`:
|
|
197
|
+
|
|
198
|
+
```yaml
|
|
199
|
+
- date: "{{now}}"
|
|
200
|
+
inbox: "<platform>"
|
|
201
|
+
sender: "<name>"
|
|
202
|
+
their_message: "<text>"
|
|
203
|
+
draft: "<your drafted reply>"
|
|
204
|
+
approval_status: approved|rejected|timeout
|
|
205
|
+
rejection_reason: "<if rejected, why>"
|
|
206
|
+
sent: true|false
|
|
207
|
+
send_verified: true|false
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
### Scheduling
|
|
211
|
+
|
|
212
|
+
To run this automatically, the user should schedule it:
|
|
213
|
+
|
|
214
|
+
```
|
|
215
|
+
neuron_schedule_recipe({
|
|
216
|
+
slug: "inbox-responder",
|
|
217
|
+
interval_minutes: {{check_interval_minutes}},
|
|
218
|
+
variables: { ... },
|
|
219
|
+
enabled: true
|
|
220
|
+
})
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
Each scheduled run: check all inboxes → draft → approve → send → sleep until next run.
|
|
224
|
+
|
|
225
|
+
## Reflect
|
|
226
|
+
|
|
227
|
+
After each run:
|
|
228
|
+
|
|
229
|
+
```yaml
|
|
230
|
+
date: {{now}}
|
|
231
|
+
outcome:
|
|
232
|
+
inboxes_checked: [<list>]
|
|
233
|
+
new_messages_found: <count>
|
|
234
|
+
drafts_sent_for_approval: <count>
|
|
235
|
+
approved: <count>
|
|
236
|
+
rejected: <count>
|
|
237
|
+
timed_out: <count>
|
|
238
|
+
successfully_sent: <count>
|
|
239
|
+
send_failures: <count>
|
|
240
|
+
skip_auto: <count, skipped by auto_skip patterns>
|
|
241
|
+
duration_minutes: <approx>
|
|
242
|
+
rejection_reasons:
|
|
243
|
+
- "<why was a draft rejected>"
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
## Evolve
|
|
247
|
+
|
|
248
|
+
After 20+ runs with 10+ approval outcomes:
|
|
249
|
+
|
|
250
|
+
**Draft quality:**
|
|
251
|
+
- Which drafts get approved vs rejected? What's different about them?
|
|
252
|
+
- Are certain message types (questions, pitches, follow-ups) harder to draft well?
|
|
253
|
+
- Does reply length correlate with approval rate?
|
|
254
|
+
- Update `{{reply_style}}` defaults based on what gets approved.
|
|
255
|
+
|
|
256
|
+
**Auto-skip refinement:**
|
|
257
|
+
- Are there senders or message patterns that always get skipped manually? Add to `{{auto_skip}}`.
|
|
258
|
+
- Are there messages being auto-skipped that shouldn't be?
|
|
259
|
+
|
|
260
|
+
**Timing:**
|
|
261
|
+
- Is `{{check_interval_minutes}}` right? Too frequent = checking empty inboxes. Too rare = slow responses.
|
|
262
|
+
- Which inboxes get the most new messages?
|
|
263
|
+
|
|
264
|
+
**Rejection patterns:**
|
|
265
|
+
- If drafts are consistently rejected with "too formal" or "too long", update the style guidance.
|
|
266
|
+
- If certain reply patterns are always edited before sending, learn the edits.
|
|
267
|
+
|
|
268
|
+
Update learnings based on the data. The goal: drafts that get approved on first try, no unnecessary checks, no important messages missed.
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Learnings
|
|
2
|
+
|
|
3
|
+
No runs yet. This file updates after 20+ runs with 10+ approval outcomes.
|
|
4
|
+
|
|
5
|
+
## Reply Defaults
|
|
6
|
+
|
|
7
|
+
- Match the sender's message length — don't write a paragraph to reply to one sentence
|
|
8
|
+
- Answer the question first, then add context if needed
|
|
9
|
+
- For pitches/cold outreach: "Thanks for sharing — I'll take a look" is almost always the right reply
|
|
10
|
+
- For follow-ups: acknowledge, give a timeline or say you'll get back to them
|
|
11
|
+
- For greetings: brief and warm, don't over-invest
|
|
12
|
+
|
|
13
|
+
## Platform Quirks
|
|
14
|
+
|
|
15
|
+
- LinkedIn: Enter-to-send by default. Use neuron_press_key("Enter") after typing.
|
|
16
|
+
- Gmail: Reply composer lazy-loads. Wait for the contenteditable to appear before typing.
|
|
17
|
+
- X DMs: Enter sends. Similar to LinkedIn flow.
|
|
18
|
+
- Instagram: textarea-based input, Enter sends.
|
|
19
|
+
|
|
20
|
+
## Auto-Skip Patterns
|
|
21
|
+
|
|
22
|
+
Starting list (expand from rejection data):
|
|
23
|
+
- newsletter, no-reply, noreply, automated, unsubscribe
|
|
24
|
+
- "This is an automated message"
|
|
25
|
+
- Sender names containing "bot", "support", "notifications"
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
name: Inbox Responder
|
|
2
|
+
version: 1.0.0
|
|
3
|
+
description: >
|
|
4
|
+
Watches your inboxes (LinkedIn, Gmail, X, Instagram DMs) for new messages,
|
|
5
|
+
drafts context-aware replies, sends them to your WhatsApp for approval, and
|
|
6
|
+
sends the reply on approval. Runs on a schedule — check every N minutes,
|
|
7
|
+
draft, approve from your phone, done.
|
|
8
|
+
author: neuron
|
|
9
|
+
tags: [inbox, auto-reply, whatsapp-approval, linkedin, gmail, x, instagram, monitoring]
|
|
10
|
+
|
|
11
|
+
variables:
|
|
12
|
+
inboxes:
|
|
13
|
+
prompt: "Which inboxes to watch (comma-separated: linkedin, gmail, x, instagram, tiktok)"
|
|
14
|
+
type: text
|
|
15
|
+
required: true
|
|
16
|
+
example: "linkedin, gmail, x, instagram, tiktok"
|
|
17
|
+
check_interval_minutes:
|
|
18
|
+
prompt: "How often to check for new messages (minutes)"
|
|
19
|
+
type: number
|
|
20
|
+
default: 10
|
|
21
|
+
approval_phone:
|
|
22
|
+
prompt: "Your WhatsApp number for approval requests (E.164 format)"
|
|
23
|
+
type: text
|
|
24
|
+
required: true
|
|
25
|
+
example: "+2348012345678"
|
|
26
|
+
neuron_api_key:
|
|
27
|
+
prompt: "Neuron bot API key (nrn_...) for sending WhatsApp approvals"
|
|
28
|
+
type: text
|
|
29
|
+
required: true
|
|
30
|
+
reply_style:
|
|
31
|
+
prompt: "How should replies be written?"
|
|
32
|
+
options: [match-their-tone, professional, casual, brief]
|
|
33
|
+
default: match-their-tone
|
|
34
|
+
auto_skip:
|
|
35
|
+
prompt: "Messages to skip (comma-separated keywords or patterns)"
|
|
36
|
+
type: text
|
|
37
|
+
default: "newsletter, no-reply, noreply, automated, unsubscribe"
|
|
38
|
+
context_notes:
|
|
39
|
+
prompt: "Context about you that helps draft better replies (role, company, current priorities)"
|
|
40
|
+
type: text
|
|
41
|
+
default: ""
|
|
42
|
+
gmail_url:
|
|
43
|
+
prompt: "Gmail URL"
|
|
44
|
+
type: text
|
|
45
|
+
default: "https://mail.google.com/mail/u/0/#inbox"
|
|
46
|
+
output_path:
|
|
47
|
+
prompt: "Where to save response logs"
|
|
48
|
+
type: path
|
|
49
|
+
default: "./inbox-responses"
|
|
50
|
+
|
|
51
|
+
tools:
|
|
52
|
+
required:
|
|
53
|
+
- neuron_navigate
|
|
54
|
+
- neuron_focus_tab
|
|
55
|
+
- neuron_extract_data
|
|
56
|
+
- neuron_find_elements
|
|
57
|
+
- neuron_type
|
|
58
|
+
- neuron_press_key
|
|
59
|
+
- neuron_click
|
|
60
|
+
- neuron_scroll
|
|
61
|
+
- neuron_screenshot
|
|
62
|
+
- neuron_evaluate_js
|
|
63
|
+
- neuron_list_tabs
|
|
64
|
+
- neuron_get_errors
|
|
65
|
+
- neuron_research_page
|
|
66
|
+
- neuron_approve_via_whatsapp
|
|
67
|
+
- neuron_session_save
|
|
68
|
+
- neuron_session_load
|
|
69
|
+
- neuron_session_checkpoint
|
|
70
|
+
- neuron_schedule_recipe
|
|
71
|
+
|
|
72
|
+
pipes:
|
|
73
|
+
outputs:
|
|
74
|
+
response_log:
|
|
75
|
+
format: yaml
|
|
76
|
+
path: "{{output_path}}/response-log.yaml"
|
|
77
|
+
description: "Log of all messages received, drafts sent for approval, and responses sent"
|
|
78
|
+
|
|
79
|
+
limits:
|
|
80
|
+
max_tabs: 4
|
|
81
|
+
max_duration_minutes: 15
|
|
82
|
+
require_human_approval: true
|
package/recipes/planner/agent.md
CHANGED
|
@@ -75,7 +75,54 @@ Search the web for outreach effectiveness data:
|
|
|
75
75
|
|
|
76
76
|
From `learnings.md`, incorporate any patterns from past planning sessions.
|
|
77
77
|
|
|
78
|
-
### Phase 5:
|
|
78
|
+
### Phase 5: Pre-mortem — how will execution fail?
|
|
79
|
+
|
|
80
|
+
This is the most important phase. Before writing the plan, walk through every execution step and ask: **what will go wrong here?** Plans fail at the mechanical level, not the strategic level.
|
|
81
|
+
|
|
82
|
+
**For every step the agent will perform, answer these questions:**
|
|
83
|
+
|
|
84
|
+
1. **Page structure:** How does this page actually work?
|
|
85
|
+
- Is it a SPA that lazy-loads content? → The agent needs to scroll and wait before extracting.
|
|
86
|
+
- Does it use infinite scroll? → The agent needs to scroll to find the right content, not just read what's visible.
|
|
87
|
+
- Are the newest items at the top or the bottom? → Chat/messaging apps show newest at the bottom. Feeds show newest at the top. Getting this wrong means the agent reads stale data.
|
|
88
|
+
- Does the page require a click to expand content (modals, accordions, "Show more")? → Plan the click before the extract.
|
|
89
|
+
|
|
90
|
+
2. **Tab focus:** Will the tab be in the foreground when the agent interacts with it?
|
|
91
|
+
- LinkedIn, Gmail, Facebook, and most modern apps render buttons and dropdowns at zero dimensions in background tabs.
|
|
92
|
+
- If the agent opens multiple tabs, only one is in the foreground. Every click/type/submit must be preceded by `neuron_focus_tab`.
|
|
93
|
+
- Any step involving send/submit/click MUST have "focus tab first" in the plan.
|
|
94
|
+
|
|
95
|
+
3. **Framework compatibility:** How does the page handle input?
|
|
96
|
+
- Does it use React, Ember, Angular, or Vue? → Direct property assignment (`el.value = x`) is invisible to these frameworks. The agent must use `neuron_type` (which uses `execCommand` for contenteditable and native setters for inputs).
|
|
97
|
+
- Does the page use Enter-to-send or a Send button? → If Enter-to-send, plan `neuron_press_key("Enter")` after typing. If Send button, plan `neuron_click`.
|
|
98
|
+
- Does the page block JavaScript eval via CSP? → LinkedIn does. Facebook likely does. Don't plan steps that rely on `neuron_evaluate_js` for these platforms. Use `neuron_click`, `neuron_type`, and `neuron_press_key` instead.
|
|
99
|
+
|
|
100
|
+
4. **Timing and loading:** What needs to load before the agent can act?
|
|
101
|
+
- Rich text editors (Gmail compose, LinkedIn message box) lazy-load. The agent must wait for the contenteditable element to appear before typing.
|
|
102
|
+
- Search results take time to render after submitting a query. Plan a wait.
|
|
103
|
+
- Page navigations need 2-3 seconds before extraction is reliable.
|
|
104
|
+
- After clicking a button (like Reply or Compose), plan a wait for the resulting UI to render.
|
|
105
|
+
|
|
106
|
+
5. **Verification:** How will the agent know the action succeeded?
|
|
107
|
+
- "Click Send" is not verification. Verification is: extract the conversation after sending and confirm the message appears.
|
|
108
|
+
- "Type into the form" is not verification. Verification is: the form field shows the text AND the submit button is enabled.
|
|
109
|
+
- Plan a verification step after every critical action. If the verification fails, plan what to do (retry, skip, alert the user).
|
|
110
|
+
|
|
111
|
+
6. **Edge cases that always happen:**
|
|
112
|
+
- What if there are no new messages? → Don't error, just report "no new messages" and exit.
|
|
113
|
+
- What if the user is logged out? → Detect the login page before trying to interact. Plan for `neuron_detect_blocker`.
|
|
114
|
+
- What if a captcha appears? → Stop immediately, alert the user. Never try to solve captchas.
|
|
115
|
+
- What if the page layout has changed since the selectors were written? → Fall back to `neuron_find_elements` with visible text matching. Text ("Send", "Reply", "Message") is more stable than CSS classes.
|
|
116
|
+
- What if there are too many results and the agent runs out of time? → Set a hard cap per run.
|
|
117
|
+
|
|
118
|
+
**For every selector in the plan, answer:**
|
|
119
|
+
- Is this a CSS class that the platform could rename? → Also plan a text-based fallback.
|
|
120
|
+
- Is this a `data-testid` that's stable? → Better, but still verify it exists before clicking.
|
|
121
|
+
- Can `neuron_find_elements` with `texts: ["Button Label"]` find this instead? → Usually more reliable.
|
|
122
|
+
|
|
123
|
+
**Write the pre-mortem into the plan** as a "Known Failure Modes" section with mitigations for each. This isn't optional — a plan without failure modes is a wish list.
|
|
124
|
+
|
|
125
|
+
### Phase 6: Build the plan
|
|
79
126
|
|
|
80
127
|
Produce `{{output_path}}/{{date}}-{{goal_slug}}.md`:
|
|
81
128
|
|
|
@@ -151,6 +198,24 @@ Produce `{{output_path}}/{{date}}-{{goal_slug}}.md`:
|
|
|
151
198
|
1. [Step-by-step, referencing specific browser tools]
|
|
152
199
|
2. [Each step should map to a neuron_* tool call]
|
|
153
200
|
3. [Include the warm-up / research phase per target]
|
|
201
|
+
4. [Each step that involves clicking or typing MUST include neuron_focus_tab first]
|
|
202
|
+
5. [Each step that reads messages/content MUST scroll to load the latest]
|
|
203
|
+
6. [Each critical action MUST have a verification step after it]
|
|
204
|
+
|
|
205
|
+
## Known Failure Modes
|
|
206
|
+
|
|
207
|
+
For each failure mode, state: what fails, why, how the agent detects it, and what it does instead.
|
|
208
|
+
|
|
209
|
+
| Failure | Detection | Mitigation |
|
|
210
|
+
|---------|-----------|------------|
|
|
211
|
+
| [e.g., Tab in background — send button at zero dimensions] | [neuron_find_elements returns empty or element has zero size] | [neuron_focus_tab before every interaction] |
|
|
212
|
+
| [e.g., CSP blocks evaluateJS on this platform] | [evaluateJS returns CSP error] | [Use neuron_click + neuron_type + neuron_press_key instead] |
|
|
213
|
+
| [e.g., Newest messages at bottom, agent reads top] | [Extracted messages have old timestamps] | [neuron_scroll to bottom before extracting] |
|
|
214
|
+
| [e.g., Framework doesn't detect typed text, buttons stay disabled] | [Send button still disabled after typing] | [neuron_type uses execCommand internally; if still broken, try neuron_press_key Tab to trigger blur/change] |
|
|
215
|
+
| [e.g., Logged out / session expired] | [neuron_detect_blocker finds login wall] | [Stop run, alert user, do not retry] |
|
|
216
|
+
| [e.g., Captcha or rate limit] | [neuron_detect_blocker finds captcha] | [Stop entire session immediately] |
|
|
217
|
+
| [e.g., Page layout changed, selectors broken] | [neuron_find_elements with CSS selector returns empty] | [Fall back to neuron_find_elements with texts: ["Button Label"]] |
|
|
218
|
+
| [e.g., Content lazy-loads after scroll] | [First extraction returns fewer items than expected] | [Scroll + wait 1-2s + re-extract] |
|
|
154
219
|
|
|
155
220
|
## Success Metrics
|
|
156
221
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Learnings
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Updated 2026-09-05 from first live execution failures.
|
|
4
4
|
|
|
5
5
|
## Platform Research Defaults
|
|
6
6
|
|
|
@@ -25,3 +25,51 @@ Starting assumptions (to be validated by actual research each session):
|
|
|
25
25
|
- Action blocks last 24-48 hours
|
|
26
26
|
|
|
27
27
|
These are starting points. ALWAYS research current limits during Phase 2.
|
|
28
|
+
|
|
29
|
+
## Execution Failures — Confirmed (2026-09-05 live testing)
|
|
30
|
+
|
|
31
|
+
These are real failures that occurred during the first live test. Every plan MUST account for them.
|
|
32
|
+
|
|
33
|
+
### Background tab interaction (CRITICAL)
|
|
34
|
+
**What happened:** Agent clicked Send on LinkedIn and Gmail. Both reported success. Neither actually sent — buttons and dropdowns render at zero dimensions in background tabs.
|
|
35
|
+
**Fix:** EVERY plan step that clicks, types, or submits MUST include `neuron_focus_tab` first. No exceptions.
|
|
36
|
+
|
|
37
|
+
### Framework change detection (CRITICAL)
|
|
38
|
+
**What happened:** Agent typed a message into LinkedIn's compose box. The text appeared visually, but LinkedIn's Ember.js framework didn't detect it — the Send button stayed disabled.
|
|
39
|
+
**Why:** Direct DOM property assignment (`el.value = x`, `el.textContent = x`) is invisible to React/Ember/Angular/Vue. These frameworks use their own state management and only detect input from native browser events.
|
|
40
|
+
**Fix:** `neuron_type` now uses `document.execCommand("insertText")` for contenteditable and native prototype setters for inputs. Plans should NOT rely on `neuron_evaluate_js` for typing.
|
|
41
|
+
|
|
42
|
+
### CSP blocking eval (HIGH)
|
|
43
|
+
**What happened:** Agent tried to dispatch keyboard events via `neuron_evaluate_js` on LinkedIn. CSP blocked it: `unsafe-eval` not allowed.
|
|
44
|
+
**Which platforms block eval:** LinkedIn (confirmed). Facebook, Instagram likely.
|
|
45
|
+
**Fix:** Never plan steps that use `neuron_evaluate_js` for interaction on social platforms. Use `neuron_click`, `neuron_type`, `neuron_press_key` instead.
|
|
46
|
+
|
|
47
|
+
### Scroll direction for messages (HIGH)
|
|
48
|
+
**What happened:** Agent extracted messages from a LinkedIn conversation. It read the first messages in the DOM — which were OLD messages from the top. The most recent message (the one to reply to) was at the bottom, off-screen.
|
|
49
|
+
**Why:** All messaging apps (LinkedIn, Gmail threads, X DMs, IG DMs, TikTok DMs) show newest messages at the bottom. The agent must scroll to the bottom before extracting.
|
|
50
|
+
**Fix:** Every plan step that reads messages MUST include "scroll to bottom of conversation" before extracting.
|
|
51
|
+
|
|
52
|
+
### Send verification (MEDIUM)
|
|
53
|
+
**What happened:** Agent claimed "message sent" without verifying. The message was actually still in the compose box.
|
|
54
|
+
**Fix:** After every send action, plan a verification step: wait 1-2 seconds, then extract the conversation and confirm the new message appears. If it doesn't, the send failed.
|
|
55
|
+
|
|
56
|
+
### Lazy-loading content (MEDIUM)
|
|
57
|
+
**What happened:** Gmail's reply composer didn't exist when the agent tried to type into it. The composer loads asynchronously after clicking Reply.
|
|
58
|
+
**Fix:** After any action that triggers new UI (clicking Reply, Compose, opening a modal), plan a wait + `neuron_find_elements` to confirm the target element exists before interacting with it. Don't assume it's there immediately.
|
|
59
|
+
|
|
60
|
+
### Chrome sideload path confusion (LOW)
|
|
61
|
+
**What happened:** Chrome was loading an old extension build from a stale directory. The TOOL_CALL handler didn't exist in the old build.
|
|
62
|
+
**Fix:** Verify the extension version before starting any plan. `neuron_diagnose` returns the extension status.
|
|
63
|
+
|
|
64
|
+
## Pre-mortem Checklist
|
|
65
|
+
|
|
66
|
+
Every plan should be checked against this list before finalizing:
|
|
67
|
+
|
|
68
|
+
- [ ] Every click/type/submit step has `neuron_focus_tab` before it
|
|
69
|
+
- [ ] Every message-reading step scrolls to bottom first
|
|
70
|
+
- [ ] No `neuron_evaluate_js` for interaction on CSP-heavy platforms (LinkedIn, Facebook, Instagram)
|
|
71
|
+
- [ ] Every send/submit step has a verification step after it
|
|
72
|
+
- [ ] Every step that triggers new UI has a wait + find before interacting with the new UI
|
|
73
|
+
- [ ] Login/auth state is checked before starting (neuron_detect_blocker)
|
|
74
|
+
- [ ] There's a plan for what happens if a captcha appears (answer: stop everything)
|
|
75
|
+
- [ ] Selectors have text-based fallbacks for platform DOM changes
|