autokap 1.0.10 → 1.1.2
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/assets/skill/OPCODE-REFERENCE.md +1 -41
- package/assets/skill/README.md +0 -1
- package/assets/skill/SKILL.md +9 -32
- package/assets/skill/references/examples.md +1 -17
- package/dist/billing-operation-logging.d.ts +2 -5
- package/dist/billing-operation-logging.js +0 -7
- package/dist/capture-strategy.d.ts +2 -8
- package/dist/capture-strategy.js +2 -30
- package/dist/cli-config.d.ts +2 -1
- package/dist/cli-config.js +18 -2
- package/dist/cli-contract.d.ts +1 -0
- package/dist/cli-contract.js +8 -2
- package/dist/cli-runner-local.d.ts +2 -0
- package/dist/cli-runner-local.js +12 -21
- package/dist/cli-runner.d.ts +4 -0
- package/dist/cli-runner.js +30 -50
- package/dist/cli.js +89 -44
- package/dist/cost-logging.d.ts +1 -1
- package/dist/execution-schema.d.ts +143 -331
- package/dist/execution-schema.js +43 -28
- package/dist/execution-types.d.ts +6 -151
- package/dist/execution-types.js +1 -3
- package/dist/logger.js +1 -1
- package/dist/mockup-html.d.ts +2 -0
- package/dist/mockup-html.js +13 -10
- package/dist/mockup.js +2 -2
- package/dist/opcode-actions.js +0 -2
- package/dist/opcode-runner.js +0 -121
- package/dist/program-signing.d.ts +50 -72
- package/dist/security.js +2 -2
- package/dist/server-capture-runtime.d.ts +0 -1
- package/dist/server-capture-runtime.js +0 -3
- package/dist/server-credit-usage.d.ts +1 -1
- package/dist/skill-packaging.d.ts +1 -1
- package/dist/skill-packaging.js +1 -11
- package/dist/types.d.ts +2 -2
- package/dist/web-playwright-local.d.ts +0 -14
- package/dist/web-playwright-local.js +0 -194
- package/package.json +1 -18
- package/readme.md +13 -0
- package/assets/skill/STUDIO-SKILL.md +0 -476
- package/assets/skill/references/interactive-demo.md +0 -225
|
@@ -479,73 +479,6 @@ export declare const ExecutionOpcodeSchema: z.ZodDiscriminatedUnion<[z.ZodObject
|
|
|
479
479
|
timeoutMs: z.ZodNumber;
|
|
480
480
|
maxFailures: z.ZodNumber;
|
|
481
481
|
kind: z.ZodLiteral<"CAPTURE_SCREENSHOT">;
|
|
482
|
-
}, z.core.$strict>, z.ZodObject<{
|
|
483
|
-
stateName: z.ZodString;
|
|
484
|
-
selector: z.ZodOptional<z.ZodString>;
|
|
485
|
-
description: z.ZodString;
|
|
486
|
-
postcondition: z.ZodObject<{
|
|
487
|
-
type: z.ZodEnum<{
|
|
488
|
-
route_matches: "route_matches";
|
|
489
|
-
element_visible: "element_visible";
|
|
490
|
-
element_absent: "element_absent";
|
|
491
|
-
text_contains: "text_contains";
|
|
492
|
-
overlay_dismissed: "overlay_dismissed";
|
|
493
|
-
screenshot_stable: "screenshot_stable";
|
|
494
|
-
any_change: "any_change";
|
|
495
|
-
always: "always";
|
|
496
|
-
}>;
|
|
497
|
-
pattern: z.ZodOptional<z.ZodString>;
|
|
498
|
-
selector: z.ZodOptional<z.ZodString>;
|
|
499
|
-
text: z.ZodOptional<z.ZodString>;
|
|
500
|
-
threshold: z.ZodOptional<z.ZodNumber>;
|
|
501
|
-
waitMs: z.ZodOptional<z.ZodNumber>;
|
|
502
|
-
}, z.core.$strict>;
|
|
503
|
-
recovery: z.ZodObject<{
|
|
504
|
-
retries: z.ZodNumber;
|
|
505
|
-
useSelectorMemory: z.ZodBoolean;
|
|
506
|
-
useAltInteraction: z.ZodBoolean;
|
|
507
|
-
allowReload: z.ZodBoolean;
|
|
508
|
-
allowHealer: z.ZodBoolean;
|
|
509
|
-
}, z.core.$strict>;
|
|
510
|
-
timeoutMs: z.ZodNumber;
|
|
511
|
-
maxFailures: z.ZodNumber;
|
|
512
|
-
kind: z.ZodLiteral<"CAPTURE_DOM">;
|
|
513
|
-
}, z.core.$strict>, z.ZodObject<{
|
|
514
|
-
fragmentName: z.ZodString;
|
|
515
|
-
variantName: z.ZodOptional<z.ZodString>;
|
|
516
|
-
parentState: z.ZodString;
|
|
517
|
-
selector: z.ZodString;
|
|
518
|
-
triggerSelector: z.ZodOptional<z.ZodString>;
|
|
519
|
-
mountStrategy: z.ZodOptional<z.ZodString>;
|
|
520
|
-
mountTargetSelector: z.ZodOptional<z.ZodString>;
|
|
521
|
-
description: z.ZodString;
|
|
522
|
-
postcondition: z.ZodObject<{
|
|
523
|
-
type: z.ZodEnum<{
|
|
524
|
-
route_matches: "route_matches";
|
|
525
|
-
element_visible: "element_visible";
|
|
526
|
-
element_absent: "element_absent";
|
|
527
|
-
text_contains: "text_contains";
|
|
528
|
-
overlay_dismissed: "overlay_dismissed";
|
|
529
|
-
screenshot_stable: "screenshot_stable";
|
|
530
|
-
any_change: "any_change";
|
|
531
|
-
always: "always";
|
|
532
|
-
}>;
|
|
533
|
-
pattern: z.ZodOptional<z.ZodString>;
|
|
534
|
-
selector: z.ZodOptional<z.ZodString>;
|
|
535
|
-
text: z.ZodOptional<z.ZodString>;
|
|
536
|
-
threshold: z.ZodOptional<z.ZodNumber>;
|
|
537
|
-
waitMs: z.ZodOptional<z.ZodNumber>;
|
|
538
|
-
}, z.core.$strict>;
|
|
539
|
-
recovery: z.ZodObject<{
|
|
540
|
-
retries: z.ZodNumber;
|
|
541
|
-
useSelectorMemory: z.ZodBoolean;
|
|
542
|
-
useAltInteraction: z.ZodBoolean;
|
|
543
|
-
allowReload: z.ZodBoolean;
|
|
544
|
-
allowHealer: z.ZodBoolean;
|
|
545
|
-
}, z.core.$strict>;
|
|
546
|
-
timeoutMs: z.ZodNumber;
|
|
547
|
-
maxFailures: z.ZodNumber;
|
|
548
|
-
kind: z.ZodLiteral<"CAPTURE_FRAGMENT">;
|
|
549
482
|
}, z.core.$strict>, z.ZodObject<{
|
|
550
483
|
clipId: z.ZodOptional<z.ZodString>;
|
|
551
484
|
clipName: z.ZodOptional<z.ZodString>;
|
|
@@ -995,6 +928,56 @@ export declare const VariantSpecSchema: z.ZodObject<{
|
|
|
995
928
|
targetId: z.ZodOptional<z.ZodString>;
|
|
996
929
|
targetLabel: z.ZodOptional<z.ZodString>;
|
|
997
930
|
deviceFrame: z.ZodOptional<z.ZodString>;
|
|
931
|
+
mockupOptions: z.ZodOptional<z.ZodObject<{
|
|
932
|
+
orientation: z.ZodOptional<z.ZodEnum<{
|
|
933
|
+
portrait: "portrait";
|
|
934
|
+
landscape: "landscape";
|
|
935
|
+
}>>;
|
|
936
|
+
outputScale: z.ZodOptional<z.ZodNumber>;
|
|
937
|
+
showStatusBar: z.ZodOptional<z.ZodBoolean>;
|
|
938
|
+
showSafeAreaTop: z.ZodOptional<z.ZodBoolean>;
|
|
939
|
+
showSafeAreaBottom: z.ZodOptional<z.ZodBoolean>;
|
|
940
|
+
showSafeAreaLeft: z.ZodOptional<z.ZodBoolean>;
|
|
941
|
+
showSafeAreaRight: z.ZodOptional<z.ZodBoolean>;
|
|
942
|
+
showHomeIndicator: z.ZodOptional<z.ZodBoolean>;
|
|
943
|
+
safeAreaTopColor: z.ZodOptional<z.ZodString>;
|
|
944
|
+
safeAreaBottomColor: z.ZodOptional<z.ZodString>;
|
|
945
|
+
safeAreaLeftColor: z.ZodOptional<z.ZodString>;
|
|
946
|
+
safeAreaRightColor: z.ZodOptional<z.ZodString>;
|
|
947
|
+
statusBar: z.ZodOptional<z.ZodObject<{
|
|
948
|
+
time: z.ZodOptional<z.ZodString>;
|
|
949
|
+
date: z.ZodOptional<z.ZodString>;
|
|
950
|
+
menuBarApp: z.ZodOptional<z.ZodString>;
|
|
951
|
+
menuBarItems: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
952
|
+
signalStrength: z.ZodOptional<z.ZodNumber>;
|
|
953
|
+
showNetworkType: z.ZodOptional<z.ZodBoolean>;
|
|
954
|
+
networkType: z.ZodOptional<z.ZodString>;
|
|
955
|
+
wifiStrength: z.ZodOptional<z.ZodNumber>;
|
|
956
|
+
batteryLevel: z.ZodOptional<z.ZodNumber>;
|
|
957
|
+
batteryCharging: z.ZodOptional<z.ZodBoolean>;
|
|
958
|
+
showBatteryPercentage: z.ZodOptional<z.ZodBoolean>;
|
|
959
|
+
colorScheme: z.ZodOptional<z.ZodEnum<{
|
|
960
|
+
light: "light";
|
|
961
|
+
dark: "dark";
|
|
962
|
+
}>>;
|
|
963
|
+
carrierName: z.ZodOptional<z.ZodString>;
|
|
964
|
+
autoLocale: z.ZodOptional<z.ZodBoolean>;
|
|
965
|
+
}, z.core.$strict>>;
|
|
966
|
+
browserBar: z.ZodOptional<z.ZodObject<{
|
|
967
|
+
url: z.ZodOptional<z.ZodString>;
|
|
968
|
+
pageTitle: z.ZodOptional<z.ZodString>;
|
|
969
|
+
tabIconUrl: z.ZodOptional<z.ZodString>;
|
|
970
|
+
}, z.core.$strict>>;
|
|
971
|
+
windowBorder: z.ZodOptional<z.ZodObject<{
|
|
972
|
+
color: z.ZodString;
|
|
973
|
+
width: z.ZodNumber;
|
|
974
|
+
radius: z.ZodNumber;
|
|
975
|
+
}, z.core.$strict>>;
|
|
976
|
+
colorScheme: z.ZodOptional<z.ZodEnum<{
|
|
977
|
+
light: "light";
|
|
978
|
+
dark: "dark";
|
|
979
|
+
}>>;
|
|
980
|
+
}, z.core.$strict>>;
|
|
998
981
|
}, z.core.$strict>;
|
|
999
982
|
export declare const PreconditionSpecSchema: z.ZodObject<{
|
|
1000
983
|
credentialsId: z.ZodOptional<z.ZodString>;
|
|
@@ -1038,7 +1021,6 @@ export declare const ArtifactSpecSchema: z.ZodObject<{
|
|
|
1038
1021
|
mediaMode: z.ZodEnum<{
|
|
1039
1022
|
clip: "clip";
|
|
1040
1023
|
screenshot: "screenshot";
|
|
1041
|
-
dom: "dom";
|
|
1042
1024
|
}>;
|
|
1043
1025
|
format: z.ZodOptional<z.ZodObject<{
|
|
1044
1026
|
clipFormat: z.ZodOptional<z.ZodEnum<{
|
|
@@ -1059,9 +1041,6 @@ export declare const ArtifactSpecSchema: z.ZodObject<{
|
|
|
1059
1041
|
maxClipDurationSec: z.ZodOptional<z.ZodNumber>;
|
|
1060
1042
|
applyMockup: z.ZodOptional<z.ZodBoolean>;
|
|
1061
1043
|
applyStatusBar: z.ZodOptional<z.ZodBoolean>;
|
|
1062
|
-
domOptions: z.ZodOptional<z.ZodObject<{
|
|
1063
|
-
sanitize: z.ZodOptional<z.ZodBoolean>;
|
|
1064
|
-
}, z.core.$strict>>;
|
|
1065
1044
|
}, z.core.$strict>;
|
|
1066
1045
|
export declare const ExecutionProgramSchema: z.ZodObject<{
|
|
1067
1046
|
presetId: z.ZodString;
|
|
@@ -1069,7 +1048,6 @@ export declare const ExecutionProgramSchema: z.ZodObject<{
|
|
|
1069
1048
|
mediaMode: z.ZodEnum<{
|
|
1070
1049
|
clip: "clip";
|
|
1071
1050
|
screenshot: "screenshot";
|
|
1072
|
-
dom: "dom";
|
|
1073
1051
|
}>;
|
|
1074
1052
|
baseUrl: z.ZodString;
|
|
1075
1053
|
maxParallelCaptures: z.ZodOptional<z.ZodNumber>;
|
|
@@ -1088,6 +1066,56 @@ export declare const ExecutionProgramSchema: z.ZodObject<{
|
|
|
1088
1066
|
targetId: z.ZodOptional<z.ZodString>;
|
|
1089
1067
|
targetLabel: z.ZodOptional<z.ZodString>;
|
|
1090
1068
|
deviceFrame: z.ZodOptional<z.ZodString>;
|
|
1069
|
+
mockupOptions: z.ZodOptional<z.ZodObject<{
|
|
1070
|
+
orientation: z.ZodOptional<z.ZodEnum<{
|
|
1071
|
+
portrait: "portrait";
|
|
1072
|
+
landscape: "landscape";
|
|
1073
|
+
}>>;
|
|
1074
|
+
outputScale: z.ZodOptional<z.ZodNumber>;
|
|
1075
|
+
showStatusBar: z.ZodOptional<z.ZodBoolean>;
|
|
1076
|
+
showSafeAreaTop: z.ZodOptional<z.ZodBoolean>;
|
|
1077
|
+
showSafeAreaBottom: z.ZodOptional<z.ZodBoolean>;
|
|
1078
|
+
showSafeAreaLeft: z.ZodOptional<z.ZodBoolean>;
|
|
1079
|
+
showSafeAreaRight: z.ZodOptional<z.ZodBoolean>;
|
|
1080
|
+
showHomeIndicator: z.ZodOptional<z.ZodBoolean>;
|
|
1081
|
+
safeAreaTopColor: z.ZodOptional<z.ZodString>;
|
|
1082
|
+
safeAreaBottomColor: z.ZodOptional<z.ZodString>;
|
|
1083
|
+
safeAreaLeftColor: z.ZodOptional<z.ZodString>;
|
|
1084
|
+
safeAreaRightColor: z.ZodOptional<z.ZodString>;
|
|
1085
|
+
statusBar: z.ZodOptional<z.ZodObject<{
|
|
1086
|
+
time: z.ZodOptional<z.ZodString>;
|
|
1087
|
+
date: z.ZodOptional<z.ZodString>;
|
|
1088
|
+
menuBarApp: z.ZodOptional<z.ZodString>;
|
|
1089
|
+
menuBarItems: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
1090
|
+
signalStrength: z.ZodOptional<z.ZodNumber>;
|
|
1091
|
+
showNetworkType: z.ZodOptional<z.ZodBoolean>;
|
|
1092
|
+
networkType: z.ZodOptional<z.ZodString>;
|
|
1093
|
+
wifiStrength: z.ZodOptional<z.ZodNumber>;
|
|
1094
|
+
batteryLevel: z.ZodOptional<z.ZodNumber>;
|
|
1095
|
+
batteryCharging: z.ZodOptional<z.ZodBoolean>;
|
|
1096
|
+
showBatteryPercentage: z.ZodOptional<z.ZodBoolean>;
|
|
1097
|
+
colorScheme: z.ZodOptional<z.ZodEnum<{
|
|
1098
|
+
light: "light";
|
|
1099
|
+
dark: "dark";
|
|
1100
|
+
}>>;
|
|
1101
|
+
carrierName: z.ZodOptional<z.ZodString>;
|
|
1102
|
+
autoLocale: z.ZodOptional<z.ZodBoolean>;
|
|
1103
|
+
}, z.core.$strict>>;
|
|
1104
|
+
browserBar: z.ZodOptional<z.ZodObject<{
|
|
1105
|
+
url: z.ZodOptional<z.ZodString>;
|
|
1106
|
+
pageTitle: z.ZodOptional<z.ZodString>;
|
|
1107
|
+
tabIconUrl: z.ZodOptional<z.ZodString>;
|
|
1108
|
+
}, z.core.$strict>>;
|
|
1109
|
+
windowBorder: z.ZodOptional<z.ZodObject<{
|
|
1110
|
+
color: z.ZodString;
|
|
1111
|
+
width: z.ZodNumber;
|
|
1112
|
+
radius: z.ZodNumber;
|
|
1113
|
+
}, z.core.$strict>>;
|
|
1114
|
+
colorScheme: z.ZodOptional<z.ZodEnum<{
|
|
1115
|
+
light: "light";
|
|
1116
|
+
dark: "dark";
|
|
1117
|
+
}>>;
|
|
1118
|
+
}, z.core.$strict>>;
|
|
1091
1119
|
}, z.core.$strict>>;
|
|
1092
1120
|
preconditions: z.ZodObject<{
|
|
1093
1121
|
credentialsId: z.ZodOptional<z.ZodString>;
|
|
@@ -1577,73 +1605,6 @@ export declare const ExecutionProgramSchema: z.ZodObject<{
|
|
|
1577
1605
|
timeoutMs: z.ZodNumber;
|
|
1578
1606
|
maxFailures: z.ZodNumber;
|
|
1579
1607
|
kind: z.ZodLiteral<"CAPTURE_SCREENSHOT">;
|
|
1580
|
-
}, z.core.$strict>, z.ZodObject<{
|
|
1581
|
-
stateName: z.ZodString;
|
|
1582
|
-
selector: z.ZodOptional<z.ZodString>;
|
|
1583
|
-
description: z.ZodString;
|
|
1584
|
-
postcondition: z.ZodObject<{
|
|
1585
|
-
type: z.ZodEnum<{
|
|
1586
|
-
route_matches: "route_matches";
|
|
1587
|
-
element_visible: "element_visible";
|
|
1588
|
-
element_absent: "element_absent";
|
|
1589
|
-
text_contains: "text_contains";
|
|
1590
|
-
overlay_dismissed: "overlay_dismissed";
|
|
1591
|
-
screenshot_stable: "screenshot_stable";
|
|
1592
|
-
any_change: "any_change";
|
|
1593
|
-
always: "always";
|
|
1594
|
-
}>;
|
|
1595
|
-
pattern: z.ZodOptional<z.ZodString>;
|
|
1596
|
-
selector: z.ZodOptional<z.ZodString>;
|
|
1597
|
-
text: z.ZodOptional<z.ZodString>;
|
|
1598
|
-
threshold: z.ZodOptional<z.ZodNumber>;
|
|
1599
|
-
waitMs: z.ZodOptional<z.ZodNumber>;
|
|
1600
|
-
}, z.core.$strict>;
|
|
1601
|
-
recovery: z.ZodObject<{
|
|
1602
|
-
retries: z.ZodNumber;
|
|
1603
|
-
useSelectorMemory: z.ZodBoolean;
|
|
1604
|
-
useAltInteraction: z.ZodBoolean;
|
|
1605
|
-
allowReload: z.ZodBoolean;
|
|
1606
|
-
allowHealer: z.ZodBoolean;
|
|
1607
|
-
}, z.core.$strict>;
|
|
1608
|
-
timeoutMs: z.ZodNumber;
|
|
1609
|
-
maxFailures: z.ZodNumber;
|
|
1610
|
-
kind: z.ZodLiteral<"CAPTURE_DOM">;
|
|
1611
|
-
}, z.core.$strict>, z.ZodObject<{
|
|
1612
|
-
fragmentName: z.ZodString;
|
|
1613
|
-
variantName: z.ZodOptional<z.ZodString>;
|
|
1614
|
-
parentState: z.ZodString;
|
|
1615
|
-
selector: z.ZodString;
|
|
1616
|
-
triggerSelector: z.ZodOptional<z.ZodString>;
|
|
1617
|
-
mountStrategy: z.ZodOptional<z.ZodString>;
|
|
1618
|
-
mountTargetSelector: z.ZodOptional<z.ZodString>;
|
|
1619
|
-
description: z.ZodString;
|
|
1620
|
-
postcondition: z.ZodObject<{
|
|
1621
|
-
type: z.ZodEnum<{
|
|
1622
|
-
route_matches: "route_matches";
|
|
1623
|
-
element_visible: "element_visible";
|
|
1624
|
-
element_absent: "element_absent";
|
|
1625
|
-
text_contains: "text_contains";
|
|
1626
|
-
overlay_dismissed: "overlay_dismissed";
|
|
1627
|
-
screenshot_stable: "screenshot_stable";
|
|
1628
|
-
any_change: "any_change";
|
|
1629
|
-
always: "always";
|
|
1630
|
-
}>;
|
|
1631
|
-
pattern: z.ZodOptional<z.ZodString>;
|
|
1632
|
-
selector: z.ZodOptional<z.ZodString>;
|
|
1633
|
-
text: z.ZodOptional<z.ZodString>;
|
|
1634
|
-
threshold: z.ZodOptional<z.ZodNumber>;
|
|
1635
|
-
waitMs: z.ZodOptional<z.ZodNumber>;
|
|
1636
|
-
}, z.core.$strict>;
|
|
1637
|
-
recovery: z.ZodObject<{
|
|
1638
|
-
retries: z.ZodNumber;
|
|
1639
|
-
useSelectorMemory: z.ZodBoolean;
|
|
1640
|
-
useAltInteraction: z.ZodBoolean;
|
|
1641
|
-
allowReload: z.ZodBoolean;
|
|
1642
|
-
allowHealer: z.ZodBoolean;
|
|
1643
|
-
}, z.core.$strict>;
|
|
1644
|
-
timeoutMs: z.ZodNumber;
|
|
1645
|
-
maxFailures: z.ZodNumber;
|
|
1646
|
-
kind: z.ZodLiteral<"CAPTURE_FRAGMENT">;
|
|
1647
1608
|
}, z.core.$strict>, z.ZodObject<{
|
|
1648
1609
|
clipId: z.ZodOptional<z.ZodString>;
|
|
1649
1610
|
clipName: z.ZodOptional<z.ZodString>;
|
|
@@ -2065,7 +2026,6 @@ export declare const ExecutionProgramSchema: z.ZodObject<{
|
|
|
2065
2026
|
mediaMode: z.ZodEnum<{
|
|
2066
2027
|
clip: "clip";
|
|
2067
2028
|
screenshot: "screenshot";
|
|
2068
|
-
dom: "dom";
|
|
2069
2029
|
}>;
|
|
2070
2030
|
format: z.ZodOptional<z.ZodObject<{
|
|
2071
2031
|
clipFormat: z.ZodOptional<z.ZodEnum<{
|
|
@@ -2086,9 +2046,6 @@ export declare const ExecutionProgramSchema: z.ZodObject<{
|
|
|
2086
2046
|
maxClipDurationSec: z.ZodOptional<z.ZodNumber>;
|
|
2087
2047
|
applyMockup: z.ZodOptional<z.ZodBoolean>;
|
|
2088
2048
|
applyStatusBar: z.ZodOptional<z.ZodBoolean>;
|
|
2089
|
-
domOptions: z.ZodOptional<z.ZodObject<{
|
|
2090
|
-
sanitize: z.ZodOptional<z.ZodBoolean>;
|
|
2091
|
-
}, z.core.$strict>>;
|
|
2092
2049
|
}, z.core.$strict>;
|
|
2093
2050
|
outputScale: z.ZodOptional<z.ZodNumber>;
|
|
2094
2051
|
compileFingerprint: z.ZodString;
|
|
@@ -2559,73 +2516,6 @@ export declare const HealerPatchSchema: z.ZodObject<{
|
|
|
2559
2516
|
timeoutMs: z.ZodNumber;
|
|
2560
2517
|
maxFailures: z.ZodNumber;
|
|
2561
2518
|
kind: z.ZodLiteral<"CAPTURE_SCREENSHOT">;
|
|
2562
|
-
}, z.core.$strict>, z.ZodObject<{
|
|
2563
|
-
stateName: z.ZodString;
|
|
2564
|
-
selector: z.ZodOptional<z.ZodString>;
|
|
2565
|
-
description: z.ZodString;
|
|
2566
|
-
postcondition: z.ZodObject<{
|
|
2567
|
-
type: z.ZodEnum<{
|
|
2568
|
-
route_matches: "route_matches";
|
|
2569
|
-
element_visible: "element_visible";
|
|
2570
|
-
element_absent: "element_absent";
|
|
2571
|
-
text_contains: "text_contains";
|
|
2572
|
-
overlay_dismissed: "overlay_dismissed";
|
|
2573
|
-
screenshot_stable: "screenshot_stable";
|
|
2574
|
-
any_change: "any_change";
|
|
2575
|
-
always: "always";
|
|
2576
|
-
}>;
|
|
2577
|
-
pattern: z.ZodOptional<z.ZodString>;
|
|
2578
|
-
selector: z.ZodOptional<z.ZodString>;
|
|
2579
|
-
text: z.ZodOptional<z.ZodString>;
|
|
2580
|
-
threshold: z.ZodOptional<z.ZodNumber>;
|
|
2581
|
-
waitMs: z.ZodOptional<z.ZodNumber>;
|
|
2582
|
-
}, z.core.$strict>;
|
|
2583
|
-
recovery: z.ZodObject<{
|
|
2584
|
-
retries: z.ZodNumber;
|
|
2585
|
-
useSelectorMemory: z.ZodBoolean;
|
|
2586
|
-
useAltInteraction: z.ZodBoolean;
|
|
2587
|
-
allowReload: z.ZodBoolean;
|
|
2588
|
-
allowHealer: z.ZodBoolean;
|
|
2589
|
-
}, z.core.$strict>;
|
|
2590
|
-
timeoutMs: z.ZodNumber;
|
|
2591
|
-
maxFailures: z.ZodNumber;
|
|
2592
|
-
kind: z.ZodLiteral<"CAPTURE_DOM">;
|
|
2593
|
-
}, z.core.$strict>, z.ZodObject<{
|
|
2594
|
-
fragmentName: z.ZodString;
|
|
2595
|
-
variantName: z.ZodOptional<z.ZodString>;
|
|
2596
|
-
parentState: z.ZodString;
|
|
2597
|
-
selector: z.ZodString;
|
|
2598
|
-
triggerSelector: z.ZodOptional<z.ZodString>;
|
|
2599
|
-
mountStrategy: z.ZodOptional<z.ZodString>;
|
|
2600
|
-
mountTargetSelector: z.ZodOptional<z.ZodString>;
|
|
2601
|
-
description: z.ZodString;
|
|
2602
|
-
postcondition: z.ZodObject<{
|
|
2603
|
-
type: z.ZodEnum<{
|
|
2604
|
-
route_matches: "route_matches";
|
|
2605
|
-
element_visible: "element_visible";
|
|
2606
|
-
element_absent: "element_absent";
|
|
2607
|
-
text_contains: "text_contains";
|
|
2608
|
-
overlay_dismissed: "overlay_dismissed";
|
|
2609
|
-
screenshot_stable: "screenshot_stable";
|
|
2610
|
-
any_change: "any_change";
|
|
2611
|
-
always: "always";
|
|
2612
|
-
}>;
|
|
2613
|
-
pattern: z.ZodOptional<z.ZodString>;
|
|
2614
|
-
selector: z.ZodOptional<z.ZodString>;
|
|
2615
|
-
text: z.ZodOptional<z.ZodString>;
|
|
2616
|
-
threshold: z.ZodOptional<z.ZodNumber>;
|
|
2617
|
-
waitMs: z.ZodOptional<z.ZodNumber>;
|
|
2618
|
-
}, z.core.$strict>;
|
|
2619
|
-
recovery: z.ZodObject<{
|
|
2620
|
-
retries: z.ZodNumber;
|
|
2621
|
-
useSelectorMemory: z.ZodBoolean;
|
|
2622
|
-
useAltInteraction: z.ZodBoolean;
|
|
2623
|
-
allowReload: z.ZodBoolean;
|
|
2624
|
-
allowHealer: z.ZodBoolean;
|
|
2625
|
-
}, z.core.$strict>;
|
|
2626
|
-
timeoutMs: z.ZodNumber;
|
|
2627
|
-
maxFailures: z.ZodNumber;
|
|
2628
|
-
kind: z.ZodLiteral<"CAPTURE_FRAGMENT">;
|
|
2629
2519
|
}, z.core.$strict>, z.ZodObject<{
|
|
2630
2520
|
clipId: z.ZodOptional<z.ZodString>;
|
|
2631
2521
|
clipName: z.ZodOptional<z.ZodString>;
|
|
@@ -3493,73 +3383,6 @@ export declare const HealerPatchSchema: z.ZodObject<{
|
|
|
3493
3383
|
timeoutMs: z.ZodNumber;
|
|
3494
3384
|
maxFailures: z.ZodNumber;
|
|
3495
3385
|
kind: z.ZodLiteral<"CAPTURE_SCREENSHOT">;
|
|
3496
|
-
}, z.core.$strict>, z.ZodObject<{
|
|
3497
|
-
stateName: z.ZodString;
|
|
3498
|
-
selector: z.ZodOptional<z.ZodString>;
|
|
3499
|
-
description: z.ZodString;
|
|
3500
|
-
postcondition: z.ZodObject<{
|
|
3501
|
-
type: z.ZodEnum<{
|
|
3502
|
-
route_matches: "route_matches";
|
|
3503
|
-
element_visible: "element_visible";
|
|
3504
|
-
element_absent: "element_absent";
|
|
3505
|
-
text_contains: "text_contains";
|
|
3506
|
-
overlay_dismissed: "overlay_dismissed";
|
|
3507
|
-
screenshot_stable: "screenshot_stable";
|
|
3508
|
-
any_change: "any_change";
|
|
3509
|
-
always: "always";
|
|
3510
|
-
}>;
|
|
3511
|
-
pattern: z.ZodOptional<z.ZodString>;
|
|
3512
|
-
selector: z.ZodOptional<z.ZodString>;
|
|
3513
|
-
text: z.ZodOptional<z.ZodString>;
|
|
3514
|
-
threshold: z.ZodOptional<z.ZodNumber>;
|
|
3515
|
-
waitMs: z.ZodOptional<z.ZodNumber>;
|
|
3516
|
-
}, z.core.$strict>;
|
|
3517
|
-
recovery: z.ZodObject<{
|
|
3518
|
-
retries: z.ZodNumber;
|
|
3519
|
-
useSelectorMemory: z.ZodBoolean;
|
|
3520
|
-
useAltInteraction: z.ZodBoolean;
|
|
3521
|
-
allowReload: z.ZodBoolean;
|
|
3522
|
-
allowHealer: z.ZodBoolean;
|
|
3523
|
-
}, z.core.$strict>;
|
|
3524
|
-
timeoutMs: z.ZodNumber;
|
|
3525
|
-
maxFailures: z.ZodNumber;
|
|
3526
|
-
kind: z.ZodLiteral<"CAPTURE_DOM">;
|
|
3527
|
-
}, z.core.$strict>, z.ZodObject<{
|
|
3528
|
-
fragmentName: z.ZodString;
|
|
3529
|
-
variantName: z.ZodOptional<z.ZodString>;
|
|
3530
|
-
parentState: z.ZodString;
|
|
3531
|
-
selector: z.ZodString;
|
|
3532
|
-
triggerSelector: z.ZodOptional<z.ZodString>;
|
|
3533
|
-
mountStrategy: z.ZodOptional<z.ZodString>;
|
|
3534
|
-
mountTargetSelector: z.ZodOptional<z.ZodString>;
|
|
3535
|
-
description: z.ZodString;
|
|
3536
|
-
postcondition: z.ZodObject<{
|
|
3537
|
-
type: z.ZodEnum<{
|
|
3538
|
-
route_matches: "route_matches";
|
|
3539
|
-
element_visible: "element_visible";
|
|
3540
|
-
element_absent: "element_absent";
|
|
3541
|
-
text_contains: "text_contains";
|
|
3542
|
-
overlay_dismissed: "overlay_dismissed";
|
|
3543
|
-
screenshot_stable: "screenshot_stable";
|
|
3544
|
-
any_change: "any_change";
|
|
3545
|
-
always: "always";
|
|
3546
|
-
}>;
|
|
3547
|
-
pattern: z.ZodOptional<z.ZodString>;
|
|
3548
|
-
selector: z.ZodOptional<z.ZodString>;
|
|
3549
|
-
text: z.ZodOptional<z.ZodString>;
|
|
3550
|
-
threshold: z.ZodOptional<z.ZodNumber>;
|
|
3551
|
-
waitMs: z.ZodOptional<z.ZodNumber>;
|
|
3552
|
-
}, z.core.$strict>;
|
|
3553
|
-
recovery: z.ZodObject<{
|
|
3554
|
-
retries: z.ZodNumber;
|
|
3555
|
-
useSelectorMemory: z.ZodBoolean;
|
|
3556
|
-
useAltInteraction: z.ZodBoolean;
|
|
3557
|
-
allowReload: z.ZodBoolean;
|
|
3558
|
-
allowHealer: z.ZodBoolean;
|
|
3559
|
-
}, z.core.$strict>;
|
|
3560
|
-
timeoutMs: z.ZodNumber;
|
|
3561
|
-
maxFailures: z.ZodNumber;
|
|
3562
|
-
kind: z.ZodLiteral<"CAPTURE_FRAGMENT">;
|
|
3563
3386
|
}, z.core.$strict>, z.ZodObject<{
|
|
3564
3387
|
clipId: z.ZodOptional<z.ZodString>;
|
|
3565
3388
|
clipName: z.ZodOptional<z.ZodString>;
|
|
@@ -3992,7 +3815,7 @@ export declare function parseOpcode(data: unknown): ExecutionOpcode;
|
|
|
3992
3815
|
export declare function safeParseProgramResult(data: unknown): z.ZodSafeParseResult<{
|
|
3993
3816
|
presetId: string;
|
|
3994
3817
|
programVersion: number;
|
|
3995
|
-
mediaMode: "clip" | "screenshot"
|
|
3818
|
+
mediaMode: "clip" | "screenshot";
|
|
3996
3819
|
baseUrl: string;
|
|
3997
3820
|
variants: {
|
|
3998
3821
|
id: string;
|
|
@@ -4006,6 +3829,47 @@ export declare function safeParseProgramResult(data: unknown): z.ZodSafeParseRes
|
|
|
4006
3829
|
targetId?: string | undefined;
|
|
4007
3830
|
targetLabel?: string | undefined;
|
|
4008
3831
|
deviceFrame?: string | undefined;
|
|
3832
|
+
mockupOptions?: {
|
|
3833
|
+
orientation?: "portrait" | "landscape" | undefined;
|
|
3834
|
+
outputScale?: number | undefined;
|
|
3835
|
+
showStatusBar?: boolean | undefined;
|
|
3836
|
+
showSafeAreaTop?: boolean | undefined;
|
|
3837
|
+
showSafeAreaBottom?: boolean | undefined;
|
|
3838
|
+
showSafeAreaLeft?: boolean | undefined;
|
|
3839
|
+
showSafeAreaRight?: boolean | undefined;
|
|
3840
|
+
showHomeIndicator?: boolean | undefined;
|
|
3841
|
+
safeAreaTopColor?: string | undefined;
|
|
3842
|
+
safeAreaBottomColor?: string | undefined;
|
|
3843
|
+
safeAreaLeftColor?: string | undefined;
|
|
3844
|
+
safeAreaRightColor?: string | undefined;
|
|
3845
|
+
statusBar?: {
|
|
3846
|
+
time?: string | undefined;
|
|
3847
|
+
date?: string | undefined;
|
|
3848
|
+
menuBarApp?: string | undefined;
|
|
3849
|
+
menuBarItems?: string[] | undefined;
|
|
3850
|
+
signalStrength?: number | undefined;
|
|
3851
|
+
showNetworkType?: boolean | undefined;
|
|
3852
|
+
networkType?: string | undefined;
|
|
3853
|
+
wifiStrength?: number | undefined;
|
|
3854
|
+
batteryLevel?: number | undefined;
|
|
3855
|
+
batteryCharging?: boolean | undefined;
|
|
3856
|
+
showBatteryPercentage?: boolean | undefined;
|
|
3857
|
+
colorScheme?: "light" | "dark" | undefined;
|
|
3858
|
+
carrierName?: string | undefined;
|
|
3859
|
+
autoLocale?: boolean | undefined;
|
|
3860
|
+
} | undefined;
|
|
3861
|
+
browserBar?: {
|
|
3862
|
+
url?: string | undefined;
|
|
3863
|
+
pageTitle?: string | undefined;
|
|
3864
|
+
tabIconUrl?: string | undefined;
|
|
3865
|
+
} | undefined;
|
|
3866
|
+
windowBorder?: {
|
|
3867
|
+
color: string;
|
|
3868
|
+
width: number;
|
|
3869
|
+
radius: number;
|
|
3870
|
+
} | undefined;
|
|
3871
|
+
colorScheme?: "light" | "dark" | undefined;
|
|
3872
|
+
} | undefined;
|
|
4009
3873
|
}[];
|
|
4010
3874
|
preconditions: {
|
|
4011
3875
|
credentialsId?: string | undefined;
|
|
@@ -4463,55 +4327,6 @@ export declare function safeParseProgramResult(data: unknown): z.ZodSafeParseRes
|
|
|
4463
4327
|
captureId?: string | undefined;
|
|
4464
4328
|
captureName?: string | undefined;
|
|
4465
4329
|
elementSelector?: string | undefined;
|
|
4466
|
-
} | {
|
|
4467
|
-
stateName: string;
|
|
4468
|
-
description: string;
|
|
4469
|
-
postcondition: {
|
|
4470
|
-
type: "route_matches" | "element_visible" | "element_absent" | "text_contains" | "overlay_dismissed" | "screenshot_stable" | "any_change" | "always";
|
|
4471
|
-
pattern?: string | undefined;
|
|
4472
|
-
selector?: string | undefined;
|
|
4473
|
-
text?: string | undefined;
|
|
4474
|
-
threshold?: number | undefined;
|
|
4475
|
-
waitMs?: number | undefined;
|
|
4476
|
-
};
|
|
4477
|
-
recovery: {
|
|
4478
|
-
retries: number;
|
|
4479
|
-
useSelectorMemory: boolean;
|
|
4480
|
-
useAltInteraction: boolean;
|
|
4481
|
-
allowReload: boolean;
|
|
4482
|
-
allowHealer: boolean;
|
|
4483
|
-
};
|
|
4484
|
-
timeoutMs: number;
|
|
4485
|
-
maxFailures: number;
|
|
4486
|
-
kind: "CAPTURE_DOM";
|
|
4487
|
-
selector?: string | undefined;
|
|
4488
|
-
} | {
|
|
4489
|
-
fragmentName: string;
|
|
4490
|
-
parentState: string;
|
|
4491
|
-
selector: string;
|
|
4492
|
-
description: string;
|
|
4493
|
-
postcondition: {
|
|
4494
|
-
type: "route_matches" | "element_visible" | "element_absent" | "text_contains" | "overlay_dismissed" | "screenshot_stable" | "any_change" | "always";
|
|
4495
|
-
pattern?: string | undefined;
|
|
4496
|
-
selector?: string | undefined;
|
|
4497
|
-
text?: string | undefined;
|
|
4498
|
-
threshold?: number | undefined;
|
|
4499
|
-
waitMs?: number | undefined;
|
|
4500
|
-
};
|
|
4501
|
-
recovery: {
|
|
4502
|
-
retries: number;
|
|
4503
|
-
useSelectorMemory: boolean;
|
|
4504
|
-
useAltInteraction: boolean;
|
|
4505
|
-
allowReload: boolean;
|
|
4506
|
-
allowHealer: boolean;
|
|
4507
|
-
};
|
|
4508
|
-
timeoutMs: number;
|
|
4509
|
-
maxFailures: number;
|
|
4510
|
-
kind: "CAPTURE_FRAGMENT";
|
|
4511
|
-
variantName?: string | undefined;
|
|
4512
|
-
triggerSelector?: string | undefined;
|
|
4513
|
-
mountStrategy?: string | undefined;
|
|
4514
|
-
mountTargetSelector?: string | undefined;
|
|
4515
4330
|
} | {
|
|
4516
4331
|
description: string;
|
|
4517
4332
|
postcondition: {
|
|
@@ -4720,7 +4535,7 @@ export declare function safeParseProgramResult(data: unknown): z.ZodSafeParseRes
|
|
|
4720
4535
|
kind: "SET_ATTRIBUTE";
|
|
4721
4536
|
})[];
|
|
4722
4537
|
artifactPlan: {
|
|
4723
|
-
mediaMode: "clip" | "screenshot"
|
|
4538
|
+
mediaMode: "clip" | "screenshot";
|
|
4724
4539
|
format?: {
|
|
4725
4540
|
clipFormat?: "gif" | "mp4" | "both" | undefined;
|
|
4726
4541
|
screenshotFormat?: "png" | "jpeg" | undefined;
|
|
@@ -4729,9 +4544,6 @@ export declare function safeParseProgramResult(data: unknown): z.ZodSafeParseRes
|
|
|
4729
4544
|
maxClipDurationSec?: number | undefined;
|
|
4730
4545
|
applyMockup?: boolean | undefined;
|
|
4731
4546
|
applyStatusBar?: boolean | undefined;
|
|
4732
|
-
domOptions?: {
|
|
4733
|
-
sanitize?: boolean | undefined;
|
|
4734
|
-
} | undefined;
|
|
4735
4547
|
};
|
|
4736
4548
|
compileFingerprint: string;
|
|
4737
4549
|
compiledAt: string;
|
package/dist/execution-schema.js
CHANGED
|
@@ -211,27 +211,6 @@ const CaptureScreenshotOpcodeSchema = z.object({
|
|
|
211
211
|
captureName: z.string().optional(),
|
|
212
212
|
elementSelector: z.string().optional(),
|
|
213
213
|
}).strict();
|
|
214
|
-
const CaptureDomOpcodeSchema = z.object({
|
|
215
|
-
kind: z.literal('CAPTURE_DOM'),
|
|
216
|
-
...opcodeBase,
|
|
217
|
-
stateName: z.string().min(1).regex(/^[a-z0-9][a-z0-9-]*$/, 'stateName must be kebab-case'),
|
|
218
|
-
selector: z.string().min(1).optional(),
|
|
219
|
-
}).strict();
|
|
220
|
-
const CaptureFragmentOpcodeSchema = z.object({
|
|
221
|
-
kind: z.literal('CAPTURE_FRAGMENT'),
|
|
222
|
-
...opcodeBase,
|
|
223
|
-
fragmentName: z.string().min(1).regex(/^[a-z0-9][a-z0-9-]*$/, 'fragmentName must be kebab-case'),
|
|
224
|
-
// Variants let the same fragment be captured in multiple states (e.g.
|
|
225
|
-
// default / purple-bg / text-bottom). Defaults to `'default'` when omitted.
|
|
226
|
-
// Player swaps variants in place via parentNode.replaceChild so the
|
|
227
|
-
// surrounding DOM keeps its scroll position, focus, and sibling layout.
|
|
228
|
-
variantName: z.string().min(1).regex(/^[a-z0-9][a-z0-9-]*$/, 'variantName must be kebab-case').optional(),
|
|
229
|
-
parentState: z.string().min(1).regex(/^[a-z0-9][a-z0-9-]*$/, 'parentState must be kebab-case'),
|
|
230
|
-
selector: z.string().min(1),
|
|
231
|
-
triggerSelector: z.string().min(1).optional(),
|
|
232
|
-
mountStrategy: z.string().min(1).optional(),
|
|
233
|
-
mountTargetSelector: z.string().min(1).optional(),
|
|
234
|
-
}).strict();
|
|
235
214
|
const BeginClipOpcodeSchema = z.object({
|
|
236
215
|
kind: z.literal('BEGIN_CLIP'),
|
|
237
216
|
...opcodeBase,
|
|
@@ -417,8 +396,6 @@ export const ExecutionOpcodeSchema = z.discriminatedUnion('kind', [
|
|
|
417
396
|
SetThemeOpcodeSchema,
|
|
418
397
|
ScrollOpcodeSchema,
|
|
419
398
|
CaptureScreenshotOpcodeSchema,
|
|
420
|
-
CaptureDomOpcodeSchema,
|
|
421
|
-
CaptureFragmentOpcodeSchema,
|
|
422
399
|
BeginClipOpcodeSchema,
|
|
423
400
|
EndClipOpcodeSchema,
|
|
424
401
|
HoverOpcodeSchema,
|
|
@@ -463,6 +440,47 @@ export const VariantSpecSchema = z.object({
|
|
|
463
440
|
targetId: z.string().optional(),
|
|
464
441
|
targetLabel: z.string().optional(),
|
|
465
442
|
deviceFrame: z.string().optional(),
|
|
443
|
+
mockupOptions: z.object({
|
|
444
|
+
orientation: z.enum(['portrait', 'landscape']).optional(),
|
|
445
|
+
outputScale: z.number().positive().optional(),
|
|
446
|
+
showStatusBar: z.boolean().optional(),
|
|
447
|
+
showSafeAreaTop: z.boolean().optional(),
|
|
448
|
+
showSafeAreaBottom: z.boolean().optional(),
|
|
449
|
+
showSafeAreaLeft: z.boolean().optional(),
|
|
450
|
+
showSafeAreaRight: z.boolean().optional(),
|
|
451
|
+
showHomeIndicator: z.boolean().optional(),
|
|
452
|
+
safeAreaTopColor: z.string().optional(),
|
|
453
|
+
safeAreaBottomColor: z.string().optional(),
|
|
454
|
+
safeAreaLeftColor: z.string().optional(),
|
|
455
|
+
safeAreaRightColor: z.string().optional(),
|
|
456
|
+
statusBar: z.object({
|
|
457
|
+
time: z.string().optional(),
|
|
458
|
+
date: z.string().optional(),
|
|
459
|
+
menuBarApp: z.string().optional(),
|
|
460
|
+
menuBarItems: z.array(z.string()).optional(),
|
|
461
|
+
signalStrength: z.number().optional(),
|
|
462
|
+
showNetworkType: z.boolean().optional(),
|
|
463
|
+
networkType: z.string().optional(),
|
|
464
|
+
wifiStrength: z.number().optional(),
|
|
465
|
+
batteryLevel: z.number().optional(),
|
|
466
|
+
batteryCharging: z.boolean().optional(),
|
|
467
|
+
showBatteryPercentage: z.boolean().optional(),
|
|
468
|
+
colorScheme: z.enum(['light', 'dark']).optional(),
|
|
469
|
+
carrierName: z.string().optional(),
|
|
470
|
+
autoLocale: z.boolean().optional(),
|
|
471
|
+
}).strict().optional(),
|
|
472
|
+
browserBar: z.object({
|
|
473
|
+
url: z.string().optional(),
|
|
474
|
+
pageTitle: z.string().optional(),
|
|
475
|
+
tabIconUrl: z.string().optional(),
|
|
476
|
+
}).strict().optional(),
|
|
477
|
+
windowBorder: z.object({
|
|
478
|
+
color: z.string(),
|
|
479
|
+
width: z.number(),
|
|
480
|
+
radius: z.number(),
|
|
481
|
+
}).strict().optional(),
|
|
482
|
+
colorScheme: z.enum(['light', 'dark']).optional(),
|
|
483
|
+
}).strict().optional(),
|
|
466
484
|
}).strict();
|
|
467
485
|
const cookieSchema = z.object({
|
|
468
486
|
name: z.string().min(1),
|
|
@@ -509,7 +527,7 @@ export const PreconditionSpecSchema = z.object({
|
|
|
509
527
|
}).strict();
|
|
510
528
|
// ── Artifact spec ───────────────────────────────────────────────────
|
|
511
529
|
export const ArtifactSpecSchema = z.object({
|
|
512
|
-
mediaMode: z.enum(['screenshot', 'clip'
|
|
530
|
+
mediaMode: z.enum(['screenshot', 'clip']),
|
|
513
531
|
format: z.object({
|
|
514
532
|
clipFormat: z.enum(['gif', 'mp4', 'both']).optional(),
|
|
515
533
|
screenshotFormat: z.enum(['png', 'jpeg']).optional(),
|
|
@@ -518,15 +536,12 @@ export const ArtifactSpecSchema = z.object({
|
|
|
518
536
|
maxClipDurationSec: z.number().positive().optional(),
|
|
519
537
|
applyMockup: z.boolean().optional(),
|
|
520
538
|
applyStatusBar: z.boolean().optional(),
|
|
521
|
-
domOptions: z.object({
|
|
522
|
-
sanitize: z.boolean().optional(),
|
|
523
|
-
}).strict().optional(),
|
|
524
539
|
}).strict();
|
|
525
540
|
// ── Full program ────────────────────────────────────────────────────
|
|
526
541
|
export const ExecutionProgramSchema = z.object({
|
|
527
542
|
presetId: z.string().min(1),
|
|
528
543
|
programVersion: z.number().int().positive(),
|
|
529
|
-
mediaMode: z.enum(['screenshot', 'clip'
|
|
544
|
+
mediaMode: z.enum(['screenshot', 'clip']),
|
|
530
545
|
baseUrl: StrictUrlSchema,
|
|
531
546
|
maxParallelCaptures: z.number().int().positive().optional(),
|
|
532
547
|
variants: z.array(VariantSpecSchema).min(1),
|