@jobshimo/browser-link 0.29.0 → 0.30.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/activity/extract.js +1 -0
- package/dist/activity/extract.js.map +1 -1
- package/dist/agent-instructions/content.js +4 -0
- package/dist/agent-instructions/content.js.map +1 -1
- package/dist/bridge/dispatch.js +5 -3
- package/dist/bridge/dispatch.js.map +1 -1
- package/dist/cdp/inpage/builders.d.ts +15 -0
- package/dist/cdp/inpage/builders.js +46 -0
- package/dist/cdp/inpage/builders.js.map +1 -1
- package/dist/cdp/screenshot.d.ts +109 -0
- package/dist/cdp/screenshot.js +189 -0
- package/dist/cdp/screenshot.js.map +1 -0
- package/dist/cdp/support.js +1 -0
- package/dist/cdp/support.js.map +1 -1
- package/dist/cdp/transport.js +15 -1
- package/dist/cdp/transport.js.map +1 -1
- package/dist/commands/about.js +2 -0
- package/dist/commands/about.js.map +1 -1
- package/dist/extension/background.js +25 -1
- package/dist/extension/background.js.map +1 -1
- package/dist/extension/inpage/builders.d.ts +15 -0
- package/dist/extension/inpage/builders.js +46 -0
- package/dist/extension/inpage/builders.js.map +1 -1
- package/dist/extension/manifest.json +1 -1
- package/dist/extension/screenshot.d.ts +113 -0
- package/dist/extension/screenshot.js +193 -0
- package/dist/extension/screenshot.js.map +1 -0
- package/dist/permissions.js +6 -0
- package/dist/permissions.js.map +1 -1
- package/dist/tools/browser-definitions.js +56 -0
- package/dist/tools/browser-definitions.js.map +1 -1
- package/dist/tools/browser-dispatch.js +37 -0
- package/dist/tools/browser-dispatch.js.map +1 -1
- package/dist/tools/responses.d.ts +14 -2
- package/dist/tools/responses.js +21 -0
- package/dist/tools/responses.js.map +1 -1
- package/dist/tools/server-instructions.js +9 -0
- package/dist/tools/server-instructions.js.map +1 -1
- package/package.json +1 -1
package/dist/activity/extract.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extract.js","sourceRoot":"","sources":["../../src/activity/extract.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"extract.js","sourceRoot":"","sources":["../../src/activity/extract.ts"],"names":[],"mappings":"AAGA;;;;;;;;GAQG;AAEH;oCACoC;AACpC,MAAM,YAAY,GAAiD;IACjE,eAAe,EAAE,UAAU;IAC3B,cAAc,EAAE,UAAU;IAC1B,eAAe,EAAE,UAAU;IAC3B,kBAAkB,EAAE,UAAU;IAC9B,kBAAkB,EAAE,iBAAiB;IACrC,2BAA2B,EAAE,UAAU;IACvC,oBAAoB,EAAE,UAAU;IAChC,kBAAkB,EAAE,UAAU;CAC/B,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,WAAW,GAAiD;IAChE,kBAAkB,EAAE,KAAK;IACzB,cAAc,EAAE,MAAM;IACtB,cAAc,EAAE,MAAM;IACtB,kBAAkB,EAAE,YAAY;IAChC,eAAe,EAAE,KAAK;IACtB,kBAAkB,EAAE,KAAK;CAC1B,CAAC;AAEF,SAAS,UAAU,CAAC,IAAa,EAAE,GAAW;IAC5C,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC3D,MAAM,KAAK,GAAI,IAAgC,CAAC,GAAG,CAAC,CAAC;IACrD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AACtE,CAAC;AAED;;;8CAG8C;AAC9C,SAAS,aAAa,CAAC,IAAa;IAClC,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC3D,MAAM,KAAK,GAAI,IAA4B,CAAC,KAAK,CAAC;IAClD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACvC,MAAM,KAAK,GAAG,KAAK;SAChB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACZ,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAClF;SACA,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC;IACrD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,GAAG,KAAK,CAAC,MAAM,QAAQ,CAAC;IACvD,OAAO,GAAG,KAAK,CAAC,MAAM,WAAW,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAY,EAAE,IAAa;IACzD,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IAC/B,OAAO,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,IAAa;IACxD,IAAI,IAAI,KAAK,cAAc;QAAE,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC;IACxD,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IAC9B,OAAO,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAC1D,CAAC;AAED,oEAAoE;AACpE,MAAM,UAAU,YAAY,CAAC,IAAa;IACxC,OAAO,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACpC,CAAC;AAED;wEACwE;AACxE,MAAM,UAAU,aAAa,CAAC,IAAa;IACzC,OAAO,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AACrC,CAAC;AAED;;;mBAGmB;AACnB,MAAM,UAAU,YAAY,CAAC,KAAoB;IAC/C,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAChC,OAAO,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC;AACxD,CAAC;AAED;;oEAEoE;AACpE,MAAM,UAAU,YAAY,CAAC,MAA+B;IAC1D,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACzB,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC;IACjE,OAAO,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AAC1E,CAAC;AAaD;;sCAEsC;AACtC,MAAM,UAAU,QAAQ,CAAC,EACvB,IAAI,EACJ,IAAI,EACJ,MAAM,EACN,UAAU,EACV,KAAK,EACL,cAAc,GACA;IACd,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACjC,OAAO;QACL,IAAI;QACJ,KAAK;QACL,SAAS,EAAE,YAAY,CAAC,KAAK,CAAC;QAC9B,yEAAyE;QACzE,sEAAsE;QACtE,GAAG,EAAE,IAAI;QACT,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,YAAY,CAAC,MAAM,CAAC;QAC3B,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,IAAI;QAC7B,QAAQ,EAAE,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC;QACrC,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI;QAC3D,OAAO,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO;QAC7C,KAAK,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC;QACvD,UAAU;QACV,MAAM,EAAE,aAAa,CAAC,IAAI,CAAC;KAC5B,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,KAAc;IAClC,IAAI,KAAK,YAAY,KAAK;QAAE,OAAO,KAAK,CAAC,OAAO,CAAC;IACjD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC"}
|
|
@@ -78,6 +78,10 @@ function body() {
|
|
|
78
78
|
'→ `browser.claim_tab` before operating on a tab so other agents see it',
|
|
79
79
|
'in use. `browser.release_tab` when done.',
|
|
80
80
|
'',
|
|
81
|
+
'To SEE a page use `browser.screenshot` (mode viewport | full_page |',
|
|
82
|
+
'element + selector; works on cdp: tabs too). Images cost tokens: prefer',
|
|
83
|
+
'element or jpeg when full fidelity is not needed.',
|
|
84
|
+
'',
|
|
81
85
|
'A `list_tabs` entry has `tab_id` starting with `cdp:` (`transport: "cdp"`):',
|
|
82
86
|
'→ that tab is reached via cdp-direct, not the extension — every tool',
|
|
83
87
|
'works the same EXCEPT drag (standalone AND as a flow step)/console/',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content.js","sourceRoot":"","sources":["../../src/agent-instructions/content.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"content.js","sourceRoot":"","sources":["../../src/agent-instructions/content.ts"],"names":[],"mappings":"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"}
|
package/dist/bridge/dispatch.js
CHANGED
|
@@ -11,7 +11,7 @@ import { isToolEnabled } from '../permissions.js';
|
|
|
11
11
|
import { MAP_TOOL_DEFINITIONS, handleMapTool, isMapTool } from '../map/tools.js';
|
|
12
12
|
import { BROWSER_TOOL_DEFINITIONS } from '../tools/browser-definitions.js';
|
|
13
13
|
import { handleBrowserTool, isBrowserTool, } from '../tools/browser-dispatch.js';
|
|
14
|
-
import { toolError, toolResponse } from '../tools/responses.js';
|
|
14
|
+
import { imageToolResponse, toolError, toolResponse } from '../tools/responses.js';
|
|
15
15
|
export function handleToolsList(deps) {
|
|
16
16
|
const disabled = deps.disabledTools();
|
|
17
17
|
return {
|
|
@@ -29,8 +29,10 @@ export async function handleToolCall(req, deps) {
|
|
|
29
29
|
try {
|
|
30
30
|
if (isMapTool(name))
|
|
31
31
|
return toolResponse(handleMapTool(name, args));
|
|
32
|
-
if (isBrowserTool(name))
|
|
33
|
-
|
|
32
|
+
if (isBrowserTool(name)) {
|
|
33
|
+
const result = await handleBrowserTool(name, args, deps.browserTools, caller);
|
|
34
|
+
return name === 'browser.screenshot' ? imageToolResponse(result) : toolResponse(result);
|
|
35
|
+
}
|
|
34
36
|
return toolError(`Unknown tool: ${name}`);
|
|
35
37
|
}
|
|
36
38
|
catch (err) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dispatch.js","sourceRoot":"","sources":["../../src/bridge/dispatch.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjF,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,EACL,iBAAiB,EACjB,aAAa,GAEd,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"dispatch.js","sourceRoot":"","sources":["../../src/bridge/dispatch.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjF,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,EACL,iBAAiB,EACjB,aAAa,GAEd,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAwBnF,MAAM,UAAU,eAAe,CAAC,IAAkB;IAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;IACtC,OAAO;QACL,KAAK,EAAE,CAAC,GAAG,wBAAwB,EAAE,GAAG,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CACzE,aAAa,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,CAChC;KACF,CAAC;AACJ,CAAC;AAWD,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,GAAoB,EAAE,IAAkB;IAC3E,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;IAC9C,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,EAAE,CAAC;QAC/C,uEAAuE;QACvE,qEAAqE;QACrE,OAAO,SAAS,CACd,SAAS,IAAI,6CAA6C;YACxD,8EAA8E,IAAI,KAAK,CAC1F,CAAC;IACJ,CAAC;IACD,IAAI,CAAC;QACH,IAAI,SAAS,CAAC,IAAI,CAAC;YAAE,OAAO,YAAY,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;QACpE,IAAI,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;YAC9E,OAAO,IAAI,KAAK,oBAAoB,CAAC,CAAC,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAC1F,CAAC;QACD,OAAO,SAAS,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC;IAC5C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,SAAS,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IACrE,CAAC;AACH,CAAC"}
|
|
@@ -126,6 +126,21 @@ export interface FocusResolveOpts {
|
|
|
126
126
|
selector: string;
|
|
127
127
|
}
|
|
128
128
|
export declare function buildFocusJs(opts: FocusResolveOpts): string;
|
|
129
|
+
/**
|
|
130
|
+
* Build the element-rect probe for `browser.screenshot`'s element mode.
|
|
131
|
+
* Resolves the selector with the same deep search scope as click/find,
|
|
132
|
+
* scrolls it into view (frames first), and returns its border-box rect in
|
|
133
|
+
* TOP-document page coordinates (viewport rect + accumulated iframe content
|
|
134
|
+
* origins + top-window scroll) — the space `Page.captureScreenshot`'s
|
|
135
|
+
* `clip` expects. Returns:
|
|
136
|
+
* { ok: true, x, y, width, height }
|
|
137
|
+
* { ok: false, reason: 'invalid-selector', error }
|
|
138
|
+
* { ok: false, reason: 'not-found' }
|
|
139
|
+
*/
|
|
140
|
+
export interface ElementRectOpts {
|
|
141
|
+
selector: string;
|
|
142
|
+
}
|
|
143
|
+
export declare function buildElementRectJs(opts: ElementRectOpts): string;
|
|
129
144
|
/**
|
|
130
145
|
* Build the settle-await expression shared by `browser.click`, `.type` and
|
|
131
146
|
* `.press`. Called AFTER the action's CDP input events have been
|
|
@@ -337,6 +337,52 @@ export function buildFocusJs(opts) {
|
|
|
337
337
|
return true;
|
|
338
338
|
})()`;
|
|
339
339
|
}
|
|
340
|
+
export function buildElementRectJs(opts) {
|
|
341
|
+
const optsJson = JSON.stringify({ selector: opts.selector });
|
|
342
|
+
return `
|
|
343
|
+
(() => {
|
|
344
|
+
${DEEP_QUERY_JS}
|
|
345
|
+
const opts = ${optsJson};
|
|
346
|
+
try {
|
|
347
|
+
document.querySelector(opts.selector);
|
|
348
|
+
} catch (e) {
|
|
349
|
+
return { ok: false, reason: 'invalid-selector', error: e && e.message ? e.message : String(e) };
|
|
350
|
+
}
|
|
351
|
+
const el = deepQueryFirst(opts.selector);
|
|
352
|
+
if (!el) return { ok: false, reason: 'not-found' };
|
|
353
|
+
const chain = frameElementChain(el);
|
|
354
|
+
// behavior 'instant' overrides CSS scroll-behavior: smooth, which would
|
|
355
|
+
// leave the rect below stale while the scroll is still animating.
|
|
356
|
+
const jump = { block: 'center', inline: 'center', behavior: 'instant' };
|
|
357
|
+
for (const fe of chain) {
|
|
358
|
+
if (fe.scrollIntoView) fe.scrollIntoView(jump);
|
|
359
|
+
}
|
|
360
|
+
if (el.scrollIntoView) el.scrollIntoView(jump);
|
|
361
|
+
const rect = el.getBoundingClientRect();
|
|
362
|
+
let offsetX = 0;
|
|
363
|
+
let offsetY = 0;
|
|
364
|
+
for (const fe of chain) {
|
|
365
|
+
const fr = fe.getBoundingClientRect();
|
|
366
|
+
const origin = frameViewportOriginOffset(fe);
|
|
367
|
+
offsetX += fr.left + origin.x;
|
|
368
|
+
offsetY += fr.top + origin.y;
|
|
369
|
+
}
|
|
370
|
+
let scrollX = 0;
|
|
371
|
+
let scrollY = 0;
|
|
372
|
+
try {
|
|
373
|
+
const top = window.top || window;
|
|
374
|
+
scrollX = top.scrollX || 0;
|
|
375
|
+
scrollY = top.scrollY || 0;
|
|
376
|
+
} catch (_) {}
|
|
377
|
+
return {
|
|
378
|
+
ok: true,
|
|
379
|
+
x: offsetX + rect.left + scrollX,
|
|
380
|
+
y: offsetY + rect.top + scrollY,
|
|
381
|
+
width: rect.width,
|
|
382
|
+
height: rect.height,
|
|
383
|
+
};
|
|
384
|
+
})()`;
|
|
385
|
+
}
|
|
340
386
|
export function buildSettleJs(opts) {
|
|
341
387
|
const optsJson = JSON.stringify({
|
|
342
388
|
settleMs: Math.max(0, opts.settle_ms),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builders.js","sourceRoot":"","sources":["../../../src/cdp/inpage/builders.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"builders.js","sourceRoot":"","sources":["../../../src/cdp/inpage/builders.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Independent copy of `packages/extension/src/screenshot.ts` (this package
|
|
3
|
+
* publishes to npm standalone and cannot import the extension). Everything
|
|
4
|
+
* below this header is byte-identical to the original; `cdp/drift.test.ts`
|
|
5
|
+
* fails the build if the two diverge. Used by the cdp-direct transport
|
|
6
|
+
* (`./transport.ts`) over a raw CDP connection.
|
|
7
|
+
*/
|
|
8
|
+
export type ScreenshotMode = 'viewport' | 'full_page' | 'element';
|
|
9
|
+
export type ScreenshotFormat = 'png' | 'jpeg';
|
|
10
|
+
export declare const DEFAULT_MAX_DIMENSION = 8000;
|
|
11
|
+
/** Below this scale the text in a page is unreadable; crop instead. */
|
|
12
|
+
export declare const MIN_SCALE = 0.25;
|
|
13
|
+
/** Cap on the decoded image size returned to the agent. */
|
|
14
|
+
export declare const MAX_IMAGE_BYTES: number;
|
|
15
|
+
export declare const DEFAULT_JPEG_QUALITY = 80;
|
|
16
|
+
export interface Size {
|
|
17
|
+
width: number;
|
|
18
|
+
height: number;
|
|
19
|
+
}
|
|
20
|
+
export interface Rect extends Size {
|
|
21
|
+
x: number;
|
|
22
|
+
y: number;
|
|
23
|
+
}
|
|
24
|
+
export interface LayoutMetrics {
|
|
25
|
+
cssContentSize?: Size;
|
|
26
|
+
contentSize?: Size;
|
|
27
|
+
cssVisualViewport?: {
|
|
28
|
+
pageX: number;
|
|
29
|
+
pageY: number;
|
|
30
|
+
clientWidth: number;
|
|
31
|
+
clientHeight: number;
|
|
32
|
+
};
|
|
33
|
+
visualViewport?: {
|
|
34
|
+
pageX: number;
|
|
35
|
+
pageY: number;
|
|
36
|
+
clientWidth: number;
|
|
37
|
+
clientHeight: number;
|
|
38
|
+
};
|
|
39
|
+
/** Layout viewport in device pixels / CSS pixels — their ratio is the DPR. */
|
|
40
|
+
layoutViewport?: {
|
|
41
|
+
clientWidth: number;
|
|
42
|
+
};
|
|
43
|
+
cssLayoutViewport?: {
|
|
44
|
+
clientWidth: number;
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
export interface ScreenshotPlan {
|
|
48
|
+
clip: Rect & {
|
|
49
|
+
scale: number;
|
|
50
|
+
};
|
|
51
|
+
/** Output size in pixels. */
|
|
52
|
+
width: number;
|
|
53
|
+
height: number;
|
|
54
|
+
scale: number;
|
|
55
|
+
/** Device pixels per CSS pixel; the capture is clip x scale x dpr pixels. */
|
|
56
|
+
dpr: number;
|
|
57
|
+
truncated: boolean;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Device pixels per CSS pixel, derived from the layout metrics (no extra
|
|
61
|
+
* in-page round trip): layout-viewport width ratio, else content-size
|
|
62
|
+
* ratio, else 1.
|
|
63
|
+
*/
|
|
64
|
+
export declare function dprFromMetrics(m: LayoutMetrics): number;
|
|
65
|
+
export declare function planClip(mode: ScreenshotMode, metrics: LayoutMetrics, elementRect: Rect | undefined, maxDimension: number): ScreenshotPlan;
|
|
66
|
+
/** Decoded byte length of a base64 string. */
|
|
67
|
+
export declare function base64ByteLength(b64: string): number;
|
|
68
|
+
export interface Attempt {
|
|
69
|
+
format: ScreenshotFormat;
|
|
70
|
+
scale: number;
|
|
71
|
+
quality: number | undefined;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* What to try after an image came back over the byte cap: PNG → JPEG at the
|
|
75
|
+
* same scale, then JPEG at a scale reduced in proportion to the overshoot.
|
|
76
|
+
* `null` when nothing smaller is worth trying.
|
|
77
|
+
*/
|
|
78
|
+
export declare function nextOversizeAttempt(prev: Attempt, bytes: number, cap: number): Attempt | null;
|
|
79
|
+
export type ElementRectOutcome = ({
|
|
80
|
+
ok: true;
|
|
81
|
+
} & Rect) | {
|
|
82
|
+
ok: false;
|
|
83
|
+
reason: 'invalid-selector' | 'not-found';
|
|
84
|
+
error?: string;
|
|
85
|
+
};
|
|
86
|
+
export interface ScreenshotDeps {
|
|
87
|
+
send: (method: string, params?: Record<string, unknown>) => Promise<unknown>;
|
|
88
|
+
resolveElementRect: (selector: string) => Promise<ElementRectOutcome>;
|
|
89
|
+
}
|
|
90
|
+
export interface ScreenshotOptions {
|
|
91
|
+
mode?: ScreenshotMode;
|
|
92
|
+
selector?: string;
|
|
93
|
+
format?: ScreenshotFormat;
|
|
94
|
+
quality?: number;
|
|
95
|
+
maxDimension?: number;
|
|
96
|
+
}
|
|
97
|
+
export interface ScreenshotResult {
|
|
98
|
+
ok: true;
|
|
99
|
+
mode: ScreenshotMode;
|
|
100
|
+
format: ScreenshotFormat;
|
|
101
|
+
width: number;
|
|
102
|
+
height: number;
|
|
103
|
+
scale: number;
|
|
104
|
+
bytes: number;
|
|
105
|
+
truncated?: true;
|
|
106
|
+
size_reduced?: true;
|
|
107
|
+
image_b64: string;
|
|
108
|
+
}
|
|
109
|
+
export declare function runScreenshot(deps: ScreenshotDeps, opts: ScreenshotOptions): Promise<ScreenshotResult>;
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Independent copy of `packages/extension/src/screenshot.ts` (this package
|
|
3
|
+
* publishes to npm standalone and cannot import the extension). Everything
|
|
4
|
+
* below this header is byte-identical to the original; `cdp/drift.test.ts`
|
|
5
|
+
* fails the build if the two diverge. Used by the cdp-direct transport
|
|
6
|
+
* (`./transport.ts`) over a raw CDP connection.
|
|
7
|
+
*/
|
|
8
|
+
export const DEFAULT_MAX_DIMENSION = 8000;
|
|
9
|
+
/** Below this scale the text in a page is unreadable; crop instead. */
|
|
10
|
+
export const MIN_SCALE = 0.25;
|
|
11
|
+
/** Hard floor when shrinking to satisfy the byte cap. */
|
|
12
|
+
const ABSOLUTE_MIN_SCALE = 0.1;
|
|
13
|
+
/** Cap on the decoded image size returned to the agent. */
|
|
14
|
+
export const MAX_IMAGE_BYTES = 8 * 1024 * 1024;
|
|
15
|
+
export const DEFAULT_JPEG_QUALITY = 80;
|
|
16
|
+
const MAX_ATTEMPTS = 4;
|
|
17
|
+
/**
|
|
18
|
+
* Device pixels per CSS pixel, derived from the layout metrics (no extra
|
|
19
|
+
* in-page round trip): layout-viewport width ratio, else content-size
|
|
20
|
+
* ratio, else 1.
|
|
21
|
+
*/
|
|
22
|
+
export function dprFromMetrics(m) {
|
|
23
|
+
const pairs = [
|
|
24
|
+
[m.layoutViewport?.clientWidth, m.cssLayoutViewport?.clientWidth],
|
|
25
|
+
[m.contentSize?.width, m.cssContentSize?.width],
|
|
26
|
+
[m.visualViewport?.clientWidth, m.cssVisualViewport?.clientWidth],
|
|
27
|
+
];
|
|
28
|
+
for (const [device, css] of pairs) {
|
|
29
|
+
if (positive(device) && positive(css))
|
|
30
|
+
return device / css;
|
|
31
|
+
}
|
|
32
|
+
return 1;
|
|
33
|
+
}
|
|
34
|
+
function positive(n) {
|
|
35
|
+
return typeof n === 'number' && Number.isFinite(n) && n > 0;
|
|
36
|
+
}
|
|
37
|
+
export function planClip(mode, metrics, elementRect, maxDimension) {
|
|
38
|
+
const dpr = dprFromMetrics(metrics);
|
|
39
|
+
let region;
|
|
40
|
+
if (mode === 'element') {
|
|
41
|
+
if (!elementRect)
|
|
42
|
+
throw new Error('screenshot: element rect missing for element mode');
|
|
43
|
+
region = { ...elementRect };
|
|
44
|
+
}
|
|
45
|
+
else if (mode === 'viewport') {
|
|
46
|
+
// Device-pixel fallback values are converted to the CSS pixels clip uses.
|
|
47
|
+
const css = metrics.cssVisualViewport;
|
|
48
|
+
const dev = metrics.visualViewport;
|
|
49
|
+
if (css) {
|
|
50
|
+
region = { x: css.pageX, y: css.pageY, width: css.clientWidth, height: css.clientHeight };
|
|
51
|
+
}
|
|
52
|
+
else if (dev) {
|
|
53
|
+
region = {
|
|
54
|
+
x: dev.pageX / dpr,
|
|
55
|
+
y: dev.pageY / dpr,
|
|
56
|
+
width: dev.clientWidth / dpr,
|
|
57
|
+
height: dev.clientHeight / dpr,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
throw new Error('screenshot: layout metrics have no viewport');
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
const size = metrics.cssContentSize
|
|
66
|
+
? metrics.cssContentSize
|
|
67
|
+
: metrics.contentSize
|
|
68
|
+
? { width: metrics.contentSize.width / dpr, height: metrics.contentSize.height / dpr }
|
|
69
|
+
: undefined;
|
|
70
|
+
if (!size)
|
|
71
|
+
throw new Error('screenshot: layout metrics have no content size');
|
|
72
|
+
region = { x: 0, y: 0, width: size.width, height: size.height };
|
|
73
|
+
}
|
|
74
|
+
if (!positive(region.width) || !positive(region.height)) {
|
|
75
|
+
throw new Error(`screenshot: ${mode} region is zero-sized — nothing to capture`);
|
|
76
|
+
}
|
|
77
|
+
// The output is clip x scale x dpr DEVICE pixels, so max_dimension bounds
|
|
78
|
+
// the longest side in device pixels.
|
|
79
|
+
let scale = Math.min(1, maxDimension / (Math.max(region.width, region.height) * dpr));
|
|
80
|
+
let truncated = false;
|
|
81
|
+
if (scale < MIN_SCALE) {
|
|
82
|
+
scale = MIN_SCALE;
|
|
83
|
+
const limit = maxDimension / (MIN_SCALE * dpr);
|
|
84
|
+
if (region.width > limit)
|
|
85
|
+
region.width = limit;
|
|
86
|
+
if (region.height > limit)
|
|
87
|
+
region.height = limit;
|
|
88
|
+
truncated = true;
|
|
89
|
+
}
|
|
90
|
+
return {
|
|
91
|
+
clip: { ...region, scale },
|
|
92
|
+
width: Math.max(1, Math.round(region.width * scale * dpr)),
|
|
93
|
+
height: Math.max(1, Math.round(region.height * scale * dpr)),
|
|
94
|
+
scale,
|
|
95
|
+
dpr,
|
|
96
|
+
truncated,
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
/** Decoded byte length of a base64 string. */
|
|
100
|
+
export function base64ByteLength(b64) {
|
|
101
|
+
if (b64.length === 0)
|
|
102
|
+
return 0;
|
|
103
|
+
let padding = 0;
|
|
104
|
+
if (b64.endsWith('=='))
|
|
105
|
+
padding = 2;
|
|
106
|
+
else if (b64.endsWith('='))
|
|
107
|
+
padding = 1;
|
|
108
|
+
return Math.floor((b64.length * 3) / 4) - padding;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* What to try after an image came back over the byte cap: PNG → JPEG at the
|
|
112
|
+
* same scale, then JPEG at a scale reduced in proportion to the overshoot.
|
|
113
|
+
* `null` when nothing smaller is worth trying.
|
|
114
|
+
*/
|
|
115
|
+
export function nextOversizeAttempt(prev, bytes, cap) {
|
|
116
|
+
if (prev.format === 'png') {
|
|
117
|
+
return { format: 'jpeg', scale: prev.scale, quality: prev.quality ?? DEFAULT_JPEG_QUALITY };
|
|
118
|
+
}
|
|
119
|
+
if (prev.scale <= ABSOLUTE_MIN_SCALE)
|
|
120
|
+
return null;
|
|
121
|
+
const next = Math.max(ABSOLUTE_MIN_SCALE, prev.scale * Math.sqrt(cap / bytes) * 0.85);
|
|
122
|
+
return { format: 'jpeg', scale: next, quality: prev.quality ?? DEFAULT_JPEG_QUALITY };
|
|
123
|
+
}
|
|
124
|
+
export async function runScreenshot(deps, opts) {
|
|
125
|
+
const mode = opts.mode ?? 'viewport';
|
|
126
|
+
const maxDimension = opts.maxDimension ?? DEFAULT_MAX_DIMENSION;
|
|
127
|
+
let elementRect;
|
|
128
|
+
if (mode === 'element') {
|
|
129
|
+
if (!opts.selector)
|
|
130
|
+
throw new Error('screenshot: selector is required for element mode');
|
|
131
|
+
const r = await deps.resolveElementRect(opts.selector);
|
|
132
|
+
if (!r.ok) {
|
|
133
|
+
if (r.reason === 'invalid-selector') {
|
|
134
|
+
throw new Error(`Invalid selector "${opts.selector}": ${r.error ?? 'syntax error'}`);
|
|
135
|
+
}
|
|
136
|
+
throw new Error(`Element not found: ${opts.selector}`);
|
|
137
|
+
}
|
|
138
|
+
elementRect = { x: r.x, y: r.y, width: r.width, height: r.height };
|
|
139
|
+
}
|
|
140
|
+
// Always read the metrics: besides the page size they carry the DPR the
|
|
141
|
+
// output dimensions depend on.
|
|
142
|
+
const metrics = (await deps.send('Page.getLayoutMetrics'));
|
|
143
|
+
const plan = planClip(mode, metrics, elementRect, maxDimension);
|
|
144
|
+
let attempt = {
|
|
145
|
+
format: opts.format ?? 'png',
|
|
146
|
+
scale: plan.scale,
|
|
147
|
+
quality: opts.quality,
|
|
148
|
+
};
|
|
149
|
+
let reduced = false;
|
|
150
|
+
let lastBytes = 0;
|
|
151
|
+
for (let i = 0; i < MAX_ATTEMPTS; i++) {
|
|
152
|
+
const params = {
|
|
153
|
+
format: attempt.format,
|
|
154
|
+
captureBeyondViewport: mode !== 'viewport',
|
|
155
|
+
clip: { ...plan.clip, scale: attempt.scale },
|
|
156
|
+
};
|
|
157
|
+
if (attempt.format === 'jpeg' && attempt.quality !== undefined) {
|
|
158
|
+
params.quality = attempt.quality;
|
|
159
|
+
}
|
|
160
|
+
const res = (await deps.send('Page.captureScreenshot', params));
|
|
161
|
+
const bytes = base64ByteLength(res.data);
|
|
162
|
+
lastBytes = bytes;
|
|
163
|
+
if (bytes <= MAX_IMAGE_BYTES) {
|
|
164
|
+
const result = {
|
|
165
|
+
ok: true,
|
|
166
|
+
mode,
|
|
167
|
+
format: attempt.format,
|
|
168
|
+
width: Math.max(1, Math.round(plan.clip.width * attempt.scale * plan.dpr)),
|
|
169
|
+
height: Math.max(1, Math.round(plan.clip.height * attempt.scale * plan.dpr)),
|
|
170
|
+
scale: attempt.scale,
|
|
171
|
+
bytes,
|
|
172
|
+
image_b64: res.data,
|
|
173
|
+
};
|
|
174
|
+
if (plan.truncated)
|
|
175
|
+
result.truncated = true;
|
|
176
|
+
if (reduced)
|
|
177
|
+
result.size_reduced = true;
|
|
178
|
+
return result;
|
|
179
|
+
}
|
|
180
|
+
const next = nextOversizeAttempt(attempt, bytes, MAX_IMAGE_BYTES);
|
|
181
|
+
if (!next)
|
|
182
|
+
break;
|
|
183
|
+
attempt = next;
|
|
184
|
+
reduced = true;
|
|
185
|
+
}
|
|
186
|
+
const mb = (n) => (n / (1024 * 1024)).toFixed(1);
|
|
187
|
+
throw new Error(`screenshot: image is ${mb(lastBytes)} MB, which exceeds the ${mb(MAX_IMAGE_BYTES)} MB cap even after reducing quality and scale — use mode "element", a smaller max_dimension, or jpeg`);
|
|
188
|
+
}
|
|
189
|
+
//# sourceMappingURL=screenshot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"screenshot.js","sourceRoot":"","sources":["../../src/cdp/screenshot.ts"],"names":[],"mappings":"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"}
|
package/dist/cdp/support.js
CHANGED
package/dist/cdp/support.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"support.js","sourceRoot":"","sources":["../../src/cdp/support.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wEAAwE;AACxE,qEAAqE;AACrE,4EAA4E;AAC5E,yEAAyE;AACzE,sEAAsE;AACtE,0EAA0E;AAC1E,eAAe;AACf,MAAM,CAAC,MAAM,gBAAgB,GAAiC,IAAI,GAAG,CAAC;IACpE,CAAC,MAAM,EAAE,IAAI,CAAC;IACd,CAAC,UAAU,EAAE,IAAI,CAAC;IAClB,CAAC,UAAU,EAAE,IAAI,CAAC;IAClB,CAAC,MAAM,EAAE,IAAI,CAAC;IACd,CAAC,OAAO,EAAE,IAAI,CAAC;IACf,CAAC,OAAO,EAAE,IAAI,CAAC;IACf,CAAC,MAAM,EAAE,IAAI,CAAC;IACd,CAAC,OAAO,EAAE,IAAI,CAAC;IACf,CAAC,UAAU,EAAE,IAAI,CAAC;IAClB,CAAC,UAAU,EAAE,IAAI,CAAC;IAClB,CAAC,MAAM,EAAE,IAAI,CAAC;IACd,CAAC,aAAa,EAAE,IAAI,CAAC;IACrB,CAAC,aAAa,EAAE,IAAI,CAAC;IACrB,CAAC,MAAM,EAAE,KAAK,CAAC;IACf,CAAC,SAAS,EAAE,KAAK,CAAC;IAClB,CAAC,SAAS,EAAE,KAAK,CAAC;IAClB,CAAC,cAAc,EAAE,KAAK,CAAC;IACvB,CAAC,mBAAmB,EAAE,KAAK,CAAC;IAC5B,CAAC,gBAAgB,EAAE,KAAK,CAAC;IACzB,CAAC,gBAAgB,EAAE,KAAK,CAAC;IACzB,CAAC,cAAc,EAAE,KAAK,CAAC;IACvB,yEAAyE;IACzE,0EAA0E;IAC1E,wEAAwE;IACxE,CAAC,UAAU,EAAE,KAAK,CAAC;CACpB,CAAC,CAAC;AAEH,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,OAAO,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC;AAC7C,CAAC;AAED;;gCAEgC;AAChC,MAAM,UAAU,uBAAuB,CAAC,IAAY;IAClD,OAAO,IAAI,KAAK,CACd,WAAW,IAAI,oGAAoG,CACpH,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"support.js","sourceRoot":"","sources":["../../src/cdp/support.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wEAAwE;AACxE,qEAAqE;AACrE,4EAA4E;AAC5E,yEAAyE;AACzE,sEAAsE;AACtE,0EAA0E;AAC1E,eAAe;AACf,MAAM,CAAC,MAAM,gBAAgB,GAAiC,IAAI,GAAG,CAAC;IACpE,CAAC,MAAM,EAAE,IAAI,CAAC;IACd,CAAC,UAAU,EAAE,IAAI,CAAC;IAClB,CAAC,UAAU,EAAE,IAAI,CAAC;IAClB,CAAC,MAAM,EAAE,IAAI,CAAC;IACd,CAAC,OAAO,EAAE,IAAI,CAAC;IACf,CAAC,YAAY,EAAE,IAAI,CAAC;IACpB,CAAC,OAAO,EAAE,IAAI,CAAC;IACf,CAAC,MAAM,EAAE,IAAI,CAAC;IACd,CAAC,OAAO,EAAE,IAAI,CAAC;IACf,CAAC,UAAU,EAAE,IAAI,CAAC;IAClB,CAAC,UAAU,EAAE,IAAI,CAAC;IAClB,CAAC,MAAM,EAAE,IAAI,CAAC;IACd,CAAC,aAAa,EAAE,IAAI,CAAC;IACrB,CAAC,aAAa,EAAE,IAAI,CAAC;IACrB,CAAC,MAAM,EAAE,KAAK,CAAC;IACf,CAAC,SAAS,EAAE,KAAK,CAAC;IAClB,CAAC,SAAS,EAAE,KAAK,CAAC;IAClB,CAAC,cAAc,EAAE,KAAK,CAAC;IACvB,CAAC,mBAAmB,EAAE,KAAK,CAAC;IAC5B,CAAC,gBAAgB,EAAE,KAAK,CAAC;IACzB,CAAC,gBAAgB,EAAE,KAAK,CAAC;IACzB,CAAC,cAAc,EAAE,KAAK,CAAC;IACvB,yEAAyE;IACzE,0EAA0E;IAC1E,wEAAwE;IACxE,CAAC,UAAU,EAAE,KAAK,CAAC;CACpB,CAAC,CAAC;AAEH,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,OAAO,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC;AAC7C,CAAC;AAED;;gCAEgC;AAChC,MAAM,UAAU,uBAAuB,CAAC,IAAY;IAClD,OAAO,IAAI,KAAK,CACd,WAAW,IAAI,oGAAoG,CACpH,CAAC;AACJ,CAAC"}
|
package/dist/cdp/transport.js
CHANGED
|
@@ -22,7 +22,8 @@ import { checkCdpDirectGate } from './gate.js';
|
|
|
22
22
|
import { buildTargetWsUrl, cdpTargetIdFromTabId, isDrivablePageTarget } from './targets.js';
|
|
23
23
|
import { CdpClient } from './client.js';
|
|
24
24
|
import { cdpUnsupportedToolError } from './support.js';
|
|
25
|
-
import { buildClickResolveJs, buildFindJs, buildFocusJs, buildSnapshotJs, buildStateJs, buildTypeResolveJs, } from './inpage/builders.js';
|
|
25
|
+
import { buildClickResolveJs, buildFindJs, buildElementRectJs, buildFocusJs, buildSnapshotJs, buildStateJs, buildTypeResolveJs, } from './inpage/builders.js';
|
|
26
|
+
import { runScreenshot } from './screenshot.js';
|
|
26
27
|
import { resolveSettleParams, settleSafely } from './settle.js';
|
|
27
28
|
import { buildKeyEventSequence, modifiersToBitmask, resolveKey } from './keymap.js';
|
|
28
29
|
import { cancelDetachedFlow, detachedFlowForTab, detachedFlowStatus, finishDetachedFlow, registerDetachedFlow, reportDetachedProgress, shouldStopDetachedFlow, } from './detached-flows.js';
|
|
@@ -555,6 +556,19 @@ export async function callCdpTool(tabId, tool, params, timeoutMs) {
|
|
|
555
556
|
}
|
|
556
557
|
case 'state':
|
|
557
558
|
return evaluateInTab(client, buildStateJs());
|
|
559
|
+
case 'screenshot': {
|
|
560
|
+
const mode = p.mode === 'full_page' || p.mode === 'element' ? p.mode : 'viewport';
|
|
561
|
+
return runScreenshot({
|
|
562
|
+
send: (method, params) => client.send(method, params),
|
|
563
|
+
resolveElementRect: (selector) => evaluateInTab(client, buildElementRectJs({ selector })),
|
|
564
|
+
}, {
|
|
565
|
+
mode,
|
|
566
|
+
selector: typeof p.selector === 'string' ? p.selector : undefined,
|
|
567
|
+
format: p.format === 'jpeg' ? 'jpeg' : 'png',
|
|
568
|
+
quality: typeof p.quality === 'number' ? p.quality : undefined,
|
|
569
|
+
maxDimension: typeof p.max_dimension === 'number' ? p.max_dimension : undefined,
|
|
570
|
+
});
|
|
571
|
+
}
|
|
558
572
|
case 'find': {
|
|
559
573
|
const outcome = await performFind(client, {
|
|
560
574
|
text: typeof p.text === 'string' ? p.text : '',
|