bladebro 4.4.0 → 4.5.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.
- package/package.json +10 -6
- package/skills/bladebro/SKILL.md +45 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "bladebro",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.5.1",
|
|
4
4
|
"description": "Stealthy and efficient agentic browser driver for AI agents. Few tools, full control, real stealth, max token efficiency.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"repository": {
|
|
@@ -29,6 +29,9 @@
|
|
|
29
29
|
"pi": {
|
|
30
30
|
"extensions": [
|
|
31
31
|
"./pi-extension.ts"
|
|
32
|
+
],
|
|
33
|
+
"skills": [
|
|
34
|
+
"./skills"
|
|
32
35
|
]
|
|
33
36
|
},
|
|
34
37
|
"peerDependenciesMeta": {
|
|
@@ -48,15 +51,16 @@
|
|
|
48
51
|
"dsh-plugin.mjs",
|
|
49
52
|
"cordis.patch.yml",
|
|
50
53
|
"pi-extension.ts",
|
|
54
|
+
"skills",
|
|
51
55
|
"README.md",
|
|
52
56
|
"LICENSE"
|
|
53
57
|
],
|
|
54
58
|
"optionalDependencies": {
|
|
55
|
-
"bladebro-linux-x64": "4.
|
|
56
|
-
"bladebro-linux-arm64": "4.
|
|
57
|
-
"bladebro-darwin-x64": "4.
|
|
58
|
-
"bladebro-darwin-arm64": "4.
|
|
59
|
-
"bladebro-windows-x64": "4.
|
|
59
|
+
"bladebro-linux-x64": "4.5.1",
|
|
60
|
+
"bladebro-linux-arm64": "4.5.1",
|
|
61
|
+
"bladebro-darwin-x64": "4.5.1",
|
|
62
|
+
"bladebro-darwin-arm64": "4.5.1",
|
|
63
|
+
"bladebro-windows-x64": "4.5.1"
|
|
60
64
|
},
|
|
61
65
|
"engines": {
|
|
62
66
|
"node": ">=14"
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: bladebro
|
|
3
|
+
description: Drive a real browser with the bladebro tools (act, see, state, run, vision) — navigating sites, clicking, typing, filling forms, logging in, reading pages, extracting lists/search results/products, and screenshotting. Use whenever a task needs a live web page rather than a fetch or an API.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Bladebro — driving a real browser
|
|
7
|
+
|
|
8
|
+
`act` interacts, `see` reads, `state` manages cookies/tabs/sessions, `run` runs step batches with branching, `vision` screenshots. One long-lived Chrome; refs (`e1`, `e2`, …) address elements.
|
|
9
|
+
|
|
10
|
+
## The loop
|
|
11
|
+
|
|
12
|
+
1. `act { "action": "navigate", "url": "…" }` — returns refs + a content preview; often enough to act on without a separate read.
|
|
13
|
+
2. Address by text when you can: `act { "action": "click", "text": "Sign in" }` — no `see` needed. Labels work for form fields.
|
|
14
|
+
3. Refs are page-scoped and short-lived: after a navigation or tab switch use the fresh refs from THAT response. Within a page they self-heal.
|
|
15
|
+
4. Every action returns an observation (verdict + what changed). A `see` after acting is usually unnecessary — read the observation.
|
|
16
|
+
5. Collapse round-trips: `fill` for whole forms, `batch`/`run` for sequences (branching, loops, inline reads).
|
|
17
|
+
|
|
18
|
+
## Reading
|
|
19
|
+
|
|
20
|
+
- List, search, product, profile pages: `see { "extract": "auto" }` FIRST — one call returns structured items.
|
|
21
|
+
- Articles and docs: `see { "mode": "content" }` (clean markdown). Cheapest "what's here": `mode: "outline"`.
|
|
22
|
+
- One value or a custom shape: `act { "action": "eval", "js": "…" }`.
|
|
23
|
+
- Machine-readable output: add `format: "json"` — the result is pure JSON. `act eval` in text mode is one line, `result: <compact JSON>`; if the script returned a string containing JSON, a note says so (parse the value once more).
|
|
24
|
+
|
|
25
|
+
## Trust what the result tells you
|
|
26
|
+
|
|
27
|
+
- `page_total` with `partial`/`paged` in an extract: the page claims more results than the DOM holds — follow the pagination, or `act { "action": "collect", "url": "…" }` to scroll and dedupe the whole feed.
|
|
28
|
+
- `sponsored: true` items are paid placements — flagged per item and counted in the envelope, left in page order.
|
|
29
|
+
- A note that the URL's range filter does not match the page's own prices means the site ignored its filter — treat those results as unfiltered.
|
|
30
|
+
- `duplicates_removed` / `redirects_unwrapped` explain what was cleaned up; item URLs are canonical, not tracking interstitials.
|
|
31
|
+
- Oversized payloads are written to an artifact file and read back with `see { "artifact": "…" }` (paged). Nothing is truncated silently — a `… (+N chars truncated)` marker always says so.
|
|
32
|
+
|
|
33
|
+
## Forms, sequences, dialogs
|
|
34
|
+
|
|
35
|
+
- Whole forms in ONE call: `act { "action": "fill", "fields": [ { "label": "Email", "text": "…" } ], "submit": "Sign in" }`.
|
|
36
|
+
- Multi-step or branching work: `run { "steps": [ … ] }` — `if`/`while`, inline `see`/`extract` steps, one round-trip.
|
|
37
|
+
- A click that dispatches but changes nothing reads "clicked (no observable DOM change)" — it fired ONCE; verify state before re-clicking. "no-effect" means nothing was dispatched, so a retry is safe there.
|
|
38
|
+
- Dialogs (confirm/prompt/alert): arm `act { "action": "dialog", "expect": "confirm" }` BEFORE the action that triggers it.
|
|
39
|
+
|
|
40
|
+
## When something goes wrong
|
|
41
|
+
|
|
42
|
+
- Errors carry the current page state — read it instead of guessing, and never blind-retry a submit.
|
|
43
|
+
- `trusted:false` = text landed through an untrusted fallback; treat it as not typed. `degraded:true` = the browser is unhealthy (retry or restart it) — not a page problem.
|
|
44
|
+
- An unknown action name answers with the valid list and the correct step.
|
|
45
|
+
- CAPTCHA / bot walls: the verdict says `blocked:` and the remediation ladder is in the ambient notes. Do not try to solve image grids.
|