@vosjs/render-core 0.9.0 → 0.11.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.
@@ -416,6 +416,186 @@ declare function deadWarns(r: DeadReport): boolean;
416
416
  /** The dead time in words, naming the steps and what to cut. */
417
417
  declare function deadLine(r: DeadReport): string;
418
418
 
419
+ /**
420
+ * `setup`: the steps that run BEFORE the camera rolls. A sign-in form, a
421
+ * cookie banner, the "choose your editor" modal, an onboarding tour: things
422
+ * a take must get past and must not show. They run after the first
423
+ * navigation and before `Page.startScreencast`, with no cursor synthesis,
424
+ * no pace accounting and nothing written to `meta.steps`. Then the recorder
425
+ * navigates to `url` again and the take begins where the setup left it.
426
+ *
427
+ * A `type` step's `text` may be `{ "env": "DEMO_PASSWORD" }`: resolved at run
428
+ * time from the `env` the caller hands in (the shell's for the CLI, the
429
+ * job's own map for a hosted take), never logged, never stored. The
430
+ * guarantee is narrow and real: the secret is never in a file that travels
431
+ * (`actions.json` is committed and pushed with the take; `meta.json` is read
432
+ * by the digest) and never in the footage.
433
+ *
434
+ * `teardown`: the same steps, run AFTER the take, off camera too: what the
435
+ * take created in the product (an API key, a project, an invite) removed
436
+ * again, so a rehearsal or a re-record leaves the account as it found it.
437
+ * They run once the screencast has stopped, on the take's own page and
438
+ * context (a session's cookies apply), and also when the take stops early
439
+ * or throws once its first step has run. A teardown that fails never fails
440
+ * the take: the footage is fine, and what is left behind is reported.
441
+ *
442
+ * `if`: a guard, `{ "do": "if", "selector": "…" }`. When its selector is on
443
+ * the page the steps after it run as usual; when it is not, they are skipped
444
+ * and the list ends there, which is not a failure. A teardown that undoes
445
+ * what the take may already have removed on camera starts its undoing with
446
+ * one (`if` the new key's row is still listed), so a good take reports
447
+ * nothing to undo instead of a failure; a setup that signs in guards its
448
+ * sign-in the same way (`if` the email field shows), so a session that is
449
+ * already signed in passes. A failure AFTER a guard is still a failure.
450
+ */
451
+
452
+ type SetupText = string | {
453
+ env: string;
454
+ };
455
+ type SetupStep = ({
456
+ do: 'wait';
457
+ ms: number;
458
+ } | {
459
+ do: 'click';
460
+ selector: string;
461
+ ms?: number;
462
+ } | {
463
+ do: 'type';
464
+ selector: string;
465
+ text: SetupText;
466
+ ms?: number;
467
+ } | {
468
+ do: 'press';
469
+ key: string;
470
+ ms?: number;
471
+ } | {
472
+ do: 'goto';
473
+ url: string;
474
+ } | {
475
+ do: 'if';
476
+ selector: string;
477
+ ms?: number;
478
+ }) & {
479
+ id?: string;
480
+ };
481
+ /** How long an `if` looks for its selector, when it names no `ms`. */
482
+ declare const IF_LOOK_MS = 3000;
483
+ /** Which list a step belongs to, as its messages and log lines name it. */
484
+ type StepPhase = 'setup' | 'teardown';
485
+ /**
486
+ * Why a page address is not one the recorder opens, or null. A script's
487
+ * `url` and a setup's `goto` open a browser, so only http and https are
488
+ * taken: a `file:` address would read this machine's disk into a take
489
+ * and a `javascript:` one would run in the page.
490
+ */
491
+ declare function urlSchemeProblem(url: string): string | null;
492
+ /**
493
+ * Structural validation, mirrored on `validateActions` for `steps`. The
494
+ * same verbs and rules hold for `teardown`; `phase` names the list.
495
+ */
496
+ declare function validateSetup(value: unknown, phase?: StepPhase): string[];
497
+ /** The names a setup reads from its env, so a host can say what it must supply. */
498
+ declare function setupEnvNames(steps: SetupStep[] | undefined): string[];
499
+ /**
500
+ * Every name a script reads from its env, its setup's and its teardown's,
501
+ * each once: what a host must supply before the take begins.
502
+ */
503
+ declare function scriptEnvNames(script: {
504
+ setup?: SetupStep[];
505
+ teardown?: SetupStep[];
506
+ }): string[];
507
+ /** A `{ env }` text resolved, or thrown in words. The value is never returned to a log. */
508
+ declare function resolveSetupText(t: SetupText, env: Record<string, string | undefined>, phase?: StepPhase): {
509
+ value: string;
510
+ secret: boolean;
511
+ };
512
+ /**
513
+ * The first `{ env }` a teardown reads that `env` does not hold, in words,
514
+ * or null. Asked BEFORE the take: a take that creates something its
515
+ * teardown cannot then remove is the one case teardown exists for.
516
+ */
517
+ declare function teardownEnvProblem(steps: SetupStep[] | undefined, env: Record<string, string | undefined>): string | null;
518
+ interface SetupResult {
519
+ ran: number;
520
+ /** what the log may say about each step: the verb and the selector, never a typed value */
521
+ lines: string[];
522
+ /**
523
+ * The step that failed: for a setup, a selector that never appeared (the
524
+ * take does not start); for a teardown, the step it stopped at. `error`
525
+ * is the driver's reason, one line, never a typed value.
526
+ */
527
+ failed?: {
528
+ step: number;
529
+ do: string;
530
+ selector?: string;
531
+ error?: string;
532
+ };
533
+ /**
534
+ * An `if` whose selector was not on the page: the list ended there, and
535
+ * `rest` steps after it were skipped. Not a failure.
536
+ */
537
+ skipped?: {
538
+ step: number;
539
+ selector: string;
540
+ rest: number;
541
+ };
542
+ }
543
+ /** How long a whole teardown may take before it is stopped and reported. */
544
+ declare const TEARDOWN_BOUND_MS = 60000;
545
+ /**
546
+ * What a teardown did, on the take's result: how many of its steps ran,
547
+ * and where it stopped. Never a typed value.
548
+ */
549
+ interface TeardownReport {
550
+ ran: number;
551
+ of: number;
552
+ failed?: {
553
+ step: number;
554
+ do: string;
555
+ selector?: string;
556
+ error: string;
557
+ };
558
+ /** An `if` whose selector was gone: nothing left to undo, never a failure. */
559
+ skipped?: {
560
+ step: number;
561
+ selector: string;
562
+ rest: number;
563
+ };
564
+ }
565
+ /** The teardown in one line, for the end of a take or a rehearsal. */
566
+ declare function teardownLine(report: TeardownReport): string;
567
+ /**
568
+ * Run the setup (or the teardown) on a page, with plain Playwright actions:
569
+ * no humanized pointer, no cursor events, no frames. A selector that never
570
+ * appears fails the steps there, because a take that begins at a
571
+ * half-finished sign-in is the wall by another name. With `boundMs`, the
572
+ * steps together run no longer than that: the step running when it passes
573
+ * fails, and the call it left pending is abandoned.
574
+ */
575
+ declare function runSetup(page: RecorderPage, steps: SetupStep[], opts: {
576
+ sleep: (ms: number) => Promise<void>;
577
+ /** Absent means no env at all: a `{ env }` text then fails in words. */
578
+ env?: Record<string, string | undefined>;
579
+ /** How a `goto` opens its page and waits for it (the take's ready mode); absent, network idle. */
580
+ goto?: (url: string) => Promise<unknown>;
581
+ /** Which list these are, for the log and the messages (default `setup`). */
582
+ phase?: StepPhase;
583
+ /** The longest the steps may take together, in ms. */
584
+ boundMs?: number;
585
+ now?: () => number;
586
+ }): Promise<SetupResult>;
587
+ /** A `{ env }` the shell did not provide: a usage error, not a page's. */
588
+ declare class SetupEnvError extends Error {
589
+ constructor(message: string);
590
+ }
591
+ /** A setup step whose selector never appeared: the take does not start. */
592
+ declare class SetupError extends Error {
593
+ failed: NonNullable<SetupResult['failed']>;
594
+ constructor(failed: NonNullable<SetupResult['failed']>);
595
+ }
596
+ /** `--header name=value`, repeatable: extra request headers on every request. */
597
+ declare function parseHeaders(given: string[] | undefined): Record<string, string>;
598
+
419
599
  /**
420
600
  * The page's own console errors, as the recorder reports them. A page
421
601
  * under recording is someone else's, and its errors are context, never the
@@ -564,99 +744,6 @@ declare function noticeLine(n: Notice): string;
564
744
  */
565
745
  declare function noticeAdvice(notices: readonly Pick<Notice, 'kind'>[]): string;
566
746
 
567
- /**
568
- * `setup`: the steps that run BEFORE the camera rolls. A sign-in form, a
569
- * cookie banner, the "choose your editor" modal, an onboarding tour: things
570
- * a take must get past and must not show. They run after the first
571
- * navigation and before `Page.startScreencast`, with no cursor synthesis,
572
- * no pace accounting and nothing written to `meta.steps`. Then the recorder
573
- * navigates to `url` again and the take begins where the setup left it.
574
- *
575
- * A `type` step's `text` may be `{ "env": "DEMO_PASSWORD" }`: resolved at run
576
- * time from the `env` the caller hands in (the shell's for the CLI, the
577
- * job's own map for a hosted take), never logged, never stored. The
578
- * guarantee is narrow and real: the secret is never in a file that travels
579
- * (`actions.json` is committed and pushed with the take; `meta.json` is read
580
- * by the digest) and never in the footage.
581
- */
582
-
583
- type SetupText = string | {
584
- env: string;
585
- };
586
- type SetupStep = ({
587
- do: 'wait';
588
- ms: number;
589
- } | {
590
- do: 'click';
591
- selector: string;
592
- ms?: number;
593
- } | {
594
- do: 'type';
595
- selector: string;
596
- text: SetupText;
597
- ms?: number;
598
- } | {
599
- do: 'press';
600
- key: string;
601
- ms?: number;
602
- } | {
603
- do: 'goto';
604
- url: string;
605
- }) & {
606
- id?: string;
607
- };
608
- /**
609
- * Why a page address is not one the recorder opens, or null. A script's
610
- * `url` and a setup's `goto` open a browser, so only http and https are
611
- * taken: a `file:` address would read this machine's disk into a take
612
- * and a `javascript:` one would run in the page.
613
- */
614
- declare function urlSchemeProblem(url: string): string | null;
615
- /** Structural validation, mirrored on `validateActions` for `steps`. */
616
- declare function validateSetup(value: unknown): string[];
617
- /** The names a setup reads from its env, so a host can say what it must supply. */
618
- declare function setupEnvNames(steps: SetupStep[] | undefined): string[];
619
- /** A `{ env }` text resolved, or thrown in words. The value is never returned to a log. */
620
- declare function resolveSetupText(t: SetupText, env: Record<string, string | undefined>): {
621
- value: string;
622
- secret: boolean;
623
- };
624
- interface SetupResult {
625
- ran: number;
626
- /** what the log may say about each step: the verb and the selector, never a typed value */
627
- lines: string[];
628
- /** a selector that never appeared; the take does not start */
629
- failed?: {
630
- step: number;
631
- do: string;
632
- selector?: string;
633
- };
634
- }
635
- /**
636
- * Run the setup on a page, with plain Playwright actions: no humanized
637
- * pointer, no cursor events, no frames. A selector that never appears
638
- * fails the setup, because a take that begins at a half-finished sign-in is
639
- * the wall by another name.
640
- */
641
- declare function runSetup(page: RecorderPage, steps: SetupStep[], opts: {
642
- sleep: (ms: number) => Promise<void>;
643
- /** Absent means no env at all: a `{ env }` text then fails in words. */
644
- env?: Record<string, string | undefined>;
645
- /** How a `goto` opens its page and waits for it (the take's ready mode); absent, network idle. */
646
- goto?: (url: string) => Promise<unknown>;
647
- }): Promise<SetupResult>;
648
- /** A `{ env }` the shell did not provide: a usage error, not a page's. */
649
- declare class SetupEnvError extends Error {
650
- constructor(message: string);
651
- }
652
- /** A setup step whose selector never appeared: the take does not start. */
653
- declare class SetupError extends Error {
654
- failed: NonNullable<SetupResult['failed']>;
655
- constructor(failed: NonNullable<SetupResult['failed']>);
656
- }
657
- /** `--header name=value`, repeatable: extra request headers on every request. */
658
- declare function parseHeaders(given: string[] | undefined): Record<string, string>;
659
-
660
747
  /**
661
748
  * When a page counts as ready for the take to begin. The default is the
662
749
  * DOM: after `load`, the page must make no DOM change for a beat (counted
@@ -1176,6 +1263,15 @@ interface ActionsFile {
1176
1263
  * or stored.
1177
1264
  */
1178
1265
  setup?: SetupStep[];
1266
+ /**
1267
+ * Run AFTER the take, off camera, with the same verbs as `setup`: what
1268
+ * the take created in the product (an API key, a project, an invite)
1269
+ * removed again. They run once the screencast has stopped, on the take's
1270
+ * own page, after a rehearsal too, and when the take stops early or
1271
+ * throws after its first step. A failing teardown never fails the take;
1272
+ * it stops at the step that failed and is reported.
1273
+ */
1274
+ teardown?: SetupStep[];
1179
1275
  /**
1180
1276
  * When the first page counts as ready for step 1: `dom` (default),
1181
1277
  * once its DOM has made no change for a beat after `load`, at most 8 s;
@@ -1683,6 +1779,11 @@ interface RecordResult {
1683
1779
  actions: ActionsFile;
1684
1780
  /** What each peer did, off camera (also `meta.peers`); [] with none. */
1685
1781
  peers: PeerRun[];
1782
+ /**
1783
+ * What the script's `teardown` did after the take, off camera; null when
1784
+ * it has none. A failure here is reported and never fails the take.
1785
+ */
1786
+ teardown: TeardownReport | null;
1686
1787
  }
1687
1788
  interface RecordOpts {
1688
1789
  /** Stop the capture at this many seconds (the hosted cap). */
@@ -1721,9 +1822,10 @@ interface RecordOpts {
1721
1822
  */
1722
1823
  context?: RecorderContext;
1723
1824
  /**
1724
- * The environment a setup's `{ env }` texts resolve from: the shell's
1725
- * for the CLI, the job's own map on the fleet. Absent means no env at
1726
- * all, so a setup that reads one fails in words.
1825
+ * The environment a setup's and a teardown's `{ env }` texts resolve
1826
+ * from: the shell's for the CLI, the job's own map on the fleet. Absent
1827
+ * means no env at all, so a setup that reads one fails in words, and a
1828
+ * teardown that reads one refuses the take before it begins.
1727
1829
  */
1728
1830
  env?: Record<string, string | undefined>;
1729
1831
  /** The platform the take is recorded on, for `meta.platform`. */
@@ -2267,4 +2369,4 @@ declare function inlinePoints(path: {
2267
2369
  */
2268
2370
  declare function inlineScript<T extends Pick<ActionsFile, 'steps'>>(actions: T, files: LoadedFiles): T;
2269
2371
 
2270
- export { APP_QUIET_MS, APP_SETTLE_CAP_MS, AWAIT_HEARTBEAT_MS, AWAIT_POLL_S, AWAIT_TIMEOUT_S, type ActionStep, type ActionsFile, type Arrival, type AwaitUntil, CHANGE_AGE_PROBE, CLICK_BUTTONS, type ClickButton, type ConditionState, DEAD_SHARE_WARN_PCT, DEAD_STRETCH_WARN_MS, DEFAULT_READY, DOM_CHANGE_PROBE, DOM_QUIET_MS, DOM_SETTLE_CAP_MS, DOWNLOAD_TIMEOUT_S, DRAG_HOLD_MS, DRAG_MODIFIERS, type DeadReport, type DeadStep, type DisabledClick, type DragModifier, EXPECT_TIMEOUT_S, EXPOSURE_ADVICE, EXPOSURE_MATCHERS_SRC, EXPOSURE_PROBE, type EncodePageOptions, type Exposure, type ExposureKind, ExposureLog, type FrameRec, type FrameSink, type FreezeSpan, type FreshPlanOptions, type GuardedStep, type HeardSound, IDLE_CALL_MS, JS_SAID_MAX, JS_VALUE_MAX, KEY_ROUNDTRIP_MS, KEY_SEQUENCE_GAP_MS, type LoadedFiles, MAX_KEYS, MAX_PATH_POINTS, MAX_PEERS, MAX_PEER_STEPS, MEDIA_DRAIN_PROBE, MEDIA_WATCH_SCRIPT, MIN_SKIP_MS, MODIFIERS, MOTION_TICK_MS, MULTI_CLICK_GAP_MS, type MaskReport, type MaskRule, type MediaDrain, type MediaNote, type Modifier, NAV_TIMEOUT_MS, NETWORKIDLE_HYDRATION_MS, NOTICE_SRC, type Notice, NoticeLog, OUTPUT_MAX_BYTES, OVERRUN_MIN_MS, OVERRUN_MIN_PLANNED_MS, OVERRUN_SHARE, type OutputSink, PAGE_ERROR_LINE_CHARS, PASTE_MAX_BYTES, PASTE_READ_WINDOW_MS, PASTE_TYPES, PASTE_UNREAD_MS, PATH_DEFAULT_MS, PEER_VALUE_MAX, PEER_VERBS, POINTER_MAX_MS, POINTER_MIN_MS, POINTER_MS_PER_PX, PRESS_HOLD_MS, PRESS_KEYS, PRESS_LEAD_MS, type PaceReport, type PageError, PageErrorLog, PageSoundLog, type PasteItem, type PathPoint, type PathSample, type Peer, type PeerRun, type PeerStep, type PollResult, type PressKey, QUIET_MS, READY_MODES, READY_SETTLE_CAP_MS, READ_BEAT_MS, RESPONSE_MS, type ReadyMode, type ReadyOpts, type ReadyReport, type RecordOpts, RecordRefusedError, type RecordResult, type RecorderApiResponse, type RecorderBrowser, type RecorderButtonOpts, type RecorderCdp, type RecorderClock, type RecorderConsoleMessage, type RecorderContext, type RecorderDownload, type RecorderLocator, type RecorderLocatorRoot, type RecorderMediaElement, type RecorderPage, type RecorderRect, type RecorderResponse, type RecorderRoute, SCROLL_MAX_MS, SCROLL_MIN_MS, SCROLL_MS_PER_PX, SCROLL_SETTLE_MS, SETTLE_CAP_MS, SETTLE_MS, SETTLE_VERBS, STEP_GUARDS, STEP_MARGIN_MS, type ScannedNotice, type ScriptFiles, SetupEnvError, SetupError, type SetupResult, type SetupStep, type SetupText, type SkippedStep, type SoundSink, StepBound, type StepGuard, type StepOverrun, type StepPace, StepSignals, type StoppedTake, type SurfaceFit, type SurfaceSize, TRAILING_HOLD_MS, TakeClock, WAIT_MARGIN_MS, WALL_PROBE, type WaitCondition, WallError, type WallKind, type WallVerdict, ZOOM_MARK_VERBS, appSettled, askedMs, base64Bytes, bounded, buildEncodePage, buttonNumber, capReached, cappedLine, chordProblem, clampWait, clockMotion, clockTyping, conditionMiss, deadLine, deadTime, deadWarns, domSettled, easeInOutCubic, exposureLine, extForType, fetchInPageScript, fileNameProblem, fitSurfaceToViewport, formatDurationCap, guardVerdict, guardedSteps, hangReason, headersFor, holdLeftMs, hostedRefusals, inlinePoints, inlineScript, isIdpHost, isKeyName, isSignInPath, jpegDims, jsConditionScript, keptValue, keySequencePlanMs, loadScriptFiles, maskInitScript, modifierBits, nameFromUrl, noticeAdvice, noticeLine, outputName, overrunLine, overrunOf, paceLine, paceReport, pageErrorLine, parseHeaders, pasteTypeOf, pathDurationMs, peerValue, peersHostedRefusal, plainName, planFreshTake, pointerTravelMs, pollCondition, pressSequence, publicUrl, readAllBytes, readCondition, readMediaSource, readPath, readyLine, readyProblem, realSleep, recordTake, redirectedAway, reloadUntilReady, resolveChord, resolveModifier, resolveSetupText, runPeer, runSetup, sameJson, sayCondition, sayDuration, sayJs, sayValue, schedulePath, scriptFiles, scrollByScript, scrollTravelMs, settleMs, settleOn, settleVerdict, setupEnvNames, soundSrcForMeta, splitChord, splitSegmentsAtSkips, stageClipboardScript, stepBoundMs, syntheticPasteScript, typeOfName, untilReady, urlSchemeProblem, validateActions, validatePeers, validateSetup, visibleTextScript, wallVerdict, withFittingExport, withPageSound };
2372
+ export { APP_QUIET_MS, APP_SETTLE_CAP_MS, AWAIT_HEARTBEAT_MS, AWAIT_POLL_S, AWAIT_TIMEOUT_S, type ActionStep, type ActionsFile, type Arrival, type AwaitUntil, CHANGE_AGE_PROBE, CLICK_BUTTONS, type ClickButton, type ConditionState, DEAD_SHARE_WARN_PCT, DEAD_STRETCH_WARN_MS, DEFAULT_READY, DOM_CHANGE_PROBE, DOM_QUIET_MS, DOM_SETTLE_CAP_MS, DOWNLOAD_TIMEOUT_S, DRAG_HOLD_MS, DRAG_MODIFIERS, type DeadReport, type DeadStep, type DisabledClick, type DragModifier, EXPECT_TIMEOUT_S, EXPOSURE_ADVICE, EXPOSURE_MATCHERS_SRC, EXPOSURE_PROBE, type EncodePageOptions, type Exposure, type ExposureKind, ExposureLog, type FrameRec, type FrameSink, type FreezeSpan, type FreshPlanOptions, type GuardedStep, type HeardSound, IDLE_CALL_MS, IF_LOOK_MS, JS_SAID_MAX, JS_VALUE_MAX, KEY_ROUNDTRIP_MS, KEY_SEQUENCE_GAP_MS, type LoadedFiles, MAX_KEYS, MAX_PATH_POINTS, MAX_PEERS, MAX_PEER_STEPS, MEDIA_DRAIN_PROBE, MEDIA_WATCH_SCRIPT, MIN_SKIP_MS, MODIFIERS, MOTION_TICK_MS, MULTI_CLICK_GAP_MS, type MaskReport, type MaskRule, type MediaDrain, type MediaNote, type Modifier, NAV_TIMEOUT_MS, NETWORKIDLE_HYDRATION_MS, NOTICE_SRC, type Notice, NoticeLog, OUTPUT_MAX_BYTES, OVERRUN_MIN_MS, OVERRUN_MIN_PLANNED_MS, OVERRUN_SHARE, type OutputSink, PAGE_ERROR_LINE_CHARS, PASTE_MAX_BYTES, PASTE_READ_WINDOW_MS, PASTE_TYPES, PASTE_UNREAD_MS, PATH_DEFAULT_MS, PEER_VALUE_MAX, PEER_VERBS, POINTER_MAX_MS, POINTER_MIN_MS, POINTER_MS_PER_PX, PRESS_HOLD_MS, PRESS_KEYS, PRESS_LEAD_MS, type PaceReport, type PageError, PageErrorLog, PageSoundLog, type PasteItem, type PathPoint, type PathSample, type Peer, type PeerRun, type PeerStep, type PollResult, type PressKey, QUIET_MS, READY_MODES, READY_SETTLE_CAP_MS, READ_BEAT_MS, RESPONSE_MS, type ReadyMode, type ReadyOpts, type ReadyReport, type RecordOpts, RecordRefusedError, type RecordResult, type RecorderApiResponse, type RecorderBrowser, type RecorderButtonOpts, type RecorderCdp, type RecorderClock, type RecorderConsoleMessage, type RecorderContext, type RecorderDownload, type RecorderLocator, type RecorderLocatorRoot, type RecorderMediaElement, type RecorderPage, type RecorderRect, type RecorderResponse, type RecorderRoute, SCROLL_MAX_MS, SCROLL_MIN_MS, SCROLL_MS_PER_PX, SCROLL_SETTLE_MS, SETTLE_CAP_MS, SETTLE_MS, SETTLE_VERBS, STEP_GUARDS, STEP_MARGIN_MS, type ScannedNotice, type ScriptFiles, SetupEnvError, SetupError, type SetupResult, type SetupStep, type SetupText, type SkippedStep, type SoundSink, StepBound, type StepGuard, type StepOverrun, type StepPace, type StepPhase, StepSignals, type StoppedTake, type SurfaceFit, type SurfaceSize, TEARDOWN_BOUND_MS, TRAILING_HOLD_MS, TakeClock, type TeardownReport, WAIT_MARGIN_MS, WALL_PROBE, type WaitCondition, WallError, type WallKind, type WallVerdict, ZOOM_MARK_VERBS, appSettled, askedMs, base64Bytes, bounded, buildEncodePage, buttonNumber, capReached, cappedLine, chordProblem, clampWait, clockMotion, clockTyping, conditionMiss, deadLine, deadTime, deadWarns, domSettled, easeInOutCubic, exposureLine, extForType, fetchInPageScript, fileNameProblem, fitSurfaceToViewport, formatDurationCap, guardVerdict, guardedSteps, hangReason, headersFor, holdLeftMs, hostedRefusals, inlinePoints, inlineScript, isIdpHost, isKeyName, isSignInPath, jpegDims, jsConditionScript, keptValue, keySequencePlanMs, loadScriptFiles, maskInitScript, modifierBits, nameFromUrl, noticeAdvice, noticeLine, outputName, overrunLine, overrunOf, paceLine, paceReport, pageErrorLine, parseHeaders, pasteTypeOf, pathDurationMs, peerValue, peersHostedRefusal, plainName, planFreshTake, pointerTravelMs, pollCondition, pressSequence, publicUrl, readAllBytes, readCondition, readMediaSource, readPath, readyLine, readyProblem, realSleep, recordTake, redirectedAway, reloadUntilReady, resolveChord, resolveModifier, resolveSetupText, runPeer, runSetup, sameJson, sayCondition, sayDuration, sayJs, sayValue, schedulePath, scriptEnvNames, scriptFiles, scrollByScript, scrollTravelMs, settleMs, settleOn, settleVerdict, setupEnvNames, soundSrcForMeta, splitChord, splitSegmentsAtSkips, stageClipboardScript, stepBoundMs, syntheticPasteScript, teardownEnvProblem, teardownLine, typeOfName, untilReady, urlSchemeProblem, validateActions, validatePeers, validateSetup, visibleTextScript, wallVerdict, withFittingExport, withPageSound };