@btraut/browser-bridge 0.12.0 → 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/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 resolveCwd = (cwd) => (0, import_node_path.resolve)(cwd ?? process.cwd());
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 = process.cwd()) => {
196
- let current = (0, import_node_path.resolve)(cwd);
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: "GET",
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 ErrorCodeSchema = import_zod.z.enum([
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 ErrorInfoSchema = import_zod.z.object({
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: import_zod.z.string(),
791
- retryable: import_zod.z.boolean(),
792
- details: import_zod.z.record(import_zod.z.string(), import_zod.z.unknown()).optional()
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 = import_zod.z.object({
795
- ok: import_zod.z.literal(false),
876
+ var ErrorEnvelopeSchema = import_zod2.z.object({
877
+ ok: import_zod2.z.literal(false),
796
878
  error: ErrorInfoSchema
797
879
  });
798
- var successEnvelopeSchema = (result) => import_zod.z.object({
799
- ok: import_zod.z.literal(true),
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 import_zod2 = require("zod");
805
- var LocatorRoleSchema = import_zod2.z.object({
806
- name: import_zod2.z.string(),
807
- value: import_zod2.z.string().optional()
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 = import_zod2.z.object({
810
- ref: import_zod2.z.string().min(1).optional(),
811
- testid: import_zod2.z.string().min(1).optional(),
812
- css: import_zod2.z.string().min(1).optional(),
813
- text: import_zod2.z.string().min(1).optional(),
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 = import_zod2.z.object({
824
- ok: import_zod2.z.literal(true),
825
- message: import_zod2.z.string().optional(),
826
- warnings: import_zod2.z.array(import_zod2.z.string()).optional()
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 = import_zod2.z.enum([
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 = import_zod2.z.object({
839
- session_id: import_zod2.z.string(),
920
+ var SessionInfoSchema = import_zod3.z.object({
921
+ session_id: import_zod3.z.string(),
840
922
  state: SessionStateSchema,
841
- created_at: import_zod2.z.string().datetime().optional()
923
+ created_at: import_zod3.z.string().datetime().optional()
842
924
  });
843
- var SessionPlaneStatusSchema = import_zod2.z.object({
844
- connected: import_zod2.z.boolean(),
845
- last_seen_at: import_zod2.z.string().datetime().optional(),
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 = import_zod2.z.object({
849
- session_id: import_zod2.z.string(),
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: import_zod2.z.string().datetime().optional()
935
+ updated_at: import_zod3.z.string().datetime().optional()
854
936
  });
855
- var RecoverResultSchema = import_zod2.z.object({
856
- session_id: import_zod2.z.string(),
857
- recovered: import_zod2.z.boolean(),
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: import_zod2.z.string().optional()
941
+ message: import_zod3.z.string().optional()
860
942
  });
861
- var DiagnosticCheckSchema = import_zod2.z.object({
862
- name: import_zod2.z.string(),
863
- ok: import_zod2.z.boolean(),
864
- message: import_zod2.z.string().optional(),
865
- details: import_zod2.z.record(import_zod2.z.string(), import_zod2.z.unknown()).optional()
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 = import_zod2.z.object({
868
- host: import_zod2.z.string().optional(),
869
- port: import_zod2.z.number().finite().optional(),
870
- base_url: import_zod2.z.string().optional(),
871
- host_source: import_zod2.z.string().optional(),
872
- port_source: import_zod2.z.string().optional(),
873
- metadata_path: import_zod2.z.string().optional(),
874
- isolated_mode: import_zod2.z.boolean().optional()
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 = import_zod2.z.object({
877
- component: import_zod2.z.enum(["cli", "mcp", "core"]).optional(),
878
- version: import_zod2.z.string().optional(),
879
- pid: import_zod2.z.number().int().positive().optional(),
880
- node_version: import_zod2.z.string().optional(),
881
- binary_path: import_zod2.z.string().optional(),
882
- argv_entry: import_zod2.z.string().optional()
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 = import_zod2.z.object({
966
+ var DiagnosticsRuntimeCallerSchema = import_zod3.z.object({
885
967
  endpoint: DiagnosticsRuntimeEndpointSchema.optional(),
886
968
  process: DiagnosticsRuntimeProcessSchema.optional()
887
969
  });
888
- var DiagnosticsRuntimeContextSchema = import_zod2.z.object({
970
+ var DiagnosticsRuntimeContextSchema = import_zod3.z.object({
889
971
  caller: DiagnosticsRuntimeCallerSchema.optional(),
890
- core: import_zod2.z.object({
972
+ core: import_zod3.z.object({
891
973
  endpoint: DiagnosticsRuntimeEndpointSchema.optional(),
892
974
  process: DiagnosticsRuntimeProcessSchema.optional()
893
975
  }).optional(),
894
- extension: import_zod2.z.object({
895
- version: import_zod2.z.string().optional(),
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: import_zod2.z.enum(["default", "storage"]).optional()
982
+ port_source: import_zod3.z.enum(["default", "storage"]).optional()
898
983
  }).optional()
899
984
  });
900
- var DiagnosticReportSchema = import_zod2.z.object({
901
- ok: import_zod2.z.boolean(),
902
- session_id: import_zod2.z.string().optional(),
903
- checks: import_zod2.z.array(DiagnosticCheckSchema).optional(),
904
- sessions: import_zod2.z.object({
905
- count: import_zod2.z.number().finite().optional(),
906
- max_age_ms: import_zod2.z.number().finite().optional(),
907
- max_idle_ms: import_zod2.z.number().finite().optional()
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: import_zod2.z.object({
910
- connected: import_zod2.z.boolean().optional(),
911
- version: import_zod2.z.string().optional(),
912
- last_seen_at: import_zod2.z.string().datetime().optional()
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: import_zod2.z.object({
915
- attached: import_zod2.z.boolean().optional(),
916
- idle_timeout_ms: import_zod2.z.number().finite().optional(),
917
- console_buffer_size: import_zod2.z.number().finite().optional(),
918
- network_buffer_size: import_zod2.z.number().finite().optional(),
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: import_zod2.z.object({
922
- root_dir: import_zod2.z.string().optional()
1006
+ artifacts: import_zod3.z.object({
1007
+ root_dir: import_zod3.z.string().optional()
923
1008
  }).optional(),
924
- recovery: import_zod2.z.object({
925
- last_attempt: import_zod2.z.object({
926
- session_id: import_zod2.z.string(),
927
- recovered: import_zod2.z.boolean(),
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: import_zod2.z.string().optional(),
930
- at: import_zod2.z.string()
1014
+ message: import_zod3.z.string().optional(),
1015
+ at: import_zod3.z.string()
931
1016
  }).optional(),
932
- attempts: import_zod2.z.array(
933
- import_zod2.z.object({
934
- session_id: import_zod2.z.string(),
935
- recovered: import_zod2.z.boolean(),
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: import_zod2.z.string().optional(),
938
- at: import_zod2.z.string()
1022
+ message: import_zod3.z.string().optional(),
1023
+ at: import_zod3.z.string()
939
1024
  })
940
1025
  ).optional(),
941
- success_count: import_zod2.z.number().finite().optional(),
942
- failure_count: import_zod2.z.number().finite().optional(),
943
- success_rate: import_zod2.z.number().finite().optional(),
944
- recent_failure_count: import_zod2.z.number().finite().optional(),
945
- loop_detected: import_zod2.z.boolean().optional()
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: import_zod2.z.array(import_zod2.z.string()).optional(),
948
- notes: import_zod2.z.array(import_zod2.z.string()).optional(),
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 = import_zod2.z.object({
952
- session_id: import_zod2.z.string().min(1)
1036
+ var SessionIdSchema = import_zod3.z.object({
1037
+ session_id: import_zod3.z.string().min(1)
953
1038
  });
954
- var SessionCreateInputSchema = import_zod2.z.object({}).strict().default({});
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 = import_zod2.z.object({
962
- ok: import_zod2.z.boolean()
1046
+ var SessionCloseOutputSchema = import_zod3.z.object({
1047
+ ok: import_zod3.z.boolean()
963
1048
  });
964
- var DriveWaitConditionSchema = import_zod2.z.object({
965
- kind: import_zod2.z.enum(["locator_visible", "text_present", "url_matches"]),
966
- value: import_zod2.z.string().min(1)
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 = import_zod2.z.object({
969
- session_id: import_zod2.z.string().min(1),
970
- url: import_zod2.z.string().min(1),
971
- tab_id: import_zod2.z.number().finite().optional(),
972
- wait: import_zod2.z.enum(["none", "domcontentloaded"]).default("domcontentloaded")
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
- var DriveGoBackInputSchema = import_zod2.z.object({
976
- session_id: import_zod2.z.string().min(1),
977
- tab_id: import_zod2.z.number().finite().optional()
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 = import_zod2.z.object({
981
- session_id: import_zod2.z.string().min(1),
982
- tab_id: import_zod2.z.number().finite().optional()
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 DriveBackInputSchema = DriveGoBackInputSchema;
986
- var DriveBackOutputSchema = OpResultSchema;
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: import_zod2.z.number().finite().optional(),
993
- click_count: import_zod2.z.number().finite().optional()
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 = import_zod2.z.object({
997
- session_id: import_zod2.z.string().min(1),
1079
+ var DriveHoverInputSchema = import_zod3.z.object({
1080
+ session_id: import_zod3.z.string().min(1),
998
1081
  locator: LocatorSchema,
999
- delay_ms: import_zod2.z.number().min(0).max(1e4).optional(),
1000
- tab_id: import_zod2.z.number().finite().optional()
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 = import_zod2.z.object({
1003
- format: import_zod2.z.literal("html"),
1004
- snapshot: import_zod2.z.string()
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 = import_zod2.z.object({
1007
- session_id: import_zod2.z.string().min(1),
1089
+ var DriveSelectInputSchema = import_zod3.z.object({
1090
+ session_id: import_zod3.z.string().min(1),
1008
1091
  locator: LocatorSchema,
1009
- value: import_zod2.z.string().min(1).optional(),
1010
- text: import_zod2.z.string().min(1).optional(),
1011
- index: import_zod2.z.number().int().min(0).optional(),
1012
- tab_id: import_zod2.z.number().finite().optional()
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 = import_zod2.z.object({
1019
- session_id: import_zod2.z.string().min(1),
1101
+ var DriveTypeInputSchema = import_zod3.z.object({
1102
+ session_id: import_zod3.z.string().min(1),
1020
1103
  locator: LocatorSchema.optional(),
1021
- text: import_zod2.z.string().min(1),
1022
- tab_id: import_zod2.z.number().finite().optional(),
1023
- clear: import_zod2.z.boolean().default(false),
1024
- submit: import_zod2.z.boolean().default(false)
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 = import_zod2.z.object({
1028
- selector: import_zod2.z.string().min(1).optional(),
1110
+ var DriveFillFormFieldSchema = import_zod3.z.object({
1111
+ selector: import_zod3.z.string().min(1).optional(),
1029
1112
  locator: LocatorSchema.optional(),
1030
- value: import_zod2.z.union([import_zod2.z.string(), import_zod2.z.boolean()]),
1031
- type: import_zod2.z.enum(["auto", "text", "select", "checkbox", "radio", "contentEditable"]).default("auto"),
1032
- submit: import_zod2.z.boolean().default(false)
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 = import_zod2.z.object({
1038
- session_id: import_zod2.z.string().min(1),
1039
- fields: import_zod2.z.array(DriveFillFormFieldSchema).min(1),
1040
- tab_id: import_zod2.z.number().finite().optional()
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 = import_zod2.z.object({
1043
- filled: import_zod2.z.number().finite(),
1044
- attempted: import_zod2.z.number().finite(),
1045
- errors: import_zod2.z.array(import_zod2.z.string()).optional()
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 = import_zod2.z.object({
1048
- session_id: import_zod2.z.string().min(1),
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: import_zod2.z.number().min(1).max(50).default(12),
1052
- tab_id: import_zod2.z.number().finite().optional()
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 = import_zod2.z.object({
1056
- session_id: import_zod2.z.string().min(1),
1057
- action: import_zod2.z.enum(["accept", "dismiss"]),
1058
- promptText: import_zod2.z.string().optional(),
1059
- tab_id: import_zod2.z.number().finite().optional()
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: import_zod2.z.string().optional(),
1064
- tab_id: import_zod2.z.number().finite().optional()
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: import_zod2.z.number().finite().optional()
1151
+ tab_id: import_zod3.z.number().finite().optional()
1069
1152
  });
1070
1153
  var DialogDismissOutputSchema = OpResultSchema;
1071
- var DriveKeyModifiersSchema = import_zod2.z.object({
1072
- ctrl: import_zod2.z.boolean().optional(),
1073
- alt: import_zod2.z.boolean().optional(),
1074
- shift: import_zod2.z.boolean().optional(),
1075
- meta: import_zod2.z.boolean().optional()
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 = import_zod2.z.object({
1078
- session_id: import_zod2.z.string().min(1),
1079
- key: import_zod2.z.string().min(1),
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: import_zod2.z.number().finite().optional()
1164
+ tab_id: import_zod3.z.number().finite().optional()
1082
1165
  });
1083
1166
  var DriveKeyPressOutputSchema = OpResultSchema;
1084
- var DriveKeyModifierSchema = import_zod2.z.enum(["ctrl", "alt", "shift", "meta"]);
1085
- var DriveKeyInputSchema = import_zod2.z.object({
1086
- session_id: import_zod2.z.string().min(1),
1087
- key: import_zod2.z.string().min(1),
1088
- modifiers: import_zod2.z.array(DriveKeyModifierSchema).optional(),
1089
- repeat: import_zod2.z.number().int().min(1).max(50).optional(),
1090
- tab_id: import_zod2.z.number().finite().optional()
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 = import_zod2.z.object({
1094
- session_id: import_zod2.z.string().min(1),
1095
- delta_x: import_zod2.z.number().finite().optional(),
1096
- delta_y: import_zod2.z.number().finite().optional(),
1097
- top: import_zod2.z.number().finite().optional(),
1098
- left: import_zod2.z.number().finite().optional(),
1099
- behavior: import_zod2.z.enum(["auto", "smooth"]).optional(),
1100
- tab_id: import_zod2.z.number().finite().optional()
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 = import_zod2.z.object({
1110
- session_id: import_zod2.z.string().min(1),
1192
+ var DriveWaitForInputSchema = import_zod3.z.object({
1193
+ session_id: import_zod3.z.string().min(1),
1111
1194
  condition: DriveWaitConditionSchema,
1112
- timeout_ms: import_zod2.z.number().finite().optional(),
1113
- tab_id: import_zod2.z.number().finite().optional()
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 = import_zod2.z.object({
1117
- tab_id: import_zod2.z.number().finite(),
1118
- window_id: import_zod2.z.number().finite(),
1119
- url: import_zod2.z.string().min(1),
1120
- title: import_zod2.z.string(),
1121
- active: import_zod2.z.boolean().optional(),
1122
- last_active_at: import_zod2.z.string().datetime().optional()
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 = import_zod2.z.object({
1126
- tabs: import_zod2.z.array(DriveTabInfoSchema)
1208
+ var DriveTabListOutputSchema = import_zod3.z.object({
1209
+ tabs: import_zod3.z.array(DriveTabInfoSchema)
1127
1210
  });
1128
- var DriveTabActivateInputSchema = import_zod2.z.object({
1129
- session_id: import_zod2.z.string().min(1),
1130
- tab_id: import_zod2.z.number().finite()
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 = import_zod2.z.object({
1134
- session_id: import_zod2.z.string().min(1),
1135
- tab_id: import_zod2.z.number().finite()
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 = import_zod2.z.enum(["ax", "html"]);
1139
- var InspectConsistencySchema = import_zod2.z.enum(["best_effort", "quiesce"]);
1140
- var TargetHintSchema = import_zod2.z.object({
1141
- url: import_zod2.z.string().min(1).optional(),
1142
- title: import_zod2.z.string().min(1).optional(),
1143
- last_active_at: import_zod2.z.string().optional(),
1144
- lastActiveAt: import_zod2.z.string().optional()
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 = import_zod2.z.object({
1147
- name: import_zod2.z.string(),
1148
- type: import_zod2.z.string(),
1149
- value: import_zod2.z.string(),
1150
- options: import_zod2.z.array(import_zod2.z.string()).optional()
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 = import_zod2.z.object({
1153
- selector: import_zod2.z.string(),
1154
- action: import_zod2.z.string().optional(),
1155
- method: import_zod2.z.string().optional(),
1156
- fields: import_zod2.z.array(FormFieldInfoSchema)
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 = import_zod2.z.object({
1159
- key: import_zod2.z.string(),
1160
- value: import_zod2.z.string()
1241
+ var StorageEntrySchema = import_zod3.z.object({
1242
+ key: import_zod3.z.string(),
1243
+ value: import_zod3.z.string()
1161
1244
  });
1162
- var PageStateSchema = import_zod2.z.object({
1163
- forms: import_zod2.z.array(FormInfoSchema),
1164
- localStorage: import_zod2.z.array(StorageEntrySchema),
1165
- sessionStorage: import_zod2.z.array(StorageEntrySchema),
1166
- cookies: import_zod2.z.array(StorageEntrySchema),
1167
- warnings: import_zod2.z.array(import_zod2.z.string()).optional()
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 = import_zod2.z.object({
1252
+ var DomSnapshotSchema = import_zod3.z.object({
1170
1253
  format: InspectDomFormatSchema,
1171
- snapshot: import_zod2.z.unknown()
1254
+ snapshot: import_zod3.z.unknown()
1172
1255
  }).passthrough();
1173
- var InspectDomSnapshotInputSchema = import_zod2.z.object({
1174
- session_id: import_zod2.z.string().min(1),
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: import_zod2.z.boolean().default(false),
1178
- compact: import_zod2.z.boolean().default(false),
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: import_zod2.z.coerce.number().int().positive().max(5e4).optional(),
1182
- selector: import_zod2.z.string().min(1).optional(),
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 = import_zod2.z.object({
1187
- added: import_zod2.z.array(import_zod2.z.string()),
1188
- removed: import_zod2.z.array(import_zod2.z.string()),
1189
- changed: import_zod2.z.array(import_zod2.z.string()),
1190
- summary: import_zod2.z.string()
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: import_zod2.z.literal("role"),
1196
- role: import_zod2.z.string().min(1),
1197
- name: import_zod2.z.string().min(1).optional(),
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: import_zod2.z.literal("text"),
1202
- text: import_zod2.z.string().min(1),
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: import_zod2.z.literal("label"),
1207
- label: import_zod2.z.string().min(1),
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 = import_zod2.z.discriminatedUnion("kind", [
1293
+ var InspectFindInputSchema = import_zod3.z.discriminatedUnion("kind", [
1211
1294
  InspectFindRoleInputSchema,
1212
1295
  InspectFindTextInputSchema,
1213
1296
  InspectFindLabelInputSchema
1214
1297
  ]);
1215
- var InspectFindMatchSchema = import_zod2.z.object({
1216
- ref: import_zod2.z.string(),
1217
- role: import_zod2.z.string().optional(),
1218
- name: import_zod2.z.string().optional()
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 = import_zod2.z.object({
1221
- matches: import_zod2.z.array(InspectFindMatchSchema),
1222
- warnings: import_zod2.z.array(import_zod2.z.string()).optional()
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 = import_zod2.z.enum([
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: import_zod2.z.boolean().default(true),
1318
+ include_metadata: import_zod3.z.boolean().default(true),
1236
1319
  target: TargetHintSchema.optional()
1237
1320
  });
1238
- var InspectExtractContentOutputSchema = import_zod2.z.object({
1239
- content: import_zod2.z.string(),
1240
- title: import_zod2.z.string().optional(),
1241
- byline: import_zod2.z.string().optional(),
1242
- excerpt: import_zod2.z.string().optional(),
1243
- siteName: import_zod2.z.string().optional(),
1244
- warnings: import_zod2.z.array(import_zod2.z.string()).optional()
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 = import_zod2.z.object({
1250
- url: import_zod2.z.string().optional(),
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: import_zod2.z.number().int().positive().optional(),
1253
- column: import_zod2.z.number().int().positive().optional()
1335
+ line: import_zod3.z.number().int().positive().optional(),
1336
+ column: import_zod3.z.number().int().positive().optional()
1254
1337
  }).passthrough();
1255
- var ConsoleStackFrameSchema = import_zod2.z.object({
1256
- functionName: import_zod2.z.string().optional(),
1257
- url: import_zod2.z.string().optional(),
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: import_zod2.z.number().int().positive().optional(),
1260
- column: import_zod2.z.number().int().positive().optional()
1342
+ line: import_zod3.z.number().int().positive().optional(),
1343
+ column: import_zod3.z.number().int().positive().optional()
1261
1344
  }).passthrough();
1262
- var ConsoleRemoteObjectSchema = import_zod2.z.object({
1263
- type: import_zod2.z.string().optional(),
1264
- subtype: import_zod2.z.string().optional(),
1265
- description: import_zod2.z.string().optional(),
1266
- value: import_zod2.z.unknown().optional(),
1267
- unserializableValue: import_zod2.z.string().optional()
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 = import_zod2.z.object({
1270
- level: import_zod2.z.string().optional(),
1271
- text: import_zod2.z.string().optional(),
1272
- timestamp: import_zod2.z.string().datetime().optional(),
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: import_zod2.z.array(ConsoleStackFrameSchema).optional(),
1357
+ stack: import_zod3.z.array(ConsoleStackFrameSchema).optional(),
1275
1358
  exception: ConsoleRemoteObjectSchema.optional(),
1276
- args: import_zod2.z.array(ConsoleRemoteObjectSchema).optional()
1359
+ args: import_zod3.z.array(ConsoleRemoteObjectSchema).optional()
1277
1360
  }).passthrough();
1278
- var ConsoleListSchema = import_zod2.z.object({
1279
- entries: import_zod2.z.array(ConsoleEntrySchema)
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 = import_zod2.z.object({
1283
- artifact_id: import_zod2.z.string(),
1284
- path: import_zod2.z.string(),
1285
- mime: import_zod2.z.string()
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 = import_zod2.z.object({
1292
- session_id: import_zod2.z.string().min(1),
1293
- expression: import_zod2.z.string().min(1).optional(),
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 = import_zod2.z.object({
1297
- value: import_zod2.z.unknown().optional(),
1298
- exception: import_zod2.z.unknown().optional()
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 = import_zod2.z.object({
1305
- name: import_zod2.z.string(),
1306
- value: import_zod2.z.number().finite()
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 = import_zod2.z.object({
1309
- metrics: import_zod2.z.array(PerformanceMetricSchema)
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 = import_zod2.z.object({
1313
- session_id: import_zod2.z.string().min(1),
1314
- target: import_zod2.z.enum(["viewport", "full"]).default("viewport"),
1315
- fullPage: import_zod2.z.boolean().default(false),
1316
- selector: import_zod2.z.string().min(1).optional(),
1317
- format: import_zod2.z.enum(["png", "jpeg", "webp"]).default("png"),
1318
- quality: import_zod2.z.number().min(0).max(100).optional()
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 = import_zod2.z.object({});
1322
- var HealthCheckOutputSchema = import_zod2.z.object({
1323
- started_at: import_zod2.z.string().min(1),
1324
- uptime_ms: import_zod2.z.number().finite().nonnegative(),
1325
- memory: import_zod2.z.object({
1326
- rss: import_zod2.z.number().finite().nonnegative(),
1327
- heapTotal: import_zod2.z.number().finite().nonnegative(),
1328
- heapUsed: import_zod2.z.number().finite().nonnegative(),
1329
- external: import_zod2.z.number().finite().nonnegative(),
1330
- arrayBuffers: import_zod2.z.number().finite().nonnegative().optional()
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: import_zod2.z.object({
1333
- active: import_zod2.z.number().finite().nonnegative()
1415
+ sessions: import_zod3.z.object({
1416
+ active: import_zod3.z.number().finite().nonnegative()
1334
1417
  }).passthrough(),
1335
- extension: import_zod2.z.object({
1336
- connected: import_zod2.z.boolean(),
1337
- last_seen_at: import_zod2.z.string().min(1).optional()
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 = import_zod2.z.object({
1341
- session_id: import_zod2.z.string().min(1).optional(),
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 import_zod3 = require("zod");
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
- return requestJson("POST", path9, body);
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 import_zod3.ZodError) {
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("Accept a JavaScript dialog").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) => {
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 payload = parseInput(DialogAcceptInputSchema, {
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
- return client.post("/dialog/accept", payload);
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("Dismiss a JavaScript dialog").requiredOption("--session-id <id>", "Session identifier").option("--tab-id <id>", "Tab identifier").action(async (options, command) => {
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 payload = parseInput(DialogDismissInputSchema, {
1880
+ const aliasPayload = parseInput(DialogDismissInputSchema, {
1747
1881
  session_id: options.sessionId,
1748
1882
  tab_id: parseNumber2(options.tabId)
1749
1883
  });
1750
- return client.post("/dialog/dismiss", payload);
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, globalOptions) => {
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("/health_check", payload);
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").requiredOption("--session-id <id>", "Session identifier").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) => {
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("Go back in browser history").requiredOption("--session-id <id>", "Session identifier").option("--tab-id <id>", "Tab identifier (defaults to agent window/tab)").action(async (options, command) => {
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(DriveBackInputSchema, {
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/back", payload);
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("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) => {
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(DriveForwardInputSchema, {
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/forward", payload);
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: "Go back in browser history.",
2669
- inputSchema: DriveBackInputSchema,
2670
- outputSchema: envelope(DriveBackOutputSchema),
2671
- corePath: "/drive/back"
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: "Go forward in browser history.",
2679
- inputSchema: DriveForwardInputSchema,
2680
- outputSchema: envelope(DriveForwardOutputSchema),
2681
- corePath: "/drive/forward"
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: "Accept a JavaScript dialog.",
2938
+ description: "Deprecated alias for drive.handle_dialog (action=accept).",
2759
2939
  inputSchema: DialogAcceptInputSchema,
2760
2940
  outputSchema: envelope(DialogAcceptOutputSchema),
2761
- corePath: "/dialog/accept"
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: "Dismiss a JavaScript dialog.",
2953
+ description: "Deprecated alias for drive.handle_dialog (action=dismiss).",
2769
2954
  inputSchema: DialogDismissInputSchema,
2770
2955
  outputSchema: envelope(DialogDismissOutputSchema),
2771
- corePath: "/dialog/dismiss"
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: "/health_check"
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(corePath, args);
2971
- return toToolResult(envelopeResult);
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(clientProvider, tool.config.corePath)
3186
+ createToolHandler(
3187
+ clientProvider,
3188
+ tool.config.corePath,
3189
+ tool.config.deprecationAlias,
3190
+ tool.config.transformInput
3191
+ )
2992
3192
  );
2993
3193
  }
2994
3194
  };