pi-agent-browser-native 0.2.41 → 0.2.43

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 (33) hide show
  1. package/CHANGELOG.md +30 -3
  2. package/README.md +9 -9
  3. package/docs/ARCHITECTURE.md +1 -1
  4. package/docs/COMMAND_REFERENCE.md +10 -11
  5. package/docs/SUPPORT_MATRIX.md +6 -5
  6. package/docs/TOOL_CONTRACT.md +27 -24
  7. package/extensions/agent-browser/index.ts +71 -2
  8. package/extensions/agent-browser/lib/input-modes/params.ts +1 -1
  9. package/extensions/agent-browser/lib/input-modes/types.ts +1 -1
  10. package/extensions/agent-browser/lib/navigation-policy.ts +95 -0
  11. package/extensions/agent-browser/lib/orchestration/browser-run/diagnostics.ts +2 -7
  12. package/extensions/agent-browser/lib/orchestration/browser-run/final-result.ts +1 -0
  13. package/extensions/agent-browser/lib/orchestration/browser-run/prepare.ts +2 -2
  14. package/extensions/agent-browser/lib/orchestration/browser-run/process-output.ts +103 -12
  15. package/extensions/agent-browser/lib/orchestration/browser-run/session-state.ts +20 -3
  16. package/extensions/agent-browser/lib/orchestration/browser-run/types.ts +6 -1
  17. package/extensions/agent-browser/lib/playbook.ts +4 -4
  18. package/extensions/agent-browser/lib/results/action-recommendations.ts +15 -0
  19. package/extensions/agent-browser/lib/results/contracts.ts +17 -0
  20. package/extensions/agent-browser/lib/results/network-routes.ts +80 -0
  21. package/extensions/agent-browser/lib/results/network.ts +10 -2
  22. package/extensions/agent-browser/lib/results/presentation/artifacts.ts +14 -0
  23. package/extensions/agent-browser/lib/results/presentation/batch.ts +36 -13
  24. package/extensions/agent-browser/lib/results/presentation/diagnostics.ts +154 -16
  25. package/extensions/agent-browser/lib/results/presentation/errors.ts +62 -2
  26. package/extensions/agent-browser/lib/results/presentation/semantic-action.ts +2 -4
  27. package/extensions/agent-browser/lib/results/presentation.ts +31 -1
  28. package/extensions/agent-browser/lib/results/selector-recovery.ts +11 -3
  29. package/extensions/agent-browser/lib/results/shared.ts +1 -0
  30. package/extensions/agent-browser/lib/results.ts +3 -0
  31. package/extensions/agent-browser/lib/runtime.ts +6 -0
  32. package/package.json +1 -1
  33. package/scripts/config.mjs +18 -18
@@ -3,7 +3,7 @@
3
3
  * Responsibilities: Parse find/semantic action targets, match current snapshot refs, build public diagnostics, text, and safe nextActions.
4
4
  * Scope: Selector recovery policy only; subprocess snapshot probing and result orchestration stay in the extension entrypoint.
5
5
  * Usage: The extension entrypoint supplies command tokens plus snapshot data after a selector-not-found failure.
6
- * Invariants/Assumptions: Fill recovery must never echo or auto-submit the user-provided fill text; keyboard insertion remains a separate explicit action.
6
+ * Invariants/Assumptions: Public fill recovery must never echo or auto-submit the user-provided fill text; guarded semanticAction fill pre-resolution may execute only one exact current editable ref.
7
7
  */
8
8
 
9
9
  import { isRecord } from "../parsing.js";
@@ -199,14 +199,22 @@ export interface VisibleRefActionResolution {
199
199
  }
200
200
 
201
201
  export function resolveVisibleRefActionFromSnapshot(options: {
202
+ allowFill?: boolean;
202
203
  compiledAction: SelectorRecoveryCompiledAction;
203
204
  snapshotData: unknown;
204
205
  }): VisibleRefActionResolution | undefined {
205
206
  const target = getFindVisibleRefFallbackTarget(options.compiledAction.args, { allowLeadingDashFillText: true });
206
- if (!target || target.action === "fill" || target.action === "select") return undefined;
207
+ if (!target || target.action === "select") return undefined;
207
208
  const snapshot = extractRefSnapshotFromData(options.snapshotData);
208
209
  if (!snapshot) return undefined;
209
- const candidate = getVisibleRefFallbackCandidates(target, options.snapshotData).find((item) => item.args !== undefined);
210
+ const candidates = getVisibleRefFallbackCandidates(target, options.snapshotData);
211
+ if (target.action === "fill") {
212
+ if (!options.allowFill || candidates.length !== 1 || target.text === undefined) return undefined;
213
+ const [candidate] = candidates;
214
+ if (!candidate || candidate.editableEvidence === false || !EDITABLE_CONTROL_ROLES.has(candidate.role.toLowerCase())) return undefined;
215
+ return { args: ["fill", candidate.ref, target.text], snapshot };
216
+ }
217
+ const candidate = candidates.find((item) => item.args !== undefined);
210
218
  if (!candidate?.args) return undefined;
211
219
  return { args: candidate.args, snapshot };
212
220
  }
@@ -13,6 +13,7 @@ export * from "./artifact-manifest.js";
13
13
  export * from "./artifact-state.js";
14
14
  export * from "./editable-ref-evidence.js";
15
15
  export * from "./network.js";
16
+ export * from "./network-routes.js";
16
17
  export * from "./next-actions.js";
17
18
  export * from "./recovery-actions.js";
18
19
  export * from "./recovery-next-actions.js";
@@ -8,6 +8,7 @@
8
8
 
9
9
  export { getAgentBrowserErrorText, parseAgentBrowserEnvelope } from "./results/envelope.js";
10
10
  export { buildToolPresentation } from "./results/presentation.js";
11
+ export { applyNetworkRouteRecords, buildNetworkRouteDiagnostics } from "./results/network-routes.js";
11
12
  export {
12
13
  buildAgentBrowserResultCategoryDetails,
13
14
  classifyAgentBrowserFailureCategory,
@@ -30,6 +31,8 @@ export type {
30
31
  AgentBrowserResultCategory,
31
32
  AgentBrowserResultCategoryDetails,
32
33
  AgentBrowserSuccessCategory,
34
+ NetworkRouteDiagnostic,
35
+ NetworkRouteRecord,
33
36
  FileArtifactKind,
34
37
  FileArtifactMetadata,
35
38
  ToolPresentation,
@@ -355,6 +355,12 @@ export function redactInvocationArgs(args: string[]): string[] {
355
355
  redacted[commandStartIndex + 4] = "[REDACTED]";
356
356
  }
357
357
 
358
+ if (commandStartIndex !== undefined && args[commandStartIndex] === "clipboard" && args[commandStartIndex + 1] === "write") {
359
+ for (let index = commandStartIndex + 2; index < redacted.length; index += 1) {
360
+ redacted[index] = "[REDACTED]";
361
+ }
362
+ }
363
+
358
364
  return redacted;
359
365
  }
360
366
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pi-agent-browser-native",
3
- "version": "0.2.41",
3
+ "version": "0.2.43",
4
4
  "description": "pi extension that exposes agent-browser as a native tool for browser automation",
5
5
  "type": "module",
6
6
  "author": "Mitch Fultz (https://github.com/fitchmultz)",
@@ -38,25 +38,25 @@ class UsageError extends Error {
38
38
  }
39
39
 
40
40
  function usage() {
41
- return `pi-agent-browser-config
41
+ return `pi-agent-browser-native config helper
42
42
 
43
- Usage:
44
- pi-agent-browser-config paths
45
- pi-agent-browser-config show
46
- pi-agent-browser-config web-search status
47
- pi-agent-browser-config web-search set-key --stdin --provider <exa|brave> [--global]
48
- pi-agent-browser-config web-search set-env <ENV_VAR> [--provider brave|exa] [--global|--project]
49
- pi-agent-browser-config web-search set-command <command> --provider <exa|brave> [--global]
50
- pi-agent-browser-config web-search clear --provider <exa|brave|all> [--global|--project]
51
- pi-agent-browser-config web-search prefer <exa|brave|auto> [--global|--project]
52
- pi-agent-browser-config web-search enable [--global|--project]
53
- pi-agent-browser-config web-search disable [--global|--project]
54
- pi-agent-browser-config browser profile status
55
- pi-agent-browser-config browser profile set <name|path> [--policy explicit-only|authenticated-only|always] [--global|--project]
56
- pi-agent-browser-config browser profile clear [--global|--project]
57
- pi-agent-browser-config browser executable status
58
- pi-agent-browser-config browser executable set <path> [--global]
59
- pi-agent-browser-config browser executable clear [--global|--project]
43
+ Usage through npm exec:
44
+ npm exec --yes --package pi-agent-browser-native@latest -- pi-agent-browser-config paths
45
+ npm exec --yes --package pi-agent-browser-native@latest -- pi-agent-browser-config show
46
+ npm exec --yes --package pi-agent-browser-native@latest -- pi-agent-browser-config web-search status
47
+ npm exec --yes --package pi-agent-browser-native@latest -- pi-agent-browser-config web-search set-key --stdin --provider <exa|brave> [--global]
48
+ npm exec --yes --package pi-agent-browser-native@latest -- pi-agent-browser-config web-search set-env <ENV_VAR> [--provider brave|exa] [--global|--project]
49
+ npm exec --yes --package pi-agent-browser-native@latest -- pi-agent-browser-config web-search set-command <command> --provider <exa|brave> [--global]
50
+ npm exec --yes --package pi-agent-browser-native@latest -- pi-agent-browser-config web-search clear --provider <exa|brave|all> [--global|--project]
51
+ npm exec --yes --package pi-agent-browser-native@latest -- pi-agent-browser-config web-search prefer <exa|brave|auto> [--global|--project]
52
+ npm exec --yes --package pi-agent-browser-native@latest -- pi-agent-browser-config web-search enable [--global|--project]
53
+ npm exec --yes --package pi-agent-browser-native@latest -- pi-agent-browser-config web-search disable [--global|--project]
54
+ npm exec --yes --package pi-agent-browser-native@latest -- pi-agent-browser-config browser profile status
55
+ 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]
56
+ npm exec --yes --package pi-agent-browser-native@latest -- pi-agent-browser-config browser profile clear [--global|--project]
57
+ npm exec --yes --package pi-agent-browser-native@latest -- pi-agent-browser-config browser executable status
58
+ npm exec --yes --package pi-agent-browser-native@latest -- pi-agent-browser-config browser executable set <path> [--global]
59
+ npm exec --yes --package pi-agent-browser-native@latest -- pi-agent-browser-config browser executable clear [--global|--project]
60
60
 
61
61
  Notes:
62
62
  Global config: ~/.pi/config/pi-agent-browser-native/config.json