iframer-toolkit 0.10.1 → 0.10.6
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/README.md +206 -57
- package/dist/cli.js +8391 -6499
- package/dist/local-server.cjs +1616 -1331
- package/dist/mcp-server.cjs +1085 -1157
- package/extension/manifest.json +1 -1
- package/package.json +3 -5
- package/skills/iframer.md +4 -3
package/extension/manifest.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"manifest_version": 3,
|
|
3
3
|
"name": "iframer",
|
|
4
|
-
"version": "0.10.
|
|
4
|
+
"version": "0.10.6",
|
|
5
5
|
"description": "Let iframer drive a Chrome tab you choose, on your real logged-in session.",
|
|
6
6
|
"key": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAp2wbce98k+xDnEgtuzLyNXYBLEDY0nqChuvolb94B3VV1HsHFUulUyNe92eN6MjQuadDohQ2j5mj7zWs4yQoixgTQPe7Gm/+GHWdgxwM2s9t5opnLHwF90LPiJm6q1NGWLM4aK6JT+2I6FnUGmj2bzB4WIlf55C3aMEBoXTqIzG2U8s2cxkXGebWWqbPlMK/Phsmsvo4POWnidbGHPhBOq0iyPTu7RdSDlNdJdJ+dtdNXkMmltKUS881MQI9T6GcCCKhIKcZrJGGnk0xphlWyl+ublTAO0tbQSVB/K7D3JmCxMv690TPtYUPPhGi+C6VCv3IeutLmNo60mvux3wbGQIDAQAB",
|
|
7
7
|
"permissions": [
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "iframer-toolkit",
|
|
3
|
-
"version": "0.10.
|
|
3
|
+
"version": "0.10.6",
|
|
4
4
|
"description": "Browser access toolkit for AI agents — CLI and MCP server for headless/headful browsing, login flows, and pipeline execution.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"iframer",
|
|
@@ -45,11 +45,8 @@
|
|
|
45
45
|
"test:smoke": "node tests/smoke.js",
|
|
46
46
|
"mcp:install": "node bin/cli.js install-mcp",
|
|
47
47
|
"mcp:remove": "node bin/cli.js remove-mcp",
|
|
48
|
-
"build:cli": "bun build bin/cli.js --target node --format cjs --outfile dist/cli.js --external better-sqlite3 --external patchright --external fingerprint-generator --external @anthropic-ai/sdk --external @modelcontextprotocol/sdk --external zod --external cloakbrowser --external playwright-core",
|
|
49
|
-
"build:mcp": "bun build src/mcp/server.ts --target node --format cjs --outfile dist/mcp-server.cjs --external better-sqlite3 --external patchright --external fingerprint-generator --external @anthropic-ai/sdk --external @modelcontextprotocol/sdk --external zod --external cloakbrowser --external playwright-core",
|
|
50
|
-
"build:local-server": "bun build index.ts --target node --format cjs --outfile dist/local-server.cjs --external better-sqlite3 --external patchright --external fingerprint-generator --external @anthropic-ai/sdk --external @modelcontextprotocol/sdk --external zod --external cloakbrowser --external playwright-core --external express --external ws",
|
|
51
48
|
"build:stamp": "node scripts/stamp-extension-version.mjs",
|
|
52
|
-
"build": "bun run build:stamp &&
|
|
49
|
+
"build": "bun run build:stamp && node scripts/build.mjs",
|
|
53
50
|
"test": "bun test tests/unit",
|
|
54
51
|
"test:extension": "node tests/integration/extension-bridge.mjs",
|
|
55
52
|
"prepublishOnly": "bun run build",
|
|
@@ -74,6 +71,7 @@
|
|
|
74
71
|
"@types/node": "^25.5.0",
|
|
75
72
|
"@types/ws": "^8.5.12",
|
|
76
73
|
"bun-types": "^1.3.11",
|
|
74
|
+
"esbuild": "0.28.2",
|
|
77
75
|
"express": "^4.18.2",
|
|
78
76
|
"tsx": "^4.23.12",
|
|
79
77
|
"typescript": "^6.0.2"
|
package/skills/iframer.md
CHANGED
|
@@ -20,7 +20,8 @@ You are an expert at using the iframer browser automation toolkit. The user want
|
|
|
20
20
|
2. **NEVER guess CSS selectors.** Use `snapshot` to see what's on the page, then use `@e` refs from the snapshot for click/fill/etc.
|
|
21
21
|
3. **NEVER re-store credentials when login fails.** If credentials exist in `credentials list`, they are valid. Login failures are browser-mode or bot-detection problems, not credential problems. Retry with a stronger mode.
|
|
22
22
|
4. **NEVER pass explicit selectors to the login step** unless the auto-detect failed AND you took a snapshot to find the right ones. The login step auto-detects email, password, submit, and OTP fields.
|
|
23
|
-
5.
|
|
23
|
+
5. If headless detects Imperva or Akamai, immediately stop headless and pivot to headed in the same run; do not wait for a block, retry headless, or defer the switch to a future request. Use headed from the outset when the provider is already known in the current task. On detection, switch to headed and use respectful pacing (at least 3 seconds between top-level actions; no parallel bursts or repeated blocked retries). Do not announce the provider or explain the switch unless the user asks why. Only when asked, explain that the site is covered by Imperva or Akamai and iframer adjusts its browser mode and pacing to respect it.
|
|
24
|
+
6. **Let iframer handle mode escalation.** Don't hardcode modes. If you must pick one, prefer no mode (auto-select) or `binary-headful` for sites known to block headless.
|
|
24
25
|
|
|
25
26
|
## How to build pipelines
|
|
26
27
|
|
|
@@ -199,7 +200,7 @@ session: { action: "restart" }
|
|
|
199
200
|
```
|
|
200
201
|
This kills ALL running browser instances (local + Docker) and resets state. Credentials and knowledge cache are NOT affected. The next `execute` call launches a fresh browser automatically.
|
|
201
202
|
|
|
202
|
-
**The execute tool also auto-recovers:** if it detects a crash (connection closed,
|
|
203
|
+
**The execute tool also auto-recovers:** if it detects a *connection-level* crash (connection closed, ECONNREFUSED/ECONNRESET/EPIPE, socket hang up), it restarts the browser server and retries once before reporting failure. Timeouts are deliberately NOT auto-retried — a slow-but-healthy pipeline that hit the client timeout must not be re-run, or non-idempotent steps (form submits, purchases) would double-execute. If auto-recovery fails, or a step timed out, call `session restart` manually and continue from where you left off (don't blindly re-run the whole pipeline).
|
|
203
204
|
|
|
204
205
|
### Manage credentials
|
|
205
206
|
|
|
@@ -274,7 +275,7 @@ Many modern sites don't have email+password on one page. The login step handles
|
|
|
274
275
|
|
|
275
276
|
## Recovering from MCP disconnect
|
|
276
277
|
|
|
277
|
-
The iframer MCP server
|
|
278
|
+
The iframer MCP server does NOT run Chrome — Chrome lives in a separate, shared local background server (the daemon on 127.0.0.1). The MCP process is just a thin HTTP/stdio client. So a browser crash can't take the MCP down with it: if Chrome dies, the daemon's own recovery handles it and the MCP keeps running. A real "MCP disconnected" in Claude Code means the MCP client process itself dropped (session killed, pipe closed), not a browser crash — the daemon and its warm browsers survive that too.
|
|
278
279
|
|
|
279
280
|
**Recovery is simple — Claude Code auto-reconnects MCP servers.** Just wait 2-3 seconds and retry the tool call. Don't:
|
|
280
281
|
- Try to run `claude mcp` commands
|