@jobshimo/browser-link 0.16.0 → 0.18.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/agent-instructions/content.js +30 -1
- package/dist/agent-instructions/content.js.map +1 -1
- package/dist/commands/about.js +4 -0
- package/dist/commands/about.js.map +1 -1
- package/dist/extension/background.js +308 -195
- package/dist/extension/background.js.map +1 -1
- package/dist/extension/flow.d.ts +174 -0
- package/dist/extension/flow.js +213 -0
- package/dist/extension/flow.js.map +1 -0
- package/dist/extension/inpage/builders.d.ts +56 -2
- package/dist/extension/inpage/builders.js +201 -4
- package/dist/extension/inpage/builders.js.map +1 -1
- package/dist/extension/manifest.json +1 -1
- package/dist/map/db.js +26 -0
- package/dist/map/db.js.map +1 -1
- package/dist/map/queries.d.ts +29 -0
- package/dist/map/queries.js +44 -2
- package/dist/map/queries.js.map +1 -1
- package/dist/map/tools.js +71 -8
- package/dist/map/tools.js.map +1 -1
- package/dist/permissions.js +12 -0
- package/dist/permissions.js.map +1 -1
- package/dist/tools/browser-definitions.js +185 -1
- package/dist/tools/browser-definitions.js.map +1 -1
- package/dist/tools/browser-dispatch.d.ts +37 -0
- package/dist/tools/browser-dispatch.js +221 -2
- package/dist/tools/browser-dispatch.js.map +1 -1
- package/dist/tools/server-instructions.js +41 -3
- package/dist/tools/server-instructions.js.map +1 -1
- package/package.json +1 -1
|
@@ -34,6 +34,7 @@ const BROWSER_TOOL_NAMES = [
|
|
|
34
34
|
'browser.navigate',
|
|
35
35
|
'browser.snapshot',
|
|
36
36
|
'browser.find',
|
|
37
|
+
'browser.state',
|
|
37
38
|
'browser.canvas_screenshot',
|
|
38
39
|
'browser.console',
|
|
39
40
|
'browser.network',
|
|
@@ -42,6 +43,7 @@ const BROWSER_TOOL_NAMES = [
|
|
|
42
43
|
'browser.type',
|
|
43
44
|
'browser.press',
|
|
44
45
|
'browser.drag',
|
|
46
|
+
'browser.flow',
|
|
45
47
|
'browser.evaluate',
|
|
46
48
|
'browser.events',
|
|
47
49
|
'browser.reset',
|
|
@@ -65,6 +67,9 @@ const MAX_SETTLE_TIMEOUT_MS = 10_000;
|
|
|
65
67
|
/** Matches the extension's DEFAULT_SETTLE_TIMEOUT_MS. */
|
|
66
68
|
const DEFAULT_SETTLE_TIMEOUT_MS = 2_000;
|
|
67
69
|
const PRESS_MODIFIERS = new Set(['Alt', 'Control', 'Meta', 'Shift']);
|
|
70
|
+
/** Roles `browser.find` accepts — shared by the standalone find dispatcher
|
|
71
|
+
* and `browser.flow`'s find-step validation so the two cannot drift. */
|
|
72
|
+
const FIND_ALLOWED_ROLES = new Set(['button', 'link', 'textbox', 'checkbox', 'tab', 'menuitem']);
|
|
68
73
|
/** Type-predicate narrowing for `browser.press`'s `modifiers` param.
|
|
69
74
|
* `Array.isArray` alone narrows `unknown` to `any[]`, not `unknown[]` —
|
|
70
75
|
* without a named predicate here, `.every(...)` after it does not narrow
|
|
@@ -100,6 +105,206 @@ function actionTimeoutWithSettle(settleTimeoutMs) {
|
|
|
100
105
|
const clamped = Math.min(requested, MAX_SETTLE_TIMEOUT_MS);
|
|
101
106
|
return Math.max(ACTION_TIMEOUT_FLOOR_MS, clamped + 5_000);
|
|
102
107
|
}
|
|
108
|
+
// === browser.flow ========================================================
|
|
109
|
+
/** Hard cap on steps per flow — mirrors `maxItems: 20` on the MCP schema
|
|
110
|
+
* (`browser-definitions.ts`) and the extension's own defense-in-depth
|
|
111
|
+
* check in `flow.ts`'s `runFlow`. Enforced here too so an oversized flow
|
|
112
|
+
* is rejected before it ever reaches the extension. */
|
|
113
|
+
const MAX_FLOW_STEPS = 20;
|
|
114
|
+
/** Same ceiling `browser.wait_for_tab` uses for its own timeout budget —
|
|
115
|
+
* the bridge does not park any single tool call longer than this. A flow
|
|
116
|
+
* whose TRUTHFUL worst-case budget exceeds this ceiling is REJECTED up
|
|
117
|
+
* front (see `validateFlowSteps`), never silently capped: the bridge has
|
|
118
|
+
* no cancel path to the extension, so a bridge timeout below the real
|
|
119
|
+
* worst case would drop the response of a flow that is still executing —
|
|
120
|
+
* and an agent retry could then duplicate the actions. */
|
|
121
|
+
const MAX_FLOW_TIMEOUT_MS = 60_000;
|
|
122
|
+
/** Once-per-flow overhead: the WS round trip to the extension plus the
|
|
123
|
+
* recovery snapshot evaluated on the failure path. */
|
|
124
|
+
const FLOW_BASE_OVERHEAD_MS = 2_000;
|
|
125
|
+
/** Per-step overhead: the step's own in-page evaluate round trip(s) and
|
|
126
|
+
* CDP input dispatches. Those are local calls that typically take tens of
|
|
127
|
+
* milliseconds — 500ms per step is generous without inflating the budget
|
|
128
|
+
* so much that legitimate 20-step flows stop fitting under the ceiling. */
|
|
129
|
+
const FLOW_STEP_SLACK_MS = 500;
|
|
130
|
+
/** Worst-case settle wait for one settle-enabled click/type/press step
|
|
131
|
+
* inside a flow. Flow steps only expose `settle_ms` (the quiet-PERIOD
|
|
132
|
+
* length), never `settle_timeout_ms` (the overall CAP) — so every
|
|
133
|
+
* settle-enabled action step's true upper bound is the extension's
|
|
134
|
+
* `DEFAULT_SETTLE_TIMEOUT_MS`. A step that explicitly disables settle
|
|
135
|
+
* (`settle_ms: 0`) skips the wait entirely and costs only the slack.
|
|
136
|
+
*
|
|
137
|
+
* Sanity check the constants keep the documented promise: a full 20-step
|
|
138
|
+
* flow of action steps with DEFAULT settle budgets at
|
|
139
|
+
* 2_000 + 20 * (2_000 + 500) = 52_000ms — comfortably under the 60s
|
|
140
|
+
* ceiling. Only genuinely long wait_for-heavy flows hit the rejection. */
|
|
141
|
+
const FLOW_ACTION_SETTLE_WORST_MS = DEFAULT_SETTLE_TIMEOUT_MS;
|
|
142
|
+
/** Mirror the standalone wait_for contract: default 5s, extension clamps
|
|
143
|
+
* at 30s. The budget uses the same numbers so it never under-models a
|
|
144
|
+
* step the extension would happily run longer. */
|
|
145
|
+
const FLOW_WAIT_FOR_DEFAULT_TIMEOUT_MS = 5_000;
|
|
146
|
+
const FLOW_WAIT_FOR_MAX_TIMEOUT_MS = 30_000;
|
|
147
|
+
const FLOW_STEP_KINDS = ['find', 'click', 'type', 'press', 'wait_for'];
|
|
148
|
+
const FLOW_WAIT_CONDITIONS = new Set(['visible', 'hidden', 'attached', 'detached']);
|
|
149
|
+
/** Identify the step kind. A step must have EXACTLY ONE key and that key
|
|
150
|
+
* must be a recognized kind — extra keys (`{find: {...}, mystery: 1}`)
|
|
151
|
+
* reject, matching the schema's `additionalProperties: false`. */
|
|
152
|
+
function flowStepKind(step) {
|
|
153
|
+
const keys = Object.keys(step);
|
|
154
|
+
if (keys.length !== 1)
|
|
155
|
+
return null;
|
|
156
|
+
const key = keys[0];
|
|
157
|
+
return FLOW_STEP_KINDS.includes(key) ? key : null;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Server-side validation for `browser.flow`'s `steps` array — defense in
|
|
161
|
+
* depth beyond the MCP JSON schema, since the IPC/proxy path in
|
|
162
|
+
* multi-agent mode can reach `handleBrowserTool` without ever going
|
|
163
|
+
* through schema validation. Mirrors how `browser.find`/`browser.press`
|
|
164
|
+
* re-validate their own required fields here rather than trusting the
|
|
165
|
+
* schema alone.
|
|
166
|
+
*
|
|
167
|
+
* Also computes the flow's TRUTHFUL worst-case time budget (`budgetMs`)
|
|
168
|
+
* in the same pass: base overhead + per-step slack + each wait_for's
|
|
169
|
+
* clamped `timeout_ms` + each settle-enabled action step's settle
|
|
170
|
+
* ceiling. A flow whose budget exceeds `MAX_FLOW_TIMEOUT_MS` is rejected
|
|
171
|
+
* with an actionable error instead of silently capping the enforced
|
|
172
|
+
* bridge timeout below the modeled need — see the ceiling constant's doc
|
|
173
|
+
* for why a mid-flow bridge timeout is worse than an up-front rejection.
|
|
174
|
+
*
|
|
175
|
+
* Deliberately loose on the "implicit target" check: it only confirms a
|
|
176
|
+
* `find` step exists SOMEWHERE earlier in the array before a selector-less
|
|
177
|
+
* `click` — it does not simulate the single-step-lookahead consumption
|
|
178
|
+
* rule `runFlow` enforces at runtime. A flow that passes this check can
|
|
179
|
+
* still fail at runtime with a clear per-step error; this check only
|
|
180
|
+
* catches the flows that could never possibly work.
|
|
181
|
+
*
|
|
182
|
+
* Exported so `map/tools.ts` can validate `browser.map.save`'s optional
|
|
183
|
+
* `flows` recipes with the EXACT same rules `browser.flow` itself enforces
|
|
184
|
+
* — a steps array `browser.flow` would reject must be rejected here too,
|
|
185
|
+
* never a second, slightly-different copy of this logic.
|
|
186
|
+
*/
|
|
187
|
+
export function validateFlowSteps(input) {
|
|
188
|
+
if (!Array.isArray(input) || input.length === 0) {
|
|
189
|
+
return { ok: false, error: 'steps must be a non-empty array' };
|
|
190
|
+
}
|
|
191
|
+
if (input.length > MAX_FLOW_STEPS) {
|
|
192
|
+
return { ok: false, error: `at most ${MAX_FLOW_STEPS} steps allowed, got ${input.length}` };
|
|
193
|
+
}
|
|
194
|
+
const steps = [];
|
|
195
|
+
let hasTarget = false;
|
|
196
|
+
let budgetMs = FLOW_BASE_OVERHEAD_MS;
|
|
197
|
+
for (let i = 0; i < input.length; i++) {
|
|
198
|
+
const raw = input[i];
|
|
199
|
+
if (typeof raw !== 'object' || raw === null) {
|
|
200
|
+
return { ok: false, error: `step ${i}: must be an object` };
|
|
201
|
+
}
|
|
202
|
+
const step = raw;
|
|
203
|
+
const kind = flowStepKind(step);
|
|
204
|
+
if (!kind) {
|
|
205
|
+
return {
|
|
206
|
+
ok: false,
|
|
207
|
+
error: `step ${i}: must have exactly one of find | click | type | press | wait_for`,
|
|
208
|
+
};
|
|
209
|
+
}
|
|
210
|
+
const body = step[kind];
|
|
211
|
+
if (typeof body !== 'object' || body === null) {
|
|
212
|
+
return { ok: false, error: `step ${i}: "${kind}" must be an object` };
|
|
213
|
+
}
|
|
214
|
+
const bodyRecord = body;
|
|
215
|
+
if (kind === 'find') {
|
|
216
|
+
if (typeof bodyRecord.text !== 'string' || bodyRecord.text.length === 0) {
|
|
217
|
+
return { ok: false, error: `step ${i}: find.text is required` };
|
|
218
|
+
}
|
|
219
|
+
if (bodyRecord.role !== undefined &&
|
|
220
|
+
(typeof bodyRecord.role !== 'string' || !FIND_ALLOWED_ROLES.has(bodyRecord.role))) {
|
|
221
|
+
return {
|
|
222
|
+
ok: false,
|
|
223
|
+
error: `step ${i}: find.role must be one of button | link | textbox | checkbox | tab | menuitem`,
|
|
224
|
+
};
|
|
225
|
+
}
|
|
226
|
+
hasTarget = true;
|
|
227
|
+
budgetMs += FLOW_STEP_SLACK_MS;
|
|
228
|
+
}
|
|
229
|
+
else if (kind === 'type') {
|
|
230
|
+
if (typeof bodyRecord.text !== 'string') {
|
|
231
|
+
return { ok: false, error: `step ${i}: type.text is required` };
|
|
232
|
+
}
|
|
233
|
+
budgetMs += flowActionBudgetMs(bodyRecord);
|
|
234
|
+
}
|
|
235
|
+
else if (kind === 'press') {
|
|
236
|
+
if (typeof bodyRecord.key !== 'string' || bodyRecord.key.length === 0) {
|
|
237
|
+
return { ok: false, error: `step ${i}: press.key is required` };
|
|
238
|
+
}
|
|
239
|
+
budgetMs += flowActionBudgetMs(bodyRecord);
|
|
240
|
+
}
|
|
241
|
+
else if (kind === 'click') {
|
|
242
|
+
if (bodyRecord.selector === undefined && !hasTarget) {
|
|
243
|
+
return {
|
|
244
|
+
ok: false,
|
|
245
|
+
error: `step ${i}: click has no selector and no preceding find to supply an implicit target`,
|
|
246
|
+
};
|
|
247
|
+
}
|
|
248
|
+
budgetMs += flowActionBudgetMs(bodyRecord);
|
|
249
|
+
}
|
|
250
|
+
else {
|
|
251
|
+
// wait_for — mirror the standalone dispatcher's contract checks so a
|
|
252
|
+
// bad step fails HERE with a clear message instead of in-page with a
|
|
253
|
+
// misleading "condition not met within timeout (0ms, 0 checks)".
|
|
254
|
+
const modes = [bodyRecord.selector, bodyRecord.expression, bodyRecord.network_url].filter((v) => v !== undefined);
|
|
255
|
+
if (modes.length !== 1) {
|
|
256
|
+
return {
|
|
257
|
+
ok: false,
|
|
258
|
+
error: `step ${i}: wait_for requires exactly one of selector | expression | network_url`,
|
|
259
|
+
};
|
|
260
|
+
}
|
|
261
|
+
for (const key of ['selector', 'expression', 'network_url']) {
|
|
262
|
+
if (bodyRecord[key] !== undefined && typeof bodyRecord[key] !== 'string') {
|
|
263
|
+
return { ok: false, error: `step ${i}: wait_for.${key} must be a string` };
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
if (bodyRecord.condition !== undefined &&
|
|
267
|
+
(typeof bodyRecord.condition !== 'string' ||
|
|
268
|
+
!FLOW_WAIT_CONDITIONS.has(bodyRecord.condition))) {
|
|
269
|
+
return {
|
|
270
|
+
ok: false,
|
|
271
|
+
error: `step ${i}: wait_for.condition must be one of visible | hidden | attached | detached`,
|
|
272
|
+
};
|
|
273
|
+
}
|
|
274
|
+
for (const key of ['timeout_ms', 'poll_interval_ms']) {
|
|
275
|
+
if (bodyRecord[key] !== undefined &&
|
|
276
|
+
(typeof bodyRecord[key] !== 'number' || !Number.isFinite(bodyRecord[key]))) {
|
|
277
|
+
return { ok: false, error: `step ${i}: wait_for.${key} must be a finite number` };
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
budgetMs += flowWaitForBudgetMs(bodyRecord);
|
|
281
|
+
}
|
|
282
|
+
steps.push(step);
|
|
283
|
+
}
|
|
284
|
+
if (budgetMs > MAX_FLOW_TIMEOUT_MS) {
|
|
285
|
+
return {
|
|
286
|
+
ok: false,
|
|
287
|
+
error: `flow worst-case budget ${Math.ceil(budgetMs / 1000)}s exceeds the ` +
|
|
288
|
+
`${MAX_FLOW_TIMEOUT_MS / 1000}s ceiling — reduce wait_for timeout_ms values or split the flow`,
|
|
289
|
+
};
|
|
290
|
+
}
|
|
291
|
+
return { ok: true, steps, budgetMs };
|
|
292
|
+
}
|
|
293
|
+
/** Worst case for one click/type/press step: its settle ceiling (unless
|
|
294
|
+
* the step explicitly disables settle with `settle_ms: 0`) plus the
|
|
295
|
+
* per-step slack. */
|
|
296
|
+
function flowActionBudgetMs(body) {
|
|
297
|
+
const settleDisabled = body.settle_ms === 0;
|
|
298
|
+
return (settleDisabled ? 0 : FLOW_ACTION_SETTLE_WORST_MS) + FLOW_STEP_SLACK_MS;
|
|
299
|
+
}
|
|
300
|
+
/** Worst case for one wait_for step: its clamped `timeout_ms` (the
|
|
301
|
+
* extension enforces the same 30s cap) plus the per-step slack. */
|
|
302
|
+
function flowWaitForBudgetMs(body) {
|
|
303
|
+
const requested = typeof body.timeout_ms === 'number' && Number.isFinite(body.timeout_ms) && body.timeout_ms >= 0
|
|
304
|
+
? body.timeout_ms
|
|
305
|
+
: FLOW_WAIT_FOR_DEFAULT_TIMEOUT_MS;
|
|
306
|
+
return Math.min(requested, FLOW_WAIT_FOR_MAX_TIMEOUT_MS) + FLOW_STEP_SLACK_MS;
|
|
307
|
+
}
|
|
103
308
|
/** Convert an internal TabClaim into the wire-safe `PublicClaim`. */
|
|
104
309
|
function toPublicClaim(claim) {
|
|
105
310
|
const publicClaim = {
|
|
@@ -230,8 +435,7 @@ export async function handleBrowserTool(name, args, deps, caller) {
|
|
|
230
435
|
if (typeof text !== 'string' || text.length === 0) {
|
|
231
436
|
throw new Error('browser.find: text required');
|
|
232
437
|
}
|
|
233
|
-
|
|
234
|
-
if (role !== undefined && (typeof role !== 'string' || !ALLOWED_ROLES.has(role))) {
|
|
438
|
+
if (role !== undefined && (typeof role !== 'string' || !FIND_ALLOWED_ROLES.has(role))) {
|
|
235
439
|
throw new Error('browser.find: role must be one of button | link | textbox | checkbox | tab | menuitem');
|
|
236
440
|
}
|
|
237
441
|
// find is a read tool: no claim enforcement, no userGesture concerns.
|
|
@@ -241,6 +445,10 @@ export async function handleBrowserTool(name, args, deps, caller) {
|
|
|
241
445
|
exact: exact === true,
|
|
242
446
|
});
|
|
243
447
|
}
|
|
448
|
+
case 'browser.state':
|
|
449
|
+
// state is a read tool, same bucket as find/snapshot: no claim
|
|
450
|
+
// enforcement, no params beyond tab_id.
|
|
451
|
+
return deps.callBrowserTool(requireTabId(args), 'state', {});
|
|
244
452
|
case 'browser.canvas_screenshot': {
|
|
245
453
|
const { selector, region, format } = (args ?? {});
|
|
246
454
|
if (selector !== undefined && typeof selector !== 'string') {
|
|
@@ -339,6 +547,17 @@ export async function handleBrowserTool(name, args, deps, caller) {
|
|
|
339
547
|
hold_before_release_ms,
|
|
340
548
|
}, deps, caller, timeoutMs);
|
|
341
549
|
}
|
|
550
|
+
case 'browser.flow': {
|
|
551
|
+
const { steps } = (args ?? {});
|
|
552
|
+
const validated = validateFlowSteps(steps);
|
|
553
|
+
if (!validated.ok)
|
|
554
|
+
throw new Error(`browser.flow: ${validated.error}`);
|
|
555
|
+
// budgetMs is the flow's truthful worst case and validateFlowSteps
|
|
556
|
+
// already rejected anything above MAX_FLOW_TIMEOUT_MS, so the
|
|
557
|
+
// enforced timeout is never below the modeled need — only the shared
|
|
558
|
+
// action floor can raise it.
|
|
559
|
+
return runAction('flow', requireTabId(args), { steps: validated.steps }, deps, caller, Math.max(ACTION_TIMEOUT_FLOOR_MS, validated.budgetMs));
|
|
560
|
+
}
|
|
342
561
|
case 'browser.evaluate': {
|
|
343
562
|
const { expression } = args;
|
|
344
563
|
return runAction('evaluate', requireTabId(args), { expression }, deps, caller);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser-dispatch.js","sourceRoot":"","sources":["../../src/tools/browser-dispatch.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"browser-dispatch.js","sourceRoot":"","sources":["../../src/tools/browser-dispatch.ts"],"names":[],"mappings":"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"}
|
|
@@ -43,9 +43,9 @@ over the same Chrome tab, a cooperative claim layer is in place:
|
|
|
43
43
|
agent holds the tab, they return an error naming the owner — do NOT
|
|
44
44
|
retry blindly; ask the user whose tab it should be, or use a
|
|
45
45
|
different tab.
|
|
46
|
-
- Read tools (\`browser.snapshot\`, \`browser.
|
|
47
|
-
\`browser.
|
|
48
|
-
claims.
|
|
46
|
+
- Read tools (\`browser.snapshot\`, \`browser.state\`, \`browser.console\`,
|
|
47
|
+
\`browser.network\`, \`browser.network_body\`, \`browser.events\`,
|
|
48
|
+
\`browser.ping\`) ignore claims.
|
|
49
49
|
- Use \`browser.claim_tab\` with a stable \`label\` ("claude-code",
|
|
50
50
|
"opencode") to reserve a tab before a multi-step flow; release with
|
|
51
51
|
\`browser.release_tab\` (or let the inactivity TTL handle it).
|
|
@@ -66,12 +66,41 @@ from \`list_tabs\`, or surface the conflict to the user.
|
|
|
66
66
|
The live snapshot is always the source of truth. The persistent map is
|
|
67
67
|
a cache of navigation, not a substitute.
|
|
68
68
|
|
|
69
|
+
## Replaying a saved flow recipe
|
|
70
|
+
|
|
71
|
+
\`browser.map.save\` can persist named flow recipes (\`flows: [{ name,
|
|
72
|
+
description?, steps }]\`) alongside selectors/gotchas — \`steps\` follows
|
|
73
|
+
the EXACT \`browser.flow\` step grammar and is validated with the same
|
|
74
|
+
rules. \`browser.map.recall\` returns the app's saved flows
|
|
75
|
+
(\`name\`, \`description\`, \`steps\`, \`use_count\`). The pattern:
|
|
76
|
+
recall → ADAPT the steps (substitute placeholder text like
|
|
77
|
+
\`type text "<QUERY>"\` for the real value the user asked for) →
|
|
78
|
+
\`browser.flow\` with the adapted steps. Never replay a saved flow
|
|
79
|
+
verbatim when it contains a placeholder — substitute first. This is the
|
|
80
|
+
SAME privacy rule as every other map entry: flows store UI STRUCTURE
|
|
81
|
+
only, never domain data (real names, IDs, dates, message content) —
|
|
82
|
+
placeholders exist precisely so a flow can be saved without ever writing
|
|
83
|
+
that data to disk.
|
|
84
|
+
|
|
69
85
|
## Token-efficient patterns (READ THIS BEFORE REACHING FOR EVALUATE)
|
|
70
86
|
|
|
71
87
|
\`browser.evaluate\` is the all-purpose escape hatch. Reach for it only
|
|
72
88
|
when no dedicated tool fits — every dedicated tool below is cheaper in
|
|
73
89
|
tokens AND more reliable than a hand-rolled expression.
|
|
74
90
|
|
|
91
|
+
- **Any multi-step interaction** (find a target, act on it, wait, act
|
|
92
|
+
again) → \`browser.flow({ steps: [...] })\` is now the DEFAULT, not a
|
|
93
|
+
fallback. A sequence like find → click → wait_for → type → press used
|
|
94
|
+
to cost 5-10+ separate MCP round trips — each one a full LLM inference
|
|
95
|
+
— and now costs ONE \`browser.flow\` call (two if a step fails and you
|
|
96
|
+
need a corrective follow-up). A \`find\` step's resolved selector
|
|
97
|
+
becomes the implicit target for the very next click/type/press step
|
|
98
|
+
that omits \`selector\`, so you never have to copy a selector from one
|
|
99
|
+
call into the next by hand. Flow is strictly sequential and fails fast
|
|
100
|
+
on the first bad step, returning a focused \`recovery_snapshot\` so you
|
|
101
|
+
do not need a follow-up \`browser.snapshot\` to see where it stopped.
|
|
102
|
+
Reach for individual click/type/press/find/wait_for calls only when you
|
|
103
|
+
need to branch on an intermediate result.
|
|
75
104
|
- **Finding an element by visible text** → call \`browser.find\` (not
|
|
76
105
|
\`browser.evaluate\` with a textContent grep). \`find\` covers
|
|
77
106
|
\`<div onclick>\` and other "no testid" markup that a naive
|
|
@@ -86,6 +115,15 @@ tokens AND more reliable than a hand-rolled expression.
|
|
|
86
115
|
repeated landmarks, \`max_interactive\` overrides the cap of 120.
|
|
87
116
|
Cuts token cost on the most-called tool; not hackeable from the
|
|
88
117
|
client side (the filtering happens in-page).
|
|
118
|
+
- **Quick orientation without a full snapshot** → \`browser.state\`. Returns
|
|
119
|
+
\`{ url, title, focused?, dialogs?, scroll?, viewport }\` — cheaper than
|
|
120
|
+
\`browser.snapshot\` when you only need to know where you are (is a
|
|
121
|
+
dialog open, what has focus, did the page scroll) before deciding
|
|
122
|
+
whether a full snapshot is even needed.
|
|
123
|
+
- **\`browser.find\` returned \`not-found\`** → read \`near_misses\` (up to 3
|
|
124
|
+
ranked candidates) before giving up or re-snapshotting blind. When
|
|
125
|
+
\`error\` names a role mismatch (text exists, wrong role), drop \`role\`
|
|
126
|
+
or match the role the closest near-miss actually has.
|
|
89
127
|
- **Reading N values** → ONE \`browser.evaluate\` that returns an
|
|
90
128
|
object: \`(() => ({ a: document.querySelector('#a').value, b: ... }))()\`.
|
|
91
129
|
Never call \`browser.evaluate\` N times in a row to read N values.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server-instructions.js","sourceRoot":"","sources":["../../src/tools/server-instructions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAGvD;;sDAEsD;AACtD,MAAM,QAAQ,GAAG
|
|
1
|
+
{"version":3,"file":"server-instructions.js","sourceRoot":"","sources":["../../src/tools/server-instructions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAGvD;;sDAEsD;AACtD,MAAM,QAAQ,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAkKN,CAAC;AAEZ;;mEAEmE;AACnE,SAAS,UAAU,CAAC,GAAmB;IACrC,IAAI,CAAC,GAAG,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IAC1B,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC;IAC3D,MAAM,KAAK,GAAa,CAAC,OAAO,GAAG,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,kBAAkB,CAAC,CAAC;IACjF,KAAK,MAAM,CAAC,IAAI,WAAW;QAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAClD,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC;QAC/B,KAAK,MAAM,CAAC,IAAI,OAAO;YAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAChD,CAAC;IACD,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,EAAE,EAAE,CAAC;QAC5C,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IACxD,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;iEAEiE;AACjE,MAAM,UAAU,uBAAuB;IACrC,MAAM,GAAG,GAAqB,CAAC,GAAG,wBAAwB,EAAE,GAAG,oBAAoB,CAAC,CAAC;IACrF,MAAM,QAAQ,GAAa,CAAC,QAAQ,EAAE,EAAE,EAAE,UAAU,CAAC,CAAC;IACtD,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;QACtB,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC;AAED;8DAC8D;AAC9D,MAAM,CAAC,MAAM,mBAAmB,GAAG,uBAAuB,EAAE,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jobshimo/browser-link",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.18.0",
|
|
4
4
|
"description": "MCP server that bridges Claude Code, OpenCode, GitHub Copilot CLI and other MCP clients to a Chrome tab. Per-tool permissions, multi-agent mode (multiple MCP clients sharing one bridge), persistent UI map across sessions.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"mcp",
|