@btraut/browser-bridge 0.12.1 → 0.13.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/CHANGELOG.md +27 -1
- package/README.md +9 -9
- package/dist/api.js +953 -409
- package/dist/api.js.map +4 -4
- package/dist/index.js +600 -400
- package/dist/index.js.map +4 -4
- package/extension/dist/background.js +272 -26
- package/extension/dist/background.js.map +3 -3
- package/extension/dist/content.js +42 -4
- package/extension/dist/content.js.map +3 -3
- package/extension/dist/options-ui.js +80 -0
- package/extension/dist/options-ui.js.map +2 -2
- package/extension/manifest.json +14 -4
- package/package.json +1 -1
- package/skills/browser-bridge/SKILL.md +3 -4
- package/skills/browser-bridge/skill.json +1 -1
package/dist/index.js
CHANGED
|
@@ -45,9 +45,49 @@ var ENV_CORE_PORT = "BROWSER_BRIDGE_CORE_PORT";
|
|
|
45
45
|
var ENV_VISION_PORT = "BROWSER_VISION_CORE_PORT";
|
|
46
46
|
var ENV_ISOLATED_MODE = "BROWSER_BRIDGE_ISOLATED_MODE";
|
|
47
47
|
var ENV_VISION_ISOLATED_MODE = "BROWSER_VISION_ISOLATED_MODE";
|
|
48
|
+
var ENV_BRIDGE_CWD = "BROWSER_BRIDGE_CWD";
|
|
49
|
+
var ENV_PROCESS_PWD = "PWD";
|
|
50
|
+
var ENV_PROCESS_INIT_CWD = "INIT_CWD";
|
|
51
|
+
var ENV_PROCESS_HOME = "HOME";
|
|
48
52
|
var RUNTIME_METADATA_RELATIVE_PATH = ".context/browser-bridge/dev.json";
|
|
49
53
|
var DEFAULT_LOG_DIRECTORY_RELATIVE_PATH = ".context/logs/browser-bridge";
|
|
50
|
-
var
|
|
54
|
+
var normalizeCandidatePath = (value) => {
|
|
55
|
+
if (typeof value !== "string") {
|
|
56
|
+
return void 0;
|
|
57
|
+
}
|
|
58
|
+
const trimmed = value.trim();
|
|
59
|
+
if (trimmed.length === 0) {
|
|
60
|
+
return void 0;
|
|
61
|
+
}
|
|
62
|
+
return (0, import_node_path.resolve)(trimmed);
|
|
63
|
+
};
|
|
64
|
+
var resolveCwd = (cwd) => {
|
|
65
|
+
const explicit = normalizeCandidatePath(cwd);
|
|
66
|
+
if (explicit) {
|
|
67
|
+
return explicit;
|
|
68
|
+
}
|
|
69
|
+
const envExplicit = normalizeCandidatePath(process.env[ENV_BRIDGE_CWD]);
|
|
70
|
+
if (envExplicit) {
|
|
71
|
+
return envExplicit;
|
|
72
|
+
}
|
|
73
|
+
const processCwd = normalizeCandidatePath(process.cwd());
|
|
74
|
+
if (processCwd && processCwd !== "/") {
|
|
75
|
+
return processCwd;
|
|
76
|
+
}
|
|
77
|
+
const processPwd = normalizeCandidatePath(process.env[ENV_PROCESS_PWD]);
|
|
78
|
+
if (processPwd && processPwd !== "/") {
|
|
79
|
+
return processPwd;
|
|
80
|
+
}
|
|
81
|
+
const initCwd = normalizeCandidatePath(process.env[ENV_PROCESS_INIT_CWD]);
|
|
82
|
+
if (initCwd && initCwd !== "/") {
|
|
83
|
+
return initCwd;
|
|
84
|
+
}
|
|
85
|
+
const home = normalizeCandidatePath(process.env[ENV_PROCESS_HOME]);
|
|
86
|
+
if (home) {
|
|
87
|
+
return home;
|
|
88
|
+
}
|
|
89
|
+
return processCwd ?? (0, import_node_path.resolve)(".");
|
|
90
|
+
};
|
|
51
91
|
var resolveOptionalPath = (cwd, value) => {
|
|
52
92
|
if (!value) {
|
|
53
93
|
return void 0;
|
|
@@ -192,8 +232,8 @@ var sanitizeMetadata = (raw) => {
|
|
|
192
232
|
updated_at: updatedAt
|
|
193
233
|
};
|
|
194
234
|
};
|
|
195
|
-
var findGitRoot = (cwd
|
|
196
|
-
let current = (
|
|
235
|
+
var findGitRoot = (cwd) => {
|
|
236
|
+
let current = resolveCwd(cwd);
|
|
197
237
|
while (true) {
|
|
198
238
|
if ((0, import_node_fs.existsSync)((0, import_node_path.join)(current, ".git"))) {
|
|
199
239
|
return current;
|
|
@@ -636,7 +676,7 @@ var createCoreReadinessController = (options = {}) => {
|
|
|
636
676
|
let response;
|
|
637
677
|
try {
|
|
638
678
|
response = await fetchImpl(`${baseUrl}/health`, {
|
|
639
|
-
method: "
|
|
679
|
+
method: "POST",
|
|
640
680
|
signal: controller.signal
|
|
641
681
|
});
|
|
642
682
|
} catch (error) {
|
|
@@ -750,9 +790,24 @@ var createCoreReadinessController = (options = {}) => {
|
|
|
750
790
|
};
|
|
751
791
|
};
|
|
752
792
|
|
|
793
|
+
// packages/shared/src/contract-version.ts
|
|
794
|
+
var HTTP_CONTRACT_VERSION_HEADER = "x-browser-bridge-contract-version";
|
|
795
|
+
var HTTP_CONTRACT_VERSION = "2026-02-17.1";
|
|
796
|
+
|
|
753
797
|
// packages/shared/src/errors.ts
|
|
798
|
+
var import_zod2 = require("zod");
|
|
799
|
+
|
|
800
|
+
// packages/shared/src/retry-policy.ts
|
|
754
801
|
var import_zod = require("zod");
|
|
755
|
-
var
|
|
802
|
+
var RetryHintSchema = import_zod.z.object({
|
|
803
|
+
retryable: import_zod.z.boolean(),
|
|
804
|
+
reason: import_zod.z.string().optional(),
|
|
805
|
+
retry_after_ms: import_zod.z.number().int().nonnegative().optional(),
|
|
806
|
+
max_attempts: import_zod.z.number().int().positive().optional()
|
|
807
|
+
});
|
|
808
|
+
|
|
809
|
+
// packages/shared/src/errors.ts
|
|
810
|
+
var ErrorCodeSchema = import_zod2.z.enum([
|
|
756
811
|
"UNKNOWN",
|
|
757
812
|
"INVALID_ARGUMENT",
|
|
758
813
|
"NOT_FOUND",
|
|
@@ -785,32 +840,59 @@ var ErrorCodeSchema = import_zod.z.enum([
|
|
|
785
840
|
"EVALUATION_FAILED",
|
|
786
841
|
"ARTIFACT_IO_ERROR"
|
|
787
842
|
]);
|
|
788
|
-
var
|
|
843
|
+
var PublicErrorCodeSchema = import_zod2.z.enum([
|
|
844
|
+
"UNKNOWN",
|
|
845
|
+
"INVALID_ARGUMENT",
|
|
846
|
+
"NOT_FOUND",
|
|
847
|
+
"ALREADY_EXISTS",
|
|
848
|
+
"FAILED_PRECONDITION",
|
|
849
|
+
"UNAUTHORIZED",
|
|
850
|
+
"FORBIDDEN",
|
|
851
|
+
"CONFLICT",
|
|
852
|
+
"TIMEOUT",
|
|
853
|
+
"CANCELLED",
|
|
854
|
+
"UNAVAILABLE",
|
|
855
|
+
"RATE_LIMITED",
|
|
856
|
+
"NOT_IMPLEMENTED",
|
|
857
|
+
"INTERNAL"
|
|
858
|
+
]);
|
|
859
|
+
var PublicErrorDetailsSchema = import_zod2.z.object({
|
|
860
|
+
legacy_code: ErrorCodeSchema.optional(),
|
|
861
|
+
reason: import_zod2.z.string().optional(),
|
|
862
|
+
resource: import_zod2.z.string().optional(),
|
|
863
|
+
field: import_zod2.z.string().optional(),
|
|
864
|
+
session_id: import_zod2.z.string().optional(),
|
|
865
|
+
tab_id: import_zod2.z.number().finite().optional(),
|
|
866
|
+
retry_after_ms: import_zod2.z.number().finite().optional(),
|
|
867
|
+
next_step: import_zod2.z.string().optional()
|
|
868
|
+
}).catchall(import_zod2.z.unknown());
|
|
869
|
+
var ErrorInfoSchema = import_zod2.z.object({
|
|
789
870
|
code: ErrorCodeSchema,
|
|
790
|
-
message:
|
|
791
|
-
retryable:
|
|
792
|
-
|
|
871
|
+
message: import_zod2.z.string(),
|
|
872
|
+
retryable: import_zod2.z.boolean(),
|
|
873
|
+
retry: RetryHintSchema.optional(),
|
|
874
|
+
details: import_zod2.z.record(import_zod2.z.string(), import_zod2.z.unknown()).optional()
|
|
793
875
|
});
|
|
794
|
-
var ErrorEnvelopeSchema =
|
|
795
|
-
ok:
|
|
876
|
+
var ErrorEnvelopeSchema = import_zod2.z.object({
|
|
877
|
+
ok: import_zod2.z.literal(false),
|
|
796
878
|
error: ErrorInfoSchema
|
|
797
879
|
});
|
|
798
|
-
var successEnvelopeSchema = (result) =>
|
|
799
|
-
ok:
|
|
880
|
+
var successEnvelopeSchema = (result) => import_zod2.z.object({
|
|
881
|
+
ok: import_zod2.z.literal(true),
|
|
800
882
|
result
|
|
801
883
|
});
|
|
802
884
|
|
|
803
885
|
// packages/shared/src/schemas.ts
|
|
804
|
-
var
|
|
805
|
-
var LocatorRoleSchema =
|
|
806
|
-
name:
|
|
807
|
-
value:
|
|
886
|
+
var import_zod3 = require("zod");
|
|
887
|
+
var LocatorRoleSchema = import_zod3.z.object({
|
|
888
|
+
name: import_zod3.z.string(),
|
|
889
|
+
value: import_zod3.z.string().optional()
|
|
808
890
|
});
|
|
809
|
-
var LocatorSchema =
|
|
810
|
-
ref:
|
|
811
|
-
testid:
|
|
812
|
-
css:
|
|
813
|
-
text:
|
|
891
|
+
var LocatorSchema = import_zod3.z.object({
|
|
892
|
+
ref: import_zod3.z.string().min(1).optional(),
|
|
893
|
+
testid: import_zod3.z.string().min(1).optional(),
|
|
894
|
+
css: import_zod3.z.string().min(1).optional(),
|
|
895
|
+
text: import_zod3.z.string().min(1).optional(),
|
|
814
896
|
role: LocatorRoleSchema.optional()
|
|
815
897
|
}).refine(
|
|
816
898
|
(value) => Boolean(
|
|
@@ -820,12 +902,12 @@ var LocatorSchema = import_zod2.z.object({
|
|
|
820
902
|
message: "Locator must include at least one selector."
|
|
821
903
|
}
|
|
822
904
|
);
|
|
823
|
-
var OpResultSchema =
|
|
824
|
-
ok:
|
|
825
|
-
message:
|
|
826
|
-
warnings:
|
|
905
|
+
var OpResultSchema = import_zod3.z.object({
|
|
906
|
+
ok: import_zod3.z.literal(true),
|
|
907
|
+
message: import_zod3.z.string().optional(),
|
|
908
|
+
warnings: import_zod3.z.array(import_zod3.z.string()).optional()
|
|
827
909
|
});
|
|
828
|
-
var SessionStateSchema =
|
|
910
|
+
var SessionStateSchema = import_zod3.z.enum([
|
|
829
911
|
"INIT",
|
|
830
912
|
"DRIVE_READY",
|
|
831
913
|
"INSPECT_READY",
|
|
@@ -835,269 +917,270 @@ var SessionStateSchema = import_zod2.z.enum([
|
|
|
835
917
|
"BROKEN",
|
|
836
918
|
"CLOSED"
|
|
837
919
|
]);
|
|
838
|
-
var SessionInfoSchema =
|
|
839
|
-
session_id:
|
|
920
|
+
var SessionInfoSchema = import_zod3.z.object({
|
|
921
|
+
session_id: import_zod3.z.string(),
|
|
840
922
|
state: SessionStateSchema,
|
|
841
|
-
created_at:
|
|
923
|
+
created_at: import_zod3.z.string().datetime().optional()
|
|
842
924
|
});
|
|
843
|
-
var SessionPlaneStatusSchema =
|
|
844
|
-
connected:
|
|
845
|
-
last_seen_at:
|
|
925
|
+
var SessionPlaneStatusSchema = import_zod3.z.object({
|
|
926
|
+
connected: import_zod3.z.boolean(),
|
|
927
|
+
last_seen_at: import_zod3.z.string().datetime().optional(),
|
|
846
928
|
error: ErrorInfoSchema.optional()
|
|
847
929
|
});
|
|
848
|
-
var SessionStatusSchema =
|
|
849
|
-
session_id:
|
|
930
|
+
var SessionStatusSchema = import_zod3.z.object({
|
|
931
|
+
session_id: import_zod3.z.string(),
|
|
850
932
|
state: SessionStateSchema,
|
|
851
933
|
drive: SessionPlaneStatusSchema.optional(),
|
|
852
934
|
inspect: SessionPlaneStatusSchema.optional(),
|
|
853
|
-
updated_at:
|
|
935
|
+
updated_at: import_zod3.z.string().datetime().optional()
|
|
854
936
|
});
|
|
855
|
-
var RecoverResultSchema =
|
|
856
|
-
session_id:
|
|
857
|
-
recovered:
|
|
937
|
+
var RecoverResultSchema = import_zod3.z.object({
|
|
938
|
+
session_id: import_zod3.z.string(),
|
|
939
|
+
recovered: import_zod3.z.boolean(),
|
|
858
940
|
state: SessionStateSchema,
|
|
859
|
-
message:
|
|
941
|
+
message: import_zod3.z.string().optional()
|
|
860
942
|
});
|
|
861
|
-
var DiagnosticCheckSchema =
|
|
862
|
-
name:
|
|
863
|
-
ok:
|
|
864
|
-
message:
|
|
865
|
-
details:
|
|
943
|
+
var DiagnosticCheckSchema = import_zod3.z.object({
|
|
944
|
+
name: import_zod3.z.string(),
|
|
945
|
+
ok: import_zod3.z.boolean(),
|
|
946
|
+
message: import_zod3.z.string().optional(),
|
|
947
|
+
details: import_zod3.z.record(import_zod3.z.string(), import_zod3.z.unknown()).optional()
|
|
866
948
|
});
|
|
867
|
-
var DiagnosticsRuntimeEndpointSchema =
|
|
868
|
-
host:
|
|
869
|
-
port:
|
|
870
|
-
base_url:
|
|
871
|
-
host_source:
|
|
872
|
-
port_source:
|
|
873
|
-
metadata_path:
|
|
874
|
-
isolated_mode:
|
|
949
|
+
var DiagnosticsRuntimeEndpointSchema = import_zod3.z.object({
|
|
950
|
+
host: import_zod3.z.string().optional(),
|
|
951
|
+
port: import_zod3.z.number().finite().optional(),
|
|
952
|
+
base_url: import_zod3.z.string().optional(),
|
|
953
|
+
host_source: import_zod3.z.string().optional(),
|
|
954
|
+
port_source: import_zod3.z.string().optional(),
|
|
955
|
+
metadata_path: import_zod3.z.string().optional(),
|
|
956
|
+
isolated_mode: import_zod3.z.boolean().optional()
|
|
875
957
|
});
|
|
876
|
-
var DiagnosticsRuntimeProcessSchema =
|
|
877
|
-
component:
|
|
878
|
-
version:
|
|
879
|
-
pid:
|
|
880
|
-
node_version:
|
|
881
|
-
binary_path:
|
|
882
|
-
argv_entry:
|
|
958
|
+
var DiagnosticsRuntimeProcessSchema = import_zod3.z.object({
|
|
959
|
+
component: import_zod3.z.enum(["cli", "mcp", "core"]).optional(),
|
|
960
|
+
version: import_zod3.z.string().optional(),
|
|
961
|
+
pid: import_zod3.z.number().int().positive().optional(),
|
|
962
|
+
node_version: import_zod3.z.string().optional(),
|
|
963
|
+
binary_path: import_zod3.z.string().optional(),
|
|
964
|
+
argv_entry: import_zod3.z.string().optional()
|
|
883
965
|
});
|
|
884
|
-
var DiagnosticsRuntimeCallerSchema =
|
|
966
|
+
var DiagnosticsRuntimeCallerSchema = import_zod3.z.object({
|
|
885
967
|
endpoint: DiagnosticsRuntimeEndpointSchema.optional(),
|
|
886
968
|
process: DiagnosticsRuntimeProcessSchema.optional()
|
|
887
969
|
});
|
|
888
|
-
var DiagnosticsRuntimeContextSchema =
|
|
970
|
+
var DiagnosticsRuntimeContextSchema = import_zod3.z.object({
|
|
889
971
|
caller: DiagnosticsRuntimeCallerSchema.optional(),
|
|
890
|
-
core:
|
|
972
|
+
core: import_zod3.z.object({
|
|
891
973
|
endpoint: DiagnosticsRuntimeEndpointSchema.optional(),
|
|
892
974
|
process: DiagnosticsRuntimeProcessSchema.optional()
|
|
893
975
|
}).optional(),
|
|
894
|
-
extension:
|
|
895
|
-
version:
|
|
976
|
+
extension: import_zod3.z.object({
|
|
977
|
+
version: import_zod3.z.string().optional(),
|
|
978
|
+
protocol_version: import_zod3.z.string().optional(),
|
|
979
|
+
capability_negotiated: import_zod3.z.boolean().optional(),
|
|
980
|
+
capabilities: import_zod3.z.record(import_zod3.z.string(), import_zod3.z.boolean()).optional(),
|
|
896
981
|
endpoint: DiagnosticsRuntimeEndpointSchema.optional(),
|
|
897
|
-
port_source:
|
|
982
|
+
port_source: import_zod3.z.enum(["default", "storage"]).optional()
|
|
898
983
|
}).optional()
|
|
899
984
|
});
|
|
900
|
-
var DiagnosticReportSchema =
|
|
901
|
-
ok:
|
|
902
|
-
session_id:
|
|
903
|
-
checks:
|
|
904
|
-
sessions:
|
|
905
|
-
count:
|
|
906
|
-
max_age_ms:
|
|
907
|
-
max_idle_ms:
|
|
985
|
+
var DiagnosticReportSchema = import_zod3.z.object({
|
|
986
|
+
ok: import_zod3.z.boolean(),
|
|
987
|
+
session_id: import_zod3.z.string().optional(),
|
|
988
|
+
checks: import_zod3.z.array(DiagnosticCheckSchema).optional(),
|
|
989
|
+
sessions: import_zod3.z.object({
|
|
990
|
+
count: import_zod3.z.number().finite().optional(),
|
|
991
|
+
max_age_ms: import_zod3.z.number().finite().optional(),
|
|
992
|
+
max_idle_ms: import_zod3.z.number().finite().optional()
|
|
908
993
|
}).optional(),
|
|
909
|
-
extension:
|
|
910
|
-
connected:
|
|
911
|
-
version:
|
|
912
|
-
last_seen_at:
|
|
994
|
+
extension: import_zod3.z.object({
|
|
995
|
+
connected: import_zod3.z.boolean().optional(),
|
|
996
|
+
version: import_zod3.z.string().optional(),
|
|
997
|
+
last_seen_at: import_zod3.z.string().datetime().optional()
|
|
913
998
|
}).optional(),
|
|
914
|
-
debugger:
|
|
915
|
-
attached:
|
|
916
|
-
idle_timeout_ms:
|
|
917
|
-
console_buffer_size:
|
|
918
|
-
network_buffer_size:
|
|
999
|
+
debugger: import_zod3.z.object({
|
|
1000
|
+
attached: import_zod3.z.boolean().optional(),
|
|
1001
|
+
idle_timeout_ms: import_zod3.z.number().finite().optional(),
|
|
1002
|
+
console_buffer_size: import_zod3.z.number().finite().optional(),
|
|
1003
|
+
network_buffer_size: import_zod3.z.number().finite().optional(),
|
|
919
1004
|
last_error: ErrorInfoSchema.optional()
|
|
920
1005
|
}).optional(),
|
|
921
|
-
artifacts:
|
|
922
|
-
root_dir:
|
|
1006
|
+
artifacts: import_zod3.z.object({
|
|
1007
|
+
root_dir: import_zod3.z.string().optional()
|
|
923
1008
|
}).optional(),
|
|
924
|
-
recovery:
|
|
925
|
-
last_attempt:
|
|
926
|
-
session_id:
|
|
927
|
-
recovered:
|
|
1009
|
+
recovery: import_zod3.z.object({
|
|
1010
|
+
last_attempt: import_zod3.z.object({
|
|
1011
|
+
session_id: import_zod3.z.string(),
|
|
1012
|
+
recovered: import_zod3.z.boolean(),
|
|
928
1013
|
state: SessionStateSchema,
|
|
929
|
-
message:
|
|
930
|
-
at:
|
|
1014
|
+
message: import_zod3.z.string().optional(),
|
|
1015
|
+
at: import_zod3.z.string()
|
|
931
1016
|
}).optional(),
|
|
932
|
-
attempts:
|
|
933
|
-
|
|
934
|
-
session_id:
|
|
935
|
-
recovered:
|
|
1017
|
+
attempts: import_zod3.z.array(
|
|
1018
|
+
import_zod3.z.object({
|
|
1019
|
+
session_id: import_zod3.z.string(),
|
|
1020
|
+
recovered: import_zod3.z.boolean(),
|
|
936
1021
|
state: SessionStateSchema,
|
|
937
|
-
message:
|
|
938
|
-
at:
|
|
1022
|
+
message: import_zod3.z.string().optional(),
|
|
1023
|
+
at: import_zod3.z.string()
|
|
939
1024
|
})
|
|
940
1025
|
).optional(),
|
|
941
|
-
success_count:
|
|
942
|
-
failure_count:
|
|
943
|
-
success_rate:
|
|
944
|
-
recent_failure_count:
|
|
945
|
-
loop_detected:
|
|
1026
|
+
success_count: import_zod3.z.number().finite().optional(),
|
|
1027
|
+
failure_count: import_zod3.z.number().finite().optional(),
|
|
1028
|
+
success_rate: import_zod3.z.number().finite().optional(),
|
|
1029
|
+
recent_failure_count: import_zod3.z.number().finite().optional(),
|
|
1030
|
+
loop_detected: import_zod3.z.boolean().optional()
|
|
946
1031
|
}).optional(),
|
|
947
|
-
warnings:
|
|
948
|
-
notes:
|
|
1032
|
+
warnings: import_zod3.z.array(import_zod3.z.string()).optional(),
|
|
1033
|
+
notes: import_zod3.z.array(import_zod3.z.string()).optional(),
|
|
949
1034
|
runtime: DiagnosticsRuntimeContextSchema.optional()
|
|
950
1035
|
});
|
|
951
|
-
var SessionIdSchema =
|
|
952
|
-
session_id:
|
|
1036
|
+
var SessionIdSchema = import_zod3.z.object({
|
|
1037
|
+
session_id: import_zod3.z.string().min(1)
|
|
953
1038
|
});
|
|
954
|
-
var SessionCreateInputSchema =
|
|
1039
|
+
var SessionCreateInputSchema = import_zod3.z.object({}).strict().default({});
|
|
955
1040
|
var SessionCreateOutputSchema = SessionInfoSchema;
|
|
956
1041
|
var SessionStatusInputSchema = SessionIdSchema;
|
|
957
1042
|
var SessionStatusOutputSchema = SessionStatusSchema;
|
|
958
1043
|
var SessionRecoverInputSchema = SessionIdSchema;
|
|
959
1044
|
var SessionRecoverOutputSchema = RecoverResultSchema;
|
|
960
1045
|
var SessionCloseInputSchema = SessionIdSchema;
|
|
961
|
-
var SessionCloseOutputSchema =
|
|
962
|
-
ok:
|
|
1046
|
+
var SessionCloseOutputSchema = import_zod3.z.object({
|
|
1047
|
+
ok: import_zod3.z.boolean()
|
|
963
1048
|
});
|
|
964
|
-
var DriveWaitConditionSchema =
|
|
965
|
-
kind:
|
|
966
|
-
value:
|
|
1049
|
+
var DriveWaitConditionSchema = import_zod3.z.object({
|
|
1050
|
+
kind: import_zod3.z.enum(["locator_visible", "text_present", "url_matches"]),
|
|
1051
|
+
value: import_zod3.z.string().min(1)
|
|
967
1052
|
});
|
|
968
|
-
var DriveNavigateInputSchema =
|
|
969
|
-
session_id:
|
|
970
|
-
url:
|
|
971
|
-
tab_id:
|
|
972
|
-
wait:
|
|
1053
|
+
var DriveNavigateInputSchema = import_zod3.z.object({
|
|
1054
|
+
session_id: import_zod3.z.string().min(1).optional(),
|
|
1055
|
+
url: import_zod3.z.string().min(1),
|
|
1056
|
+
tab_id: import_zod3.z.number().finite().optional(),
|
|
1057
|
+
wait: import_zod3.z.enum(["none", "domcontentloaded"]).default("domcontentloaded")
|
|
973
1058
|
});
|
|
974
|
-
var DriveNavigateOutputSchema = OpResultSchema
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
1059
|
+
var DriveNavigateOutputSchema = OpResultSchema.extend({
|
|
1060
|
+
session_id: import_zod3.z.string().min(1)
|
|
1061
|
+
});
|
|
1062
|
+
var DriveGoBackInputSchema = import_zod3.z.object({
|
|
1063
|
+
session_id: import_zod3.z.string().min(1),
|
|
1064
|
+
tab_id: import_zod3.z.number().finite().optional()
|
|
978
1065
|
});
|
|
979
1066
|
var DriveGoBackOutputSchema = OpResultSchema;
|
|
980
|
-
var DriveGoForwardInputSchema =
|
|
981
|
-
session_id:
|
|
982
|
-
tab_id:
|
|
1067
|
+
var DriveGoForwardInputSchema = import_zod3.z.object({
|
|
1068
|
+
session_id: import_zod3.z.string().min(1),
|
|
1069
|
+
tab_id: import_zod3.z.number().finite().optional()
|
|
983
1070
|
});
|
|
984
1071
|
var DriveGoForwardOutputSchema = OpResultSchema;
|
|
985
|
-
var
|
|
986
|
-
|
|
987
|
-
var DriveForwardInputSchema = DriveGoForwardInputSchema;
|
|
988
|
-
var DriveForwardOutputSchema = OpResultSchema;
|
|
989
|
-
var DriveClickInputSchema = import_zod2.z.object({
|
|
990
|
-
session_id: import_zod2.z.string().min(1),
|
|
1072
|
+
var DriveClickInputSchema = import_zod3.z.object({
|
|
1073
|
+
session_id: import_zod3.z.string().min(1),
|
|
991
1074
|
locator: LocatorSchema,
|
|
992
|
-
tab_id:
|
|
993
|
-
click_count:
|
|
1075
|
+
tab_id: import_zod3.z.number().finite().optional(),
|
|
1076
|
+
click_count: import_zod3.z.number().finite().optional()
|
|
994
1077
|
});
|
|
995
1078
|
var DriveClickOutputSchema = OpResultSchema;
|
|
996
|
-
var DriveHoverInputSchema =
|
|
997
|
-
session_id:
|
|
1079
|
+
var DriveHoverInputSchema = import_zod3.z.object({
|
|
1080
|
+
session_id: import_zod3.z.string().min(1),
|
|
998
1081
|
locator: LocatorSchema,
|
|
999
|
-
delay_ms:
|
|
1000
|
-
tab_id:
|
|
1082
|
+
delay_ms: import_zod3.z.number().min(0).max(1e4).optional(),
|
|
1083
|
+
tab_id: import_zod3.z.number().finite().optional()
|
|
1001
1084
|
});
|
|
1002
|
-
var DriveHoverOutputSchema =
|
|
1003
|
-
format:
|
|
1004
|
-
snapshot:
|
|
1085
|
+
var DriveHoverOutputSchema = import_zod3.z.object({
|
|
1086
|
+
format: import_zod3.z.literal("html"),
|
|
1087
|
+
snapshot: import_zod3.z.string()
|
|
1005
1088
|
});
|
|
1006
|
-
var DriveSelectInputSchema =
|
|
1007
|
-
session_id:
|
|
1089
|
+
var DriveSelectInputSchema = import_zod3.z.object({
|
|
1090
|
+
session_id: import_zod3.z.string().min(1),
|
|
1008
1091
|
locator: LocatorSchema,
|
|
1009
|
-
value:
|
|
1010
|
-
text:
|
|
1011
|
-
index:
|
|
1012
|
-
tab_id:
|
|
1092
|
+
value: import_zod3.z.string().min(1).optional(),
|
|
1093
|
+
text: import_zod3.z.string().min(1).optional(),
|
|
1094
|
+
index: import_zod3.z.number().int().min(0).optional(),
|
|
1095
|
+
tab_id: import_zod3.z.number().finite().optional()
|
|
1013
1096
|
}).refine((value) => value.value || value.text || value.index !== void 0, {
|
|
1014
1097
|
message: "Either value, text, or index must be provided.",
|
|
1015
1098
|
path: ["select"]
|
|
1016
1099
|
});
|
|
1017
1100
|
var DriveSelectOutputSchema = OpResultSchema;
|
|
1018
|
-
var DriveTypeInputSchema =
|
|
1019
|
-
session_id:
|
|
1101
|
+
var DriveTypeInputSchema = import_zod3.z.object({
|
|
1102
|
+
session_id: import_zod3.z.string().min(1),
|
|
1020
1103
|
locator: LocatorSchema.optional(),
|
|
1021
|
-
text:
|
|
1022
|
-
tab_id:
|
|
1023
|
-
clear:
|
|
1024
|
-
submit:
|
|
1104
|
+
text: import_zod3.z.string().min(1),
|
|
1105
|
+
tab_id: import_zod3.z.number().finite().optional(),
|
|
1106
|
+
clear: import_zod3.z.boolean().default(false),
|
|
1107
|
+
submit: import_zod3.z.boolean().default(false)
|
|
1025
1108
|
});
|
|
1026
1109
|
var DriveTypeOutputSchema = OpResultSchema;
|
|
1027
|
-
var DriveFillFormFieldSchema =
|
|
1028
|
-
selector:
|
|
1110
|
+
var DriveFillFormFieldSchema = import_zod3.z.object({
|
|
1111
|
+
selector: import_zod3.z.string().min(1).optional(),
|
|
1029
1112
|
locator: LocatorSchema.optional(),
|
|
1030
|
-
value:
|
|
1031
|
-
type:
|
|
1032
|
-
submit:
|
|
1113
|
+
value: import_zod3.z.union([import_zod3.z.string(), import_zod3.z.boolean()]),
|
|
1114
|
+
type: import_zod3.z.enum(["auto", "text", "select", "checkbox", "radio", "contentEditable"]).default("auto"),
|
|
1115
|
+
submit: import_zod3.z.boolean().default(false)
|
|
1033
1116
|
}).refine((value) => Boolean(value.selector || value.locator), {
|
|
1034
1117
|
message: "fill_form field requires selector or locator.",
|
|
1035
1118
|
path: ["selector"]
|
|
1036
1119
|
});
|
|
1037
|
-
var DriveFillFormInputSchema =
|
|
1038
|
-
session_id:
|
|
1039
|
-
fields:
|
|
1040
|
-
tab_id:
|
|
1120
|
+
var DriveFillFormInputSchema = import_zod3.z.object({
|
|
1121
|
+
session_id: import_zod3.z.string().min(1),
|
|
1122
|
+
fields: import_zod3.z.array(DriveFillFormFieldSchema).min(1),
|
|
1123
|
+
tab_id: import_zod3.z.number().finite().optional()
|
|
1041
1124
|
});
|
|
1042
|
-
var DriveFillFormOutputSchema =
|
|
1043
|
-
filled:
|
|
1044
|
-
attempted:
|
|
1045
|
-
errors:
|
|
1125
|
+
var DriveFillFormOutputSchema = import_zod3.z.object({
|
|
1126
|
+
filled: import_zod3.z.number().finite(),
|
|
1127
|
+
attempted: import_zod3.z.number().finite(),
|
|
1128
|
+
errors: import_zod3.z.array(import_zod3.z.string()).optional()
|
|
1046
1129
|
});
|
|
1047
|
-
var DriveDragInputSchema =
|
|
1048
|
-
session_id:
|
|
1130
|
+
var DriveDragInputSchema = import_zod3.z.object({
|
|
1131
|
+
session_id: import_zod3.z.string().min(1),
|
|
1049
1132
|
from: LocatorSchema,
|
|
1050
1133
|
to: LocatorSchema,
|
|
1051
|
-
steps:
|
|
1052
|
-
tab_id:
|
|
1134
|
+
steps: import_zod3.z.number().min(1).max(50).default(12),
|
|
1135
|
+
tab_id: import_zod3.z.number().finite().optional()
|
|
1053
1136
|
});
|
|
1054
1137
|
var DriveDragOutputSchema = OpResultSchema;
|
|
1055
|
-
var DriveHandleDialogInputSchema =
|
|
1056
|
-
session_id:
|
|
1057
|
-
action:
|
|
1058
|
-
promptText:
|
|
1059
|
-
tab_id:
|
|
1138
|
+
var DriveHandleDialogInputSchema = import_zod3.z.object({
|
|
1139
|
+
session_id: import_zod3.z.string().min(1),
|
|
1140
|
+
action: import_zod3.z.enum(["accept", "dismiss"]),
|
|
1141
|
+
promptText: import_zod3.z.string().optional(),
|
|
1142
|
+
tab_id: import_zod3.z.number().finite().optional()
|
|
1060
1143
|
});
|
|
1061
1144
|
var DriveHandleDialogOutputSchema = OpResultSchema;
|
|
1062
1145
|
var DialogAcceptInputSchema = SessionIdSchema.extend({
|
|
1063
|
-
promptText:
|
|
1064
|
-
tab_id:
|
|
1146
|
+
promptText: import_zod3.z.string().optional(),
|
|
1147
|
+
tab_id: import_zod3.z.number().finite().optional()
|
|
1065
1148
|
});
|
|
1066
1149
|
var DialogAcceptOutputSchema = OpResultSchema;
|
|
1067
1150
|
var DialogDismissInputSchema = SessionIdSchema.extend({
|
|
1068
|
-
tab_id:
|
|
1151
|
+
tab_id: import_zod3.z.number().finite().optional()
|
|
1069
1152
|
});
|
|
1070
1153
|
var DialogDismissOutputSchema = OpResultSchema;
|
|
1071
|
-
var DriveKeyModifiersSchema =
|
|
1072
|
-
ctrl:
|
|
1073
|
-
alt:
|
|
1074
|
-
shift:
|
|
1075
|
-
meta:
|
|
1154
|
+
var DriveKeyModifiersSchema = import_zod3.z.object({
|
|
1155
|
+
ctrl: import_zod3.z.boolean().optional(),
|
|
1156
|
+
alt: import_zod3.z.boolean().optional(),
|
|
1157
|
+
shift: import_zod3.z.boolean().optional(),
|
|
1158
|
+
meta: import_zod3.z.boolean().optional()
|
|
1076
1159
|
});
|
|
1077
|
-
var DriveKeyPressInputSchema =
|
|
1078
|
-
session_id:
|
|
1079
|
-
key:
|
|
1160
|
+
var DriveKeyPressInputSchema = import_zod3.z.object({
|
|
1161
|
+
session_id: import_zod3.z.string().min(1),
|
|
1162
|
+
key: import_zod3.z.string().min(1),
|
|
1080
1163
|
modifiers: DriveKeyModifiersSchema.optional(),
|
|
1081
|
-
tab_id:
|
|
1164
|
+
tab_id: import_zod3.z.number().finite().optional()
|
|
1082
1165
|
});
|
|
1083
1166
|
var DriveKeyPressOutputSchema = OpResultSchema;
|
|
1084
|
-
var DriveKeyModifierSchema =
|
|
1085
|
-
var DriveKeyInputSchema =
|
|
1086
|
-
session_id:
|
|
1087
|
-
key:
|
|
1088
|
-
modifiers:
|
|
1089
|
-
repeat:
|
|
1090
|
-
tab_id:
|
|
1167
|
+
var DriveKeyModifierSchema = import_zod3.z.enum(["ctrl", "alt", "shift", "meta"]);
|
|
1168
|
+
var DriveKeyInputSchema = import_zod3.z.object({
|
|
1169
|
+
session_id: import_zod3.z.string().min(1),
|
|
1170
|
+
key: import_zod3.z.string().min(1),
|
|
1171
|
+
modifiers: import_zod3.z.array(DriveKeyModifierSchema).optional(),
|
|
1172
|
+
repeat: import_zod3.z.number().int().min(1).max(50).optional(),
|
|
1173
|
+
tab_id: import_zod3.z.number().finite().optional()
|
|
1091
1174
|
});
|
|
1092
1175
|
var DriveKeyOutputSchema = OpResultSchema;
|
|
1093
|
-
var DriveScrollInputSchema =
|
|
1094
|
-
session_id:
|
|
1095
|
-
delta_x:
|
|
1096
|
-
delta_y:
|
|
1097
|
-
top:
|
|
1098
|
-
left:
|
|
1099
|
-
behavior:
|
|
1100
|
-
tab_id:
|
|
1176
|
+
var DriveScrollInputSchema = import_zod3.z.object({
|
|
1177
|
+
session_id: import_zod3.z.string().min(1),
|
|
1178
|
+
delta_x: import_zod3.z.number().finite().optional(),
|
|
1179
|
+
delta_y: import_zod3.z.number().finite().optional(),
|
|
1180
|
+
top: import_zod3.z.number().finite().optional(),
|
|
1181
|
+
left: import_zod3.z.number().finite().optional(),
|
|
1182
|
+
behavior: import_zod3.z.enum(["auto", "smooth"]).optional(),
|
|
1183
|
+
tab_id: import_zod3.z.number().finite().optional()
|
|
1101
1184
|
}).refine(
|
|
1102
1185
|
(value) => value.delta_x !== void 0 || value.delta_y !== void 0 || value.top !== void 0 || value.left !== void 0,
|
|
1103
1186
|
{
|
|
@@ -1106,245 +1189,245 @@ var DriveScrollInputSchema = import_zod2.z.object({
|
|
|
1106
1189
|
}
|
|
1107
1190
|
);
|
|
1108
1191
|
var DriveScrollOutputSchema = OpResultSchema;
|
|
1109
|
-
var DriveWaitForInputSchema =
|
|
1110
|
-
session_id:
|
|
1192
|
+
var DriveWaitForInputSchema = import_zod3.z.object({
|
|
1193
|
+
session_id: import_zod3.z.string().min(1),
|
|
1111
1194
|
condition: DriveWaitConditionSchema,
|
|
1112
|
-
timeout_ms:
|
|
1113
|
-
tab_id:
|
|
1195
|
+
timeout_ms: import_zod3.z.number().finite().optional(),
|
|
1196
|
+
tab_id: import_zod3.z.number().finite().optional()
|
|
1114
1197
|
});
|
|
1115
1198
|
var DriveWaitForOutputSchema = OpResultSchema;
|
|
1116
|
-
var DriveTabInfoSchema =
|
|
1117
|
-
tab_id:
|
|
1118
|
-
window_id:
|
|
1119
|
-
url:
|
|
1120
|
-
title:
|
|
1121
|
-
active:
|
|
1122
|
-
last_active_at:
|
|
1199
|
+
var DriveTabInfoSchema = import_zod3.z.object({
|
|
1200
|
+
tab_id: import_zod3.z.number().finite(),
|
|
1201
|
+
window_id: import_zod3.z.number().finite(),
|
|
1202
|
+
url: import_zod3.z.string().min(1),
|
|
1203
|
+
title: import_zod3.z.string(),
|
|
1204
|
+
active: import_zod3.z.boolean().optional(),
|
|
1205
|
+
last_active_at: import_zod3.z.string().datetime().optional()
|
|
1123
1206
|
});
|
|
1124
1207
|
var DriveTabListInputSchema = SessionIdSchema;
|
|
1125
|
-
var DriveTabListOutputSchema =
|
|
1126
|
-
tabs:
|
|
1208
|
+
var DriveTabListOutputSchema = import_zod3.z.object({
|
|
1209
|
+
tabs: import_zod3.z.array(DriveTabInfoSchema)
|
|
1127
1210
|
});
|
|
1128
|
-
var DriveTabActivateInputSchema =
|
|
1129
|
-
session_id:
|
|
1130
|
-
tab_id:
|
|
1211
|
+
var DriveTabActivateInputSchema = import_zod3.z.object({
|
|
1212
|
+
session_id: import_zod3.z.string().min(1),
|
|
1213
|
+
tab_id: import_zod3.z.number().finite()
|
|
1131
1214
|
});
|
|
1132
1215
|
var DriveTabActivateOutputSchema = OpResultSchema;
|
|
1133
|
-
var DriveTabCloseInputSchema =
|
|
1134
|
-
session_id:
|
|
1135
|
-
tab_id:
|
|
1216
|
+
var DriveTabCloseInputSchema = import_zod3.z.object({
|
|
1217
|
+
session_id: import_zod3.z.string().min(1),
|
|
1218
|
+
tab_id: import_zod3.z.number().finite()
|
|
1136
1219
|
});
|
|
1137
1220
|
var DriveTabCloseOutputSchema = OpResultSchema;
|
|
1138
|
-
var InspectDomFormatSchema =
|
|
1139
|
-
var InspectConsistencySchema =
|
|
1140
|
-
var TargetHintSchema =
|
|
1141
|
-
url:
|
|
1142
|
-
title:
|
|
1143
|
-
last_active_at:
|
|
1144
|
-
lastActiveAt:
|
|
1221
|
+
var InspectDomFormatSchema = import_zod3.z.enum(["ax", "html"]);
|
|
1222
|
+
var InspectConsistencySchema = import_zod3.z.enum(["best_effort", "quiesce"]);
|
|
1223
|
+
var TargetHintSchema = import_zod3.z.object({
|
|
1224
|
+
url: import_zod3.z.string().min(1).optional(),
|
|
1225
|
+
title: import_zod3.z.string().min(1).optional(),
|
|
1226
|
+
last_active_at: import_zod3.z.string().optional(),
|
|
1227
|
+
lastActiveAt: import_zod3.z.string().optional()
|
|
1145
1228
|
});
|
|
1146
|
-
var FormFieldInfoSchema =
|
|
1147
|
-
name:
|
|
1148
|
-
type:
|
|
1149
|
-
value:
|
|
1150
|
-
options:
|
|
1229
|
+
var FormFieldInfoSchema = import_zod3.z.object({
|
|
1230
|
+
name: import_zod3.z.string(),
|
|
1231
|
+
type: import_zod3.z.string(),
|
|
1232
|
+
value: import_zod3.z.string(),
|
|
1233
|
+
options: import_zod3.z.array(import_zod3.z.string()).optional()
|
|
1151
1234
|
});
|
|
1152
|
-
var FormInfoSchema =
|
|
1153
|
-
selector:
|
|
1154
|
-
action:
|
|
1155
|
-
method:
|
|
1156
|
-
fields:
|
|
1235
|
+
var FormInfoSchema = import_zod3.z.object({
|
|
1236
|
+
selector: import_zod3.z.string(),
|
|
1237
|
+
action: import_zod3.z.string().optional(),
|
|
1238
|
+
method: import_zod3.z.string().optional(),
|
|
1239
|
+
fields: import_zod3.z.array(FormFieldInfoSchema)
|
|
1157
1240
|
});
|
|
1158
|
-
var StorageEntrySchema =
|
|
1159
|
-
key:
|
|
1160
|
-
value:
|
|
1241
|
+
var StorageEntrySchema = import_zod3.z.object({
|
|
1242
|
+
key: import_zod3.z.string(),
|
|
1243
|
+
value: import_zod3.z.string()
|
|
1161
1244
|
});
|
|
1162
|
-
var PageStateSchema =
|
|
1163
|
-
forms:
|
|
1164
|
-
localStorage:
|
|
1165
|
-
sessionStorage:
|
|
1166
|
-
cookies:
|
|
1167
|
-
warnings:
|
|
1245
|
+
var PageStateSchema = import_zod3.z.object({
|
|
1246
|
+
forms: import_zod3.z.array(FormInfoSchema),
|
|
1247
|
+
localStorage: import_zod3.z.array(StorageEntrySchema),
|
|
1248
|
+
sessionStorage: import_zod3.z.array(StorageEntrySchema),
|
|
1249
|
+
cookies: import_zod3.z.array(StorageEntrySchema),
|
|
1250
|
+
warnings: import_zod3.z.array(import_zod3.z.string()).optional()
|
|
1168
1251
|
});
|
|
1169
|
-
var DomSnapshotSchema =
|
|
1252
|
+
var DomSnapshotSchema = import_zod3.z.object({
|
|
1170
1253
|
format: InspectDomFormatSchema,
|
|
1171
|
-
snapshot:
|
|
1254
|
+
snapshot: import_zod3.z.unknown()
|
|
1172
1255
|
}).passthrough();
|
|
1173
|
-
var InspectDomSnapshotInputSchema =
|
|
1174
|
-
session_id:
|
|
1256
|
+
var InspectDomSnapshotInputSchema = import_zod3.z.object({
|
|
1257
|
+
session_id: import_zod3.z.string().min(1),
|
|
1175
1258
|
format: InspectDomFormatSchema.default("ax"),
|
|
1176
1259
|
consistency: InspectConsistencySchema.default("best_effort"),
|
|
1177
|
-
interactive:
|
|
1178
|
-
compact:
|
|
1260
|
+
interactive: import_zod3.z.boolean().default(false),
|
|
1261
|
+
compact: import_zod3.z.boolean().default(false),
|
|
1179
1262
|
// Used primarily to bound large AX trees for LLM/agent consumption.
|
|
1180
1263
|
// CLI passes this as a string, so coerce for convenience.
|
|
1181
|
-
max_nodes:
|
|
1182
|
-
selector:
|
|
1264
|
+
max_nodes: import_zod3.z.coerce.number().int().positive().max(5e4).optional(),
|
|
1265
|
+
selector: import_zod3.z.string().min(1).optional(),
|
|
1183
1266
|
target: TargetHintSchema.optional()
|
|
1184
1267
|
});
|
|
1185
1268
|
var InspectDomSnapshotOutputSchema = DomSnapshotSchema;
|
|
1186
|
-
var DomDiffResultSchema =
|
|
1187
|
-
added:
|
|
1188
|
-
removed:
|
|
1189
|
-
changed:
|
|
1190
|
-
summary:
|
|
1269
|
+
var DomDiffResultSchema = import_zod3.z.object({
|
|
1270
|
+
added: import_zod3.z.array(import_zod3.z.string()),
|
|
1271
|
+
removed: import_zod3.z.array(import_zod3.z.string()),
|
|
1272
|
+
changed: import_zod3.z.array(import_zod3.z.string()),
|
|
1273
|
+
summary: import_zod3.z.string()
|
|
1191
1274
|
});
|
|
1192
1275
|
var InspectDomDiffInputSchema = SessionIdSchema;
|
|
1193
1276
|
var InspectDomDiffOutputSchema = DomDiffResultSchema;
|
|
1194
1277
|
var InspectFindRoleInputSchema = SessionIdSchema.extend({
|
|
1195
|
-
kind:
|
|
1196
|
-
role:
|
|
1197
|
-
name:
|
|
1278
|
+
kind: import_zod3.z.literal("role"),
|
|
1279
|
+
role: import_zod3.z.string().min(1),
|
|
1280
|
+
name: import_zod3.z.string().min(1).optional(),
|
|
1198
1281
|
target: TargetHintSchema.optional()
|
|
1199
1282
|
});
|
|
1200
1283
|
var InspectFindTextInputSchema = SessionIdSchema.extend({
|
|
1201
|
-
kind:
|
|
1202
|
-
text:
|
|
1284
|
+
kind: import_zod3.z.literal("text"),
|
|
1285
|
+
text: import_zod3.z.string().min(1),
|
|
1203
1286
|
target: TargetHintSchema.optional()
|
|
1204
1287
|
});
|
|
1205
1288
|
var InspectFindLabelInputSchema = SessionIdSchema.extend({
|
|
1206
|
-
kind:
|
|
1207
|
-
label:
|
|
1289
|
+
kind: import_zod3.z.literal("label"),
|
|
1290
|
+
label: import_zod3.z.string().min(1),
|
|
1208
1291
|
target: TargetHintSchema.optional()
|
|
1209
1292
|
});
|
|
1210
|
-
var InspectFindInputSchema =
|
|
1293
|
+
var InspectFindInputSchema = import_zod3.z.discriminatedUnion("kind", [
|
|
1211
1294
|
InspectFindRoleInputSchema,
|
|
1212
1295
|
InspectFindTextInputSchema,
|
|
1213
1296
|
InspectFindLabelInputSchema
|
|
1214
1297
|
]);
|
|
1215
|
-
var InspectFindMatchSchema =
|
|
1216
|
-
ref:
|
|
1217
|
-
role:
|
|
1218
|
-
name:
|
|
1298
|
+
var InspectFindMatchSchema = import_zod3.z.object({
|
|
1299
|
+
ref: import_zod3.z.string(),
|
|
1300
|
+
role: import_zod3.z.string().optional(),
|
|
1301
|
+
name: import_zod3.z.string().optional()
|
|
1219
1302
|
});
|
|
1220
|
-
var InspectFindOutputSchema =
|
|
1221
|
-
matches:
|
|
1222
|
-
warnings:
|
|
1303
|
+
var InspectFindOutputSchema = import_zod3.z.object({
|
|
1304
|
+
matches: import_zod3.z.array(InspectFindMatchSchema),
|
|
1305
|
+
warnings: import_zod3.z.array(import_zod3.z.string()).optional()
|
|
1223
1306
|
});
|
|
1224
1307
|
var InspectPageStateInputSchema = SessionIdSchema.extend({
|
|
1225
1308
|
target: TargetHintSchema.optional()
|
|
1226
1309
|
});
|
|
1227
1310
|
var InspectPageStateOutputSchema = PageStateSchema;
|
|
1228
|
-
var InspectExtractContentFormatSchema =
|
|
1311
|
+
var InspectExtractContentFormatSchema = import_zod3.z.enum([
|
|
1229
1312
|
"markdown",
|
|
1230
1313
|
"text",
|
|
1231
1314
|
"article_json"
|
|
1232
1315
|
]);
|
|
1233
1316
|
var InspectExtractContentInputSchema = SessionIdSchema.extend({
|
|
1234
1317
|
format: InspectExtractContentFormatSchema.default("markdown"),
|
|
1235
|
-
include_metadata:
|
|
1318
|
+
include_metadata: import_zod3.z.boolean().default(true),
|
|
1236
1319
|
target: TargetHintSchema.optional()
|
|
1237
1320
|
});
|
|
1238
|
-
var InspectExtractContentOutputSchema =
|
|
1239
|
-
content:
|
|
1240
|
-
title:
|
|
1241
|
-
byline:
|
|
1242
|
-
excerpt:
|
|
1243
|
-
siteName:
|
|
1244
|
-
warnings:
|
|
1321
|
+
var InspectExtractContentOutputSchema = import_zod3.z.object({
|
|
1322
|
+
content: import_zod3.z.string(),
|
|
1323
|
+
title: import_zod3.z.string().optional(),
|
|
1324
|
+
byline: import_zod3.z.string().optional(),
|
|
1325
|
+
excerpt: import_zod3.z.string().optional(),
|
|
1326
|
+
siteName: import_zod3.z.string().optional(),
|
|
1327
|
+
warnings: import_zod3.z.array(import_zod3.z.string()).optional()
|
|
1245
1328
|
});
|
|
1246
1329
|
var InspectConsoleListInputSchema = SessionIdSchema.extend({
|
|
1247
1330
|
target: TargetHintSchema.optional()
|
|
1248
1331
|
});
|
|
1249
|
-
var ConsoleSourceLocationSchema =
|
|
1250
|
-
url:
|
|
1332
|
+
var ConsoleSourceLocationSchema = import_zod3.z.object({
|
|
1333
|
+
url: import_zod3.z.string().optional(),
|
|
1251
1334
|
// 1-based line/column for human readability.
|
|
1252
|
-
line:
|
|
1253
|
-
column:
|
|
1335
|
+
line: import_zod3.z.number().int().positive().optional(),
|
|
1336
|
+
column: import_zod3.z.number().int().positive().optional()
|
|
1254
1337
|
}).passthrough();
|
|
1255
|
-
var ConsoleStackFrameSchema =
|
|
1256
|
-
functionName:
|
|
1257
|
-
url:
|
|
1338
|
+
var ConsoleStackFrameSchema = import_zod3.z.object({
|
|
1339
|
+
functionName: import_zod3.z.string().optional(),
|
|
1340
|
+
url: import_zod3.z.string().optional(),
|
|
1258
1341
|
// 1-based line/column for human readability.
|
|
1259
|
-
line:
|
|
1260
|
-
column:
|
|
1342
|
+
line: import_zod3.z.number().int().positive().optional(),
|
|
1343
|
+
column: import_zod3.z.number().int().positive().optional()
|
|
1261
1344
|
}).passthrough();
|
|
1262
|
-
var ConsoleRemoteObjectSchema =
|
|
1263
|
-
type:
|
|
1264
|
-
subtype:
|
|
1265
|
-
description:
|
|
1266
|
-
value:
|
|
1267
|
-
unserializableValue:
|
|
1345
|
+
var ConsoleRemoteObjectSchema = import_zod3.z.object({
|
|
1346
|
+
type: import_zod3.z.string().optional(),
|
|
1347
|
+
subtype: import_zod3.z.string().optional(),
|
|
1348
|
+
description: import_zod3.z.string().optional(),
|
|
1349
|
+
value: import_zod3.z.unknown().optional(),
|
|
1350
|
+
unserializableValue: import_zod3.z.string().optional()
|
|
1268
1351
|
}).passthrough();
|
|
1269
|
-
var ConsoleEntrySchema =
|
|
1270
|
-
level:
|
|
1271
|
-
text:
|
|
1272
|
-
timestamp:
|
|
1352
|
+
var ConsoleEntrySchema = import_zod3.z.object({
|
|
1353
|
+
level: import_zod3.z.string().optional(),
|
|
1354
|
+
text: import_zod3.z.string().optional(),
|
|
1355
|
+
timestamp: import_zod3.z.string().datetime().optional(),
|
|
1273
1356
|
source: ConsoleSourceLocationSchema.optional(),
|
|
1274
|
-
stack:
|
|
1357
|
+
stack: import_zod3.z.array(ConsoleStackFrameSchema).optional(),
|
|
1275
1358
|
exception: ConsoleRemoteObjectSchema.optional(),
|
|
1276
|
-
args:
|
|
1359
|
+
args: import_zod3.z.array(ConsoleRemoteObjectSchema).optional()
|
|
1277
1360
|
}).passthrough();
|
|
1278
|
-
var ConsoleListSchema =
|
|
1279
|
-
entries:
|
|
1361
|
+
var ConsoleListSchema = import_zod3.z.object({
|
|
1362
|
+
entries: import_zod3.z.array(ConsoleEntrySchema)
|
|
1280
1363
|
}).passthrough();
|
|
1281
1364
|
var InspectConsoleListOutputSchema = ConsoleListSchema;
|
|
1282
|
-
var ArtifactInfoSchema =
|
|
1283
|
-
artifact_id:
|
|
1284
|
-
path:
|
|
1285
|
-
mime:
|
|
1365
|
+
var ArtifactInfoSchema = import_zod3.z.object({
|
|
1366
|
+
artifact_id: import_zod3.z.string(),
|
|
1367
|
+
path: import_zod3.z.string(),
|
|
1368
|
+
mime: import_zod3.z.string()
|
|
1286
1369
|
});
|
|
1287
1370
|
var InspectNetworkHarInputSchema = SessionIdSchema.extend({
|
|
1288
1371
|
target: TargetHintSchema.optional()
|
|
1289
1372
|
});
|
|
1290
1373
|
var InspectNetworkHarOutputSchema = ArtifactInfoSchema;
|
|
1291
|
-
var InspectEvaluateInputSchema =
|
|
1292
|
-
session_id:
|
|
1293
|
-
expression:
|
|
1374
|
+
var InspectEvaluateInputSchema = import_zod3.z.object({
|
|
1375
|
+
session_id: import_zod3.z.string().min(1),
|
|
1376
|
+
expression: import_zod3.z.string().min(1).optional(),
|
|
1294
1377
|
target: TargetHintSchema.optional()
|
|
1295
1378
|
});
|
|
1296
|
-
var EvaluateResultSchema =
|
|
1297
|
-
value:
|
|
1298
|
-
exception:
|
|
1379
|
+
var EvaluateResultSchema = import_zod3.z.object({
|
|
1380
|
+
value: import_zod3.z.unknown().optional(),
|
|
1381
|
+
exception: import_zod3.z.unknown().optional()
|
|
1299
1382
|
}).passthrough();
|
|
1300
1383
|
var InspectEvaluateOutputSchema = EvaluateResultSchema;
|
|
1301
1384
|
var InspectPerformanceMetricsInputSchema = SessionIdSchema.extend({
|
|
1302
1385
|
target: TargetHintSchema.optional()
|
|
1303
1386
|
});
|
|
1304
|
-
var PerformanceMetricSchema =
|
|
1305
|
-
name:
|
|
1306
|
-
value:
|
|
1387
|
+
var PerformanceMetricSchema = import_zod3.z.object({
|
|
1388
|
+
name: import_zod3.z.string(),
|
|
1389
|
+
value: import_zod3.z.number().finite()
|
|
1307
1390
|
}).passthrough();
|
|
1308
|
-
var PerformanceMetricsSchema =
|
|
1309
|
-
metrics:
|
|
1391
|
+
var PerformanceMetricsSchema = import_zod3.z.object({
|
|
1392
|
+
metrics: import_zod3.z.array(PerformanceMetricSchema)
|
|
1310
1393
|
}).passthrough();
|
|
1311
1394
|
var InspectPerformanceMetricsOutputSchema = PerformanceMetricsSchema;
|
|
1312
|
-
var ArtifactsScreenshotInputSchema =
|
|
1313
|
-
session_id:
|
|
1314
|
-
target:
|
|
1315
|
-
fullPage:
|
|
1316
|
-
selector:
|
|
1317
|
-
format:
|
|
1318
|
-
quality:
|
|
1395
|
+
var ArtifactsScreenshotInputSchema = import_zod3.z.object({
|
|
1396
|
+
session_id: import_zod3.z.string().min(1),
|
|
1397
|
+
target: import_zod3.z.enum(["viewport", "full"]).default("viewport"),
|
|
1398
|
+
fullPage: import_zod3.z.boolean().default(false),
|
|
1399
|
+
selector: import_zod3.z.string().min(1).optional(),
|
|
1400
|
+
format: import_zod3.z.enum(["png", "jpeg", "webp"]).default("png"),
|
|
1401
|
+
quality: import_zod3.z.number().min(0).max(100).optional()
|
|
1319
1402
|
});
|
|
1320
1403
|
var ArtifactsScreenshotOutputSchema = ArtifactInfoSchema;
|
|
1321
|
-
var HealthCheckInputSchema =
|
|
1322
|
-
var HealthCheckOutputSchema =
|
|
1323
|
-
started_at:
|
|
1324
|
-
uptime_ms:
|
|
1325
|
-
memory:
|
|
1326
|
-
rss:
|
|
1327
|
-
heapTotal:
|
|
1328
|
-
heapUsed:
|
|
1329
|
-
external:
|
|
1330
|
-
arrayBuffers:
|
|
1404
|
+
var HealthCheckInputSchema = import_zod3.z.object({});
|
|
1405
|
+
var HealthCheckOutputSchema = import_zod3.z.object({
|
|
1406
|
+
started_at: import_zod3.z.string().min(1),
|
|
1407
|
+
uptime_ms: import_zod3.z.number().finite().nonnegative(),
|
|
1408
|
+
memory: import_zod3.z.object({
|
|
1409
|
+
rss: import_zod3.z.number().finite().nonnegative(),
|
|
1410
|
+
heapTotal: import_zod3.z.number().finite().nonnegative(),
|
|
1411
|
+
heapUsed: import_zod3.z.number().finite().nonnegative(),
|
|
1412
|
+
external: import_zod3.z.number().finite().nonnegative(),
|
|
1413
|
+
arrayBuffers: import_zod3.z.number().finite().nonnegative().optional()
|
|
1331
1414
|
}).passthrough(),
|
|
1332
|
-
sessions:
|
|
1333
|
-
active:
|
|
1415
|
+
sessions: import_zod3.z.object({
|
|
1416
|
+
active: import_zod3.z.number().finite().nonnegative()
|
|
1334
1417
|
}).passthrough(),
|
|
1335
|
-
extension:
|
|
1336
|
-
connected:
|
|
1337
|
-
last_seen_at:
|
|
1418
|
+
extension: import_zod3.z.object({
|
|
1419
|
+
connected: import_zod3.z.boolean(),
|
|
1420
|
+
last_seen_at: import_zod3.z.string().min(1).optional()
|
|
1338
1421
|
}).passthrough()
|
|
1339
1422
|
}).passthrough();
|
|
1340
|
-
var DiagnosticsDoctorInputSchema =
|
|
1341
|
-
session_id:
|
|
1423
|
+
var DiagnosticsDoctorInputSchema = import_zod3.z.object({
|
|
1424
|
+
session_id: import_zod3.z.string().min(1).optional(),
|
|
1342
1425
|
caller: DiagnosticsRuntimeCallerSchema.optional()
|
|
1343
1426
|
});
|
|
1344
1427
|
var DiagnosticsDoctorOutputSchema = DiagnosticReportSchema;
|
|
1345
1428
|
|
|
1346
1429
|
// packages/cli/src/cli-output.ts
|
|
1347
|
-
var
|
|
1430
|
+
var import_zod4 = require("zod");
|
|
1348
1431
|
|
|
1349
1432
|
// packages/cli/src/core-client.ts
|
|
1350
1433
|
var import_node_child_process = require("node:child_process");
|
|
@@ -1378,6 +1461,7 @@ var createCoreClient = (options = {}) => {
|
|
|
1378
1461
|
const fetchImpl = options.fetchImpl ?? fetch;
|
|
1379
1462
|
const spawnImpl = options.spawnImpl ?? import_node_child_process.spawn;
|
|
1380
1463
|
const timeoutMs = resolveTimeoutMs2(options.timeoutMs);
|
|
1464
|
+
const componentVersion = process.env.BROWSER_BRIDGE_VERSION ?? process.env.npm_package_version;
|
|
1381
1465
|
const readiness = createCoreReadinessController({
|
|
1382
1466
|
host: options.host,
|
|
1383
1467
|
port: options.port,
|
|
@@ -1441,7 +1525,8 @@ startCoreServer({ ${startOptions.join(
|
|
|
1441
1525
|
response = await fetchImpl(`${readiness.baseUrl}${requestPath}`, {
|
|
1442
1526
|
method,
|
|
1443
1527
|
headers: {
|
|
1444
|
-
"content-type": "application/json"
|
|
1528
|
+
"content-type": "application/json",
|
|
1529
|
+
[HTTP_CONTRACT_VERSION_HEADER]: HTTP_CONTRACT_VERSION
|
|
1445
1530
|
},
|
|
1446
1531
|
body: body === void 0 ? void 0 : JSON.stringify(body),
|
|
1447
1532
|
signal: controller.signal
|
|
@@ -1459,6 +1544,12 @@ startCoreServer({ ${startOptions.join(
|
|
|
1459
1544
|
code: "TIMEOUT",
|
|
1460
1545
|
message: `Core request timed out after ${timeoutMs}ms.`,
|
|
1461
1546
|
retryable: true,
|
|
1547
|
+
retry: {
|
|
1548
|
+
retryable: true,
|
|
1549
|
+
reason: "core_request_timeout",
|
|
1550
|
+
retry_after_ms: 250,
|
|
1551
|
+
max_attempts: 1
|
|
1552
|
+
},
|
|
1462
1553
|
details: {
|
|
1463
1554
|
timeout_ms: timeoutMs,
|
|
1464
1555
|
base_url: readiness.baseUrl,
|
|
@@ -1515,7 +1606,29 @@ startCoreServer({ ${startOptions.join(
|
|
|
1515
1606
|
const post = async (path9, body) => {
|
|
1516
1607
|
await readiness.ensureReady();
|
|
1517
1608
|
readiness.refreshRuntime();
|
|
1518
|
-
|
|
1609
|
+
const payload = path9 === "/diagnostics/doctor" && (!body || typeof body === "object" && !Array.isArray(body)) ? {
|
|
1610
|
+
...body && typeof body === "object" ? body : {},
|
|
1611
|
+
caller: {
|
|
1612
|
+
endpoint: {
|
|
1613
|
+
host: readiness.runtime.host,
|
|
1614
|
+
port: readiness.runtime.port,
|
|
1615
|
+
base_url: readiness.baseUrl,
|
|
1616
|
+
host_source: readiness.runtime.hostSource,
|
|
1617
|
+
port_source: readiness.runtime.portSource,
|
|
1618
|
+
metadata_path: readiness.runtime.metadataPath,
|
|
1619
|
+
isolated_mode: readiness.runtime.isolatedMode
|
|
1620
|
+
},
|
|
1621
|
+
process: {
|
|
1622
|
+
component: "cli",
|
|
1623
|
+
version: componentVersion,
|
|
1624
|
+
pid: process.pid,
|
|
1625
|
+
node_version: process.version,
|
|
1626
|
+
binary_path: process.execPath,
|
|
1627
|
+
argv_entry: process.argv[1]
|
|
1628
|
+
}
|
|
1629
|
+
}
|
|
1630
|
+
} : body;
|
|
1631
|
+
return requestJson("POST", path9, payload);
|
|
1519
1632
|
};
|
|
1520
1633
|
return {
|
|
1521
1634
|
get baseUrl() {
|
|
@@ -1571,7 +1684,7 @@ var toErrorInfo = (error) => {
|
|
|
1571
1684
|
if (error instanceof CoreClientError) {
|
|
1572
1685
|
return error.info;
|
|
1573
1686
|
}
|
|
1574
|
-
if (error instanceof
|
|
1687
|
+
if (error instanceof import_zod4.ZodError) {
|
|
1575
1688
|
const [issue] = error.issues;
|
|
1576
1689
|
return {
|
|
1577
1690
|
code: "INVALID_ARGUMENT",
|
|
@@ -1729,25 +1842,52 @@ var parseNumber2 = (value) => {
|
|
|
1729
1842
|
const parsed = Number(value);
|
|
1730
1843
|
return Number.isFinite(parsed) ? parsed : Number.NaN;
|
|
1731
1844
|
};
|
|
1845
|
+
var addDeprecatedDialogAliasWarning = (envelope2, aliasName) => {
|
|
1846
|
+
if (!envelope2.ok || typeof envelope2.result !== "object" || !envelope2.result) {
|
|
1847
|
+
return envelope2;
|
|
1848
|
+
}
|
|
1849
|
+
const warning = `${aliasName} is deprecated; use drive.handle_dialog.`;
|
|
1850
|
+
const result = envelope2.result;
|
|
1851
|
+
const existingWarnings = Array.isArray(result.warnings) ? result.warnings.filter((item) => typeof item === "string") : [];
|
|
1852
|
+
return {
|
|
1853
|
+
ok: true,
|
|
1854
|
+
result: {
|
|
1855
|
+
...result,
|
|
1856
|
+
warnings: existingWarnings.includes(warning) ? existingWarnings : [...existingWarnings, warning]
|
|
1857
|
+
}
|
|
1858
|
+
};
|
|
1859
|
+
};
|
|
1732
1860
|
var registerDialogCommands = (program2) => {
|
|
1733
1861
|
const dialog = program2.command("dialog").description("Dialog commands");
|
|
1734
|
-
dialog.command("accept").description("
|
|
1862
|
+
dialog.command("accept").description("Deprecated alias for drive handle-dialog --action accept").requiredOption("--session-id <id>", "Session identifier").option("--prompt-text <text>", "Prompt text for prompt() dialogs").option("--tab-id <id>", "Tab identifier").action(async (options, command) => {
|
|
1735
1863
|
await runCommand(command, (client) => {
|
|
1736
|
-
const
|
|
1864
|
+
const aliasPayload = parseInput(DialogAcceptInputSchema, {
|
|
1737
1865
|
session_id: options.sessionId,
|
|
1738
1866
|
promptText: options.promptText,
|
|
1739
1867
|
tab_id: parseNumber2(options.tabId)
|
|
1740
1868
|
});
|
|
1741
|
-
|
|
1869
|
+
const payload = parseInput(DriveHandleDialogInputSchema, {
|
|
1870
|
+
...aliasPayload,
|
|
1871
|
+
action: "accept"
|
|
1872
|
+
});
|
|
1873
|
+
return client.post("/drive/handle_dialog", payload).then(
|
|
1874
|
+
(envelope2) => addDeprecatedDialogAliasWarning(envelope2, "dialog.accept")
|
|
1875
|
+
);
|
|
1742
1876
|
});
|
|
1743
1877
|
});
|
|
1744
|
-
dialog.command("dismiss").description("
|
|
1878
|
+
dialog.command("dismiss").description("Deprecated alias for drive handle-dialog --action dismiss").requiredOption("--session-id <id>", "Session identifier").option("--tab-id <id>", "Tab identifier").action(async (options, command) => {
|
|
1745
1879
|
await runCommand(command, (client) => {
|
|
1746
|
-
const
|
|
1880
|
+
const aliasPayload = parseInput(DialogDismissInputSchema, {
|
|
1747
1881
|
session_id: options.sessionId,
|
|
1748
1882
|
tab_id: parseNumber2(options.tabId)
|
|
1749
1883
|
});
|
|
1750
|
-
|
|
1884
|
+
const payload = parseInput(DriveHandleDialogInputSchema, {
|
|
1885
|
+
...aliasPayload,
|
|
1886
|
+
action: "dismiss"
|
|
1887
|
+
});
|
|
1888
|
+
return client.post("/drive/handle_dialog", payload).then(
|
|
1889
|
+
(envelope2) => addDeprecatedDialogAliasWarning(envelope2, "dialog.dismiss")
|
|
1890
|
+
);
|
|
1751
1891
|
});
|
|
1752
1892
|
});
|
|
1753
1893
|
};
|
|
@@ -1756,26 +1896,9 @@ var registerDialogCommands = (program2) => {
|
|
|
1756
1896
|
var registerDiagnosticsCommands = (program2) => {
|
|
1757
1897
|
const diagnostics = program2.command("diagnostics").description("Diagnostics commands");
|
|
1758
1898
|
diagnostics.command("doctor").description("Run diagnostics").option("--session-id <id>", "Session identifier").action(async (options, command) => {
|
|
1759
|
-
await runCommand(command, (client
|
|
1760
|
-
const runtime = resolveCoreRuntime({
|
|
1761
|
-
host: globalOptions.host,
|
|
1762
|
-
port: globalOptions.port,
|
|
1763
|
-
strictEnvPort: true
|
|
1764
|
-
});
|
|
1899
|
+
await runCommand(command, (client) => {
|
|
1765
1900
|
const payload = parseInput(DiagnosticsDoctorInputSchema, {
|
|
1766
|
-
session_id: options.sessionId
|
|
1767
|
-
caller: {
|
|
1768
|
-
endpoint: {
|
|
1769
|
-
host: runtime.host,
|
|
1770
|
-
port: runtime.port,
|
|
1771
|
-
base_url: `http://${runtime.host}:${runtime.port}`,
|
|
1772
|
-
host_source: runtime.hostSource,
|
|
1773
|
-
port_source: runtime.portSource
|
|
1774
|
-
},
|
|
1775
|
-
process: {
|
|
1776
|
-
component: "cli"
|
|
1777
|
-
}
|
|
1778
|
-
}
|
|
1901
|
+
session_id: options.sessionId
|
|
1779
1902
|
});
|
|
1780
1903
|
return client.post("/diagnostics/doctor", payload);
|
|
1781
1904
|
});
|
|
@@ -1783,7 +1906,7 @@ var registerDiagnosticsCommands = (program2) => {
|
|
|
1783
1906
|
diagnostics.command("health-check").description("Run a lightweight health check").action(async (_options, command) => {
|
|
1784
1907
|
await runCommand(command, (client) => {
|
|
1785
1908
|
const payload = parseInput(HealthCheckInputSchema, {});
|
|
1786
|
-
return client.post("/
|
|
1909
|
+
return client.post("/health/check", payload);
|
|
1787
1910
|
});
|
|
1788
1911
|
});
|
|
1789
1912
|
};
|
|
@@ -2004,12 +2127,30 @@ var parseJson = (value, label) => {
|
|
|
2004
2127
|
throw new Error(`${label} must be valid JSON.`);
|
|
2005
2128
|
}
|
|
2006
2129
|
};
|
|
2130
|
+
var addDeprecatedAliasWarning = (envelope2, aliasName, replacementName) => {
|
|
2131
|
+
if (!envelope2.ok || typeof envelope2.result !== "object" || !envelope2.result) {
|
|
2132
|
+
return envelope2;
|
|
2133
|
+
}
|
|
2134
|
+
const warning = `${aliasName} is deprecated; use ${replacementName}.`;
|
|
2135
|
+
const result = envelope2.result;
|
|
2136
|
+
const existingWarnings = Array.isArray(result.warnings) ? result.warnings.filter((item) => typeof item === "string") : [];
|
|
2137
|
+
return {
|
|
2138
|
+
ok: true,
|
|
2139
|
+
result: {
|
|
2140
|
+
...result,
|
|
2141
|
+
warnings: existingWarnings.includes(warning) ? existingWarnings : [...existingWarnings, warning]
|
|
2142
|
+
}
|
|
2143
|
+
};
|
|
2144
|
+
};
|
|
2007
2145
|
var registerDriveCommands = (program2) => {
|
|
2008
2146
|
const drive = program2.command("drive").description("Drive commands");
|
|
2009
|
-
drive.command("navigate").description("Navigate to a URL").
|
|
2147
|
+
drive.command("navigate").description("Navigate to a URL").option(
|
|
2148
|
+
"--session-id <id>",
|
|
2149
|
+
"Session identifier (auto-created when omitted)"
|
|
2150
|
+
).requiredOption("--url <url>", "URL to navigate to").option("--tab-id <id>", "Tab identifier (defaults to agent window/tab)").option("--wait <mode>", "Wait mode (none, domcontentloaded)").action(async (options, command) => {
|
|
2010
2151
|
await runCommand(command, (client) => {
|
|
2011
2152
|
const payload = parseInput(DriveNavigateInputSchema, {
|
|
2012
|
-
session_id: options.sessionId,
|
|
2153
|
+
...options.sessionId ? { session_id: options.sessionId } : {},
|
|
2013
2154
|
url: options.url,
|
|
2014
2155
|
tab_id: parseNumber3(options.tabId),
|
|
2015
2156
|
wait: options.wait
|
|
@@ -2026,13 +2167,15 @@ var registerDriveCommands = (program2) => {
|
|
|
2026
2167
|
return client.post("/drive/go_back", payload);
|
|
2027
2168
|
});
|
|
2028
2169
|
});
|
|
2029
|
-
drive.command("back").description("
|
|
2170
|
+
drive.command("back").description("Deprecated alias for go-back").requiredOption("--session-id <id>", "Session identifier").option("--tab-id <id>", "Tab identifier (defaults to agent window/tab)").action(async (options, command) => {
|
|
2030
2171
|
await runCommand(command, (client) => {
|
|
2031
|
-
const payload = parseInput(
|
|
2172
|
+
const payload = parseInput(DriveGoBackInputSchema, {
|
|
2032
2173
|
session_id: options.sessionId,
|
|
2033
2174
|
tab_id: parseNumber3(options.tabId)
|
|
2034
2175
|
});
|
|
2035
|
-
return client.post("/drive/
|
|
2176
|
+
return client.post("/drive/go_back", payload).then(
|
|
2177
|
+
(envelope2) => addDeprecatedAliasWarning(envelope2, "drive.back", "drive.go_back")
|
|
2178
|
+
);
|
|
2036
2179
|
});
|
|
2037
2180
|
});
|
|
2038
2181
|
drive.command("go-forward").description("Go forward in browser history").requiredOption("--session-id <id>", "Session identifier").option("--tab-id <id>", "Tab identifier (defaults to agent window/tab)").action(async (options, command) => {
|
|
@@ -2044,13 +2187,19 @@ var registerDriveCommands = (program2) => {
|
|
|
2044
2187
|
return client.post("/drive/go_forward", payload);
|
|
2045
2188
|
});
|
|
2046
2189
|
});
|
|
2047
|
-
drive.command("forward").description("
|
|
2190
|
+
drive.command("forward").description("Deprecated alias for go-forward").requiredOption("--session-id <id>", "Session identifier").option("--tab-id <id>", "Tab identifier (defaults to agent window/tab)").action(async (options, command) => {
|
|
2048
2191
|
await runCommand(command, (client) => {
|
|
2049
|
-
const payload = parseInput(
|
|
2192
|
+
const payload = parseInput(DriveGoForwardInputSchema, {
|
|
2050
2193
|
session_id: options.sessionId,
|
|
2051
2194
|
tab_id: parseNumber3(options.tabId)
|
|
2052
2195
|
});
|
|
2053
|
-
return client.post("/drive/
|
|
2196
|
+
return client.post("/drive/go_forward", payload).then(
|
|
2197
|
+
(envelope2) => addDeprecatedAliasWarning(
|
|
2198
|
+
envelope2,
|
|
2199
|
+
"drive.forward",
|
|
2200
|
+
"drive.go_forward"
|
|
2201
|
+
)
|
|
2202
|
+
);
|
|
2054
2203
|
});
|
|
2055
2204
|
});
|
|
2056
2205
|
drive.command("click").description("Click an element").requiredOption("--session-id <id>", "Session identifier").option("--tab-id <id>", "Tab identifier (defaults to agent window/tab)").option("--locator-ref <ref>", "Locator ref (e.g., @e1)").option("--locator-testid <id>", "Locator test id").option("--locator-css <selector>", "Locator CSS selector").option("--locator-text <text>", "Locator text").option("--locator-role <role>", "Locator role name").option("--locator-role-value <value>", "Locator role value").option("--click-count <count>", "Click count").action(async (options, command) => {
|
|
@@ -2400,6 +2549,12 @@ var toReadinessErrorEnvelope = (error, baseUrl) => ({
|
|
|
2400
2549
|
code: "UNAVAILABLE",
|
|
2401
2550
|
message: error instanceof Error ? `Core not ready at ${baseUrl}: ${error.message}` : `Core not ready at ${baseUrl}.`,
|
|
2402
2551
|
retryable: true,
|
|
2552
|
+
retry: {
|
|
2553
|
+
retryable: true,
|
|
2554
|
+
reason: "core_not_ready",
|
|
2555
|
+
retry_after_ms: 250,
|
|
2556
|
+
max_attempts: 1
|
|
2557
|
+
},
|
|
2403
2558
|
details: {
|
|
2404
2559
|
base_url: baseUrl
|
|
2405
2560
|
}
|
|
@@ -2477,7 +2632,8 @@ startCoreServer({ ${startOptions.join(
|
|
|
2477
2632
|
const response = await fetchImpl(`${readiness.baseUrl}${requestPath}`, {
|
|
2478
2633
|
method: "POST",
|
|
2479
2634
|
headers: {
|
|
2480
|
-
"content-type": "application/json"
|
|
2635
|
+
"content-type": "application/json",
|
|
2636
|
+
[HTTP_CONTRACT_VERSION_HEADER]: HTTP_CONTRACT_VERSION
|
|
2481
2637
|
},
|
|
2482
2638
|
body: body === void 0 ? void 0 : JSON.stringify(body),
|
|
2483
2639
|
signal: controller.signal
|
|
@@ -2590,6 +2746,22 @@ var toInternalErrorEnvelope = (error) => ({
|
|
|
2590
2746
|
}
|
|
2591
2747
|
});
|
|
2592
2748
|
var envelope = (schema) => successEnvelopeSchema(schema);
|
|
2749
|
+
var isRecord = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
|
|
2750
|
+
var addDeprecatedAliasWarning2 = (envelopeResult, deprecationAlias) => {
|
|
2751
|
+
if (!deprecationAlias || !envelopeResult.ok || typeof envelopeResult.result !== "object" || !envelopeResult.result) {
|
|
2752
|
+
return envelopeResult;
|
|
2753
|
+
}
|
|
2754
|
+
const warning = `${deprecationAlias.alias} is deprecated; use ${deprecationAlias.replacement}.`;
|
|
2755
|
+
const result = envelopeResult.result;
|
|
2756
|
+
const existingWarnings = Array.isArray(result.warnings) ? result.warnings.filter((item) => typeof item === "string") : [];
|
|
2757
|
+
return {
|
|
2758
|
+
ok: true,
|
|
2759
|
+
result: {
|
|
2760
|
+
...result,
|
|
2761
|
+
warnings: existingWarnings.includes(warning) ? existingWarnings : [...existingWarnings, warning]
|
|
2762
|
+
}
|
|
2763
|
+
};
|
|
2764
|
+
};
|
|
2593
2765
|
var TOOL_DEFINITIONS = [
|
|
2594
2766
|
{
|
|
2595
2767
|
name: "session.create",
|
|
@@ -2665,20 +2837,28 @@ var TOOL_DEFINITIONS = [
|
|
|
2665
2837
|
name: "drive.back",
|
|
2666
2838
|
config: {
|
|
2667
2839
|
title: "Drive Back",
|
|
2668
|
-
description: "
|
|
2669
|
-
inputSchema:
|
|
2670
|
-
outputSchema: envelope(
|
|
2671
|
-
corePath: "/drive/
|
|
2840
|
+
description: "Deprecated alias for drive.go_back.",
|
|
2841
|
+
inputSchema: DriveGoBackInputSchema,
|
|
2842
|
+
outputSchema: envelope(DriveGoBackOutputSchema),
|
|
2843
|
+
corePath: "/drive/go_back",
|
|
2844
|
+
deprecationAlias: {
|
|
2845
|
+
alias: "drive.back",
|
|
2846
|
+
replacement: "drive.go_back"
|
|
2847
|
+
}
|
|
2672
2848
|
}
|
|
2673
2849
|
},
|
|
2674
2850
|
{
|
|
2675
2851
|
name: "drive.forward",
|
|
2676
2852
|
config: {
|
|
2677
2853
|
title: "Drive Forward",
|
|
2678
|
-
description: "
|
|
2679
|
-
inputSchema:
|
|
2680
|
-
outputSchema: envelope(
|
|
2681
|
-
corePath: "/drive/
|
|
2854
|
+
description: "Deprecated alias for drive.go_forward.",
|
|
2855
|
+
inputSchema: DriveGoForwardInputSchema,
|
|
2856
|
+
outputSchema: envelope(DriveGoForwardOutputSchema),
|
|
2857
|
+
corePath: "/drive/go_forward",
|
|
2858
|
+
deprecationAlias: {
|
|
2859
|
+
alias: "drive.forward",
|
|
2860
|
+
replacement: "drive.go_forward"
|
|
2861
|
+
}
|
|
2682
2862
|
}
|
|
2683
2863
|
},
|
|
2684
2864
|
{
|
|
@@ -2755,20 +2935,30 @@ var TOOL_DEFINITIONS = [
|
|
|
2755
2935
|
name: "dialog.accept",
|
|
2756
2936
|
config: {
|
|
2757
2937
|
title: "Dialog Accept",
|
|
2758
|
-
description: "
|
|
2938
|
+
description: "Deprecated alias for drive.handle_dialog (action=accept).",
|
|
2759
2939
|
inputSchema: DialogAcceptInputSchema,
|
|
2760
2940
|
outputSchema: envelope(DialogAcceptOutputSchema),
|
|
2761
|
-
corePath: "/
|
|
2941
|
+
corePath: "/drive/handle_dialog",
|
|
2942
|
+
deprecationAlias: {
|
|
2943
|
+
alias: "dialog.accept",
|
|
2944
|
+
replacement: "drive.handle_dialog"
|
|
2945
|
+
},
|
|
2946
|
+
transformInput: (args) => isRecord(args) ? { ...args, action: "accept" } : args
|
|
2762
2947
|
}
|
|
2763
2948
|
},
|
|
2764
2949
|
{
|
|
2765
2950
|
name: "dialog.dismiss",
|
|
2766
2951
|
config: {
|
|
2767
2952
|
title: "Dialog Dismiss",
|
|
2768
|
-
description: "
|
|
2953
|
+
description: "Deprecated alias for drive.handle_dialog (action=dismiss).",
|
|
2769
2954
|
inputSchema: DialogDismissInputSchema,
|
|
2770
2955
|
outputSchema: envelope(DialogDismissOutputSchema),
|
|
2771
|
-
corePath: "/
|
|
2956
|
+
corePath: "/drive/handle_dialog",
|
|
2957
|
+
deprecationAlias: {
|
|
2958
|
+
alias: "dialog.dismiss",
|
|
2959
|
+
replacement: "drive.handle_dialog"
|
|
2960
|
+
},
|
|
2961
|
+
transformInput: (args) => isRecord(args) ? { ...args, action: "dismiss" } : args
|
|
2772
2962
|
}
|
|
2773
2963
|
},
|
|
2774
2964
|
{
|
|
@@ -2948,7 +3138,7 @@ var TOOL_DEFINITIONS = [
|
|
|
2948
3138
|
description: "Check server health including uptime, memory usage, active session count, and extension connection status.",
|
|
2949
3139
|
inputSchema: HealthCheckInputSchema,
|
|
2950
3140
|
outputSchema: envelope(HealthCheckOutputSchema),
|
|
2951
|
-
corePath: "/
|
|
3141
|
+
corePath: "/health/check"
|
|
2952
3142
|
}
|
|
2953
3143
|
},
|
|
2954
3144
|
{
|
|
@@ -2962,13 +3152,18 @@ var TOOL_DEFINITIONS = [
|
|
|
2962
3152
|
}
|
|
2963
3153
|
}
|
|
2964
3154
|
];
|
|
2965
|
-
var createToolHandler = (clientProvider, corePath) => {
|
|
3155
|
+
var createToolHandler = (clientProvider, corePath, deprecationAlias, transformInput) => {
|
|
2966
3156
|
return (async (args, _extra) => {
|
|
2967
3157
|
void _extra;
|
|
2968
3158
|
try {
|
|
2969
3159
|
const client = typeof clientProvider === "function" ? await clientProvider() : clientProvider;
|
|
2970
|
-
const envelopeResult = await client.post(
|
|
2971
|
-
|
|
3160
|
+
const envelopeResult = await client.post(
|
|
3161
|
+
corePath,
|
|
3162
|
+
transformInput ? transformInput(args) : args
|
|
3163
|
+
);
|
|
3164
|
+
return toToolResult(
|
|
3165
|
+
addDeprecatedAliasWarning2(envelopeResult, deprecationAlias)
|
|
3166
|
+
);
|
|
2972
3167
|
} catch (error) {
|
|
2973
3168
|
const parsed = ErrorEnvelopeSchema.safeParse(error);
|
|
2974
3169
|
if (parsed.success) {
|
|
@@ -2988,7 +3183,12 @@ var registerBrowserBridgeTools = (server, clientProvider) => {
|
|
|
2988
3183
|
inputSchema: tool.config.inputSchema,
|
|
2989
3184
|
outputSchema: tool.config.outputSchema
|
|
2990
3185
|
},
|
|
2991
|
-
createToolHandler(
|
|
3186
|
+
createToolHandler(
|
|
3187
|
+
clientProvider,
|
|
3188
|
+
tool.config.corePath,
|
|
3189
|
+
tool.config.deprecationAlias,
|
|
3190
|
+
tool.config.transformInput
|
|
3191
|
+
)
|
|
2992
3192
|
);
|
|
2993
3193
|
}
|
|
2994
3194
|
};
|