pi-agent-browser-native 0.5.0 → 0.6.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/CHANGELOG.md +144 -0
- package/README.md +75 -42
- package/dist/extensions/agent-browser/index.js +13 -83
- package/dist/extensions/agent-browser/lib/argv-grammar.js +8 -2
- package/dist/extensions/agent-browser/lib/batch-lifecycle.js +1 -1
- package/dist/extensions/agent-browser/lib/command-policy.js +4 -7
- package/dist/extensions/agent-browser/lib/command-taxonomy.js +19 -11
- package/dist/extensions/agent-browser/lib/config-policy.js +25 -1
- package/dist/extensions/agent-browser/lib/config.js +1 -1
- package/dist/extensions/agent-browser/lib/input-modes/job.js +0 -9
- package/dist/extensions/agent-browser/lib/input-modes/params.js +1 -1
- package/dist/extensions/agent-browser/lib/launch-scoped-flags.js +18 -4
- package/dist/extensions/agent-browser/lib/managed-session-policy-lock.js +3 -138
- package/dist/extensions/agent-browser/lib/managed-session-restore.js +1 -81
- package/dist/extensions/agent-browser/lib/managed-session-storage.js +4 -1
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/diagnostics.js +31 -26
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/final-result.js +60 -8
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/managed-session-daemon-policy.js +1 -4
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/prepare/snapshot-filter.js +119 -2
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/prepare/wait-timeouts.js +7 -6
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/prepare.js +31 -40
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output.js +76 -70
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/session-state.js +6 -8
- package/dist/extensions/agent-browser/lib/orchestration/electron-host/index.js +5 -10
- package/dist/extensions/agent-browser/lib/orchestration/output-file.js +41 -21
- package/dist/extensions/agent-browser/lib/page-target-validation.js +270 -0
- package/dist/extensions/agent-browser/lib/playbook.js +13 -12
- package/dist/extensions/agent-browser/lib/process-identity.js +11 -10
- package/dist/extensions/agent-browser/lib/process.js +18 -82
- package/dist/extensions/agent-browser/lib/recording-reservations.js +11 -78
- package/dist/extensions/agent-browser/lib/results/action-recommendations.js +1 -1
- package/dist/extensions/agent-browser/lib/results/presentation/batch.js +27 -14
- package/dist/extensions/agent-browser/lib/results/presentation/common.js +20 -2
- package/dist/extensions/agent-browser/lib/results/presentation/diagnostics.js +11 -16
- package/dist/extensions/agent-browser/lib/results/presentation/navigation.js +12 -9
- package/dist/extensions/agent-browser/lib/results/presentation/registry.js +2 -2
- package/dist/extensions/agent-browser/lib/results/presentation.js +31 -4
- package/dist/extensions/agent-browser/lib/results/recovery-actions.js +1 -1
- package/dist/extensions/agent-browser/lib/results/recovery-next-actions.js +9 -0
- package/dist/extensions/agent-browser/lib/results/selector-recovery.js +3 -3
- package/dist/extensions/agent-browser/lib/results/snapshot-spill.js +2 -1
- package/dist/extensions/agent-browser/lib/results/snapshot.js +4 -4
- package/dist/extensions/agent-browser/lib/runtime.js +73 -72
- package/dist/extensions/agent-browser/lib/session-page-state.js +12 -3
- package/dist/extensions/agent-browser/lib/temp.js +1 -2
- package/dist/extensions/agent-browser/lib/upstream-version.js +5 -5
- package/dist/extensions/agent-browser/lib/web-search.js +108 -24
- package/dist/scripts/agent-browser-target.mjs +19 -1
- package/docs/ARCHITECTURE.md +24 -20
- package/docs/COMMAND_REFERENCE.md +181 -49
- package/docs/ELECTRON.md +2 -2
- package/docs/RELEASE.md +10 -8
- package/docs/REQUIREMENTS.md +8 -7
- package/docs/SUPPORT_MATRIX.md +31 -26
- package/docs/TOOL_CONTRACT.md +89 -56
- package/package.json +1 -1
- package/scripts/agent-browser-capability-baseline.mjs +65 -5
- package/scripts/agent-browser-target.mjs +19 -1
- package/scripts/config.mjs +1 -0
- package/scripts/doctor.mjs +15 -9
- package/dist/extensions/agent-browser/lib/managed-session-capabilities.js +0 -20
- package/dist/extensions/agent-browser/lib/managed-session-state-policy.js +0 -601
- package/dist/extensions/agent-browser/lib/navigation-policy.js +0 -78
- package/dist/extensions/agent-browser/lib/results/presentation/managed-list-filter.js +0 -37
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Responsibilities: Combine the canonical target from agent-browser-target.mjs with sampled help commands and verifier/doc token expectations.
|
|
4
4
|
* Scope: Versioned capability metadata only; it does not execute agent-browser or validate documentation by itself.
|
|
5
5
|
* Usage: Imported by command-reference verifier, generated docs checker, and tests when upstream agent-browser is re-baselined; runtime imports only agent-browser-target.mjs.
|
|
6
|
-
* Invariants/Assumptions: This package
|
|
6
|
+
* Invariants/Assumptions: This package documents the current recommended upstream release, accepts stable runtimes at or above the configured floor, and does not add version-specific compatibility shims.
|
|
7
7
|
* Related: `docs/SUPPORT_MATRIX.md` maps `CAPABILITY_BASELINE.inventorySections` to human docs, runtime behavior, tests, and verification gates; refresh that matrix whenever this baseline changes.
|
|
8
8
|
*/
|
|
9
9
|
|
|
@@ -16,8 +16,8 @@ export const COMMAND_REFERENCE_BASELINE_BLOCK_IDS = Object.freeze(["upstream-bas
|
|
|
16
16
|
|
|
17
17
|
const sourceEvidence = Object.freeze({
|
|
18
18
|
repository: "vercel-labs/agent-browser",
|
|
19
|
-
upstreamHead: "
|
|
20
|
-
upstreamPackageVersion: "0.
|
|
19
|
+
upstreamHead: "eb05921bad874cd2a1b4fa5d1149f1ed26576cae",
|
|
20
|
+
upstreamPackageVersion: "0.36.0",
|
|
21
21
|
inspectedSources: Object.freeze([
|
|
22
22
|
"agent-browser --version",
|
|
23
23
|
"agent-browser --help",
|
|
@@ -28,10 +28,14 @@ const sourceEvidence = Object.freeze({
|
|
|
28
28
|
"agent-browser skills list",
|
|
29
29
|
"agent-browser skills get core --full",
|
|
30
30
|
"agent-browser skills get derive-client --full",
|
|
31
|
+
"agent-browser skills get webmcp-gen --full",
|
|
31
32
|
"README.md",
|
|
32
33
|
"CHANGELOG.md",
|
|
33
34
|
"agent-browser.schema.json",
|
|
35
|
+
"bin/agent-browser.js",
|
|
36
|
+
"cli/src/ca_bundle.rs",
|
|
34
37
|
"cli/src/commands.rs",
|
|
38
|
+
"cli/src/mcp.rs",
|
|
35
39
|
"cli/src/flags.rs",
|
|
36
40
|
"cli/src/read.rs",
|
|
37
41
|
"cli/src/doctor/webgpu.rs",
|
|
@@ -40,14 +44,25 @@ const sourceEvidence = Object.freeze({
|
|
|
40
44
|
"cli/src/native/browser.rs",
|
|
41
45
|
"cli/src/native/tab_binding.rs",
|
|
42
46
|
"cli/src/native/daemon.rs",
|
|
47
|
+
"cli/src/native/element.rs",
|
|
48
|
+
"cli/src/native/stream/cdp_loop.rs",
|
|
49
|
+
"cli/src/native/stream/dashboard.rs",
|
|
50
|
+
"cli/src/native/test_fixtures/webmcp_frame_probe.html",
|
|
51
|
+
"cli/src/native/test_fixtures/webmcp_probe.html",
|
|
52
|
+
"cli/src/native/webmcp.rs",
|
|
43
53
|
"cli/src/output.rs",
|
|
44
54
|
"docs/src/app/webgpu/page.mdx",
|
|
55
|
+
"docs/src/app/webmcp/page.mdx",
|
|
45
56
|
"docs/src/app/network/page.mdx",
|
|
57
|
+
"docs/src/app/proxy/page.mdx",
|
|
46
58
|
"docs/src/app/selectors/page.mdx",
|
|
47
59
|
"docs/src/app/skills/page.mdx",
|
|
48
60
|
"docs/src/app/commands/page.mdx",
|
|
49
61
|
"skill-data/derive-client/SKILL.md",
|
|
50
62
|
"skill-data/core/SKILL.md",
|
|
63
|
+
"skill-data/protected-vercel-deployments/SKILL.md",
|
|
64
|
+
"skill-data/webmcp-gen/SKILL.md",
|
|
65
|
+
"test/launcher.test.mjs",
|
|
51
66
|
"packages/@agent-browser/eve/README.md",
|
|
52
67
|
"packages/@agent-browser/eve/package.json",
|
|
53
68
|
"packages/@agent-browser/eve/test/extension.test.mjs",
|
|
@@ -75,6 +90,8 @@ const helpCommands = Object.freeze([
|
|
|
75
90
|
helpCommand("skills list", ["skills", "list"]),
|
|
76
91
|
helpCommand("core skill full", ["skills", "get", "core", "--full"]),
|
|
77
92
|
helpCommand("vercel sandbox skill full", ["skills", "get", "vercel-sandbox", "--full"]),
|
|
93
|
+
helpCommand("protected Vercel deployments skill full", ["skills", "get", "protected-vercel-deployments", "--full"]),
|
|
94
|
+
helpCommand("WebMCP generation skill full", ["skills", "get", "webmcp-gen", "--full"]),
|
|
78
95
|
helpCommand("open help", ["open", "--help"]),
|
|
79
96
|
helpCommand("read help", ["read", "--help"]),
|
|
80
97
|
helpCommand("click help", ["click", "--help"]),
|
|
@@ -143,8 +160,11 @@ const inventorySections = Object.freeze([
|
|
|
143
160
|
"skills get slack",
|
|
144
161
|
"skills get dogfood",
|
|
145
162
|
"skills get vercel-sandbox",
|
|
163
|
+
"skills get protected-vercel-deployments",
|
|
146
164
|
"skills get agentcore",
|
|
147
165
|
"skills get derive-client",
|
|
166
|
+
"skills get webmcp-gen",
|
|
167
|
+
"webmcp.init.js",
|
|
148
168
|
"@agent-browser/sandbox",
|
|
149
169
|
"installSystemDependencies: false",
|
|
150
170
|
"skills path [name]",
|
|
@@ -160,10 +180,16 @@ const inventorySections = Object.freeze([
|
|
|
160
180
|
["skills list", "slack"],
|
|
161
181
|
["skills list", "dogfood"],
|
|
162
182
|
["skills list", "vercel-sandbox"],
|
|
183
|
+
["skills list", "protected-vercel-deployments"],
|
|
163
184
|
["skills list", "agentcore"],
|
|
164
185
|
["skills list", "derive-client"],
|
|
186
|
+
["skills list", "webmcp-gen"],
|
|
187
|
+
["WebMCP generation skill full", "webmcp.init.js"],
|
|
188
|
+
["WebMCP generation skill full", "agent-browser webmcp invoke <tool> --params @fixture.json"],
|
|
165
189
|
["vercel sandbox skill full", "@agent-browser/sandbox"],
|
|
166
190
|
["vercel sandbox skill full", "installSystemDependencies: false"],
|
|
191
|
+
["protected Vercel deployments skill full", "x-vercel-trusted-oidc-idp-token"],
|
|
192
|
+
["protected Vercel deployments skill full", "vc project token"],
|
|
167
193
|
["core skill full", "agent-browser frame @e3"],
|
|
168
194
|
["core skill full", "agent-browser dialog accept"],
|
|
169
195
|
["core skill full", "agent-browser --session \"$SESSION\" --restore open https://app.example.com"],
|
|
@@ -424,6 +450,14 @@ const inventorySections = Object.freeze([
|
|
|
424
450
|
"cookies set <name> <value> --url <url> --domain <domain> --path <path> --httpOnly --secure --sameSite <Strict|Lax|None> --expires <timestamp>",
|
|
425
451
|
"cookies set --curl <file>",
|
|
426
452
|
"storage <local|session>",
|
|
453
|
+
"webmcp list",
|
|
454
|
+
"webmcp invoke <tool>",
|
|
455
|
+
"webmcp invoke <tool> --params <json|@file>",
|
|
456
|
+
"webmcp invoke <tool> --frame <frame-id>",
|
|
457
|
+
"webmcp invoke <tool> --detach",
|
|
458
|
+
"webmcp invoke <tool> --timeout <ms>",
|
|
459
|
+
"webmcp result <id>",
|
|
460
|
+
"webmcp cancel <id>",
|
|
427
461
|
"diff snapshot",
|
|
428
462
|
"diff snapshot --baseline <file> --selector <sel> --compact --depth <n>",
|
|
429
463
|
"diff screenshot --baseline",
|
|
@@ -471,6 +505,13 @@ const inventorySections = Object.freeze([
|
|
|
471
505
|
root("cookies [get|set|clear]"),
|
|
472
506
|
root("cookies set --curl <file>"),
|
|
473
507
|
root("storage <local|session>"),
|
|
508
|
+
root("webmcp list"),
|
|
509
|
+
root("webmcp invoke <tool>"),
|
|
510
|
+
root("--params <json|@file>"),
|
|
511
|
+
root("--frame <frame-id>"),
|
|
512
|
+
root("--detach"),
|
|
513
|
+
root("webmcp result <id>"),
|
|
514
|
+
root("webmcp cancel <id>"),
|
|
474
515
|
root("diff snapshot"),
|
|
475
516
|
root("diff screenshot --baseline"),
|
|
476
517
|
root("trace start"),
|
|
@@ -542,6 +583,8 @@ const inventorySections = Object.freeze([
|
|
|
542
583
|
"chat <message>",
|
|
543
584
|
"dashboard [start]",
|
|
544
585
|
"dashboard start --port <n>",
|
|
586
|
+
"dashboard start --allowed-origins <origins>",
|
|
587
|
+
"AGENT_BROWSER_DASHBOARD_ALLOWED_ORIGINS",
|
|
545
588
|
"dashboard stop",
|
|
546
589
|
"device list",
|
|
547
590
|
"install",
|
|
@@ -554,6 +597,7 @@ const inventorySections = Object.freeze([
|
|
|
554
597
|
"doctor --webgpu --headed",
|
|
555
598
|
"doctor --json",
|
|
556
599
|
"mcp",
|
|
600
|
+
"mcp --tools core,webmcp",
|
|
557
601
|
"plugin add <ref>",
|
|
558
602
|
"plugin [list]",
|
|
559
603
|
"plugin show <name>",
|
|
@@ -569,6 +613,9 @@ const inventorySections = Object.freeze([
|
|
|
569
613
|
root("deny <id>"),
|
|
570
614
|
root("chat <message>"),
|
|
571
615
|
root("dashboard start --port <n>"),
|
|
616
|
+
root("dashboard start --allowed-origins <origins>"),
|
|
617
|
+
["dashboard help", "--allowed-origins <origins>"],
|
|
618
|
+
["dashboard help", "AGENT_BROWSER_DASHBOARD_ALLOWED_ORIGINS"],
|
|
572
619
|
["device help", "device list"],
|
|
573
620
|
root("install --with-deps"),
|
|
574
621
|
["install help", "fails if deps fail"],
|
|
@@ -653,6 +700,10 @@ const inventorySections = Object.freeze([
|
|
|
653
700
|
"NO_PROXY",
|
|
654
701
|
"--ignore-https-errors",
|
|
655
702
|
"AGENT_BROWSER_IGNORE_HTTPS_ERRORS",
|
|
703
|
+
"--ca-cert <path>",
|
|
704
|
+
"--no-ca-cert",
|
|
705
|
+
"AGENT_BROWSER_CA_CERT",
|
|
706
|
+
"AGENT_BROWSER_CLEAR_CA_CERT",
|
|
656
707
|
"--allow-file-access",
|
|
657
708
|
"AGENT_BROWSER_ALLOW_FILE_ACCESS",
|
|
658
709
|
"--hide-scrollbars <bool>",
|
|
@@ -660,9 +711,12 @@ const inventorySections = Object.freeze([
|
|
|
660
711
|
"AGENT_BROWSER_HEADED",
|
|
661
712
|
"--webgpu",
|
|
662
713
|
"AGENT_BROWSER_WEBGPU",
|
|
714
|
+
"--no-webmcp",
|
|
715
|
+
"AGENT_BROWSER_NO_WEBMCP",
|
|
716
|
+
"noWebmcp",
|
|
663
717
|
"AGENT_BROWSER_NO_XVFB",
|
|
664
718
|
"\"webgpu\": true",
|
|
665
|
-
"--cdp <port>",
|
|
719
|
+
"--cdp <port|url>",
|
|
666
720
|
"--color-scheme <scheme>",
|
|
667
721
|
"AGENT_BROWSER_COLOR_SCHEME",
|
|
668
722
|
"--download-path <path>",
|
|
@@ -799,6 +853,10 @@ const inventorySections = Object.freeze([
|
|
|
799
853
|
root("NO_PROXY"),
|
|
800
854
|
root("--ignore-https-errors"),
|
|
801
855
|
root("AGENT_BROWSER_IGNORE_HTTPS_ERRORS"),
|
|
856
|
+
root("--ca-cert <path>"),
|
|
857
|
+
root("--no-ca-cert"),
|
|
858
|
+
root("AGENT_BROWSER_CA_CERT"),
|
|
859
|
+
root("AGENT_BROWSER_CLEAR_CA_CERT"),
|
|
802
860
|
root("--allow-file-access"),
|
|
803
861
|
root("AGENT_BROWSER_ALLOW_FILE_ACCESS"),
|
|
804
862
|
root("--hide-scrollbars <bool>"),
|
|
@@ -806,7 +864,9 @@ const inventorySections = Object.freeze([
|
|
|
806
864
|
root("AGENT_BROWSER_HEADED"),
|
|
807
865
|
root("--webgpu"),
|
|
808
866
|
root("AGENT_BROWSER_WEBGPU"),
|
|
809
|
-
root("--
|
|
867
|
+
root("--no-webmcp"),
|
|
868
|
+
root("AGENT_BROWSER_NO_WEBMCP"),
|
|
869
|
+
root("--cdp <port|url>"),
|
|
810
870
|
root("--color-scheme <scheme>"),
|
|
811
871
|
root("AGENT_BROWSER_COLOR_SCHEME"),
|
|
812
872
|
root("--download-path <path>"),
|
|
@@ -1,3 +1,21 @@
|
|
|
1
1
|
export const TARGET_AGENT_BROWSER_SOURCE = "scripts/agent-browser-target.mjs";
|
|
2
|
-
export const TARGET_AGENT_BROWSER_VERSION = "0.
|
|
2
|
+
export const TARGET_AGENT_BROWSER_VERSION = "0.36.0";
|
|
3
3
|
export const TARGET_AGENT_BROWSER_VERSION_LABEL = `agent-browser ${TARGET_AGENT_BROWSER_VERSION}`;
|
|
4
|
+
export const MINIMUM_AGENT_BROWSER_VERSION = "0.35.0";
|
|
5
|
+
export const MINIMUM_AGENT_BROWSER_VERSION_LABEL = `agent-browser ${MINIMUM_AGENT_BROWSER_VERSION}`;
|
|
6
|
+
export const SUPPORTED_AGENT_BROWSER_VERSION_LABEL = `${MINIMUM_AGENT_BROWSER_VERSION_LABEL} or newer`;
|
|
7
|
+
|
|
8
|
+
function stableVersionParts(version) {
|
|
9
|
+
const match = /^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)$/.exec(version);
|
|
10
|
+
return match?.slice(1).map(Number);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export function isSupportedAgentBrowserVersion(version) {
|
|
14
|
+
const actual = stableVersionParts(version);
|
|
15
|
+
const minimum = stableVersionParts(MINIMUM_AGENT_BROWSER_VERSION);
|
|
16
|
+
if (!actual || !minimum) return false;
|
|
17
|
+
for (let index = 0; index < minimum.length; index += 1) {
|
|
18
|
+
if (actual[index] !== minimum[index]) return actual[index] > minimum[index];
|
|
19
|
+
}
|
|
20
|
+
return true;
|
|
21
|
+
}
|
package/scripts/config.mjs
CHANGED
|
@@ -169,6 +169,7 @@ function printStatus() {
|
|
|
169
169
|
console.log("Effective config:");
|
|
170
170
|
console.log(` webSearch.enabled: ${state.webSearchEnabled ? "true" : "false"}`);
|
|
171
171
|
console.log(` webSearch.preferredProvider: ${state.config.webSearch?.preferredProvider ?? `auto (default ${DEFAULT_WEB_SEARCH_PROVIDER})`}`);
|
|
172
|
+
console.log(` webSearch.defaultSearchType: ${state.config.webSearch?.defaultSearchType ?? "not configured (Exa auto)"}`);
|
|
172
173
|
for (const provider of WEB_SEARCH_PROVIDERS) {
|
|
173
174
|
const field = getWebSearchProviderConfigKey(provider);
|
|
174
175
|
console.log(` webSearch.${field}: ${getCredentialSourceSummary(state.webSearchCredentialSources[provider], provider)}`);
|
package/scripts/doctor.mjs
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Responsibilities: Check upstream agent-browser PATH/version, inspect Pi settings for duplicate package/checkout sources, and print actionable remediation.
|
|
5
5
|
* Scope: Read-only package diagnostics only; upstream browser runtime health remains the responsibility of upstream `agent-browser doctor`.
|
|
6
6
|
* Usage: Run via `pi-agent-browser-doctor`, `npm exec --package pi-agent-browser-native -- pi-agent-browser-doctor`, or `npm run doctor` from this repository.
|
|
7
|
-
* Invariants/Assumptions: The wrapper
|
|
7
|
+
* Invariants/Assumptions: The wrapper recommends TARGET_AGENT_BROWSER_VERSION, enforces the configured stable version floor, does not bundle agent-browser, and must not edit Pi settings or run fixing commands.
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
import { execFile as execFileCallback } from "node:child_process";
|
|
@@ -16,7 +16,7 @@ import { fileURLToPath } from "node:url";
|
|
|
16
16
|
import { promisify } from "node:util";
|
|
17
17
|
|
|
18
18
|
import { CAPABILITY_BASELINE_SOURCE } from "./agent-browser-capability-baseline.mjs";
|
|
19
|
-
import { TARGET_AGENT_BROWSER_SOURCE, TARGET_AGENT_BROWSER_VERSION } from "./agent-browser-target.mjs";
|
|
19
|
+
import { MINIMUM_AGENT_BROWSER_VERSION, TARGET_AGENT_BROWSER_SOURCE, TARGET_AGENT_BROWSER_VERSION, isSupportedAgentBrowserVersion } from "./agent-browser-target.mjs";
|
|
20
20
|
|
|
21
21
|
const execFile = promisify(execFileCallback);
|
|
22
22
|
const PACKAGE_NAME = "pi-agent-browser-native";
|
|
@@ -25,7 +25,7 @@ const EXTENSION_ENTRYPOINTS = Object.freeze([
|
|
|
25
25
|
"extensions/agent-browser/index.ts",
|
|
26
26
|
"dist/extensions/agent-browser/index.js",
|
|
27
27
|
]);
|
|
28
|
-
const
|
|
28
|
+
const RECOMMENDED_VERSION = TARGET_AGENT_BROWSER_VERSION;
|
|
29
29
|
const MINIMUM_PI_VERSION = "0.84.0";
|
|
30
30
|
const DEFAULT_AGENT_DIR = resolve(homedir(), ".pi/agent");
|
|
31
31
|
const THIS_PACKAGE_ROOT = resolve(dirname(fileURLToPath(import.meta.url)), "..");
|
|
@@ -70,7 +70,7 @@ Options:
|
|
|
70
70
|
|
|
71
71
|
Checks:
|
|
72
72
|
1. agent-browser is installed on PATH.
|
|
73
|
-
2. agent-browser --version
|
|
73
|
+
2. agent-browser --version is supported by this package.
|
|
74
74
|
3. pi --version is at least the minimum Pi runtime version for this release.
|
|
75
75
|
4. Pi settings and repo-local autoload locations do not point at multiple active pi-agent-browser-native sources.
|
|
76
76
|
|
|
@@ -341,17 +341,23 @@ async function checkAgentBrowserVersion({ runAgentBrowser }) {
|
|
|
341
341
|
try {
|
|
342
342
|
const rawOutput = await runAgentBrowser(["--version"]);
|
|
343
343
|
const version = normalizeAgentBrowserVersion(rawOutput);
|
|
344
|
-
if (version
|
|
344
|
+
if (!isSupportedAgentBrowserVersion(version)) {
|
|
345
345
|
return {
|
|
346
346
|
status: "fail",
|
|
347
|
-
title: `agent-browser version drift:
|
|
347
|
+
title: `agent-browser version drift: minimum supported ${MINIMUM_AGENT_BROWSER_VERSION}; found ${version || "<empty>"}.`,
|
|
348
348
|
lines: [
|
|
349
|
-
`This wrapper
|
|
350
|
-
`Update upstream agent-browser to ${
|
|
349
|
+
`This wrapper supports stable agent-browser versions at or above ${MINIMUM_AGENT_BROWSER_VERSION}; ${RECOMMENDED_VERSION} is the current recommendation from ${TARGET_AGENT_BROWSER_SOURCE}.`,
|
|
350
|
+
`Update upstream agent-browser to ${RECOMMENDED_VERSION}, or if you intentionally re-baselined upstream, update ${TARGET_AGENT_BROWSER_SOURCE} plus ${CAPABILITY_BASELINE_SOURCE}, run \`npm run docs -- command-reference write\`, refresh docs/COMMAND_REFERENCE.md, and rerun \`npm run verify -- command-reference\` plus \`npm run verify -- real-upstream\` with test/fixtures/agent-browser-real-output-shapes.json aligned to the new target version.`,
|
|
351
351
|
],
|
|
352
352
|
};
|
|
353
353
|
}
|
|
354
|
-
return {
|
|
354
|
+
return {
|
|
355
|
+
status: "pass",
|
|
356
|
+
title: version === RECOMMENDED_VERSION
|
|
357
|
+
? `agent-browser version matches recommended baseline: ${version}`
|
|
358
|
+
: `agent-browser version meets supported floor: ${version} (recommended ${RECOMMENDED_VERSION})`,
|
|
359
|
+
lines: [],
|
|
360
|
+
};
|
|
355
361
|
} catch (error) {
|
|
356
362
|
const code = error && typeof error === "object" ? error.code : undefined;
|
|
357
363
|
return {
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
const MANAGED_SESSION_RESTORE_KEY_PATTERN = /piab-r(?:2)?-[a-f\d]{32}/gi;
|
|
2
|
-
const MANAGED_SESSION_RESTORE_KEY_EXACT_PATTERN = /^piab-r2-[a-f\d]{32}$/i;
|
|
3
|
-
const WRAPPER_MANAGED_SESSION_PREFIX = "piab-";
|
|
4
|
-
export function isWrapperManagedSessionName(value) {
|
|
5
|
-
return typeof value === "string" && value.toLowerCase().startsWith(WRAPPER_MANAGED_SESSION_PREFIX);
|
|
6
|
-
}
|
|
7
|
-
export function isManagedSessionRestoreKey(value) {
|
|
8
|
-
return typeof value === "string" && MANAGED_SESSION_RESTORE_KEY_EXACT_PATTERN.test(value);
|
|
9
|
-
}
|
|
10
|
-
export function extractManagedSessionRestoreKeys(value) {
|
|
11
|
-
return [...new Set(value.match(MANAGED_SESSION_RESTORE_KEY_PATTERN)?.map((key) => key.toLowerCase()) ?? [])];
|
|
12
|
-
}
|
|
13
|
-
export function containsManagedSessionRestoreKey(value) {
|
|
14
|
-
MANAGED_SESSION_RESTORE_KEY_PATTERN.lastIndex = 0;
|
|
15
|
-
return MANAGED_SESSION_RESTORE_KEY_PATTERN.test(value);
|
|
16
|
-
}
|
|
17
|
-
export function redactManagedSessionRestoreKeys(value) {
|
|
18
|
-
MANAGED_SESSION_RESTORE_KEY_PATTERN.lastIndex = 0;
|
|
19
|
-
return value.replace(MANAGED_SESSION_RESTORE_KEY_PATTERN, "[REDACTED MANAGED STATE]");
|
|
20
|
-
}
|