unbrowse 9.10.0 → 9.12.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/SKILL.md +25 -21
- package/package.json +1 -1
- package/runtime/cli.js +59613 -3326
- package/runtime/mcp.js +59449 -3161
- package/vendor/kuri/darwin-arm64/libkuri_ffi.dylib +0 -0
- package/vendor/kuri/darwin-x64/libkuri_ffi.dylib +0 -0
- package/vendor/kuri/linux-arm64/libkuri_ffi.so +0 -0
- package/vendor/kuri/linux-x64/libkuri_ffi.so +0 -0
- package/vendor/kuri/manifest.json +6 -6
- package/vendor/kuri/win-x64/kuri.exe +0 -0
package/SKILL.md
CHANGED
|
@@ -21,10 +21,10 @@ store sanitized route metadata, replay it on later calls. A replay is about
|
|
|
21
21
|
The entire surface is exactly three top-level verbs, each taking a capability:
|
|
22
22
|
|
|
23
23
|
- **`unbrowse eval <cap>`** - observe. Resolve a route, read a page, check status, list skills.
|
|
24
|
-
- **`unbrowse
|
|
24
|
+
- **`unbrowse breath <cap>`** - actuate. Execute a route, drive the browser, fetch, run, capture.
|
|
25
25
|
- **`unbrowse build <cap>`** - declare. Index, publish, review, set up, register.
|
|
26
26
|
|
|
27
|
-
There are no flat top-level commands. Every invocation is `unbrowse build|
|
|
27
|
+
There are no flat top-level commands. Every invocation is `unbrowse build|breath|eval <cap> [flags]`.
|
|
28
28
|
|
|
29
29
|
## The flow (load-bearing): ONE call by default. Resolve+execute for control. One capture on a miss.
|
|
30
30
|
|
|
@@ -33,7 +33,7 @@ call. Let the runtime resolve the route, fill the holes, escalate if needed, and
|
|
|
33
33
|
structured result. Do NOT hand-run resolve, then fetch, then parse the page yourself.
|
|
34
34
|
|
|
35
35
|
unbrowse "<what you want>" --url "<site>" # bare natural-language: the one-hole front door
|
|
36
|
-
unbrowse
|
|
36
|
+
unbrowse breath get "<what you want>" --url "<site>" # identical, explicit verb form
|
|
37
37
|
|
|
38
38
|
Worked example, "homemade food on Carousell" (ONE call returns priced listings):
|
|
39
39
|
|
|
@@ -49,11 +49,11 @@ When you must PICK a specific endpoint (several routes, a mutation, explicit par
|
|
|
49
49
|
two-call explicit path:
|
|
50
50
|
|
|
51
51
|
1. `unbrowse eval resolve --intent "<what you want>" --url "<site>"` -> ranked shortlist.
|
|
52
|
-
2. `unbrowse
|
|
52
|
+
2. `unbrowse breath execute --skill <id> --endpoint <id> [--param k=v ...]` -> replay it.
|
|
53
53
|
|
|
54
54
|
On a genuine MISS (no indexed route, a first visit, an anti-bot site), do ONE escalation:
|
|
55
55
|
|
|
56
|
-
unbrowse
|
|
56
|
+
unbrowse breath capture --url "<site>" --intent "<what you want>"
|
|
57
57
|
|
|
58
58
|
That drives the browser once and INDEXES the route. First visit to an uncached site pays a
|
|
59
59
|
capture tax (seconds); every visit after is a route-cache hit (<200ms). `eval resolve` on an
|
|
@@ -160,13 +160,13 @@ add the line, with the user's confirmation.
|
|
|
160
160
|
Use when the site is not published, the flow is JS-heavy, or you need proof of a workflow.
|
|
161
161
|
|
|
162
162
|
```bash
|
|
163
|
-
unbrowse
|
|
163
|
+
unbrowse breath go https://example.com
|
|
164
164
|
unbrowse eval snap --filter interactive # live @eN refs
|
|
165
|
-
unbrowse
|
|
166
|
-
unbrowse
|
|
167
|
-
unbrowse
|
|
168
|
-
unbrowse
|
|
169
|
-
unbrowse
|
|
165
|
+
unbrowse breath click e2
|
|
166
|
+
unbrowse breath fill e5 "hello world"
|
|
167
|
+
unbrowse breath submit --wait-for "/next-page.html"
|
|
168
|
+
unbrowse breath sync # mid-flow checkpoint
|
|
169
|
+
unbrowse breath close # final checkpoint + queue index/publish
|
|
170
170
|
```
|
|
171
171
|
|
|
172
172
|
Rules while browsing: browser-native by default (no hidden same-origin replay); a
|
|
@@ -213,7 +213,7 @@ capture - inspect that with `eval skill` / `build review` / `build publish` firs
|
|
|
213
213
|
```bash
|
|
214
214
|
unbrowse eval resolve --intent "get my X timeline" --url "https://x.com/home" --pretty
|
|
215
215
|
|
|
216
|
-
unbrowse
|
|
216
|
+
unbrowse breath execute --skill {skill_id} --endpoint {endpoint_id} \
|
|
217
217
|
--path "data.items[]" --extract "name,url,created_at" --limit 10 --pretty
|
|
218
218
|
```
|
|
219
219
|
|
|
@@ -240,11 +240,15 @@ After domain convergence a single skill can have 40+ endpoints; filter by intent
|
|
|
240
240
|
|
|
241
241
|
## Authentication
|
|
242
242
|
|
|
243
|
-
Automatic: Unbrowse
|
|
244
|
-
|
|
243
|
+
Automatic: Unbrowse reuses your existing logged-in browser session. It reads (a copy of) the
|
|
244
|
+
cookies for the target domain from your daily-driver browser — Chrome, Firefox, Arc, Dia,
|
|
245
|
+
Brave, Edge, Vivaldi, Opera, or Chromium — and attaches them to the fetch, including on the
|
|
246
|
+
fast `resolve` path. So if you are signed in there, a cookie-gated page returns its real
|
|
247
|
+
authenticated content instead of the public/logged-out shell — no browser relaunch, your
|
|
248
|
+
session is left untouched. If a response is still `auth_required`:
|
|
245
249
|
|
|
246
250
|
```bash
|
|
247
|
-
unbrowse
|
|
251
|
+
unbrowse breath auth-capture --url "https://example.com" # sign in once; cookies persist
|
|
248
252
|
```
|
|
249
253
|
|
|
250
254
|
## Mutations
|
|
@@ -252,8 +256,8 @@ unbrowse act auth-capture --url "https://example.com" # sign in once; cookies
|
|
|
252
256
|
Always `--dry-run` first; ask the user before `--confirm-unsafe`:
|
|
253
257
|
|
|
254
258
|
```bash
|
|
255
|
-
unbrowse
|
|
256
|
-
unbrowse
|
|
259
|
+
unbrowse breath execute --skill {id} --endpoint {id} --dry-run
|
|
260
|
+
unbrowse breath execute --skill {id} --endpoint {id} --confirm-unsafe
|
|
257
261
|
```
|
|
258
262
|
|
|
259
263
|
Policy-sensitive site mutations can require an extra opt-in
|
|
@@ -289,7 +293,7 @@ Global flags: `--pretty` (indented JSON), `--raw` (skip server projection), `--n
|
|
|
289
293
|
```bash
|
|
290
294
|
# Resolve then execute a known route
|
|
291
295
|
unbrowse eval resolve --intent "get my X timeline" --url "https://x.com/home" --pretty
|
|
292
|
-
unbrowse
|
|
296
|
+
unbrowse breath execute --skill {skill_id} --endpoint {endpoint_id} --pretty
|
|
293
297
|
|
|
294
298
|
# Submit feedback AFTER presenting results to the user
|
|
295
299
|
unbrowse eval feedback --skill {skill_id} --endpoint {endpoint_id} --rating 5 --outcome success
|
|
@@ -306,12 +310,12 @@ reflects current API reality, not stale docs.
|
|
|
306
310
|
|
|
307
311
|
## Payments
|
|
308
312
|
|
|
309
|
-
Capture
|
|
313
|
+
Capture and indexing are free. You pay only to use the shared graph
|
|
310
314
|
to skip discovery.
|
|
311
315
|
|
|
312
316
|
| Tier | What | When | Cost |
|
|
313
317
|
|---|---|---|---|
|
|
314
|
-
| Free | Capture,
|
|
318
|
+
| Free | Capture, index, execute from local cache | Always | $0 |
|
|
315
319
|
| Tier 1 | One-time skill install from the marketplace | First use of a shared route | $0.005-0.02 |
|
|
316
320
|
| Tier 2 | Per-execution site-owner fee (opt-in sites only) | Each call to an opted-in site | $0.001-0.01 |
|
|
317
321
|
| Tier 3 | Search/routing fee | Each marketplace graph lookup | $0.001-0.005 |
|
|
@@ -358,7 +362,7 @@ revenue. Check earnings via `unbrowse eval stats` or `unbrowse eval earnings`.
|
|
|
358
362
|
## Reporting issues
|
|
359
363
|
|
|
360
364
|
When Unbrowse fails on a site (empty data after browse+index+resolve+execute, auth fails
|
|
361
|
-
after
|
|
365
|
+
after sign-in, repeated resolve misses, wrong/stale execute data, a regression),
|
|
362
366
|
file a GitHub issue so it can be fixed:
|
|
363
367
|
|
|
364
368
|
```bash
|