@jobshimo/browser-link 0.30.0 → 0.32.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 +19 -0
- package/dist/agent-instructions/content.js.map +1 -1
- package/dist/bridge/ws-bridge.d.ts +1 -1
- package/dist/bridge/ws-bridge.js +6 -2
- package/dist/bridge/ws-bridge.js.map +1 -1
- package/dist/cdp/expect.d.ts +95 -0
- package/dist/cdp/expect.js +197 -0
- package/dist/cdp/expect.js.map +1 -0
- package/dist/cdp/flow.d.ts +28 -3
- package/dist/cdp/flow.js +69 -77
- package/dist/cdp/flow.js.map +1 -1
- package/dist/cdp/inpage/builders.d.ts +24 -0
- package/dist/cdp/inpage/builders.js +90 -0
- package/dist/cdp/inpage/builders.js.map +1 -1
- package/dist/cdp/transport.js +43 -3
- package/dist/cdp/transport.js.map +1 -1
- package/dist/extension/background.js +42 -2
- package/dist/extension/background.js.map +1 -1
- package/dist/extension/expect.d.ts +95 -0
- package/dist/extension/expect.js +203 -0
- package/dist/extension/expect.js.map +1 -0
- package/dist/extension/flow-registry.js +11 -0
- package/dist/extension/flow-registry.js.map +1 -1
- package/dist/extension/flow.d.ts +28 -3
- package/dist/extension/flow.js +69 -81
- package/dist/extension/flow.js.map +1 -1
- package/dist/extension/inpage/builders.d.ts +24 -0
- package/dist/extension/inpage/builders.js +90 -0
- package/dist/extension/inpage/builders.js.map +1 -1
- package/dist/extension/manifest.json +1 -1
- package/dist/messages.d.ts +3 -0
- package/dist/server.js +2 -2
- package/dist/server.js.map +1 -1
- package/dist/tools/browser-definitions.js +53 -4
- package/dist/tools/browser-definitions.js.map +1 -1
- package/dist/tools/browser-dispatch.d.ts +1 -1
- package/dist/tools/browser-dispatch.js +195 -17
- package/dist/tools/browser-dispatch.js.map +1 -1
- package/dist/tools/server-instructions.js +9 -0
- package/dist/tools/server-instructions.js.map +1 -1
- package/package.json +1 -1
|
@@ -29,6 +29,40 @@ const SETTLE_SCHEMA_PROPERTIES = {
|
|
|
29
29
|
description: 'Overall cap on the settle wait in ms, in case the page never goes fully quiet (polling animations, live tickers, spinners). Default 2000, hard ceiling 10000. Ignored when settle_ms is 0.',
|
|
30
30
|
},
|
|
31
31
|
};
|
|
32
|
+
/**
|
|
33
|
+
* Shared `expect` schema for click / type / press and the matching
|
|
34
|
+
* browser.flow steps. Defined once so the wording cannot drift.
|
|
35
|
+
*/
|
|
36
|
+
const EXPECT_SCHEMA = {
|
|
37
|
+
type: 'object',
|
|
38
|
+
description: 'Assert the EFFECT of the action, not just that the page went quiet. After the action dispatches (and settles), the page is polled until every listed condition holds or `timeout_ms` elapses. Unmet: ok:false with `expectation not met: <which> after <ms>ms` plus the settle info (inside a browser.flow it fails that step fail-fast like any other failure). Met: the result carries `expect: { met: true, elapsed_ms }`. Provide at least one condition; all given conditions must hold. appears/disappears conditions are TRANSITIONS from the state sampled right before the action; one that already held beforehand fails immediately.',
|
|
39
|
+
properties: {
|
|
40
|
+
url_changed: {
|
|
41
|
+
type: 'boolean',
|
|
42
|
+
description: 'location.href differs from its value captured right before the action was dispatched.',
|
|
43
|
+
},
|
|
44
|
+
selector_appears: {
|
|
45
|
+
type: 'string',
|
|
46
|
+
description: 'A VISIBLE element matching this CSS selector exists (pierces open Shadow DOM and same-origin iframes, like click/find).',
|
|
47
|
+
},
|
|
48
|
+
selector_disappears: {
|
|
49
|
+
type: 'string',
|
|
50
|
+
description: 'No VISIBLE element matching this CSS selector remains (same deep search).',
|
|
51
|
+
},
|
|
52
|
+
text_appears: {
|
|
53
|
+
type: 'string',
|
|
54
|
+
description: 'This text is visible somewhere on the page (case-insensitive, whitespace-collapsed, deep search).',
|
|
55
|
+
},
|
|
56
|
+
timeout_ms: {
|
|
57
|
+
type: 'number',
|
|
58
|
+
minimum: 1,
|
|
59
|
+
maximum: 10000,
|
|
60
|
+
description: 'Expectation window in ms. Default 3000, hard ceiling 10000 (out-of-range is rejected).',
|
|
61
|
+
},
|
|
62
|
+
},
|
|
63
|
+
additionalProperties: false,
|
|
64
|
+
};
|
|
65
|
+
const EXPECT_GOTCHA = 'Settle proves QUIET, not EFFECT: a click whose handler never fired returns ok:true with settle { mutation_count: 0, settled: true }, indistinguishable from success until a later step fails. When you are counting on a specific effect (navigation, a dialog opening/closing, a result appearing), pass `expect` — e.g. { url_changed: true } or { selector_appears: "[role=dialog]" } — so a no-op action fails HERE with `expectation not met` instead of costing a timeout later. `expect` asserts a TRANSITION: the page is sampled right before the action, `selector_appears` / `text_appears` must be absent beforehand and present afterwards, `selector_disappears` must be present beforehand and gone afterwards, and a condition that already held before the action fails immediately (e.g. `selector_appears "[role=dialog]" was already present before the action`) because it cannot prove the action did anything. `url_changed` compares against the URL sampled right before THIS action, so a navigation still pending from a PREVIOUS step can satisfy it: when chaining navigations, confirm the earlier one landed (an `expect` on that step or a browser.wait_for) first. Prefer `expect` over a following browser.wait_for for the action\'s own consequence; it also works over cdp-direct tabs.';
|
|
32
66
|
export const BROWSER_TOOL_DEFINITIONS = [
|
|
33
67
|
{
|
|
34
68
|
name: 'browser.list_tabs',
|
|
@@ -664,6 +698,7 @@ export const BROWSER_TOOL_DEFINITIONS = [
|
|
|
664
698
|
description: 'Skip the occlusion guard and dispatch the click even if another element currently covers the click point. Escape hatch for cases where the "covering" element is intentional (e.g. a transparent hit-target layer) or the guard produces a false positive. Default false.',
|
|
665
699
|
},
|
|
666
700
|
...SETTLE_SCHEMA_PROPERTIES,
|
|
701
|
+
expect: EXPECT_SCHEMA,
|
|
667
702
|
},
|
|
668
703
|
required: ['tab_id', 'selector'],
|
|
669
704
|
additionalProperties: false,
|
|
@@ -681,7 +716,9 @@ export const BROWSER_TOOL_DEFINITIONS = [
|
|
|
681
716
|
'CLOSED shadow roots (attachShadow({mode:"closed"})) are unreachable — there is no CDP-level workaround. Cross-origin iframes are also unreachable (same-origin policy).',
|
|
682
717
|
'The result carries a compact `settle` object (`{ settled, duration_ms, mutation_count, url_changed?, focus_moved?, reason? }`) unless `settle_ms:0`. `settled:false` means the page never went quiet within `settle_timeout_ms` — not necessarily an error, some pages never stop mutating (tickers, spinners). When the settle wait itself could not run to completion, `settled:false` comes with `reason`: "context-destroyed" (the action navigated the page, destroying the observer\'s execution context — the action still succeeded, and this is itself a strong navigation signal) or "settle-error" (any other settle-side failure). With settle on, a separate browser.wait_for right after a click is usually unnecessary.',
|
|
683
718
|
'The error message distinguishes a malformed selector ("Invalid selector …") from a well-formed selector that matches nothing ("Element not found …") — a syntax error means fix the selector string itself, not retry against a fresher snapshot.',
|
|
719
|
+
EXPECT_GOTCHA,
|
|
684
720
|
],
|
|
721
|
+
example: 'browser.click({ tab_id: "tab_1", selector: "a.next-lesson-link", expect: { url_changed: true, timeout_ms: 5000 } })',
|
|
685
722
|
},
|
|
686
723
|
},
|
|
687
724
|
{
|
|
@@ -695,6 +732,7 @@ export const BROWSER_TOOL_DEFINITIONS = [
|
|
|
695
732
|
text: { type: 'string' },
|
|
696
733
|
clear: { type: 'boolean', default: false },
|
|
697
734
|
...SETTLE_SCHEMA_PROPERTIES,
|
|
735
|
+
expect: EXPECT_SCHEMA,
|
|
698
736
|
},
|
|
699
737
|
required: ['tab_id', 'selector', 'text'],
|
|
700
738
|
additionalProperties: false,
|
|
@@ -710,6 +748,8 @@ export const BROWSER_TOOL_DEFINITIONS = [
|
|
|
710
748
|
'For Enter/Tab/Escape/arrow keys after typing (submitting a form, confirming an autocomplete suggestion), use browser.press — dispatchEvent-based synthetic KeyboardEvent via browser.evaluate is NOT trusted input and many rich editors and autocompletes ignore it.',
|
|
711
749
|
'The result carries a compact `settle` object (same shape as browser.click) unless `settle_ms:0`.',
|
|
712
750
|
'Same error distinction as browser.click: "Invalid selector …" (malformed CSS) vs "Element not found …" (well-formed, no match).',
|
|
751
|
+
'Optional `expect` asserts the effect of typing, e.g. { selector_appears: ".autocomplete-option" }. ' +
|
|
752
|
+
EXPECT_GOTCHA,
|
|
713
753
|
],
|
|
714
754
|
},
|
|
715
755
|
},
|
|
@@ -734,6 +774,7 @@ export const BROWSER_TOOL_DEFINITIONS = [
|
|
|
734
774
|
description: 'Optional. Focus this element (resolved via the same deep Shadow DOM / iframe search as browser.click) before dispatching the key. Omit to send the key to the currently focused element.',
|
|
735
775
|
},
|
|
736
776
|
...SETTLE_SCHEMA_PROPERTIES,
|
|
777
|
+
expect: EXPECT_SCHEMA,
|
|
737
778
|
},
|
|
738
779
|
required: ['tab_id', 'key'],
|
|
739
780
|
additionalProperties: false,
|
|
@@ -751,8 +792,10 @@ export const BROWSER_TOOL_DEFINITIONS = [
|
|
|
751
792
|
'Named keys are case-insensitive ("arrowup" works); single printable characters are case-SENSITIVE. Shift IS auto-added for characters that require it on a US layout — uppercase letters, shifted punctuation like "@" or "{" — so to type an uppercase letter just pass key:"A". Do NOT pass key:"a" with modifiers:["Shift"] expecting an "A": that inserts a lowercase "a" with shiftKey reported as held, a combination no physical keyboard produces.',
|
|
752
793
|
'CLOSED shadow roots and cross-origin iframes are unreachable for the optional `selector`, same as browser.click.',
|
|
753
794
|
'The result carries a compact `settle` object (same shape as browser.click) unless `settle_ms:0`.',
|
|
795
|
+
'Optional `expect` asserts the effect of the key, e.g. Enter submitting a form: { url_changed: true }. ' +
|
|
796
|
+
EXPECT_GOTCHA,
|
|
754
797
|
],
|
|
755
|
-
example: 'browser.press({ tab_id: "tab_1", key: "Enter" })',
|
|
798
|
+
example: 'browser.press({ tab_id: "tab_1", key: "Enter", expect: { selector_appears: ".results" } })',
|
|
756
799
|
},
|
|
757
800
|
},
|
|
758
801
|
{
|
|
@@ -812,7 +855,7 @@ export const BROWSER_TOOL_DEFINITIONS = [
|
|
|
812
855
|
},
|
|
813
856
|
{
|
|
814
857
|
name: 'browser.flow',
|
|
815
|
-
description: 'Run a declarative sequence of steps (find/click/type/press/wait_for/drag/sleep/repeat) in ONE round trip instead of one MCP call per step. Steps execute strictly in order and STOP at the first failure (fail-fast) — there is no branching. A `find` step\'s resolved selector becomes the IMPLICIT TARGET for the very next click/type/press step that omits its own `selector` (an explicit `selector` on that step always overrides it and leaves the implicit target untouched for a later step). `type` and `press` steps that end up with no selector at all — no explicit one, no implicit one — act on whatever currently has focus, same as standalone browser.press; only `click` requires a resolved target and fails the flow if none is available. A `drag` step runs a full drag-and-drop gesture with the SAME params as standalone browser.drag (each endpoint a CSS selector or a viewport x/y coordinate pair, plus duration_ms/hold options) — its endpoints are ALWAYS explicit: it neither consumes nor sets the implicit target, which survives a drag step untouched for a later click/type/press. Drag steps work on extension tabs only: on a cdp: tab_id the flow fails fast at the drag step with the same "not supported over cdp-direct" error standalone browser.drag returns there. `click`/`type`/`press` default `settle_ms` to 150 exactly like the standalone tools, unless a step overrides it. Example (GIF picker): `{ find: { text: "GIF", role: "button" } }, { click: {} }, { wait_for: { selector: "[data-testid=gif-search]", condition: "visible" } }, { type: { selector: "[data-testid=gif-search]", text: "shrek" } }, { press: { key: "Enter" } }` — 5 steps, 1 round trip. On success returns `{ ok: true, steps_completed, results }` where each entry is `{selector}` for a find step, `{ok, settle?}` for an action/wait_for step, or `{ok, drag_mode}` for a drag step (`drag_mode: "html5"|"pointer"` — the same silently-failing-drop diagnostic standalone browser.drag returns) — a click step\'s entry additionally carries `hit_element` exactly like standalone browser.click: present only when the dispatched click landed on a different element than the resolved target, omitted when the click hit the target itself. On failure returns `{ ok: false, failed_step, step_kind, error, steps_completed, recovery_snapshot }` — `error` is the same message the standalone tool would have returned for that failure, and `recovery_snapshot` is a focused `browser.snapshot({only_interactive:true, max_interactive:40})` of the page as it stands, so you see where the flow stopped without a follow-up call. Every response also carries `flow_id`, the opaque id of this run. A flow can additionally come back `{ ok: true, stopped_by: "cancelled", steps_completed, results }`: the HUMAN stopped it from the extension popup (or, on a cdp: tab, revoked the cdp-direct grant). That is a success carrying the partial work that really happened — do NOT relaunch it, and do NOT treat it as a transient failure to retry; report what completed and ask the user what they want instead. `evaluate` and `navigate` are intentionally NOT flow steps in v1 — arbitrary JS inside a flow raises permission-model questions this tool does not solve yet, and a navigation mid-flow can tear down the very document later steps expect to act on; use standalone browser.navigate before a flow, or browser.evaluate after one.',
|
|
858
|
+
description: 'Run a declarative sequence of steps (find/click/type/press/wait_for/drag/sleep/repeat) in ONE round trip instead of one MCP call per step. Steps execute strictly in order and STOP at the first failure (fail-fast) — there is no branching. A `find` step\'s resolved selector becomes the IMPLICIT TARGET for the very next click/type/press step that omits its own `selector` (an explicit `selector` on that step always overrides it and leaves the implicit target untouched for a later step). `type` and `press` steps that end up with no selector at all — no explicit one, no implicit one — act on whatever currently has focus, same as standalone browser.press; only `click` requires a resolved target and fails the flow if none is available. A `drag` step runs a full drag-and-drop gesture with the SAME params as standalone browser.drag (each endpoint a CSS selector or a viewport x/y coordinate pair, plus duration_ms/hold options) — its endpoints are ALWAYS explicit: it neither consumes nor sets the implicit target, which survives a drag step untouched for a later click/type/press. Drag steps work on extension tabs only: on a cdp: tab_id the flow fails fast at the drag step with the same "not supported over cdp-direct" error standalone browser.drag returns there. `click`/`type`/`press` default `settle_ms` to 150 exactly like the standalone tools, unless a step overrides it. They also accept the standalone `expect` (`url_changed` / `selector_appears` / `selector_disappears` / `text_appears` / `timeout_ms`): settle proves QUIET, not EFFECT, so put `expect` on the step whose effect the next steps depend on, and a click that did nothing fails THAT step (`expectation not met: ... after Nms`, with the usual recovery_snapshot) instead of timing out several steps later. Example: `{ click: { selector: "a.next-lesson-link", expect: { url_changed: true } } }`. Example (GIF picker): `{ find: { text: "GIF", role: "button" } }, { click: {} }, { wait_for: { selector: "[data-testid=gif-search]", condition: "visible" } }, { type: { selector: "[data-testid=gif-search]", text: "shrek" } }, { press: { key: "Enter" } }` — 5 steps, 1 round trip. On success returns `{ ok: true, steps_completed, results }` where each entry is `{selector}` for a find step, `{ok, settle?, expect?}` for an action/wait_for step (`expect: { met: true, elapsed_ms }` appears only on a step that set `expect`), or `{ok, drag_mode}` for a drag step (`drag_mode: "html5"|"pointer"` — the same silently-failing-drop diagnostic standalone browser.drag returns) — a click step\'s entry additionally carries `hit_element` exactly like standalone browser.click: present only when the dispatched click landed on a different element than the resolved target, omitted when the click hit the target itself. On failure returns `{ ok: false, failed_step, step_kind, error, steps_completed, recovery_snapshot }` — `error` is the same message the standalone tool would have returned for that failure, and `recovery_snapshot` is a focused `browser.snapshot({only_interactive:true, max_interactive:40})` of the page as it stands, so you see where the flow stopped without a follow-up call. Every response also carries `flow_id`, the opaque id of this run. A flow can additionally come back `{ ok: true, stopped_by: "cancelled", steps_completed, results }`: the HUMAN stopped it from the extension popup (or, on a cdp: tab, revoked the cdp-direct grant). That is a success carrying the partial work that really happened — do NOT relaunch it, and do NOT treat it as a transient failure to retry; report what completed and ask the user what they want instead. A flow that runs out of TIME comes back differently: `{ ok: true, stopped_by: "timeout", steps_completed, results }` (a `repeat` entry carries `iterations_completed`, `stopped_by: "timeout"` and, if the deadline landed mid-iteration, `partial_iteration`). The server computes the flow\'s worst-case budget (each click/type/press is charged its `settle_timeout_ms`, default 2000, NOT `settle_ms`; a repeat multiplies by `max_iterations` and adds `delay_ms`) and hands the runner a deadline slightly shorter than the bridge timeout, so it stops at the next step/iteration boundary and returns what it did instead of dying with nothing. Unlike a human stop, a timeout is NOT a decision: you MAY continue the remaining work, but do NOT relaunch steps that already completed if they are irreversible (clicks that delete/send/pay) — resume from `steps_completed` / `iterations_completed`, using a repeat\'s `while_found` where you can. If the runner is wedged inside one step and cannot answer at all, the server cancels it and recovers progress from the flow registry: `{ ok: true, stopped_by: "timeout", steps_completed, iterations_completed?, results: [], results_available: false, flow_id }` — the per-step results are lost in that case, only the counts survive, and `steps_completed` can be ONE LOWER than what really ran (the step in flight when the cancel landed is not counted), so before resuming verify the page state of the first step you would re-run instead of blindly repeating it. `settle_timeout_ms` (click/type/press, same meaning as on the standalone tools) is the knob that lowers or raises the settle cap a step may burn. `evaluate` and `navigate` are intentionally NOT flow steps in v1 — arbitrary JS inside a flow raises permission-model questions this tool does not solve yet, and a navigation mid-flow can tear down the very document later steps expect to act on; use standalone browser.navigate before a flow, or browser.evaluate after one.',
|
|
816
859
|
inputSchema: {
|
|
817
860
|
type: 'object',
|
|
818
861
|
properties: {
|
|
@@ -858,6 +901,8 @@ export const BROWSER_TOOL_DEFINITIONS = [
|
|
|
858
901
|
},
|
|
859
902
|
force: { type: 'boolean' },
|
|
860
903
|
settle_ms: { type: 'number' },
|
|
904
|
+
settle_timeout_ms: { type: 'number' },
|
|
905
|
+
expect: EXPECT_SCHEMA,
|
|
861
906
|
},
|
|
862
907
|
additionalProperties: false,
|
|
863
908
|
},
|
|
@@ -878,6 +923,8 @@ export const BROWSER_TOOL_DEFINITIONS = [
|
|
|
878
923
|
text: { type: 'string' },
|
|
879
924
|
clear: { type: 'boolean' },
|
|
880
925
|
settle_ms: { type: 'number' },
|
|
926
|
+
settle_timeout_ms: { type: 'number' },
|
|
927
|
+
expect: EXPECT_SCHEMA,
|
|
881
928
|
},
|
|
882
929
|
required: ['text'],
|
|
883
930
|
additionalProperties: false,
|
|
@@ -902,6 +949,8 @@ export const BROWSER_TOOL_DEFINITIONS = [
|
|
|
902
949
|
description: 'Optional — omit to use the implicit target, or to send the key to whatever currently has focus.',
|
|
903
950
|
},
|
|
904
951
|
settle_ms: { type: 'number' },
|
|
952
|
+
settle_timeout_ms: { type: 'number' },
|
|
953
|
+
expect: EXPECT_SCHEMA,
|
|
905
954
|
},
|
|
906
955
|
required: ['key'],
|
|
907
956
|
additionalProperties: false,
|
|
@@ -1009,7 +1058,7 @@ export const BROWSER_TOOL_DEFINITIONS = [
|
|
|
1009
1058
|
type: 'integer',
|
|
1010
1059
|
minimum: 1,
|
|
1011
1060
|
maximum: 500,
|
|
1012
|
-
description: 'REQUIRED hard bound on iterations. The flow budget is max_iterations × (inner steps + delay), so this is usually what decides whether the flow is accepted at all.',
|
|
1061
|
+
description: 'REQUIRED hard bound on iterations. The flow budget is max_iterations × (inner steps + delay), each click/type/press inner step charged its settle_timeout_ms (default 2000), so this is usually what decides whether the flow is accepted at all. If the budget runs out mid-loop the flow returns iterations_completed with stopped_by "timeout" instead of failing.',
|
|
1013
1062
|
},
|
|
1014
1063
|
while_found: {
|
|
1015
1064
|
type: 'string',
|
|
@@ -1063,7 +1112,7 @@ export const BROWSER_TOOL_DEFINITIONS = [
|
|
|
1063
1112
|
"A `drag` step's endpoints are ALWAYS explicit (selector or viewport coords) — drag neither consumes nor sets the find implicit target, and a pending implicit target survives a drag step for a later click/type/press. Both endpoints must be visible in the viewport at once, same as standalone browser.drag.",
|
|
1064
1113
|
'Drag steps are extension-transport only: a flow containing a drag step run on a cdp: tab fails fast at that step with the same "not supported over cdp-direct" error standalone browser.drag returns — the earlier steps HAVE already executed by then.',
|
|
1065
1114
|
'A `sleep` step is NOT the same as `settle_ms`. settle_ms is a quiet-PERIOD wait that returns as soon as the page stops mutating, so on an already-idle page it collapses to nothing — it can never throttle anything. `sleep` is a fixed pause that is always spent in full, and it counts its full ms against the flow budget. Out-of-range ms (outside 1..30000) is REJECTED, never clamped: silently halving a throttle would hit a rate-limited backend at twice the intended rate. A sleep step names no element, so it neither consumes nor sets the find implicit target.',
|
|
1066
|
-
'Worst-case time budget, hard ceiling 60 seconds: each wait_for step contributes its (clamped, max 30s) timeout_ms, each action step its settle ceiling (~2.5s; ~0.5s with settle_ms:0), each drag step its duration_ms (default 1.5s, clamped at 60s) plus any holds (clamped at 10s each), each sleep step its full ms, plus fixed overhead. A flow whose worst case exceeds 60s is REJECTED up front with the computed budget — reduce wait_for timeout_ms or sleep.ms values, or split the flow. A full 20-step flow of action steps with default settle fits comfortably.',
|
|
1115
|
+
'Worst-case time budget, hard ceiling 60 seconds: each wait_for step contributes its (clamped, max 30s) timeout_ms, each action step its settle ceiling (~2.5s; ~0.5s with settle_ms:0) plus its `expect` window when set (timeout_ms, default 3s, max 10s), each drag step its duration_ms (default 1.5s, clamped at 60s) plus any holds (clamped at 10s each), each sleep step its full ms, plus fixed overhead. A flow whose worst case exceeds 60s is REJECTED up front with the computed budget — reduce wait_for timeout_ms or sleep.ms values, or split the flow. A full 20-step flow of action steps with default settle fits comfortably.',
|
|
1067
1116
|
'evaluate and navigate steps are NOT supported in v1 — see the tool description for why. Navigate before the flow; evaluate after it.',
|
|
1068
1117
|
'`repeat` is BOUNDED by construction: `max_iterations` is required, repeats do not nest, and inner steps count against the same 20-step ceiling. That is what keeps the worst case computable — the budget is max_iterations × (inner steps + delay_ms + a while_found probe), and a repeat that projects over 60s is rejected up front like any other flow. Lower max_iterations, shorten the body, or drop delay_ms.',
|
|
1069
1118
|
'A repeat iteration starts with a FRESH implicit target, and none escapes: a `find` inside the body cannot feed a click after the repeat, and a `find` before the repeat cannot feed one inside it. Put the find inside the body.',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser-definitions.js","sourceRoot":"","sources":["../../src/tools/browser-definitions.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"browser-definitions.js","sourceRoot":"","sources":["../../src/tools/browser-definitions.ts"],"names":[],"mappings":"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"}
|
|
@@ -99,7 +99,7 @@ export interface BrowserToolDeps {
|
|
|
99
99
|
* on an extension tab reports that plainly instead of silently doing
|
|
100
100
|
* nothing. cdp-direct tabs never reach it — that runner is in-process
|
|
101
101
|
* and flips its own flag. */
|
|
102
|
-
cancelFlow?(tabId: string, flowId: string): void;
|
|
102
|
+
cancelFlow?(tabId: string, flowId: string, reason?: 'expired'): void;
|
|
103
103
|
/** Optional cdp-direct permission gate — the live `cdp-direct.enabled` +
|
|
104
104
|
* grant check from `cdp/gate.ts`. Checked on EVERY call that addresses a
|
|
105
105
|
* `cdp:` tab, not cached, so a setting flip or grant expiry mid-session is
|
|
@@ -81,6 +81,72 @@ const ACTION_TIMEOUT_FLOOR_MS = 15_000;
|
|
|
81
81
|
const MAX_SETTLE_TIMEOUT_MS = 10_000;
|
|
82
82
|
/** Matches the extension's DEFAULT_SETTLE_TIMEOUT_MS. */
|
|
83
83
|
const DEFAULT_SETTLE_TIMEOUT_MS = 2_000;
|
|
84
|
+
/** Window of an action's optional `expect` — mirrors
|
|
85
|
+
* DEFAULT_EXPECT_TIMEOUT_MS / MAX_EXPECT_TIMEOUT_MS in the extension's
|
|
86
|
+
* `expect.ts` (and its `cdp/expect.ts` copy); kept in sync manually. */
|
|
87
|
+
const DEFAULT_EXPECT_TIMEOUT_MS = 3_000;
|
|
88
|
+
const MAX_EXPECT_TIMEOUT_MS = 10_000;
|
|
89
|
+
const EXPECT_CONDITION_KEYS = [
|
|
90
|
+
'url_changed',
|
|
91
|
+
'selector_appears',
|
|
92
|
+
'selector_disappears',
|
|
93
|
+
'text_appears',
|
|
94
|
+
];
|
|
95
|
+
const EXPECT_KEYS = new Set([...EXPECT_CONDITION_KEYS, 'timeout_ms']);
|
|
96
|
+
/**
|
|
97
|
+
* Validate an action's optional `expect` argument. Returns an error
|
|
98
|
+
* message that starts with `expect` (callers prefix it with the tool or
|
|
99
|
+
* flow-step name), or null when `raw` is absent or well-formed. Rejects
|
|
100
|
+
* rather than clamps an out-of-range window: an expectation that silently
|
|
101
|
+
* waited less than asked would report a failure the caller never earned.
|
|
102
|
+
*/
|
|
103
|
+
function expectArgError(raw) {
|
|
104
|
+
if (raw === undefined)
|
|
105
|
+
return null;
|
|
106
|
+
if (typeof raw !== 'object' || raw === null || Array.isArray(raw)) {
|
|
107
|
+
return 'expect must be an object';
|
|
108
|
+
}
|
|
109
|
+
const e = raw;
|
|
110
|
+
for (const key of Object.keys(e)) {
|
|
111
|
+
if (!EXPECT_KEYS.has(key)) {
|
|
112
|
+
return `expect.${key} is not a known key (url_changed | selector_appears | selector_disappears | text_appears | timeout_ms)`;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
if (e.url_changed !== undefined && typeof e.url_changed !== 'boolean') {
|
|
116
|
+
return 'expect.url_changed must be a boolean';
|
|
117
|
+
}
|
|
118
|
+
for (const key of ['selector_appears', 'selector_disappears', 'text_appears']) {
|
|
119
|
+
if (e[key] !== undefined && (typeof e[key] !== 'string' || e[key].length === 0)) {
|
|
120
|
+
return `expect.${key} must be a non-empty string`;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
if (e.timeout_ms !== undefined &&
|
|
124
|
+
(typeof e.timeout_ms !== 'number' ||
|
|
125
|
+
!Number.isFinite(e.timeout_ms) ||
|
|
126
|
+
e.timeout_ms < 1 ||
|
|
127
|
+
e.timeout_ms > MAX_EXPECT_TIMEOUT_MS)) {
|
|
128
|
+
return `expect.timeout_ms must be a number between 1 and ${MAX_EXPECT_TIMEOUT_MS}`;
|
|
129
|
+
}
|
|
130
|
+
if (e.url_changed !== true &&
|
|
131
|
+
!EXPECT_CONDITION_KEYS.some((k) => k !== 'url_changed' && e[k] !== undefined)) {
|
|
132
|
+
return 'expect needs at least one of url_changed | selector_appears | selector_disappears | text_appears';
|
|
133
|
+
}
|
|
134
|
+
return null;
|
|
135
|
+
}
|
|
136
|
+
/** Throwing wrapper for the standalone click/type/press dispatchers. */
|
|
137
|
+
function requireValidExpect(tool, raw) {
|
|
138
|
+
const error = expectArgError(raw);
|
|
139
|
+
if (error)
|
|
140
|
+
throw new Error(`${tool}: ${error}`);
|
|
141
|
+
}
|
|
142
|
+
/** Window the bridge must additionally wait out for a valid `expect`
|
|
143
|
+
* (0 when absent). Only called after validation. */
|
|
144
|
+
function expectWindowMs(raw) {
|
|
145
|
+
if (typeof raw !== 'object' || raw === null)
|
|
146
|
+
return 0;
|
|
147
|
+
const t = raw.timeout_ms;
|
|
148
|
+
return typeof t === 'number' ? Math.min(t, MAX_EXPECT_TIMEOUT_MS) : DEFAULT_EXPECT_TIMEOUT_MS;
|
|
149
|
+
}
|
|
84
150
|
const PRESS_MODIFIERS = new Set(['Alt', 'Control', 'Meta', 'Shift']);
|
|
85
151
|
/** Roles `browser.find` accepts — shared by the standalone find dispatcher
|
|
86
152
|
* and `browser.flow`'s find-step validation so the two cannot drift. */
|
|
@@ -113,12 +179,12 @@ function isModifierArray(value) {
|
|
|
113
179
|
* that this function starts returning larger budgets — both are fine,
|
|
114
180
|
* a settle wait silently outliving the bridge timeout is not.
|
|
115
181
|
*/
|
|
116
|
-
function actionTimeoutWithSettle(settleTimeoutMs) {
|
|
182
|
+
function actionTimeoutWithSettle(settleTimeoutMs, expectRaw) {
|
|
117
183
|
const requested = typeof settleTimeoutMs === 'number' && Number.isFinite(settleTimeoutMs) && settleTimeoutMs >= 0
|
|
118
184
|
? settleTimeoutMs
|
|
119
185
|
: DEFAULT_SETTLE_TIMEOUT_MS;
|
|
120
186
|
const clamped = Math.min(requested, MAX_SETTLE_TIMEOUT_MS);
|
|
121
|
-
return Math.max(ACTION_TIMEOUT_FLOOR_MS, clamped + 5_000);
|
|
187
|
+
return Math.max(ACTION_TIMEOUT_FLOOR_MS, clamped + expectWindowMs(expectRaw) + 5_000);
|
|
122
188
|
}
|
|
123
189
|
/** Hard ceiling on `browser.evaluate`'s optional `timeout_ms` — the same
|
|
124
190
|
* "the bridge does not park any single tool call longer than this" ceiling
|
|
@@ -202,6 +268,12 @@ const FLOW_ACTION_SETTLE_WORST_MS = DEFAULT_SETTLE_TIMEOUT_MS;
|
|
|
202
268
|
* step the extension would happily run longer. */
|
|
203
269
|
const FLOW_WAIT_FOR_DEFAULT_TIMEOUT_MS = 5_000;
|
|
204
270
|
const FLOW_WAIT_FOR_MAX_TIMEOUT_MS = 30_000;
|
|
271
|
+
/** How much earlier than the bridge timeout the runner's own deadline
|
|
272
|
+
* lands. The runner stops cooperatively at the next step / iteration
|
|
273
|
+
* boundary once the deadline passes and answers with what it has
|
|
274
|
+
* (`stopped_by: "timeout"`); the margin is the time it needs to deliver
|
|
275
|
+
* that answer before the bridge gives up on it. */
|
|
276
|
+
const FLOW_DEADLINE_MARGIN_MS = 3_000;
|
|
205
277
|
/** Mirror the standalone drag contract: interpolation defaults to 1500ms,
|
|
206
278
|
* the extension clamps `duration_ms` at 60s and each hold at 10s
|
|
207
279
|
* (`MAX_DRAG_DURATION_MS` / `MAX_DRAG_HOLD_MS` in `background.ts`). The
|
|
@@ -320,6 +392,22 @@ export function validateFlowSteps(input, opts = {}) {
|
|
|
320
392
|
return { ok: false, error: `step ${i}: "${kind}" must be an object` };
|
|
321
393
|
}
|
|
322
394
|
const bodyRecord = body;
|
|
395
|
+
if (kind === 'click' || kind === 'type' || kind === 'press') {
|
|
396
|
+
const expectError = expectArgError(bodyRecord.expect);
|
|
397
|
+
if (expectError)
|
|
398
|
+
return { ok: false, error: `step ${i}: ${kind}.${expectError}` };
|
|
399
|
+
const settleTimeout = bodyRecord.settle_timeout_ms;
|
|
400
|
+
if (settleTimeout !== undefined &&
|
|
401
|
+
(typeof settleTimeout !== 'number' ||
|
|
402
|
+
!Number.isFinite(settleTimeout) ||
|
|
403
|
+
settleTimeout < 0 ||
|
|
404
|
+
settleTimeout > MAX_SETTLE_TIMEOUT_MS)) {
|
|
405
|
+
return {
|
|
406
|
+
ok: false,
|
|
407
|
+
error: `step ${i}: ${kind}.settle_timeout_ms must be a number between 0 and ${MAX_SETTLE_TIMEOUT_MS}`,
|
|
408
|
+
};
|
|
409
|
+
}
|
|
410
|
+
}
|
|
323
411
|
if (kind === 'find') {
|
|
324
412
|
if (typeof bodyRecord.text !== 'string' || bodyRecord.text.length === 0) {
|
|
325
413
|
return { ok: false, error: `step ${i}: find.text is required` };
|
|
@@ -594,9 +682,72 @@ function requireFlowId(args, tool) {
|
|
|
594
682
|
}
|
|
595
683
|
return flow_id;
|
|
596
684
|
}
|
|
685
|
+
/** The bridge's own rejection for the `flow` tool outliving its timeout
|
|
686
|
+
* (`ws-bridge.ts`). Deliberately exact: a cdp-direct client error such as
|
|
687
|
+
* `cdp-direct: command "X" timed out after 15000ms` is a transport failure,
|
|
688
|
+
* not a flow that ran out of its budget. */
|
|
689
|
+
function isBridgeFlowTimeout(err) {
|
|
690
|
+
return err instanceof Error && /^Tool 'flow' timed out after \d+ms/.test(err.message);
|
|
691
|
+
}
|
|
692
|
+
/**
|
|
693
|
+
* Answer a foreground flow whose bridge timeout fired. Asks the runner to
|
|
694
|
+
* stop (it may be wedged inside one step and would otherwise keep acting
|
|
695
|
+
* after the agent was told the flow ended), then reads its progress back
|
|
696
|
+
* from the flow registry via `flow_status`. The step results themselves
|
|
697
|
+
* live only in the runner, so they are reported as unavailable rather than
|
|
698
|
+
* invented. If the progress cannot be read either, the original error is
|
|
699
|
+
* rethrown tagged with the flow_id so the agent can still ask later.
|
|
700
|
+
*/
|
|
701
|
+
async function recoverTimedOutFlow(tabId, flowId, original, deps) {
|
|
702
|
+
try {
|
|
703
|
+
// 'expired', not a plain cancel: this is the flow running out of time,
|
|
704
|
+
// not a human stop, and the registry must record it that way.
|
|
705
|
+
deps.cancelFlow?.(tabId, flowId, 'expired');
|
|
706
|
+
}
|
|
707
|
+
catch {
|
|
708
|
+
// Best effort: the status read below is what matters.
|
|
709
|
+
}
|
|
710
|
+
const unrecoverable = new Error(`${original.message} (flow_id ${flowId}; its progress could not be recovered — check browser.flow_status before re-running anything, completed steps may be irreversible)`);
|
|
711
|
+
let status;
|
|
712
|
+
try {
|
|
713
|
+
status = await routeToolCall('flow_status', tabId, { flow_id: flowId }, deps);
|
|
714
|
+
}
|
|
715
|
+
catch {
|
|
716
|
+
throw unrecoverable;
|
|
717
|
+
}
|
|
718
|
+
const s = (typeof status === 'object' && status !== null ? status : {});
|
|
719
|
+
// NEVER default the count: an unknown flow (a foreground flow that
|
|
720
|
+
// already finished and left the registry) or a status without a number
|
|
721
|
+
// would read as "0 steps done" and invite the agent to re-run
|
|
722
|
+
// irreversible work that really happened.
|
|
723
|
+
if (s.state !== 'running' || typeof s.steps_completed !== 'number')
|
|
724
|
+
throw unrecoverable;
|
|
725
|
+
return {
|
|
726
|
+
ok: true,
|
|
727
|
+
stopped_by: 'timeout',
|
|
728
|
+
steps_completed: s.steps_completed,
|
|
729
|
+
...(typeof s.iterations_completed === 'number'
|
|
730
|
+
? { iterations_completed: s.iterations_completed }
|
|
731
|
+
: {}),
|
|
732
|
+
results: [],
|
|
733
|
+
results_available: false,
|
|
734
|
+
...(typeof s.state === 'string' ? { flow_state: s.state } : {}),
|
|
735
|
+
flow_id: flowId,
|
|
736
|
+
};
|
|
737
|
+
}
|
|
597
738
|
function flowActionBudgetMs(body) {
|
|
598
739
|
const settleDisabled = body.settle_ms === 0;
|
|
599
|
-
|
|
740
|
+
// The worst case of one settle is its TIMEOUT (the cap), never its quiet
|
|
741
|
+
// period `settle_ms`: a page that never goes quiet burns the whole cap on
|
|
742
|
+
// every action. A step that raises `settle_timeout_ms` is charged for it;
|
|
743
|
+
// one that omits it is charged the default cap.
|
|
744
|
+
const settleCap = body.settle_timeout_ms;
|
|
745
|
+
const settleWorstMs = typeof settleCap === 'number' && Number.isFinite(settleCap) && settleCap >= 0
|
|
746
|
+
? Math.min(settleCap, MAX_SETTLE_TIMEOUT_MS)
|
|
747
|
+
: FLOW_ACTION_SETTLE_WORST_MS;
|
|
748
|
+
return ((settleDisabled ? 0 : settleWorstMs) +
|
|
749
|
+
(body.expect === undefined ? 0 : expectWindowMs(body.expect)) +
|
|
750
|
+
FLOW_STEP_SLACK_MS);
|
|
600
751
|
}
|
|
601
752
|
/** Worst case for one drag step: its clamped `duration_ms` (default 1500,
|
|
602
753
|
* extension cap 60s) plus both clamped holds (extension cap 10s each)
|
|
@@ -1070,15 +1221,17 @@ async function dispatchBrowserTool(name, args, deps, caller) {
|
|
|
1070
1221
|
return routeToolCall('network_body', requireTabId(args), { request_id }, deps);
|
|
1071
1222
|
}
|
|
1072
1223
|
case 'browser.click': {
|
|
1073
|
-
const { selector, force = false, settle_ms, settle_timeout_ms, } = args;
|
|
1074
|
-
|
|
1224
|
+
const { selector, force = false, settle_ms, settle_timeout_ms, expect: expectArg, } = args;
|
|
1225
|
+
requireValidExpect('browser.click', expectArg);
|
|
1226
|
+
return runAction('click', requireTabId(args), { selector, force, settle_ms, settle_timeout_ms, expect: expectArg }, deps, caller, actionTimeoutWithSettle(settle_timeout_ms, expectArg));
|
|
1075
1227
|
}
|
|
1076
1228
|
case 'browser.type': {
|
|
1077
|
-
const { selector, text, clear = false, settle_ms, settle_timeout_ms, } = args;
|
|
1078
|
-
|
|
1229
|
+
const { selector, text, clear = false, settle_ms, settle_timeout_ms, expect: expectArg, } = args;
|
|
1230
|
+
requireValidExpect('browser.type', expectArg);
|
|
1231
|
+
return runAction('type', requireTabId(args), { selector, text, clear, settle_ms, settle_timeout_ms, expect: expectArg }, deps, caller, actionTimeoutWithSettle(settle_timeout_ms, expectArg));
|
|
1079
1232
|
}
|
|
1080
1233
|
case 'browser.press': {
|
|
1081
|
-
const { key, modifiers, selector, settle_ms, settle_timeout_ms } = (args ?? {});
|
|
1234
|
+
const { key, modifiers, selector, settle_ms, settle_timeout_ms, expect: expectArg, } = (args ?? {});
|
|
1082
1235
|
if (typeof key !== 'string' || key.length === 0) {
|
|
1083
1236
|
throw new Error('browser.press: key required');
|
|
1084
1237
|
}
|
|
@@ -1092,7 +1245,15 @@ async function dispatchBrowserTool(name, args, deps, caller) {
|
|
|
1092
1245
|
if (selector !== undefined && typeof selector !== 'string') {
|
|
1093
1246
|
throw new Error('browser.press: selector must be a string when provided');
|
|
1094
1247
|
}
|
|
1095
|
-
|
|
1248
|
+
requireValidExpect('browser.press', expectArg);
|
|
1249
|
+
return runAction('press', requireTabId(args), {
|
|
1250
|
+
key,
|
|
1251
|
+
modifiers: normalizedModifiers,
|
|
1252
|
+
selector,
|
|
1253
|
+
settle_ms,
|
|
1254
|
+
settle_timeout_ms,
|
|
1255
|
+
expect: expectArg,
|
|
1256
|
+
}, deps, caller, actionTimeoutWithSettle(settle_timeout_ms, expectArg));
|
|
1096
1257
|
}
|
|
1097
1258
|
case 'browser.drag': {
|
|
1098
1259
|
const { from_selector, from_x, from_y, to_selector, to_x, to_y, duration_ms, hold_before_move_ms, hold_before_release_ms, } = (args ?? {});
|
|
@@ -1150,14 +1311,31 @@ async function dispatchBrowserTool(name, args, deps, caller) {
|
|
|
1150
1311
|
// transport has registered the flow, so both get the plain action
|
|
1151
1312
|
// floor instead of a budget modelling work the CALL will never wait
|
|
1152
1313
|
// for.
|
|
1153
|
-
const
|
|
1154
|
-
|
|
1155
|
-
|
|
1156
|
-
|
|
1157
|
-
|
|
1158
|
-
|
|
1159
|
-
|
|
1160
|
-
|
|
1314
|
+
const flowTabId = requireTabId(args);
|
|
1315
|
+
const foreground = !dryRun && !detached;
|
|
1316
|
+
const flowTimeoutMs = foreground
|
|
1317
|
+
? Math.max(ACTION_TIMEOUT_FLOOR_MS, validated.budgetMs)
|
|
1318
|
+
: ACTION_TIMEOUT_FLOOR_MS;
|
|
1319
|
+
let result;
|
|
1320
|
+
try {
|
|
1321
|
+
result = await runAction('flow', flowTabId, {
|
|
1322
|
+
steps: validated.steps,
|
|
1323
|
+
flow_id: flowId,
|
|
1324
|
+
...(dryRun ? { dry_run: true } : {}),
|
|
1325
|
+
...(detached ? { detach: true } : {}),
|
|
1326
|
+
// A RELATIVE duration, not a timestamp: the extension and the
|
|
1327
|
+
// server do not share a clock.
|
|
1328
|
+
...(foreground ? { deadline_ms: flowTimeoutMs - FLOW_DEADLINE_MARGIN_MS } : {}),
|
|
1329
|
+
}, deps, caller, flowTimeoutMs);
|
|
1330
|
+
}
|
|
1331
|
+
catch (err) {
|
|
1332
|
+
// The runner's own deadline normally answers first. This is the
|
|
1333
|
+
// backstop for a runner stuck INSIDE one step past the bridge
|
|
1334
|
+
// timeout: recover what the registry knows instead of losing it.
|
|
1335
|
+
if (!foreground || isCdpTabId(flowTabId) || !isBridgeFlowTimeout(err))
|
|
1336
|
+
throw err;
|
|
1337
|
+
return recoverTimedOutFlow(flowTabId, flowId, err, deps);
|
|
1338
|
+
}
|
|
1161
1339
|
// A projection is only useful if it says which mode the flow needs —
|
|
1162
1340
|
// see the dry-run comment above.
|
|
1163
1341
|
const decorated = dryRun
|