pi-agent-browser-native 0.9.3 → 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.
- package/CHANGELOG.md +106 -5
- package/README.md +58 -791
- package/dist/extensions/agent-browser/index.js +43101 -2031
- package/dist/extensions/agent-browser/lib/argv-descriptor.js +49 -26
- package/dist/extensions/agent-browser/lib/argv-grammar.js +82 -93
- package/dist/extensions/agent-browser/lib/bash-guard.js +129 -126
- package/dist/extensions/agent-browser/lib/batch-lifecycle.js +112 -51
- package/dist/extensions/agent-browser/lib/browser-execution-claim-codec.js +61 -0
- package/dist/extensions/agent-browser/lib/browser-execution-claim-storage.js +232 -0
- package/dist/extensions/agent-browser/lib/browser-execution-claims.js +202 -0
- package/dist/extensions/agent-browser/lib/browser-execution-identity.js +77 -0
- package/dist/extensions/agent-browser/lib/browser-journal-branch.js +98 -0
- package/dist/extensions/agent-browser/lib/browser-journal-contracts.js +1 -0
- package/dist/extensions/agent-browser/lib/browser-journal-projection.js +221 -0
- package/dist/extensions/agent-browser/lib/browser-journal-reader.js +89 -0
- package/dist/extensions/agent-browser/lib/browser-journal-replay.js +246 -0
- package/dist/extensions/agent-browser/lib/browser-journal.js +103 -394
- package/dist/extensions/agent-browser/lib/browser-legacy-pages.js +220 -0
- package/dist/extensions/agent-browser/lib/browser-legacy-projection.js +282 -0
- package/dist/extensions/agent-browser/lib/browser-legacy-types.js +1 -0
- package/dist/extensions/agent-browser/lib/browser-session-conversion-stream.js +217 -0
- package/dist/extensions/agent-browser/lib/browser-session-conversion.js +80 -335
- package/dist/extensions/agent-browser/lib/browser-transcript-contracts.js +35 -0
- package/dist/extensions/agent-browser/lib/browser-transcript-validation.js +166 -0
- package/dist/extensions/agent-browser/lib/browser-transcript.js +137 -82
- package/dist/extensions/agent-browser/lib/browser-value-parsing.js +15 -0
- package/dist/extensions/agent-browser/lib/command-capabilities.js +340 -0
- package/dist/extensions/agent-browser/lib/command-policy.js +107 -88
- package/dist/extensions/agent-browser/lib/command-taxonomy.js +49 -322
- package/dist/extensions/agent-browser/lib/config-policy.js +138 -343
- package/dist/extensions/agent-browser/lib/config-providers.js +71 -0
- package/dist/extensions/agent-browser/lib/config-validation.js +231 -0
- package/dist/extensions/agent-browser/lib/config.js +20 -8
- package/dist/extensions/agent-browser/lib/electron/cdp.js +20 -8
- package/dist/extensions/agent-browser/lib/electron/cleanup.js +128 -83
- package/dist/extensions/agent-browser/lib/electron/discovery-darwin.js +109 -0
- package/dist/extensions/agent-browser/lib/electron/discovery-desktop.js +136 -0
- package/dist/extensions/agent-browser/lib/electron/discovery-evidence.js +90 -0
- package/dist/extensions/agent-browser/lib/electron/discovery-linux.js +93 -0
- package/dist/extensions/agent-browser/lib/electron/discovery-packages.js +162 -0
- package/dist/extensions/agent-browser/lib/electron/discovery-types.js +2 -0
- package/dist/extensions/agent-browser/lib/electron/discovery.js +140 -549
- package/dist/extensions/agent-browser/lib/electron/launch-monitor.js +102 -0
- package/dist/extensions/agent-browser/lib/electron/launch-process.js +209 -0
- package/dist/extensions/agent-browser/lib/electron/launch-types.js +2 -0
- package/dist/extensions/agent-browser/lib/electron/launch.js +261 -355
- package/dist/extensions/agent-browser/lib/executable-path.js +21 -12
- package/dist/extensions/agent-browser/lib/execution-cwd.js +35 -18
- package/dist/extensions/agent-browser/lib/fs-utils.js +1 -9
- package/dist/extensions/agent-browser/lib/input-modes/electron.js +162 -121
- package/dist/extensions/agent-browser/lib/input-modes/job.js +123 -317
- package/dist/extensions/agent-browser/lib/input-modes/lookup-network-evidence.js +116 -0
- package/dist/extensions/agent-browser/lib/input-modes/lookup-plan.js +132 -0
- package/dist/extensions/agent-browser/lib/input-modes/lookup-redaction.js +57 -0
- package/dist/extensions/agent-browser/lib/input-modes/lookup-source-evidence.js +151 -0
- package/dist/extensions/agent-browser/lib/input-modes/lookup-workspace.js +142 -0
- package/dist/extensions/agent-browser/lib/input-modes/lookups.js +58 -412
- package/dist/extensions/agent-browser/lib/input-modes/params.js +86 -40
- package/dist/extensions/agent-browser/lib/input-modes/qa-analysis.js +268 -0
- package/dist/extensions/agent-browser/lib/input-modes/qa-presentation.js +117 -0
- package/dist/extensions/agent-browser/lib/input-modes/script-child.js +396 -0
- package/dist/extensions/agent-browser/lib/input-modes/script-protocol.js +86 -0
- package/dist/extensions/agent-browser/lib/input-modes/script-types.js +1 -0
- package/dist/extensions/agent-browser/lib/input-modes/script-validation.js +60 -0
- package/dist/extensions/agent-browser/lib/input-modes/script.js +60 -409
- package/dist/extensions/agent-browser/lib/input-modes/semantic-action.js +218 -128
- package/dist/extensions/agent-browser/lib/input-modes/shared.js +15 -4
- package/dist/extensions/agent-browser/lib/input-modes/types.js +56 -7
- package/dist/extensions/agent-browser/lib/json-schema.js +22 -10
- package/dist/extensions/agent-browser/lib/launch-scoped-flags.js +17 -5
- package/dist/extensions/agent-browser/lib/managed-session-policy-lock.js +92 -425
- package/dist/extensions/agent-browser/lib/managed-session-posix-storage.js +58 -0
- package/dist/extensions/agent-browser/lib/managed-session-project-identity.js +244 -0
- package/dist/extensions/agent-browser/lib/managed-session-restore-context.js +84 -0
- package/dist/extensions/agent-browser/lib/managed-session-restore-policy.js +119 -0
- package/dist/extensions/agent-browser/lib/managed-session-restore-state.js +83 -0
- package/dist/extensions/agent-browser/lib/managed-session-restore.js +168 -300
- package/dist/extensions/agent-browser/lib/managed-session-snapshot-records.js +277 -0
- package/dist/extensions/agent-browser/lib/managed-session-snapshots.js +128 -305
- package/dist/extensions/agent-browser/lib/managed-session-storage.js +56 -253
- package/dist/extensions/agent-browser/lib/native-confirmation.js +140 -0
- package/dist/extensions/agent-browser/lib/native-output.js +43 -9
- package/dist/extensions/agent-browser/lib/orchestration/batch-stdin.js +106 -59
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/artifact-merge.js +14 -6
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/artifact-paths.js +109 -57
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/browser-observation-result.js +82 -0
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/click-dispatch.js +164 -60
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/diagnostic-values.js +31 -0
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/diagnostics.js +152 -781
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/electron-observation.js +203 -0
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/electron-text-diagnostics.js +109 -0
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/fill-diagnostics.js +119 -0
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/final-result-action-recovery.js +147 -0
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/final-result-actions.js +144 -0
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/final-result-content.js +123 -0
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/final-result-contracts.js +1 -0
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/final-result-details.js +156 -0
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/final-result-electron.js +187 -0
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/final-result-evidence.js +39 -0
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/final-result-missing-binary.js +89 -0
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/final-result-recovery.js +97 -0
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/final-result-redaction.js +106 -0
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/final-result-timeout.js +110 -0
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/final-result.js +41 -538
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/index.js +199 -154
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/interaction-diagnostics.js +290 -0
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/managed-session-close.js +167 -0
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/managed-session-daemon-inspection.js +108 -0
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/managed-session-daemon-policy.js +127 -205
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/native-helper-observation.js +65 -0
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/observation-types.js +1 -0
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/overlay-diagnostics.js +120 -0
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/prepare/network-page-filter.js +113 -30
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/prepare/scroll-shims.js +109 -28
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/prepare/snapshot-filter-data.js +150 -0
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/prepare/snapshot-filter.js +147 -253
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/prepare/snapshot-rendered-text.js +147 -0
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/prepare/wait-timeouts.js +59 -24
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/prepare-artifacts.js +159 -0
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/prepare-command.js +131 -0
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/prepare-contracts.js +1 -0
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/prepare-daemon.js +93 -0
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/prepare-failure.js +42 -0
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/prepare-guards.js +242 -0
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/prepare-input.js +75 -0
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/prepare-observations.js +92 -0
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/prepare-page-selection.js +254 -0
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/prepare-page-state.js +121 -0
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/prepare-refs.js +130 -0
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/prepare-resources.js +114 -0
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/prepare-semantic.js +121 -0
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/prepare-session-plan.js +222 -0
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/prepare-timeouts.js +68 -0
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/prepare.js +176 -1123
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-analysis.js +191 -0
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-confirmation.js +152 -0
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-diagnostics.js +182 -0
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-electron.js +150 -0
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-lifecycle-contracts.js +1 -0
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-lifecycle-phase-contracts.js +1 -0
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-lifecycle-phase.js +115 -0
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-lifecycle.js +256 -0
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-managed-contracts.js +1 -0
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-managed.js +256 -0
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-native-phase-contracts.js +1 -0
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-native-phase.js +93 -0
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-native.js +113 -0
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-navigation-contracts.js +1 -0
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-navigation.js +316 -0
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-ownership.js +28 -0
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-page-phase-contracts.js +1 -0
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-page-phase.js +142 -0
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-presentation-contracts.js +1 -0
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-presentation.js +333 -0
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-publication-phase-contracts.js +1 -0
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-publication-phase.js +71 -0
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-publication.js +201 -0
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-receipts.js +183 -0
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-refs.js +200 -0
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-tabs.js +142 -0
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output.js +18 -968
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/prompt-guards.js +23 -13
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/recording-receipt-reconciliation.js +198 -0
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/recording-recovery-contracts.js +1 -0
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/recording-recovery-presentation.js +154 -0
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/recording-recovery.js +68 -151
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/screenshot-capture.js +14 -0
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/screenshot-observation.js +169 -46
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/session-state-commands.js +130 -0
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/session-state-electron.js +212 -0
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/session-state-observations.js +61 -0
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/session-state-outcomes.js +187 -0
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/session-state-refs.js +169 -0
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/session-state-tabs.js +228 -0
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/session-state.js +77 -765
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/text-visibility-diagnostics.js +182 -0
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/timeout-diagnostics.js +256 -0
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/timeout-progress.js +108 -0
- package/dist/extensions/agent-browser/lib/orchestration/code-artifact-observation.js +39 -0
- package/dist/extensions/agent-browser/lib/orchestration/code-image-observation.js +119 -0
- package/dist/extensions/agent-browser/lib/orchestration/electron-host/branch.js +93 -0
- package/dist/extensions/agent-browser/lib/orchestration/electron-host/cleanup-result.js +58 -0
- package/dist/extensions/agent-browser/lib/orchestration/electron-host/cleanup.js +78 -0
- package/dist/extensions/agent-browser/lib/orchestration/electron-host/contracts.js +1 -0
- package/dist/extensions/agent-browser/lib/orchestration/electron-host/discovery.js +106 -0
- package/dist/extensions/agent-browser/lib/orchestration/electron-host/index.js +48 -821
- package/dist/extensions/agent-browser/lib/orchestration/electron-host/policy.js +86 -0
- package/dist/extensions/agent-browser/lib/orchestration/electron-host/probe-collection.js +68 -0
- package/dist/extensions/agent-browser/lib/orchestration/electron-host/probe-data.js +169 -0
- package/dist/extensions/agent-browser/lib/orchestration/electron-host/probe-presentation.js +182 -0
- package/dist/extensions/agent-browser/lib/orchestration/electron-host/probe.js +161 -0
- package/dist/extensions/agent-browser/lib/orchestration/electron-host/status.js +167 -0
- package/dist/extensions/agent-browser/lib/orchestration/execution-queue.js +22 -10
- package/dist/extensions/agent-browser/lib/orchestration/extension-artifact-preflight.js +211 -0
- package/dist/extensions/agent-browser/lib/orchestration/extension-artifacts.js +23 -0
- package/dist/extensions/agent-browser/lib/orchestration/extension-attachment-replay.js +99 -0
- package/dist/extensions/agent-browser/lib/orchestration/extension-branch-restore.js +275 -0
- package/dist/extensions/agent-browser/lib/orchestration/extension-code.js +280 -0
- package/dist/extensions/agent-browser/lib/orchestration/extension-command-admission.js +303 -0
- package/dist/extensions/agent-browser/lib/orchestration/extension-command-output.js +36 -0
- package/dist/extensions/agent-browser/lib/orchestration/extension-command-result.js +335 -0
- package/dist/extensions/agent-browser/lib/orchestration/extension-command-run.js +227 -0
- package/dist/extensions/agent-browser/lib/orchestration/extension-command-state.js +1 -0
- package/dist/extensions/agent-browser/lib/orchestration/extension-electron-ownership.js +204 -0
- package/dist/extensions/agent-browser/lib/orchestration/extension-execution-locks.js +139 -0
- package/dist/extensions/agent-browser/lib/orchestration/extension-execution-queue.js +24 -0
- package/dist/extensions/agent-browser/lib/orchestration/extension-host-coordination.js +98 -0
- package/dist/extensions/agent-browser/lib/orchestration/extension-host-run.js +295 -0
- package/dist/extensions/agent-browser/lib/orchestration/extension-intent-replay.js +41 -0
- package/dist/extensions/agent-browser/lib/orchestration/extension-invocation.js +7 -0
- package/dist/extensions/agent-browser/lib/orchestration/extension-lifecycle.js +102 -0
- package/dist/extensions/agent-browser/lib/orchestration/extension-managed-ownership.js +133 -0
- package/dist/extensions/agent-browser/lib/orchestration/extension-observation.js +120 -0
- package/dist/extensions/agent-browser/lib/orchestration/extension-prompt.js +180 -0
- package/dist/extensions/agent-browser/lib/orchestration/extension-recording.js +290 -0
- package/dist/extensions/agent-browser/lib/orchestration/extension-resource-contracts.js +1 -0
- package/dist/extensions/agent-browser/lib/orchestration/extension-resource-replay.js +269 -0
- package/dist/extensions/agent-browser/lib/orchestration/extension-result-state.js +113 -0
- package/dist/extensions/agent-browser/lib/orchestration/extension-runtime.js +146 -0
- package/dist/extensions/agent-browser/lib/orchestration/extension-script-leases.js +58 -0
- package/dist/extensions/agent-browser/lib/orchestration/extension-tool-boundary.js +62 -0
- package/dist/extensions/agent-browser/lib/orchestration/extension-version-check.js +54 -0
- package/dist/extensions/agent-browser/lib/orchestration/input-plan-types.js +1 -0
- package/dist/extensions/agent-browser/lib/orchestration/input-plan.js +261 -185
- package/dist/extensions/agent-browser/lib/orchestration/input-redaction.js +62 -0
- package/dist/extensions/agent-browser/lib/orchestration/native-config.js +144 -0
- package/dist/extensions/agent-browser/lib/orchestration/native-root-launch.js +77 -0
- package/dist/extensions/agent-browser/lib/orchestration/native-session-defaults.js +210 -157
- package/dist/extensions/agent-browser/lib/orchestration/operation-paths.js +124 -58
- package/dist/extensions/agent-browser/lib/orchestration/output-file.js +197 -99
- package/dist/extensions/agent-browser/lib/orchestration/script-mode.js +199 -96
- package/dist/extensions/agent-browser/lib/owned-managed-session-context.js +55 -0
- package/dist/extensions/agent-browser/lib/page-target-batch.js +118 -0
- package/dist/extensions/agent-browser/lib/page-target-guards.js +50 -0
- package/dist/extensions/agent-browser/lib/page-target-navigation.js +104 -0
- package/dist/extensions/agent-browser/lib/page-target-validation.js +55 -246
- package/dist/extensions/agent-browser/lib/parsing.js +13 -4
- package/dist/extensions/agent-browser/lib/pi-tool-rendering.js +133 -68
- package/dist/extensions/agent-browser/lib/playbook.js +16 -12
- package/dist/extensions/agent-browser/lib/process-child.js +284 -0
- package/dist/extensions/agent-browser/lib/process-environment.js +13 -6
- package/dist/extensions/agent-browser/lib/process-errors.js +23 -0
- package/dist/extensions/agent-browser/lib/process-identity.js +47 -15
- package/dist/extensions/agent-browser/lib/process-socket-storage.js +256 -0
- package/dist/extensions/agent-browser/lib/process-stdout.js +74 -0
- package/dist/extensions/agent-browser/lib/process.js +145 -536
- package/dist/extensions/agent-browser/lib/prompt-artifacts.js +287 -0
- package/dist/extensions/agent-browser/lib/prompt-policy.js +15 -194
- package/dist/extensions/agent-browser/lib/read-command.js +41 -0
- package/dist/extensions/agent-browser/lib/read-confirmation.js +131 -68
- package/dist/extensions/agent-browser/lib/recording-reservations.js +118 -45
- package/dist/extensions/agent-browser/lib/redaction-fields.js +75 -0
- package/dist/extensions/agent-browser/lib/redaction-json.js +149 -0
- package/dist/extensions/agent-browser/lib/redaction-url.js +88 -0
- package/dist/extensions/agent-browser/lib/results/action-contracts.js +1 -0
- package/dist/extensions/agent-browser/lib/results/action-recommendations.js +28 -271
- package/dist/extensions/agent-browser/lib/results/artifact-contracts.js +1 -0
- package/dist/extensions/agent-browser/lib/results/artifact-manifest-validation.js +133 -0
- package/dist/extensions/agent-browser/lib/results/artifact-manifest.js +96 -94
- package/dist/extensions/agent-browser/lib/results/artifact-recommendations.js +73 -0
- package/dist/extensions/agent-browser/lib/results/categories.js +111 -54
- package/dist/extensions/agent-browser/lib/results/confirmation.js +29 -13
- package/dist/extensions/agent-browser/lib/results/editable-ref-evidence.js +62 -27
- package/dist/extensions/agent-browser/lib/results/electron-recommendations.js +83 -0
- package/dist/extensions/agent-browser/lib/results/envelope-decoding.js +48 -0
- package/dist/extensions/agent-browser/lib/results/envelope.js +90 -67
- package/dist/extensions/agent-browser/lib/results/evidence-contracts.js +1 -0
- package/dist/extensions/agent-browser/lib/results/failure-recommendations.js +180 -0
- package/dist/extensions/agent-browser/lib/results/network-routes.js +86 -45
- package/dist/extensions/agent-browser/lib/results/network.js +35 -12
- package/dist/extensions/agent-browser/lib/results/next-actions.js +49 -19
- package/dist/extensions/agent-browser/lib/results/presentation/artifact-files.js +320 -0
- package/dist/extensions/agent-browser/lib/results/presentation/artifact-format.js +138 -0
- package/dist/extensions/agent-browser/lib/results/presentation/artifact-images.js +113 -0
- package/dist/extensions/agent-browser/lib/results/presentation/artifact-verification.js +145 -0
- package/dist/extensions/agent-browser/lib/results/presentation/artifacts.js +99 -555
- package/dist/extensions/agent-browser/lib/results/presentation/batch-contracts.js +1 -0
- package/dist/extensions/agent-browser/lib/results/presentation/batch-recording.js +118 -0
- package/dist/extensions/agent-browser/lib/results/presentation/batch-redaction.js +68 -0
- package/dist/extensions/agent-browser/lib/results/presentation/batch-rendering.js +135 -0
- package/dist/extensions/agent-browser/lib/results/presentation/batch-step.js +227 -0
- package/dist/extensions/agent-browser/lib/results/presentation/batch-summary.js +91 -0
- package/dist/extensions/agent-browser/lib/results/presentation/batch.js +91 -460
- package/dist/extensions/agent-browser/lib/results/presentation/browser-profile-recovery.js +9 -5
- package/dist/extensions/agent-browser/lib/results/presentation/command-presenters.js +216 -0
- package/dist/extensions/agent-browser/lib/results/presentation/common.js +26 -9
- package/dist/extensions/agent-browser/lib/results/presentation/content.js +86 -29
- package/dist/extensions/agent-browser/lib/results/presentation/diagnostic-a11y.js +67 -0
- package/dist/extensions/agent-browser/lib/results/presentation/diagnostic-health.js +79 -0
- package/dist/extensions/agent-browser/lib/results/presentation/diagnostic-identity.js +199 -0
- package/dist/extensions/agent-browser/lib/results/presentation/diagnostic-logs.js +75 -0
- package/dist/extensions/agent-browser/lib/results/presentation/diagnostic-network-actions.js +216 -0
- package/dist/extensions/agent-browser/lib/results/presentation/diagnostic-network.js +124 -0
- package/dist/extensions/agent-browser/lib/results/presentation/diagnostic-redaction.js +64 -0
- package/dist/extensions/agent-browser/lib/results/presentation/diagnostic-storage.js +209 -0
- package/dist/extensions/agent-browser/lib/results/presentation/diagnostic-stream.js +69 -0
- package/dist/extensions/agent-browser/lib/results/presentation/diagnostic-summary.js +222 -0
- package/dist/extensions/agent-browser/lib/results/presentation/diagnostics.js +103 -1052
- package/dist/extensions/agent-browser/lib/results/presentation/early-result.js +70 -0
- package/dist/extensions/agent-browser/lib/results/presentation/errors.js +130 -60
- package/dist/extensions/agent-browser/lib/results/presentation/input-contracts.js +1 -0
- package/dist/extensions/agent-browser/lib/results/presentation/large-output.js +60 -145
- package/dist/extensions/agent-browser/lib/results/presentation/navigation.js +147 -88
- package/dist/extensions/agent-browser/lib/results/presentation/notices.js +75 -0
- package/dist/extensions/agent-browser/lib/results/presentation/observation-contracts.js +1 -0
- package/dist/extensions/agent-browser/lib/results/presentation/observation-rendering.js +127 -0
- package/dist/extensions/agent-browser/lib/results/presentation/outcomes.js +120 -0
- package/dist/extensions/agent-browser/lib/results/presentation/output-completion.js +77 -0
- package/dist/extensions/agent-browser/lib/results/presentation/output-spill.js +51 -0
- package/dist/extensions/agent-browser/lib/results/presentation/registry.js +116 -240
- package/dist/extensions/agent-browser/lib/results/presentation/semantic-action.js +35 -21
- package/dist/extensions/agent-browser/lib/results/presentation/skills.js +109 -73
- package/dist/extensions/agent-browser/lib/results/presentation/source.js +109 -0
- package/dist/extensions/agent-browser/lib/results/presentation.js +17 -261
- package/dist/extensions/agent-browser/lib/results/recommendation-contracts.js +1 -0
- package/dist/extensions/agent-browser/lib/results/recording.js +52 -14
- package/dist/extensions/agent-browser/lib/results/recovery-actions.js +14 -5
- package/dist/extensions/agent-browser/lib/results/recovery-next-actions.js +30 -22
- package/dist/extensions/agent-browser/lib/results/selector-recovery-target.js +83 -0
- package/dist/extensions/agent-browser/lib/results/selector-recovery.js +119 -119
- package/dist/extensions/agent-browser/lib/results/snapshot-compact.js +266 -0
- package/dist/extensions/agent-browser/lib/results/snapshot-content.js +32 -0
- package/dist/extensions/agent-browser/lib/results/snapshot-high-value-controls.js +104 -71
- package/dist/extensions/agent-browser/lib/results/snapshot-refs.js +31 -11
- package/dist/extensions/agent-browser/lib/results/snapshot-segments.js +125 -66
- package/dist/extensions/agent-browser/lib/results/snapshot-spill.js +26 -7
- package/dist/extensions/agent-browser/lib/results/snapshot.js +28 -248
- package/dist/extensions/agent-browser/lib/results/text.js +16 -5
- package/dist/extensions/agent-browser/lib/runtime-args-validation.js +133 -0
- package/dist/extensions/agent-browser/lib/runtime-compatibility.js +81 -0
- package/dist/extensions/agent-browser/lib/runtime-contracts.js +1 -0
- package/dist/extensions/agent-browser/lib/runtime-redaction.js +118 -0
- package/dist/extensions/agent-browser/lib/runtime-replay-events.js +144 -0
- package/dist/extensions/agent-browser/lib/runtime-session-identity.js +76 -0
- package/dist/extensions/agent-browser/lib/runtime-session-plan.js +114 -0
- package/dist/extensions/agent-browser/lib/runtime-session-replay.js +123 -0
- package/dist/extensions/agent-browser/lib/runtime-tab-correction.js +65 -0
- package/dist/extensions/agent-browser/lib/runtime-timeouts.js +28 -0
- package/dist/extensions/agent-browser/lib/runtime.js +137 -1041
- package/dist/extensions/agent-browser/lib/session-identity.js +51 -0
- package/dist/extensions/agent-browser/lib/session-page-observation.js +357 -0
- package/dist/extensions/agent-browser/lib/session-page-state.js +178 -333
- package/dist/extensions/agent-browser/lib/session-page-types.js +1 -0
- package/dist/extensions/agent-browser/lib/temp-artifact-budget.js +81 -0
- package/dist/extensions/agent-browser/lib/temp-mutation-queue.js +7 -0
- package/dist/extensions/agent-browser/lib/temp-root-ownership.js +234 -0
- package/dist/extensions/agent-browser/lib/temp-root.js +211 -0
- package/dist/extensions/agent-browser/lib/temp.js +33 -446
- package/dist/extensions/agent-browser/lib/tool-surface.js +94 -24
- package/dist/extensions/agent-browser/lib/upstream-version.js +3 -2
- package/dist/extensions/agent-browser/lib/web-search-providers.js +193 -0
- package/dist/extensions/agent-browser/lib/web-search-request.js +102 -0
- package/dist/extensions/agent-browser/lib/web-search-results.js +281 -0
- package/dist/extensions/agent-browser/lib/web-search-schema.js +82 -0
- package/dist/extensions/agent-browser/lib/web-search.js +124 -614
- package/dist/extensions/agent-browser/lib/webmcp-observation.js +13 -6
- package/dist/extensions/agent-browser/lib/windows-stock-launcher.js +63 -37
- package/dist/extensions/agent-browser/script-worker.js +80 -43
- package/dist/scripts/agent-browser-target.mjs +4 -2
- package/docs/ARCHITECTURE.md +19 -6
- package/docs/CODE_QUALITY.md +267 -0
- package/docs/COMMAND_REFERENCE.md +272 -241
- package/docs/ELECTRON.md +77 -46
- package/docs/REFERENCE.md +869 -0
- package/docs/RELEASE.md +25 -22
- package/docs/REQUIREMENTS.md +2 -1
- package/docs/SUPPORT_MATRIX.md +81 -79
- package/docs/TOOL_CONTRACT.md +158 -125
- package/docs/platform-smoke.md +8 -8
- package/package.json +144 -120
- package/scripts/agent-browser-capability-baseline.mjs +361 -957
- package/scripts/agent-browser-target.mjs +6 -2
- package/scripts/build.mjs +37 -8
- package/scripts/capability-core-commands.mjs +193 -0
- package/scripts/capability-options.mjs +283 -0
- package/scripts/capability-samples.mjs +133 -0
- package/scripts/capability-section.mjs +11 -0
- package/scripts/config.mjs +235 -132
- package/scripts/convert-browser-session.mjs +30 -9
- package/scripts/doctor-sources.mjs +195 -0
- package/scripts/doctor.mjs +94 -249
- package/scripts/platform-smoke/artifacts.mjs +38 -11
- package/scripts/platform-smoke/commands.mjs +104 -0
- package/scripts/platform-smoke/crabbox-runner.mjs +167 -80
- package/scripts/platform-smoke/doctor-support.mjs +157 -0
- package/scripts/platform-smoke/doctor-windows.mjs +230 -0
- package/scripts/platform-smoke/doctor.mjs +212 -320
- package/scripts/platform-smoke/lease-evidence.mjs +132 -0
- package/scripts/platform-smoke/linux-image/Dockerfile +8 -2
- package/scripts/platform-smoke/suite-checks.mjs +98 -0
- package/scripts/platform-smoke/suite-evidence.mjs +281 -0
- package/scripts/platform-smoke/targets.mjs +154 -472
- package/scripts/platform-smoke.mjs +55 -40
- package/scripts/prepare.mjs +16 -7
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
/** Audited upstream source evidence and the native help commands sampled for drift. */
|
|
2
|
+
export const sourceEvidence = Object.freeze({
|
|
3
|
+
repository: "vercel-labs/agent-browser",
|
|
4
|
+
upstreamHead: "aff6125c023b810ea3f2e5deec5379e9a4270bdc",
|
|
5
|
+
upstreamPackageVersion: "0.38.1",
|
|
6
|
+
inspectedSources: Object.freeze([
|
|
7
|
+
"agent-browser --version",
|
|
8
|
+
"agent-browser --help",
|
|
9
|
+
"selected agent-browser <command> --help output",
|
|
10
|
+
"agent-browser a11y --help",
|
|
11
|
+
"agent-browser mcp --help",
|
|
12
|
+
"agent-browser plugin --help",
|
|
13
|
+
"agent-browser skills list",
|
|
14
|
+
"agent-browser skills get core --full",
|
|
15
|
+
"agent-browser skills get derive-client --full",
|
|
16
|
+
"agent-browser skills get webmcp-gen --full",
|
|
17
|
+
"README.md",
|
|
18
|
+
"CHANGELOG.md",
|
|
19
|
+
"agent-browser.schema.json",
|
|
20
|
+
"bin/agent-browser.js",
|
|
21
|
+
"cli/src/ca_bundle.rs",
|
|
22
|
+
"cli/src/commands.rs",
|
|
23
|
+
"cli/src/mcp.rs",
|
|
24
|
+
"cli/src/flags.rs",
|
|
25
|
+
"cli/src/read.rs",
|
|
26
|
+
"cli/src/doctor/ffmpeg.rs",
|
|
27
|
+
"cli/src/doctor/webgpu.rs",
|
|
28
|
+
"cli/src/native/actions.rs",
|
|
29
|
+
"cli/src/native/a11y/mod.rs",
|
|
30
|
+
"cli/src/native/browser.rs",
|
|
31
|
+
"cli/src/native/tab_binding.rs",
|
|
32
|
+
"cli/src/native/daemon.rs",
|
|
33
|
+
"cli/src/native/element.rs",
|
|
34
|
+
"cli/src/native/recording.rs",
|
|
35
|
+
"cli/src/native/snapshot.rs",
|
|
36
|
+
"cli/src/native/interaction.rs",
|
|
37
|
+
"cli/src/native/screenshot.rs",
|
|
38
|
+
"cli/src/native/stream/cdp_loop.rs",
|
|
39
|
+
"cli/src/native/stream/dashboard.rs",
|
|
40
|
+
"cli/src/native/test_fixtures/webmcp_frame_probe.html",
|
|
41
|
+
"cli/src/native/test_fixtures/webmcp_probe.html",
|
|
42
|
+
"cli/src/native/webmcp.rs",
|
|
43
|
+
"cli/src/output.rs",
|
|
44
|
+
"docs/src/app/webgpu/page.mdx",
|
|
45
|
+
"docs/src/app/webmcp/page.mdx",
|
|
46
|
+
"docs/src/app/network/page.mdx",
|
|
47
|
+
"docs/src/app/proxy/page.mdx",
|
|
48
|
+
"docs/src/app/selectors/page.mdx",
|
|
49
|
+
"docs/src/app/skills/page.mdx",
|
|
50
|
+
"docs/src/app/commands/page.mdx",
|
|
51
|
+
"skill-data/derive-client/SKILL.md",
|
|
52
|
+
"skill-data/core/SKILL.md",
|
|
53
|
+
"skill-data/core/references/video-recording.md",
|
|
54
|
+
"skill-data/protected-vercel-deployments/SKILL.md",
|
|
55
|
+
"skill-data/webmcp-gen/SKILL.md",
|
|
56
|
+
"test/launcher.test.mjs",
|
|
57
|
+
"packages/@agent-browser/eve/README.md",
|
|
58
|
+
"packages/@agent-browser/eve/package.json",
|
|
59
|
+
"packages/@agent-browser/eve/test/extension.test.mjs",
|
|
60
|
+
"packages/@agent-browser/sandbox/README.md",
|
|
61
|
+
"packages/@agent-browser/sandbox/src/shared.ts",
|
|
62
|
+
"packages/@agent-browser/sandbox/src/vercel.ts",
|
|
63
|
+
"packages/@agent-browser/sandbox/src/eve.ts",
|
|
64
|
+
]),
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
const helpCommand = (label, args) => Object.freeze({ label, args: Object.freeze(args) });
|
|
68
|
+
export const helpCommands = Object.freeze([
|
|
69
|
+
helpCommand("root help", ["--help"]),
|
|
70
|
+
helpCommand("skills help", ["skills", "--help"]),
|
|
71
|
+
helpCommand("skills list", ["skills", "list"]),
|
|
72
|
+
helpCommand("core skill full", ["skills", "get", "core", "--full"]),
|
|
73
|
+
helpCommand("vercel sandbox skill full", ["skills", "get", "vercel-sandbox", "--full"]),
|
|
74
|
+
helpCommand("protected Vercel deployments skill full", [
|
|
75
|
+
"skills",
|
|
76
|
+
"get",
|
|
77
|
+
"protected-vercel-deployments",
|
|
78
|
+
"--full",
|
|
79
|
+
]),
|
|
80
|
+
helpCommand("WebMCP generation skill full", ["skills", "get", "webmcp-gen", "--full"]),
|
|
81
|
+
helpCommand("open help", ["open", "--help"]),
|
|
82
|
+
helpCommand("read help", ["read", "--help"]),
|
|
83
|
+
helpCommand("click help", ["click", "--help"]),
|
|
84
|
+
helpCommand("key help", ["key", "--help"]),
|
|
85
|
+
helpCommand("scroll help", ["scroll", "--help"]),
|
|
86
|
+
helpCommand("scrollinto help", ["scrollinto", "--help"]),
|
|
87
|
+
helpCommand("keydown help", ["keydown", "--help"]),
|
|
88
|
+
helpCommand("keyup help", ["keyup", "--help"]),
|
|
89
|
+
helpCommand("get help", ["get", "--help"]),
|
|
90
|
+
helpCommand("is help", ["is", "--help"]),
|
|
91
|
+
helpCommand("mouse help", ["mouse", "--help"]),
|
|
92
|
+
helpCommand("drag help", ["drag", "--help"]),
|
|
93
|
+
helpCommand("set help", ["set", "--help"]),
|
|
94
|
+
helpCommand("tab help", ["tab", "--help"]),
|
|
95
|
+
helpCommand("snapshot help", ["snapshot", "--help"]),
|
|
96
|
+
helpCommand("eval help", ["eval", "--help"]),
|
|
97
|
+
helpCommand("wait help", ["wait", "--help"]),
|
|
98
|
+
helpCommand("screenshot help", ["screenshot", "--help"]),
|
|
99
|
+
helpCommand("pdf help", ["pdf", "--help"]),
|
|
100
|
+
helpCommand("close help", ["close", "--help"]),
|
|
101
|
+
helpCommand("find help", ["find", "--help"]),
|
|
102
|
+
helpCommand("network help", ["network", "--help"]),
|
|
103
|
+
helpCommand("cookies help", ["cookies", "--help"]),
|
|
104
|
+
helpCommand("storage help", ["storage", "--help"]),
|
|
105
|
+
helpCommand("state help", ["state", "--help"]),
|
|
106
|
+
helpCommand("session help", ["session", "--help"]),
|
|
107
|
+
helpCommand("frame help", ["frame", "--help"]),
|
|
108
|
+
helpCommand("dialog help", ["dialog", "--help"]),
|
|
109
|
+
helpCommand("window help", ["window", "--help"]),
|
|
110
|
+
helpCommand("keyboard help", ["keyboard", "--help"]),
|
|
111
|
+
helpCommand("batch help", ["batch", "--help"]),
|
|
112
|
+
helpCommand("auth help", ["auth", "--help"]),
|
|
113
|
+
helpCommand("stream help", ["stream", "--help"]),
|
|
114
|
+
helpCommand("dashboard help", ["dashboard", "--help"]),
|
|
115
|
+
helpCommand("chat help", ["chat", "--help"]),
|
|
116
|
+
helpCommand("doctor help", ["doctor", "--help"]),
|
|
117
|
+
helpCommand("diff help", ["diff", "--help"]),
|
|
118
|
+
helpCommand("trace help", ["trace", "--help"]),
|
|
119
|
+
helpCommand("profiler help", ["profiler", "--help"]),
|
|
120
|
+
helpCommand("record help", ["record", "--help"]),
|
|
121
|
+
helpCommand("console help", ["console", "--help"]),
|
|
122
|
+
helpCommand("errors help", ["errors", "--help"]),
|
|
123
|
+
helpCommand("a11y help", ["a11y", "--help"]),
|
|
124
|
+
helpCommand("clipboard help", ["clipboard", "--help"]),
|
|
125
|
+
helpCommand("tap help", ["tap", "--help"]),
|
|
126
|
+
helpCommand("swipe help", ["swipe", "--help"]),
|
|
127
|
+
helpCommand("device help", ["device", "--help"]),
|
|
128
|
+
helpCommand("install help", ["install", "--help"]),
|
|
129
|
+
helpCommand("upgrade help", ["upgrade", "--help"]),
|
|
130
|
+
helpCommand("profiles help", ["profiles", "--help"]),
|
|
131
|
+
helpCommand("mcp help", ["mcp", "--help"]),
|
|
132
|
+
helpCommand("plugin help", ["plugin", "--help"]),
|
|
133
|
+
]);
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/** Immutable help/document inventory section construction for the canonical capability baseline. */
|
|
2
|
+
export const root = (token) => ["root help", token];
|
|
3
|
+
export const section = (id, title, docTokens, upstreamExpectations = []) =>
|
|
4
|
+
Object.freeze({
|
|
5
|
+
id,
|
|
6
|
+
title,
|
|
7
|
+
docTokens: Object.freeze(docTokens),
|
|
8
|
+
upstreamExpectations: Object.freeze(
|
|
9
|
+
upstreamExpectations.map(([help, token]) => Object.freeze({ help, token })),
|
|
10
|
+
),
|
|
11
|
+
});
|
package/scripts/config.mjs
CHANGED
|
@@ -10,8 +10,13 @@ import { dirname } from "node:path";
|
|
|
10
10
|
import process from "node:process";
|
|
11
11
|
|
|
12
12
|
async function loadConfigPolicyModule() {
|
|
13
|
-
const sourcePolicyUrl = new URL(
|
|
14
|
-
|
|
13
|
+
const sourcePolicyUrl = new URL(
|
|
14
|
+
"../extensions/agent-browser/lib/config-policy.js",
|
|
15
|
+
import.meta.url,
|
|
16
|
+
);
|
|
17
|
+
if (existsSync(sourcePolicyUrl)) {
|
|
18
|
+
return import(sourcePolicyUrl.href);
|
|
19
|
+
}
|
|
15
20
|
return import("../dist/extensions/agent-browser/lib/config-policy.js");
|
|
16
21
|
}
|
|
17
22
|
|
|
@@ -30,6 +35,7 @@ const {
|
|
|
30
35
|
getWebSearchProviderLabel,
|
|
31
36
|
isWebSearchProvider,
|
|
32
37
|
loadAgentBrowserConfigStateSync,
|
|
38
|
+
parseAgentBrowserConfigJson,
|
|
33
39
|
summarizeConfigFiles,
|
|
34
40
|
} = await loadConfigPolicyModule();
|
|
35
41
|
|
|
@@ -46,22 +52,22 @@ function usage() {
|
|
|
46
52
|
return `pi-agent-browser-native config helper
|
|
47
53
|
|
|
48
54
|
Usage through npm exec:
|
|
49
|
-
npm exec --yes --package pi-agent-browser-native
|
|
50
|
-
npm exec --yes --package pi-agent-browser-native
|
|
51
|
-
npm exec --yes --package pi-agent-browser-native
|
|
52
|
-
npm exec --yes --package pi-agent-browser-native
|
|
53
|
-
npm exec --yes --package pi-agent-browser-native
|
|
54
|
-
npm exec --yes --package pi-agent-browser-native
|
|
55
|
-
npm exec --yes --package pi-agent-browser-native
|
|
56
|
-
npm exec --yes --package pi-agent-browser-native
|
|
57
|
-
npm exec --yes --package pi-agent-browser-native
|
|
58
|
-
npm exec --yes --package pi-agent-browser-native
|
|
59
|
-
npm exec --yes --package pi-agent-browser-native
|
|
60
|
-
npm exec --yes --package pi-agent-browser-native
|
|
61
|
-
npm exec --yes --package pi-agent-browser-native
|
|
62
|
-
npm exec --yes --package pi-agent-browser-native
|
|
63
|
-
npm exec --yes --package pi-agent-browser-native
|
|
64
|
-
npm exec --yes --package pi-agent-browser-native
|
|
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]
|
|
65
71
|
|
|
66
72
|
Notes:
|
|
67
73
|
Global config: ~/.pi/config/pi-agent-browser-native/config.json
|
|
@@ -81,28 +87,39 @@ function parseArgs(argv) {
|
|
|
81
87
|
positional.push(arg);
|
|
82
88
|
continue;
|
|
83
89
|
}
|
|
84
|
-
if (
|
|
90
|
+
if (["--global", "--project", "--stdin", "--help"].includes(arg)) {
|
|
85
91
|
flags.set(arg, true);
|
|
86
92
|
continue;
|
|
87
93
|
}
|
|
88
94
|
if (arg === "--policy" || arg === "--provider") {
|
|
89
95
|
const value = argv[index + 1];
|
|
90
|
-
if (!value || value.startsWith("--"))
|
|
96
|
+
if (!value || value.startsWith("--")) {
|
|
97
|
+
throw new UsageError(`${arg} requires a value.`);
|
|
98
|
+
}
|
|
91
99
|
flags.set(arg, value);
|
|
92
100
|
index += 1;
|
|
93
101
|
continue;
|
|
94
102
|
}
|
|
95
103
|
throw new UsageError(`Unknown option: ${arg}`);
|
|
96
104
|
}
|
|
97
|
-
if (flags.get("--global") && flags.get("--project"))
|
|
105
|
+
if (flags.get("--global") && flags.get("--project")) {
|
|
106
|
+
throw new UsageError("Use only one of --global or --project.");
|
|
107
|
+
}
|
|
98
108
|
return { flags, positional };
|
|
99
109
|
}
|
|
100
110
|
|
|
101
111
|
function readConfig(path) {
|
|
102
|
-
if (!existsSync(path))
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
112
|
+
if (!existsSync(path)) {
|
|
113
|
+
return { ...DEFAULT_CONFIG };
|
|
114
|
+
}
|
|
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)) {
|
|
120
|
+
throw new Error(`${path} must contain a JSON object.`);
|
|
121
|
+
}
|
|
122
|
+
return { ...DEFAULT_CONFIG, ...parsed.value };
|
|
106
123
|
}
|
|
107
124
|
|
|
108
125
|
function writeConfig(path, config) {
|
|
@@ -118,36 +135,60 @@ function writeConfig(path, config) {
|
|
|
118
135
|
|
|
119
136
|
function selectWritePath(flags) {
|
|
120
137
|
const paths = getAgentBrowserConfigPaths();
|
|
121
|
-
if (flags.get("--project"))
|
|
138
|
+
if (flags.get("--project")) {
|
|
139
|
+
return { path: paths.project, scope: "project" };
|
|
140
|
+
}
|
|
122
141
|
return { path: paths.global, scope: "global" };
|
|
123
142
|
}
|
|
124
143
|
|
|
125
144
|
function validateWebSearchProviderArg(provider, { allowAll = false } = {}) {
|
|
126
|
-
if (isWebSearchProvider(provider) || (allowAll && provider === "all"))
|
|
127
|
-
|
|
145
|
+
if (isWebSearchProvider(provider) || (allowAll && provider === "all")) {
|
|
146
|
+
return provider;
|
|
147
|
+
}
|
|
148
|
+
throw new UsageError(
|
|
149
|
+
`--provider must be one of ${allowAll ? `${WEB_SEARCH_PROVIDERS.join(", ")}, all` : WEB_SEARCH_PROVIDERS.join(", ")}.`,
|
|
150
|
+
);
|
|
128
151
|
}
|
|
129
152
|
|
|
130
153
|
function inferWebSearchProviderFromEnvName(envName) {
|
|
131
154
|
for (const provider of WEB_SEARCH_PROVIDERS) {
|
|
132
|
-
if (envName === getWebSearchProviderEnvVar(provider))
|
|
155
|
+
if (envName === getWebSearchProviderEnvVar(provider)) {
|
|
156
|
+
return provider;
|
|
157
|
+
}
|
|
133
158
|
}
|
|
134
|
-
return
|
|
159
|
+
return;
|
|
135
160
|
}
|
|
136
161
|
|
|
137
162
|
function getWebSearchProvider(flags, options = {}) {
|
|
138
163
|
const configured = flags.get("--provider");
|
|
139
|
-
if (configured)
|
|
164
|
+
if (configured) {
|
|
165
|
+
return validateWebSearchProviderArg(configured, options);
|
|
166
|
+
}
|
|
140
167
|
const inferred = options.envName ? inferWebSearchProviderFromEnvName(options.envName) : undefined;
|
|
141
|
-
if (inferred)
|
|
142
|
-
|
|
168
|
+
if (inferred) {
|
|
169
|
+
return inferred;
|
|
170
|
+
}
|
|
171
|
+
throw new UsageError(
|
|
172
|
+
options.allowAll
|
|
173
|
+
? "--provider is required and must be exa, brave, or all."
|
|
174
|
+
: "--provider is required and must be exa or brave.",
|
|
175
|
+
);
|
|
143
176
|
}
|
|
144
177
|
|
|
145
178
|
function setWebSearchCredential(config, provider, value) {
|
|
146
|
-
|
|
179
|
+
return {
|
|
180
|
+
...config,
|
|
181
|
+
webSearch: { ...config.webSearch, [getWebSearchProviderConfigKey(provider)]: value },
|
|
182
|
+
};
|
|
147
183
|
}
|
|
148
184
|
|
|
149
185
|
function clearWebSearchCredential(config, provider) {
|
|
150
|
-
if (config.webSearch)
|
|
186
|
+
if (!config.webSearch) {
|
|
187
|
+
return config;
|
|
188
|
+
}
|
|
189
|
+
const webSearch = { ...config.webSearch };
|
|
190
|
+
delete webSearch[getWebSearchProviderConfigKey(provider)];
|
|
191
|
+
return { ...config, webSearch };
|
|
151
192
|
}
|
|
152
193
|
|
|
153
194
|
function printPaths() {
|
|
@@ -168,171 +209,233 @@ function printStatus() {
|
|
|
168
209
|
console.log("");
|
|
169
210
|
console.log("Effective config:");
|
|
170
211
|
console.log(` webSearch.enabled: ${state.webSearchEnabled ? "true" : "false"}`);
|
|
171
|
-
console.log(
|
|
172
|
-
|
|
212
|
+
console.log(
|
|
213
|
+
` webSearch.preferredProvider: ${state.config.webSearch?.preferredProvider ?? `auto (default ${DEFAULT_WEB_SEARCH_PROVIDER})`}`,
|
|
214
|
+
);
|
|
215
|
+
console.log(
|
|
216
|
+
` webSearch.defaultSearchType: ${state.config.webSearch?.defaultSearchType ?? "not configured (Exa auto)"}`,
|
|
217
|
+
);
|
|
173
218
|
for (const provider of WEB_SEARCH_PROVIDERS) {
|
|
174
219
|
const field = getWebSearchProviderConfigKey(provider);
|
|
175
|
-
console.log(
|
|
220
|
+
console.log(
|
|
221
|
+
` webSearch.${field}: ${getCredentialSourceSummary(state.webSearchCredentialSources[provider], provider)}`,
|
|
222
|
+
);
|
|
176
223
|
}
|
|
177
224
|
console.log(` browser.defaultProfile: ${formatBrowserProfileStatus(state)}`);
|
|
178
225
|
console.log(` browser.executablePath: ${formatBrowserExecutableStatus(state)}`);
|
|
179
|
-
if (state.layers.length === 0)
|
|
180
|
-
|
|
181
|
-
console.log("");
|
|
182
|
-
console.log("Warnings:");
|
|
183
|
-
for (const warning of state.warnings) console.log(` - ${warning}`);
|
|
226
|
+
if (state.layers.length === 0) {
|
|
227
|
+
console.log(" layers: none");
|
|
184
228
|
}
|
|
185
|
-
|
|
229
|
+
printDiagnostics("Warnings", state.warnings);
|
|
230
|
+
printDiagnostics("Validation errors", state.errors);
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
function printDiagnostics(label, diagnostics) {
|
|
234
|
+
if (diagnostics.length > 0) {
|
|
186
235
|
console.log("");
|
|
187
|
-
console.log(
|
|
188
|
-
for (const
|
|
236
|
+
console.log(`${label}:`);
|
|
237
|
+
for (const diagnostic of diagnostics) {
|
|
238
|
+
console.log(` - ${diagnostic}`);
|
|
239
|
+
}
|
|
189
240
|
}
|
|
190
241
|
}
|
|
191
242
|
|
|
192
243
|
async function readSecretFromStdin(useStdin) {
|
|
193
|
-
if (!useStdin)
|
|
244
|
+
if (!useStdin) {
|
|
245
|
+
throw new UsageError(
|
|
246
|
+
"set-key requires --stdin so the key is not passed through argv or an echoed prompt.",
|
|
247
|
+
);
|
|
248
|
+
}
|
|
194
249
|
let input = "";
|
|
195
|
-
for await (const chunk of process.stdin)
|
|
250
|
+
for await (const chunk of process.stdin) {
|
|
251
|
+
input += chunk;
|
|
252
|
+
}
|
|
196
253
|
const value = input.trim();
|
|
197
|
-
if (!value)
|
|
254
|
+
if (!value) {
|
|
255
|
+
throw new UsageError("No key was provided on stdin.");
|
|
256
|
+
}
|
|
198
257
|
return value;
|
|
199
258
|
}
|
|
200
259
|
|
|
201
260
|
function mutateConfig(path, mutate) {
|
|
202
261
|
const config = readConfig(path);
|
|
203
|
-
mutate(config);
|
|
204
|
-
writeConfig(path, config);
|
|
262
|
+
writeConfig(path, mutate(config));
|
|
205
263
|
}
|
|
206
264
|
|
|
207
265
|
async function handleWebSearch(args, flags) {
|
|
208
266
|
const action = args[0];
|
|
267
|
+
if (action === "prefer" || action === "enable" || action === "disable") {
|
|
268
|
+
handleWebSearchPreference(action, args, flags);
|
|
269
|
+
return;
|
|
270
|
+
}
|
|
209
271
|
if (action === "status") {
|
|
210
272
|
printStatus();
|
|
211
273
|
return;
|
|
212
274
|
}
|
|
275
|
+
if (action === "clear") {
|
|
276
|
+
clearWebSearch(flags);
|
|
277
|
+
return;
|
|
278
|
+
}
|
|
279
|
+
await handleWebSearchCredential(action, args, flags);
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
async function handleWebSearchCredential(action, args, flags) {
|
|
213
283
|
if (action === "set-key") {
|
|
214
284
|
const provider = getWebSearchProvider(flags);
|
|
215
285
|
const key = await readSecretFromStdin(Boolean(flags.get("--stdin")));
|
|
216
286
|
const { path, scope } = selectWritePath(flags);
|
|
217
|
-
mutateConfig(path, (config) =>
|
|
218
|
-
setWebSearchCredential(config, provider, key);
|
|
219
|
-
});
|
|
287
|
+
mutateConfig(path, (config) => setWebSearchCredential(config, provider, key));
|
|
220
288
|
console.log(`Saved ${getWebSearchProviderLabel(provider)} key to ${scope} config: ${path}`);
|
|
221
289
|
return;
|
|
222
290
|
}
|
|
223
291
|
if (action === "set-env") {
|
|
224
292
|
const envName = args[1];
|
|
225
|
-
if (!envName || !/^[A-Za-z_][A-Za-z0-9_]*$/.test(envName))
|
|
293
|
+
if (!envName || !/^[A-Za-z_][A-Za-z0-9_]*$/.test(envName)) {
|
|
294
|
+
throw new UsageError("set-env requires a valid environment variable name.");
|
|
295
|
+
}
|
|
226
296
|
const provider = getWebSearchProvider(flags, { envName });
|
|
227
297
|
const envReference = `$${envName}`;
|
|
228
298
|
const { path, scope } = selectWritePath(flags);
|
|
229
|
-
mutateConfig(path, (config) =>
|
|
230
|
-
setWebSearchCredential(config, provider, envReference);
|
|
231
|
-
});
|
|
299
|
+
mutateConfig(path, (config) => setWebSearchCredential(config, provider, envReference));
|
|
232
300
|
console.log(`Saved ${getWebSearchProviderLabel(provider)} ${scope} env reference to: ${path}`);
|
|
233
301
|
return;
|
|
234
302
|
}
|
|
235
303
|
if (action === "set-command") {
|
|
236
304
|
const provider = getWebSearchProvider(flags);
|
|
237
305
|
const command = args.slice(1).join(" ").trim();
|
|
238
|
-
if (!command)
|
|
306
|
+
if (!command) {
|
|
307
|
+
throw new UsageError("set-command requires a command string.");
|
|
308
|
+
}
|
|
239
309
|
const { path, scope } = selectWritePath(flags);
|
|
240
|
-
mutateConfig(path, (config) => {
|
|
241
|
-
setWebSearchCredential(config, provider, `!${command}`);
|
|
242
|
-
});
|
|
310
|
+
mutateConfig(path, (config) => setWebSearchCredential(config, provider, `!${command}`));
|
|
243
311
|
console.log(`Saved ${getWebSearchProviderLabel(provider)} ${scope} command source to: ${path}`);
|
|
244
312
|
return;
|
|
245
313
|
}
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
314
|
+
throw new UsageError(`Unsupported web-search action: ${action ?? ""}`);
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
function clearWebSearch(flags) {
|
|
318
|
+
const provider = getWebSearchProvider(flags, { allowAll: true });
|
|
319
|
+
const { path, scope } = selectWritePath(flags);
|
|
320
|
+
mutateConfig(path, (config) => {
|
|
321
|
+
const providers = provider === "all" ? WEB_SEARCH_PROVIDERS : [provider];
|
|
322
|
+
return providers.reduce(clearWebSearchCredential, config);
|
|
323
|
+
});
|
|
324
|
+
console.log(
|
|
325
|
+
`Cleared ${provider === "all" ? "all web-search" : getWebSearchProviderLabel(provider)} credential source in ${scope} config: ${path}`,
|
|
326
|
+
);
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
function handleWebSearchPreference(action, args, flags) {
|
|
259
330
|
if (action === "prefer") {
|
|
260
331
|
const provider = args[1];
|
|
261
|
-
if (!provider || (!isWebSearchProvider(provider) && provider !== "auto"))
|
|
332
|
+
if (!provider || (!isWebSearchProvider(provider) && provider !== "auto")) {
|
|
333
|
+
throw new UsageError("prefer requires exa, brave, or auto.");
|
|
334
|
+
}
|
|
262
335
|
const { path, scope } = selectWritePath(flags);
|
|
263
336
|
mutateConfig(path, (config) => {
|
|
264
|
-
|
|
265
|
-
if (provider === "auto")
|
|
266
|
-
|
|
337
|
+
const webSearch = { ...config.webSearch };
|
|
338
|
+
if (provider === "auto") {
|
|
339
|
+
delete webSearch.preferredProvider;
|
|
340
|
+
} else {
|
|
341
|
+
webSearch.preferredProvider = provider;
|
|
342
|
+
}
|
|
343
|
+
return { ...config, webSearch };
|
|
267
344
|
});
|
|
268
|
-
console.log(
|
|
345
|
+
console.log(
|
|
346
|
+
`${provider === "auto" ? "Cleared" : "Saved"} web-search preferred provider in ${scope} config: ${path}`,
|
|
347
|
+
);
|
|
269
348
|
return;
|
|
270
349
|
}
|
|
271
350
|
if (action === "enable" || action === "disable") {
|
|
272
351
|
const { path, scope } = selectWritePath(flags);
|
|
273
|
-
mutateConfig(path, (config) => {
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
352
|
+
mutateConfig(path, (config) => ({
|
|
353
|
+
...config,
|
|
354
|
+
webSearch: { ...config.webSearch, enabled: action === "enable" },
|
|
355
|
+
}));
|
|
356
|
+
console.log(
|
|
357
|
+
`${action === "enable" ? "Enabled" : "Disabled"} agent_browser_web_search in ${scope} config: ${path}`,
|
|
358
|
+
);
|
|
277
359
|
return;
|
|
278
360
|
}
|
|
279
361
|
throw new UsageError(`Unsupported web-search action: ${action ?? ""}`);
|
|
280
362
|
}
|
|
281
363
|
|
|
282
|
-
function
|
|
283
|
-
|
|
364
|
+
function clearBrowserSetting(config, key) {
|
|
365
|
+
if (!config.browser) {
|
|
366
|
+
return config;
|
|
367
|
+
}
|
|
368
|
+
const browser = { ...config.browser };
|
|
369
|
+
delete browser[key];
|
|
370
|
+
return { ...config, browser };
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
function handleBrowserProfile(args, flags) {
|
|
284
374
|
const action = args[1];
|
|
285
|
-
if (
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
375
|
+
if (action === "status") {
|
|
376
|
+
printStatus();
|
|
377
|
+
return;
|
|
378
|
+
}
|
|
379
|
+
if (action === "set") {
|
|
380
|
+
const name = args.slice(2).join(" ").trim();
|
|
381
|
+
if (!name) {
|
|
382
|
+
throw new UsageError(
|
|
383
|
+
"browser profile set requires a profile name or profile directory path.",
|
|
384
|
+
);
|
|
289
385
|
}
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
const policy = flags.get("--policy") || "authenticated-only";
|
|
294
|
-
if (!["explicit-only", "authenticated-only", "always"].includes(policy)) throw new UsageError("Invalid --policy value.");
|
|
295
|
-
const { path, scope } = selectWritePath(flags);
|
|
296
|
-
mutateConfig(path, (config) => {
|
|
297
|
-
config.browser = { ...(config.browser ?? {}), defaultProfile: { name, policy } };
|
|
298
|
-
});
|
|
299
|
-
console.log(`Saved browser default profile in ${scope} config: ${path}`);
|
|
300
|
-
return;
|
|
386
|
+
const policy = flags.get("--policy") || "authenticated-only";
|
|
387
|
+
if (!["explicit-only", "authenticated-only", "always"].includes(policy)) {
|
|
388
|
+
throw new UsageError("Invalid --policy value.");
|
|
301
389
|
}
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
390
|
+
const { path, scope } = selectWritePath(flags);
|
|
391
|
+
mutateConfig(path, (config) => ({
|
|
392
|
+
...config,
|
|
393
|
+
browser: { ...config.browser, defaultProfile: { name, policy } },
|
|
394
|
+
}));
|
|
395
|
+
console.log(`Saved browser default profile in ${scope} config: ${path}`);
|
|
396
|
+
return;
|
|
397
|
+
}
|
|
398
|
+
if (action === "clear") {
|
|
399
|
+
const { path, scope } = selectWritePath(flags);
|
|
400
|
+
mutateConfig(path, (config) => clearBrowserSetting(config, "defaultProfile"));
|
|
401
|
+
console.log(`Cleared browser default profile in ${scope} config: ${path}`);
|
|
402
|
+
return;
|
|
403
|
+
}
|
|
404
|
+
throw new UsageError(`Unsupported browser profile action: ${action ?? ""}`);
|
|
405
|
+
}
|
|
406
|
+
|
|
407
|
+
function handleBrowserExecutable(args, flags) {
|
|
408
|
+
const action = args[1];
|
|
409
|
+
if (action === "status") {
|
|
410
|
+
printStatus();
|
|
411
|
+
return;
|
|
412
|
+
}
|
|
413
|
+
if (action === "set") {
|
|
414
|
+
const executablePath = args.slice(2).join(" ").trim();
|
|
415
|
+
if (!executablePath) {
|
|
416
|
+
throw new UsageError("browser executable set requires a browser executable path.");
|
|
309
417
|
}
|
|
310
|
-
|
|
418
|
+
const { path, scope } = selectWritePath(flags);
|
|
419
|
+
mutateConfig(path, (config) => ({ ...config, browser: { ...config.browser, executablePath } }));
|
|
420
|
+
console.log(`Saved browser executable path in ${scope} config: ${path}`);
|
|
421
|
+
return;
|
|
422
|
+
}
|
|
423
|
+
if (action === "clear") {
|
|
424
|
+
const { path, scope } = selectWritePath(flags);
|
|
425
|
+
mutateConfig(path, (config) => clearBrowserSetting(config, "executablePath"));
|
|
426
|
+
console.log(`Cleared browser executable path in ${scope} config: ${path}`);
|
|
427
|
+
return;
|
|
428
|
+
}
|
|
429
|
+
throw new UsageError(`Unsupported browser executable action: ${action ?? ""}`);
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
function handleBrowser(args, flags) {
|
|
433
|
+
const target = args[0];
|
|
434
|
+
if (target === "profile") {
|
|
435
|
+
return handleBrowserProfile(args, flags);
|
|
311
436
|
}
|
|
312
437
|
if (target === "executable") {
|
|
313
|
-
|
|
314
|
-
printStatus();
|
|
315
|
-
return;
|
|
316
|
-
}
|
|
317
|
-
if (action === "set") {
|
|
318
|
-
const executablePath = args.slice(2).join(" ").trim();
|
|
319
|
-
if (!executablePath) throw new UsageError("browser executable set requires a browser executable path.");
|
|
320
|
-
const { path, scope } = selectWritePath(flags);
|
|
321
|
-
mutateConfig(path, (config) => {
|
|
322
|
-
config.browser = { ...(config.browser ?? {}), executablePath };
|
|
323
|
-
});
|
|
324
|
-
console.log(`Saved browser executable path in ${scope} config: ${path}`);
|
|
325
|
-
return;
|
|
326
|
-
}
|
|
327
|
-
if (action === "clear") {
|
|
328
|
-
const { path, scope } = selectWritePath(flags);
|
|
329
|
-
mutateConfig(path, (config) => {
|
|
330
|
-
if (config.browser) delete config.browser.executablePath;
|
|
331
|
-
});
|
|
332
|
-
console.log(`Cleared browser executable path in ${scope} config: ${path}`);
|
|
333
|
-
return;
|
|
334
|
-
}
|
|
335
|
-
throw new UsageError(`Unsupported browser executable action: ${action ?? ""}`);
|
|
438
|
+
return handleBrowserExecutable(args, flags);
|
|
336
439
|
}
|
|
337
440
|
throw new UsageError(`Unsupported browser action: ${target ?? ""}`);
|
|
338
441
|
}
|