@jobshimo/browser-link 0.25.2 → 0.27.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/dist/agent-instructions/content.js +53 -6
  2. package/dist/agent-instructions/content.js.map +1 -1
  3. package/dist/bridge/events.d.ts +1 -1
  4. package/dist/bridge/events.js +11 -1
  5. package/dist/bridge/events.js.map +1 -1
  6. package/dist/bridge/ws-bridge.d.ts +18 -0
  7. package/dist/bridge/ws-bridge.js +24 -0
  8. package/dist/bridge/ws-bridge.js.map +1 -1
  9. package/dist/cdp/detached-flows.d.ts +114 -0
  10. package/dist/cdp/detached-flows.js +242 -0
  11. package/dist/cdp/detached-flows.js.map +1 -0
  12. package/dist/cdp/flow.d.ts +76 -8
  13. package/dist/cdp/flow.js +91 -8
  14. package/dist/cdp/flow.js.map +1 -1
  15. package/dist/cdp/support.js +2 -0
  16. package/dist/cdp/support.js.map +1 -1
  17. package/dist/cdp/transport.js +132 -19
  18. package/dist/cdp/transport.js.map +1 -1
  19. package/dist/extension/background.js +535 -16
  20. package/dist/extension/background.js.map +1 -1
  21. package/dist/extension/flow-registry.d.ts +436 -0
  22. package/dist/extension/flow-registry.js +638 -0
  23. package/dist/extension/flow-registry.js.map +1 -0
  24. package/dist/extension/flow.d.ts +81 -5
  25. package/dist/extension/flow.js +96 -5
  26. package/dist/extension/flow.js.map +1 -1
  27. package/dist/extension/manifest.json +1 -1
  28. package/dist/extension/popup.html +138 -0
  29. package/dist/extension/popup.js +144 -0
  30. package/dist/extension/popup.js.map +1 -1
  31. package/dist/messages.d.ts +32 -1
  32. package/dist/permissions.js +12 -0
  33. package/dist/permissions.js.map +1 -1
  34. package/dist/server.js +10 -1
  35. package/dist/server.js.map +1 -1
  36. package/dist/tools/browser-definitions.js +65 -3
  37. package/dist/tools/browser-definitions.js.map +1 -1
  38. package/dist/tools/browser-dispatch.d.ts +13 -0
  39. package/dist/tools/browser-dispatch.js +190 -17
  40. package/dist/tools/browser-dispatch.js.map +1 -1
  41. package/package.json +1 -1
@@ -208,9 +208,10 @@ function body() {
208
208
  ' matches. The win here is safety, not fewer round trips.',
209
209
  '- `max_iterations` is REQUIRED and repeats do NOT nest. Inner steps',
210
210
  ' count against the same 20-step ceiling. If the projected budget',
211
- ' exceeds 60s the flow is rejected up front — lower `max_iterations`',
212
- ' and run the flow again; each call picks up where the last left off',
213
- ' when `while_found` still matches.',
211
+ ' exceeds 60s you have two options: lower `max_iterations` and run the',
212
+ ' flow again (each call picks up where the last left off while',
213
+ ' `while_found` still matches), or run it ONCE with `detach: true` —',
214
+ ' see below.',
214
215
  '- Use `while_found` to decide when to stop, NOT a page counter. It',
215
216
  ' checks for a VISIBLE match before each iteration and reports',
216
217
  ' `stopped_by: "condition"` vs `"max_iterations"`.',
@@ -219,12 +220,58 @@ function body() {
219
220
  '- BEFORE an irreversible bulk run (deleting, sending, paying), call',
220
221
  ' the same flow once with `dry_run: true`. It dispatches NOTHING and',
221
222
  ' reports `max_iterations` / `inner_steps` / `delay_ms` /',
222
- ' `while_found` / `would_start` per repeat.',
223
+ ' `while_found` / `would_start` per repeat, plus `budget_ms` and',
224
+ ' `requires_detach`. A dry run is never rejected for being too long —',
225
+ ' it is judged against the 30-minute detached ceiling, so you can',
226
+ ' always project first and then pick the mode.',
227
+ '',
228
+ '### WORK LONGER THAN 60s — `detach`, then poll `flow_status`',
229
+ '',
230
+ 'A flow over the 60s budget does not have to become an `evaluate` loop.',
231
+ '`browser.flow({ steps, detach: true })` returns AT ONCE with',
232
+ '`{ flow_id, detached: true, expires_at }` and keeps running with every',
233
+ 'guarantee intact — trusted input, occlusion guard, per-iteration',
234
+ 'record, a real stop button.',
235
+ '',
236
+ 'The lifecycle, in order:',
237
+ '',
238
+ '1. `flow({ steps, dry_run: true })` — project it. Non-negotiable',
239
+ ' before anything irreversible.',
240
+ '2. `flow({ steps, detach: true })` → keep the `flow_id`.',
241
+ '3. `flow_status({ tab_id, flow_id })` — poll AT A HUMAN PACE (every',
242
+ ' few seconds at most; each poll is a full inference). While',
243
+ ' `state: "running"` you get `steps_completed` / `iterations_completed`',
244
+ ' and no manifest. Once it ends you get `state` plus `manifest` — the',
245
+ ' same `results` array a foreground flow returns, and the ONLY answer',
246
+ ' to "which N things did that actually touch?".',
247
+ '4. `flow_cancel({ tab_id, flow_id })` to stop it. Lands within one',
248
+ ' step; read the state back rather than assuming.',
249
+ '',
250
+ 'Rules that will bite you otherwise:',
251
+ '',
252
+ '- ONE detached flow per tab. A second is rejected naming the running',
253
+ ' id — poll or cancel that one first.',
254
+ '- `state: "cancelled"` means a PERSON stopped you (popup Stop button,',
255
+ ' or another agent). Never relaunch it. Report what the manifest says',
256
+ ' actually happened and ask.',
257
+ '- `state: "expired"` means it hit the 30-minute ceiling mid-run. The',
258
+ ' partial manifest is real work — reconcile before doing anything.',
259
+ '- `state: "failed"` with `stopped_by: "worker-terminated"` means Chrome',
260
+ ' killed the extension service worker under the flow. It is NEVER',
261
+ ' auto-resumed, and its manifest died with it. Re-derive what is left',
262
+ ' from the page before relaunching, or you will double-act.',
263
+ '- `state: "unknown"` means this bridge has no record of that id. Do',
264
+ ' not read it as "it never ran".',
265
+ '- Do not detach work that fits in 60s. A foreground flow hands you the',
266
+ ' results directly; detaching costs you a polling loop for nothing.',
223
267
  '',
224
268
  '### LONG-RUNNING WORK — a timed-out `evaluate` KEEPS RUNNING',
225
269
  '',
226
- 'Reach for this only when `flow` + `repeat` genuinely cannot express',
227
- 'the work (it needs branching, or arbitrary JS per item).',
270
+ 'Reach for this only when `flow` + `repeat` + `detach` genuinely cannot',
271
+ 'express the work (it needs branching, or arbitrary JS per item). It is',
272
+ 'the escape hatch, and it is strictly worse than everything above:',
273
+ 'untrusted `el.click()`, no occlusion check, no recovery snapshot, no',
274
+ 'status, no cancel, no manifest.',
228
275
  '',
229
276
  'A bridge timeout drops the RESPONSE only. The expression itself keeps',
230
277
  'running in the page; there is no cancellation path. A timeout reads',
@@ -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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"}
@@ -10,7 +10,7 @@
10
10
  * `primary-elected` event as the fundamental marker — older history is
11
11
  * intentionally lost (the agent has nothing useful to do with it anyway).
12
12
  */
13
- export type BridgeEventKind = 'primary-elected' | 'tab-registered' | 'tab-disconnected' | 'tab-renamed' | 'tab-claimed' | 'tab-released' | 'tab-claim-rejected' | 'dialog-opening' | 'dialog-closed' | 'tab-created' | 'flow-recorded';
13
+ export type BridgeEventKind = 'primary-elected' | 'tab-registered' | 'tab-disconnected' | 'tab-renamed' | 'tab-claimed' | 'tab-released' | 'tab-claim-rejected' | 'dialog-opening' | 'dialog-closed' | 'tab-created' | 'flow-recorded' | 'flow-finished';
14
14
  export declare function isExtensionEventKind(kind: string): kind is BridgeEventKind;
15
15
  export interface BridgeEvent {
16
16
  /** Monotonic id assigned by addEvent. */
@@ -17,11 +17,21 @@
17
17
  * message (validated + persisted by `ws-bridge.ts`'s
18
18
  * `handleFlowRecordedMessage`), never a raw `bridge.event`, so a recipe
19
19
  * cannot be announced to `browser.events` without having actually passed
20
- * `validateFlowSteps` and landed in the map. */
20
+ * `validateFlowSteps` and landed in the map.
21
+ *
22
+ * `flow-finished` IS extension-pushable, and belongs on this list rather
23
+ * than beside `flow-recorded`: it asserts only what the extension itself
24
+ * just did (it ran the flow), not something that had to pass server-side
25
+ * validation and land in a database. It is emitted exactly ONCE per
26
+ * detached flow — never per iteration, which with `MAX_EVENTS = 200` would
27
+ * let a single 200-iteration run silently evict every other event in the
28
+ * log. On cdp-direct the same event is added server-side by
29
+ * `cdp/detached-flows.ts`, since there is no extension there to push it. */
21
30
  const EXTENSION_EVENT_KINDS = new Set([
22
31
  'dialog-opening',
23
32
  'dialog-closed',
24
33
  'tab-created',
34
+ 'flow-finished',
25
35
  ]);
26
36
  export function isExtensionEventKind(kind) {
27
37
  return EXTENSION_EVENT_KINDS.has(kind);
@@ -1 +1 @@
1
- {"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/bridge/events.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/bridge/events.ts"],"names":[],"mappings":"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"}
@@ -86,6 +86,24 @@ export declare function pushSettingsToAllTabs(tabs: Map<string, TabSession>, set
86
86
  export declare const MAX_FLOW_NAME_LENGTH = 200;
87
87
  export declare const MAX_FLOW_DESCRIPTION_LENGTH = 2000;
88
88
  export declare function handleFlowRecordedMessage(payload: FlowRecordedPayload, events: BridgeEventLog): ServerToExtension;
89
+ /**
90
+ * Send a `tool.cancel` frame to one tab — the server-side half of the kill
91
+ * switch, behind `browser.flow_cancel`.
92
+ *
93
+ * Fire-and-forget BY DESIGN, and the one place in this module that is.
94
+ * There is nothing to correlate a reply to: the flow being cancelled is
95
+ * still parked in its own `tool.request` and answers there, cleanly, with
96
+ * `stopped_by: 'cancelled'` and its partial results — or, when it was
97
+ * detached, has no open call to answer through at all. Cancellation is
98
+ * cooperative with a worst case of one step, so a synchronous "cancelled:
99
+ * true" here would be a claim this function cannot make; `flow_cancel`
100
+ * reads the real state back with a `flow_status` call instead.
101
+ *
102
+ * Returns whether the frame went out. `false` means the tab is not
103
+ * connected — the caller surfaces the standard not-connected error from
104
+ * the status call that follows, rather than two competing diagnoses.
105
+ */
106
+ export declare function sendToolCancel(tabs: Map<string, TabSession>, tabId: string, flowId: string): boolean;
89
107
  /** Build the callback that sends a tool.request frame to a specific tab and
90
108
  * resolves with the matching tool.response (or rejects on timeout). Kept here
91
109
  * because it touches the same `tabs` / `pendingRequests` maps the bridge
@@ -380,6 +380,30 @@ export function handleFlowRecordedMessage(payload, events) {
380
380
  };
381
381
  }
382
382
  }
383
+ /**
384
+ * Send a `tool.cancel` frame to one tab — the server-side half of the kill
385
+ * switch, behind `browser.flow_cancel`.
386
+ *
387
+ * Fire-and-forget BY DESIGN, and the one place in this module that is.
388
+ * There is nothing to correlate a reply to: the flow being cancelled is
389
+ * still parked in its own `tool.request` and answers there, cleanly, with
390
+ * `stopped_by: 'cancelled'` and its partial results — or, when it was
391
+ * detached, has no open call to answer through at all. Cancellation is
392
+ * cooperative with a worst case of one step, so a synchronous "cancelled:
393
+ * true" here would be a claim this function cannot make; `flow_cancel`
394
+ * reads the real state back with a `flow_status` call instead.
395
+ *
396
+ * Returns whether the frame went out. `false` means the tab is not
397
+ * connected — the caller surfaces the standard not-connected error from
398
+ * the status call that follows, rather than two competing diagnoses.
399
+ */
400
+ export function sendToolCancel(tabs, tabId, flowId) {
401
+ const session = tabs.get(tabId);
402
+ if (!session || session.ws.readyState !== WebSocket.OPEN)
403
+ return false;
404
+ send(session.ws, { kind: 'tool.cancel', flow_id: flowId });
405
+ return true;
406
+ }
383
407
  /** Build the callback that sends a tool.request frame to a specific tab and
384
408
  * resolves with the matching tool.response (or rejects on timeout). Kept here
385
409
  * because it touches the same `tabs` / `pendingRequests` maps the bridge
@@ -1 +1 @@
1
- {"version":3,"file":"ws-bridge.js","sourceRoot":"","sources":["../../src/bridge/ws-bridge.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ws-bridge.js","sourceRoot":"","sources":["../../src/bridge/ws-bridge.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,114 @@
1
+ /**
2
+ * Detached-flow bookkeeping for the cdp-direct transport — the in-process
3
+ * counterpart of the extension's `flow-registry.ts`.
4
+ *
5
+ * The two exist for the same reason and answer the same three questions
6
+ * (`what is running on this tab`, `what is this flow doing`, `stop it`),
7
+ * but they are deliberately NOT a shared module and not a verbatim copy
8
+ * under the drift guard. The extension's version has to survive service
9
+ * worker termination, so it persists records to `chrome.storage.session`
10
+ * and reconciles them on restart; here there is nothing to survive — the
11
+ * runner lives in this Node process, so if the process dies the flow dies
12
+ * with it and there is no state left to be wrong about. That difference is
13
+ * most of the extension file, and pretending the two are the same shape
14
+ * would import a persistence model this side has no use for.
15
+ *
16
+ * What IS identical is the contract an agent sees: the same `flow_status`
17
+ * payload keys, the same `'unknown'` answer for an id nobody recognises,
18
+ * the same one-detached-flow-per-tab rule, the same 30-minute ceiling, and
19
+ * exactly one summary `flow-finished` event per detached flow. On this
20
+ * transport the event is added to `BridgeEventLog` directly (there is no
21
+ * extension to push a `bridge.event` frame), through a sink `server.ts`
22
+ * installs at startup.
23
+ */
24
+ import type { FlowResult } from './flow.js';
25
+ /** Mirrors `MAX_DETACHED_FLOW_MS` in the extension's `flow-registry.ts` and
26
+ * `MAX_DETACHED_FLOW_TIMEOUT_MS` in `tools/browser-dispatch.ts`. Kept in
27
+ * sync manually — the three live in packages that share no module. */
28
+ export declare const MAX_DETACHED_FLOW_MS: number;
29
+ /** How many finished detached flows keep their manifest addressable.
30
+ * Oldest-first eviction. Unlike the extension's cap this is a memory bound
31
+ * rather than a storage-quota one, but the reasoning is the same: the
32
+ * access pattern is "the agent that launched it reads the manifest once". */
33
+ export declare const MAX_DETACHED_FLOW_RECORDS = 10;
34
+ export type FlowStopReason = 'cancelled' | 'expired' | 'grant-revoked';
35
+ export type FlowState = 'running' | 'completed' | 'cancelled' | 'failed' | 'expired' | 'unknown';
36
+ /** The wire payload `browser.flow_status` returns. Same keys the extension
37
+ * produces (`flow-registry.ts`'s `FlowStatusPayload`) so an agent cannot
38
+ * tell the two transports apart; the dispatcher stamps `tab_id` on top. */
39
+ export interface FlowStatusPayload {
40
+ flow_id: string;
41
+ state: FlowState;
42
+ detached: boolean;
43
+ started_at?: number;
44
+ ended_at?: number;
45
+ steps?: number;
46
+ steps_completed?: number;
47
+ iterations_completed?: number;
48
+ stopped_by?: FlowStopReason;
49
+ error?: string;
50
+ cancelling?: true;
51
+ expires_at?: number;
52
+ manifest?: unknown[];
53
+ }
54
+ interface RunningFlow {
55
+ flowId: string;
56
+ tabId: string;
57
+ startedAt: number;
58
+ steps: number;
59
+ expiresAt: number;
60
+ cancelled: boolean;
61
+ stopReason?: FlowStopReason;
62
+ /** 1-based index of the step about to be dispatched, and of the repeat
63
+ * iteration when one is running — `runFlow`'s `onProgress` shape. */
64
+ step: number;
65
+ iteration?: number;
66
+ }
67
+ /** Where the one-per-flow summary event goes. Installed by `server.ts`
68
+ * (`setCdpFlowEventSink`) rather than imported, so this module stays free
69
+ * of a dependency on the bridge's event log — and so a build or test that
70
+ * never wires it simply emits nothing instead of failing. */
71
+ export type FlowEventSink = (data: Record<string, unknown>) => void;
72
+ export declare function setCdpFlowEventSink(sink: FlowEventSink | null): void;
73
+ /** The detached flow already running on this tab, if any. Returned rather
74
+ * than a boolean so the rejection can NAME it — "busy" with no id leaves
75
+ * the caller unable to inspect or stop what is blocking them. */
76
+ export declare function detachedFlowForTab(tabId: string): {
77
+ flowId: string;
78
+ } | undefined;
79
+ export declare function registerDetachedFlow(input: {
80
+ flowId: string;
81
+ tabId: string;
82
+ steps: number;
83
+ now?: number;
84
+ }): RunningFlow;
85
+ /** Record progress — bound to `runFlow`'s `onProgress`. */
86
+ export declare function reportDetachedProgress(flowId: string, progress: {
87
+ step: number;
88
+ iteration?: number;
89
+ }): void;
90
+ /** Flip a running flow to cancelled. Returns whether THIS call is what
91
+ * flipped it — an unknown id, a finished one, or a second request is a
92
+ * clean no-op, exactly as on the extension path. */
93
+ export declare function cancelDetachedFlow(flowId: string, reason?: FlowStopReason): boolean;
94
+ /** The per-step question, ceiling included: cancelled, or past the
95
+ * 30-minute deadline. Flipping the reason HERE is what makes an expiry
96
+ * report as `'expired'` instead of being indistinguishable from a human
97
+ * pressing Stop. */
98
+ export declare function shouldStopDetachedFlow(flowId: string, now: number): boolean;
99
+ /**
100
+ * Retire a finished detached flow: move it to the finished map (manifest
101
+ * included, addressable by id), enforce the record cap, and emit the ONE
102
+ * summary event this flow gets — never one per iteration, which with
103
+ * `MAX_EVENTS = 200` would evict the entire event log on a single long run.
104
+ */
105
+ export declare function finishDetachedFlow(flowId: string, result: FlowResult | null, now?: number): void;
106
+ /** Status of any flow this process knows about, running or finished.
107
+ * `'unknown'` for anything else — never an error, for the same reason
108
+ * cancelling an unknown id is a no-op. */
109
+ export declare function detachedFlowStatus(flowId: string): FlowStatusPayload;
110
+ /** Drop every tracked flow and unwire the event sink. Test-only — module
111
+ * state is per-process by design and nothing on an agent-reachable path
112
+ * clears it. */
113
+ export declare function resetDetachedFlowsForTest(): void;
114
+ export {};
@@ -0,0 +1,242 @@
1
+ /**
2
+ * Detached-flow bookkeeping for the cdp-direct transport — the in-process
3
+ * counterpart of the extension's `flow-registry.ts`.
4
+ *
5
+ * The two exist for the same reason and answer the same three questions
6
+ * (`what is running on this tab`, `what is this flow doing`, `stop it`),
7
+ * but they are deliberately NOT a shared module and not a verbatim copy
8
+ * under the drift guard. The extension's version has to survive service
9
+ * worker termination, so it persists records to `chrome.storage.session`
10
+ * and reconciles them on restart; here there is nothing to survive — the
11
+ * runner lives in this Node process, so if the process dies the flow dies
12
+ * with it and there is no state left to be wrong about. That difference is
13
+ * most of the extension file, and pretending the two are the same shape
14
+ * would import a persistence model this side has no use for.
15
+ *
16
+ * What IS identical is the contract an agent sees: the same `flow_status`
17
+ * payload keys, the same `'unknown'` answer for an id nobody recognises,
18
+ * the same one-detached-flow-per-tab rule, the same 30-minute ceiling, and
19
+ * exactly one summary `flow-finished` event per detached flow. On this
20
+ * transport the event is added to `BridgeEventLog` directly (there is no
21
+ * extension to push a `bridge.event` frame), through a sink `server.ts`
22
+ * installs at startup.
23
+ */
24
+ /** Mirrors `MAX_DETACHED_FLOW_MS` in the extension's `flow-registry.ts` and
25
+ * `MAX_DETACHED_FLOW_TIMEOUT_MS` in `tools/browser-dispatch.ts`. Kept in
26
+ * sync manually — the three live in packages that share no module. */
27
+ export const MAX_DETACHED_FLOW_MS = 30 * 60_000;
28
+ /** How many finished detached flows keep their manifest addressable.
29
+ * Oldest-first eviction. Unlike the extension's cap this is a memory bound
30
+ * rather than a storage-quota one, but the reasoning is the same: the
31
+ * access pattern is "the agent that launched it reads the manifest once". */
32
+ export const MAX_DETACHED_FLOW_RECORDS = 10;
33
+ const running = new Map();
34
+ const finished = new Map();
35
+ let eventSink = null;
36
+ export function setCdpFlowEventSink(sink) {
37
+ eventSink = sink;
38
+ }
39
+ /** The detached flow already running on this tab, if any. Returned rather
40
+ * than a boolean so the rejection can NAME it — "busy" with no id leaves
41
+ * the caller unable to inspect or stop what is blocking them. */
42
+ export function detachedFlowForTab(tabId) {
43
+ for (const flow of running.values()) {
44
+ if (flow.tabId === tabId)
45
+ return { flowId: flow.flowId };
46
+ }
47
+ return undefined;
48
+ }
49
+ export function registerDetachedFlow(input) {
50
+ const startedAt = input.now ?? Date.now();
51
+ const flow = {
52
+ flowId: input.flowId,
53
+ tabId: input.tabId,
54
+ startedAt,
55
+ steps: input.steps,
56
+ expiresAt: startedAt + MAX_DETACHED_FLOW_MS,
57
+ cancelled: false,
58
+ step: 0,
59
+ };
60
+ running.set(flow.flowId, flow);
61
+ return flow;
62
+ }
63
+ /** Record progress — bound to `runFlow`'s `onProgress`. */
64
+ export function reportDetachedProgress(flowId, progress) {
65
+ const flow = running.get(flowId);
66
+ if (!flow)
67
+ return;
68
+ flow.step = progress.step;
69
+ flow.iteration = progress.iteration;
70
+ }
71
+ /** Flip a running flow to cancelled. Returns whether THIS call is what
72
+ * flipped it — an unknown id, a finished one, or a second request is a
73
+ * clean no-op, exactly as on the extension path. */
74
+ export function cancelDetachedFlow(flowId, reason = 'cancelled') {
75
+ const flow = running.get(flowId);
76
+ if (!flow || flow.cancelled)
77
+ return false;
78
+ flow.cancelled = true;
79
+ flow.stopReason = reason;
80
+ return true;
81
+ }
82
+ /** The per-step question, ceiling included: cancelled, or past the
83
+ * 30-minute deadline. Flipping the reason HERE is what makes an expiry
84
+ * report as `'expired'` instead of being indistinguishable from a human
85
+ * pressing Stop. */
86
+ export function shouldStopDetachedFlow(flowId, now) {
87
+ const flow = running.get(flowId);
88
+ // An id the registry has forgotten is not "still allowed to run" — see
89
+ // the extension registry's `shouldStop` for the same reasoning.
90
+ if (!flow)
91
+ return true;
92
+ if (flow.cancelled)
93
+ return true;
94
+ if (now >= flow.expiresAt) {
95
+ flow.cancelled = true;
96
+ flow.stopReason = 'expired';
97
+ return true;
98
+ }
99
+ return false;
100
+ }
101
+ /** Sum the completed iterations of every `repeat` step. Same derivation the
102
+ * extension uses, over the same `results[]`. */
103
+ function countIterations(results) {
104
+ let total;
105
+ for (const entry of results) {
106
+ if (typeof entry !== 'object' || entry === null)
107
+ continue;
108
+ const value = entry.iterations_completed;
109
+ if (typeof value !== 'number' || !Number.isFinite(value))
110
+ continue;
111
+ total = (total ?? 0) + value;
112
+ }
113
+ return total;
114
+ }
115
+ /**
116
+ * Retire a finished detached flow: move it to the finished map (manifest
117
+ * included, addressable by id), enforce the record cap, and emit the ONE
118
+ * summary event this flow gets — never one per iteration, which with
119
+ * `MAX_EVENTS = 200` would evict the entire event log on a single long run.
120
+ */
121
+ export function finishDetachedFlow(flowId, result, now = Date.now()) {
122
+ const flow = running.get(flowId);
123
+ if (!flow)
124
+ return;
125
+ running.delete(flowId);
126
+ let state;
127
+ let stepsCompleted;
128
+ let manifest = [];
129
+ let error;
130
+ let iterationsCompleted;
131
+ if (result === null) {
132
+ // The runner threw (the CDP socket died, the tab closed). No result to
133
+ // read, so fall back to the last progress report: step N announced
134
+ // means N-1 finished.
135
+ state = 'failed';
136
+ stepsCompleted = Math.max(0, flow.step - 1);
137
+ }
138
+ else if (!result.ok) {
139
+ state = 'failed';
140
+ stepsCompleted = result.steps_completed;
141
+ error = result.error;
142
+ }
143
+ else {
144
+ manifest = result.results;
145
+ stepsCompleted = result.steps_completed;
146
+ iterationsCompleted = countIterations(result.results);
147
+ state =
148
+ result.stopped_by === 'cancelled'
149
+ ? flow.stopReason === 'expired'
150
+ ? 'expired'
151
+ : 'cancelled'
152
+ : 'completed';
153
+ }
154
+ finished.set(flowId, {
155
+ flowId,
156
+ tabId: flow.tabId,
157
+ state,
158
+ startedAt: flow.startedAt,
159
+ endedAt: now,
160
+ steps: flow.steps,
161
+ stepsCompleted,
162
+ ...(iterationsCompleted === undefined ? {} : { iterationsCompleted }),
163
+ ...(flow.stopReason === undefined || state === 'completed'
164
+ ? {}
165
+ : { stopReason: flow.stopReason }),
166
+ ...(error === undefined ? {} : { error }),
167
+ manifest,
168
+ });
169
+ evictOldFinishedFlows();
170
+ eventSink?.({
171
+ tab_id: flow.tabId,
172
+ flow_id: flowId,
173
+ state,
174
+ detached: true,
175
+ steps: flow.steps,
176
+ steps_completed: stepsCompleted,
177
+ ...(iterationsCompleted === undefined ? {} : { iterations_completed: iterationsCompleted }),
178
+ duration_ms: Math.max(0, now - flow.startedAt),
179
+ ...(flow.stopReason === undefined || state === 'completed'
180
+ ? {}
181
+ : { stopped_by: flow.stopReason }),
182
+ manifest_available: true,
183
+ });
184
+ }
185
+ function evictOldFinishedFlows() {
186
+ if (finished.size <= MAX_DETACHED_FLOW_RECORDS)
187
+ return;
188
+ const oldestFirst = [...finished.values()].sort((a, b) => a.startedAt - b.startedAt);
189
+ for (const flow of oldestFirst.slice(0, finished.size - MAX_DETACHED_FLOW_RECORDS)) {
190
+ finished.delete(flow.flowId);
191
+ }
192
+ }
193
+ /** Status of any flow this process knows about, running or finished.
194
+ * `'unknown'` for anything else — never an error, for the same reason
195
+ * cancelling an unknown id is a no-op. */
196
+ export function detachedFlowStatus(flowId) {
197
+ const live = running.get(flowId);
198
+ if (live) {
199
+ return {
200
+ flow_id: flowId,
201
+ state: 'running',
202
+ detached: true,
203
+ started_at: live.startedAt,
204
+ steps: live.steps,
205
+ // The runner reports the step it is ABOUT to dispatch.
206
+ steps_completed: Math.max(0, live.step - 1),
207
+ ...(live.iteration === undefined
208
+ ? {}
209
+ : { iterations_completed: Math.max(0, live.iteration - 1) }),
210
+ ...(live.cancelled ? { cancelling: true } : {}),
211
+ expires_at: live.expiresAt,
212
+ };
213
+ }
214
+ const done = finished.get(flowId);
215
+ if (done) {
216
+ return {
217
+ flow_id: flowId,
218
+ state: done.state,
219
+ detached: true,
220
+ started_at: done.startedAt,
221
+ ended_at: done.endedAt,
222
+ steps: done.steps,
223
+ steps_completed: done.stepsCompleted,
224
+ ...(done.iterationsCompleted === undefined
225
+ ? {}
226
+ : { iterations_completed: done.iterationsCompleted }),
227
+ ...(done.stopReason === undefined ? {} : { stopped_by: done.stopReason }),
228
+ ...(done.error === undefined ? {} : { error: done.error }),
229
+ manifest: done.manifest,
230
+ };
231
+ }
232
+ return { flow_id: flowId, state: 'unknown', detached: false };
233
+ }
234
+ /** Drop every tracked flow and unwire the event sink. Test-only — module
235
+ * state is per-process by design and nothing on an agent-reachable path
236
+ * clears it. */
237
+ export function resetDetachedFlowsForTest() {
238
+ running.clear();
239
+ finished.clear();
240
+ eventSink = null;
241
+ }
242
+ //# sourceMappingURL=detached-flows.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detached-flows.js","sourceRoot":"","sources":["../../src/cdp/detached-flows.ts"],"names":[],"mappings":"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"}