@ai-support-agent/cli 0.1.30-beta.0 → 0.1.30-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -7,15 +7,78 @@ import type { Page } from 'playwright';
7
7
  import { BrowserActionLog } from './browser-action-log';
8
8
  import { DeviceEmulation } from './device-presets';
9
9
  /**
10
- * Payload passed to Playwright's `FileChooser.setFiles`. Each entry carries the
11
- * file content as an in-memory buffer (uploaded from the web client as base64),
12
- * rather than a remote path on the agent host.
10
+ * Payload passed to Playwright's `FileChooser.setFiles`: an array of absolute
11
+ * file paths on the agent host. These are either:
12
+ * - Agent FS paths chosen directly by the user (`filePaths`), or
13
+ * - Temporary files written from base64 content uploaded by the web client
14
+ * (`files`); the caller is responsible for deleting those temp files once
15
+ * `setFiles` has resolved/rejected.
13
16
  */
14
- export type FileChooserPayload = Array<{
15
- name: string;
16
- mimeType: string;
17
- buffer: Buffer;
18
- }>;
17
+ export type FileChooserPayload = string[];
18
+ /**
19
+ * Payload emitted to the Web client when the focused input/textarea changes,
20
+ * its value/selection changes, or focus leaves a reporting target.
21
+ *
22
+ * Mirrors the `browser_focus_changed` wire contract (rect and below). When
23
+ * `focused` is false, the overlay is hidden and the remaining fields are
24
+ * omitted. Coordinates in `rect` are getBoundingClientRect raw values
25
+ * (CSS px, viewport-relative).
26
+ */
27
+ export interface FocusChangePayload {
28
+ /** Whether a reporting-target input/textarea is focused. false hides overlay. */
29
+ focused: boolean;
30
+ /** getBoundingClientRect of the focused element (CSS px, viewport-relative). */
31
+ rect?: {
32
+ x: number;
33
+ y: number;
34
+ width: number;
35
+ height: number;
36
+ };
37
+ /** Current value of the element. */
38
+ value?: string;
39
+ selectionStart?: number;
40
+ selectionEnd?: number;
41
+ /** True when the element is a <textarea>. */
42
+ multiline?: boolean;
43
+ /** input `type` attribute ('text'|'password'|... / 'textarea' for textarea). */
44
+ inputType?: string;
45
+ /** maxLength attribute (omitted when -1/unset). */
46
+ maxLength?: number;
47
+ /** Computed font-size in px. */
48
+ fontSize?: number;
49
+ /** Computed line-height in px (omitted when 'normal'/non-numeric). */
50
+ lineHeight?: number;
51
+ /** Computed text-align. */
52
+ textAlign?: string;
53
+ /** Computed padding-top in px. */
54
+ paddingTop?: number;
55
+ /** Computed padding-left in px. */
56
+ paddingLeft?: number;
57
+ }
58
+ /**
59
+ * Browser-context script installed (idempotently) into the page to report
60
+ * focus/value/selection changes of simple input/textarea elements back to the
61
+ * agent via the `window.__onBrowserFocus` binding exposed by Playwright.
62
+ *
63
+ * Runs in the browser, so it is a string passed to addInitScript / evaluate to
64
+ * avoid Node resolving DOM types (same convention as element-info scripts).
65
+ *
66
+ * Listens in the capture phase for focusin/focusout/input/selectionchange and,
67
+ * for reporting targets (textarea, or input whose type is one of the simple
68
+ * text-like types), builds and sends the focus payload. focusout / non-target
69
+ * elements send `{ focused: false }`.
70
+ */
71
+ export declare const FOCUS_REPORTING_SCRIPT = "() => {\n if (window.__browserFocusReportingInstalled) return;\n window.__browserFocusReportingInstalled = true;\n\n // Last focused state reported to the agent. Used to suppress repeated\n // { focused: false } notifications: selectionchange fires for the whole\n // document (including unrelated page text selections), so without this guard\n // every such selection would emit a redundant focused:false. We only forward\n // a false when transitioning from a previously-focused (true) state.\n var lastReportedFocused = false;\n\n // Forward a payload through the exposed binding, recording the new focused\n // state and logging the first failure once (high-frequency events would\n // otherwise flood the browser console).\n function emit(payload) {\n lastReportedFocused = payload.focused;\n try {\n window.__onBrowserFocus(payload);\n } catch (e) {\n if (!window.__focusReportErrorLogged) {\n window.__focusReportErrorLogged = true;\n try { console.warn('[focus-reporting] report failed', e && e.message ? e.message : e); } catch (_) {}\n }\n }\n }\n\n function isReportingTarget(el) {\n if (!el) return false;\n const tag = el.tagName;\n if (tag === 'TEXTAREA') return true;\n if (tag !== 'INPUT') return false;\n const type = (el.getAttribute('type') || '').toLowerCase();\n return type === '' || type === 'text' || type === 'search' || type === 'email' ||\n type === 'url' || type === 'tel' || type === 'password' || type === 'number';\n }\n\n function buildPayload(el) {\n const rect = el.getBoundingClientRect();\n const cs = getComputedStyle(el);\n const fontSize = parseFloat(cs.fontSize);\n const lineHeight = parseFloat(cs.lineHeight);\n const paddingTop = parseFloat(cs.paddingTop);\n const paddingLeft = parseFloat(cs.paddingLeft);\n const multiline = el.tagName === 'TEXTAREA';\n const payload = {\n focused: true,\n rect: { x: rect.x, y: rect.y, width: rect.width, height: rect.height },\n value: el.value,\n selectionStart: el.selectionStart == null ? undefined : el.selectionStart,\n selectionEnd: el.selectionEnd == null ? undefined : el.selectionEnd,\n multiline: multiline,\n inputType: multiline ? 'textarea' : ((el.getAttribute('type') || 'text').toLowerCase()),\n textAlign: cs.textAlign,\n };\n if (typeof el.maxLength === 'number' && el.maxLength >= 0) payload.maxLength = el.maxLength;\n if (!Number.isNaN(fontSize)) payload.fontSize = fontSize;\n if (!Number.isNaN(lineHeight)) payload.lineHeight = lineHeight;\n if (!Number.isNaN(paddingTop)) payload.paddingTop = paddingTop;\n if (!Number.isNaN(paddingLeft)) payload.paddingLeft = paddingLeft;\n return payload;\n }\n\n // Report focused:true (with current value/selection) whenever a reporting\n // target is active; report focused:false only on the true->false transition.\n function report() {\n const el = document.activeElement;\n if (isReportingTarget(el)) {\n emit(buildPayload(el));\n } else if (lastReportedFocused) {\n emit({ focused: false });\n }\n }\n\n document.addEventListener('focusin', report, true);\n document.addEventListener('focusout', function () {\n if (lastReportedFocused) emit({ focused: false });\n }, true);\n document.addEventListener('input', report, true);\n document.addEventListener('selectionchange', report, true);\n}";
72
+ /**
73
+ * Browser-context script that reflects a value into the currently-focused
74
+ * reporting-target input/textarea using the native value setter +
75
+ * InputEvent('input') dispatch, so React-style controlled components do not
76
+ * roll the value back. Optionally applies a selection range.
77
+ *
78
+ * No-op when the active element is not a reporting target. String script for
79
+ * the same reason as the others (DOM types resolved in the browser).
80
+ */
81
+ export declare const SET_FOCUSED_INPUT_VALUE_SCRIPT = "(args) => {\n const el = document.activeElement;\n if (!el) return;\n const tag = el.tagName;\n let proto;\n if (tag === 'TEXTAREA') {\n proto = window.HTMLTextAreaElement.prototype;\n } else if (tag === 'INPUT') {\n const type = (el.getAttribute('type') || '').toLowerCase();\n const ok = type === '' || type === 'text' || type === 'search' || type === 'email' ||\n type === 'url' || type === 'tel' || type === 'password' || type === 'number';\n if (!ok) return;\n proto = window.HTMLInputElement.prototype;\n } else {\n return;\n }\n // The native value setter may be absent on exotic/polyfilled prototypes;\n // treat that as a no-op (same as a non-reporting target) rather than letting\n // a TypeError escape from reading .set of undefined.\n const desc = Object.getOwnPropertyDescriptor(proto, 'value');\n const setter = desc && desc.set;\n if (!setter) return;\n setter.call(el, args.value);\n el.dispatchEvent(new InputEvent('input', { bubbles: true }));\n if (args.selectionStart != null && args.selectionEnd != null) {\n try { el.setSelectionRange(args.selectionStart, args.selectionEnd); } catch (e) {}\n }\n}";
19
82
  export declare class BrowserSession {
20
83
  private browser;
21
84
  private context;
@@ -36,6 +99,16 @@ export declare class BrowserSession {
36
99
  * 反映した Promise を返すため、呼び出し側で失敗を検知できる。
37
100
  */
38
101
  onFileChooser: ((accept: (files: FileChooserPayload) => Promise<void>) => void) | null;
102
+ /**
103
+ * フォーカスされた報告対象 input/textarea の変化を Web 側へ通知するコールバック。
104
+ * `enableFocusReporting` が exposeBinding 経由でブラウザからのイベントを受けてこれを呼ぶ。
105
+ */
106
+ onFocusChange: ((payload: FocusChangePayload) => void) | null;
107
+ /**
108
+ * `page.exposeBinding('__onBrowserFocus', ...)` を一度だけ呼ぶためのガード。
109
+ * 同じ名前の binding を二重登録すると Playwright が例外を投げるため。
110
+ */
111
+ private focusReportingExposed;
39
112
  /**
40
113
  * Get the currently active device emulation ID, or null if none.
41
114
  */
@@ -56,6 +129,37 @@ export declare class BrowserSession {
56
129
  * Safe no-op on non-Chromium engines (CDP unavailable).
57
130
  */
58
131
  private enableFocusEmulation;
132
+ /**
133
+ * Install focus/value/selection reporting for simple input/textarea elements.
134
+ *
135
+ * Exposes the `__onBrowserFocus` binding once per session (guarded by
136
+ * `focusReportingExposed`; re-exposing the same name throws in Playwright),
137
+ * then injects FOCUS_REPORTING_SCRIPT both as an init script (for future
138
+ * navigations) and into the current document (for the already-loaded page).
139
+ * The script is idempotent via `window.__browserFocusReportingInstalled`.
140
+ *
141
+ * Binding exposure and script injection are wrapped in SEPARATE try/catch
142
+ * blocks so a partial failure stays isolated: a failed binding expose must
143
+ * not prevent the script from being injected, and a failed script injection
144
+ * must not flip `focusReportingExposed` back (which would later trigger a
145
+ * duplicate-name re-expose that throws). The `focusReportingExposed` guard is
146
+ * only set true after the expose actually succeeds, and only the expose path
147
+ * is gated by it — script injection is attempted on every page so it is not
148
+ * coupled to whether the binding was (re-)exposed this call.
149
+ *
150
+ * Mirrors enableFocusEmulation's policy: failures are logged via warn and
151
+ * never propagated — focus reporting is best-effort and not critical.
152
+ */
153
+ private enableFocusReporting;
154
+ /**
155
+ * Reflect a value into the currently-focused reporting-target input/textarea.
156
+ *
157
+ * Uses the native value setter + InputEvent('input') dispatch so controlled
158
+ * React components do not roll the value back, and applies the selection range
159
+ * when both bounds are provided. No-op when the active element is not a
160
+ * reporting target. Throws when no page is active.
161
+ */
162
+ setFocusedInputValue(value: string, selectionStart?: number, selectionEnd?: number): Promise<void>;
59
163
  /**
60
164
  * Check if a browser session is currently active.
61
165
  */
@@ -116,6 +220,13 @@ export declare class BrowserSession {
116
220
  * Used for drag-to-select text on the live view canvas.
117
221
  */
118
222
  executeMouseMove(x: number, y: number): Promise<void>;
223
+ /**
224
+ * Read the CSS `cursor` value of the element at the given coordinates.
225
+ * Used by the live view to mirror the page's cursor shape on the web canvas.
226
+ * Throws when no page is active; propagates page.evaluate errors so the
227
+ * caller can skip the update for that frame.
228
+ */
229
+ getCursorAt(x: number, y: number): Promise<string>;
119
230
  /**
120
231
  * Move to (x, y) and press a mouse button without releasing it.
121
232
  * Pair with executeMouseMove / executeMouseUp to perform drag-selection.
@@ -1 +1 @@
1
- {"version":3,"file":"browser-session.d.ts","sourceRoot":"","sources":["../../../../src/mcp/tools/browser/browser-session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"browser-session.d.ts","sourceRoot":"","sources":["../../../../src/mcp/tools/browser/browser-session.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,7 @@
5
5
  * Supports live view streaming (JPEG frames) and direct interaction.
6
6
  */
7
7
  Object.defineProperty(exports, "__esModule", { value: true });
8
- exports.BrowserSession = void 0;
8
+ exports.BrowserSession = exports.SET_FOCUSED_INPUT_VALUE_SCRIPT = exports.FOCUS_REPORTING_SCRIPT = void 0;
9
9
  const logger_1 = require("../../../logger");
10
10
  const browser_action_log_1 = require("./browser-action-log");
11
11
  const browser_types_1 = require("./browser-types");
@@ -31,6 +31,136 @@ const GET_SELECTED_TEXT_SCRIPT = `() => {
31
31
  const sel = window.getSelection();
32
32
  return sel ? sel.toString() : '';
33
33
  }`;
34
+ /**
35
+ * Browser-context script installed (idempotently) into the page to report
36
+ * focus/value/selection changes of simple input/textarea elements back to the
37
+ * agent via the `window.__onBrowserFocus` binding exposed by Playwright.
38
+ *
39
+ * Runs in the browser, so it is a string passed to addInitScript / evaluate to
40
+ * avoid Node resolving DOM types (same convention as element-info scripts).
41
+ *
42
+ * Listens in the capture phase for focusin/focusout/input/selectionchange and,
43
+ * for reporting targets (textarea, or input whose type is one of the simple
44
+ * text-like types), builds and sends the focus payload. focusout / non-target
45
+ * elements send `{ focused: false }`.
46
+ */
47
+ exports.FOCUS_REPORTING_SCRIPT = `() => {
48
+ if (window.__browserFocusReportingInstalled) return;
49
+ window.__browserFocusReportingInstalled = true;
50
+
51
+ // Last focused state reported to the agent. Used to suppress repeated
52
+ // { focused: false } notifications: selectionchange fires for the whole
53
+ // document (including unrelated page text selections), so without this guard
54
+ // every such selection would emit a redundant focused:false. We only forward
55
+ // a false when transitioning from a previously-focused (true) state.
56
+ var lastReportedFocused = false;
57
+
58
+ // Forward a payload through the exposed binding, recording the new focused
59
+ // state and logging the first failure once (high-frequency events would
60
+ // otherwise flood the browser console).
61
+ function emit(payload) {
62
+ lastReportedFocused = payload.focused;
63
+ try {
64
+ window.__onBrowserFocus(payload);
65
+ } catch (e) {
66
+ if (!window.__focusReportErrorLogged) {
67
+ window.__focusReportErrorLogged = true;
68
+ try { console.warn('[focus-reporting] report failed', e && e.message ? e.message : e); } catch (_) {}
69
+ }
70
+ }
71
+ }
72
+
73
+ function isReportingTarget(el) {
74
+ if (!el) return false;
75
+ const tag = el.tagName;
76
+ if (tag === 'TEXTAREA') return true;
77
+ if (tag !== 'INPUT') return false;
78
+ const type = (el.getAttribute('type') || '').toLowerCase();
79
+ return type === '' || type === 'text' || type === 'search' || type === 'email' ||
80
+ type === 'url' || type === 'tel' || type === 'password' || type === 'number';
81
+ }
82
+
83
+ function buildPayload(el) {
84
+ const rect = el.getBoundingClientRect();
85
+ const cs = getComputedStyle(el);
86
+ const fontSize = parseFloat(cs.fontSize);
87
+ const lineHeight = parseFloat(cs.lineHeight);
88
+ const paddingTop = parseFloat(cs.paddingTop);
89
+ const paddingLeft = parseFloat(cs.paddingLeft);
90
+ const multiline = el.tagName === 'TEXTAREA';
91
+ const payload = {
92
+ focused: true,
93
+ rect: { x: rect.x, y: rect.y, width: rect.width, height: rect.height },
94
+ value: el.value,
95
+ selectionStart: el.selectionStart == null ? undefined : el.selectionStart,
96
+ selectionEnd: el.selectionEnd == null ? undefined : el.selectionEnd,
97
+ multiline: multiline,
98
+ inputType: multiline ? 'textarea' : ((el.getAttribute('type') || 'text').toLowerCase()),
99
+ textAlign: cs.textAlign,
100
+ };
101
+ if (typeof el.maxLength === 'number' && el.maxLength >= 0) payload.maxLength = el.maxLength;
102
+ if (!Number.isNaN(fontSize)) payload.fontSize = fontSize;
103
+ if (!Number.isNaN(lineHeight)) payload.lineHeight = lineHeight;
104
+ if (!Number.isNaN(paddingTop)) payload.paddingTop = paddingTop;
105
+ if (!Number.isNaN(paddingLeft)) payload.paddingLeft = paddingLeft;
106
+ return payload;
107
+ }
108
+
109
+ // Report focused:true (with current value/selection) whenever a reporting
110
+ // target is active; report focused:false only on the true->false transition.
111
+ function report() {
112
+ const el = document.activeElement;
113
+ if (isReportingTarget(el)) {
114
+ emit(buildPayload(el));
115
+ } else if (lastReportedFocused) {
116
+ emit({ focused: false });
117
+ }
118
+ }
119
+
120
+ document.addEventListener('focusin', report, true);
121
+ document.addEventListener('focusout', function () {
122
+ if (lastReportedFocused) emit({ focused: false });
123
+ }, true);
124
+ document.addEventListener('input', report, true);
125
+ document.addEventListener('selectionchange', report, true);
126
+ }`;
127
+ /**
128
+ * Browser-context script that reflects a value into the currently-focused
129
+ * reporting-target input/textarea using the native value setter +
130
+ * InputEvent('input') dispatch, so React-style controlled components do not
131
+ * roll the value back. Optionally applies a selection range.
132
+ *
133
+ * No-op when the active element is not a reporting target. String script for
134
+ * the same reason as the others (DOM types resolved in the browser).
135
+ */
136
+ exports.SET_FOCUSED_INPUT_VALUE_SCRIPT = `(args) => {
137
+ const el = document.activeElement;
138
+ if (!el) return;
139
+ const tag = el.tagName;
140
+ let proto;
141
+ if (tag === 'TEXTAREA') {
142
+ proto = window.HTMLTextAreaElement.prototype;
143
+ } else if (tag === 'INPUT') {
144
+ const type = (el.getAttribute('type') || '').toLowerCase();
145
+ const ok = type === '' || type === 'text' || type === 'search' || type === 'email' ||
146
+ type === 'url' || type === 'tel' || type === 'password' || type === 'number';
147
+ if (!ok) return;
148
+ proto = window.HTMLInputElement.prototype;
149
+ } else {
150
+ return;
151
+ }
152
+ // The native value setter may be absent on exotic/polyfilled prototypes;
153
+ // treat that as a no-op (same as a non-reporting target) rather than letting
154
+ // a TypeError escape from reading .set of undefined.
155
+ const desc = Object.getOwnPropertyDescriptor(proto, 'value');
156
+ const setter = desc && desc.set;
157
+ if (!setter) return;
158
+ setter.call(el, args.value);
159
+ el.dispatchEvent(new InputEvent('input', { bubbles: true }));
160
+ if (args.selectionStart != null && args.selectionEnd != null) {
161
+ try { el.setSelectionRange(args.selectionStart, args.selectionEnd); } catch (e) {}
162
+ }
163
+ }`;
34
164
  class BrowserSession {
35
165
  browser = null;
36
166
  context = null;
@@ -51,6 +181,16 @@ class BrowserSession {
51
181
  * 反映した Promise を返すため、呼び出し側で失敗を検知できる。
52
182
  */
53
183
  onFileChooser = null;
184
+ /**
185
+ * フォーカスされた報告対象 input/textarea の変化を Web 側へ通知するコールバック。
186
+ * `enableFocusReporting` が exposeBinding 経由でブラウザからのイベントを受けてこれを呼ぶ。
187
+ */
188
+ onFocusChange = null;
189
+ /**
190
+ * `page.exposeBinding('__onBrowserFocus', ...)` を一度だけ呼ぶためのガード。
191
+ * 同じ名前の binding を二重登録すると Playwright が例外を投げるため。
192
+ */
193
+ focusReportingExposed = false;
54
194
  /**
55
195
  * Get the currently active device emulation ID, or null if none.
56
196
  */
@@ -86,6 +226,7 @@ class BrowserSession {
86
226
  this.page = await this.context.newPage();
87
227
  this.attachPageListeners(this.page);
88
228
  await this.enableFocusEmulation(this.page);
229
+ await this.enableFocusReporting(this.page);
89
230
  return this.page;
90
231
  }
91
232
  /**
@@ -103,6 +244,59 @@ class BrowserSession {
103
244
  logger_1.logger.warn(`[browser] Focus emulation not enabled: ${String(error)}`);
104
245
  }
105
246
  }
247
+ /**
248
+ * Install focus/value/selection reporting for simple input/textarea elements.
249
+ *
250
+ * Exposes the `__onBrowserFocus` binding once per session (guarded by
251
+ * `focusReportingExposed`; re-exposing the same name throws in Playwright),
252
+ * then injects FOCUS_REPORTING_SCRIPT both as an init script (for future
253
+ * navigations) and into the current document (for the already-loaded page).
254
+ * The script is idempotent via `window.__browserFocusReportingInstalled`.
255
+ *
256
+ * Binding exposure and script injection are wrapped in SEPARATE try/catch
257
+ * blocks so a partial failure stays isolated: a failed binding expose must
258
+ * not prevent the script from being injected, and a failed script injection
259
+ * must not flip `focusReportingExposed` back (which would later trigger a
260
+ * duplicate-name re-expose that throws). The `focusReportingExposed` guard is
261
+ * only set true after the expose actually succeeds, and only the expose path
262
+ * is gated by it — script injection is attempted on every page so it is not
263
+ * coupled to whether the binding was (re-)exposed this call.
264
+ *
265
+ * Mirrors enableFocusEmulation's policy: failures are logged via warn and
266
+ * never propagated — focus reporting is best-effort and not critical.
267
+ */
268
+ async enableFocusReporting(page) {
269
+ if (!this.focusReportingExposed) {
270
+ try {
271
+ await page.exposeBinding('__onBrowserFocus', (_src, payload) => this.onFocusChange?.(payload));
272
+ this.focusReportingExposed = true;
273
+ }
274
+ catch (error) {
275
+ logger_1.logger.warn(`[browser] Focus reporting binding not exposed: ${String(error)}`);
276
+ }
277
+ }
278
+ try {
279
+ await page.addInitScript(exports.FOCUS_REPORTING_SCRIPT);
280
+ await page.evaluate(exports.FOCUS_REPORTING_SCRIPT);
281
+ }
282
+ catch (error) {
283
+ logger_1.logger.warn(`[browser] Focus reporting script not injected: ${String(error)}`);
284
+ }
285
+ }
286
+ /**
287
+ * Reflect a value into the currently-focused reporting-target input/textarea.
288
+ *
289
+ * Uses the native value setter + InputEvent('input') dispatch so controlled
290
+ * React components do not roll the value back, and applies the selection range
291
+ * when both bounds are provided. No-op when the active element is not a
292
+ * reporting target. Throws when no page is active.
293
+ */
294
+ async setFocusedInputValue(value, selectionStart, selectionEnd) {
295
+ if (!this.page)
296
+ throw new Error('No active browser page');
297
+ this.resetIdleTimer();
298
+ await this.page.evaluate(exports.SET_FOCUSED_INPUT_VALUE_SCRIPT, { value, selectionStart, selectionEnd });
299
+ }
106
300
  /**
107
301
  * Check if a browser session is currently active.
108
302
  */
@@ -118,6 +312,9 @@ class BrowserSession {
118
312
  this.closed = true;
119
313
  this.pendingFileChooser = null;
120
314
  this.onFileChooser = null;
315
+ // Symmetric with onFileChooser: drop the focus-change callback so a closed
316
+ // session cannot keep the Web-side WebSocket alive via this reference.
317
+ this.onFocusChange = null;
121
318
  this.stopLiveView();
122
319
  this.clearIdleTimer();
123
320
  if (this.browser) {
@@ -183,6 +380,9 @@ class BrowserSession {
183
380
  // ignore close errors
184
381
  }
185
382
  }
383
+ // The exposeBinding lives on the (now-closed) page; the fresh page below
384
+ // needs its own binding, so allow enableFocusReporting to re-expose it.
385
+ this.focusReportingExposed = false;
186
386
  // Create new context with the desired userAgent
187
387
  const contextOptions = {};
188
388
  if (emulation) {
@@ -197,6 +397,7 @@ class BrowserSession {
197
397
  this.page = await this.context.newPage();
198
398
  this.attachPageListeners(this.page);
199
399
  await this.enableFocusEmulation(this.page);
400
+ await this.enableFocusReporting(this.page);
200
401
  // Navigate back to the previous URL
201
402
  if (currentUrl && currentUrl !== 'about:blank') {
202
403
  try {
@@ -364,6 +565,18 @@ class BrowserSession {
364
565
  this.resetIdleTimer();
365
566
  await this.page.mouse.move(x, y);
366
567
  }
568
+ /**
569
+ * Read the CSS `cursor` value of the element at the given coordinates.
570
+ * Used by the live view to mirror the page's cursor shape on the web canvas.
571
+ * Throws when no page is active; propagates page.evaluate errors so the
572
+ * caller can skip the update for that frame.
573
+ */
574
+ async getCursorAt(x, y) {
575
+ if (!this.page)
576
+ throw new Error('No active browser page');
577
+ this.resetIdleTimer();
578
+ return (0, element_info_1.getCursorAt)(this.page, x, y);
579
+ }
367
580
  /**
368
581
  * Move to (x, y) and press a mouse button without releasing it.
369
582
  * Pair with executeMouseMove / executeMouseUp to perform drag-selection.
@@ -1 +1 @@
1
- {"version":3,"file":"browser-session.js","sourceRoot":"","sources":["../../../../src/mcp/tools/browser/browser-session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"browser-session.js","sourceRoot":"","sources":["../../../../src/mcp/tools/browser/browser-session.ts"],"names":[],"mappings":"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"}
@@ -32,6 +32,15 @@ export declare function getElementAtPoint(page: Page, x: number, y: number): Pro
32
32
  * Returns null if no element is focused or on error.
33
33
  */
34
34
  export declare function getFocusedElementInfo(page: Page): Promise<ElementInfo | null>;
35
+ /**
36
+ * Get the CSS `cursor` value of the element at the given coordinates.
37
+ *
38
+ * Returns 'default' when no element is at the point or the computed cursor is
39
+ * empty/non-string. Unlike getElementAtPoint, this does NOT swallow evaluate
40
+ * errors: it re-throws so the caller (mouse-move handler) can skip sending a
41
+ * cursor update for that frame instead of reporting a misleading 'default'.
42
+ */
43
+ export declare function getCursorAt(page: Page, x: number, y: number): Promise<string>;
35
44
  /**
36
45
  * Format ElementInfo into a human-readable, Playwright-actionable string.
37
46
  */
@@ -1 +1 @@
1
- {"version":3,"file":"element-info.d.ts","sourceRoot":"","sources":["../../../../src/mcp/tools/browser/element-info.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AAEtC,iDAAiD;AACjD,MAAM,WAAW,WAAW;IAC1B,yFAAyF;IACzF,QAAQ,EAAE,MAAM,CAAA;IAChB,8CAA8C;IAC9C,OAAO,EAAE,MAAM,CAAA;IACf,mFAAmF;IACnF,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,uCAAuC;IACvC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,2CAA2C;IAC3C,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,wDAAwD;IACxD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,qBAAqB;IACrB,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAuKD;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAMrG;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAMnF;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,CAiB3D"}
1
+ {"version":3,"file":"element-info.d.ts","sourceRoot":"","sources":["../../../../src/mcp/tools/browser/element-info.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AAEtC,iDAAiD;AACjD,MAAM,WAAW,WAAW;IAC1B,yFAAyF;IACzF,QAAQ,EAAE,MAAM,CAAA;IAChB,8CAA8C;IAC9C,OAAO,EAAE,MAAM,CAAA;IACf,mFAAmF;IACnF,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,uCAAuC;IACvC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,2CAA2C;IAC3C,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,wDAAwD;IACxD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,qBAAqB;IACrB,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAmLD;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAMrG;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAMnF;AAED;;;;;;;GAOG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAGnF;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,CAiB3D"}
@@ -8,6 +8,7 @@
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
9
  exports.getElementAtPoint = getElementAtPoint;
10
10
  exports.getFocusedElementInfo = getFocusedElementInfo;
11
+ exports.getCursorAt = getCursorAt;
11
12
  exports.formatElementInfo = formatElementInfo;
12
13
  /**
13
14
  * JavaScript to run in the browser via page.evaluate() to extract element info.
@@ -114,6 +115,17 @@ const ELEMENT_AT_POINT_SCRIPT = `(point) => {
114
115
  return '';
115
116
  }
116
117
  }`;
118
+ /**
119
+ * JavaScript to read the CSS `cursor` value of the element at a point.
120
+ * Mirrors ELEMENT_AT_POINT_SCRIPT's string-script convention so the browser
121
+ * context (not Node) resolves DOM types. Returns 'default' when no element is
122
+ * found or the computed cursor is empty.
123
+ */
124
+ const CURSOR_AT_POINT_SCRIPT = `(point) => {
125
+ const el = document.elementFromPoint(point.x, point.y);
126
+ if (!el) return 'default';
127
+ return getComputedStyle(el).cursor || 'default';
128
+ }`;
117
129
  /**
118
130
  * JavaScript to extract info about the currently focused element.
119
131
  */
@@ -196,6 +208,18 @@ async function getFocusedElementInfo(page) {
196
208
  return null;
197
209
  }
198
210
  }
211
+ /**
212
+ * Get the CSS `cursor` value of the element at the given coordinates.
213
+ *
214
+ * Returns 'default' when no element is at the point or the computed cursor is
215
+ * empty/non-string. Unlike getElementAtPoint, this does NOT swallow evaluate
216
+ * errors: it re-throws so the caller (mouse-move handler) can skip sending a
217
+ * cursor update for that frame instead of reporting a misleading 'default'.
218
+ */
219
+ async function getCursorAt(page, x, y) {
220
+ const result = await page.evaluate(CURSOR_AT_POINT_SCRIPT, { x, y });
221
+ return typeof result === 'string' ? result : 'default';
222
+ }
199
223
  /**
200
224
  * Format ElementInfo into a human-readable, Playwright-actionable string.
201
225
  */
@@ -1 +1 @@
1
- {"version":3,"file":"element-info.js","sourceRoot":"","sources":["../../../../src/mcp/tools/browser/element-info.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AA+LH,8CAMC;AAMD,sDAMC;AAKD,8CAiBC;AAjND;;;GAGG;AACH,MAAM,uBAAuB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoG9B,CAAA;AAEF;;GAEG;AACH,MAAM,sBAAsB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsD7B,CAAA;AAEF;;;GAGG;AACI,KAAK,UAAU,iBAAiB,CAAC,IAAU,EAAE,CAAS,EAAE,CAAS;IACtE,IAAI,CAAC;QACH,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,uBAAuB,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAuB,CAAA;IACrF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC;AAED;;;GAGG;AACI,KAAK,UAAU,qBAAqB,CAAC,IAAU;IACpD,IAAI,CAAC;QACH,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,sBAAsB,CAAuB,CAAA;IAC1E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAgB,iBAAiB,CAAC,IAAiB;IACjD,MAAM,KAAK,GAAa,EAAE,CAAA;IAE1B,oEAAoE;IACpE,KAAK,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAA;IAEzC,sBAAsB;IACtB,MAAM,IAAI,GAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACrC,IAAI,IAAI,CAAC,IAAI;QAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;IAC7C,IAAI,IAAI,CAAC,IAAI;QAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;IAC7C,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAEjC,IAAI,IAAI,CAAC,KAAK;QAAE,KAAK,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,KAAK,GAAG,CAAC,CAAA;IACnD,IAAI,IAAI,CAAC,IAAI;QAAE,KAAK,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,GAAG,CAAC,CAAA;IAChD,IAAI,IAAI,CAAC,IAAI;QAAE,KAAK,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,GAAG,CAAC,CAAA;IAEhD,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACxB,CAAC"}
1
+ {"version":3,"file":"element-info.js","sourceRoot":"","sources":["../../../../src/mcp/tools/browser/element-info.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AA2MH,8CAMC;AAMD,sDAMC;AAUD,kCAGC;AAKD,8CAiBC;AA1OD;;;GAGG;AACH,MAAM,uBAAuB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoG9B,CAAA;AAEF;;;;;GAKG;AACH,MAAM,sBAAsB,GAAG;;;;EAI7B,CAAA;AAEF;;GAEG;AACH,MAAM,sBAAsB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsD7B,CAAA;AAEF;;;GAGG;AACI,KAAK,UAAU,iBAAiB,CAAC,IAAU,EAAE,CAAS,EAAE,CAAS;IACtE,IAAI,CAAC;QACH,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,uBAAuB,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAuB,CAAA;IACrF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC;AAED;;;GAGG;AACI,KAAK,UAAU,qBAAqB,CAAC,IAAU;IACpD,IAAI,CAAC;QACH,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,sBAAsB,CAAuB,CAAA;IAC1E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACI,KAAK,UAAU,WAAW,CAAC,IAAU,EAAE,CAAS,EAAE,CAAS;IAChE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,sBAAsB,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;IACpE,OAAO,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAA;AACxD,CAAC;AAED;;GAEG;AACH,SAAgB,iBAAiB,CAAC,IAAiB;IACjD,MAAM,KAAK,GAAa,EAAE,CAAA;IAE1B,oEAAoE;IACpE,KAAK,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAA;IAEzC,sBAAsB;IACtB,MAAM,IAAI,GAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACrC,IAAI,IAAI,CAAC,IAAI;QAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;IAC7C,IAAI,IAAI,CAAC,IAAI;QAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;IAC7C,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAEjC,IAAI,IAAI,CAAC,KAAK;QAAE,KAAK,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,KAAK,GAAG,CAAC,CAAA;IACnD,IAAI,IAAI,CAAC,IAAI;QAAE,KAAK,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,GAAG,CAAC,CAAA;IAChD,IAAI,IAAI,CAAC,IAAI;QAAE,KAAK,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,GAAG,CAAC,CAAA;IAEhD,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACxB,CAAC"}