@jobshimo/browser-link 0.24.0 → 0.25.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agent-instructions/content.js +32 -0
- package/dist/agent-instructions/content.js.map +1 -1
- package/dist/cdp/flow.d.ts +62 -1
- package/dist/cdp/flow.js +386 -144
- package/dist/cdp/flow.js.map +1 -1
- package/dist/cdp/transport.js +5 -1
- package/dist/cdp/transport.js.map +1 -1
- package/dist/commands/self-update.d.ts +27 -1
- package/dist/commands/self-update.js +138 -13
- package/dist/commands/self-update.js.map +1 -1
- package/dist/commands/updates.d.ts +1 -0
- package/dist/commands/updates.js +1 -1
- package/dist/commands/updates.js.map +1 -1
- package/dist/extension/background.js +6 -1
- package/dist/extension/background.js.map +1 -1
- package/dist/extension/flow.d.ts +69 -1
- package/dist/extension/flow.js +393 -144
- package/dist/extension/flow.js.map +1 -1
- package/dist/extension/manifest.json +1 -1
- package/dist/tools/browser-definitions.js +60 -4
- package/dist/tools/browser-definitions.js.map +1 -1
- package/dist/tools/browser-dispatch.d.ts +3 -1
- package/dist/tools/browser-dispatch.js +101 -6
- package/dist/tools/browser-dispatch.js.map +1 -1
- package/package.json +1 -1
|
@@ -184,8 +184,40 @@ function body() {
|
|
|
184
184
|
' working notes and pass as `since_id` next call. One variable. The',
|
|
185
185
|
' server does not maintain per-agent cursors.',
|
|
186
186
|
'',
|
|
187
|
+
'### BULK WORK — `flow` + `repeat`, NEVER a loop inside `evaluate`',
|
|
188
|
+
'',
|
|
189
|
+
'"Click every element matching X until the list drains" is a',
|
|
190
|
+
'`browser.flow` with a `repeat` step, not an `evaluate` loop:',
|
|
191
|
+
'',
|
|
192
|
+
'```',
|
|
193
|
+
'{ repeat: { steps: [{ click: { selector: ".row .delete" } }],',
|
|
194
|
+
' max_iterations: 200, while_found: ".row", delay_ms: 250 } }',
|
|
195
|
+
'```',
|
|
196
|
+
'',
|
|
197
|
+
'- Hundreds of iterations in ONE round trip, and every click is still',
|
|
198
|
+
' trusted CDP input with the occlusion guard and a recovery snapshot.',
|
|
199
|
+
' An `evaluate` loop has NONE of that — `el.click()` is',
|
|
200
|
+
' `isTrusted:false`, nothing hit-tests, nothing is recorded.',
|
|
201
|
+
'- `max_iterations` is REQUIRED and repeats do NOT nest. Inner steps',
|
|
202
|
+
' count against the same 20-step ceiling. If the projected budget',
|
|
203
|
+
' exceeds 60s the flow is rejected up front — lower `max_iterations`',
|
|
204
|
+
' and run the flow again; each call picks up where the last left off',
|
|
205
|
+
' when `while_found` still matches.',
|
|
206
|
+
'- Use `while_found` to decide when to stop, NOT a page counter. It',
|
|
207
|
+
' checks for a VISIBLE match before each iteration and reports',
|
|
208
|
+
' `stopped_by: "condition"` vs `"max_iterations"`.',
|
|
209
|
+
'- `delay_ms` throttles between iterations. Use it on anything',
|
|
210
|
+
' server-backed.',
|
|
211
|
+
'- BEFORE an irreversible bulk run (deleting, sending, paying), call',
|
|
212
|
+
' the same flow once with `dry_run: true`. It dispatches NOTHING and',
|
|
213
|
+
' reports `max_iterations` / `inner_steps` / `delay_ms` /',
|
|
214
|
+
' `while_found` / `would_start` per repeat.',
|
|
215
|
+
'',
|
|
187
216
|
'### LONG-RUNNING WORK — a timed-out `evaluate` KEEPS RUNNING',
|
|
188
217
|
'',
|
|
218
|
+
'Reach for this only when `flow` + `repeat` genuinely cannot express',
|
|
219
|
+
'the work (it needs branching, or arbitrary JS per item).',
|
|
220
|
+
'',
|
|
189
221
|
'A bridge timeout drops the RESPONSE only. The expression itself keeps',
|
|
190
222
|
'running in the page; there is no cancellation path. A timeout reads',
|
|
191
223
|
'like failure, so the reflex is to relaunch — and on irreversible',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content.js","sourceRoot":"","sources":["../../src/agent-instructions/content.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"content.js","sourceRoot":"","sources":["../../src/agent-instructions/content.ts"],"names":[],"mappings":"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"}
|
package/dist/cdp/flow.d.ts
CHANGED
|
@@ -206,6 +206,50 @@ export declare const MAX_FLOW_SLEEP_MS = 30000;
|
|
|
206
206
|
export interface SleepStepParams {
|
|
207
207
|
ms: number;
|
|
208
208
|
}
|
|
209
|
+
/** Hard cap on one `repeat` step's `max_iterations`. The real ceiling in
|
|
210
|
+
* practice is the flow's own worst-case time budget (a repeat's budget is
|
|
211
|
+
* `max_iterations × (inner steps + delay)`), which bites long before this
|
|
212
|
+
* does; this is the backstop that keeps a typo from producing an
|
|
213
|
+
* absurd projected budget. */
|
|
214
|
+
export declare const MAX_FLOW_REPEAT_ITERATIONS = 500;
|
|
215
|
+
/** Hard cap on a `repeat`'s inter-iteration `delay_ms` — same ceiling a
|
|
216
|
+
* standalone `sleep` step may request. */
|
|
217
|
+
export declare const MAX_FLOW_REPEAT_DELAY_MS = 30000;
|
|
218
|
+
/** A BOUNDED loop over a sub-sequence of steps.
|
|
219
|
+
*
|
|
220
|
+
* `max_iterations` is REQUIRED, deliberately: it is what keeps a flow's
|
|
221
|
+
* worst-case duration statically computable, which is the whole basis of
|
|
222
|
+
* the up-front `MAX_FLOW_TIMEOUT_MS` rejection. An unbounded loop would
|
|
223
|
+
* make that budget unknowable and force the bridge to either park
|
|
224
|
+
* indefinitely or time out mid-flow — the exact failure the flow budget
|
|
225
|
+
* exists to prevent.
|
|
226
|
+
*
|
|
227
|
+
* `while_found` is the early stop: the loop runs another iteration only
|
|
228
|
+
* while that selector still matches something VISIBLE in the live DOM.
|
|
229
|
+
* Making the stop condition declarative is the point — it replaces the
|
|
230
|
+
* hand-rolled "parse a counter and guess when we are done" pattern that
|
|
231
|
+
* silently misreads pages whose counters vanish at zero.
|
|
232
|
+
*
|
|
233
|
+
* Nesting is rejected: a repeat may not contain a repeat. One bounded
|
|
234
|
+
* loop keeps the budget arithmetic trivial and the grammar honest.
|
|
235
|
+
* `steps` may not contain a `repeat`, and inner steps count against the
|
|
236
|
+
* same `MAX_FLOW_STEPS` ceiling as outer ones. */
|
|
237
|
+
export interface RepeatStepParams {
|
|
238
|
+
steps: FlowStep[];
|
|
239
|
+
max_iterations: number;
|
|
240
|
+
while_found?: string;
|
|
241
|
+
delay_ms?: number;
|
|
242
|
+
}
|
|
243
|
+
export interface RepeatStepResult {
|
|
244
|
+
iterations_completed: number;
|
|
245
|
+
/** `condition` — `while_found` stopped matching. `max_iterations` — the
|
|
246
|
+
* bound was reached with the condition still true (or with no condition
|
|
247
|
+
* at all). A failing inner step does not produce a result at all: it
|
|
248
|
+
* fails the whole flow, like every other step. */
|
|
249
|
+
stopped_by: 'condition' | 'max_iterations';
|
|
250
|
+
/** Per-iteration list of the inner steps' compacted results. */
|
|
251
|
+
iterations: unknown[][];
|
|
252
|
+
}
|
|
209
253
|
export type FlowStep = {
|
|
210
254
|
find: FindStepParams;
|
|
211
255
|
} | {
|
|
@@ -220,6 +264,8 @@ export type FlowStep = {
|
|
|
220
264
|
drag: DragStepParams;
|
|
221
265
|
} | {
|
|
222
266
|
sleep: SleepStepParams;
|
|
267
|
+
} | {
|
|
268
|
+
repeat: RepeatStepParams;
|
|
223
269
|
};
|
|
224
270
|
/** Everything the step executor needs from the outside world. `background.ts`
|
|
225
271
|
* (extension) / `cdp/transport.ts` (server) binds each method to the real
|
|
@@ -250,6 +296,10 @@ export interface FlowSuccess {
|
|
|
250
296
|
ok: true;
|
|
251
297
|
steps_completed: number;
|
|
252
298
|
results: unknown[];
|
|
299
|
+
/** Present ONLY on a `dryRun` projection, where nothing was dispatched
|
|
300
|
+
* and `steps_completed` is therefore 0. Omitted on a real run, so an
|
|
301
|
+
* existing consumer sees a byte-identical success shape. */
|
|
302
|
+
dry_run?: true;
|
|
253
303
|
}
|
|
254
304
|
export interface FlowFailure {
|
|
255
305
|
ok: false;
|
|
@@ -260,6 +310,14 @@ export interface FlowFailure {
|
|
|
260
310
|
recovery_snapshot: unknown;
|
|
261
311
|
}
|
|
262
312
|
export type FlowResult = FlowSuccess | FlowFailure;
|
|
313
|
+
export interface RunFlowOptions {
|
|
314
|
+
/** Validate and PROJECT the flow without dispatching a single input
|
|
315
|
+
* event, navigation or pause. Answers the one question that matters
|
|
316
|
+
* before an irreversible bulk run — "I am about to do this up to N
|
|
317
|
+
* times; would it even start?" — and is the reason `repeat` and this
|
|
318
|
+
* flag shipped together. */
|
|
319
|
+
dryRun?: boolean;
|
|
320
|
+
}
|
|
263
321
|
/**
|
|
264
322
|
* Run a declarative sequence of steps strictly in order, stopping at the
|
|
265
323
|
* first failure. See the module doc comment for the implicit-target and
|
|
@@ -270,5 +328,8 @@ export type FlowResult = FlowSuccess | FlowFailure;
|
|
|
270
328
|
* array may originate from an untrusted JSON payload cast at the wire
|
|
271
329
|
* boundary in `background.ts` (extension) / `cdp/transport.ts` (server),
|
|
272
330
|
* and a malformed entry must fail the flow cleanly rather than throw.
|
|
331
|
+
*
|
|
332
|
+
* With `options.dryRun`, the flow is validated and projected instead:
|
|
333
|
+
* nothing is dispatched, and each entry describes what WOULD run.
|
|
273
334
|
*/
|
|
274
|
-
export declare function runFlow(steps: readonly FlowStep[], deps: FlowDeps): Promise<FlowResult>;
|
|
335
|
+
export declare function runFlow(steps: readonly FlowStep[], deps: FlowDeps, options?: RunFlowOptions): Promise<FlowResult>;
|