pi-agent-browser-native 0.9.4 → 0.9.5

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.
Files changed (52) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/README.md +58 -813
  3. package/dist/extensions/agent-browser/index.js +927 -883
  4. package/dist/extensions/agent-browser/lib/browser-execution-claims.js +5 -5
  5. package/dist/extensions/agent-browser/lib/config-policy.js +1 -1
  6. package/dist/extensions/agent-browser/lib/config-validation.js +21 -8
  7. package/dist/extensions/agent-browser/lib/config.js +1 -1
  8. package/dist/extensions/agent-browser/lib/electron/cdp.js +5 -1
  9. package/dist/extensions/agent-browser/lib/electron/cleanup.js +13 -47
  10. package/dist/extensions/agent-browser/lib/electron/discovery-evidence.js +1 -0
  11. package/dist/extensions/agent-browser/lib/electron/launch.js +12 -1
  12. package/dist/extensions/agent-browser/lib/fs-utils.js +1 -9
  13. package/dist/extensions/agent-browser/lib/input-modes/job.js +7 -4
  14. package/dist/extensions/agent-browser/lib/input-modes/lookup-network-evidence.js +15 -3
  15. package/dist/extensions/agent-browser/lib/input-modes/lookups.js +3 -2
  16. package/dist/extensions/agent-browser/lib/input-modes/params.js +23 -23
  17. package/dist/extensions/agent-browser/lib/orchestration/browser-run/electron-observation.js +9 -8
  18. package/dist/extensions/agent-browser/lib/orchestration/browser-run/final-result-electron.js +8 -0
  19. package/dist/extensions/agent-browser/lib/orchestration/browser-run/prepare/scroll-shims.js +2 -2
  20. package/dist/extensions/agent-browser/lib/orchestration/browser-run/prepare/snapshot-filter.js +9 -0
  21. package/dist/extensions/agent-browser/lib/orchestration/browser-run/session-state-electron.js +4 -2
  22. package/dist/extensions/agent-browser/lib/orchestration/browser-run/session-state-refs.js +9 -11
  23. package/dist/extensions/agent-browser/lib/orchestration/electron-host/branch.js +1 -0
  24. package/dist/extensions/agent-browser/lib/orchestration/electron-host/probe-collection.js +5 -6
  25. package/dist/extensions/agent-browser/lib/orchestration/electron-host/probe-data.js +4 -2
  26. package/dist/extensions/agent-browser/lib/orchestration/electron-host/probe-presentation.js +20 -2
  27. package/dist/extensions/agent-browser/lib/orchestration/electron-host/status.js +4 -2
  28. package/dist/extensions/agent-browser/lib/orchestration/execution-queue.js +1 -1
  29. package/dist/extensions/agent-browser/lib/results/presentation/skills.js +7 -2
  30. package/dist/extensions/agent-browser/lib/temp-artifact-budget.js +4 -1
  31. package/dist/extensions/agent-browser/lib/temp-root.js +22 -18
  32. package/dist/extensions/agent-browser/lib/temp.js +1 -1
  33. package/dist/extensions/agent-browser/lib/web-search-providers.js +0 -36
  34. package/dist/extensions/agent-browser/lib/web-search-request.js +20 -26
  35. package/dist/extensions/agent-browser/lib/web-search-schema.js +5 -5
  36. package/dist/extensions/agent-browser/lib/web-search.js +22 -4
  37. package/docs/ARCHITECTURE.md +3 -2
  38. package/docs/CODE_QUALITY.md +28 -3
  39. package/docs/COMMAND_REFERENCE.md +20 -20
  40. package/docs/ELECTRON.md +24 -2
  41. package/docs/REFERENCE.md +869 -0
  42. package/docs/RELEASE.md +9 -9
  43. package/docs/REQUIREMENTS.md +1 -1
  44. package/docs/SUPPORT_MATRIX.md +9 -8
  45. package/docs/TOOL_CONTRACT.md +13 -9
  46. package/docs/platform-smoke.md +3 -3
  47. package/package.json +3 -2
  48. package/scripts/config.mjs +23 -19
  49. package/scripts/doctor.mjs +2 -2
  50. package/scripts/platform-smoke/lease-evidence.mjs +2 -4
  51. package/scripts/platform-smoke/linux-image/Dockerfile +8 -2
  52. package/scripts/platform-smoke/targets.mjs +1 -5
@@ -35,6 +35,7 @@ const {
35
35
  getWebSearchProviderLabel,
36
36
  isWebSearchProvider,
37
37
  loadAgentBrowserConfigStateSync,
38
+ parseAgentBrowserConfigJson,
38
39
  summarizeConfigFiles,
39
40
  } = await loadConfigPolicyModule();
40
41
 
@@ -51,22 +52,22 @@ function usage() {
51
52
  return `pi-agent-browser-native config helper
52
53
 
53
54
  Usage through npm exec:
54
- npm exec --yes --package pi-agent-browser-native@latest -- pi-agent-browser-config paths
55
- npm exec --yes --package pi-agent-browser-native@latest -- pi-agent-browser-config show
56
- npm exec --yes --package pi-agent-browser-native@latest -- pi-agent-browser-config web-search status
57
- npm exec --yes --package pi-agent-browser-native@latest -- pi-agent-browser-config web-search set-key --stdin --provider <exa|brave> [--global|--project]
58
- npm exec --yes --package pi-agent-browser-native@latest -- pi-agent-browser-config web-search set-env <ENV_VAR> [--provider brave|exa] [--global|--project]
59
- npm exec --yes --package pi-agent-browser-native@latest -- pi-agent-browser-config web-search set-command <command> --provider <exa|brave> [--global|--project]
60
- npm exec --yes --package pi-agent-browser-native@latest -- pi-agent-browser-config web-search clear --provider <exa|brave|all> [--global|--project]
61
- npm exec --yes --package pi-agent-browser-native@latest -- pi-agent-browser-config web-search prefer <exa|brave|auto> [--global|--project]
62
- npm exec --yes --package pi-agent-browser-native@latest -- pi-agent-browser-config web-search enable [--global|--project]
63
- npm exec --yes --package pi-agent-browser-native@latest -- pi-agent-browser-config web-search disable [--global|--project]
64
- npm exec --yes --package pi-agent-browser-native@latest -- pi-agent-browser-config browser profile status
65
- npm exec --yes --package pi-agent-browser-native@latest -- pi-agent-browser-config browser profile set <name|path> [--policy explicit-only|authenticated-only|always] [--global|--project]
66
- npm exec --yes --package pi-agent-browser-native@latest -- pi-agent-browser-config browser profile clear [--global|--project]
67
- npm exec --yes --package pi-agent-browser-native@latest -- pi-agent-browser-config browser executable status
68
- npm exec --yes --package pi-agent-browser-native@latest -- pi-agent-browser-config browser executable set <path> [--global|--project]
69
- npm exec --yes --package pi-agent-browser-native@latest -- pi-agent-browser-config browser executable clear [--global|--project]
55
+ npm exec --yes --package pi-agent-browser-native -- pi-agent-browser-config paths
56
+ npm exec --yes --package pi-agent-browser-native -- pi-agent-browser-config show
57
+ npm exec --yes --package pi-agent-browser-native -- pi-agent-browser-config web-search status
58
+ npm exec --yes --package pi-agent-browser-native -- pi-agent-browser-config web-search set-key --stdin --provider <exa|brave> [--global|--project]
59
+ npm exec --yes --package pi-agent-browser-native -- pi-agent-browser-config web-search set-env <ENV_VAR> [--provider brave|exa] [--global|--project]
60
+ npm exec --yes --package pi-agent-browser-native -- pi-agent-browser-config web-search set-command <command> --provider <exa|brave> [--global|--project]
61
+ npm exec --yes --package pi-agent-browser-native -- pi-agent-browser-config web-search clear --provider <exa|brave|all> [--global|--project]
62
+ npm exec --yes --package pi-agent-browser-native -- pi-agent-browser-config web-search prefer <exa|brave|auto> [--global|--project]
63
+ npm exec --yes --package pi-agent-browser-native -- pi-agent-browser-config web-search enable [--global|--project]
64
+ npm exec --yes --package pi-agent-browser-native -- pi-agent-browser-config web-search disable [--global|--project]
65
+ npm exec --yes --package pi-agent-browser-native -- pi-agent-browser-config browser profile status
66
+ npm exec --yes --package pi-agent-browser-native -- pi-agent-browser-config browser profile set <name|path> [--policy explicit-only|authenticated-only|always] [--global|--project]
67
+ npm exec --yes --package pi-agent-browser-native -- pi-agent-browser-config browser profile clear [--global|--project]
68
+ npm exec --yes --package pi-agent-browser-native -- pi-agent-browser-config browser executable status
69
+ npm exec --yes --package pi-agent-browser-native -- pi-agent-browser-config browser executable set <path> [--global|--project]
70
+ npm exec --yes --package pi-agent-browser-native -- pi-agent-browser-config browser executable clear [--global|--project]
70
71
 
71
72
  Notes:
72
73
  Global config: ~/.pi/config/pi-agent-browser-native/config.json
@@ -111,11 +112,14 @@ function readConfig(path) {
111
112
  if (!existsSync(path)) {
112
113
  return { ...DEFAULT_CONFIG };
113
114
  }
114
- const parsed = JSON.parse(readFileSync(path, "utf8"));
115
- if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
115
+ const parsed = parseAgentBrowserConfigJson(readFileSync(path, "utf8"));
116
+ if (!parsed.ok) {
117
+ throw new Error(`${path}: ${parsed.error}`);
118
+ }
119
+ if (!parsed.value || typeof parsed.value !== "object" || Array.isArray(parsed.value)) {
116
120
  throw new Error(`${path} must contain a JSON object.`);
117
121
  }
118
- return { ...DEFAULT_CONFIG, ...parsed };
122
+ return { ...DEFAULT_CONFIG, ...parsed.value };
119
123
  }
120
124
 
121
125
  function writeConfig(path, config) {
@@ -33,13 +33,13 @@ const DEFAULT_AGENT_DIR = resolve(homedir(), ".pi/agent");
33
33
  /** @typedef {{readonly checks: readonly DoctorCheck[], readonly failures: readonly DoctorCheck[], readonly warnings: readonly string[]}} DoctorReport */
34
34
  /** @typedef {{readonly cwd?: string, readonly agentDir?: string, readonly settingsPaths?: readonly string[], readonly skipSourceCheck?: boolean, readonly readText?: (path: string) => Promise<string | undefined>, readonly pathExists?: (path: string) => Promise<boolean>, readonly runAgentBrowser?: (args: readonly string[]) => Promise<string>, readonly runPi?: (args: readonly string[]) => Promise<string>}} DoctorOptions */
35
35
 
36
- export function normalizeAgentBrowserVersion(output) {
36
+ function normalizeAgentBrowserVersion(output) {
37
37
  return String(output ?? "")
38
38
  .trim()
39
39
  .replace(/^agent-browser\s+/, "");
40
40
  }
41
41
 
42
- export function normalizePiVersion(output) {
42
+ function normalizePiVersion(output) {
43
43
  return String(output ?? "")
44
44
  .trim()
45
45
  .replace(/^pi\s+/, "");
@@ -13,6 +13,8 @@ import {
13
13
  } from "./suite-evidence.mjs";
14
14
  import { resolve } from "node:path";
15
15
 
16
+ /** @typedef {{readonly code: number | null, readonly signal: string | null, readonly stdout?: string, readonly stderr?: string}} ProcessReceipt */
17
+ /** @param {{readonly config: {readonly artifactRoot: string, readonly packageName: string, readonly [key: string]: unknown}, readonly targetName: string, readonly leaseId: string, readonly stopResult: ProcessReceipt, readonly staleCleanupResult?: ProcessReceipt | null, readonly runId?: string}} options */
16
18
  export function createLeaseCleanupResult({
17
19
  config,
18
20
  targetName,
@@ -83,10 +85,6 @@ export function createLeaseCleanupResult({
83
85
  return { ok: assertions.ok, suiteDir, assertions };
84
86
  }
85
87
 
86
- export function createLeaseCleanupFailureResult(options) {
87
- return createLeaseCleanupResult({ ...options, staleCleanupResult: null });
88
- }
89
-
90
88
  export function createLeaseWarmupFailureResult(
91
89
  config,
92
90
  targetName,
@@ -1,13 +1,19 @@
1
1
  # Local Crabbox Ubuntu/Linux target image for pi-agent-browser-native platform smoke.
2
2
  # Build with npm run smoke:platform:ubuntu-image so the agent-browser version
3
- # comes from scripts/agent-browser-capability-baseline.mjs.
3
+ # comes from scripts/agent-browser-capability-baseline.mjs. The Go toolchain
4
+ # matches the version scripts/prepare-quality-checker.mjs selects for the
5
+ # corrected quality checker that platform-target builds.
6
+
7
+ FROM golang:1.27.1-bookworm AS go
4
8
 
5
9
  FROM node:24-bookworm
6
10
 
7
11
  ARG AGENT_BROWSER_VERSION
8
12
 
9
13
  USER root
10
- RUN apt-get update \
14
+ COPY --from=go /usr/local/go /usr/local/go
15
+ RUN ln -s /usr/local/go/bin/go /usr/local/go/bin/gofmt /usr/local/bin/ \
16
+ && apt-get update \
11
17
  && apt-get install -y --no-install-recommends ca-certificates chromium fonts-liberation git libvulkan1 mesa-vulkan-drivers openssh-client tar xvfb \
12
18
  && npm install -g "agent-browser@${AGENT_BROWSER_VERSION}" \
13
19
  && groupadd -g 1002 circleci \
@@ -21,11 +21,7 @@ import {
21
21
  } from "./suite-evidence.mjs";
22
22
 
23
23
  export { buildBrowserDogfoodCommand, buildPlatformBuildCommand } from "./commands.mjs";
24
- export {
25
- createLeaseCleanupFailureResult,
26
- createLeaseCleanupResult,
27
- createLeaseWarmupFailureResult,
28
- } from "./lease-evidence.mjs";
24
+ export { createLeaseCleanupResult, createLeaseWarmupFailureResult } from "./lease-evidence.mjs";
29
25
  export { nodeVersionAtLeast } from "./suite-checks.mjs";
30
26
  export { platformFor } from "./suite-evidence.mjs";
31
27