effect-browser 0.2.0-beta.3 → 0.2.0-beta.5
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/README.md +15 -6
- package/dist/Browser.d.mts +1 -1
- package/dist/{BrowserData-D_zsf79q.d.mts → BrowserData-DPh3Oaof.d.mts} +28 -20
- package/dist/BrowserData.d.mts +1 -1
- package/dist/BrowserData.mjs +25 -14
- package/dist/BrowserData.mjs.map +1 -1
- package/dist/{BrowserRuntime-e7MXqjOK.d.mts → BrowserRuntime-BBAjpVFa.d.mts} +2 -2
- package/dist/{BrowserRuntime-xBCLDy_5.mjs → BrowserRuntime-DImn_Oe_.mjs} +157 -49
- package/dist/BrowserRuntime-DImn_Oe_.mjs.map +1 -0
- package/dist/BrowserRuntime.d.mts +1 -1
- package/dist/BrowserRuntime.mjs +1 -1
- package/dist/Capture.mjs +70 -29
- package/dist/Capture.mjs.map +1 -1
- package/dist/{CaptureData-B5-mXlyq.mjs → CaptureData-Dys0Ko9d.mjs} +5 -3
- package/dist/{CaptureData-B5-mXlyq.mjs.map → CaptureData-Dys0Ko9d.mjs.map} +1 -1
- package/dist/CaptureData.d.mts +6 -3
- package/dist/CaptureData.mjs +1 -1
- package/dist/Chromium.d.mts +1 -1
- package/dist/Chromium.mjs +5 -2
- package/dist/Chromium.mjs.map +1 -1
- package/dist/PageControl.d.mts +1 -1
- package/dist/Testing.d.mts +2 -2
- package/dist/Testing.mjs +54 -20
- package/dist/Testing.mjs.map +1 -1
- package/package.json +1 -1
- package/dist/BrowserRuntime-xBCLDy_5.mjs.map +0 -1
package/README.md
CHANGED
|
@@ -129,6 +129,13 @@ Chromium identity is `{ provider: "chromium", id }`, identifying this ownership
|
|
|
129
129
|
|
|
130
130
|
`launch.proxy: { server, bypass? }` forwards an existing host-operated proxy to Chromium. With a proxy, the default bypass value is `<-loopback>` so Chromium does not silently exclude loopback destinations; a different bypass is an explicit host choice. Additional reviewed native flags, such as disabling QUIC and non-proxied WebRTC UDP, can be supplied through `launch.args`. This module does not implement a proxy or qualify its transport/DNS coverage. Browser policy remains `Unrestricted`; a local endpoint, URL admission or successful local test never establishes whole-browser egress containment. Preserve and test the selected enforcing proxy independently. The Browserbase integration validates its own provider-issued endpoints separately.
|
|
131
131
|
|
|
132
|
+
Owned Chromium also watches a parent-owned debugging pipe for disconnection. The pipe carries
|
|
133
|
+
no protocol commands; Playwright continues to use the loopback endpoint. If the host exits or is
|
|
134
|
+
killed, including before `connect`, the operating system closes the pipe and Chromium exits.
|
|
135
|
+
Normal scoped cleanup still checks process-group termination and removes the profile. A killed
|
|
136
|
+
host cannot produce a cleanup receipt or remove its temporary profile. Borrowed attachments have
|
|
137
|
+
no such pipe and leave their externally owned browser running.
|
|
138
|
+
|
|
132
139
|
## Passive status and native diagnostics
|
|
133
140
|
|
|
134
141
|
```ts
|
|
@@ -419,7 +426,7 @@ const result =
|
|
|
419
426
|
],
|
|
420
427
|
submit: create,
|
|
421
428
|
});
|
|
422
|
-
//
|
|
429
|
+
// Dispatched toggle fields and the optional submit also carry bounded input receipts.
|
|
423
430
|
```
|
|
424
431
|
|
|
425
432
|
Each field gives exactly one of `value`, text that replaces the contents of an input, textarea or content-editable element; `checked`, the state a checkbox, radio or switch should end in, clicked only when it differs, and a native radio is never asked to clear itself; or `options`, issued option IDs of a native select exactly as for `selectOption`. A form has at most 32 fields, each control at most once, and its submit control is not also one of its fields.
|
|
@@ -509,7 +516,7 @@ perspective and other unsupported frame mappings are refused rather than guessed
|
|
|
509
516
|
These reads and native input are separate operations in the browser: page script
|
|
510
517
|
can still change geometry between validation and dispatch.
|
|
511
518
|
|
|
512
|
-
An `InputReceipt` carries the target it was sent to, the position this owner commanded
|
|
519
|
+
An `InputReceipt` carries the target it was sent to, the position this owner commanded, and an interval on the same host monotonic clock that stamps `CapturedFrame.receivedMonotonicNanos`. Pointer moves, hovers and positioned wheels report their known point. A Playwright-managed click reports `position: null`: Playwright does not expose its chosen click point through the supported API, so the receipt does not guess. The click still uses Playwright's exact-node checks and native hit testing. Its unknown point invalidates the owner's remembered pointer position, so later key receipts also report `null` until a known pointer command places it again. The click interval brackets the supported Playwright call and may include actionability or navigation waits; Playwright does not expose the exact native dispatch instant. Input and pixels share one timeline, so a compositor can place known points on frames that show them. A wheel or click receipt does not claim the page finished work triggered by the input or that any frame shows it.
|
|
513
520
|
|
|
514
521
|
### Real key input
|
|
515
522
|
|
|
@@ -664,7 +671,9 @@ const delayed = interval.frames.pipe(
|
|
|
664
671
|
|
|
665
672
|
`Capture.multipart(frames)` turns frames into one `multipart/x-mixed-replace` response for an `<img>`, the motion JPEG that WHATWG HTML defines for images. It closes each frame with the next part's delimiter and headers at once, because a browser shows a part only when it has read the headers of the one after it: without that, a viewer runs one frame behind and never shows the last picture of a page that has gone still. It writes no metadata, so nothing but pictures reaches a viewer, and it draws a new boundary from `Crypto` for each response. Call it once per viewer, over one fan-out of the interval, for example a sliding `PubSub` with `replay: 1` so that a slow viewer skips frames without slowing anyone else and a new one is shown the current picture. End that fan-out before the HTTP server stops: a server waits for its open responses.
|
|
666
673
|
|
|
667
|
-
Closing, navigating, detaching a relevant frame, or resizing the captured page ends its interval explicitly without ending a sibling page's capture. `Capture.start(session, { lifetime: "page" })` instead follows a page's main frame across documents: start it before a navigation and it covers the loading in between. The native screencast is never restarted for a navigation, so a boundary is not a gap this package introduced. Each frame carries the `document` it was received during (0, then one more per
|
|
674
|
+
Closing, navigating, detaching a relevant frame, or resizing the captured page ends its interval explicitly without ending a sibling page's capture. `Capture.start(session, { lifetime: "page" })` instead follows a page's main frame across documents: start it before a navigation and it covers the loading in between. Same-document URL changes leave document-lifetime capture and observations active. A page-lifetime interval records those changes with `sameDocument: true` and keeps the current document number; only a cross-document commit advances it. The native screencast is never restarted for a navigation, so a boundary is not a gap this package introduced. Each frame carries the `document` it was received during (0, then one more per new document), and the summary's bounded `documentBoundaries` give the last sequence before each URL change and the address it reached, with `initialUrl` for document 0. That is attribution by receipt order, not proof of whose pixels a frame shows: one received just after a navigation can still show the document before it. Selecting another page or frame does not invalidate an unrelated interval. Handoff pause, connection loss, an uncertain owner and session closure still invalidate all child intervals. A confirmed native stop releases only its own reservation; a failed stop on a live page keeps that target quarantined until a late stop confirms or the page definitively closes. Stopping a child capture does not close its browser. The frame seam has **no website-audio source**, so this package does not synthesize silent samples or infer audio support from a video container. Caller encoding is demonstrated in [the caller encoder example](../browserbase/examples/record-video.ts); the example decodes every generated frame with the caller's FFmpeg and checks presentation timestamps and pixel checksums. Native acceptance requires changing pixels and source-time agreement rather than accepting container headers as video evidence. Filming across a navigation with one page-lifetime interval, resampled onto a constant-rate reel with the address of each document reported, is demonstrated in [the footage example](../browserbase/examples/realistic-footage/README.md).
|
|
675
|
+
|
|
676
|
+
Same-document detection uses the pinned Playwright 1.63.0 client `Frame` event `navigated`: `newDocument` is absent for URL-only changes, and the client emits this event synchronously before `Page` emits `framenavigated`. A runtime missing that private signal fails explicitly rather than treating URL changes as document commits.
|
|
668
677
|
|
|
669
678
|
### Read metadata while capture is running
|
|
670
679
|
|
|
@@ -699,10 +708,10 @@ guarantee.
|
|
|
699
708
|
Footage from `capture` is the page surface. It has no pointer, no tab strip and no address bar, so on its own it reads as the inside of a tab rather than as a browser. Drawing those is the application's, exactly as cursor artwork, easing and encoding are: this package has no window-compositing API and will not grow one. What it owes a compositor is the evidence only it can see, on one timeline:
|
|
700
709
|
|
|
701
710
|
- each frame's `receivedMonotonicNanos`, and the `document` it was received during;
|
|
702
|
-
- an `InputReceipt` for
|
|
703
|
-
- an address for every document a frame can name: `initialUrl` for document 0, read in the same turn the watch is installed, and a `url` on each boundary, read inside the navigation event that committed it. An application that samples `observe()` between actions can learn an address, but never when it became the address. One longer than 8192 characters is `null`, never cut into an address the page did not show.
|
|
711
|
+
- an `InputReceipt` for each exposed native pointer, click and key operation, with a known position when the owner has one and an interval on that same clock. Internal download and file-chooser clicks clear the remembered pointer position but do not expose a receipt;
|
|
712
|
+
- an address for every document a frame can name: `initialUrl` for document 0, read in the same turn the watch is installed, and a `url` on each cross-document boundary, read inside the navigation event that committed it. Page-lifetime captures separately mark same-document URL changes without advancing the document number. An application that samples `observe()` between actions can learn an address, but never when it became the address. One longer than 8192 characters is `null`, never cut into an address the page did not show.
|
|
704
713
|
|
|
705
|
-
A boundary is the commit, and it is the only moment of a navigation an application cannot see for itself. When
|
|
714
|
+
A cross-document boundary is the commit, and it is the only moment of a navigation an application cannot see for itself. A same-document boundary records a URL change without claiming that a new document committed. When a cross-document navigation started and when its document finished loading are yours to stamp around the operation that caused it, because you made the call: `startNavigation` returns at dispatch and its `completed` resolves at DOMContentLoaded. The clock is Effect's `Clock`, read where the session was opened and the capture was started, so `Clock.clockWith((clock) => clock.monotonicTimeNanos)` in the same runtime is on the same timeline as every frame and receipt. A title is page state that changes whenever the page likes, not part of a transition: read it with `session.pages` when you need one, and stamp that read yourself.
|
|
706
715
|
|
|
707
716
|
The two clocks are never related for you. `sourceTimeMillis` is the browser's wall clock; everything above is the host's monotonic clock; on a hosted session they differ by an offset this package cannot observe. Every frame it receives is already late by the very capture latency it would be trying to measure, and nothing else it is handed carries the browser's time. Relating them takes a round trip into the page, which costs either a charged action or a registered binding, on a schedule only the application can choose, and it fails on a held page. So place input on frames by receipt time, which is always available and late by the capture latency, or measure the offset yourself with a four-timestamp exchange over a typed binding, as NTP does: the page stamps when it called and when the reply arrived, the host stamps when it received and when it replied, and half the best round trip is the error bound to report beside the offset.
|
|
708
717
|
|
package/dist/Browser.d.mts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { f as Plan, g as ReadinessOutcome, s as Bootstrap_d_exports, t as BindingDiagnostics } from "./Bootstrap-B9UUXsvF.mjs";
|
|
2
2
|
import { BrowserError, InitializationError } from "./Errors.mjs";
|
|
3
|
-
import { $ as TypeRequest, D as NavigationResult, E as NavigateRequest, F as PointerMoveRequest, H as ScreenshotResult, J as SessionStatus, L as PressRequest, N as PageInfo, O as Observation, Q as TextResult, R as ReadTextRequest, S as InputReceipt, U as ScrollRequest, V as ScreenshotRequest, W as SelectOptions, X as Target, Y as StartNavigationRequest, _ as FrameInfo, at as WheelRequest, c as ClickRequest, d as FillFormRequest, et as Viewport, f as FillFormResult, i as BrowserDiagnostics, it as WaitForElementRequest, j as ObservedElement, k as ObservationOptions, l as ControlFacts, o as Checkpoint, p as FillRequest, s as CheckpointOptions, t as ActionResult, u as FillFormOptions, v as HoverRequest, w as KeyStroke } from "./BrowserData-
|
|
3
|
+
import { $ as TypeRequest, D as NavigationResult, E as NavigateRequest, F as PointerMoveRequest, H as ScreenshotResult, J as SessionStatus, L as PressRequest, N as PageInfo, O as Observation, Q as TextResult, R as ReadTextRequest, S as InputReceipt, U as ScrollRequest, V as ScreenshotRequest, W as SelectOptions, X as Target, Y as StartNavigationRequest, _ as FrameInfo, at as WheelRequest, c as ClickRequest, d as FillFormRequest, et as Viewport, f as FillFormResult, i as BrowserDiagnostics, it as WaitForElementRequest, j as ObservedElement, k as ObservationOptions, l as ControlFacts, o as Checkpoint, p as FillRequest, s as CheckpointOptions, t as ActionResult, u as FillFormOptions, v as HoverRequest, w as KeyStroke } from "./BrowserData-DPh3Oaof.mjs";
|
|
4
4
|
import { Effect, Scope } from "effect";
|
|
5
5
|
//#region src/Browser.d.ts
|
|
6
6
|
/**
|
|
@@ -253,12 +253,6 @@ declare const FillFormOptions: Schema.Struct<{
|
|
|
253
253
|
readonly settleMillis: Schema.optionalKey<Schema.Int>;
|
|
254
254
|
}>;
|
|
255
255
|
type FillFormOptions = typeof FillFormOptions.Type;
|
|
256
|
-
declare const FormFieldResult_base: Schema.Class<FormFieldResult, Schema.Struct<{
|
|
257
|
-
readonly elementId: Schema.NonEmptyString;
|
|
258
|
-
readonly status: Schema.Literals<readonly ["set", "unchanged"]>;
|
|
259
|
-
}>, {}>;
|
|
260
|
-
/** `set` dispatched input; `unchanged` needed none, because a toggle already held its state. */
|
|
261
|
-
declare class FormFieldResult extends FormFieldResult_base {}
|
|
262
256
|
declare const FormStop_base: Schema.Class<FormStop, Schema.Struct<{
|
|
263
257
|
readonly stage: Schema.Literals<readonly ["field", "verify", "submit"]>;
|
|
264
258
|
readonly elementId: Schema.optionalKey<Schema.NonEmptyString>;
|
|
@@ -270,22 +264,15 @@ declare const FormStop_base: Schema.Class<FormStop, Schema.Struct<{
|
|
|
270
264
|
* verification that could not read the form at all names none.
|
|
271
265
|
*/
|
|
272
266
|
declare class FormStop extends FormStop_base {}
|
|
273
|
-
declare const
|
|
274
|
-
readonly
|
|
275
|
-
readonly
|
|
276
|
-
readonly url: Schema.NonEmptyString;
|
|
277
|
-
readonly stopped: Schema.optionalKey<typeof FormStop>;
|
|
267
|
+
declare const ScrollRequest_base: Schema.Class<ScrollRequest, Schema.Struct<{
|
|
268
|
+
readonly deltaX: Schema.Int;
|
|
269
|
+
readonly deltaY: Schema.Int;
|
|
278
270
|
}>, {}>;
|
|
279
271
|
/**
|
|
280
272
|
* What a form did, in order. `stopped` is present when it did not finish: the fields before it
|
|
281
273
|
* stay set, because a form is not a transaction. `submitted` is true only when the submit click
|
|
282
274
|
* completed; a stop at `submit` with an `unknown` outcome may have sent it.
|
|
283
275
|
*/
|
|
284
|
-
declare class FillFormResult extends FillFormResult_base {}
|
|
285
|
-
declare const ScrollRequest_base: Schema.Class<ScrollRequest, Schema.Struct<{
|
|
286
|
-
readonly deltaX: Schema.Int;
|
|
287
|
-
readonly deltaY: Schema.Int;
|
|
288
|
-
}>, {}>;
|
|
289
276
|
declare class ScrollRequest extends ScrollRequest_base {}
|
|
290
277
|
declare const ViewportPoint_base: Schema.Class<ViewportPoint, Schema.Struct<{
|
|
291
278
|
readonly x: Schema.Finite;
|
|
@@ -435,7 +422,7 @@ declare const TypeRequest_base: Schema.Class<TypeRequest, Schema.Struct<{
|
|
|
435
422
|
declare class TypeRequest extends TypeRequest_base {}
|
|
436
423
|
declare const InputReceipt_base: Schema.Class<InputReceipt, Schema.Struct<{
|
|
437
424
|
readonly target: typeof Target;
|
|
438
|
-
readonly kind: Schema.Literals<readonly ["pointer-move", "hover", "wheel", "press", "type"]>;
|
|
425
|
+
readonly kind: Schema.Literals<readonly ["pointer-move", "hover", "wheel", "click", "press", "type"]>;
|
|
439
426
|
readonly position: Schema.NullOr<typeof ViewportPoint>;
|
|
440
427
|
readonly delta: Schema.optionalKey<Schema.Struct<{
|
|
441
428
|
readonly x: Schema.Finite;
|
|
@@ -446,13 +433,32 @@ declare const InputReceipt_base: Schema.Class<InputReceipt, Schema.Struct<{
|
|
|
446
433
|
}>, {}>;
|
|
447
434
|
/**
|
|
448
435
|
* What native input was dispatched, where and when. `position` is the point this owner
|
|
449
|
-
* commanded,
|
|
450
|
-
*
|
|
436
|
+
* commanded, null before it has placed the pointer, or unknown when Playwright chose the click
|
|
437
|
+
* point internally. For clicks, the interval brackets Playwright's supported click call, which
|
|
438
|
+
* can include its actionability and navigation waits; the browser's exact dispatch instant is
|
|
439
|
+
* unavailable. The interval is on the host monotonic clock that stamps
|
|
440
|
+
* `CapturedFrame.receivedMonotonicNanos`, so input and
|
|
451
441
|
* pixels share one timeline. A wheel event is dispatched, not awaited: the receipt does not
|
|
452
442
|
* claim the page finished scrolling, or that any frame shows it. A receipt never says which
|
|
453
443
|
* key was pressed or what was typed.
|
|
454
444
|
*/
|
|
455
445
|
declare class InputReceipt extends InputReceipt_base {}
|
|
446
|
+
declare const FormFieldResult_base: Schema.Class<FormFieldResult, Schema.Struct<{
|
|
447
|
+
readonly elementId: Schema.NonEmptyString;
|
|
448
|
+
readonly status: Schema.Literals<readonly ["set", "unchanged"]>;
|
|
449
|
+
readonly input: Schema.optionalKey<typeof InputReceipt>;
|
|
450
|
+
}>, {}>;
|
|
451
|
+
/** `set` dispatched input; `unchanged` needed none, because a toggle already held its state. */
|
|
452
|
+
declare class FormFieldResult extends FormFieldResult_base {}
|
|
453
|
+
declare const FillFormResult_base: Schema.Class<FillFormResult, Schema.Struct<{
|
|
454
|
+
readonly fields: Schema.$Array<typeof FormFieldResult>;
|
|
455
|
+
readonly submitted: Schema.Boolean;
|
|
456
|
+
readonly url: Schema.NonEmptyString;
|
|
457
|
+
readonly submitInput: Schema.optionalKey<typeof InputReceipt>;
|
|
458
|
+
readonly stopped: Schema.optionalKey<typeof FormStop>;
|
|
459
|
+
}>, {}>;
|
|
460
|
+
/** The bounded receipts for any toggle clicks and the one optional submit click. */
|
|
461
|
+
declare class FillFormResult extends FillFormResult_base {}
|
|
456
462
|
declare const ScreenshotRequest_base: Schema.Class<ScreenshotRequest, Schema.Struct<{
|
|
457
463
|
readonly fullPage: Schema.Boolean;
|
|
458
464
|
}>, {}>;
|
|
@@ -463,6 +469,8 @@ declare const NavigationResult_base: Schema.Class<NavigationResult, Schema.Struc
|
|
|
463
469
|
declare class NavigationResult extends NavigationResult_base {}
|
|
464
470
|
declare const ActionResult_base: Schema.Class<ActionResult, Schema.Struct<{
|
|
465
471
|
readonly url: Schema.NonEmptyString;
|
|
472
|
+
/** Present for clicks; fill and scripted scroll results have no native input receipt. */
|
|
473
|
+
readonly input: Schema.optionalKey<typeof InputReceipt>;
|
|
466
474
|
}>, {}>;
|
|
467
475
|
declare class ActionResult extends ActionResult_base {}
|
|
468
476
|
declare const TextResult_base: Schema.Class<TextResult, Schema.Struct<{
|
|
@@ -500,4 +508,4 @@ type AutomationOptions = typeof AutomationOptions.Type;
|
|
|
500
508
|
//#endregion
|
|
501
509
|
export { TypeRequest as $, ObservedControl as A, SafeFilename as B, KeyModifier as C, NavigationResult as D, NavigateRequest as E, PointerMoveRequest as F, Selector as G, ScreenshotResult as H, PositiveInt as I, SessionStatus as J, SessionPhase as K, PressRequest as L, PageExecutionState as M, PageInfo as N, Observation as O, PageSuspension as P, TextResult as Q, ReadTextRequest as R, InputReceipt as S, NamedKey as T, ScrollRequest as U, ScreenshotRequest as V, SelectOptions as W, Target as X, StartNavigationRequest as Y, TargetUrl as Z, FrameInfo as _, BrowserPolicy as a, WheelRequest as at, InlineFile as b, ClickRequest as c, FillFormRequest as d, Viewport as et, FillFormResult as f, FormStop as g, FormFieldResult as h, BrowserDiagnostics as i, WaitForElementRequest as it, ObservedElement as j, ObservationOptions as k, ControlFacts as l, FormField as m, AutomationOptions as n, ViewportPoint as nt, Checkpoint as o, FillRequest as p, SessionReason as q, BrowserDiagnostic as r, ViewportRect as rt, CheckpointOptions as s, ActionResult as t, ViewportEvidence as tt, FillFormOptions as u, HoverRequest as v, KeyStroke as w, InlineFiles as x, Identifier as y, ReadingMatch as z };
|
|
502
510
|
export {};
|
|
503
|
-
//# sourceMappingURL=BrowserData-
|
|
511
|
+
//# sourceMappingURL=BrowserData-DPh3Oaof.d.mts.map
|
package/dist/BrowserData.d.mts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { $ as TypeRequest, A as ObservedControl, B as SafeFilename, C as KeyModifier, D as NavigationResult, E as NavigateRequest, F as PointerMoveRequest, G as Selector, H as ScreenshotResult, I as PositiveInt, J as SessionStatus, K as SessionPhase, L as PressRequest, M as PageExecutionState, N as PageInfo, O as Observation, P as PageSuspension, Q as TextResult, R as ReadTextRequest, S as InputReceipt, T as NamedKey, U as ScrollRequest, V as ScreenshotRequest, W as SelectOptions, X as Target, Y as StartNavigationRequest, Z as TargetUrl, _ as FrameInfo, a as BrowserPolicy, at as WheelRequest, b as InlineFile, c as ClickRequest, d as FillFormRequest, et as Viewport, f as FillFormResult, g as FormStop, h as FormFieldResult, i as BrowserDiagnostics, it as WaitForElementRequest, j as ObservedElement, k as ObservationOptions, l as ControlFacts, m as FormField, n as AutomationOptions, nt as ViewportPoint, o as Checkpoint, p as FillRequest, q as SessionReason, r as BrowserDiagnostic, rt as ViewportRect, s as CheckpointOptions, t as ActionResult, tt as ViewportEvidence, u as FillFormOptions, v as HoverRequest, w as KeyStroke, x as InlineFiles, y as Identifier, z as ReadingMatch } from "./BrowserData-
|
|
1
|
+
import { $ as TypeRequest, A as ObservedControl, B as SafeFilename, C as KeyModifier, D as NavigationResult, E as NavigateRequest, F as PointerMoveRequest, G as Selector, H as ScreenshotResult, I as PositiveInt, J as SessionStatus, K as SessionPhase, L as PressRequest, M as PageExecutionState, N as PageInfo, O as Observation, P as PageSuspension, Q as TextResult, R as ReadTextRequest, S as InputReceipt, T as NamedKey, U as ScrollRequest, V as ScreenshotRequest, W as SelectOptions, X as Target, Y as StartNavigationRequest, Z as TargetUrl, _ as FrameInfo, a as BrowserPolicy, at as WheelRequest, b as InlineFile, c as ClickRequest, d as FillFormRequest, et as Viewport, f as FillFormResult, g as FormStop, h as FormFieldResult, i as BrowserDiagnostics, it as WaitForElementRequest, j as ObservedElement, k as ObservationOptions, l as ControlFacts, m as FormField, n as AutomationOptions, nt as ViewportPoint, o as Checkpoint, p as FillRequest, q as SessionReason, r as BrowserDiagnostic, rt as ViewportRect, s as CheckpointOptions, t as ActionResult, tt as ViewportEvidence, u as FillFormOptions, v as HoverRequest, w as KeyStroke, x as InlineFiles, y as Identifier, z as ReadingMatch } from "./BrowserData-DPh3Oaof.mjs";
|
|
2
2
|
export { ActionResult, AutomationOptions, BrowserDiagnostic, BrowserDiagnostics, BrowserPolicy, Checkpoint, CheckpointOptions, ClickRequest, ControlFacts, FillFormOptions, FillFormRequest, FillFormResult, FillRequest, FormField, FormFieldResult, FormStop, FrameInfo, HoverRequest, Identifier, InlineFile, InlineFiles, InputReceipt, KeyModifier, KeyStroke, NamedKey, NavigateRequest, NavigationResult, Observation, ObservationOptions, ObservedControl, ObservedElement, PageExecutionState, PageInfo, PageSuspension, PointerMoveRequest, PositiveInt, PressRequest, ReadTextRequest, ReadingMatch, SafeFilename, ScreenshotRequest, ScreenshotResult, ScrollRequest, SelectOptions, Selector, SessionPhase, SessionReason, SessionStatus, StartNavigationRequest, Target, TargetUrl, TextResult, TypeRequest, Viewport, ViewportEvidence, ViewportPoint, ViewportRect, WaitForElementRequest, WheelRequest };
|
|
3
3
|
export {};
|
package/dist/BrowserData.mjs
CHANGED
|
@@ -291,11 +291,6 @@ const FillFormOptions = Schema.Struct({
|
|
|
291
291
|
maximum: 5e3
|
|
292
292
|
})))
|
|
293
293
|
});
|
|
294
|
-
/** `set` dispatched input; `unchanged` needed none, because a toggle already held its state. */
|
|
295
|
-
var FormFieldResult = class extends Schema.Class("BrowserFormFieldResult")({
|
|
296
|
-
elementId: Identifier,
|
|
297
|
-
status: Schema.Literals(["set", "unchanged"])
|
|
298
|
-
}) {};
|
|
299
294
|
/**
|
|
300
295
|
* Where a form stopped and why. `error.outcome` says whether this step itself was dispatched;
|
|
301
296
|
* nothing after it was. `elementId` names the control it stopped at, when there is one: a
|
|
@@ -315,12 +310,6 @@ var FormStop = class extends Schema.Class("BrowserFormStop")({
|
|
|
315
310
|
* stay set, because a form is not a transaction. `submitted` is true only when the submit click
|
|
316
311
|
* completed; a stop at `submit` with an `unknown` outcome may have sent it.
|
|
317
312
|
*/
|
|
318
|
-
var FillFormResult = class extends Schema.Class("BrowserFillFormResult")({
|
|
319
|
-
fields: Schema.Array(FormFieldResult).check(Schema.isMaxLength(32)),
|
|
320
|
-
submitted: Schema.Boolean,
|
|
321
|
-
url: TargetUrl,
|
|
322
|
-
stopped: Schema.optionalKey(FormStop)
|
|
323
|
-
}) {};
|
|
324
313
|
var ScrollRequest = class extends Schema.Class("BrowserScrollRequest")({
|
|
325
314
|
deltaX: Schema.Int.check(Schema.isBetween({
|
|
326
315
|
minimum: -1e5,
|
|
@@ -517,8 +506,11 @@ var TypeRequest = class extends Schema.Class("BrowserTypeRequest")({
|
|
|
517
506
|
}) {};
|
|
518
507
|
/**
|
|
519
508
|
* What native input was dispatched, where and when. `position` is the point this owner
|
|
520
|
-
* commanded,
|
|
521
|
-
*
|
|
509
|
+
* commanded, null before it has placed the pointer, or unknown when Playwright chose the click
|
|
510
|
+
* point internally. For clicks, the interval brackets Playwright's supported click call, which
|
|
511
|
+
* can include its actionability and navigation waits; the browser's exact dispatch instant is
|
|
512
|
+
* unavailable. The interval is on the host monotonic clock that stamps
|
|
513
|
+
* `CapturedFrame.receivedMonotonicNanos`, so input and
|
|
522
514
|
* pixels share one timeline. A wheel event is dispatched, not awaited: the receipt does not
|
|
523
515
|
* claim the page finished scrolling, or that any frame shows it. A receipt never says which
|
|
524
516
|
* key was pressed or what was typed.
|
|
@@ -529,6 +521,7 @@ var InputReceipt = class extends Schema.Class("BrowserInputReceipt")({
|
|
|
529
521
|
"pointer-move",
|
|
530
522
|
"hover",
|
|
531
523
|
"wheel",
|
|
524
|
+
"click",
|
|
532
525
|
"press",
|
|
533
526
|
"type"
|
|
534
527
|
]),
|
|
@@ -540,9 +533,27 @@ var InputReceipt = class extends Schema.Class("BrowserInputReceipt")({
|
|
|
540
533
|
startedMonotonicNanos: Schema.BigInt,
|
|
541
534
|
completedMonotonicNanos: Schema.BigInt
|
|
542
535
|
}) {};
|
|
536
|
+
/** `set` dispatched input; `unchanged` needed none, because a toggle already held its state. */
|
|
537
|
+
var FormFieldResult = class extends Schema.Class("BrowserFormFieldResult")({
|
|
538
|
+
elementId: Identifier,
|
|
539
|
+
status: Schema.Literals(["set", "unchanged"]),
|
|
540
|
+
input: Schema.optionalKey(InputReceipt)
|
|
541
|
+
}) {};
|
|
542
|
+
/** The bounded receipts for any toggle clicks and the one optional submit click. */
|
|
543
|
+
var FillFormResult = class extends Schema.Class("BrowserFillFormResult")({
|
|
544
|
+
fields: Schema.Array(FormFieldResult).check(Schema.isMaxLength(32)),
|
|
545
|
+
submitted: Schema.Boolean,
|
|
546
|
+
url: TargetUrl,
|
|
547
|
+
submitInput: Schema.optionalKey(InputReceipt),
|
|
548
|
+
stopped: Schema.optionalKey(FormStop)
|
|
549
|
+
}) {};
|
|
543
550
|
var ScreenshotRequest = class extends Schema.Class("BrowserScreenshotRequest")({ fullPage: Schema.Boolean }) {};
|
|
544
551
|
var NavigationResult = class extends Schema.Class("BrowserNavigationResult")({ url: TargetUrl }) {};
|
|
545
|
-
var ActionResult = class extends Schema.Class("BrowserActionResult")({
|
|
552
|
+
var ActionResult = class extends Schema.Class("BrowserActionResult")({
|
|
553
|
+
url: TargetUrl,
|
|
554
|
+
/** Present for clicks; fill and scripted scroll results have no native input receipt. */
|
|
555
|
+
input: Schema.optionalKey(InputReceipt)
|
|
556
|
+
}) {};
|
|
546
557
|
var TextResult = class extends Schema.Class("BrowserTextResult")({ text: Schema.String.check(Schema.isMaxLength(8388608)) }) {};
|
|
547
558
|
var ScreenshotResult = class extends Schema.Class("BrowserScreenshotResult")({
|
|
548
559
|
mediaType: Schema.Literal("image/png"),
|
package/dist/BrowserData.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BrowserData.mjs","names":[],"sources":["../src/BrowserData.ts"],"sourcesContent":["import { Schema } from \"effect\";\n\nimport { BrowserError } from \"./Errors.ts\";\n\nexport const Identifier = Schema.NonEmptyString.check(\n Schema.isMaxLength(256),\n Schema.isPattern(/^[A-Za-z0-9_-]+$/),\n);\n\nexport const PositiveInt = Schema.Int.check(Schema.isGreaterThan(0));\n\n/** Portable basename only; never a local or remote filesystem path. */\nexport const SafeFilename = Schema.NonEmptyString.check(\n Schema.isMaxLength(240),\n Schema.makeFilter(\n (value) =>\n value !== \".\" &&\n value !== \"..\" &&\n // oxlint-disable-next-line eslint/no-control-regex -- control characters are what it rejects\n !/[\\x00-\\x1f\\x7f/\\\\:]/.test(value) &&\n !/[. ]$/.test(value) &&\n !/^\\s/.test(value) &&\n !/^(con|prn|aux|nul|com[1-9]|lpt[1-9])(?:\\.|$)/i.test(value),\n { title: \"a portable, non-path download filename\" },\n ),\n);\n\nexport class Viewport extends Schema.Class<Viewport>(\"BrowserViewport\")(\n Schema.Struct({\n width: PositiveInt.check(Schema.isLessThanOrEqualTo(4096)),\n height: PositiveInt.check(Schema.isLessThanOrEqualTo(4096)),\n }).check(\n Schema.makeFilter((v) => v.width * v.height <= 8_388_608, {\n title: \"at most 8,388,608 viewport pixels\",\n }),\n ),\n) {}\n\n/** Page/frame IDs are connection-local; targetId is a separate Chromium identity. */\n\nexport class Target extends Schema.Class<Target>(\"BrowserTarget\")({\n generation: Schema.Natural,\n pageId: Identifier,\n frameId: Identifier,\n}) {}\n\nexport class PageInfo extends Schema.Class<PageInfo>(\"BrowserPageInfo\")({\n pageId: Identifier,\n targetId: Identifier,\n url: Schema.String.check(Schema.isMaxLength(8192)),\n title: Schema.String.check(Schema.isMaxLength(512)),\n selected: Schema.Boolean,\n}) {}\n\nexport class FrameInfo extends Schema.Class<FrameInfo>(\"BrowserFrameInfo\")({\n frameId: Identifier,\n parentFrameId: Schema.NullOr(Identifier),\n url: Schema.String.check(Schema.isMaxLength(8192)),\n name: Schema.String.check(Schema.isMaxLength(256)),\n}) {}\n\nexport const SessionPhase = Schema.Literals([\n \"acquiring\",\n \"open\",\n \"paused\",\n \"detached\",\n \"faulted\",\n \"uncertain\",\n \"closing\",\n \"closed\",\n]);\n\nexport type SessionPhase = typeof SessionPhase.Type;\n\nexport const SessionReason = Schema.Literals([\n \"expired\",\n \"callback-failure\",\n \"registration-failure\",\n \"native-failure\",\n \"disconnected\",\n \"popup-policy\",\n \"dialog-policy\",\n \"popup-overflow\",\n \"dialog-overflow\",\n \"cleanup-capacity\",\n \"handoff\",\n \"detached\",\n \"closed\",\n]);\n\nexport type SessionReason = typeof SessionReason.Type;\n\nconst DiagnosticCounter = Schema.Natural.check(Schema.isLessThanOrEqualTo(Number.MAX_SAFE_INTEGER));\n\n/** The bound on one session's model-reachable actions, like the host-read allowance's. */\nconst ActionAllowance = PositiveInt.check(Schema.isLessThanOrEqualTo(1_000_000));\n\n/** Host-only admission evidence. Neither an admission token nor proof of remote termination. */\nexport class SessionStatus extends Schema.Class<SessionStatus>(\"BrowserSessionStatus\")({\n phase: SessionPhase,\n reason: Schema.NullOr(SessionReason),\n generation: DiagnosticCounter,\n busy: Schema.Boolean,\n unresolvedDispatch: Schema.Boolean,\n /**\n * Actions admitted against the policy's `maxActions`, as the owner counted them. Host reads\n * (`checkpoint`, `controlFacts`) and uncharged reads such as a form's verification are not\n * actions. `used` equals `maximum` once the allowance is spent; the owner stays open.\n */\n actions: Schema.Struct({\n used: Schema.Natural.check(Schema.isLessThanOrEqualTo(1_000_000)),\n maximum: ActionAllowance,\n }).check(\n Schema.makeFilter((actions) => actions.used <= actions.maximum, {\n title: \"no more actions used than allowed\",\n }),\n ),\n}) {}\n\n/** Bounded host facts only: no target identity, page content, native exception or consumer cause. */\nexport class BrowserDiagnostic extends Schema.Class<BrowserDiagnostic>(\"BrowserDiagnostic\")({\n reason: SessionReason,\n disposition: Schema.Literals([\"pending\", \"confirmed\", \"not-dispatched\", \"unknown\"]),\n generation: DiagnosticCounter,\n monotonicNanos: Schema.BigInt.check(Schema.isGreaterThanOrEqualToBigInt(0n)),\n}) {}\n\nexport class BrowserDiagnostics extends Schema.Class<BrowserDiagnostics>(\"BrowserDiagnostics\")({\n records: Schema.Array(BrowserDiagnostic).check(Schema.isMaxLength(32)),\n total: DiagnosticCounter,\n dropped: DiagnosticCounter,\n truncated: Schema.Boolean,\n}) {}\n\nexport class ObservedControl extends Schema.Class<ObservedControl>(\"BrowserObservedControl\")({\n elementId: Identifier,\n kind: Schema.Literals([\"link\", \"button\", \"input\", \"select\", \"textarea\", \"other\"]),\n label: Schema.String.check(Schema.isMaxLength(256)),\n disabled: Schema.Boolean,\n checked: Schema.optionalKey(Schema.Boolean),\n selected: Schema.optionalKey(Schema.Boolean),\n inputType: Schema.optionalKey(Schema.String.check(Schema.isMaxLength(32))),\n required: Schema.optionalKey(Schema.Boolean),\n /** Native select state. A select is never represented by one `selected` boolean. */\n multiple: Schema.optionalKey(Schema.Boolean),\n /** The issued select this native option belongs to, in the same observation. */\n selectElementId: Schema.optionalKey(Identifier),\n /** Some choices could not be issued within this reading's shared control/value bounds. */\n optionsTruncated: Schema.optionalKey(Schema.Boolean),\n}) {}\n\n/**\n * How a viewport reading was bounded and what it left out. These are counts, so they are safe\n * to show a model. Visibility is geometry and hit-testing, never a pixel comparison: text is\n * kept when its line boxes intersect the viewport and the browser finds its own element at a\n * sampled point. Something that takes no pointer events is invisible to that test, so the\n * browser is asked what is on top there with pointer events ignored: a box that paints at the\n * point covers the text, and one that paints nothing there, such as an empty full-screen\n * container, does not. Text that could not be settled that way is left out as uncertain.\n */\nexport class ViewportEvidence extends Schema.Class<ViewportEvidence>(\"BrowserViewportEvidence\")({\n width: Schema.Finite,\n height: Schema.Finite,\n /** Text that crossed a viewport edge; only its lines on screen were kept. */\n clippedText: Schema.Natural,\n /** Left out: another element is on top at the sampled point, or a box there paints over it. */\n coveredText: Schema.Natural,\n /**\n * Left out: something that takes no pointer events lies over it and the browser's own hit test\n * could not settle whether it paints there, for example beneath another such box, in a child\n * frame, or after too many such points in one reading.\n */\n uncertainText: Schema.Natural,\n /** Controls that intersect the viewport but cannot be reached there. */\n unreachableControls: Schema.Natural,\n /** The traversal budget ran out first, so this reading is known to be incomplete. */\n exhausted: Schema.Boolean,\n}) {}\n\n/**\n * Case-insensitive text a reading keeps. It is applied inside the page before any limit, so\n * matching controls are not crowded out by earlier ones. It filters what is read; it never\n * searches for, re-finds or substitutes a node.\n */\nexport const ReadingMatch = Schema.String.check(\n Schema.isMinLength(1),\n Schema.isMaxLength(256),\n Schema.makeFilter((value) => value.trim().length > 0, { title: \"not only whitespace\" }),\n);\n\n/**\n * Revision is admission fencing, not a claim of a complete DOM version or atomic snapshot. A\n * `viewport` reading holds what is on screen and reachable, plus the bounded choices of its\n * native selects. Those choices are not a claim that a closed dropdown's rows were visible.\n * A `document` reading is the whole body, wherever it is. A reading with `match` keeps only\n * matching text lines and controls, so what it leaves out is not evidence of absence. Nothing\n * here carries a destination, a form or a field value.\n */\nexport class Observation extends Schema.Class<Observation>(\"BrowserObservation\")({\n target: Target,\n observationId: Identifier,\n revision: Schema.Natural,\n scope: Schema.Literals([\"document\", \"viewport\"]),\n match: Schema.optionalKey(ReadingMatch),\n url: Schema.String.check(Schema.isMaxLength(8192)),\n text: Schema.String.check(Schema.isMaxLength(131072)),\n controls: Schema.Array(ObservedControl).check(Schema.isMaxLength(64)),\n controlsTruncated: Schema.Boolean,\n textTruncated: Schema.Boolean,\n viewport: ViewportEvidence,\n}) {}\n\nexport class ObservedElement extends Schema.Class<ObservedElement>(\"BrowserObservedElement\")({\n observationId: Identifier,\n elementId: Identifier,\n}) {}\n\n/** Observe a condition of this exact node. A replacement never satisfies the reference. */\nexport class WaitForElementRequest extends Schema.Class<WaitForElementRequest>(\n \"BrowserWaitForElementRequest\",\n)({\n reference: ObservedElement,\n state: Schema.Literals([\"visible\", \"hidden\", \"enabled\", \"disabled\"]),\n timeoutMillis: Schema.optionalKey(\n Schema.Int.check(Schema.isBetween({ minimum: 1, maximum: 60000 })),\n ),\n}) {}\n\n/** Issued option element IDs from one observed native select; never values, labels or indices. */\nexport const SelectOptions = Schema.Array(Identifier).check(\n Schema.isMinLength(1),\n Schema.isMaxLength(64),\n Schema.makeFilter((ids) => new Set(ids).size === ids.length),\n);\n\nexport type SelectOptions = typeof SelectOptions.Type;\n\n/** Live, connection-owned receipt. It is not a durable promise that remote clocks remain held. */\nexport class PageSuspension extends Schema.Class<PageSuspension>(\"BrowserPageSuspension\")({\n pageId: Identifier,\n targetId: Identifier,\n suspensionId: Identifier,\n}) {}\n\nexport class PageExecutionState extends Schema.Class<PageExecutionState>(\n \"BrowserPageExecutionState\",\n)({\n pageId: Identifier,\n targetId: Identifier,\n state: Schema.Literals([\"running\", \"suspended\", \"unknown\"]),\n suspensionId: Schema.optionalKey(Identifier),\n}) {}\n\n/** Explicit opt-out: this integration does not claim whole-browser network containment. */\nexport class BrowserPolicy extends Schema.Class<BrowserPolicy>(\"BrowserBrowserPolicy\")({\n network: Schema.TaggedStruct(\"Unrestricted\", {}),\n /** Model-reachable actions for the session's lifetime, 1–1,000,000. `status.actions` reads use. */\n maxActions: ActionAllowance,\n maxElapsedMillis: PositiveInt.check(Schema.isLessThanOrEqualTo(21_600_000)),\n maxReturnedBytes: PositiveInt.check(Schema.isLessThanOrEqualTo(8 * 1024 * 1024)),\n}) {\n /**\n * Conservative bounds for trusted host code: 100 actions, five minutes, 2 MiB returned.\n * The network choice is spelled out in the name because this runtime cannot prove a\n * narrower one; override any bound, never the network. A long session raises `maxActions`\n * (up to 1,000,000) and `maxElapsedMillis` (up to six hours) together.\n */\n static unrestricted(\n bounds: Partial<\n Pick<BrowserPolicy, \"maxActions\" | \"maxElapsedMillis\" | \"maxReturnedBytes\">\n > = {},\n ): BrowserPolicy {\n return BrowserPolicy.make({\n network: { _tag: \"Unrestricted\" },\n maxActions: bounds.maxActions ?? 100,\n maxElapsedMillis: bounds.maxElapsedMillis ?? 5 * 60_000,\n maxReturnedBytes: bounds.maxReturnedBytes ?? 2 * 1024 * 1024,\n });\n }\n}\n\nexport const TargetUrl = Schema.NonEmptyString.check(\n Schema.isMaxLength(8192),\n Schema.makeFilter((value) => {\n try {\n const url = new URL(value);\n\n return (\n [\"http:\", \"https:\"].includes(url.protocol) &&\n url.hostname !== \"\" &&\n !url.username &&\n !url.password\n );\n } catch {\n return false;\n }\n }),\n);\n\nexport const Selector = Schema.NonEmptyString.check(Schema.isMaxLength(1024));\n\nexport class NavigateRequest extends Schema.Class<NavigateRequest>(\"BrowserNavigateRequest\")({\n url: TargetUrl,\n timeoutMillis: Schema.optionalKey(\n Schema.Int.check(Schema.isBetween({ minimum: 1, maximum: 600000 })),\n ),\n}) {}\n\n/**\n * A navigation left in flight. `timeoutMillis` is how long the browser may take to reach\n * DOMContentLoaded; omitted, it is the action timeout, as it is for `navigate`.\n */\nexport class StartNavigationRequest extends Schema.Class<StartNavigationRequest>(\n \"BrowserStartNavigationRequest\",\n)({\n url: TargetUrl,\n timeoutMillis: Schema.optionalKey(\n Schema.Int.check(Schema.isBetween({ minimum: 1, maximum: 600000 })),\n ),\n}) {}\n\nexport class ReadTextRequest extends Schema.Class<ReadTextRequest>(\"BrowserReadTextRequest\")({\n selector: Schema.optionalKey(Selector),\n}) {}\n\nexport class ClickRequest extends Schema.Class<ClickRequest>(\"BrowserClickRequest\")({\n selector: Selector,\n}) {}\n\nexport class FillRequest extends Schema.Class<FillRequest>(\"BrowserFillRequest\")({\n selector: Selector,\n value: Schema.String.check(Schema.isMaxLength(65536)),\n}) {}\n\n/**\n * One observed control and the one state a form gives it: replacement text, the checked state a\n * checkbox, radio or switch should end in (it is clicked only when it differs, and a native radio\n * is never asked to clear itself), or issued option IDs of a native select from the same\n * observation.\n */\nexport const FormField = Schema.Struct({\n elementId: Identifier,\n value: Schema.optionalKey(FillRequest.fields.value),\n checked: Schema.optionalKey(Schema.Boolean),\n options: Schema.optionalKey(SelectOptions),\n}).check(\n Schema.makeFilter(\n (field) =>\n Number(field.value !== undefined) +\n Number(field.checked !== undefined) +\n Number(field.options !== undefined) ===\n 1,\n { title: \"exactly one of value, checked or options\" },\n ),\n);\n\nexport type FormField = typeof FormField.Type;\n\n/** At most 32 distinct fields, and a submit control that is not one of them. */\nexport class FillFormRequest extends Schema.Class<FillFormRequest>(\"BrowserFillFormRequest\")(\n Schema.Struct({\n observationId: Identifier,\n fields: Schema.Array(FormField).check(\n Schema.isMinLength(1),\n Schema.isMaxLength(32),\n Schema.makeFilter(\n (fields) => new Set(fields.map((field) => field.elementId)).size === fields.length,\n { title: \"each field at most once\" },\n ),\n ),\n submit: Schema.optionalKey(Identifier),\n }).check(\n Schema.makeFilter(\n (request) =>\n request.submit === undefined ||\n !request.fields.some((field) => field.elementId === request.submit),\n { title: \"a submit control that is not also a field\" },\n ),\n ),\n) {}\n\n/**\n * Host choices about how a form proceeds. `verify` (default true) re-reads every field before\n * submit and stops when one no longer holds what its own step left there. `settleMillis`\n * (default 50, at most 5000; 0 skips it) is how long each dispatched step lets the page's own\n * handlers run, after at least two rendered frames, before its result is read back.\n */\nexport const FillFormOptions = Schema.Struct({\n verify: Schema.optionalKey(Schema.Boolean),\n settleMillis: Schema.optionalKey(\n Schema.Int.check(Schema.isBetween({ minimum: 0, maximum: 5000 })),\n ),\n});\n\nexport type FillFormOptions = typeof FillFormOptions.Type;\n\n/** `set` dispatched input; `unchanged` needed none, because a toggle already held its state. */\nexport class FormFieldResult extends Schema.Class<FormFieldResult>(\"BrowserFormFieldResult\")({\n elementId: Identifier,\n status: Schema.Literals([\"set\", \"unchanged\"]),\n}) {}\n\n/**\n * Where a form stopped and why. `error.outcome` says whether this step itself was dispatched;\n * nothing after it was. `elementId` names the control it stopped at, when there is one: a\n * verification that could not read the form at all names none.\n */\nexport class FormStop extends Schema.Class<FormStop>(\"BrowserFormStop\")({\n stage: Schema.Literals([\"field\", \"verify\", \"submit\"]),\n elementId: Schema.optionalKey(Identifier),\n error: BrowserError,\n}) {}\n\n/**\n * What a form did, in order. `stopped` is present when it did not finish: the fields before it\n * stay set, because a form is not a transaction. `submitted` is true only when the submit click\n * completed; a stop at `submit` with an `unknown` outcome may have sent it.\n */\nexport class FillFormResult extends Schema.Class<FillFormResult>(\"BrowserFillFormResult\")({\n fields: Schema.Array(FormFieldResult).check(Schema.isMaxLength(32)),\n submitted: Schema.Boolean,\n url: TargetUrl,\n stopped: Schema.optionalKey(FormStop),\n}) {}\n\nexport class ScrollRequest extends Schema.Class<ScrollRequest>(\"BrowserScrollRequest\")({\n deltaX: Schema.Int.check(Schema.isBetween({ minimum: -100000, maximum: 100000 })),\n deltaY: Schema.Int.check(Schema.isBetween({ minimum: -100000, maximum: 100000 })),\n}) {}\n\n/**\n * CSS pixels in the main frame's viewport, the space Chromium dispatches pointer input in. It\n * is not a document offset, a device pixel, or a coordinate inside a child frame.\n */\nexport class ViewportPoint extends Schema.Class<ViewportPoint>(\"BrowserViewportPoint\")({\n x: Schema.Finite.check(Schema.isBetween({ minimum: 0, maximum: 16384 })),\n y: Schema.Finite.check(Schema.isBetween({ minimum: 0, maximum: 16384 })),\n}) {}\n\n/** A box in the viewport of the frame it was read from, in CSS pixels. */\nexport class ViewportRect extends Schema.Class<ViewportRect>(\"BrowserViewportRect\")({\n x: Schema.Finite,\n y: Schema.Finite,\n width: Schema.Finite,\n height: Schema.Finite,\n}) {}\n\n/**\n * What a host needs to decide whether a control may be acted on. Host-only: a destination can\n * carry a token, so none of this is part of the model-facing `Observation`. It never includes a\n * field's value or any markup.\n */\nexport class ControlFacts extends Schema.Class<ControlFacts>(\"BrowserControlFacts\")({\n kind: ObservedControl.fields.kind,\n label: ObservedControl.fields.label,\n disabled: Schema.Boolean,\n checked: Schema.optionalKey(Schema.Boolean),\n selected: Schema.optionalKey(Schema.Boolean),\n required: Schema.optionalKey(Schema.Boolean),\n multiple: Schema.optionalKey(Schema.Boolean),\n editable: Schema.Boolean,\n inputType: Schema.optionalKey(Schema.String.check(Schema.isMaxLength(32))),\n autocomplete: Schema.optionalKey(Schema.String.check(Schema.isMaxLength(128))),\n /** A resolved link target, or where this control submits its form. Absent when over-long. */\n destination: Schema.optionalKey(Schema.String.check(Schema.isMaxLength(2048))),\n formMethod: Schema.optionalKey(Schema.Literals([\"get\", \"post\", \"dialog\"])),\n box: ViewportRect,\n placement: Schema.Literals([\"inside\", \"partial\", \"outside\"]),\n /** `self`: the browser finds this control at its visible centre. Not a pixel comparison. */\n hitTest: Schema.Literals([\"self\", \"covered\", \"uncertain\", \"unsampled\"]),\n /** Only then is `box` in the main frame's viewport, the space pointer input uses. */\n mainFrame: Schema.Boolean,\n}) {}\n\n/**\n * Passive evidence for a recorder: what was on screen, and optionally a picture of it. It issues\n * no element references and never replaces the observation an agent's tools act on, so\n * inspecting, checkpointing and then acting on the inspected node all compose.\n *\n * It is host-only, because it carries control facts. Text and picture are read one after the\n * other, never atomically: the interval says when, and `documentChanged` says the document was\n * replaced in between, so the two may describe different documents.\n */\nexport class Checkpoint extends Schema.Class<Checkpoint>(\"BrowserCheckpoint\")({\n target: Target,\n revision: Schema.Natural,\n url: Schema.String.check(Schema.isMaxLength(8192)),\n text: Schema.String.check(Schema.isMaxLength(131072)),\n textTruncated: Schema.Boolean,\n controls: Schema.Array(ControlFacts).check(Schema.isMaxLength(64)),\n controlsTruncated: Schema.Boolean,\n viewport: ViewportEvidence,\n picture: Schema.optionalKey(\n Schema.Struct({ mediaType: Schema.Literal(\"image/png\"), bytes: Schema.Uint8Array }),\n ),\n documentChanged: Schema.Boolean,\n startedMonotonicNanos: Schema.BigInt,\n completedMonotonicNanos: Schema.BigInt,\n}) {}\n\nconst ReadingBounds = {\n maxTextBytes: Schema.optionalKey(\n Schema.Int.check(Schema.isBetween({ minimum: 1, maximum: 131072 })),\n ),\n maxControls: Schema.optionalKey(Schema.Int.check(Schema.isBetween({ minimum: 0, maximum: 64 }))),\n};\n\n/** Omitted bounds default at admission; `scope` defaults to the whole document. */\nexport const ObservationOptions = Schema.Struct({\n scope: Schema.optionalKey(Schema.Literals([\"document\", \"viewport\"])),\n match: Schema.optionalKey(ReadingMatch),\n ...ReadingBounds,\n});\n\nexport type ObservationOptions = typeof ObservationOptions.Type;\n\n/** A checkpoint always reads the viewport. `picture` adds a PNG of it, within the byte policy. */\nexport const CheckpointOptions = Schema.Struct({\n ...ReadingBounds,\n picture: Schema.optionalKey(Schema.Boolean),\n});\n\nexport type CheckpointOptions = typeof CheckpointOptions.Type;\n\n/** One native pointer move. Easing and pacing are the caller's: send the points you want. */\nexport class PointerMoveRequest extends Schema.Class<PointerMoveRequest>(\n \"BrowserPointerMoveRequest\",\n)({ to: ViewportPoint }) {}\n\n/** Moves the pointer onto one exact element where it is. It never scrolls to reach it. */\nexport class HoverRequest extends Schema.Class<HoverRequest>(\"BrowserHoverRequest\")({\n selector: Selector,\n}) {}\n\nconst WheelDelta = Schema.Finite.check(Schema.isBetween({ minimum: -100000, maximum: 100000 }));\n\n/**\n * One native wheel event where the pointer is, or at `at` after moving there first. The browser\n * chooses what scrolls, exactly as it would for a person, so a nested scroll container under\n * the pointer scrolls instead of the page.\n */\nexport class WheelRequest extends Schema.Class<WheelRequest>(\"BrowserWheelRequest\")({\n deltaX: WheelDelta,\n deltaY: WheelDelta,\n at: Schema.optionalKey(ViewportPoint),\n}) {}\n\n/**\n * The keys a `press` may name, spelled as the `KeyboardEvent.key` the page will see. The set is\n * closed on purpose: a key name is parsed by the native engine, so none reaches it unreviewed.\n */\nexport const NamedKey = Schema.Literals([\n \"Enter\",\n \"Tab\",\n \"Backspace\",\n \"Delete\",\n \"Escape\",\n \"ArrowLeft\",\n \"ArrowRight\",\n \"ArrowUp\",\n \"ArrowDown\",\n \"Home\",\n \"End\",\n \"PageUp\",\n \"PageDown\",\n]);\n\nexport type NamedKey = typeof NamedKey.Type;\n\n/** One printable ASCII character, space included: every one is a key on the US layout. */\nconst PrintableKey = Schema.String.check(Schema.isPattern(/^[\\x20-\\x7e]$/));\n\nexport const KeyModifier = Schema.Literals([\"Shift\", \"Control\", \"Alt\", \"Meta\"]);\n\nexport type KeyModifier = typeof KeyModifier.Type;\n\n/** One key, down then up, with any modifiers held around it. */\nexport const KeyStroke = Schema.Struct({\n key: Schema.Union([NamedKey, PrintableKey]),\n modifiers: Schema.optionalKey(\n Schema.Array(KeyModifier).check(\n Schema.makeFilter((held) => new Set(held).size === held.length, {\n title: \"each modifier at most once\",\n }),\n ),\n ),\n});\n\nexport type KeyStroke = typeof KeyStroke.Type;\n\n/**\n * One real key stroke. It goes to whatever has focus in the page, exactly as it would for a\n * person, unless `into` names the one element that must already have it. It never focuses that\n * element, because that would hide a scripted focus inside a native-input operation: click it\n * first.\n */\nexport class PressRequest extends Schema.Class<PressRequest>(\"BrowserPressRequest\")({\n ...KeyStroke.fields,\n into: Schema.optionalKey(Selector),\n}) {}\n\n/** Counted in characters, not UTF-16 units, because that is how many strokes it costs. */\nconst TypedText = Schema.NonEmptyString.check(\n Schema.makeFilter((text) => [...text].length <= 256, { title: \"at most 256 characters\" }),\n Schema.makeFilter(\n (text) =>\n [...text].every((character) => {\n const point = character.codePointAt(0) ?? 0;\n\n // An unpaired surrogate is not a character, and would not survive the wire as one.\n return point > 0x1f && point !== 0x7f && (point < 0xd800 || point > 0xdfff);\n }),\n { title: \"no control characters or unpaired surrogates\" },\n ),\n);\n\n/**\n * Text as the real key strokes that produce it, two native commands for each character, one\n * after another under a single action timeout: send a long passage as several shorter runs.\n * A character the US layout cannot produce is inserted as text, as an input method commits it,\n * and raises no key events. Control characters are refused, so a line break can never press\n * Enter from inside a run of text: a named key is always its own `press`. `into` works as it\n * does for `PressRequest`: a guard on where the text lands, never a focus.\n */\nexport class TypeRequest extends Schema.Class<TypeRequest>(\"BrowserTypeRequest\")({\n text: TypedText,\n into: Schema.optionalKey(Selector),\n}) {}\n\n/**\n * What native input was dispatched, where and when. `position` is the point this owner\n * commanded, or null when it has not yet placed the pointer on this page. The interval is on\n * the host monotonic clock that stamps `CapturedFrame.receivedMonotonicNanos`, so input and\n * pixels share one timeline. A wheel event is dispatched, not awaited: the receipt does not\n * claim the page finished scrolling, or that any frame shows it. A receipt never says which\n * key was pressed or what was typed.\n */\nexport class InputReceipt extends Schema.Class<InputReceipt>(\"BrowserInputReceipt\")({\n target: Target,\n kind: Schema.Literals([\"pointer-move\", \"hover\", \"wheel\", \"press\", \"type\"]),\n position: Schema.NullOr(ViewportPoint),\n delta: Schema.optionalKey(Schema.Struct({ x: WheelDelta, y: WheelDelta })),\n startedMonotonicNanos: Schema.BigInt,\n completedMonotonicNanos: Schema.BigInt,\n}) {}\n\nexport class ScreenshotRequest extends Schema.Class<ScreenshotRequest>(\"BrowserScreenshotRequest\")({\n fullPage: Schema.Boolean,\n}) {}\n\nexport class NavigationResult extends Schema.Class<NavigationResult>(\"BrowserNavigationResult\")({\n url: TargetUrl,\n}) {}\n\nexport class ActionResult extends Schema.Class<ActionResult>(\"BrowserActionResult\")({\n url: TargetUrl,\n}) {}\n\nexport class TextResult extends Schema.Class<TextResult>(\"BrowserTextResult\")({\n text: Schema.String.check(Schema.isMaxLength(8 * 1024 * 1024)),\n}) {}\n\nexport class ScreenshotResult extends Schema.Class<ScreenshotResult>(\"BrowserScreenshotResult\")({\n mediaType: Schema.Literal(\"image/png\"),\n bytes: Schema.Uint8Array,\n}) {}\n\nconst FileMediaType = Schema.NonEmptyString.check(\n Schema.isMaxLength(128),\n Schema.isPattern(/^[a-z0-9][a-z0-9!#$&^_+.-]*\\/[a-z0-9][a-z0-9!#$&^_+.-]*$/),\n);\n\n/** Small selection is in-memory by design: bytes the caller already holds, never a path. */\nexport class InlineFile extends Schema.Class<InlineFile>(\"BrowserInlineFile\")({\n name: SafeFilename,\n mediaType: FileMediaType,\n bytes: Schema.Uint8Array.check(\n Schema.makeFilter((value) => value.byteLength >= 1 && value.byteLength <= 1024 * 1024, {\n title: \"between one byte and one mebibyte\",\n }),\n ),\n}) {}\n\nexport const InlineFiles = Schema.Array(InlineFile).check(\n Schema.isMaxLength(8),\n Schema.makeFilter(\n (files) =>\n files.length > 0 &&\n files.reduce((total, file) => total + file.bytes.byteLength, 0) <= 4 * 1024 * 1024,\n { title: \"at most four mebibytes of in-memory selection\" },\n ),\n);\n\nexport const AutomationOptions = Schema.Struct({\n actionTimeoutMillis: Schema.optionalKey(\n Schema.Int.check(Schema.isBetween({ minimum: 1, maximum: 60000 })),\n ),\n /** Independent host-only checkpoint/control-facts allowance; normalized to 10,000 by the runtime. */\n maxHostReads: Schema.optionalKey(\n Schema.Int.check(Schema.isBetween({ minimum: 1, maximum: 1_000_000 })),\n ),\n maxPages: Schema.optionalKey(Schema.Int.check(Schema.isBetween({ minimum: 1, maximum: 32 }))),\n initialPage: Schema.optionalKey(\n Schema.Union([\n Schema.Struct({ targetId: Identifier }),\n Schema.Struct({ newPage: Schema.Literal(true) }),\n ]),\n ),\n popupPolicy: Schema.optionalKey(Schema.Literals([\"retain\", \"close\", \"pause\"])),\n dialogPolicy: Schema.optionalKey(Schema.Literals([\"dismiss\", \"pause\"])),\n pageControl: Schema.optionalKey(Schema.Boolean),\n});\n\nexport type AutomationOptions = typeof AutomationOptions.Type;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"BrowserData.mjs","names":[],"sources":["../src/BrowserData.ts"],"sourcesContent":["import { Schema } from \"effect\";\n\nimport { BrowserError } from \"./Errors.ts\";\n\nexport const Identifier = Schema.NonEmptyString.check(\n Schema.isMaxLength(256),\n Schema.isPattern(/^[A-Za-z0-9_-]+$/),\n);\n\nexport const PositiveInt = Schema.Int.check(Schema.isGreaterThan(0));\n\n/** Portable basename only; never a local or remote filesystem path. */\nexport const SafeFilename = Schema.NonEmptyString.check(\n Schema.isMaxLength(240),\n Schema.makeFilter(\n (value) =>\n value !== \".\" &&\n value !== \"..\" &&\n // oxlint-disable-next-line eslint/no-control-regex -- control characters are what it rejects\n !/[\\x00-\\x1f\\x7f/\\\\:]/.test(value) &&\n !/[. ]$/.test(value) &&\n !/^\\s/.test(value) &&\n !/^(con|prn|aux|nul|com[1-9]|lpt[1-9])(?:\\.|$)/i.test(value),\n { title: \"a portable, non-path download filename\" },\n ),\n);\n\nexport class Viewport extends Schema.Class<Viewport>(\"BrowserViewport\")(\n Schema.Struct({\n width: PositiveInt.check(Schema.isLessThanOrEqualTo(4096)),\n height: PositiveInt.check(Schema.isLessThanOrEqualTo(4096)),\n }).check(\n Schema.makeFilter((v) => v.width * v.height <= 8_388_608, {\n title: \"at most 8,388,608 viewport pixels\",\n }),\n ),\n) {}\n\n/** Page/frame IDs are connection-local; targetId is a separate Chromium identity. */\n\nexport class Target extends Schema.Class<Target>(\"BrowserTarget\")({\n generation: Schema.Natural,\n pageId: Identifier,\n frameId: Identifier,\n}) {}\n\nexport class PageInfo extends Schema.Class<PageInfo>(\"BrowserPageInfo\")({\n pageId: Identifier,\n targetId: Identifier,\n url: Schema.String.check(Schema.isMaxLength(8192)),\n title: Schema.String.check(Schema.isMaxLength(512)),\n selected: Schema.Boolean,\n}) {}\n\nexport class FrameInfo extends Schema.Class<FrameInfo>(\"BrowserFrameInfo\")({\n frameId: Identifier,\n parentFrameId: Schema.NullOr(Identifier),\n url: Schema.String.check(Schema.isMaxLength(8192)),\n name: Schema.String.check(Schema.isMaxLength(256)),\n}) {}\n\nexport const SessionPhase = Schema.Literals([\n \"acquiring\",\n \"open\",\n \"paused\",\n \"detached\",\n \"faulted\",\n \"uncertain\",\n \"closing\",\n \"closed\",\n]);\n\nexport type SessionPhase = typeof SessionPhase.Type;\n\nexport const SessionReason = Schema.Literals([\n \"expired\",\n \"callback-failure\",\n \"registration-failure\",\n \"native-failure\",\n \"disconnected\",\n \"popup-policy\",\n \"dialog-policy\",\n \"popup-overflow\",\n \"dialog-overflow\",\n \"cleanup-capacity\",\n \"handoff\",\n \"detached\",\n \"closed\",\n]);\n\nexport type SessionReason = typeof SessionReason.Type;\n\nconst DiagnosticCounter = Schema.Natural.check(Schema.isLessThanOrEqualTo(Number.MAX_SAFE_INTEGER));\n\n/** The bound on one session's model-reachable actions, like the host-read allowance's. */\nconst ActionAllowance = PositiveInt.check(Schema.isLessThanOrEqualTo(1_000_000));\n\n/** Host-only admission evidence. Neither an admission token nor proof of remote termination. */\nexport class SessionStatus extends Schema.Class<SessionStatus>(\"BrowserSessionStatus\")({\n phase: SessionPhase,\n reason: Schema.NullOr(SessionReason),\n generation: DiagnosticCounter,\n busy: Schema.Boolean,\n unresolvedDispatch: Schema.Boolean,\n /**\n * Actions admitted against the policy's `maxActions`, as the owner counted them. Host reads\n * (`checkpoint`, `controlFacts`) and uncharged reads such as a form's verification are not\n * actions. `used` equals `maximum` once the allowance is spent; the owner stays open.\n */\n actions: Schema.Struct({\n used: Schema.Natural.check(Schema.isLessThanOrEqualTo(1_000_000)),\n maximum: ActionAllowance,\n }).check(\n Schema.makeFilter((actions) => actions.used <= actions.maximum, {\n title: \"no more actions used than allowed\",\n }),\n ),\n}) {}\n\n/** Bounded host facts only: no target identity, page content, native exception or consumer cause. */\nexport class BrowserDiagnostic extends Schema.Class<BrowserDiagnostic>(\"BrowserDiagnostic\")({\n reason: SessionReason,\n disposition: Schema.Literals([\"pending\", \"confirmed\", \"not-dispatched\", \"unknown\"]),\n generation: DiagnosticCounter,\n monotonicNanos: Schema.BigInt.check(Schema.isGreaterThanOrEqualToBigInt(0n)),\n}) {}\n\nexport class BrowserDiagnostics extends Schema.Class<BrowserDiagnostics>(\"BrowserDiagnostics\")({\n records: Schema.Array(BrowserDiagnostic).check(Schema.isMaxLength(32)),\n total: DiagnosticCounter,\n dropped: DiagnosticCounter,\n truncated: Schema.Boolean,\n}) {}\n\nexport class ObservedControl extends Schema.Class<ObservedControl>(\"BrowserObservedControl\")({\n elementId: Identifier,\n kind: Schema.Literals([\"link\", \"button\", \"input\", \"select\", \"textarea\", \"other\"]),\n label: Schema.String.check(Schema.isMaxLength(256)),\n disabled: Schema.Boolean,\n checked: Schema.optionalKey(Schema.Boolean),\n selected: Schema.optionalKey(Schema.Boolean),\n inputType: Schema.optionalKey(Schema.String.check(Schema.isMaxLength(32))),\n required: Schema.optionalKey(Schema.Boolean),\n /** Native select state. A select is never represented by one `selected` boolean. */\n multiple: Schema.optionalKey(Schema.Boolean),\n /** The issued select this native option belongs to, in the same observation. */\n selectElementId: Schema.optionalKey(Identifier),\n /** Some choices could not be issued within this reading's shared control/value bounds. */\n optionsTruncated: Schema.optionalKey(Schema.Boolean),\n}) {}\n\n/**\n * How a viewport reading was bounded and what it left out. These are counts, so they are safe\n * to show a model. Visibility is geometry and hit-testing, never a pixel comparison: text is\n * kept when its line boxes intersect the viewport and the browser finds its own element at a\n * sampled point. Something that takes no pointer events is invisible to that test, so the\n * browser is asked what is on top there with pointer events ignored: a box that paints at the\n * point covers the text, and one that paints nothing there, such as an empty full-screen\n * container, does not. Text that could not be settled that way is left out as uncertain.\n */\nexport class ViewportEvidence extends Schema.Class<ViewportEvidence>(\"BrowserViewportEvidence\")({\n width: Schema.Finite,\n height: Schema.Finite,\n /** Text that crossed a viewport edge; only its lines on screen were kept. */\n clippedText: Schema.Natural,\n /** Left out: another element is on top at the sampled point, or a box there paints over it. */\n coveredText: Schema.Natural,\n /**\n * Left out: something that takes no pointer events lies over it and the browser's own hit test\n * could not settle whether it paints there, for example beneath another such box, in a child\n * frame, or after too many such points in one reading.\n */\n uncertainText: Schema.Natural,\n /** Controls that intersect the viewport but cannot be reached there. */\n unreachableControls: Schema.Natural,\n /** The traversal budget ran out first, so this reading is known to be incomplete. */\n exhausted: Schema.Boolean,\n}) {}\n\n/**\n * Case-insensitive text a reading keeps. It is applied inside the page before any limit, so\n * matching controls are not crowded out by earlier ones. It filters what is read; it never\n * searches for, re-finds or substitutes a node.\n */\nexport const ReadingMatch = Schema.String.check(\n Schema.isMinLength(1),\n Schema.isMaxLength(256),\n Schema.makeFilter((value) => value.trim().length > 0, { title: \"not only whitespace\" }),\n);\n\n/**\n * Revision is admission fencing, not a claim of a complete DOM version or atomic snapshot. A\n * `viewport` reading holds what is on screen and reachable, plus the bounded choices of its\n * native selects. Those choices are not a claim that a closed dropdown's rows were visible.\n * A `document` reading is the whole body, wherever it is. A reading with `match` keeps only\n * matching text lines and controls, so what it leaves out is not evidence of absence. Nothing\n * here carries a destination, a form or a field value.\n */\nexport class Observation extends Schema.Class<Observation>(\"BrowserObservation\")({\n target: Target,\n observationId: Identifier,\n revision: Schema.Natural,\n scope: Schema.Literals([\"document\", \"viewport\"]),\n match: Schema.optionalKey(ReadingMatch),\n url: Schema.String.check(Schema.isMaxLength(8192)),\n text: Schema.String.check(Schema.isMaxLength(131072)),\n controls: Schema.Array(ObservedControl).check(Schema.isMaxLength(64)),\n controlsTruncated: Schema.Boolean,\n textTruncated: Schema.Boolean,\n viewport: ViewportEvidence,\n}) {}\n\nexport class ObservedElement extends Schema.Class<ObservedElement>(\"BrowserObservedElement\")({\n observationId: Identifier,\n elementId: Identifier,\n}) {}\n\n/** Observe a condition of this exact node. A replacement never satisfies the reference. */\nexport class WaitForElementRequest extends Schema.Class<WaitForElementRequest>(\n \"BrowserWaitForElementRequest\",\n)({\n reference: ObservedElement,\n state: Schema.Literals([\"visible\", \"hidden\", \"enabled\", \"disabled\"]),\n timeoutMillis: Schema.optionalKey(\n Schema.Int.check(Schema.isBetween({ minimum: 1, maximum: 60000 })),\n ),\n}) {}\n\n/** Issued option element IDs from one observed native select; never values, labels or indices. */\nexport const SelectOptions = Schema.Array(Identifier).check(\n Schema.isMinLength(1),\n Schema.isMaxLength(64),\n Schema.makeFilter((ids) => new Set(ids).size === ids.length),\n);\n\nexport type SelectOptions = typeof SelectOptions.Type;\n\n/** Live, connection-owned receipt. It is not a durable promise that remote clocks remain held. */\nexport class PageSuspension extends Schema.Class<PageSuspension>(\"BrowserPageSuspension\")({\n pageId: Identifier,\n targetId: Identifier,\n suspensionId: Identifier,\n}) {}\n\nexport class PageExecutionState extends Schema.Class<PageExecutionState>(\n \"BrowserPageExecutionState\",\n)({\n pageId: Identifier,\n targetId: Identifier,\n state: Schema.Literals([\"running\", \"suspended\", \"unknown\"]),\n suspensionId: Schema.optionalKey(Identifier),\n}) {}\n\n/** Explicit opt-out: this integration does not claim whole-browser network containment. */\nexport class BrowserPolicy extends Schema.Class<BrowserPolicy>(\"BrowserBrowserPolicy\")({\n network: Schema.TaggedStruct(\"Unrestricted\", {}),\n /** Model-reachable actions for the session's lifetime, 1–1,000,000. `status.actions` reads use. */\n maxActions: ActionAllowance,\n maxElapsedMillis: PositiveInt.check(Schema.isLessThanOrEqualTo(21_600_000)),\n maxReturnedBytes: PositiveInt.check(Schema.isLessThanOrEqualTo(8 * 1024 * 1024)),\n}) {\n /**\n * Conservative bounds for trusted host code: 100 actions, five minutes, 2 MiB returned.\n * The network choice is spelled out in the name because this runtime cannot prove a\n * narrower one; override any bound, never the network. A long session raises `maxActions`\n * (up to 1,000,000) and `maxElapsedMillis` (up to six hours) together.\n */\n static unrestricted(\n bounds: Partial<\n Pick<BrowserPolicy, \"maxActions\" | \"maxElapsedMillis\" | \"maxReturnedBytes\">\n > = {},\n ): BrowserPolicy {\n return BrowserPolicy.make({\n network: { _tag: \"Unrestricted\" },\n maxActions: bounds.maxActions ?? 100,\n maxElapsedMillis: bounds.maxElapsedMillis ?? 5 * 60_000,\n maxReturnedBytes: bounds.maxReturnedBytes ?? 2 * 1024 * 1024,\n });\n }\n}\n\nexport const TargetUrl = Schema.NonEmptyString.check(\n Schema.isMaxLength(8192),\n Schema.makeFilter((value) => {\n try {\n const url = new URL(value);\n\n return (\n [\"http:\", \"https:\"].includes(url.protocol) &&\n url.hostname !== \"\" &&\n !url.username &&\n !url.password\n );\n } catch {\n return false;\n }\n }),\n);\n\nexport const Selector = Schema.NonEmptyString.check(Schema.isMaxLength(1024));\n\nexport class NavigateRequest extends Schema.Class<NavigateRequest>(\"BrowserNavigateRequest\")({\n url: TargetUrl,\n timeoutMillis: Schema.optionalKey(\n Schema.Int.check(Schema.isBetween({ minimum: 1, maximum: 600000 })),\n ),\n}) {}\n\n/**\n * A navigation left in flight. `timeoutMillis` is how long the browser may take to reach\n * DOMContentLoaded; omitted, it is the action timeout, as it is for `navigate`.\n */\nexport class StartNavigationRequest extends Schema.Class<StartNavigationRequest>(\n \"BrowserStartNavigationRequest\",\n)({\n url: TargetUrl,\n timeoutMillis: Schema.optionalKey(\n Schema.Int.check(Schema.isBetween({ minimum: 1, maximum: 600000 })),\n ),\n}) {}\n\nexport class ReadTextRequest extends Schema.Class<ReadTextRequest>(\"BrowserReadTextRequest\")({\n selector: Schema.optionalKey(Selector),\n}) {}\n\nexport class ClickRequest extends Schema.Class<ClickRequest>(\"BrowserClickRequest\")({\n selector: Selector,\n}) {}\n\nexport class FillRequest extends Schema.Class<FillRequest>(\"BrowserFillRequest\")({\n selector: Selector,\n value: Schema.String.check(Schema.isMaxLength(65536)),\n}) {}\n\n/**\n * One observed control and the one state a form gives it: replacement text, the checked state a\n * checkbox, radio or switch should end in (it is clicked only when it differs, and a native radio\n * is never asked to clear itself), or issued option IDs of a native select from the same\n * observation.\n */\nexport const FormField = Schema.Struct({\n elementId: Identifier,\n value: Schema.optionalKey(FillRequest.fields.value),\n checked: Schema.optionalKey(Schema.Boolean),\n options: Schema.optionalKey(SelectOptions),\n}).check(\n Schema.makeFilter(\n (field) =>\n Number(field.value !== undefined) +\n Number(field.checked !== undefined) +\n Number(field.options !== undefined) ===\n 1,\n { title: \"exactly one of value, checked or options\" },\n ),\n);\n\nexport type FormField = typeof FormField.Type;\n\n/** At most 32 distinct fields, and a submit control that is not one of them. */\nexport class FillFormRequest extends Schema.Class<FillFormRequest>(\"BrowserFillFormRequest\")(\n Schema.Struct({\n observationId: Identifier,\n fields: Schema.Array(FormField).check(\n Schema.isMinLength(1),\n Schema.isMaxLength(32),\n Schema.makeFilter(\n (fields) => new Set(fields.map((field) => field.elementId)).size === fields.length,\n { title: \"each field at most once\" },\n ),\n ),\n submit: Schema.optionalKey(Identifier),\n }).check(\n Schema.makeFilter(\n (request) =>\n request.submit === undefined ||\n !request.fields.some((field) => field.elementId === request.submit),\n { title: \"a submit control that is not also a field\" },\n ),\n ),\n) {}\n\n/**\n * Host choices about how a form proceeds. `verify` (default true) re-reads every field before\n * submit and stops when one no longer holds what its own step left there. `settleMillis`\n * (default 50, at most 5000; 0 skips it) is how long each dispatched step lets the page's own\n * handlers run, after at least two rendered frames, before its result is read back.\n */\nexport const FillFormOptions = Schema.Struct({\n verify: Schema.optionalKey(Schema.Boolean),\n settleMillis: Schema.optionalKey(\n Schema.Int.check(Schema.isBetween({ minimum: 0, maximum: 5000 })),\n ),\n});\n\nexport type FillFormOptions = typeof FillFormOptions.Type;\n\n/**\n * Where a form stopped and why. `error.outcome` says whether this step itself was dispatched;\n * nothing after it was. `elementId` names the control it stopped at, when there is one: a\n * verification that could not read the form at all names none.\n */\nexport class FormStop extends Schema.Class<FormStop>(\"BrowserFormStop\")({\n stage: Schema.Literals([\"field\", \"verify\", \"submit\"]),\n elementId: Schema.optionalKey(Identifier),\n error: BrowserError,\n}) {}\n\n/**\n * What a form did, in order. `stopped` is present when it did not finish: the fields before it\n * stay set, because a form is not a transaction. `submitted` is true only when the submit click\n * completed; a stop at `submit` with an `unknown` outcome may have sent it.\n */\nexport class ScrollRequest extends Schema.Class<ScrollRequest>(\"BrowserScrollRequest\")({\n deltaX: Schema.Int.check(Schema.isBetween({ minimum: -100000, maximum: 100000 })),\n deltaY: Schema.Int.check(Schema.isBetween({ minimum: -100000, maximum: 100000 })),\n}) {}\n\n/**\n * CSS pixels in the main frame's viewport, the space Chromium dispatches pointer input in. It\n * is not a document offset, a device pixel, or a coordinate inside a child frame.\n */\nexport class ViewportPoint extends Schema.Class<ViewportPoint>(\"BrowserViewportPoint\")({\n x: Schema.Finite.check(Schema.isBetween({ minimum: 0, maximum: 16384 })),\n y: Schema.Finite.check(Schema.isBetween({ minimum: 0, maximum: 16384 })),\n}) {}\n\n/** A box in the viewport of the frame it was read from, in CSS pixels. */\nexport class ViewportRect extends Schema.Class<ViewportRect>(\"BrowserViewportRect\")({\n x: Schema.Finite,\n y: Schema.Finite,\n width: Schema.Finite,\n height: Schema.Finite,\n}) {}\n\n/**\n * What a host needs to decide whether a control may be acted on. Host-only: a destination can\n * carry a token, so none of this is part of the model-facing `Observation`. It never includes a\n * field's value or any markup.\n */\nexport class ControlFacts extends Schema.Class<ControlFacts>(\"BrowserControlFacts\")({\n kind: ObservedControl.fields.kind,\n label: ObservedControl.fields.label,\n disabled: Schema.Boolean,\n checked: Schema.optionalKey(Schema.Boolean),\n selected: Schema.optionalKey(Schema.Boolean),\n required: Schema.optionalKey(Schema.Boolean),\n multiple: Schema.optionalKey(Schema.Boolean),\n editable: Schema.Boolean,\n inputType: Schema.optionalKey(Schema.String.check(Schema.isMaxLength(32))),\n autocomplete: Schema.optionalKey(Schema.String.check(Schema.isMaxLength(128))),\n /** A resolved link target, or where this control submits its form. Absent when over-long. */\n destination: Schema.optionalKey(Schema.String.check(Schema.isMaxLength(2048))),\n formMethod: Schema.optionalKey(Schema.Literals([\"get\", \"post\", \"dialog\"])),\n box: ViewportRect,\n placement: Schema.Literals([\"inside\", \"partial\", \"outside\"]),\n /** `self`: the browser finds this control at its visible centre. Not a pixel comparison. */\n hitTest: Schema.Literals([\"self\", \"covered\", \"uncertain\", \"unsampled\"]),\n /** Only then is `box` in the main frame's viewport, the space pointer input uses. */\n mainFrame: Schema.Boolean,\n}) {}\n\n/**\n * Passive evidence for a recorder: what was on screen, and optionally a picture of it. It issues\n * no element references and never replaces the observation an agent's tools act on, so\n * inspecting, checkpointing and then acting on the inspected node all compose.\n *\n * It is host-only, because it carries control facts. Text and picture are read one after the\n * other, never atomically: the interval says when, and `documentChanged` says the document was\n * replaced in between, so the two may describe different documents.\n */\nexport class Checkpoint extends Schema.Class<Checkpoint>(\"BrowserCheckpoint\")({\n target: Target,\n revision: Schema.Natural,\n url: Schema.String.check(Schema.isMaxLength(8192)),\n text: Schema.String.check(Schema.isMaxLength(131072)),\n textTruncated: Schema.Boolean,\n controls: Schema.Array(ControlFacts).check(Schema.isMaxLength(64)),\n controlsTruncated: Schema.Boolean,\n viewport: ViewportEvidence,\n picture: Schema.optionalKey(\n Schema.Struct({ mediaType: Schema.Literal(\"image/png\"), bytes: Schema.Uint8Array }),\n ),\n documentChanged: Schema.Boolean,\n startedMonotonicNanos: Schema.BigInt,\n completedMonotonicNanos: Schema.BigInt,\n}) {}\n\nconst ReadingBounds = {\n maxTextBytes: Schema.optionalKey(\n Schema.Int.check(Schema.isBetween({ minimum: 1, maximum: 131072 })),\n ),\n maxControls: Schema.optionalKey(Schema.Int.check(Schema.isBetween({ minimum: 0, maximum: 64 }))),\n};\n\n/** Omitted bounds default at admission; `scope` defaults to the whole document. */\nexport const ObservationOptions = Schema.Struct({\n scope: Schema.optionalKey(Schema.Literals([\"document\", \"viewport\"])),\n match: Schema.optionalKey(ReadingMatch),\n ...ReadingBounds,\n});\n\nexport type ObservationOptions = typeof ObservationOptions.Type;\n\n/** A checkpoint always reads the viewport. `picture` adds a PNG of it, within the byte policy. */\nexport const CheckpointOptions = Schema.Struct({\n ...ReadingBounds,\n picture: Schema.optionalKey(Schema.Boolean),\n});\n\nexport type CheckpointOptions = typeof CheckpointOptions.Type;\n\n/** One native pointer move. Easing and pacing are the caller's: send the points you want. */\nexport class PointerMoveRequest extends Schema.Class<PointerMoveRequest>(\n \"BrowserPointerMoveRequest\",\n)({ to: ViewportPoint }) {}\n\n/** Moves the pointer onto one exact element where it is. It never scrolls to reach it. */\nexport class HoverRequest extends Schema.Class<HoverRequest>(\"BrowserHoverRequest\")({\n selector: Selector,\n}) {}\n\nconst WheelDelta = Schema.Finite.check(Schema.isBetween({ minimum: -100000, maximum: 100000 }));\n\n/**\n * One native wheel event where the pointer is, or at `at` after moving there first. The browser\n * chooses what scrolls, exactly as it would for a person, so a nested scroll container under\n * the pointer scrolls instead of the page.\n */\nexport class WheelRequest extends Schema.Class<WheelRequest>(\"BrowserWheelRequest\")({\n deltaX: WheelDelta,\n deltaY: WheelDelta,\n at: Schema.optionalKey(ViewportPoint),\n}) {}\n\n/**\n * The keys a `press` may name, spelled as the `KeyboardEvent.key` the page will see. The set is\n * closed on purpose: a key name is parsed by the native engine, so none reaches it unreviewed.\n */\nexport const NamedKey = Schema.Literals([\n \"Enter\",\n \"Tab\",\n \"Backspace\",\n \"Delete\",\n \"Escape\",\n \"ArrowLeft\",\n \"ArrowRight\",\n \"ArrowUp\",\n \"ArrowDown\",\n \"Home\",\n \"End\",\n \"PageUp\",\n \"PageDown\",\n]);\n\nexport type NamedKey = typeof NamedKey.Type;\n\n/** One printable ASCII character, space included: every one is a key on the US layout. */\nconst PrintableKey = Schema.String.check(Schema.isPattern(/^[\\x20-\\x7e]$/));\n\nexport const KeyModifier = Schema.Literals([\"Shift\", \"Control\", \"Alt\", \"Meta\"]);\n\nexport type KeyModifier = typeof KeyModifier.Type;\n\n/** One key, down then up, with any modifiers held around it. */\nexport const KeyStroke = Schema.Struct({\n key: Schema.Union([NamedKey, PrintableKey]),\n modifiers: Schema.optionalKey(\n Schema.Array(KeyModifier).check(\n Schema.makeFilter((held) => new Set(held).size === held.length, {\n title: \"each modifier at most once\",\n }),\n ),\n ),\n});\n\nexport type KeyStroke = typeof KeyStroke.Type;\n\n/**\n * One real key stroke. It goes to whatever has focus in the page, exactly as it would for a\n * person, unless `into` names the one element that must already have it. It never focuses that\n * element, because that would hide a scripted focus inside a native-input operation: click it\n * first.\n */\nexport class PressRequest extends Schema.Class<PressRequest>(\"BrowserPressRequest\")({\n ...KeyStroke.fields,\n into: Schema.optionalKey(Selector),\n}) {}\n\n/** Counted in characters, not UTF-16 units, because that is how many strokes it costs. */\nconst TypedText = Schema.NonEmptyString.check(\n Schema.makeFilter((text) => [...text].length <= 256, { title: \"at most 256 characters\" }),\n Schema.makeFilter(\n (text) =>\n [...text].every((character) => {\n const point = character.codePointAt(0) ?? 0;\n\n // An unpaired surrogate is not a character, and would not survive the wire as one.\n return point > 0x1f && point !== 0x7f && (point < 0xd800 || point > 0xdfff);\n }),\n { title: \"no control characters or unpaired surrogates\" },\n ),\n);\n\n/**\n * Text as the real key strokes that produce it, two native commands for each character, one\n * after another under a single action timeout: send a long passage as several shorter runs.\n * A character the US layout cannot produce is inserted as text, as an input method commits it,\n * and raises no key events. Control characters are refused, so a line break can never press\n * Enter from inside a run of text: a named key is always its own `press`. `into` works as it\n * does for `PressRequest`: a guard on where the text lands, never a focus.\n */\nexport class TypeRequest extends Schema.Class<TypeRequest>(\"BrowserTypeRequest\")({\n text: TypedText,\n into: Schema.optionalKey(Selector),\n}) {}\n\n/**\n * What native input was dispatched, where and when. `position` is the point this owner\n * commanded, null before it has placed the pointer, or unknown when Playwright chose the click\n * point internally. For clicks, the interval brackets Playwright's supported click call, which\n * can include its actionability and navigation waits; the browser's exact dispatch instant is\n * unavailable. The interval is on the host monotonic clock that stamps\n * `CapturedFrame.receivedMonotonicNanos`, so input and\n * pixels share one timeline. A wheel event is dispatched, not awaited: the receipt does not\n * claim the page finished scrolling, or that any frame shows it. A receipt never says which\n * key was pressed or what was typed.\n */\nexport class InputReceipt extends Schema.Class<InputReceipt>(\"BrowserInputReceipt\")({\n target: Target,\n kind: Schema.Literals([\"pointer-move\", \"hover\", \"wheel\", \"click\", \"press\", \"type\"]),\n position: Schema.NullOr(ViewportPoint),\n delta: Schema.optionalKey(Schema.Struct({ x: WheelDelta, y: WheelDelta })),\n startedMonotonicNanos: Schema.BigInt,\n completedMonotonicNanos: Schema.BigInt,\n}) {}\n\n/** `set` dispatched input; `unchanged` needed none, because a toggle already held its state. */\nexport class FormFieldResult extends Schema.Class<FormFieldResult>(\"BrowserFormFieldResult\")({\n elementId: Identifier,\n status: Schema.Literals([\"set\", \"unchanged\"]),\n input: Schema.optionalKey(InputReceipt),\n}) {}\n\n/** The bounded receipts for any toggle clicks and the one optional submit click. */\nexport class FillFormResult extends Schema.Class<FillFormResult>(\"BrowserFillFormResult\")({\n fields: Schema.Array(FormFieldResult).check(Schema.isMaxLength(32)),\n submitted: Schema.Boolean,\n url: TargetUrl,\n submitInput: Schema.optionalKey(InputReceipt),\n stopped: Schema.optionalKey(FormStop),\n}) {}\n\nexport class ScreenshotRequest extends Schema.Class<ScreenshotRequest>(\"BrowserScreenshotRequest\")({\n fullPage: Schema.Boolean,\n}) {}\n\nexport class NavigationResult extends Schema.Class<NavigationResult>(\"BrowserNavigationResult\")({\n url: TargetUrl,\n}) {}\n\nexport class ActionResult extends Schema.Class<ActionResult>(\"BrowserActionResult\")({\n url: TargetUrl,\n /** Present for clicks; fill and scripted scroll results have no native input receipt. */\n input: Schema.optionalKey(InputReceipt),\n}) {}\n\nexport class TextResult extends Schema.Class<TextResult>(\"BrowserTextResult\")({\n text: Schema.String.check(Schema.isMaxLength(8 * 1024 * 1024)),\n}) {}\n\nexport class ScreenshotResult extends Schema.Class<ScreenshotResult>(\"BrowserScreenshotResult\")({\n mediaType: Schema.Literal(\"image/png\"),\n bytes: Schema.Uint8Array,\n}) {}\n\nconst FileMediaType = Schema.NonEmptyString.check(\n Schema.isMaxLength(128),\n Schema.isPattern(/^[a-z0-9][a-z0-9!#$&^_+.-]*\\/[a-z0-9][a-z0-9!#$&^_+.-]*$/),\n);\n\n/** Small selection is in-memory by design: bytes the caller already holds, never a path. */\nexport class InlineFile extends Schema.Class<InlineFile>(\"BrowserInlineFile\")({\n name: SafeFilename,\n mediaType: FileMediaType,\n bytes: Schema.Uint8Array.check(\n Schema.makeFilter((value) => value.byteLength >= 1 && value.byteLength <= 1024 * 1024, {\n title: \"between one byte and one mebibyte\",\n }),\n ),\n}) {}\n\nexport const InlineFiles = Schema.Array(InlineFile).check(\n Schema.isMaxLength(8),\n Schema.makeFilter(\n (files) =>\n files.length > 0 &&\n files.reduce((total, file) => total + file.bytes.byteLength, 0) <= 4 * 1024 * 1024,\n { title: \"at most four mebibytes of in-memory selection\" },\n ),\n);\n\nexport const AutomationOptions = Schema.Struct({\n actionTimeoutMillis: Schema.optionalKey(\n Schema.Int.check(Schema.isBetween({ minimum: 1, maximum: 60000 })),\n ),\n /** Independent host-only checkpoint/control-facts allowance; normalized to 10,000 by the runtime. */\n maxHostReads: Schema.optionalKey(\n Schema.Int.check(Schema.isBetween({ minimum: 1, maximum: 1_000_000 })),\n ),\n maxPages: Schema.optionalKey(Schema.Int.check(Schema.isBetween({ minimum: 1, maximum: 32 }))),\n initialPage: Schema.optionalKey(\n Schema.Union([\n Schema.Struct({ targetId: Identifier }),\n Schema.Struct({ newPage: Schema.Literal(true) }),\n ]),\n ),\n popupPolicy: Schema.optionalKey(Schema.Literals([\"retain\", \"close\", \"pause\"])),\n dialogPolicy: Schema.optionalKey(Schema.Literals([\"dismiss\", \"pause\"])),\n pageControl: Schema.optionalKey(Schema.Boolean),\n});\n\nexport type AutomationOptions = typeof AutomationOptions.Type;\n"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { BrowserError, InitializationError } from "./Errors.mjs";
|
|
2
|
-
import { O as Observation, a as BrowserPolicy, b as InlineFile, c as ClickRequest, et as Viewport, n as AutomationOptions, t as ActionResult } from "./BrowserData-
|
|
2
|
+
import { O as Observation, a as BrowserPolicy, b as InlineFile, c as ClickRequest, et as Viewport, n as AutomationOptions, t as ActionResult } from "./BrowserData-DPh3Oaof.mjs";
|
|
3
3
|
import { BrowserSession, OpenOptions } from "./Browser.mjs";
|
|
4
4
|
import { Crypto, Effect, Option, Redacted, Schema, Scope } from "effect";
|
|
5
5
|
//#region src/internal/browser/ConnectionCleanup.d.ts
|
|
@@ -140,4 +140,4 @@ declare const make: (options: RuntimeOptions) => Effect.Effect<Runtime, BrowserE
|
|
|
140
140
|
//#endregion
|
|
141
141
|
export { ConnectionCleanup as _, DownloadEvent as a, noConnection as b, Lifetime as c, Runtime as d, RuntimeOptions as f, CleanupStep as g, playwright as h, Connection as i, PlaywrightOptions as l, make as m, Acquisition as n, FileRequest as o, Source as p, BrowserBinding as r, Integration as s, AcquireOptions as t, ResolvedFileSelection as u, ConnectionState as v, reported as x, cleanupStep as y };
|
|
142
142
|
export {};
|
|
143
|
-
//# sourceMappingURL=BrowserRuntime-
|
|
143
|
+
//# sourceMappingURL=BrowserRuntime-BBAjpVFa.d.mts.map
|