@rolepod/uiproof 0.4.1 → 0.6.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.
- package/.claude-plugin/marketplace.json +3 -3
- package/.claude-plugin/plugin.json +2 -2
- package/.codex-plugin/plugin.json +3 -3
- package/.cursor-plugin/plugin.json +2 -2
- package/CHANGELOG.md +168 -0
- package/README.md +26 -7
- package/dist/bin/rolepod-uiproof.js +1678 -59
- package/dist/bin/rolepod-uiproof.js.map +1 -1
- package/dist/index.d.ts +635 -10
- package/dist/index.js +1716 -73
- package/dist/index.js.map +1 -1
- package/dist/schemas/tools.json +34 -1
- package/package.json +1 -1
- package/skills/audit-a11y/SKILL.md +9 -0
- package/skills/check-errors/SKILL.md +123 -0
- package/skills/scaffold-e2e/SKILL.md +23 -0
- package/skills/verify-ui/SKILL.md +146 -70
- package/skills/visual-diff/SKILL.md +9 -0
package/dist/index.d.ts
CHANGED
|
@@ -3,10 +3,18 @@ import { z } from 'zod';
|
|
|
3
3
|
import { Page } from 'playwright';
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
|
-
* Writes artifacts
|
|
6
|
+
* Writes run artifacts. In **standalone** mode (default) — and in v0.4 and
|
|
7
|
+
* earlier — runs live under `./.rolepod-uiproof/artifacts/{prefix}_{ts}_{uuid}/`.
|
|
7
8
|
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
9
|
+
* In **with-parent** mode — activated automatically when the env var
|
|
10
|
+
* `ROLEPOD_PARENT=1` is set by the parent `rolepod` plugin's SessionStart
|
|
11
|
+
* hook — runs live under `./.rolepod/evidence/{ts}-rolepod-uiproof-{skill}/`,
|
|
12
|
+
* per the Extension Protocol v1 evidence-path convention. Parent's
|
|
13
|
+
* `check-work` skill aggregates manifest.json files from this directory.
|
|
14
|
+
*
|
|
15
|
+
* Baselines for `visual_diff` always live in `./.rolepod-uiproof/baselines/`
|
|
16
|
+
* regardless of mode — they are user-curated configuration, not per-run
|
|
17
|
+
* evidence.
|
|
10
18
|
*/
|
|
11
19
|
type ReplayStep = Record<string, unknown>;
|
|
12
20
|
type ReplayBundle = {
|
|
@@ -17,16 +25,45 @@ type ReplayBundle = {
|
|
|
17
25
|
steps: ReplayStep[];
|
|
18
26
|
expect: ReplayStep[];
|
|
19
27
|
};
|
|
28
|
+
type ArtifactMode = "standalone" | "with-parent";
|
|
29
|
+
type StartRunOptions = {
|
|
30
|
+
/**
|
|
31
|
+
* Skill name as it appears in marketplace (`verify-ui`, `audit-a11y`,
|
|
32
|
+
* `visual-diff`, `scaffold-e2e`, `check-errors`). REQUIRED when emitting
|
|
33
|
+
* a manifest.json (Extension Protocol v1) so parent's `check-work` can
|
|
34
|
+
* route artifacts to the right phase.
|
|
35
|
+
*
|
|
36
|
+
* In `with-parent` mode the run dirname is derived from this field; if
|
|
37
|
+
* omitted the `prefix` argument is used as a fallback (legacy).
|
|
38
|
+
*/
|
|
39
|
+
skill?: string;
|
|
40
|
+
};
|
|
41
|
+
type StartRunResult = {
|
|
42
|
+
runId: string;
|
|
43
|
+
runDir: string;
|
|
44
|
+
skill: string;
|
|
45
|
+
mode: ArtifactMode;
|
|
46
|
+
};
|
|
20
47
|
declare class ArtifactStore {
|
|
21
48
|
readonly rootDir: string;
|
|
49
|
+
readonly mode: ArtifactMode;
|
|
50
|
+
private readonly baselineRoot;
|
|
22
51
|
constructor(opts?: {
|
|
23
52
|
rootDir?: string;
|
|
53
|
+
mode?: ArtifactMode;
|
|
24
54
|
});
|
|
25
|
-
/**
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
55
|
+
/**
|
|
56
|
+
* Allocate a fresh run dir and ensure it exists.
|
|
57
|
+
*
|
|
58
|
+
* - standalone: `./.rolepod-uiproof/artifacts/{prefix}_{ts}_{uuid}/`
|
|
59
|
+
* - with-parent: `./.rolepod/evidence/{ts}-rolepod-uiproof-{skill}/`
|
|
60
|
+
*
|
|
61
|
+
* `prefix` is preserved for back-compat with v0.5 callers; new callers
|
|
62
|
+
* should also pass `opts.skill` so the with-parent path can be derived
|
|
63
|
+
* unambiguously and the manifest can be emitted with the canonical
|
|
64
|
+
* skill name.
|
|
65
|
+
*/
|
|
66
|
+
startRun(prefix?: string, opts?: StartRunOptions): Promise<StartRunResult>;
|
|
30
67
|
writeScreenshot(runDir: string, buf: Buffer, name: string): Promise<string>;
|
|
31
68
|
writeReplayBundle(runDir: string, bundle: ReplayBundle, name?: string): Promise<string>;
|
|
32
69
|
writeReport(runDir: string, name: string, body: string): Promise<string>;
|
|
@@ -238,6 +275,269 @@ declare const browserNavigateSchema: z.ZodObject<{
|
|
|
238
275
|
session_id: z.ZodString;
|
|
239
276
|
url: z.ZodString;
|
|
240
277
|
}, z.core.$strip>;
|
|
278
|
+
declare const browserHoverShape: {
|
|
279
|
+
readonly session_id: z.ZodString;
|
|
280
|
+
readonly ref: z.ZodString;
|
|
281
|
+
};
|
|
282
|
+
declare const browserHoverSchema: z.ZodObject<{
|
|
283
|
+
session_id: z.ZodString;
|
|
284
|
+
ref: z.ZodString;
|
|
285
|
+
}, z.core.$strip>;
|
|
286
|
+
declare const browserDragShape: {
|
|
287
|
+
readonly session_id: z.ZodString;
|
|
288
|
+
readonly from_ref: z.ZodString;
|
|
289
|
+
readonly to_ref: z.ZodString;
|
|
290
|
+
};
|
|
291
|
+
declare const browserDragSchema: z.ZodObject<{
|
|
292
|
+
session_id: z.ZodString;
|
|
293
|
+
from_ref: z.ZodString;
|
|
294
|
+
to_ref: z.ZodString;
|
|
295
|
+
}, z.core.$strip>;
|
|
296
|
+
declare const browserFillFormShape: {
|
|
297
|
+
readonly session_id: z.ZodString;
|
|
298
|
+
readonly fields: z.ZodArray<z.ZodObject<{
|
|
299
|
+
ref: z.ZodString;
|
|
300
|
+
value: z.ZodUnion<readonly [z.ZodString, z.ZodBoolean]>;
|
|
301
|
+
kind: z.ZodOptional<z.ZodEnum<{
|
|
302
|
+
input: "input";
|
|
303
|
+
select: "select";
|
|
304
|
+
checkbox: "checkbox";
|
|
305
|
+
radio: "radio";
|
|
306
|
+
}>>;
|
|
307
|
+
}, z.core.$strip>>;
|
|
308
|
+
};
|
|
309
|
+
declare const browserFillFormSchema: z.ZodObject<{
|
|
310
|
+
session_id: z.ZodString;
|
|
311
|
+
fields: z.ZodArray<z.ZodObject<{
|
|
312
|
+
ref: z.ZodString;
|
|
313
|
+
value: z.ZodUnion<readonly [z.ZodString, z.ZodBoolean]>;
|
|
314
|
+
kind: z.ZodOptional<z.ZodEnum<{
|
|
315
|
+
input: "input";
|
|
316
|
+
select: "select";
|
|
317
|
+
checkbox: "checkbox";
|
|
318
|
+
radio: "radio";
|
|
319
|
+
}>>;
|
|
320
|
+
}, z.core.$strip>>;
|
|
321
|
+
}, z.core.$strip>;
|
|
322
|
+
declare const browserUploadFileShape: {
|
|
323
|
+
readonly session_id: z.ZodString;
|
|
324
|
+
readonly ref: z.ZodString;
|
|
325
|
+
readonly file_path: z.ZodString;
|
|
326
|
+
};
|
|
327
|
+
declare const browserUploadFileSchema: z.ZodObject<{
|
|
328
|
+
session_id: z.ZodString;
|
|
329
|
+
ref: z.ZodString;
|
|
330
|
+
file_path: z.ZodString;
|
|
331
|
+
}, z.core.$strip>;
|
|
332
|
+
declare const browserHandleDialogShape: {
|
|
333
|
+
readonly session_id: z.ZodString;
|
|
334
|
+
readonly action: z.ZodEnum<{
|
|
335
|
+
accept: "accept";
|
|
336
|
+
dismiss: "dismiss";
|
|
337
|
+
accept_with_text: "accept_with_text";
|
|
338
|
+
}>;
|
|
339
|
+
/** Only used when action='accept_with_text'. */
|
|
340
|
+
readonly text: z.ZodOptional<z.ZodString>;
|
|
341
|
+
/**
|
|
342
|
+
* Arming behavior: registers a one-shot handler for the NEXT dialog
|
|
343
|
+
* raised on the page. Call this BEFORE the action that triggers the
|
|
344
|
+
* dialog (e.g. before clicking the button that calls `confirm()`).
|
|
345
|
+
* Default 30s if no dialog appears, handler is auto-removed.
|
|
346
|
+
*/
|
|
347
|
+
readonly timeout_ms: z.ZodOptional<z.ZodNumber>;
|
|
348
|
+
};
|
|
349
|
+
declare const browserHandleDialogSchema: z.ZodObject<{
|
|
350
|
+
session_id: z.ZodString;
|
|
351
|
+
action: z.ZodEnum<{
|
|
352
|
+
accept: "accept";
|
|
353
|
+
dismiss: "dismiss";
|
|
354
|
+
accept_with_text: "accept_with_text";
|
|
355
|
+
}>;
|
|
356
|
+
text: z.ZodOptional<z.ZodString>;
|
|
357
|
+
timeout_ms: z.ZodOptional<z.ZodNumber>;
|
|
358
|
+
}, z.core.$strip>;
|
|
359
|
+
declare const browserConsoleShape: {
|
|
360
|
+
readonly session_id: z.ZodString;
|
|
361
|
+
/** Filter to only these levels. Default: errors+warnings. */
|
|
362
|
+
readonly levels: z.ZodOptional<z.ZodArray<z.ZodEnum<{
|
|
363
|
+
info: "info";
|
|
364
|
+
error: "error";
|
|
365
|
+
debug: "debug";
|
|
366
|
+
warning: "warning";
|
|
367
|
+
log: "log";
|
|
368
|
+
trace: "trace";
|
|
369
|
+
}>>>;
|
|
370
|
+
/** Substring match on message text. */
|
|
371
|
+
readonly contains: z.ZodOptional<z.ZodString>;
|
|
372
|
+
/** Drop all buffered messages after returning. */
|
|
373
|
+
readonly clear: z.ZodDefault<z.ZodBoolean>;
|
|
374
|
+
/** Cap on returned messages (artifact still holds full ring buffer). */
|
|
375
|
+
readonly limit: z.ZodDefault<z.ZodNumber>;
|
|
376
|
+
};
|
|
377
|
+
declare const browserConsoleSchema: z.ZodObject<{
|
|
378
|
+
session_id: z.ZodString;
|
|
379
|
+
levels: z.ZodOptional<z.ZodArray<z.ZodEnum<{
|
|
380
|
+
info: "info";
|
|
381
|
+
error: "error";
|
|
382
|
+
debug: "debug";
|
|
383
|
+
warning: "warning";
|
|
384
|
+
log: "log";
|
|
385
|
+
trace: "trace";
|
|
386
|
+
}>>>;
|
|
387
|
+
contains: z.ZodOptional<z.ZodString>;
|
|
388
|
+
clear: z.ZodDefault<z.ZodBoolean>;
|
|
389
|
+
limit: z.ZodDefault<z.ZodNumber>;
|
|
390
|
+
}, z.core.$strip>;
|
|
391
|
+
declare const browserNetworkShape: {
|
|
392
|
+
readonly session_id: z.ZodString;
|
|
393
|
+
/** Substring or regex (per `pattern_kind`) match on URL. */
|
|
394
|
+
readonly url_pattern: z.ZodOptional<z.ZodString>;
|
|
395
|
+
readonly pattern_kind: z.ZodDefault<z.ZodEnum<{
|
|
396
|
+
substring: "substring";
|
|
397
|
+
regex: "regex";
|
|
398
|
+
}>>;
|
|
399
|
+
readonly method: z.ZodOptional<z.ZodString>;
|
|
400
|
+
/** Inclusive range — e.g. `{min: 400, max: 599}` for any error response. */
|
|
401
|
+
readonly status_range: z.ZodOptional<z.ZodObject<{
|
|
402
|
+
min: z.ZodNumber;
|
|
403
|
+
max: z.ZodNumber;
|
|
404
|
+
}, z.core.$strip>>;
|
|
405
|
+
readonly only_failed: z.ZodDefault<z.ZodBoolean>;
|
|
406
|
+
/** Write the full HAR file for this session to artifacts/{runId}/network.har. */
|
|
407
|
+
readonly export_har: z.ZodDefault<z.ZodBoolean>;
|
|
408
|
+
/** Drop buffered entries after returning. */
|
|
409
|
+
readonly clear: z.ZodDefault<z.ZodBoolean>;
|
|
410
|
+
readonly limit: z.ZodDefault<z.ZodNumber>;
|
|
411
|
+
};
|
|
412
|
+
declare const browserNetworkSchema: z.ZodObject<{
|
|
413
|
+
session_id: z.ZodString;
|
|
414
|
+
url_pattern: z.ZodOptional<z.ZodString>;
|
|
415
|
+
pattern_kind: z.ZodDefault<z.ZodEnum<{
|
|
416
|
+
substring: "substring";
|
|
417
|
+
regex: "regex";
|
|
418
|
+
}>>;
|
|
419
|
+
method: z.ZodOptional<z.ZodString>;
|
|
420
|
+
status_range: z.ZodOptional<z.ZodObject<{
|
|
421
|
+
min: z.ZodNumber;
|
|
422
|
+
max: z.ZodNumber;
|
|
423
|
+
}, z.core.$strip>>;
|
|
424
|
+
only_failed: z.ZodDefault<z.ZodBoolean>;
|
|
425
|
+
export_har: z.ZodDefault<z.ZodBoolean>;
|
|
426
|
+
clear: z.ZodDefault<z.ZodBoolean>;
|
|
427
|
+
limit: z.ZodDefault<z.ZodNumber>;
|
|
428
|
+
}, z.core.$strip>;
|
|
429
|
+
/**
|
|
430
|
+
* Runtime environment mutation. Merges resize+emulate. Fields here are
|
|
431
|
+
* the ones Playwright supports changing AFTER context creation. Things
|
|
432
|
+
* that must be set at context-creation time (user_agent, locale,
|
|
433
|
+
* timezone) live on `browser_open` and cannot be changed mid-session.
|
|
434
|
+
*
|
|
435
|
+
* `network_throttle` and `cpu_throttle` are chromium-only (CDP-backed).
|
|
436
|
+
*/
|
|
437
|
+
declare const browserSetEnvShape: {
|
|
438
|
+
readonly session_id: z.ZodString;
|
|
439
|
+
readonly viewport: z.ZodOptional<z.ZodObject<{
|
|
440
|
+
width: z.ZodNumber;
|
|
441
|
+
height: z.ZodNumber;
|
|
442
|
+
}, z.core.$strip>>;
|
|
443
|
+
readonly offline: z.ZodOptional<z.ZodBoolean>;
|
|
444
|
+
readonly geolocation: z.ZodOptional<z.ZodObject<{
|
|
445
|
+
latitude: z.ZodNumber;
|
|
446
|
+
longitude: z.ZodNumber;
|
|
447
|
+
accuracy: z.ZodOptional<z.ZodNumber>;
|
|
448
|
+
}, z.core.$strip>>;
|
|
449
|
+
readonly color_scheme: z.ZodOptional<z.ZodEnum<{
|
|
450
|
+
light: "light";
|
|
451
|
+
dark: "dark";
|
|
452
|
+
"no-preference": "no-preference";
|
|
453
|
+
}>>;
|
|
454
|
+
readonly reduced_motion: z.ZodOptional<z.ZodEnum<{
|
|
455
|
+
reduce: "reduce";
|
|
456
|
+
"no-preference": "no-preference";
|
|
457
|
+
}>>;
|
|
458
|
+
readonly extra_headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
459
|
+
readonly network_throttle: z.ZodOptional<z.ZodEnum<{
|
|
460
|
+
offline: "offline";
|
|
461
|
+
"slow-3g": "slow-3g";
|
|
462
|
+
"fast-3g": "fast-3g";
|
|
463
|
+
"slow-4g": "slow-4g";
|
|
464
|
+
"fast-4g": "fast-4g";
|
|
465
|
+
"no-throttling": "no-throttling";
|
|
466
|
+
}>>;
|
|
467
|
+
/** CPU slowdown multiplier (1 = no throttle, 4 = 4x slower). Chromium only. */
|
|
468
|
+
readonly cpu_throttle: z.ZodOptional<z.ZodNumber>;
|
|
469
|
+
};
|
|
470
|
+
declare const browserSetEnvSchema: z.ZodObject<{
|
|
471
|
+
session_id: z.ZodString;
|
|
472
|
+
viewport: z.ZodOptional<z.ZodObject<{
|
|
473
|
+
width: z.ZodNumber;
|
|
474
|
+
height: z.ZodNumber;
|
|
475
|
+
}, z.core.$strip>>;
|
|
476
|
+
offline: z.ZodOptional<z.ZodBoolean>;
|
|
477
|
+
geolocation: z.ZodOptional<z.ZodObject<{
|
|
478
|
+
latitude: z.ZodNumber;
|
|
479
|
+
longitude: z.ZodNumber;
|
|
480
|
+
accuracy: z.ZodOptional<z.ZodNumber>;
|
|
481
|
+
}, z.core.$strip>>;
|
|
482
|
+
color_scheme: z.ZodOptional<z.ZodEnum<{
|
|
483
|
+
light: "light";
|
|
484
|
+
dark: "dark";
|
|
485
|
+
"no-preference": "no-preference";
|
|
486
|
+
}>>;
|
|
487
|
+
reduced_motion: z.ZodOptional<z.ZodEnum<{
|
|
488
|
+
reduce: "reduce";
|
|
489
|
+
"no-preference": "no-preference";
|
|
490
|
+
}>>;
|
|
491
|
+
extra_headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
492
|
+
network_throttle: z.ZodOptional<z.ZodEnum<{
|
|
493
|
+
offline: "offline";
|
|
494
|
+
"slow-3g": "slow-3g";
|
|
495
|
+
"fast-3g": "fast-3g";
|
|
496
|
+
"slow-4g": "slow-4g";
|
|
497
|
+
"fast-4g": "fast-4g";
|
|
498
|
+
"no-throttling": "no-throttling";
|
|
499
|
+
}>>;
|
|
500
|
+
cpu_throttle: z.ZodOptional<z.ZodNumber>;
|
|
501
|
+
}, z.core.$strip>;
|
|
502
|
+
/**
|
|
503
|
+
* Execute JavaScript in the page context. GATED: server must be started
|
|
504
|
+
* with env `ROLEPOD_ALLOW_EVAL=1`, otherwise the tool returns an
|
|
505
|
+
* `eval_disabled` error. Equivalent to arbitrary code execution — only
|
|
506
|
+
* enable for trusted automation scenarios.
|
|
507
|
+
*
|
|
508
|
+
* `script` is the body of an async function whose return value is sent
|
|
509
|
+
* back as `result`. Use `args` to pass JSON-serialisable values.
|
|
510
|
+
*/
|
|
511
|
+
declare const browserEvaluateShape: {
|
|
512
|
+
readonly session_id: z.ZodString;
|
|
513
|
+
readonly script: z.ZodString;
|
|
514
|
+
readonly args: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
|
|
515
|
+
};
|
|
516
|
+
declare const browserEvaluateSchema: z.ZodObject<{
|
|
517
|
+
session_id: z.ZodString;
|
|
518
|
+
script: z.ZodString;
|
|
519
|
+
args: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
|
|
520
|
+
}, z.core.$strip>;
|
|
521
|
+
/**
|
|
522
|
+
* Multi-page support. A session owns one browser context, which may
|
|
523
|
+
* have multiple pages (e.g. when an OAuth popup or `target="_blank"`
|
|
524
|
+
* link opens). The active page index is sticky — all subsequent
|
|
525
|
+
* tool calls operate on it until `switch_page` changes it.
|
|
526
|
+
*/
|
|
527
|
+
declare const browserPagesShape: {
|
|
528
|
+
readonly session_id: z.ZodString;
|
|
529
|
+
};
|
|
530
|
+
declare const browserPagesSchema: z.ZodObject<{
|
|
531
|
+
session_id: z.ZodString;
|
|
532
|
+
}, z.core.$strip>;
|
|
533
|
+
declare const browserSwitchPageShape: {
|
|
534
|
+
readonly session_id: z.ZodString;
|
|
535
|
+
readonly index: z.ZodNumber;
|
|
536
|
+
};
|
|
537
|
+
declare const browserSwitchPageSchema: z.ZodObject<{
|
|
538
|
+
session_id: z.ZodString;
|
|
539
|
+
index: z.ZodNumber;
|
|
540
|
+
}, z.core.$strip>;
|
|
241
541
|
declare const verifyUiFlowShape: {
|
|
242
542
|
readonly mode: z.ZodDefault<z.ZodEnum<{
|
|
243
543
|
assert: "assert";
|
|
@@ -297,6 +597,74 @@ declare const verifyUiFlowShape: {
|
|
|
297
597
|
}, z.core.$strip>, z.ZodObject<{
|
|
298
598
|
kind: z.ZodLiteral<"navigate">;
|
|
299
599
|
url: z.ZodString;
|
|
600
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
601
|
+
kind: z.ZodLiteral<"hover">;
|
|
602
|
+
query: z.ZodString;
|
|
603
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
604
|
+
kind: z.ZodLiteral<"drag">;
|
|
605
|
+
from_query: z.ZodString;
|
|
606
|
+
to_query: z.ZodString;
|
|
607
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
608
|
+
kind: z.ZodLiteral<"fill_form">;
|
|
609
|
+
fields: z.ZodArray<z.ZodObject<{
|
|
610
|
+
query: z.ZodString;
|
|
611
|
+
value: z.ZodUnion<readonly [z.ZodString, z.ZodBoolean]>;
|
|
612
|
+
kind: z.ZodOptional<z.ZodEnum<{
|
|
613
|
+
input: "input";
|
|
614
|
+
select: "select";
|
|
615
|
+
checkbox: "checkbox";
|
|
616
|
+
radio: "radio";
|
|
617
|
+
}>>;
|
|
618
|
+
}, z.core.$strip>>;
|
|
619
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
620
|
+
kind: z.ZodLiteral<"upload">;
|
|
621
|
+
query: z.ZodString;
|
|
622
|
+
file_path: z.ZodString;
|
|
623
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
624
|
+
kind: z.ZodLiteral<"dialog">;
|
|
625
|
+
action: z.ZodEnum<{
|
|
626
|
+
accept: "accept";
|
|
627
|
+
dismiss: "dismiss";
|
|
628
|
+
accept_with_text: "accept_with_text";
|
|
629
|
+
}>;
|
|
630
|
+
text: z.ZodOptional<z.ZodString>;
|
|
631
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
632
|
+
kind: z.ZodLiteral<"set_env">;
|
|
633
|
+
viewport: z.ZodOptional<z.ZodObject<{
|
|
634
|
+
width: z.ZodNumber;
|
|
635
|
+
height: z.ZodNumber;
|
|
636
|
+
}, z.core.$strip>>;
|
|
637
|
+
offline: z.ZodOptional<z.ZodBoolean>;
|
|
638
|
+
geolocation: z.ZodOptional<z.ZodObject<{
|
|
639
|
+
latitude: z.ZodNumber;
|
|
640
|
+
longitude: z.ZodNumber;
|
|
641
|
+
accuracy: z.ZodOptional<z.ZodNumber>;
|
|
642
|
+
}, z.core.$strip>>;
|
|
643
|
+
color_scheme: z.ZodOptional<z.ZodEnum<{
|
|
644
|
+
light: "light";
|
|
645
|
+
dark: "dark";
|
|
646
|
+
"no-preference": "no-preference";
|
|
647
|
+
}>>;
|
|
648
|
+
reduced_motion: z.ZodOptional<z.ZodEnum<{
|
|
649
|
+
reduce: "reduce";
|
|
650
|
+
"no-preference": "no-preference";
|
|
651
|
+
}>>;
|
|
652
|
+
extra_headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
653
|
+
network_throttle: z.ZodOptional<z.ZodEnum<{
|
|
654
|
+
offline: "offline";
|
|
655
|
+
"slow-3g": "slow-3g";
|
|
656
|
+
"fast-3g": "fast-3g";
|
|
657
|
+
"slow-4g": "slow-4g";
|
|
658
|
+
"fast-4g": "fast-4g";
|
|
659
|
+
"no-throttling": "no-throttling";
|
|
660
|
+
}>>;
|
|
661
|
+
cpu_throttle: z.ZodOptional<z.ZodNumber>;
|
|
662
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
663
|
+
kind: z.ZodLiteral<"switch_page">;
|
|
664
|
+
index: z.ZodNumber;
|
|
665
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
666
|
+
kind: z.ZodLiteral<"evaluate">;
|
|
667
|
+
script: z.ZodString;
|
|
300
668
|
}, z.core.$strip>], "kind">>>;
|
|
301
669
|
readonly expect: z.ZodDefault<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
302
670
|
kind: z.ZodLiteral<"text_visible">;
|
|
@@ -315,8 +683,25 @@ declare const verifyUiFlowShape: {
|
|
|
315
683
|
visible: "visible";
|
|
316
684
|
enabled: "enabled";
|
|
317
685
|
}>;
|
|
686
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
687
|
+
kind: z.ZodLiteral<"no_console_errors">;
|
|
688
|
+
exclude_patterns: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
689
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
690
|
+
kind: z.ZodLiteral<"no_failed_requests">;
|
|
691
|
+
exclude_patterns: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
692
|
+
allow_4xx: z.ZodOptional<z.ZodBoolean>;
|
|
693
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
694
|
+
kind: z.ZodLiteral<"request_made">;
|
|
695
|
+
url_pattern: z.ZodString;
|
|
696
|
+
method: z.ZodOptional<z.ZodString>;
|
|
697
|
+
min_count: z.ZodOptional<z.ZodNumber>;
|
|
698
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
699
|
+
kind: z.ZodLiteral<"response_status">;
|
|
700
|
+
url_pattern: z.ZodString;
|
|
701
|
+
status: z.ZodNumber;
|
|
318
702
|
}, z.core.$strip>], "kind">>>;
|
|
319
703
|
readonly capture: z.ZodOptional<z.ZodArray<z.ZodEnum<{
|
|
704
|
+
trace: "trace";
|
|
320
705
|
screenshot: "screenshot";
|
|
321
706
|
har: "har";
|
|
322
707
|
console: "console";
|
|
@@ -390,6 +775,74 @@ declare const verifyUiFlowSchema: z.ZodObject<{
|
|
|
390
775
|
}, z.core.$strip>, z.ZodObject<{
|
|
391
776
|
kind: z.ZodLiteral<"navigate">;
|
|
392
777
|
url: z.ZodString;
|
|
778
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
779
|
+
kind: z.ZodLiteral<"hover">;
|
|
780
|
+
query: z.ZodString;
|
|
781
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
782
|
+
kind: z.ZodLiteral<"drag">;
|
|
783
|
+
from_query: z.ZodString;
|
|
784
|
+
to_query: z.ZodString;
|
|
785
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
786
|
+
kind: z.ZodLiteral<"fill_form">;
|
|
787
|
+
fields: z.ZodArray<z.ZodObject<{
|
|
788
|
+
query: z.ZodString;
|
|
789
|
+
value: z.ZodUnion<readonly [z.ZodString, z.ZodBoolean]>;
|
|
790
|
+
kind: z.ZodOptional<z.ZodEnum<{
|
|
791
|
+
input: "input";
|
|
792
|
+
select: "select";
|
|
793
|
+
checkbox: "checkbox";
|
|
794
|
+
radio: "radio";
|
|
795
|
+
}>>;
|
|
796
|
+
}, z.core.$strip>>;
|
|
797
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
798
|
+
kind: z.ZodLiteral<"upload">;
|
|
799
|
+
query: z.ZodString;
|
|
800
|
+
file_path: z.ZodString;
|
|
801
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
802
|
+
kind: z.ZodLiteral<"dialog">;
|
|
803
|
+
action: z.ZodEnum<{
|
|
804
|
+
accept: "accept";
|
|
805
|
+
dismiss: "dismiss";
|
|
806
|
+
accept_with_text: "accept_with_text";
|
|
807
|
+
}>;
|
|
808
|
+
text: z.ZodOptional<z.ZodString>;
|
|
809
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
810
|
+
kind: z.ZodLiteral<"set_env">;
|
|
811
|
+
viewport: z.ZodOptional<z.ZodObject<{
|
|
812
|
+
width: z.ZodNumber;
|
|
813
|
+
height: z.ZodNumber;
|
|
814
|
+
}, z.core.$strip>>;
|
|
815
|
+
offline: z.ZodOptional<z.ZodBoolean>;
|
|
816
|
+
geolocation: z.ZodOptional<z.ZodObject<{
|
|
817
|
+
latitude: z.ZodNumber;
|
|
818
|
+
longitude: z.ZodNumber;
|
|
819
|
+
accuracy: z.ZodOptional<z.ZodNumber>;
|
|
820
|
+
}, z.core.$strip>>;
|
|
821
|
+
color_scheme: z.ZodOptional<z.ZodEnum<{
|
|
822
|
+
light: "light";
|
|
823
|
+
dark: "dark";
|
|
824
|
+
"no-preference": "no-preference";
|
|
825
|
+
}>>;
|
|
826
|
+
reduced_motion: z.ZodOptional<z.ZodEnum<{
|
|
827
|
+
reduce: "reduce";
|
|
828
|
+
"no-preference": "no-preference";
|
|
829
|
+
}>>;
|
|
830
|
+
extra_headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
831
|
+
network_throttle: z.ZodOptional<z.ZodEnum<{
|
|
832
|
+
offline: "offline";
|
|
833
|
+
"slow-3g": "slow-3g";
|
|
834
|
+
"fast-3g": "fast-3g";
|
|
835
|
+
"slow-4g": "slow-4g";
|
|
836
|
+
"fast-4g": "fast-4g";
|
|
837
|
+
"no-throttling": "no-throttling";
|
|
838
|
+
}>>;
|
|
839
|
+
cpu_throttle: z.ZodOptional<z.ZodNumber>;
|
|
840
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
841
|
+
kind: z.ZodLiteral<"switch_page">;
|
|
842
|
+
index: z.ZodNumber;
|
|
843
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
844
|
+
kind: z.ZodLiteral<"evaluate">;
|
|
845
|
+
script: z.ZodString;
|
|
393
846
|
}, z.core.$strip>], "kind">>>;
|
|
394
847
|
expect: z.ZodDefault<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
395
848
|
kind: z.ZodLiteral<"text_visible">;
|
|
@@ -408,8 +861,25 @@ declare const verifyUiFlowSchema: z.ZodObject<{
|
|
|
408
861
|
visible: "visible";
|
|
409
862
|
enabled: "enabled";
|
|
410
863
|
}>;
|
|
864
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
865
|
+
kind: z.ZodLiteral<"no_console_errors">;
|
|
866
|
+
exclude_patterns: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
867
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
868
|
+
kind: z.ZodLiteral<"no_failed_requests">;
|
|
869
|
+
exclude_patterns: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
870
|
+
allow_4xx: z.ZodOptional<z.ZodBoolean>;
|
|
871
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
872
|
+
kind: z.ZodLiteral<"request_made">;
|
|
873
|
+
url_pattern: z.ZodString;
|
|
874
|
+
method: z.ZodOptional<z.ZodString>;
|
|
875
|
+
min_count: z.ZodOptional<z.ZodNumber>;
|
|
876
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
877
|
+
kind: z.ZodLiteral<"response_status">;
|
|
878
|
+
url_pattern: z.ZodString;
|
|
879
|
+
status: z.ZodNumber;
|
|
411
880
|
}, z.core.$strip>], "kind">>>;
|
|
412
881
|
capture: z.ZodOptional<z.ZodArray<z.ZodEnum<{
|
|
882
|
+
trace: "trace";
|
|
413
883
|
screenshot: "screenshot";
|
|
414
884
|
har: "har";
|
|
415
885
|
console: "console";
|
|
@@ -664,6 +1134,17 @@ declare const ToolNames: {
|
|
|
664
1134
|
readonly browserWaitFor: "rolepod_browser_wait_for";
|
|
665
1135
|
readonly browserScreenshot: "rolepod_browser_screenshot";
|
|
666
1136
|
readonly browserNavigate: "rolepod_browser_navigate";
|
|
1137
|
+
readonly browserHover: "rolepod_browser_hover";
|
|
1138
|
+
readonly browserDrag: "rolepod_browser_drag";
|
|
1139
|
+
readonly browserFillForm: "rolepod_browser_fill_form";
|
|
1140
|
+
readonly browserUploadFile: "rolepod_browser_upload_file";
|
|
1141
|
+
readonly browserHandleDialog: "rolepod_browser_handle_dialog";
|
|
1142
|
+
readonly browserConsole: "rolepod_browser_console";
|
|
1143
|
+
readonly browserNetwork: "rolepod_browser_network";
|
|
1144
|
+
readonly browserSetEnv: "rolepod_browser_set_env";
|
|
1145
|
+
readonly browserEvaluate: "rolepod_browser_evaluate";
|
|
1146
|
+
readonly browserPages: "rolepod_browser_pages";
|
|
1147
|
+
readonly browserSwitchPage: "rolepod_browser_switch_page";
|
|
667
1148
|
readonly verifyUiFlow: "rolepod_verify_ui_flow";
|
|
668
1149
|
readonly auditA11y: "rolepod_audit_a11y";
|
|
669
1150
|
readonly visualDiff: "rolepod_visual_diff";
|
|
@@ -710,6 +1191,30 @@ type OpenOptions = {
|
|
|
710
1191
|
app_package?: string;
|
|
711
1192
|
app_activity?: string;
|
|
712
1193
|
emulator?: string;
|
|
1194
|
+
/**
|
|
1195
|
+
* v0.5 capture lifecycle. Pass when the session needs HAR/video/trace
|
|
1196
|
+
* recording. These MUST be requested at open time because Playwright
|
|
1197
|
+
* wires recordHar/recordVideo at context creation.
|
|
1198
|
+
*/
|
|
1199
|
+
capture?: {
|
|
1200
|
+
har?: {
|
|
1201
|
+
path: string;
|
|
1202
|
+
};
|
|
1203
|
+
video?: {
|
|
1204
|
+
dir: string;
|
|
1205
|
+
sizeWidth?: number;
|
|
1206
|
+
sizeHeight?: number;
|
|
1207
|
+
};
|
|
1208
|
+
trace?: {
|
|
1209
|
+
artifactDir: string;
|
|
1210
|
+
};
|
|
1211
|
+
};
|
|
1212
|
+
};
|
|
1213
|
+
type FillFieldKind = "input" | "select" | "checkbox" | "radio";
|
|
1214
|
+
type FillField = {
|
|
1215
|
+
ref: string;
|
|
1216
|
+
value: string | boolean;
|
|
1217
|
+
kind?: FillFieldKind;
|
|
713
1218
|
};
|
|
714
1219
|
/** Opaque session handle returned by `Engine.open`. */
|
|
715
1220
|
interface Session {
|
|
@@ -742,6 +1247,21 @@ interface Engine {
|
|
|
742
1247
|
screenshot(session: Session, fullPage?: boolean): Promise<Buffer>;
|
|
743
1248
|
/** Web-only. Throws `unsupported_platform` on mobile sessions. */
|
|
744
1249
|
navigate(session: Session, url: string): Promise<void>;
|
|
1250
|
+
/** Move pointer / hover over the element identified by `ref`. */
|
|
1251
|
+
hover(session: Session, ref: string): Promise<void>;
|
|
1252
|
+
/** Drag element `from` onto element `to`. */
|
|
1253
|
+
drag(session: Session, fromRef: string, toRef: string): Promise<void>;
|
|
1254
|
+
/**
|
|
1255
|
+
* Batch-fill multiple form fields in a single call. Token-efficient
|
|
1256
|
+
* alternative to a sequence of `type` calls; also handles checkboxes,
|
|
1257
|
+
* radios, and `<select>` options.
|
|
1258
|
+
*/
|
|
1259
|
+
fillForm(session: Session, fields: FillField[]): Promise<void>;
|
|
1260
|
+
/**
|
|
1261
|
+
* Attach a local file to the file input identified by `ref`.
|
|
1262
|
+
* Path MUST be absolute on the host filesystem.
|
|
1263
|
+
*/
|
|
1264
|
+
uploadFile(session: Session, ref: string, filePath: string): Promise<void>;
|
|
745
1265
|
}
|
|
746
1266
|
|
|
747
1267
|
/**
|
|
@@ -775,7 +1295,7 @@ declare class SessionRegistry {
|
|
|
775
1295
|
}
|
|
776
1296
|
|
|
777
1297
|
declare const SERVER_NAME = "rolepod-uiproof";
|
|
778
|
-
declare const SERVER_VERSION = "0.
|
|
1298
|
+
declare const SERVER_VERSION = "0.6.0";
|
|
779
1299
|
type ServerHandle = {
|
|
780
1300
|
mcp: McpServer;
|
|
781
1301
|
registry: SessionRegistry;
|
|
@@ -792,6 +1312,23 @@ declare function buildServer(opts?: {
|
|
|
792
1312
|
idleTimeoutMs?: number;
|
|
793
1313
|
}): ServerHandle;
|
|
794
1314
|
|
|
1315
|
+
type ConsoleEntry = {
|
|
1316
|
+
level: "error" | "warning" | "info" | "log" | "debug" | "trace";
|
|
1317
|
+
text: string;
|
|
1318
|
+
ts: string;
|
|
1319
|
+
/** Best-effort file:line if Playwright provides it. */
|
|
1320
|
+
location?: string;
|
|
1321
|
+
};
|
|
1322
|
+
type NetworkEntry = {
|
|
1323
|
+
id: number;
|
|
1324
|
+
url: string;
|
|
1325
|
+
method: string;
|
|
1326
|
+
status?: number;
|
|
1327
|
+
failure?: string;
|
|
1328
|
+
resource_type: string;
|
|
1329
|
+
ts: string;
|
|
1330
|
+
duration_ms?: number;
|
|
1331
|
+
};
|
|
795
1332
|
/**
|
|
796
1333
|
* PlaywrightEngine — v0.1 web-only implementation backed by Playwright's
|
|
797
1334
|
* Chromium / Firefox / WebKit drivers and the built-in
|
|
@@ -826,6 +1363,86 @@ declare class PlaywrightEngine implements Engine {
|
|
|
826
1363
|
getPageForSession(sessionId: string): Page;
|
|
827
1364
|
/** Increment generation; the next ref-using call will see them as stale. */
|
|
828
1365
|
bumpGeneration(sessionId: string): void;
|
|
1366
|
+
hover(session: Session, ref: string): Promise<void>;
|
|
1367
|
+
drag(session: Session, fromRef: string, toRef: string): Promise<void>;
|
|
1368
|
+
fillForm(session: Session, fields: FillField[]): Promise<void>;
|
|
1369
|
+
uploadFile(session: Session, ref: string, filePath: string): Promise<void>;
|
|
1370
|
+
/**
|
|
1371
|
+
* Pre-arm a one-shot dialog handler for the next dialog raised on the
|
|
1372
|
+
* active page. Returns when either the dialog fires (and is handled)
|
|
1373
|
+
* or the timeout elapses. The caller is expected to trigger the
|
|
1374
|
+
* dialog (via click etc.) AFTER arming.
|
|
1375
|
+
*/
|
|
1376
|
+
handleDialog(sessionId: string, opts: {
|
|
1377
|
+
action: "accept" | "dismiss" | "accept_with_text";
|
|
1378
|
+
text?: string;
|
|
1379
|
+
timeoutMs?: number;
|
|
1380
|
+
}): Promise<{
|
|
1381
|
+
handled: boolean;
|
|
1382
|
+
}>;
|
|
1383
|
+
getConsole(sessionId: string, opts?: {
|
|
1384
|
+
levels?: ConsoleEntry["level"][];
|
|
1385
|
+
contains?: string;
|
|
1386
|
+
clear?: boolean;
|
|
1387
|
+
limit?: number;
|
|
1388
|
+
}): ConsoleEntry[];
|
|
1389
|
+
getNetwork(sessionId: string, opts?: {
|
|
1390
|
+
urlPattern?: string;
|
|
1391
|
+
patternKind?: "substring" | "regex";
|
|
1392
|
+
method?: string;
|
|
1393
|
+
statusRange?: {
|
|
1394
|
+
min: number;
|
|
1395
|
+
max: number;
|
|
1396
|
+
};
|
|
1397
|
+
onlyFailed?: boolean;
|
|
1398
|
+
clear?: boolean;
|
|
1399
|
+
limit?: number;
|
|
1400
|
+
}): NetworkEntry[];
|
|
1401
|
+
/**
|
|
1402
|
+
* Read the consoleBuffer/networkBuffer directly without filtering —
|
|
1403
|
+
* used by verify_ui_flow expect evaluators.
|
|
1404
|
+
*/
|
|
1405
|
+
peekBuffers(sessionId: string): {
|
|
1406
|
+
console: ConsoleEntry[];
|
|
1407
|
+
network: NetworkEntry[];
|
|
1408
|
+
};
|
|
1409
|
+
/**
|
|
1410
|
+
* Runtime mutation of context-level emulation. CPU + network throttle
|
|
1411
|
+
* use CDP and only work on chromium; everything else is cross-browser.
|
|
1412
|
+
*/
|
|
1413
|
+
setEnv(sessionId: string, opts: {
|
|
1414
|
+
viewport?: {
|
|
1415
|
+
width: number;
|
|
1416
|
+
height: number;
|
|
1417
|
+
};
|
|
1418
|
+
offline?: boolean;
|
|
1419
|
+
geolocation?: {
|
|
1420
|
+
latitude: number;
|
|
1421
|
+
longitude: number;
|
|
1422
|
+
accuracy?: number;
|
|
1423
|
+
};
|
|
1424
|
+
colorScheme?: "light" | "dark" | "no-preference";
|
|
1425
|
+
reducedMotion?: "reduce" | "no-preference";
|
|
1426
|
+
extraHeaders?: Record<string, string>;
|
|
1427
|
+
networkThrottle?: "offline" | "slow-3g" | "fast-3g" | "slow-4g" | "fast-4g" | "no-throttling";
|
|
1428
|
+
cpuThrottle?: number;
|
|
1429
|
+
}): Promise<void>;
|
|
1430
|
+
/**
|
|
1431
|
+
* Execute a JavaScript function in the page context. ALWAYS gated by
|
|
1432
|
+
* the tool layer (`ROLEPOD_ALLOW_EVAL=1`); this method does not enforce
|
|
1433
|
+
* the env check.
|
|
1434
|
+
*/
|
|
1435
|
+
evaluate(sessionId: string, script: string, args?: unknown[]): Promise<unknown>;
|
|
1436
|
+
listPages(sessionId: string): {
|
|
1437
|
+
index: number;
|
|
1438
|
+
url: string;
|
|
1439
|
+
title_promise: Promise<string>;
|
|
1440
|
+
active: boolean;
|
|
1441
|
+
}[];
|
|
1442
|
+
switchPage(sessionId: string, index: number): Promise<void>;
|
|
1443
|
+
private activePage;
|
|
1444
|
+
private attachPageListeners;
|
|
1445
|
+
private handlePageDialog;
|
|
829
1446
|
private requireSession;
|
|
830
1447
|
private resolveLocator;
|
|
831
1448
|
private invalidateRefs;
|
|
@@ -862,6 +1479,14 @@ declare class AppiumEngine implements Engine {
|
|
|
862
1479
|
waitFor(session: Session, cond: WaitCondition, timeoutMs?: number): Promise<void>;
|
|
863
1480
|
screenshot(session: Session, _fullPage?: boolean): Promise<Buffer>;
|
|
864
1481
|
navigate(_session: Session, _url: string): Promise<void>;
|
|
1482
|
+
hover(_session: Session, _ref: string): Promise<void>;
|
|
1483
|
+
drag(_session: Session, _fromRef: string, _toRef: string): Promise<void>;
|
|
1484
|
+
fillForm(session: Session, fields: {
|
|
1485
|
+
ref: string;
|
|
1486
|
+
value: string | boolean;
|
|
1487
|
+
kind?: string;
|
|
1488
|
+
}[]): Promise<void>;
|
|
1489
|
+
uploadFile(_session: Session, _ref: string, _filePath: string): Promise<void>;
|
|
865
1490
|
private loadWdio;
|
|
866
1491
|
private buildCapabilities;
|
|
867
1492
|
private screenIdentifier;
|
|
@@ -915,4 +1540,4 @@ declare class UnsupportedPlatformError extends RolepodMcpError {
|
|
|
915
1540
|
constructor(platform: string);
|
|
916
1541
|
}
|
|
917
1542
|
|
|
918
|
-
export { type A11yNode, type A11ySnapshot, AppiumEngine, ArtifactStore, type Engine, type OpenOptions, type Platform, PlaywrightEngine, RolepodMcpError, SERVER_NAME, SERVER_VERSION, type ServerHandle, type Session, SessionRegistry, StaleRefError, type ToolName, ToolNames, UnknownRefError, UnknownSessionError, UnsupportedPlatformError, type WaitCondition, auditA11ySchema, auditA11yShape, browserClickSchema, browserClickShape, browserCloseSchema, browserCloseShape, browserKeySchema, browserKeyShape, browserNavigateSchema, browserNavigateShape, browserOpenSchema, browserOpenShape, browserScreenshotSchema, browserScreenshotShape, browserScrollSchema, browserScrollShape, browserSnapshotSchema, browserSnapshotShape, browserTypeSchema, browserTypeShape, browserWaitForSchema, browserWaitForShape, buildServer, createEngine, createMobileEngine, createWebEngine, extractUiStateSchema, extractUiStateShape, scaffoldE2eSchema, scaffoldE2eShape, verifyUiFlowSchema, verifyUiFlowShape, visualDiffSchema, visualDiffShape };
|
|
1543
|
+
export { type A11yNode, type A11ySnapshot, AppiumEngine, ArtifactStore, type Engine, type OpenOptions, type Platform, PlaywrightEngine, RolepodMcpError, SERVER_NAME, SERVER_VERSION, type ServerHandle, type Session, SessionRegistry, StaleRefError, type ToolName, ToolNames, UnknownRefError, UnknownSessionError, UnsupportedPlatformError, type WaitCondition, auditA11ySchema, auditA11yShape, browserClickSchema, browserClickShape, browserCloseSchema, browserCloseShape, browserConsoleSchema, browserConsoleShape, browserDragSchema, browserDragShape, browserEvaluateSchema, browserEvaluateShape, browserFillFormSchema, browserFillFormShape, browserHandleDialogSchema, browserHandleDialogShape, browserHoverSchema, browserHoverShape, browserKeySchema, browserKeyShape, browserNavigateSchema, browserNavigateShape, browserNetworkSchema, browserNetworkShape, browserOpenSchema, browserOpenShape, browserPagesSchema, browserPagesShape, browserScreenshotSchema, browserScreenshotShape, browserScrollSchema, browserScrollShape, browserSetEnvSchema, browserSetEnvShape, browserSnapshotSchema, browserSnapshotShape, browserSwitchPageSchema, browserSwitchPageShape, browserTypeSchema, browserTypeShape, browserUploadFileSchema, browserUploadFileShape, browserWaitForSchema, browserWaitForShape, buildServer, createEngine, createMobileEngine, createWebEngine, extractUiStateSchema, extractUiStateShape, scaffoldE2eSchema, scaffoldE2eShape, verifyUiFlowSchema, verifyUiFlowShape, visualDiffSchema, visualDiffShape };
|