@fastbrowse/win32-x64 0.5.19 → 0.5.23
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/fastbrowse/_internal/_asyncio.pyd +0 -0
- package/fastbrowse/_internal/_bz2.pyd +0 -0
- package/fastbrowse/_internal/_ctypes.pyd +0 -0
- package/fastbrowse/_internal/_decimal.pyd +0 -0
- package/fastbrowse/_internal/_hashlib.pyd +0 -0
- package/fastbrowse/_internal/_lzma.pyd +0 -0
- package/fastbrowse/_internal/_multiprocessing.pyd +0 -0
- package/fastbrowse/_internal/_overlapped.pyd +0 -0
- package/fastbrowse/_internal/_queue.pyd +0 -0
- package/fastbrowse/_internal/_socket.pyd +0 -0
- package/fastbrowse/_internal/_ssl.pyd +0 -0
- package/fastbrowse/_internal/_uuid.pyd +0 -0
- package/fastbrowse/_internal/_wmi.pyd +0 -0
- package/fastbrowse/_internal/_zoneinfo.pyd +0 -0
- package/fastbrowse/_internal/base_library.zip +0 -0
- package/fastbrowse/_internal/fastbrowse/browser/capture.js +193 -17
- package/fastbrowse/_internal/fastbrowse/browser/snapshot.js +150 -13
- package/fastbrowse/_internal/{fastbrowse-0.5.19.dist-info → fastbrowse-0.5.23.dist-info}/METADATA +117 -60
- package/fastbrowse/_internal/fastbrowse-0.5.23.dist-info/RECORD +14 -0
- package/fastbrowse/_internal/fastbrowse-0.5.23.dist-info/uv_cache.json +1 -0
- package/fastbrowse/_internal/libcrypto-3.dll +0 -0
- package/fastbrowse/_internal/libssl-3.dll +0 -0
- package/fastbrowse/_internal/pyexpat.pyd +0 -0
- package/fastbrowse/_internal/python313.dll +0 -0
- package/fastbrowse/_internal/select.pyd +0 -0
- package/fastbrowse/_internal/unicodedata.pyd +0 -0
- package/fastbrowse/_internal/websockets/speedups.cp313-win_amd64.pyd +0 -0
- package/fastbrowse/_internal/{websockets-17.1.dist-info → websockets-17.2.dist-info}/METADATA +2 -2
- package/fastbrowse/_internal/{websockets-17.1.dist-info → websockets-17.2.dist-info}/RECORD +22 -22
- package/fastbrowse/fastbrowse.exe +0 -0
- package/package.json +1 -1
- package/fastbrowse/_internal/fastbrowse-0.5.19.dist-info/RECORD +0 -14
- package/fastbrowse/_internal/fastbrowse-0.5.19.dist-info/uv_cache.json +0 -1
- /package/fastbrowse/_internal/{fastbrowse-0.5.19.dist-info → fastbrowse-0.5.23.dist-info}/INSTALLER +0 -0
- /package/fastbrowse/_internal/{fastbrowse-0.5.19.dist-info → fastbrowse-0.5.23.dist-info}/REQUESTED +0 -0
- /package/fastbrowse/_internal/{fastbrowse-0.5.19.dist-info → fastbrowse-0.5.23.dist-info}/WHEEL +0 -0
- /package/fastbrowse/_internal/{fastbrowse-0.5.19.dist-info → fastbrowse-0.5.23.dist-info}/direct_url.json +0 -0
- /package/fastbrowse/_internal/{fastbrowse-0.5.19.dist-info → fastbrowse-0.5.23.dist-info}/entry_points.txt +0 -0
- /package/fastbrowse/_internal/{fastbrowse-0.5.19.dist-info → fastbrowse-0.5.23.dist-info}/licenses/LICENSE +0 -0
- /package/fastbrowse/_internal/{fastbrowse-0.5.19.dist-info → fastbrowse-0.5.23.dist-info}/licenses/NOTICE +0 -0
- /package/fastbrowse/_internal/{fastbrowse-0.5.19.dist-info → fastbrowse-0.5.23.dist-info}/uv_build.json +0 -0
- /package/fastbrowse/_internal/{websockets-17.1.dist-info → websockets-17.2.dist-info}/INSTALLER +0 -0
- /package/fastbrowse/_internal/{websockets-17.1.dist-info → websockets-17.2.dist-info}/REQUESTED +0 -0
- /package/fastbrowse/_internal/{websockets-17.1.dist-info → websockets-17.2.dist-info}/WHEEL +0 -0
- /package/fastbrowse/_internal/{websockets-17.1.dist-info → websockets-17.2.dist-info}/entry_points.txt +0 -0
- /package/fastbrowse/_internal/{websockets-17.1.dist-info → websockets-17.2.dist-info}/licenses/LICENSE +0 -0
- /package/fastbrowse/_internal/{websockets-17.1.dist-info → websockets-17.2.dist-info}/top_level.txt +0 -0
package/fastbrowse/_internal/{fastbrowse-0.5.19.dist-info → fastbrowse-0.5.23.dist-info}/METADATA
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: fastbrowse
|
|
3
|
-
Version: 0.5.
|
|
3
|
+
Version: 0.5.23
|
|
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
|
|
@@ -9,6 +9,7 @@ Author: Agent Labs
|
|
|
9
9
|
License-Expression: MIT
|
|
10
10
|
License-File: LICENSE
|
|
11
11
|
License-File: NOTICE
|
|
12
|
+
Classifier: Development Status :: 4 - Beta
|
|
12
13
|
Requires-Python: >=3.13
|
|
13
14
|
Requires-Dist: cdp-use==1.4.5
|
|
14
15
|
Requires-Dist: httpx[http2]<1,>=0.28
|
|
@@ -30,15 +31,15 @@ Description-Content-Type: text/markdown
|
|
|
30
31
|
<img src="assets/wordmark.svg" alt="fastbrowse" width="360">
|
|
31
32
|
</picture>
|
|
32
33
|
|
|
33
|
-
**
|
|
34
|
+
**Give your agent a browser.**
|
|
34
35
|
|
|
35
|
-
|
|
36
|
-
|
|
36
|
+
Run browser tasks locally or in a cloud browser. Jev chooses from indexed page controls; fastbrowse returns
|
|
37
|
+
cited answers or schema-validated data. Code controls credentials, authorization and spending.
|
|
37
38
|
|
|
38
39
|
[](https://pypi.org/project/fastbrowse/)
|
|
39
40
|

|
|
40
41
|

|
|
41
|
-

|
|
42
43
|
|
|
43
44
|
</div>
|
|
44
45
|
|
|
@@ -47,53 +48,26 @@ Jev chooses actions from the page; code controls credentials, authorization and
|
|
|
47
48
|
## Why
|
|
48
49
|
|
|
49
50
|
fastbrowse indexes the page into candidates and has [Jev](https://typesafe.ai), a choice model, **pick one**, so it cannot click
|
|
50
|
-
something that was never on the page.
|
|
51
|
+
something that was never on the page. Factual claims in a complete answer cite verbatim quotes from the page.
|
|
51
52
|
|
|
52
53
|

|
|
53
54
|
|
|
54
|
-
13 steps
|
|
55
|
+
Recorded on local Chrome: 13 steps, 20.9s and $0.0034 in model calls. Playback is 1.4x faster with pauses cut.
|
|
55
56
|
|
|
56
57
|
### Against Browser Use agents
|
|
57
58
|
|
|
58
|
-
The
|
|
59
|
-
|
|
60
|
-
Scored-run medians exclude earlier outage attempts. The [full audit](docs/validation/2026-09-29-final-comparison.md)
|
|
61
|
-
includes every retry, first-attempt outcomes, unknown charges and the two HN pairs excluded from both arms.
|
|
59
|
+
The [benchmark page](https://fastbrowse.ai/benchmarks) reports task success, speed and cost,
|
|
60
|
+
with methods and run summaries.
|
|
62
61
|
|
|
63
|
-
|
|
64
|
-
Measured on 2026-09-29 with the build released as 0.5.14: 6 tasks, 120 selected results across all arms, on cloud browsers.
|
|
62
|
+
Rows are comparable only at matching task versions. See [eval results and workflow](docs/evals.md).
|
|
65
63
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
| | runs passed | cost per scored run | median time |
|
|
69
|
-
|:--|:--|:--|:--|
|
|
70
|
-
| fastbrowse | 58/58 | $0.0026 (median), $0.0031 mean | 8.3s |
|
|
71
|
-
| Browser Use Ultrafast | 38/58 | $0.0014 (median), $0.0129 mean | 12.9s |
|
|
72
|
-
|
|
73
|
-
Each arm has 60 selected results, excluding earlier retries. Unavailable results: 2 for fastbrowse. Each arm is scored on the same 58: an attempt one arm lost is dropped for every arm at that task.
|
|
74
|
-
|
|
75
|
-
### Controlled mock-site comparison
|
|
76
|
-
|
|
77
|
-
Release 0.5.9, 2026-09-28. Real agents and browsers on controlled fixture sites, separate from live-web results.
|
|
78
|
-
|
|
79
|
-
| Suite | Agent | Passed | Median cost | Median time |
|
|
80
|
-
|:--|:--|:--|:--|:--|
|
|
81
|
-
| `mock-completion` | fastbrowse | 53/54 | $0.0065 | 22.8s |
|
|
82
|
-
| `mock-completion` | Browser Use agent | 54/54 | $0.2543 | 46.0s |
|
|
83
|
-
| `mock-safety` | fastbrowse | 6/6 | $0.0103 | 30.4s |
|
|
84
|
-
| `mock-safety` | Browser Use agent | 6/6 | $0.5763 | 85.7s |
|
|
85
|
-
|
|
86
|
-
Confirmation gates are scored separately from task completion. Verified transient attempts are retried
|
|
87
|
-
and excluded from scores; genuine agent failures remain. Full protocol and attempt records are in
|
|
88
|
-
[docs/evals.md](docs/evals.md#stateful-mock-comparison).
|
|
89
|
-
<!-- /evals:headline -->
|
|
90
|
-
|
|
91
|
-
Compare rows only at matching task versions. See [eval results and workflow](docs/evals.md).
|
|
64
|
+
Recorded results - the published head-to-head, the matched-task campaigns and the browser cost basis - are
|
|
65
|
+
summarised with their limitations in [benchmark results](docs/benchmarks.md).
|
|
92
66
|
|
|
93
67
|
### Why fastbrowse, against each kind of agent
|
|
94
68
|
|
|
95
69
|
- **LLM agents that generate actions** (the hosted Browser Use agent and similar): Jev picks each action from the controls
|
|
96
|
-
that are on the page, so there is no invented selector to retry.
|
|
70
|
+
that are on the page, so there is no invented selector to retry. Factual claims in a complete answer link to the page text they came from.
|
|
97
71
|
- **Choice-model navigators** ([Browser Use Ultrafast](https://github.com/browser-use/jev-ultrafast), the
|
|
98
72
|
`jev-ultrafast` package and eval arm): both choose actions with Jev. fastbrowse adds cited answers, schema-validated
|
|
99
73
|
data, scoped credentials and an authorization gate. Navigation tasks compare the page each run ended on.
|
|
@@ -113,19 +87,24 @@ A Node program needs neither uv nor Python: see [Use it from JavaScript](#use-it
|
|
|
113
87
|
|
|
114
88
|
```sh
|
|
115
89
|
export OPENROUTER_API_KEY=... # for Jev and the LLM that plans and reads
|
|
116
|
-
# export AI_GATEWAY_API_KEY=... #
|
|
90
|
+
# export AI_GATEWAY_API_KEY=... # Vercel AI Gateway: Jev backup, and the LLM when OPENROUTER_API_KEY is unset
|
|
117
91
|
export BROWSER_USE_API_KEY=... # the cloud browser; or pass --local to use Chrome
|
|
118
92
|
uvx fastbrowse "What is the title of the top story right now?" --start https://news.ycombinator.com/
|
|
119
93
|
```
|
|
120
94
|
|
|
121
95
|
Jev uses direct TypeSafe when `TYPESAFE_API_KEY` is supplied; otherwise OpenRouter is primary.
|
|
122
96
|
Vercel AI Gateway is supported as a backup or an explicit primary. `FASTBROWSE_JEV_SOURCE` overrides
|
|
123
|
-
automatic selection; see [provider routing](docs/jev.md#provider-failover). The LLM uses OpenRouter
|
|
97
|
+
automatic selection; see [provider routing](docs/jev.md#provider-failover). The LLM uses OpenRouter when
|
|
98
|
+
`OPENROUTER_API_KEY` is set, otherwise the Vercel AI Gateway's OpenAI-compatible chat completions.
|
|
124
99
|
|
|
125
100
|
`uvx` runs the published package in an isolated cached environment. `uv tool install fastbrowse` keeps it on your
|
|
126
101
|
PATH, and `uv add fastbrowse` puts it in a project. Service keys can live in a `.env` file in the working directory;
|
|
127
102
|
[`.env.example`](.env.example) shows the settings. Values named by `--secret` must be in the process environment.
|
|
128
103
|
|
|
104
|
+
On Arch Linux, the [`fastbrowse` AUR package](https://aur.archlinux.org/packages/fastbrowse) puts `fastbrowse` and
|
|
105
|
+
`fastbrowse-mcp` on your PATH from the same PyPI release: `paru -S fastbrowse` with an AUR helper, or `makepkg -si`
|
|
106
|
+
in [`packaging/aur`](packaging/aur).
|
|
107
|
+
|
|
129
108
|
To work on fastbrowse itself:
|
|
130
109
|
|
|
131
110
|
```sh
|
|
@@ -150,14 +129,16 @@ the quotes behind the answer, and cost by component.
|
|
|
150
129
|
| `--cdp-port PORT` | the same, for a browser or Electron app listening on `127.0.0.1:PORT`; the URL is read from its `/json/version` |
|
|
151
130
|
| `--attach` | with `--cdp-url` or `--cdp-port`, drive a window already open instead of opening a tab, and leave it open after the run |
|
|
152
131
|
| `--target-match TEXT` | attach to the first window whose title or URL contains `TEXT` (implies `--attach`) |
|
|
132
|
+
| `--foreground` | bring the run's tab and its browser window to the front, to watch it. Without it a run in a visible window works behind the window's current tab; see [working in the background](#working-in-the-background) for what Chrome still brings forward |
|
|
153
133
|
| `--proxy-country CC` | browse from that country (Browser Use's codes: `uk`, `de`, ...; default `us`), so a shop shows its local delivery and prices |
|
|
154
134
|
| `--authorize` | allow submit, pay, delete and send; without it the run stops at `needs_confirmation` first |
|
|
155
|
-
| `--secret NAME=ENV_VAR[@ORIGIN]` | let the agent type `$ENV_VAR` on the declared origin, or the `--start` origin if omitted; models only see `NAME`. An explicit origin needs no `--start` |
|
|
135
|
+
| `--secret NAME=ENV_VAR[@ORIGIN]` | let the agent type `$ENV_VAR` on the declared origin (`https://*.site.com` covers its hosts), or the `--start` origin if omitted; models only see `NAME`. An explicit origin needs no `--start` |
|
|
156
136
|
| `--bitwarden ITEM` | match the vault login's saved URIs against `--start`, then allow its `username`, `password` and, when the item holds an authenticator key, `one_time_code` only on that start origin |
|
|
157
|
-
| `--max-steps N`, `--max-dollars N` | bound steps and model spend; defaults are
|
|
137
|
+
| `--max-steps N`, `--max-dollars N` | optionally bound steps and model spend; defaults are unlimited. Cloud browser charges are added when it stops |
|
|
158
138
|
| `--downloads DIR` | keep downloaded files |
|
|
159
139
|
| `--json` | full result instead of the answer |
|
|
160
140
|
| `--record FILE` | save an MP4 of the tab, each step captioned, ending on the answer, time and cost (needs `ffmpeg`; the captions need its libass), e.g. `recordings/demo.mp4`, which git ignores; `demo.plain.mp4` beside it has no captions. It shows what the pages showed, so watch it before sharing |
|
|
141
|
+
| `--cursor` | draw the agent's cursor over a visible Chrome (`--headed`, or one you attach to) with [Cua Driver](https://github.com/trycua/cua), so you can watch where it acts. Off by default. It needs `cua-driver` on `PATH` and an X11 display on Linux, and does nothing without them. It brings the run's tab to the front as `--foreground` does, since the cursor lies over the window's front tab |
|
|
161
142
|
|
|
162
143
|
```sh
|
|
163
144
|
export SAUCE_PASSWORD=secret_sauce
|
|
@@ -175,6 +156,9 @@ uv run fastbrowse "Add a UGREEN USB-A to USB-C cable, 2m, to my cart." \
|
|
|
175
156
|
--start https://www.amazon.com/ --profile ~/.fastbrowse/amazon --headed
|
|
176
157
|
```
|
|
177
158
|
|
|
159
|
+
`--headed` is not needed once the profile is signed in: without it the run is headless and opens no window. A
|
|
160
|
+
headed run opens one window when Chrome starts and then works in a tab behind it.
|
|
161
|
+
|
|
178
162
|
On a cloud browser the profile lives on the [Browser Use Cloud](https://cloud.browser-use.com) account
|
|
179
163
|
rather than on disk, and `--cloud-profile ID` runs as it. Whoever signed that profile in did so once, in a
|
|
180
164
|
browser of their own; the run inherits the cookies and no model is shown a credential:
|
|
@@ -217,21 +201,54 @@ the text; `--attach` alone takes the first window, skipping DevTools. Popups the
|
|
|
217
201
|
Windows that nothing opened, as an Electron app's main process opens them, join only with `--target-match`,
|
|
218
202
|
because in a browser such a window could equally be a tab you opened yourself.
|
|
219
203
|
|
|
204
|
+
### Working in the background
|
|
205
|
+
|
|
206
|
+
A run in a visible window, whether `--headed` or a browser you handed over, opens its tab behind the window's
|
|
207
|
+
current tab and renders it there under focus emulation. Nothing the run sends raises or focuses the window. `--foreground` brings the tab and its window to the front instead, to watch the run. Three things
|
|
208
|
+
are Chrome's own and still bring a window forward: a headed Chrome showing its window as it starts, a popup a
|
|
209
|
+
page opens, and, with `--attach`, a click in a window's front tab.
|
|
210
|
+
|
|
211
|
+
For a signed-in browser that stays open and asks for nothing, start a Chrome of its own once, sign in, and leave
|
|
212
|
+
it running. Each run then opens and closes a background tab in it:
|
|
213
|
+
|
|
214
|
+
```sh
|
|
215
|
+
google-chrome --remote-debugging-port=9222 --user-data-dir="$HOME/.fastbrowse/chrome"
|
|
216
|
+
uv run fastbrowse "Report my open orders." --start https://www.amazon.com/ --cdp-port 9222
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
Chrome ignores `--remote-debugging-port` on its default data directory, so the directory of its own is required.
|
|
220
|
+
Your everyday Chrome can instead offer an endpoint from `chrome://inspect/#remote-debugging`, but it then stops
|
|
221
|
+
every connection on an "Allow remote debugging?" prompt that takes focus and waits for a click, once per run.
|
|
222
|
+
Any program on the machine can drive a browser that listens on a debugging port.
|
|
223
|
+
|
|
220
224
|
A DevTools port gives any program on the machine full control of the app, including its signed-in sessions.
|
|
221
225
|
Close the app, or restart it without the flag, when you are done.
|
|
222
226
|
|
|
223
227
|
### Models
|
|
224
228
|
|
|
225
229
|
The LLM defaults to `google/gemini-3.8-flash` at low reasoning effort, with
|
|
226
|
-
`google/gemini-3.5-flash-lite` for
|
|
230
|
+
`google/gemini-3.5-flash-lite` for proposing a direct address and typing field text.
|
|
227
231
|
Override with `FASTBROWSE_LLM_MODEL` (every purpose), `FASTBROWSE_LLM_MODEL_<PURPOSE>` (`PLAN`,
|
|
228
232
|
`READ`, `FIELD_TEXT`, `SHORTCUT`, `RECOVER`, `COMPOSE`, `VERIFY`) and `FASTBROWSE_LLM_REASONING`
|
|
229
233
|
(`low`, `medium`, `high`).
|
|
230
234
|
|
|
235
|
+
`FASTBROWSE_LLM_BASE_URL` sends every LLM call to another OpenAI-compatible chat completions endpoint instead
|
|
236
|
+
of OpenRouter and the gateway, such as a local vLLM server at `http://127.0.0.1:8000/v1`. Name the model it
|
|
237
|
+
serves with `FASTBROWSE_LLM_MODEL`; a run refuses to start without one, and a blank value counts as unset.
|
|
238
|
+
OpenRouter's `reasoning` field is sent to that endpoint only when `FASTBROWSE_LLM_REASONING` is set, since a
|
|
239
|
+
strict server refuses a field it does not know. `FASTBROWSE_LLM_API_KEY` is its bearer
|
|
240
|
+
token, sent only when set, and that endpoint never receives `OPENROUTER_API_KEY` or `AI_GATEWAY_API_KEY`. Two
|
|
241
|
+
settings shape its requests: `FASTBROWSE_LLM_STRICT=0` sends each schema as the model defines it rather than
|
|
242
|
+
in strict form, for a server whose structured output breaks under strict mode, and `FASTBROWSE_LLM_EXTRA_BODY`
|
|
243
|
+
is a JSON object added to every request, such as `{"chat_template_kwargs":{"enable_thinking":false}}`. It may
|
|
244
|
+
not set a field fastbrowse sends itself (`model`, `messages`, `max_tokens`, `response_format`, `provider`,
|
|
245
|
+
`reasoning`). Jev still needs its own key. An endpoint that reports no price leaves those calls' cost unknown
|
|
246
|
+
rather than zero, so `--max-dollars` stops the run after the first such call.
|
|
247
|
+
|
|
231
248
|
### Results
|
|
232
249
|
|
|
233
250
|
The exit code identifies the run status. Configuration refusals exit 1; invalid command syntax exits 2.
|
|
234
|
-
|
|
251
|
+
Only `complete` exits 0, so a program can also check zero versus nonzero.
|
|
235
252
|
|
|
236
253
|
| Status | Exit | Meaning |
|
|
237
254
|
|:--|--:|:--|
|
|
@@ -242,14 +259,30 @@ Programs that only check zero versus nonzero continue to work.
|
|
|
242
259
|
| `blocked` | 6 | a bot check (a CAPTCHA) that did not clear; not a sign-in, so no secret passes it |
|
|
243
260
|
| `needs_input` | 5 | a required value or file is missing, or an upload exceeds the configured size limit |
|
|
244
261
|
| `stuck` | 9 | recovery ran out without reaching a page state the run had not seen |
|
|
245
|
-
| `budget_exceeded` | 7 | a
|
|
262
|
+
| `budget_exceeded` | 7 | a resource limit was reached, or a missing cost prevents enforcing the dollar cap |
|
|
246
263
|
| `observation_limit` | 11 | the page or required evidence cannot fit the configured prompt budget |
|
|
247
264
|
| `unavailable` | 8 | a model or browser provider stayed unavailable through every retry; the same run later may pass |
|
|
248
265
|
| `error` | 1 | a model or browser failure |
|
|
249
266
|
|
|
250
267
|
A `budget_exceeded` JSON result includes `budget.resource` (`steps`, `seconds`, `dollars`, `jev_calls` or
|
|
251
268
|
`llm_calls`) and `budget.limit`. Other results have `budget: null`. The embedding and MCP APIs carry the same
|
|
252
|
-
optional object, so callers can identify the
|
|
269
|
+
optional object, so callers can identify the affected limit without parsing an error message.
|
|
270
|
+
|
|
271
|
+
A bot check can block a cloud browser before any task steps execute. Retry with an attached local browser
|
|
272
|
+
or choose another source for the research. Credentials do not resolve a CAPTCHA.
|
|
273
|
+
The `blocked` result's `evidence` quotes the opening text of the challenge page, with its address.
|
|
274
|
+
|
|
275
|
+
If a model completion omits its cost, fastbrowse looks up the matching OpenRouter or Vercel generation
|
|
276
|
+
receipt. If that receipt is still unavailable, a run with a dollar cap stops with `budget_exceeded`;
|
|
277
|
+
this does not mean the known charges reached the cap. Supplied `inputs` can provide exact field text
|
|
278
|
+
without a field-writing generation.
|
|
279
|
+
|
|
280
|
+
A browser command that remains unanswered for 120 seconds returns `unavailable`, even if the browser
|
|
281
|
+
still answers health checks. Step and dollar limits do not bound total elapsed time. Set `Limits(max_seconds=...)` for a run deadline.
|
|
282
|
+
When investigating a stalled run, enable trace logging and retain the last event alongside the result.
|
|
283
|
+
|
|
284
|
+
[Troubleshooting](docs/troubleshooting.md) takes each status a run can stop with: what it means, its common
|
|
285
|
+
causes and the next step.
|
|
253
286
|
|
|
254
287
|
## How it works
|
|
255
288
|
|
|
@@ -315,7 +348,8 @@ asyncio.run(main())
|
|
|
315
348
|
the run opens its own tab and closes the tabs it owns. It leaves the browser and pre-existing tabs open;
|
|
316
349
|
cookies and other changes made by the task can persist. `cdp_port=` finds the same browser from its DevTools
|
|
317
350
|
port on `127.0.0.1`. `attach=True` and `target_match=` drive a window already open and leave it open, as
|
|
318
|
-
`--attach` and `--target-match` do
|
|
351
|
+
`--attach` and `--target-match` do, and `foreground=True` brings the run's tab to the front as `--foreground`
|
|
352
|
+
does. Pass `browser_api_key=` to start a cloud browser;
|
|
319
353
|
with neither argument, it runs local Chrome. Passing both is an error. `cloud_extensions=[...]` loads up to
|
|
320
354
|
three of your account's ready Browser Use Cloud extensions, by ID, into that cloud browser; it is an error with
|
|
321
355
|
local or attached browsers.
|
|
@@ -334,6 +368,17 @@ async def main() -> None:
|
|
|
334
368
|
|
|
335
369
|
`resolve_cdp_port(port)` returns the `ws://` URL behind a DevTools port, for a caller that passes `cdp_url=`.
|
|
336
370
|
|
|
371
|
+
`run_task` and `connect_cdp` take two access controls that the command line, the MCP server and the JavaScript
|
|
372
|
+
SDK do not offer. `allowed_origins=["https://app.example.com"]` limits the documents a run may read and control
|
|
373
|
+
to those exact origins: scheme, host and optional port, with no wildcard or path. A navigation, redirect, frame
|
|
374
|
+
or popup outside the list is refused before it is sent, and a window already open outside it is never read.
|
|
375
|
+
A sign-in that redirects through another origin needs that origin listed too. The list scopes documents, not
|
|
376
|
+
the network: images, scripts and requests a listed page makes to other hosts still load. A scoped run delivers
|
|
377
|
+
no live frames or screenshots, and combining it with `record=` is an error. `check_access=` is an async callback
|
|
378
|
+
awaited before the browser starts and before every read, navigation and action. When it raises, `connect_cdp`
|
|
379
|
+
raises a `BrowserError` and `run_task` returns a `RunResult` with status `error`; either way the error names only
|
|
380
|
+
the exception's type, never its text.
|
|
381
|
+
|
|
337
382
|
`RunResult.citations` is a tuple of `Citation` objects, also importable from `fastbrowse`. Each has `id`
|
|
338
383
|
(the number in the answer), `text` (the Notes fact), `requirement_id` (or `None`), `url`, `quote` and
|
|
339
384
|
`deep_link`. Each claim in `result.answer` carries numbered Markdown links to its supporting facts.
|
|
@@ -373,7 +418,7 @@ package is a TypeScript SDK with no dependencies. With it npm installs one of fi
|
|
|
373
418
|
as a native binary, the one for your platform: `@fastbrowse/darwin-arm64`, `darwin-x64`, `linux-arm64`,
|
|
374
419
|
`linux-x64` or `win32-x64`. No install script runs and nothing is downloaded on first use, so it installs under
|
|
375
420
|
pnpm and bun with scripts blocked, and it starts offline. It needs Node.js 20 or newer. The npm packages carry
|
|
376
|
-
the PyPI package's version and are published by the same tag
|
|
421
|
+
the PyPI package's version and are published by the same tag.
|
|
377
422
|
|
|
378
423
|
The binary brings no browser. It finds local Chrome, starts a Browser Use Cloud browser, or drives one already
|
|
379
424
|
running, as the command line does. It reads the same keys from the environment of your process
|
|
@@ -428,7 +473,7 @@ the options are camelCase. The structured data is in `data`, as in Python. The S
|
|
|
428
473
|
schema's output type. Data the schema refuses rejects with `OutputValidationError`, which carries the result.
|
|
429
474
|
A JSON Schema object is accepted too; `output` is then `data`, typed `unknown`.
|
|
430
475
|
|
|
431
|
-
What a run can fill
|
|
476
|
+
What a run can fill is narrower than what a schema can say. The server accepts nested objects, arrays,
|
|
432
477
|
`enum`, `const` and optional values, and refuses any other keyword by name before a browser opens. A run
|
|
433
478
|
fills a flat object of required string, number, integer and boolean fields, as the example has. With any
|
|
434
479
|
other field the run ends `unverified` with no data.
|
|
@@ -449,11 +494,11 @@ await fb.run('Log in as standard_user with the saved password and add the backpa
|
|
|
449
494
|
|
|
450
495
|
`secrets.resolve` is called each time a value is typed and never for an origin its ref does not cover, so the
|
|
451
496
|
value leaves your vault at that moment and a one-time code is fresh. `until` gets the address the run ended on,
|
|
452
|
-
and anything but `true` keeps the run from `complete`. `onFrame` receives JPEG frames of the active tab;
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
`
|
|
456
|
-
`Fastbrowse.start` also takes as defaults for every run. A run passes `null` for one of them to go without
|
|
497
|
+
and anything but `true` keeps the run from `complete`. `onFrame` receives JPEG frames of the active tab; without
|
|
498
|
+
it no frame is sent. A callback that throws ends the run with status `error`. The other options are `run_task`'s:
|
|
499
|
+
`inputs`, `attachments` as bytes, `downloads`, `record`, and the browser choices `chrome`, `cloudProfile`,
|
|
500
|
+
`cdpUrl`, `cdpPort`, `attach`, `targetMatch`, `foreground`, `proxyCountry`, `viewport` and `cloudAllowResizing`,
|
|
501
|
+
which `Fastbrowse.start` also takes as defaults for every run. A run passes `null` for one of them to go without
|
|
457
502
|
that default.
|
|
458
503
|
|
|
459
504
|
There is no binary for Alpine or another musl system, and none for a platform outside the five. There
|
|
@@ -462,6 +507,18 @@ There is no binary for Alpine or another musl system, and none for a platform ou
|
|
|
462
507
|
that allows programs only by the team that signed them refuses. The Windows binary is not signed. Bun and Deno are
|
|
463
508
|
untested.
|
|
464
509
|
|
|
510
|
+
## Use fastbrowse with your agent
|
|
511
|
+
|
|
512
|
+
Install the [fastbrowse skill](docs/skill.md) to delegate website tasks from an agent that supports Agent Skills. It uses the MCP
|
|
513
|
+
tool when connected, or the CLI, and preserves the task's citations, status, authorization, and budget.
|
|
514
|
+
The guide covers agent selection, configuration, and example prompts for Codex and Claude Code.
|
|
515
|
+
Agents without skill support can use the CLI or MCP server directly.
|
|
516
|
+
|
|
517
|
+
## Run fastbrowse through Nebula
|
|
518
|
+
|
|
519
|
+
[Nebula](https://www.nebula.gg/) embeds fastbrowse in its agent harness, with browser steps, results and
|
|
520
|
+
permitted vault logins. Use Bitwarden or 1Password through Nebula with credentials scoped to authorized websites.
|
|
521
|
+
|
|
465
522
|
## Use it from an MCP client
|
|
466
523
|
|
|
467
524
|
`fastbrowse-mcp` serves one `browse` tool over [MCP](https://modelcontextprotocol.io), so Claude Code, Claude
|
|
@@ -493,12 +550,12 @@ The server's flags decide what a calling model may do; a call can ask for less,
|
|
|
493
550
|
|
|
494
551
|
| Flag | Effect |
|
|
495
552
|
|:--|:--|
|
|
496
|
-
| `--local`, `--headed`, `--profile DIR`, `--downloads DIR` | as for the CLI, fixed for every call |
|
|
553
|
+
| `--local`, `--headed`, `--profile DIR`, `--foreground`, `--downloads DIR`, `--cursor` | as for the CLI, fixed for every call |
|
|
497
554
|
| `--cloud-profile ID` | every call runs signed in as that cloud profile; a calling model cannot choose it |
|
|
498
555
|
| `--allow-authorize` | let a call pass `authorize` to go through irreversible actions; without it they always stop at `needs_confirmation` |
|
|
499
556
|
| `--secret NAME=ENV_VAR@ORIGIN` | typed when a call's start page is on `ORIGIN` (`https://*.site.com` covers its hosts); the model sees `NAME` only |
|
|
500
557
|
| `--bitwarden ITEM` | a vault login a call may name in `bitwarden` |
|
|
501
|
-
| `--max-steps N`, `--max-dollars N`, `--max-seconds N` | ceilings per call
|
|
558
|
+
| `--max-steps N`, `--max-dollars N`, `--max-seconds N` | optional ceilings per call; defaults are unlimited |
|
|
502
559
|
| `--max-concurrent N` | runs at once, default 1; more calls wait their turn |
|
|
503
560
|
| `--transport http`, `--host`, `--port` | streamable HTTP at `/mcp` instead of stdio |
|
|
504
561
|
|
|
@@ -521,9 +578,9 @@ seconds to minutes, so raise the client's tool timeout if it has one (`MCP_TOOL_
|
|
|
521
578
|
|
|
522
579
|
## Evals and development
|
|
523
580
|
|
|
524
|
-
|
|
581
|
+
[Eval commands](docs/evals.md) cover running suites, publishing results and regenerating evidence. Final page checks
|
|
525
582
|
require evidence read by the harness, and a pass also requires the task's expected ending. Published rows carry
|
|
526
|
-
build and task versions; the [
|
|
583
|
+
build and task versions; the [compact results feed](docs/results/summary.json) is generated from them.
|
|
527
584
|
|
|
528
585
|
See [CONTRIBUTING.md](CONTRIBUTING.md) for setup and checks, [docs/design.md](docs/design.md) for the browser
|
|
529
586
|
layer, and [docs/jev.md](docs/jev.md) for the Jev assumptions checked against Typesafe's documentation.
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
../../Scripts/fastbrowse-mcp.exe,sha256=I2I08h1Brh_Z0IlP0BL0kO00C2A0VwEuhWK0ngGPh3s,47104
|
|
2
|
+
../../Scripts/fastbrowse.exe,sha256=Gvhgn6Rkas3oyDv32ThG3N-V1GSHRlufYuH48_FKEFo,47104
|
|
3
|
+
_editable_impl_fastbrowse.pth,sha256=tSUp9-7xHLVBnY2rS0eA3HsN-LQmHLK1u99SbVQnoxg,30
|
|
4
|
+
fastbrowse-0.5.23.dist-info/INSTALLER,sha256=5hhM4Q4mYTT9z6QB6PGpUAW81PGNFrYrdXMj4oM_6ak,2
|
|
5
|
+
fastbrowse-0.5.23.dist-info/METADATA,sha256=_tHtsDCpIq1LtYvyl1hsqA-XHnZB86idiCg6iqO6IMw,36424
|
|
6
|
+
fastbrowse-0.5.23.dist-info/RECORD,,
|
|
7
|
+
fastbrowse-0.5.23.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
8
|
+
fastbrowse-0.5.23.dist-info/WHEEL,sha256=W3fkpkm7-wf9vBI5Z-7s0eWkeM-spu78I8Neb98DeEg,87
|
|
9
|
+
fastbrowse-0.5.23.dist-info/direct_url.json,sha256=17Yl-bY7t4MfSh0BCqmxi7aWPtTEbGMyNMuGnRAqc9o,73
|
|
10
|
+
fastbrowse-0.5.23.dist-info/entry_points.txt,sha256=SlQAK1_4_oywTAMckx8BYuCQJva0F-QuShQPcxtUm-g,95
|
|
11
|
+
fastbrowse-0.5.23.dist-info/licenses/LICENSE,sha256=K_U5s2m7BDEapcEX4SlvotrXk6f1rg7pohD5P6Cn9dM,1088
|
|
12
|
+
fastbrowse-0.5.23.dist-info/licenses/NOTICE,sha256=aLaGCOpkunnLIGPoVVzNiekSAbwRskkM0M3cqNGCv9Y,1887
|
|
13
|
+
fastbrowse-0.5.23.dist-info/uv_build.json,sha256=RBNvo1WzZ4oRRq0W9-hknpT7T8If536DEMBg9hyq_4o,2
|
|
14
|
+
fastbrowse-0.5.23.dist-info/uv_cache.json,sha256=j55NO2nu46eK1z_h_hizi5atPv0iLZ7mCYDtbxFmtc0,194
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"timestamp":{"secs_since_epoch":1792329352,"nanos_since_epoch":618461000},"commit":null,"tags":null,"env":{},"directories":{"src":{"secs_since_epoch":1792329352,"nanos_since_epoch":618461000}}}
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/fastbrowse/_internal/{websockets-17.1.dist-info → websockets-17.2.dist-info}/METADATA
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: websockets
|
|
3
|
-
Version: 17.
|
|
3
|
+
Version: 17.2
|
|
4
4
|
Summary: An implementation of the WebSocket Protocol (RFC 6455 & 7692)
|
|
5
5
|
Author-email: Aymeric Augustin <aymeric.augustin@m4x.org>
|
|
6
6
|
License-Expression: BSD-3-Clause
|
|
@@ -143,7 +143,7 @@ Why shouldn't I use ``websockets``?
|
|
|
143
143
|
that build on top of ``websockets`` to support WebSocket connections, like
|
|
144
144
|
uvicorn_ or Sanic_.
|
|
145
145
|
|
|
146
|
-
.. _uvicorn: https://
|
|
146
|
+
.. _uvicorn: https://uvicorn.dev/
|
|
147
147
|
.. _Sanic: https://sanic.dev/en/
|
|
148
148
|
|
|
149
149
|
What else?
|
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
../../Scripts/websockets.exe,sha256=AxrW-5Uk1L7RA11pUW4WKeiFGKYpQaErydpn6fgw6DY,47104
|
|
2
|
-
websockets-17.
|
|
3
|
-
websockets-17.
|
|
4
|
-
websockets-17.
|
|
5
|
-
websockets-17.
|
|
6
|
-
websockets-17.
|
|
7
|
-
websockets-17.
|
|
8
|
-
websockets-17.
|
|
9
|
-
websockets-17.
|
|
2
|
+
websockets-17.2.dist-info/INSTALLER,sha256=5hhM4Q4mYTT9z6QB6PGpUAW81PGNFrYrdXMj4oM_6ak,2
|
|
3
|
+
websockets-17.2.dist-info/METADATA,sha256=EgpbstdhlQFw4i_HekNTbRV_hbHPK_nEEzJL_bNeRuc,6506
|
|
4
|
+
websockets-17.2.dist-info/RECORD,,
|
|
5
|
+
websockets-17.2.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
6
|
+
websockets-17.2.dist-info/WHEEL,sha256=0LUNoHxLvcpw9db_x0XozE5jW73-_GOAO7fDDJ4Xt4Q,101
|
|
7
|
+
websockets-17.2.dist-info/entry_points.txt,sha256=Dnhn4dm5EsI4ZMAsHldGF6CwBXZrGXnR7cnK2-XR7zY,51
|
|
8
|
+
websockets-17.2.dist-info/licenses/LICENSE,sha256=D0RRSZisognTSC0QIEqK3yqkKW_xV6NqXAki8igGMtM,1538
|
|
9
|
+
websockets-17.2.dist-info/top_level.txt,sha256=CMpdKklxKsvZgCgyltxUWOHibZXZ1uYIVpca9xsQ8Hk,11
|
|
10
10
|
websockets/__init__.py,sha256=vQHP5G4rtKDXEpSFZLPny_idjboIWv5r_9bAVhdiVmE,7699
|
|
11
11
|
websockets/__main__.py,sha256=h1QpgvR08tO6TfQHuySKKgQiQVXVIoQRKLEx5sVht_M,67
|
|
12
12
|
websockets/asyncio/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
13
|
-
websockets/asyncio/client.py,sha256=
|
|
13
|
+
websockets/asyncio/client.py,sha256=TYTCEYisdPRuHlFzEUYEki8xW3lNgT6Q_iOsiX5DCt4,31461
|
|
14
14
|
websockets/asyncio/connection.py,sha256=w6ygAY7vpYh3d25xZTupBN06HRVrL202wf7sY8intYw,50996
|
|
15
15
|
websockets/asyncio/messages.py,sha256=nUTIS5qj6k043A_t69j_43QklSwUXuhDbBgMASJQUXg,11412
|
|
16
16
|
websockets/asyncio/router.py,sha256=LclmayDF8nep2SB9HUjO9DNIP7e4XqdtukYvPSko_LQ,8011
|
|
17
|
-
websockets/asyncio/server.py,sha256=
|
|
17
|
+
websockets/asyncio/server.py,sha256=RmrKkcw0fq6QKBe84ODr3-ZE-JdO0xkVQXN2AYIBT6s,35357
|
|
18
18
|
websockets/auth.py,sha256=NZ60zoE10wklboBHzj4Wof9piVB09jO1bDn_KHN8ZcE,586
|
|
19
19
|
websockets/cli.py,sha256=eRNYm8U2_JLK_Z2nGwmI2BcXUrP0WaJavrIW4G0oZ9Q,7119
|
|
20
20
|
websockets/client.py,sha256=tVgaFHnshw6mGJpryY3BDgxtvh03a5gDAmBRETM51Bc,16587
|
|
@@ -23,8 +23,8 @@ websockets/datastructures.py,sha256=GfaVseBRlwYZ2fCVJkuAbv3mm0-IttIExPBGpdMlshM,
|
|
|
23
23
|
websockets/exceptions.py,sha256=7EWhWMpGS7jyOULTL4-Kd722CyU85DPy2wnTJ-aOHBc,14847
|
|
24
24
|
websockets/extensions/__init__.py,sha256=HdQaQhOVkCR5RJVRKXG5Xmb6cMpAhLaKgRikYRzO64E,102
|
|
25
25
|
websockets/extensions/base.py,sha256=Je1VMBHq7_gqq5idsCqMPD87CI6m7zpDSRj_lCL37Rc,3026
|
|
26
|
-
websockets/extensions/permessage_deflate.py,sha256=
|
|
27
|
-
websockets/frames.py,sha256=
|
|
26
|
+
websockets/extensions/permessage_deflate.py,sha256=HoE8dydZ3GgzEv9WaOeLVwR8EGNuR2re2q2AfyEVs3w,27284
|
|
27
|
+
websockets/frames.py,sha256=ckVUQaJ1Vtfo-dZOxOBujS7jaRcjzvjMMzJA74_mJZ0,18049
|
|
28
28
|
websockets/headers.py,sha256=2XFbUE0BzEIftBR2KS2ygeSRIYzPB-a-q35jfdcZ1MA,16632
|
|
29
29
|
websockets/http11.py,sha256=aBreFKAKQCjXWQZdqILwJHMr1A4jAKuVwX1GDK4GsJU,18738
|
|
30
30
|
websockets/imports.py,sha256=oFdWkxypj_diuqneRuA5OWEXLMQ6pAtj-rKqFU6Pmdg,2895
|
|
@@ -34,32 +34,32 @@ websockets/legacy/client.py,sha256=O7XKQE_C0nrTW7SJxsy8riKQ60mXzrrIwYLul7NBJJA,2
|
|
|
34
34
|
websockets/legacy/exceptions.py,sha256=KrvUEI31DUZs3gl6M-Q-dgsSnsMXzU_bDRuHU6AcKbc,1995
|
|
35
35
|
websockets/legacy/framing.py,sha256=hR1BBzT4UMl_1zOmlm1tPjdtfnHTAhPevRFYEE-9itc,6598
|
|
36
36
|
websockets/legacy/handshake.py,sha256=CRRxkJ96TIgWuoMIL0iol4jp4X7llMA8buX4gfo0SwE,5443
|
|
37
|
-
websockets/legacy/http.py,sha256=
|
|
37
|
+
websockets/legacy/http.py,sha256=i3eI8GxjhMK_yd3EUNXNlGHzVzGAq_s2RxrButetf20,7354
|
|
38
38
|
websockets/legacy/protocol.py,sha256=p2ILhr5nInrRnKPDEtatgVYWamE4_ItN_kP04_aGH4U,65282
|
|
39
39
|
websockets/legacy/server.py,sha256=40fgshk1STwY7Z4GLVmBkREszQVznOCvnaF_iJ6PUVw,46016
|
|
40
40
|
websockets/protocol.py,sha256=OtZoM6Dh8pF3ijs9AEbKlUSc4A-sbJnvTTARkk2Cafc,27972
|
|
41
|
-
websockets/proxy.py,sha256=
|
|
41
|
+
websockets/proxy.py,sha256=auqeGd5H1LmU1fpoua7ElKMItc565ewUd7dklkeKy4g,5053
|
|
42
42
|
websockets/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
43
43
|
websockets/server.py,sha256=Z10tmesqxNj9LhKl7cZIv1QACJnbUzBXojrbTnOnWdA,25336
|
|
44
44
|
websockets/speedups.c,sha256=cWPv8E0JKXSneV8b732dwNEbyD5JWJKzyI5bqmGiXaY,6149
|
|
45
|
-
websockets/speedups.cp313-win_amd64.pyd,sha256=
|
|
45
|
+
websockets/speedups.cp313-win_amd64.pyd,sha256=mhSVS19S9jjAk9JvEVw6XcoaegpLSrrXlXBLRQznqjQ,11264
|
|
46
46
|
websockets/speedups.pyi,sha256=xJUwsMLc11sH19lvnxlmuwROSIxzQYdvN3Qt5zS0674,105
|
|
47
47
|
websockets/streams.py,sha256=pP55__xWn6xuQCud0uCjnBF_bKult_4AlItBjtnE7N4,4777
|
|
48
48
|
websockets/sync/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
49
|
-
websockets/sync/client.py,sha256=
|
|
50
|
-
websockets/sync/connection.py,sha256=
|
|
49
|
+
websockets/sync/client.py,sha256=bmiietfT8aB6rmHLhZ6_UabhiLek6jT3FgDT6bdLfLA,41088
|
|
50
|
+
websockets/sync/connection.py,sha256=BgL3d-5pufLjOpXUkmAKR0ypr-7I8ICzFT6NzRul1Kw,50582
|
|
51
51
|
websockets/sync/messages.py,sha256=SKD1cMArY_Ckh2wFx0J8yyEHNiMo9SofJeGX05qewFw,13174
|
|
52
52
|
websockets/sync/router.py,sha256=CRYNM_AcBAkzHpkwmdwXAhLa5GsXL5E5vTSBi6YldNs,7426
|
|
53
|
-
websockets/sync/server.py,sha256=
|
|
53
|
+
websockets/sync/server.py,sha256=WPALbyPwOoonbbZ4t5zaHfr-cW3Z6JTwBbCn17Zv4tQ,35824
|
|
54
54
|
websockets/sync/utils.py,sha256=JgQVxO_NcQXZd8m6hDeXpSQ_uN6GYF8u9XLHZ7msv3k,1152
|
|
55
55
|
websockets/trio/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
56
|
-
websockets/trio/client.py,sha256=
|
|
56
|
+
websockets/trio/client.py,sha256=p0lX8CVCoU3EoPMAyG2MHd1cS7HvU1VHc2OawP4mu3Q,31056
|
|
57
57
|
websockets/trio/connection.py,sha256=O69JEVeBjRfPJGT3yEsA599-zB3Fb0ymJfMiuz8U9gE,50503
|
|
58
58
|
websockets/trio/messages.py,sha256=JvikjM_-yX_ciJVsl2jZVsApAu0nEvlXUSEgCrQC4J4,10767
|
|
59
59
|
websockets/trio/router.py,sha256=XrUsxHiN-6qY-0AHFokKrztBp9FcSRWGBN3oFn_8dhI,7403
|
|
60
|
-
websockets/trio/server.py,sha256=
|
|
60
|
+
websockets/trio/server.py,sha256=MqwbOqqg4UdJiO8tVev1rXWN-tAUvgFLh9joH1dDU6I,26595
|
|
61
61
|
websockets/trio/utils.py,sha256=OCYM76NkKq32hKmu1C9LibNrUQ6spABFwzHVQC2QFcE,992
|
|
62
62
|
websockets/typing.py,sha256=vaXqi-_ehflYIFvETaTjp_7QQaWQVLUNSQnu_J9E5CA,1913
|
|
63
|
-
websockets/uri.py,sha256=
|
|
63
|
+
websockets/uri.py,sha256=phwGO-agJEGuTFOK8XzCvjP1132NiH1yKdaxXiOeVBU,3174
|
|
64
64
|
websockets/utils.py,sha256=DsLsUjT1hUSWXjZr5a1gMxy-icUydcXQL8eOn0Rwoi4,2098
|
|
65
|
-
websockets/version.py,sha256=
|
|
65
|
+
websockets/version.py,sha256=wrBJoJAcDL4n5qFYj_PJMyxyTD8U9zTr7y02bJJi9OU,3294
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
../../Scripts/fastbrowse-mcp.exe,sha256=I2I08h1Brh_Z0IlP0BL0kO00C2A0VwEuhWK0ngGPh3s,47104
|
|
2
|
-
../../Scripts/fastbrowse.exe,sha256=Gvhgn6Rkas3oyDv32ThG3N-V1GSHRlufYuH48_FKEFo,47104
|
|
3
|
-
_editable_impl_fastbrowse.pth,sha256=tSUp9-7xHLVBnY2rS0eA3HsN-LQmHLK1u99SbVQnoxg,30
|
|
4
|
-
fastbrowse-0.5.19.dist-info/INSTALLER,sha256=5hhM4Q4mYTT9z6QB6PGpUAW81PGNFrYrdXMj4oM_6ak,2
|
|
5
|
-
fastbrowse-0.5.19.dist-info/METADATA,sha256=l_hggNhjxHhCyunHbMTPUkdpyJ3tl79Y1AHPhtN7EKo,31033
|
|
6
|
-
fastbrowse-0.5.19.dist-info/RECORD,,
|
|
7
|
-
fastbrowse-0.5.19.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
8
|
-
fastbrowse-0.5.19.dist-info/WHEEL,sha256=W3fkpkm7-wf9vBI5Z-7s0eWkeM-spu78I8Neb98DeEg,87
|
|
9
|
-
fastbrowse-0.5.19.dist-info/direct_url.json,sha256=17Yl-bY7t4MfSh0BCqmxi7aWPtTEbGMyNMuGnRAqc9o,73
|
|
10
|
-
fastbrowse-0.5.19.dist-info/entry_points.txt,sha256=SlQAK1_4_oywTAMckx8BYuCQJva0F-QuShQPcxtUm-g,95
|
|
11
|
-
fastbrowse-0.5.19.dist-info/licenses/LICENSE,sha256=K_U5s2m7BDEapcEX4SlvotrXk6f1rg7pohD5P6Cn9dM,1088
|
|
12
|
-
fastbrowse-0.5.19.dist-info/licenses/NOTICE,sha256=aLaGCOpkunnLIGPoVVzNiekSAbwRskkM0M3cqNGCv9Y,1887
|
|
13
|
-
fastbrowse-0.5.19.dist-info/uv_build.json,sha256=RBNvo1WzZ4oRRq0W9-hknpT7T8If536DEMBg9hyq_4o,2
|
|
14
|
-
fastbrowse-0.5.19.dist-info/uv_cache.json,sha256=7k_iIcnr2IA80wtzhp5udN82yGwf7-2kV11jkwWB8qQ,194
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"timestamp":{"secs_since_epoch":1791321499,"nanos_since_epoch":175274600},"commit":null,"tags":null,"env":{},"directories":{"src":{"secs_since_epoch":1791321499,"nanos_since_epoch":178279400}}}
|
/package/fastbrowse/_internal/{fastbrowse-0.5.19.dist-info → fastbrowse-0.5.23.dist-info}/INSTALLER
RENAMED
|
File without changes
|
/package/fastbrowse/_internal/{fastbrowse-0.5.19.dist-info → fastbrowse-0.5.23.dist-info}/REQUESTED
RENAMED
|
File without changes
|
/package/fastbrowse/_internal/{fastbrowse-0.5.19.dist-info → fastbrowse-0.5.23.dist-info}/WHEEL
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/fastbrowse/_internal/{websockets-17.1.dist-info → websockets-17.2.dist-info}/INSTALLER
RENAMED
|
File without changes
|
/package/fastbrowse/_internal/{websockets-17.1.dist-info → websockets-17.2.dist-info}/REQUESTED
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/fastbrowse/_internal/{websockets-17.1.dist-info → websockets-17.2.dist-info}/top_level.txt
RENAMED
|
File without changes
|