@fastbrowse/linux-x64 0.7.0 → 0.7.1

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.
@@ -983,6 +983,41 @@
983
983
  readText(document, 0, 0);
984
984
  const viewport_text = words.join('\n');
985
985
 
986
+ // Page state carried by pixels: a chart, a picture, a drawing or a video is evidence the page text and the
987
+ // control list cannot hold, and the verifier needs the screenshot for it. Only what the viewport shows counts,
988
+ // because that is what a screenshot captures: an image below the fold cannot appear in it, and counting every
989
+ // image on a long page would ask for a screenshot on almost every page and undo the gate it exists to serve.
990
+ // Geometry is read in the parent's coordinates the way readText reads text, so a frame's image counts where the
991
+ // frame itself sits on screen. Elements small enough to be an icon or a rule are not page state.
992
+ const VISUAL = 'img,canvas,video,svg,picture,figure,[role="img"]';
993
+ const VISUAL_MIN_PX = 48;
994
+ let visual_content = 0;
995
+ const readVisual = (doc, dx, dy) => {
996
+ if (visual_content) return;
997
+ for (const e of doc.querySelectorAll(VISUAL)) {
998
+ if (e.closest('[aria-hidden="true"],[inert]') || !visible(e)) continue;
999
+ const r = e.getBoundingClientRect();
1000
+ const top = r.top + dy,
1001
+ left = r.left + dx;
1002
+ if (r.width < VISUAL_MIN_PX || r.height < VISUAL_MIN_PX) continue;
1003
+ if (top + r.height <= 0 || top >= innerHeight || left + r.width <= 0 || left >= innerWidth) continue;
1004
+ visual_content = 1;
1005
+ return;
1006
+ }
1007
+ for (const frame of doc.querySelectorAll('iframe,frame')) {
1008
+ let inner = null;
1009
+ try {
1010
+ inner = frame.contentDocument;
1011
+ } catch {
1012
+ inner = null;
1013
+ }
1014
+ if (!inner || !granted(inner)) continue;
1015
+ const f = frame.getBoundingClientRect();
1016
+ readVisual(inner, dx + f.left + frame.clientLeft, dy + f.top + frame.clientTop);
1017
+ }
1018
+ };
1019
+ readVisual(document, 0, 0);
1020
+
986
1021
  const guards = {},
987
1022
  retarget_keys = {};
988
1023
  for (const c of controls) {
@@ -1035,6 +1070,7 @@
1035
1070
  url: location.href,
1036
1071
  title: document.title,
1037
1072
  viewport_text,
1073
+ visual_content,
1038
1074
  document_key: String(performance.timeOrigin),
1039
1075
  controls: semantics,
1040
1076
  page_key,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: fastbrowse
3
- Version: 0.7.0
3
+ Version: 0.7.1
4
4
  Summary: Browser automation with cited answers, structured output and code-controlled credentials and authorization.
5
5
  Project-URL: Homepage, https://github.com/agent-labs-dev/fastbrowse
6
6
  Project-URL: Repository, https://github.com/agent-labs-dev/fastbrowse
@@ -420,7 +420,9 @@ it can be `None` for an ordinary successful action.
420
420
 
421
421
  For continuous live images, pass an async `on_frame` handler accepting JPEG bytes. Frames follow the active
422
422
  tab and are acknowledged after delivery, with no fixed frame rate. Only the latest pending frame is kept.
423
- Handler failures are logged without stopping the run. Live frames and recordings are held back while a
423
+ Handler failures are logged without stopping the run. A handler must honour cancellation: it runs on the
424
+ caller's event loop, so one that catches `CancelledError` without re-raising keeps that loop alive, and
425
+ `asyncio.run` then waits for it at shutdown. Live frames and recordings are held back while a
424
426
  resolved secret may show on the page, as PNG step frames are. No handler means no live capture.
425
427
 
426
428
  Jev uses direct TypeSafe when keyed, otherwise OpenRouter, with Vercel AI Gateway also supported.
@@ -0,0 +1,14 @@
1
+ ../../../bin/fastbrowse,sha256=kaVbuMx-AlSCiesFjTFd09Km4R8Lunnqm06vuR0Q4ow,336
2
+ ../../../bin/fastbrowse-mcp,sha256=ZXqxb9qRtFFkC1H9e4YqAdOBsFqTUwa9EZeg_4K3Ybo,343
3
+ _editable_impl_fastbrowse.pth,sha256=i4F7SPHtRO2rWCDD5u0Gnwv0cyF2GMJMQGgsS1QKCTI,43
4
+ fastbrowse-0.7.1.dist-info/INSTALLER,sha256=5hhM4Q4mYTT9z6QB6PGpUAW81PGNFrYrdXMj4oM_6ak,2
5
+ fastbrowse-0.7.1.dist-info/METADATA,sha256=mKePR_0mnmqEJpiPFAYyCl0v5kF_qBF8IUFFBKaENFg,38738
6
+ fastbrowse-0.7.1.dist-info/RECORD,,
7
+ fastbrowse-0.7.1.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
8
+ fastbrowse-0.7.1.dist-info/WHEEL,sha256=W3fkpkm7-wf9vBI5Z-7s0eWkeM-spu78I8Neb98DeEg,87
9
+ fastbrowse-0.7.1.dist-info/direct_url.json,sha256=p4VhBh51_mJBO89EvLp28QXawaajq5zi5eItI6PDXTg,85
10
+ fastbrowse-0.7.1.dist-info/entry_points.txt,sha256=SlQAK1_4_oywTAMckx8BYuCQJva0F-QuShQPcxtUm-g,95
11
+ fastbrowse-0.7.1.dist-info/licenses/LICENSE,sha256=gcUazG_j5a2blKPmfKqRKE98KOqX2kPbWY-EOtQZiNU,1067
12
+ fastbrowse-0.7.1.dist-info/licenses/NOTICE,sha256=qEO0Az_Tk98vRVL0xjnGYgMvexlMCA92lWl4JBwYRzg,1854
13
+ fastbrowse-0.7.1.dist-info/uv_build.json,sha256=RBNvo1WzZ4oRRq0W9-hknpT7T8If536DEMBg9hyq_4o,2
14
+ fastbrowse-0.7.1.dist-info/uv_cache.json,sha256=ZORHbiS7obredQLHHUs_PmhfNnTFQK1jyOppHwqthpw,194
@@ -0,0 +1 @@
1
+ {"timestamp":{"secs_since_epoch":1792907011,"nanos_since_epoch":366784633},"commit":null,"tags":null,"env":{},"directories":{"src":{"secs_since_epoch":1792907011,"nanos_since_epoch":367784626}}}
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fastbrowse/linux-x64",
3
- "version": "0.7.0",
3
+ "version": "0.7.1",
4
4
  "description": "The fastbrowse binary for Linux on x64.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -1,14 +0,0 @@
1
- ../../../bin/fastbrowse,sha256=kaVbuMx-AlSCiesFjTFd09Km4R8Lunnqm06vuR0Q4ow,336
2
- ../../../bin/fastbrowse-mcp,sha256=ZXqxb9qRtFFkC1H9e4YqAdOBsFqTUwa9EZeg_4K3Ybo,343
3
- _editable_impl_fastbrowse.pth,sha256=i4F7SPHtRO2rWCDD5u0Gnwv0cyF2GMJMQGgsS1QKCTI,43
4
- fastbrowse-0.7.0.dist-info/INSTALLER,sha256=5hhM4Q4mYTT9z6QB6PGpUAW81PGNFrYrdXMj4oM_6ak,2
5
- fastbrowse-0.7.0.dist-info/METADATA,sha256=7vV9jxG0yGiwE2e_oimnIrnEMsrz3D7N5w-HlzvCHiQ,38538
6
- fastbrowse-0.7.0.dist-info/RECORD,,
7
- fastbrowse-0.7.0.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
8
- fastbrowse-0.7.0.dist-info/WHEEL,sha256=W3fkpkm7-wf9vBI5Z-7s0eWkeM-spu78I8Neb98DeEg,87
9
- fastbrowse-0.7.0.dist-info/direct_url.json,sha256=p4VhBh51_mJBO89EvLp28QXawaajq5zi5eItI6PDXTg,85
10
- fastbrowse-0.7.0.dist-info/entry_points.txt,sha256=SlQAK1_4_oywTAMckx8BYuCQJva0F-QuShQPcxtUm-g,95
11
- fastbrowse-0.7.0.dist-info/licenses/LICENSE,sha256=gcUazG_j5a2blKPmfKqRKE98KOqX2kPbWY-EOtQZiNU,1067
12
- fastbrowse-0.7.0.dist-info/licenses/NOTICE,sha256=qEO0Az_Tk98vRVL0xjnGYgMvexlMCA92lWl4JBwYRzg,1854
13
- fastbrowse-0.7.0.dist-info/uv_build.json,sha256=RBNvo1WzZ4oRRq0W9-hknpT7T8If536DEMBg9hyq_4o,2
14
- fastbrowse-0.7.0.dist-info/uv_cache.json,sha256=8D6_sMsMLTsfo3AJpJRVV6BiSY3yZcPgv5r8XjYi4V0,194
@@ -1 +0,0 @@
1
- {"timestamp":{"secs_since_epoch":1792857026,"nanos_since_epoch":497735519},"commit":null,"tags":null,"env":{},"directories":{"src":{"secs_since_epoch":1792857026,"nanos_since_epoch":498735508}}}