humanish 0.0.1 → 0.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (196) hide show
  1. package/AGENTS.md +77 -0
  2. package/CONTRIBUTING.md +39 -0
  3. package/LICENSE +21 -0
  4. package/README.md +435 -8
  5. package/SECURITY.md +34 -0
  6. package/dist/actor-contract.d.ts +107 -0
  7. package/dist/actor-contract.js +286 -0
  8. package/dist/actor-contract.js.map +1 -0
  9. package/dist/actor-registry.d.ts +73 -0
  10. package/dist/actor-registry.js +93 -0
  11. package/dist/actor-registry.js.map +1 -0
  12. package/dist/adapter-extension.d.ts +54 -0
  13. package/dist/adapter-extension.js +214 -0
  14. package/dist/adapter-extension.js.map +1 -0
  15. package/dist/argv.d.ts +1 -0
  16. package/dist/argv.js +8 -0
  17. package/dist/argv.js.map +1 -0
  18. package/dist/artifact-reference.d.ts +22 -0
  19. package/dist/artifact-reference.js +47 -0
  20. package/dist/artifact-reference.js.map +1 -0
  21. package/dist/browser-evidence-hygiene.d.ts +7 -0
  22. package/dist/browser-evidence-hygiene.js +40 -0
  23. package/dist/browser-evidence-hygiene.js.map +1 -0
  24. package/dist/claude-agent-sdk.d.ts +94 -0
  25. package/dist/claude-agent-sdk.js +356 -0
  26. package/dist/claude-agent-sdk.js.map +1 -0
  27. package/dist/cli.d.ts +2 -0
  28. package/dist/cli.js +5 -0
  29. package/dist/cli.js.map +1 -0
  30. package/dist/codex-app-server-ui.d.ts +39 -0
  31. package/dist/codex-app-server-ui.js +327 -0
  32. package/dist/codex-app-server-ui.js.map +1 -0
  33. package/dist/codex-app-server.d.ts +141 -0
  34. package/dist/codex-app-server.js +747 -0
  35. package/dist/codex-app-server.js.map +1 -0
  36. package/dist/command-failure.d.ts +29 -0
  37. package/dist/command-failure.js +54 -0
  38. package/dist/command-failure.js.map +1 -0
  39. package/dist/computer-use-actor.d.ts +52 -0
  40. package/dist/computer-use-actor.js +48 -0
  41. package/dist/computer-use-actor.js.map +1 -0
  42. package/dist/computer-use.d.ts +232 -0
  43. package/dist/computer-use.js +615 -0
  44. package/dist/computer-use.js.map +1 -0
  45. package/dist/concurrency.d.ts +1 -0
  46. package/dist/concurrency.js +27 -0
  47. package/dist/concurrency.js.map +1 -0
  48. package/dist/concurrent-shared-world-lab.d.ts +115 -0
  49. package/dist/concurrent-shared-world-lab.js +1092 -0
  50. package/dist/concurrent-shared-world-lab.js.map +1 -0
  51. package/dist/core/git-state.d.ts +31 -0
  52. package/dist/core/git-state.js +142 -0
  53. package/dist/core/git-state.js.map +1 -0
  54. package/dist/core/index.d.ts +4 -0
  55. package/dist/core/index.js +3 -0
  56. package/dist/core/index.js.map +1 -0
  57. package/dist/core/run-primitives.d.ts +66 -0
  58. package/dist/core/run-primitives.js +120 -0
  59. package/dist/core/run-primitives.js.map +1 -0
  60. package/dist/cua-actor-lab.d.ts +620 -0
  61. package/dist/cua-actor-lab.js +2834 -0
  62. package/dist/cua-actor-lab.js.map +1 -0
  63. package/dist/device-presets.d.ts +67 -0
  64. package/dist/device-presets.js +50 -0
  65. package/dist/device-presets.js.map +1 -0
  66. package/dist/e2b-desktop-executor.d.ts +101 -0
  67. package/dist/e2b-desktop-executor.js +309 -0
  68. package/dist/e2b-desktop-executor.js.map +1 -0
  69. package/dist/e2b-desktop-launch.d.ts +144 -0
  70. package/dist/e2b-desktop-launch.js +59 -0
  71. package/dist/e2b-desktop-launch.js.map +1 -0
  72. package/dist/e2b-detached.d.ts +53 -0
  73. package/dist/e2b-detached.js +130 -0
  74. package/dist/e2b-detached.js.map +1 -0
  75. package/dist/e2b-terminal-lab.d.ts +345 -0
  76. package/dist/e2b-terminal-lab.js +1467 -0
  77. package/dist/e2b-terminal-lab.js.map +1 -0
  78. package/dist/env-file.d.ts +14 -0
  79. package/dist/env-file.js +108 -0
  80. package/dist/env-file.js.map +1 -0
  81. package/dist/feedback.d.ts +51 -0
  82. package/dist/feedback.js +313 -0
  83. package/dist/feedback.js.map +1 -0
  84. package/dist/image-evidence.d.ts +2 -0
  85. package/dist/image-evidence.js +33 -0
  86. package/dist/image-evidence.js.map +1 -0
  87. package/dist/index.d.ts +63 -0
  88. package/dist/index.js +33 -0
  89. package/dist/index.js.map +1 -0
  90. package/dist/init-templates.d.ts +12 -0
  91. package/dist/init-templates.js +369 -0
  92. package/dist/init-templates.js.map +1 -0
  93. package/dist/init.d.ts +26 -0
  94. package/dist/init.js +343 -0
  95. package/dist/init.js.map +1 -0
  96. package/dist/lab-app-runner.d.ts +78 -0
  97. package/dist/lab-app-runner.js +403 -0
  98. package/dist/lab-app-runner.js.map +1 -0
  99. package/dist/lab-config.d.ts +578 -0
  100. package/dist/lab-config.js +1751 -0
  101. package/dist/lab-config.js.map +1 -0
  102. package/dist/lab-engine.d.ts +77 -0
  103. package/dist/lab-engine.js +216 -0
  104. package/dist/lab-engine.js.map +1 -0
  105. package/dist/lab-preflight.d.ts +67 -0
  106. package/dist/lab-preflight.js +385 -0
  107. package/dist/lab-preflight.js.map +1 -0
  108. package/dist/labs.d.ts +53 -0
  109. package/dist/labs.js +176 -0
  110. package/dist/labs.js.map +1 -0
  111. package/dist/observer-assets.d.ts +2 -0
  112. package/dist/observer-assets.js +2630 -0
  113. package/dist/observer-assets.js.map +1 -0
  114. package/dist/observer-data.d.ts +63 -0
  115. package/dist/observer-data.js +145 -0
  116. package/dist/observer-data.js.map +1 -0
  117. package/dist/observer-static.d.ts +39 -0
  118. package/dist/observer-static.js +192 -0
  119. package/dist/observer-static.js.map +1 -0
  120. package/dist/observer.d.ts +46 -0
  121. package/dist/observer.js +353 -0
  122. package/dist/observer.js.map +1 -0
  123. package/dist/openai-responses-cu.d.ts +113 -0
  124. package/dist/openai-responses-cu.js +531 -0
  125. package/dist/openai-responses-cu.js.map +1 -0
  126. package/dist/oss-lab.d.ts +52 -0
  127. package/dist/oss-lab.js +299 -0
  128. package/dist/oss-lab.js.map +1 -0
  129. package/dist/oss-meta-lab-scoring.d.ts +15 -0
  130. package/dist/oss-meta-lab-scoring.js +145 -0
  131. package/dist/oss-meta-lab-scoring.js.map +1 -0
  132. package/dist/oss-meta-lab.d.ts +279 -0
  133. package/dist/oss-meta-lab.js +4889 -0
  134. package/dist/oss-meta-lab.js.map +1 -0
  135. package/dist/oss-remote-telemetry.d.ts +77 -0
  136. package/dist/oss-remote-telemetry.js +403 -0
  137. package/dist/oss-remote-telemetry.js.map +1 -0
  138. package/dist/persona.d.ts +35 -0
  139. package/dist/persona.js +133 -0
  140. package/dist/persona.js.map +1 -0
  141. package/dist/pi-agent-core.d.ts +77 -0
  142. package/dist/pi-agent-core.js +203 -0
  143. package/dist/pi-agent-core.js.map +1 -0
  144. package/dist/program.d.ts +54 -0
  145. package/dist/program.js +2347 -0
  146. package/dist/program.js.map +1 -0
  147. package/dist/redaction.d.ts +90 -0
  148. package/dist/redaction.js +292 -0
  149. package/dist/redaction.js.map +1 -0
  150. package/dist/run.d.ts +784 -0
  151. package/dist/run.js +4555 -0
  152. package/dist/run.js.map +1 -0
  153. package/dist/scripted-browser-actor.d.ts +294 -0
  154. package/dist/scripted-browser-actor.js +1286 -0
  155. package/dist/scripted-browser-actor.js.map +1 -0
  156. package/dist/scripted-browser-lab.d.ts +107 -0
  157. package/dist/scripted-browser-lab.js +738 -0
  158. package/dist/scripted-browser-lab.js.map +1 -0
  159. package/dist/shared-world-lab.d.ts +208 -0
  160. package/dist/shared-world-lab.js +1048 -0
  161. package/dist/shared-world-lab.js.map +1 -0
  162. package/dist/source-archive.d.ts +82 -0
  163. package/dist/source-archive.js +365 -0
  164. package/dist/source-archive.js.map +1 -0
  165. package/dist/stop-conditions.d.ts +26 -0
  166. package/dist/stop-conditions.js +66 -0
  167. package/dist/stop-conditions.js.map +1 -0
  168. package/dist/terminal-agent-actor.d.ts +36 -0
  169. package/dist/terminal-agent-actor.js +23 -0
  170. package/dist/terminal-agent-actor.js.map +1 -0
  171. package/docs/architecture/actor-contract.md +431 -0
  172. package/docs/architecture/github-feedback-loop.md +189 -0
  173. package/docs/architecture/local-codex-tui-actor.md +213 -0
  174. package/docs/architecture/observer.md +118 -0
  175. package/docs/architecture/oss-lab-poc.md +242 -0
  176. package/docs/architecture/project-layout.md +166 -0
  177. package/docs/architecture/state-driven-executor.md +203 -0
  178. package/docs/architecture/terminal-product-lane.md +148 -0
  179. package/docs/contracts/adapter-fixtures.md +80 -0
  180. package/docs/contracts/core.md +71 -0
  181. package/docs/contracts/feedback.md +145 -0
  182. package/docs/contracts/policy.md +305 -0
  183. package/docs/contracts/run-bundle.md +358 -0
  184. package/docs/contracts/schemas.md +984 -0
  185. package/docs/goals/current.md +409 -0
  186. package/docs/principles/invariants-and-defaults.md +135 -0
  187. package/docs/principles/self-driving-harness.md +129 -0
  188. package/docs/product/open-source-install-experience.md +229 -0
  189. package/docs/ramp/README.md +200 -0
  190. package/docs/release/open-source-readiness.md +208 -0
  191. package/docs/release/public-readiness-standard.md +205 -0
  192. package/docs/roadmap/world-class-open-source-v0.md +311 -0
  193. package/package.json +102 -8
  194. package/skills/humanish/SKILL.md +244 -0
  195. package/skills/humanish/agents/openai.yaml +7 -0
  196. package/index.js +0 -1
@@ -0,0 +1,294 @@
1
+ import { type ActorCompletionReason, type ActorPersonaRef, type ActorStatus, type ActorTrace } from "./actor-contract.js";
2
+ export interface ScriptedLocatorLike {
3
+ first(): ScriptedLocatorLike;
4
+ fill(value: string, options?: {
5
+ timeout?: number;
6
+ }): Promise<void>;
7
+ click(options?: {
8
+ timeout?: number;
9
+ }): Promise<void>;
10
+ count(): Promise<number>;
11
+ waitFor(options?: {
12
+ state?: "visible";
13
+ timeout?: number;
14
+ }): Promise<void>;
15
+ isVisible(options?: {
16
+ timeout?: number;
17
+ }): Promise<boolean>;
18
+ }
19
+ export interface ScriptedPageLike {
20
+ goto(url: string, options?: {
21
+ waitUntil?: "domcontentloaded";
22
+ timeout?: number;
23
+ }): Promise<unknown>;
24
+ locator(selector: string): ScriptedLocatorLike;
25
+ waitForTimeout(ms: number): Promise<void>;
26
+ waitForFunction(fn: string, arg: unknown, options?: {
27
+ timeout?: number;
28
+ }): Promise<unknown>;
29
+ screenshot(options: {
30
+ path: string;
31
+ fullPage: boolean;
32
+ }): Promise<unknown>;
33
+ url(): string;
34
+ evaluate<T>(pageFunction: string): Promise<T>;
35
+ }
36
+ export interface ScriptedBrowserLike {
37
+ newContext(options: {
38
+ deviceScaleFactor: number;
39
+ isMobile: boolean;
40
+ viewport: {
41
+ width: number;
42
+ height: number;
43
+ };
44
+ }): Promise<{
45
+ newPage(): Promise<ScriptedPageLike>;
46
+ }>;
47
+ close(): Promise<void>;
48
+ }
49
+ export interface ScriptedBrowserLaunchArgs {
50
+ browserCommand: string;
51
+ timeoutMs: number;
52
+ }
53
+ export type ScriptedBrowserEvidenceUrlPolicy = {
54
+ kind: "loopback";
55
+ } | {
56
+ kind: "provisioned-subject";
57
+ evidenceOrigin: string;
58
+ };
59
+ /** Production default: lazy playwright-core import + chromium.launch, exactly as the driver
60
+ * always did. Kept in ONE place so the optional peer is touched by exactly one code path. */
61
+ export declare function launchPlaywrightChromium(args: ScriptedBrowserLaunchArgs): Promise<ScriptedBrowserLike>;
62
+ export interface BrowserSurface {
63
+ id: "desktop" | "mobile";
64
+ label: string;
65
+ viewport: {
66
+ width: number;
67
+ height: number;
68
+ deviceScaleFactor: number;
69
+ isMobile: boolean;
70
+ };
71
+ }
72
+ export interface BrowserSurfaceCapture {
73
+ capturedAt: string;
74
+ durationMs: number;
75
+ httpStatus?: number;
76
+ ok: boolean;
77
+ reason: string;
78
+ /**
79
+ * Surface-level screenshot the producer wrote (the last step's screenshot).
80
+ * Omitted for a blocked capture whose evidence is the failure itself, so the
81
+ * stream never claims a screenshot embed/ui reference that does not exist.
82
+ * See src/artifact-reference.ts.
83
+ */
84
+ screenshotPath?: string;
85
+ steps: BrowserPersonaStepCapture[];
86
+ surface: BrowserSurface;
87
+ tracePath: string;
88
+ }
89
+ export type BrowserPersonaAction = "goto" | "click" | "fill" | "assertText" | "waitForText" | "waitForSelector";
90
+ export interface BrowserPersonaAssertionCapture {
91
+ id: string;
92
+ reason: string;
93
+ status: "passed" | "blocked";
94
+ }
95
+ export interface BrowserPersonaStepCapture {
96
+ action: string;
97
+ assertions?: BrowserPersonaAssertionCapture[];
98
+ completedAt: string;
99
+ durationMs: number;
100
+ id: string;
101
+ label: string;
102
+ reason: string;
103
+ /**
104
+ * Path to the step screenshot the producer actually wrote. Omitted for blocked
105
+ * steps where the failure itself is the recorded evidence and no screenshot was
106
+ * written — the bundle must not reference an artifact that does not exist (see
107
+ * src/artifact-reference.ts). A step that ran and attempted a screenshot keeps
108
+ * this even when its assertions failed, so a broken producer still fails verify.
109
+ */
110
+ screenshotPath?: string;
111
+ status: "passed" | "blocked";
112
+ url: string;
113
+ }
114
+ export interface BrowserPersonaStepExpectation {
115
+ selectorVisible?: string;
116
+ stateChanged?: boolean;
117
+ text?: string;
118
+ urlIncludes?: string;
119
+ }
120
+ export interface BrowserPersonaStepManifest {
121
+ action: BrowserPersonaAction;
122
+ expectation?: BrowserPersonaStepExpectation;
123
+ id: string;
124
+ label: string;
125
+ path?: string;
126
+ selector?: string;
127
+ value?: string;
128
+ }
129
+ export interface BrowserPersonaJourney {
130
+ goal: string;
131
+ scenarioId: string;
132
+ scenarioTitle: string;
133
+ source: string;
134
+ sourceDigest: string;
135
+ startPath: string;
136
+ steps: BrowserPersonaStepManifest[];
137
+ }
138
+ export declare const browserSurfaces: BrowserSurface[];
139
+ export declare function captureBrowserSurface(args: {
140
+ absoluteArtifactRoot: string;
141
+ appUrl: string;
142
+ browserCommand: string;
143
+ browserJourney: BrowserPersonaJourney;
144
+ surface: BrowserSurface;
145
+ timeoutMs: number;
146
+ }): Promise<BrowserSurfaceCapture>;
147
+ export declare function captureBrowserSurfaceFixture(args: {
148
+ absoluteArtifactRoot: string;
149
+ appUrl: string;
150
+ browserCommand: string;
151
+ browserJourney: BrowserPersonaJourney;
152
+ surface: BrowserSurface;
153
+ timeoutMs: number;
154
+ }): Promise<BrowserSurfaceCapture>;
155
+ export declare function captureBrowserSurfaceWithPlaywright(args: {
156
+ absoluteArtifactRoot: string;
157
+ appUrl: string;
158
+ browserCommand: string;
159
+ browserJourney: BrowserPersonaJourney;
160
+ surface: BrowserSurface;
161
+ timeoutMs: number;
162
+ }): Promise<BrowserSurfaceCapture>;
163
+ export declare function executeBrowserPersonaStep(args: {
164
+ absoluteArtifactRoot: string;
165
+ appUrl: string;
166
+ browserJourney: BrowserPersonaJourney;
167
+ page: ScriptedPageLike;
168
+ step: BrowserPersonaStepManifest;
169
+ surface: BrowserSurface;
170
+ timeoutMs: number;
171
+ urlPolicy?: ScriptedBrowserEvidenceUrlPolicy;
172
+ }): Promise<BrowserPersonaStepCapture>;
173
+ export declare function evaluateBrowserStepExpectations(args: {
174
+ afterState: {
175
+ bodyDigest: string;
176
+ url: string;
177
+ };
178
+ beforeState: {
179
+ bodyDigest: string;
180
+ url: string;
181
+ };
182
+ page: ScriptedPageLike;
183
+ step: BrowserPersonaStepManifest;
184
+ timeoutMs: number;
185
+ }): Promise<BrowserPersonaAssertionCapture[]>;
186
+ export declare function buildBlockedBrowserPersonaSteps(args: {
187
+ browserJourney: BrowserPersonaJourney;
188
+ currentUrl: string;
189
+ reason: string;
190
+ surface: BrowserSurface;
191
+ timestamp: string;
192
+ urlPolicy?: ScriptedBrowserEvidenceUrlPolicy;
193
+ }): BrowserPersonaStepCapture[];
194
+ export declare function screenshotPathForBrowserStep(surface: BrowserSurface, step: BrowserPersonaStepManifest | undefined): string;
195
+ /**
196
+ * Surface-level screenshot path = the last step that actually wrote one. Returns
197
+ * undefined when no step wrote a screenshot (a fully blocked capture whose evidence
198
+ * is the failure itself), so the producer never synthesizes a path to a file it did
199
+ * not write. See src/artifact-reference.ts.
200
+ */
201
+ export declare function surfaceScreenshotPath(steps: BrowserPersonaStepCapture[]): string | undefined;
202
+ export declare function resolveBrowserStepUrl(appUrl: string, value: string | undefined): string;
203
+ export declare function resolveBrowserStepUrlForPolicy(appUrl: string, value: string | undefined, urlPolicy?: ScriptedBrowserEvidenceUrlPolicy): string;
204
+ export declare function buildBrowserTrace(args: {
205
+ appUrl: string;
206
+ browserCommand: string;
207
+ browserJourney: BrowserPersonaJourney;
208
+ capturedAt: string;
209
+ durationMs: number;
210
+ httpStatus?: number;
211
+ ok: boolean;
212
+ reason: string;
213
+ screenshotPath?: string;
214
+ steps: BrowserPersonaStepCapture[];
215
+ surface: BrowserSurface;
216
+ }): Record<string, unknown>;
217
+ export declare function sanitizeLoopbackUrl(value: string): string;
218
+ export declare function sanitizeBrowserEvidenceUrl(value: string, urlPolicy?: ScriptedBrowserEvidenceUrlPolicy): string;
219
+ export declare function captureScreenshotWithBrowser(args: {
220
+ args: string[];
221
+ browserCommand: string;
222
+ screenshotPath: string;
223
+ timeoutMs: number;
224
+ }): Promise<void>;
225
+ export declare function probeAppUrl(appUrl: string, timeoutMs: number): Promise<{
226
+ ok: boolean;
227
+ reason: string;
228
+ status?: number;
229
+ }>;
230
+ export declare function resolveBrowserCommand(): Promise<string | null>;
231
+ export declare function normalizeLocalAppUrl(value: string): string | null;
232
+ export declare function parseBrowserPersonaJourneyFromScenario(args: {
233
+ raw: unknown;
234
+ relativePath: string;
235
+ sourceDigest: string;
236
+ }): {
237
+ failure?: string;
238
+ journey?: BrowserPersonaJourney;
239
+ };
240
+ export declare function parseBrowserPersonaStep(rawStep: unknown, index: number): {
241
+ failure?: string;
242
+ step?: BrowserPersonaStepManifest;
243
+ };
244
+ export declare function builtinBrowserPersonaJourney(): BrowserPersonaJourney;
245
+ export declare const SCRIPTED_BROWSER_PROVIDER = "browser-persona";
246
+ export interface ScriptedBrowserSessionOptions {
247
+ /** Pre-normalized loopback URL, or a harness-minted provisioned subject URL. */
248
+ appUrl: string;
249
+ /** Stable redacted URL label persisted in public-safe evidence when appUrl is private. */
250
+ evidenceAppUrl?: string;
251
+ /** Defaults to loopback. Provisioned subjects drive a private URL but persist redacted labels. */
252
+ urlPolicy?: ScriptedBrowserEvidenceUrlPolicy;
253
+ /** Parsed + validated by the backend (scenario.ref is consumed there, fail-closed). */
254
+ journey: BrowserPersonaJourney;
255
+ /** ONE session per surface lane. */
256
+ surface: BrowserSurface;
257
+ /** id = actors[0].persona ?? "scripted-journey"; promptDigest = journey.sourceDigest prefix
258
+ * (the step manifest IS the "prompt" — no model prompt exists on this lane). */
259
+ persona: ActorPersonaRef;
260
+ /** Journey wall-clock budget (default upstream: 60_000, today's run --app-url default). */
261
+ timeoutMs: number;
262
+ /** Absolute; the session writes screenshots/ and traces/<surface>.json beneath it. */
263
+ artifactRoot: string;
264
+ /** Default resolveBrowserCommand(); recorded as "injected-browser" when launchBrowser is injected. */
265
+ browserCommand?: string;
266
+ /** DI seam; production default is launchPlaywrightChromium. */
267
+ launchBrowser?: (args: ScriptedBrowserLaunchArgs) => Promise<ScriptedBrowserLike>;
268
+ now?: () => number;
269
+ }
270
+ export interface ScriptedBrowserSessionResult {
271
+ status: ActorStatus;
272
+ completionReason: ActorCompletionReason;
273
+ reason: string;
274
+ /** Native evidence incl. tracePath (humanish.browser-persona-trace.v1, written to disk). */
275
+ capture: BrowserSurfaceCapture;
276
+ /** humanish.actor-trace.v1 projection. */
277
+ trace: ActorTrace;
278
+ }
279
+ /**
280
+ * Run the scripted journey for ONE surface and return native capture + ActorTrace projection.
281
+ *
282
+ * Completion semantics (the contract the projection tests pin):
283
+ * - every step executed, every assertion passed, HTTP probe ok -> passed / goal_satisfied
284
+ * (the scenario's expect blocks ARE the success predicate; a pass claims "the app still
285
+ * affords this exact journey", nothing about user behavior);
286
+ * - a step's expectation evaluated false, a step target missing/unactionable, or an
287
+ * unreachable subject -> failed / step_failed (the harness executed faithfully; the SUBJECT
288
+ * did not satisfy the script — distinct from actor_error/harness_error);
289
+ * - journey exceeded timeoutMs -> timed_out / timed_out;
290
+ * - browser launch/import crash -> failed / harness_error;
291
+ * - gave_up / blocked_approval are UNREACHABLE from this actor (no persona patience, no
292
+ * approvals exist on a deterministic replay) — asserted in tests.
293
+ */
294
+ export declare function runScriptedBrowserSession(options: ScriptedBrowserSessionOptions): Promise<ScriptedBrowserSessionResult>;