@pyrokine/mcp-chrome 1.7.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (109) hide show
  1. package/README.md +71 -31
  2. package/dist/anti-detection/behavior.d.ts.map +1 -1
  3. package/dist/anti-detection/behavior.js.map +1 -1
  4. package/dist/anti-detection/index.d.ts +1 -1
  5. package/dist/anti-detection/index.d.ts.map +1 -1
  6. package/dist/anti-detection/index.js +1 -1
  7. package/dist/anti-detection/index.js.map +1 -1
  8. package/dist/anti-detection/injection.d.ts +6 -2
  9. package/dist/anti-detection/injection.d.ts.map +1 -1
  10. package/dist/anti-detection/injection.js +32 -79
  11. package/dist/anti-detection/injection.js.map +1 -1
  12. package/dist/cdp/client.d.ts +2 -2
  13. package/dist/cdp/client.d.ts.map +1 -1
  14. package/dist/cdp/client.js +8 -10
  15. package/dist/cdp/client.js.map +1 -1
  16. package/dist/cdp/index.d.ts.map +1 -1
  17. package/dist/cdp/index.js.map +1 -1
  18. package/dist/cdp/launcher.d.ts.map +1 -1
  19. package/dist/cdp/launcher.js +40 -13
  20. package/dist/cdp/launcher.js.map +1 -1
  21. package/dist/core/auto-wait.d.ts +2 -2
  22. package/dist/core/auto-wait.d.ts.map +1 -1
  23. package/dist/core/auto-wait.js +2 -2
  24. package/dist/core/auto-wait.js.map +1 -1
  25. package/dist/core/browser-driver.d.ts +307 -0
  26. package/dist/core/browser-driver.d.ts.map +1 -0
  27. package/dist/core/browser-driver.js +21 -0
  28. package/dist/core/browser-driver.js.map +1 -0
  29. package/dist/core/error-sanitizer.d.ts +25 -0
  30. package/dist/core/error-sanitizer.d.ts.map +1 -0
  31. package/dist/core/error-sanitizer.js +66 -0
  32. package/dist/core/error-sanitizer.js.map +1 -0
  33. package/dist/core/errors.d.ts +10 -1
  34. package/dist/core/errors.d.ts.map +1 -1
  35. package/dist/core/errors.js +17 -4
  36. package/dist/core/errors.js.map +1 -1
  37. package/dist/core/extension-errors.d.ts +20 -0
  38. package/dist/core/extension-errors.d.ts.map +1 -0
  39. package/dist/core/extension-errors.js +40 -0
  40. package/dist/core/extension-errors.js.map +1 -0
  41. package/dist/core/index.d.ts.map +1 -1
  42. package/dist/core/index.js.map +1 -1
  43. package/dist/core/locator.d.ts +2 -2
  44. package/dist/core/locator.d.ts.map +1 -1
  45. package/dist/core/locator.js +25 -65
  46. package/dist/core/locator.js.map +1 -1
  47. package/dist/core/retry.d.ts +2 -2
  48. package/dist/core/retry.d.ts.map +1 -1
  49. package/dist/core/retry.js +2 -2
  50. package/dist/core/retry.js.map +1 -1
  51. package/dist/core/session.d.ts +153 -46
  52. package/dist/core/session.d.ts.map +1 -1
  53. package/dist/core/session.js +672 -177
  54. package/dist/core/session.js.map +1 -1
  55. package/dist/core/types.d.ts +9 -3
  56. package/dist/core/types.d.ts.map +1 -1
  57. package/dist/core/types.js +13 -6
  58. package/dist/core/types.js.map +1 -1
  59. package/dist/core/unified-session.d.ts +46 -81
  60. package/dist/core/unified-session.d.ts.map +1 -1
  61. package/dist/core/unified-session.js +338 -635
  62. package/dist/core/unified-session.js.map +1 -1
  63. package/dist/core/utils.d.ts +7 -0
  64. package/dist/core/utils.d.ts.map +1 -0
  65. package/dist/core/utils.js +33 -0
  66. package/dist/core/utils.js.map +1 -0
  67. package/dist/extension/bridge.d.ts +69 -50
  68. package/dist/extension/bridge.d.ts.map +1 -1
  69. package/dist/extension/bridge.js +176 -77
  70. package/dist/extension/bridge.js.map +1 -1
  71. package/dist/extension/http-server.d.ts +6 -4
  72. package/dist/extension/http-server.d.ts.map +1 -1
  73. package/dist/extension/http-server.js +45 -31
  74. package/dist/extension/http-server.js.map +1 -1
  75. package/dist/extension/index.d.ts.map +1 -1
  76. package/dist/extension/index.js.map +1 -1
  77. package/dist/index.js +3 -1
  78. package/dist/index.js.map +1 -1
  79. package/dist/tools/browse.d.ts.map +1 -1
  80. package/dist/tools/browse.js +32 -34
  81. package/dist/tools/browse.js.map +1 -1
  82. package/dist/tools/cookies.d.ts.map +1 -1
  83. package/dist/tools/cookies.js +38 -16
  84. package/dist/tools/cookies.js.map +1 -1
  85. package/dist/tools/evaluate.d.ts.map +1 -1
  86. package/dist/tools/evaluate.js +54 -23
  87. package/dist/tools/evaluate.js.map +1 -1
  88. package/dist/tools/extract.d.ts.map +1 -1
  89. package/dist/tools/extract.js +221 -153
  90. package/dist/tools/extract.js.map +1 -1
  91. package/dist/tools/index.d.ts.map +1 -1
  92. package/dist/tools/index.js.map +1 -1
  93. package/dist/tools/input.d.ts.map +1 -1
  94. package/dist/tools/input.js +271 -90
  95. package/dist/tools/input.js.map +1 -1
  96. package/dist/tools/logs.d.ts.map +1 -1
  97. package/dist/tools/logs.js +31 -17
  98. package/dist/tools/logs.js.map +1 -1
  99. package/dist/tools/manage.d.ts.map +1 -1
  100. package/dist/tools/manage.js +25 -28
  101. package/dist/tools/manage.js.map +1 -1
  102. package/dist/tools/schema.d.ts +1 -1
  103. package/dist/tools/schema.d.ts.map +1 -1
  104. package/dist/tools/schema.js +31 -55
  105. package/dist/tools/schema.js.map +1 -1
  106. package/dist/tools/wait.d.ts.map +1 -1
  107. package/dist/tools/wait.js +19 -16
  108. package/dist/tools/wait.js.map +1 -1
  109. package/package.json +48 -40
@@ -31,9 +31,7 @@ const CHROME_PATHS = {
31
31
  win32: [
32
32
  'C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe',
33
33
  'C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe',
34
- ...(process.env.LOCALAPPDATA
35
- ? [`${process.env.LOCALAPPDATA}\\Google\\Chrome\\Application\\chrome.exe`]
36
- : []),
34
+ ...(process.env.LOCALAPPDATA ? [`${process.env.LOCALAPPDATA}\\Google\\Chrome\\Application\\chrome.exe`] : []),
37
35
  ],
38
36
  };
39
37
  /**
@@ -67,6 +65,27 @@ export class BrowserLauncher {
67
65
  if (!chromePath) {
68
66
  throw new BrowserNotFoundError();
69
67
  }
68
+ // executablePath 校验:用户显式提供的路径必须存在且不在系统敏感目录
69
+ if (executablePath) {
70
+ if (!existsSync(executablePath)) {
71
+ throw new Error(`executablePath 不存在: ${executablePath}`);
72
+ }
73
+ const lowered = executablePath.toLowerCase();
74
+ const suspicious = ['/etc/', '/dev/', '/proc/', '/sys/', '/boot/'];
75
+ if (suspicious.some((p) => lowered.includes(p))) {
76
+ console.warn(`[launcher] 警告: executablePath 包含敏感系统目录前缀(${executablePath}),请确认路径正确`);
77
+ }
78
+ }
79
+ // userDataDir 校验:警告非常用位置(避免误指向系统目录)
80
+ if (userDataDir) {
81
+ const lowered = userDataDir.toLowerCase();
82
+ const home = homedir().toLowerCase();
83
+ const tmp = ['/tmp/', '/var/tmp/'];
84
+ const isSafe = lowered.startsWith(home) || tmp.some((p) => lowered.startsWith(p));
85
+ if (!isSafe) {
86
+ console.warn(`[launcher] 警告: userDataDir 不在常见位置(${userDataDir}),建议使用 ~/.mcp-chrome/ 或 /tmp/ 下的目录`);
87
+ }
88
+ }
70
89
  // 构建启动参数
71
90
  const args = this.buildArgs({ port, incognito, headless, userDataDir });
72
91
  // 启动进程
@@ -92,6 +111,8 @@ export class BrowserLauncher {
92
111
  buildArgs(options) {
93
112
  const args = [
94
113
  `--remote-debugging-port=${options.port}`,
114
+ // 显式绑定到 loopback,防止 Chrome 在某些平台/版本默认监听全网卡造成端口暴露
115
+ '--remote-debugging-address=127.0.0.1',
95
116
  '--no-first-run',
96
117
  '--no-default-browser-check',
97
118
  '--disable-background-networking',
@@ -125,9 +146,9 @@ export class BrowserLauncher {
125
146
  // 必须指定 user-data-dir,否则会复用已运行的 Chrome 实例导致启动失败
126
147
  // 默认使用固定目录 ~/.mcp-chrome/profile,保留 cookies 和登录状态
127
148
  const userDataDir = options.userDataDir ?? DEFAULT_PROFILE_DIR;
128
- // 确保目录存在
149
+ // 确保目录存在(mode 0o700 限制仅创建者可读)
129
150
  if (!existsSync(userDataDir)) {
130
- mkdirSync(userDataDir, { recursive: true });
151
+ mkdirSync(userDataDir, { recursive: true, mode: 0o700 });
131
152
  }
132
153
  args.push(`--user-data-dir=${userDataDir}`);
133
154
  // 打开一个空白页
@@ -147,31 +168,37 @@ export class BrowserLauncher {
147
168
  reject(new TimeoutError(`等待浏览器启动超时 (${timeout}ms)`));
148
169
  }, timeout);
149
170
  let stderr = '';
150
- this.process.stderr?.on('data', (data) => {
171
+ const stderrStream = this.process.stderr;
172
+ const onStderr = (data) => {
151
173
  stderr += data.toString();
152
174
  // 解析 DevTools listening on ws://...
153
- const match = stderr.match(/DevTools listening on (ws:\/\/\S+)/);
175
+ const match = stderr.match(/DevTools listening on (?<url>ws:\/\/\S+)/);
154
176
  if (match) {
155
177
  clearTimeout(timer);
156
178
  // 解析端口
157
- const portMatch = match[1].match(/:(\d+)\//);
179
+ const portMatch = match.groups.url.match(/:(?<port>\d+)\//);
158
180
  if (portMatch) {
159
- this._port = parseInt(portMatch[1], 10);
181
+ this._port = parseInt(portMatch.groups.port, 10);
160
182
  }
161
- resolve(match[1]);
183
+ // 端点已拿到,移除 listener 避免后续 stderr 持续累积内存
184
+ stderrStream?.removeListener('data', onStderr);
185
+ resolve(match.groups.url);
162
186
  }
163
- });
187
+ };
188
+ stderrStream?.on('data', onStderr);
164
189
  this.process.on('error', (error) => {
165
190
  clearTimeout(timer);
191
+ stderrStream?.removeListener('data', onStderr);
166
192
  reject(error);
167
193
  });
168
194
  this.process.on('exit', (code) => {
169
195
  clearTimeout(timer);
196
+ stderrStream?.removeListener('data', onStderr);
170
197
  if (code === 0) {
171
198
  // Chrome 退出码 0:通常是把请求委托给了已运行的实例后自行退出,
172
199
  // 此时没有 DevTools 端点可连接
173
- reject(new Error('浏览器进程已退出(code 0),可能已有相同 profile 的 Chrome 实例在运行。\n'
174
- + '请关闭已运行的 Chrome 或指定不同的 userDataDir'));
200
+ reject(new Error('浏览器进程已退出(code 0),可能已有相同 profile 的 Chrome 实例在运行\n' +
201
+ '请关闭已运行的 Chrome 或指定不同的 userDataDir'));
175
202
  }
176
203
  else if (code !== null) {
177
204
  reject(new Error(`浏览器进程退出,代码: ${code}\n${stderr}`));
@@ -1 +1 @@
1
- {"version":3,"file":"launcher.js","sourceRoot":"","sources":["../../src/cdp/launcher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"launcher.js","sourceRoot":"","sources":["../../src/cdp/launcher.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@
6
6
  * - waitForStableBoundingBox: 等待位置稳定
7
7
  * - ensureInViewport: 确保元素在视口内
8
8
  *
9
- * 核心思想:操作前自动检查元素状态,失败则重试,而非立即报错。
9
+ * 核心思想:操作前自动检查元素状态,失败则重试,而非立即报错
10
10
  */
11
11
  import type { CDPClient } from '../cdp/client.js';
12
12
  /**
@@ -67,7 +67,7 @@ export declare class AutoWait {
67
67
  /**
68
68
  * 发送 CDP 命令
69
69
  *
70
- * 使用 deadline 剩余时间,确保单命令不超出整体预算。
70
+ * 使用 deadline 剩余时间,确保单命令不超出整体预算
71
71
  */
72
72
  private send;
73
73
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"auto-wait.d.ts","sourceRoot":"","sources":["../../src/core/auto-wait.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,kBAAkB,CAAA;AAI/C;;GAEG;AACH,MAAM,WAAW,eAAe;IAC5B,wBAAwB;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,qBAAa,QAAQ;IAKb,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,SAAS;IALrB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;IAChC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAQ;gBAGrB,GAAG,EAAE,SAAS,EACd,SAAS,EAAE,MAAM,EACzB,OAAO,GAAE,eAAoB;IAMjC;;;;;OAKG;IACG,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA0BnD;;;;;OAKG;IACG,wBAAwB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmC7D;;;;;OAKG;IACG,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA+BrD;;;;OAIG;IACG,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA2BnD;;;;OAIG;IACG,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOrD;;;;OAIG;IACG,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMtD;;;;OAIG;IACH,OAAO,CAAC,IAAI;IAIZ;;OAEG;IACH,OAAO,CAAC,SAAS;CAGpB"}
1
+ {"version":3,"file":"auto-wait.d.ts","sourceRoot":"","sources":["../../src/core/auto-wait.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAIjD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC5B,wBAAwB;IACxB,OAAO,CAAC,EAAE,MAAM,CAAA;CACnB;AAED;;GAEG;AACH,qBAAa,QAAQ;IAKb,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,SAAS;IALrB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;IAChC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAQ;gBAGrB,GAAG,EAAE,SAAS,EACd,SAAS,EAAE,MAAM,EACzB,OAAO,GAAE,eAAoB;IAMjC;;;;;OAKG;IACG,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA0BnD;;;;;OAKG;IACG,wBAAwB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmC7D;;;;;OAKG;IACG,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA+BrD;;;;OAIG;IACG,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA2BnD;;;;OAIG;IACG,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOrD;;;;OAIG;IACG,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMtD;;;;OAIG;IACH,OAAO,CAAC,IAAI;IAIZ;;OAEG;IACH,OAAO,CAAC,SAAS;CAGpB"}
@@ -6,7 +6,7 @@
6
6
  * - waitForStableBoundingBox: 等待位置稳定
7
7
  * - ensureInViewport: 确保元素在视口内
8
8
  *
9
- * 核心思想:操作前自动检查元素状态,失败则重试,而非立即报错。
9
+ * 核心思想:操作前自动检查元素状态,失败则重试,而非立即报错
10
10
  */
11
11
  import { withRetry } from './retry.js';
12
12
  import { DEFAULT_TIMEOUT } from './types.js';
@@ -160,7 +160,7 @@ export class AutoWait {
160
160
  /**
161
161
  * 发送 CDP 命令
162
162
  *
163
- * 使用 deadline 剩余时间,确保单命令不超出整体预算。
163
+ * 使用 deadline 剩余时间,确保单命令不超出整体预算
164
164
  */
165
165
  send(method, params) {
166
166
  return this.cdp.send(method, params, this.sessionId, this.remaining());
@@ -1 +1 @@
1
- {"version":3,"file":"auto-wait.js","sourceRoot":"","sources":["../../src/core/auto-wait.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auto-wait.js","sourceRoot":"","sources":["../../src/core/auto-wait.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,307 @@
1
+ /**
2
+ * IBrowserDriver — 浏览器驱动抽象接口
3
+ *
4
+ * 定义 ExtensionBridge 和 SessionManager 的共同操作契约,
5
+ * UnifiedSessionManager 通过此接口消除 Extension/CDP 双路分支
6
+ *
7
+ * 迁移完成:UnifiedSessionManager 通过 driver 屏蔽 Extension/CDP 差异,
8
+ * 业务操作统一走 driver.X,状态管理(getDriver/ensureExtensionConnected)保留作为入口
9
+ */
10
+ import type { ConsoleLogEntry, NetworkRequestEntry } from './types.js';
11
+ export interface NavigateOptions {
12
+ wait?: 'load' | 'domcontentloaded' | 'networkidle';
13
+ timeout?: number;
14
+ }
15
+ export interface GoBackResult {
16
+ navigated: boolean;
17
+ url?: string;
18
+ title?: string;
19
+ }
20
+ export interface ScreenshotOptions {
21
+ fullPage?: boolean;
22
+ scale?: number;
23
+ format?: 'png' | 'jpeg' | 'webp' | string;
24
+ quality?: number;
25
+ clip?: {
26
+ x: number;
27
+ y: number;
28
+ width: number;
29
+ height: number;
30
+ };
31
+ }
32
+ export interface ScreenshotResult {
33
+ data: string;
34
+ format: string;
35
+ }
36
+ export interface ConsoleLogOptions {
37
+ level?: string;
38
+ pattern?: string;
39
+ clear?: boolean;
40
+ }
41
+ export interface NetworkRequestOptions {
42
+ urlPattern?: string;
43
+ clear?: boolean;
44
+ }
45
+ export interface CookieFilter {
46
+ url?: string;
47
+ name?: string;
48
+ domain?: string;
49
+ path?: string;
50
+ secure?: boolean;
51
+ session?: boolean;
52
+ }
53
+ export interface SetCookieParams {
54
+ name: string;
55
+ value: string;
56
+ url?: string;
57
+ domain?: string;
58
+ path?: string;
59
+ httpOnly?: boolean;
60
+ secure?: boolean;
61
+ sameSite?: string;
62
+ expirationDate?: number;
63
+ session?: boolean;
64
+ }
65
+ export interface FindResult {
66
+ refId: string;
67
+ tag: string;
68
+ text: string;
69
+ rect: {
70
+ x: number;
71
+ y: number;
72
+ width: number;
73
+ height: number;
74
+ };
75
+ }
76
+ export interface ImageInfo {
77
+ index: number;
78
+ src: string;
79
+ dataSrc: string;
80
+ alt: string;
81
+ width: number;
82
+ height: number;
83
+ naturalWidth: number;
84
+ naturalHeight: number;
85
+ }
86
+ export interface HtmlWithImagesResult {
87
+ html: string;
88
+ images: ImageInfo[];
89
+ }
90
+ export interface ReadPageResult {
91
+ pageContent: string;
92
+ viewport: {
93
+ width: number;
94
+ height: number;
95
+ };
96
+ error?: string;
97
+ }
98
+ export interface ReadPageOptions {
99
+ filter?: string;
100
+ depth?: number;
101
+ maxLength?: number;
102
+ refId?: string;
103
+ }
104
+ export interface ActionableClickResult {
105
+ success: boolean;
106
+ error?: string;
107
+ reason?: string;
108
+ coveringElement?: string;
109
+ }
110
+ export interface DispatchInputResult {
111
+ success: boolean;
112
+ error?: string;
113
+ }
114
+ export interface DragAndDropResult {
115
+ success: boolean;
116
+ error?: string;
117
+ code?: string;
118
+ }
119
+ export interface InputKeyOptions {
120
+ key?: string;
121
+ code?: string;
122
+ text?: string;
123
+ unmodifiedText?: string;
124
+ location?: number;
125
+ isKeypad?: boolean;
126
+ autoRepeat?: boolean;
127
+ windowsVirtualKeyCode?: number;
128
+ modifiers?: number;
129
+ commands?: string[];
130
+ }
131
+ export type InputKeyType = 'keyDown' | 'keyUp' | 'rawKeyDown' | 'char';
132
+ export type InputMouseType = 'mousePressed' | 'mouseReleased' | 'mouseMoved' | 'mouseWheel';
133
+ export type InputTouchType = 'touchStart' | 'touchMove' | 'touchEnd' | 'touchCancel';
134
+ export interface InputMouseOptions {
135
+ button?: 'left' | 'middle' | 'right' | 'back' | 'forward' | 'none';
136
+ clickCount?: number;
137
+ deltaX?: number;
138
+ deltaY?: number;
139
+ modifiers?: number;
140
+ }
141
+ export interface InputTouchPoint {
142
+ x: number;
143
+ y: number;
144
+ radiusX?: number;
145
+ radiusY?: number;
146
+ force?: number;
147
+ id?: number;
148
+ }
149
+ export interface FrameResolveResult {
150
+ frameId: number;
151
+ offset: {
152
+ x: number;
153
+ y: number;
154
+ } | null;
155
+ }
156
+ export interface DriverState {
157
+ url: string;
158
+ title: string;
159
+ }
160
+ export interface ListedTarget {
161
+ id: number | string;
162
+ targetId?: string;
163
+ url: string;
164
+ title: string;
165
+ type?: string;
166
+ active?: boolean;
167
+ windowId?: number;
168
+ index?: number;
169
+ groupId?: number;
170
+ pinned?: boolean;
171
+ incognito?: boolean;
172
+ managed?: boolean;
173
+ status?: string;
174
+ }
175
+ export interface NewTabResult {
176
+ targetId: string;
177
+ url: string;
178
+ title: string;
179
+ type?: string;
180
+ }
181
+ /**
182
+ * 浏览器驱动接口
183
+ *
184
+ * 实现者:ExtensionBridge(bridge.ts),SessionManager(session.ts)
185
+ * 消费者:UnifiedSessionManager(unified-session.ts)
186
+ *
187
+ * 设计约定:
188
+ * - Extension 独有的能力(refId 操作、stealth、iframe、actionable、dispatch、drag/drop)
189
+ * 在 CDP 实现里 throw(保持业务语义而非伪造结果)
190
+ * - precise 输入接口(inputKey/inputMouse/inputTouch/inputType)两侧实现一致语义
191
+ * - modifiers 由调用方维护并通过 options 传入,driver 不持有键盘修饰键状态
192
+ */
193
+ export interface IBrowserDriver {
194
+ navigate(url: string, options?: NavigateOptions): Promise<void>;
195
+ goBack(timeout?: number): Promise<GoBackResult>;
196
+ goForward(timeout?: number): Promise<GoBackResult>;
197
+ reload(ignoreCache?: boolean, waitUntil?: string, timeout?: number): Promise<void>;
198
+ screenshot(options?: ScreenshotOptions): Promise<ScreenshotResult>;
199
+ readPage(options?: ReadPageOptions): Promise<ReadPageResult>;
200
+ getPageHtml(selector?: string, outer?: boolean): Promise<string>;
201
+ getPageText(selector?: string): Promise<string>;
202
+ getHtmlWithImages(selector?: string, outer?: boolean): Promise<HtmlWithImagesResult>;
203
+ getMetadata(): Promise<Record<string, unknown>>;
204
+ find(selector?: string, text?: string, xpath?: string, timeout?: number): Promise<FindResult[]>;
205
+ /** Extension 真做;CDP throw(CDP 模式应通过 input 工具坐标点击) */
206
+ click(refId: string): Promise<void>;
207
+ actionableClick(refId: string, force?: boolean): Promise<ActionableClickResult>;
208
+ dispatchInput(refId: string, text: string): Promise<DispatchInputResult>;
209
+ dragAndDrop(srcRefId: string, dstRefId: string): Promise<DragAndDropResult>;
210
+ getComputedStyle(refId: string, prop: string): Promise<string | null>;
211
+ typeRef(refId: string, text: string, clear?: boolean): Promise<void>;
212
+ scrollAt(x: number, y: number, refId?: string): Promise<void>;
213
+ getAttribute(selector: string | undefined, refId: string | undefined, attribute: string): Promise<string | null>;
214
+ inputKey(type: InputKeyType, options?: InputKeyOptions): Promise<void>;
215
+ inputMouse(type: InputMouseType, x: number, y: number, options?: InputMouseOptions): Promise<void>;
216
+ inputTouch(type: InputTouchType, touchPoints: InputTouchPoint[]): Promise<void>;
217
+ inputType(text: string, delay?: number): Promise<void>;
218
+ stealthKey(key: string, type: 'down' | 'up' | 'press', modifiers: string[]): Promise<void>;
219
+ stealthClick(x: number, y: number, button?: string, clickCount?: number, refId?: string): Promise<void>;
220
+ stealthMouse(type: string, x: number, y: number, button?: string): Promise<void>;
221
+ stealthType(text: string, delay?: number): Promise<void>;
222
+ stealthInject(): Promise<void>;
223
+ getCookies(filter?: CookieFilter): Promise<Array<{
224
+ name: string;
225
+ value: string;
226
+ domain: string;
227
+ path: string;
228
+ httpOnly: boolean;
229
+ secure: boolean;
230
+ sameSite?: string;
231
+ expirationDate?: number;
232
+ session?: boolean;
233
+ }>>;
234
+ setCookie(params: SetCookieParams): Promise<void>;
235
+ deleteCookie(url: string, name: string): Promise<void>;
236
+ /**
237
+ * 清除 cookies,合同条款:filter 必须至少含 url/domain/name 中的一项,
238
+ * 实现层应拒绝无过滤的全站清除(防止误清登录态)
239
+ */
240
+ clearCookies(filter?: CookieFilter): Promise<{
241
+ count: number;
242
+ }>;
243
+ consoleEnable(): Promise<void>;
244
+ networkEnable(): Promise<void>;
245
+ getConsoleLogs(options?: ConsoleLogOptions): Promise<ConsoleLogEntry[]>;
246
+ getNetworkRequests(options?: NetworkRequestOptions): Promise<NetworkRequestEntry[]>;
247
+ listTargets(): Promise<ListedTarget[]>;
248
+ newPage(url?: string, timeout?: number): Promise<NewTabResult>;
249
+ closePage(targetId?: string): Promise<void>;
250
+ activatePage(targetId: string): Promise<void>;
251
+ selectPage(targetId: string): Promise<void>;
252
+ getCurrentTargetId(): string | null;
253
+ setCurrentTargetId(targetId: string | null): void;
254
+ getState(): DriverState | null;
255
+ /** 仅 Extension 模式支持;CDP throw */
256
+ resolveFrame(frame: string | number): Promise<FrameResolveResult>;
257
+ getCurrentFrameId(): number;
258
+ setCurrentFrameId(frameId: number): void;
259
+ /**
260
+ * 在指定 iframe 中执行 JS(precise 模式,Extension 通过 contextId 绕过 CSP),
261
+ * CDP 实现 throw 'iframe 穿透需要 Extension 模式'
262
+ */
263
+ evaluateInFrame(frameId: number, expression: string, timeout?: number): Promise<{
264
+ result?: {
265
+ value?: unknown;
266
+ };
267
+ exceptionDetails?: {
268
+ text: string;
269
+ exception?: {
270
+ className?: string;
271
+ description?: string;
272
+ };
273
+ };
274
+ }>;
275
+ /**
276
+ * 发送 CDP 命令;
277
+ * Extension:经 chrome.debugger.sendCommand 转发;
278
+ * CDP:自动识别 browser-level 域(Target/Browser/SystemInfo/DeviceAccess/IO)走 sendBrowserCommand,其他走 send
279
+ */
280
+ debuggerSend(method: string, params?: Record<string, unknown>, tabId?: number, timeout?: number): Promise<unknown>;
281
+ /**
282
+ * 执行 JS 代码(一次性调用),返回 JSON 反序列化的结果,
283
+ * Extension stealth 路径:通过 chrome.scripting.executeScript(受 CSP 限制);
284
+ * Extension precise 路径:通过 debugger.Runtime.evaluate(绕 CSP);
285
+ * CDP:通过 Runtime.evaluate / callFunctionOn
286
+ */
287
+ evaluate(code: string, args?: unknown[], timeout?: number): Promise<unknown>;
288
+ }
289
+ /** 类型守卫:判断是否为 Extension 实现 */
290
+ export interface IExtensionDriverExtras {
291
+ /** Extension 模式特有:等待 WebSocket 重连 */
292
+ waitForConnection(timeout?: number): Promise<boolean>;
293
+ /** Extension 模式特有:是否已连接 */
294
+ isConnected(): boolean;
295
+ /** Extension 模式特有:当前 tabId(chrome tab 数字 ID) */
296
+ getCurrentTabIdNumber?(): number | null;
297
+ /** Extension 模式特有:直接设置 tabId(绕过 attach) */
298
+ setCurrentTabIdNumber?(tabId: number | null): void;
299
+ }
300
+ /**
301
+ * 当某个接口能力在当前 driver 实现下不可用时抛出,
302
+ * 上层 (UnifiedSessionManager) 据此分支 fallback 或转换错误信息
303
+ */
304
+ export declare class DriverCapabilityError extends Error {
305
+ constructor(message: string);
306
+ }
307
+ //# sourceMappingURL=browser-driver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-driver.d.ts","sourceRoot":"","sources":["../../src/core/browser-driver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * IBrowserDriver — 浏览器驱动抽象接口
3
+ *
4
+ * 定义 ExtensionBridge 和 SessionManager 的共同操作契约,
5
+ * UnifiedSessionManager 通过此接口消除 Extension/CDP 双路分支
6
+ *
7
+ * 迁移完成:UnifiedSessionManager 通过 driver 屏蔽 Extension/CDP 差异,
8
+ * 业务操作统一走 driver.X,状态管理(getDriver/ensureExtensionConnected)保留作为入口
9
+ */
10
+ // ==================== 通用错误 ====================
11
+ /**
12
+ * 当某个接口能力在当前 driver 实现下不可用时抛出,
13
+ * 上层 (UnifiedSessionManager) 据此分支 fallback 或转换错误信息
14
+ */
15
+ export class DriverCapabilityError extends Error {
16
+ constructor(message) {
17
+ super(message);
18
+ this.name = 'DriverCapabilityError';
19
+ }
20
+ }
21
+ //# sourceMappingURL=browser-driver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-driver.js","sourceRoot":"","sources":["../../src/core/browser-driver.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAwUH,iDAAiD;AAEjD;;;GAGG;AACH,MAAM,OAAO,qBAAsB,SAAQ,KAAK;IAC5C,YAAY,OAAe;QACvB,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAA;IACvC,CAAC;CACJ"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * 错误信息脱敏
3
+ *
4
+ * 在错误信息向 MCP 客户端 / Extension popup / 日志返回前剥离敏感路径
5
+ *
6
+ * 覆盖:
7
+ * - file:// 与本地绝对路径(/home/<user>、/Users/<user>、C:\Users\<user>)
8
+ * - chrome-extension://<id>/<path>
9
+ * - V8 stack frame 行号信息
10
+ * - 用户家目录残留
11
+ *
12
+ * 不覆盖(保留追溯能力):
13
+ * - 错误类型(ENOENT、EACCES)
14
+ * - HTTP/CDP method 名
15
+ * - 用户输入的资源标识(URL、tabId、refId)— 这些已经是用户已知值
16
+ */
17
+ /**
18
+ * 对错误信息做脱敏,可对 string 或 Error 调用,返回脱敏后的 string
19
+ */
20
+ export declare function sanitizeErrorMessage(input: unknown): string;
21
+ /**
22
+ * 对错误对象做脱敏,返回 string(用于直接拼到 message 字段)
23
+ */
24
+ export declare function sanitizeError(err: unknown): string;
25
+ //# sourceMappingURL=error-sanitizer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-sanitizer.d.ts","sourceRoot":"","sources":["../../src/core/error-sanitizer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAUH;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAkC3D;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAKlD"}
@@ -0,0 +1,66 @@
1
+ /**
2
+ * 错误信息脱敏
3
+ *
4
+ * 在错误信息向 MCP 客户端 / Extension popup / 日志返回前剥离敏感路径
5
+ *
6
+ * 覆盖:
7
+ * - file:// 与本地绝对路径(/home/<user>、/Users/<user>、C:\Users\<user>)
8
+ * - chrome-extension://<id>/<path>
9
+ * - V8 stack frame 行号信息
10
+ * - 用户家目录残留
11
+ *
12
+ * 不覆盖(保留追溯能力):
13
+ * - 错误类型(ENOENT、EACCES)
14
+ * - HTTP/CDP method 名
15
+ * - 用户输入的资源标识(URL、tabId、refId)— 这些已经是用户已知值
16
+ */
17
+ import * as os from 'os';
18
+ import * as path from 'path';
19
+ const homeDir = os.homedir();
20
+ const username = path.basename(homeDir);
21
+ const REDACT = '<redacted>';
22
+ /**
23
+ * 对错误信息做脱敏,可对 string 或 Error 调用,返回脱敏后的 string
24
+ */
25
+ export function sanitizeErrorMessage(input) {
26
+ let msg;
27
+ if (input instanceof Error) {
28
+ msg = input.message;
29
+ }
30
+ else if (typeof input === 'string') {
31
+ msg = input;
32
+ }
33
+ else {
34
+ return String(input);
35
+ }
36
+ // 替换家目录路径(含 file:// 前缀和不带前缀两种)
37
+ if (homeDir) {
38
+ const escapedHome = homeDir.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
39
+ msg = msg.replace(new RegExp(`file://${escapedHome}`, 'g'), `file://${REDACT}`);
40
+ msg = msg.replace(new RegExp(escapedHome, 'g'), REDACT);
41
+ }
42
+ if (username && username.length >= 2) {
43
+ // 替换 /home/<user>/ /Users/<user>/ C:\Users\<user>\ 的非家目录残留
44
+ const userEsc = username.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
45
+ msg = msg.replace(new RegExp(`/home/${userEsc}\\b`, 'g'), `/home/${REDACT}`);
46
+ msg = msg.replace(new RegExp(`/Users/${userEsc}\\b`, 'g'), `/Users/${REDACT}`);
47
+ msg = msg.replace(new RegExp(`\\\\Users\\\\${userEsc}\\b`, 'g'), `\\Users\\${REDACT}`);
48
+ }
49
+ // chrome-extension://<id>/<path> → chrome-extension://<id>/<redacted>
50
+ msg = msg.replace(/chrome-extension:\/\/([a-z0-9]{32})\/[^\s)"']*/g, 'chrome-extension://$1/<redacted>');
51
+ // V8 stack frame: " at func (file:line:col)" → " at func (...)"
52
+ msg = msg.replace(/\(([^)]*\.[jt]s):\d+:\d+\)/g, '($1)');
53
+ // node:internal stack 中的绝对路径
54
+ msg = msg.replace(/at\s+\/[^\s:]+:\d+:\d+/g, 'at <internal>');
55
+ return msg;
56
+ }
57
+ /**
58
+ * 对错误对象做脱敏,返回 string(用于直接拼到 message 字段)
59
+ */
60
+ export function sanitizeError(err) {
61
+ if (err instanceof Error) {
62
+ return sanitizeErrorMessage(err);
63
+ }
64
+ return sanitizeErrorMessage(String(err));
65
+ }
66
+ //# sourceMappingURL=error-sanitizer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-sanitizer.js","sourceRoot":"","sources":["../../src/core/error-sanitizer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAA;AACxB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAE5B,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,EAAE,CAAA;AAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;AAEvC,MAAM,MAAM,GAAG,YAAY,CAAA;AAE3B;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAc;IAC/C,IAAI,GAAW,CAAA;IACf,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QACzB,GAAG,GAAG,KAAK,CAAC,OAAO,CAAA;IACvB,CAAC;SAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACnC,GAAG,GAAG,KAAK,CAAA;IACf,CAAC;SAAM,CAAC;QACJ,OAAO,MAAM,CAAC,KAAK,CAAC,CAAA;IACxB,CAAC;IAED,+BAA+B;IAC/B,IAAI,OAAO,EAAE,CAAC;QACV,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAA;QAClE,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,UAAU,WAAW,EAAE,EAAE,GAAG,CAAC,EAAE,UAAU,MAAM,EAAE,CAAC,CAAA;QAC/E,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,CAAA;IAC3D,CAAC;IACD,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QACnC,2DAA2D;QAC3D,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAA;QAC/D,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,SAAS,OAAO,KAAK,EAAE,GAAG,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC,CAAA;QAC5E,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,UAAU,OAAO,KAAK,EAAE,GAAG,CAAC,EAAE,UAAU,MAAM,EAAE,CAAC,CAAA;QAC9E,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,gBAAgB,OAAO,KAAK,EAAE,GAAG,CAAC,EAAE,YAAY,MAAM,EAAE,CAAC,CAAA;IAC1F,CAAC;IAED,sEAAsE;IACtE,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,iDAAiD,EAAE,kCAAkC,CAAC,CAAA;IAExG,gEAAgE;IAChE,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,6BAA6B,EAAE,MAAM,CAAC,CAAA;IAExD,6BAA6B;IAC7B,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,yBAAyB,EAAE,eAAe,CAAC,CAAA;IAE7D,OAAO,GAAG,CAAA;AACd,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,GAAY;IACtC,IAAI,GAAG,YAAY,KAAK,EAAE,CAAC;QACvB,OAAO,oBAAoB,CAAC,GAAG,CAAC,CAAA;IACpC,CAAC;IACD,OAAO,oBAAoB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;AAC5C,CAAC"}