pi-agent-browser-native 0.9.2 → 0.9.4
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 +91 -5
- package/README.md +120 -86
- package/dist/extensions/agent-browser/index.js +43065 -2016
- 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 +113 -49
- 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 -81
- 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 +218 -0
- package/dist/extensions/agent-browser/lib/config.js +19 -7
- package/dist/extensions/agent-browser/lib/electron/cdp.js +15 -7
- package/dist/extensions/agent-browser/lib/electron/cleanup.js +134 -55
- 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 +89 -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 +249 -354
- 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/input-modes/electron.js +162 -121
- package/dist/extensions/agent-browser/lib/input-modes/job.js +116 -313
- package/dist/extensions/agent-browser/lib/input-modes/lookup-network-evidence.js +104 -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 +57 -412
- package/dist/extensions/agent-browser/lib/input-modes/params.js +63 -17
- 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 +44 -9
- package/dist/extensions/agent-browser/lib/orchestration/batch-stdin.js +107 -66
- 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 +171 -57
- 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 +202 -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 +179 -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 +204 -108
- 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 -199
- 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 +138 -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 -1114
- 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 -910
- 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 +210 -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 +171 -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 -753
- 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 +92 -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 -816
- 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 +69 -0
- package/dist/extensions/agent-browser/lib/orchestration/electron-host/probe-data.js +167 -0
- package/dist/extensions/agent-browser/lib/orchestration/electron-host/probe-presentation.js +164 -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 +165 -0
- package/dist/extensions/agent-browser/lib/orchestration/execution-queue.js +21 -9
- 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 -139
- package/dist/extensions/agent-browser/lib/orchestration/operation-paths.js +124 -58
- package/dist/extensions/agent-browser/lib/orchestration/output-file.js +198 -98
- 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 +59 -243
- package/dist/extensions/agent-browser/lib/parsing.js +13 -4
- package/dist/extensions/agent-browser/lib/pi-tool-rendering.js +134 -68
- package/dist/extensions/agent-browser/lib/playbook.js +18 -14
- package/dist/extensions/agent-browser/lib/process-child.js +284 -0
- package/dist/extensions/agent-browser/lib/process-environment.js +22 -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 +146 -537
- 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 +138 -35
- 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 -10
- 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 +93 -66
- 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 -552
- 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 -1019
- 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 +117 -237
- package/dist/extensions/agent-browser/lib/results/presentation/semantic-action.js +35 -21
- package/dist/extensions/agent-browser/lib/results/presentation/skills.js +104 -73
- package/dist/extensions/agent-browser/lib/results/presentation/source.js +109 -0
- package/dist/extensions/agent-browser/lib/results/presentation.js +17 -248
- 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 +123 -123
- 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 -1037
- 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 +188 -324
- package/dist/extensions/agent-browser/lib/session-page-types.js +1 -0
- package/dist/extensions/agent-browser/lib/temp-artifact-budget.js +78 -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 +207 -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 +229 -0
- package/dist/extensions/agent-browser/lib/web-search-request.js +108 -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 +109 -617
- 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 +22 -10
- package/docs/CODE_QUALITY.md +242 -0
- package/docs/COMMAND_REFERENCE.md +264 -229
- package/docs/ELECTRON.md +53 -44
- package/docs/RELEASE.md +21 -17
- package/docs/REQUIREMENTS.md +2 -0
- package/docs/SESSION_STORAGE.md +1 -1
- package/docs/SUPPORT_MATRIX.md +84 -77
- package/docs/TOOL_CONTRACT.md +165 -130
- package/docs/platform-smoke.md +5 -5
- package/package.json +143 -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 +213 -114
- package/scripts/convert-browser-session.mjs +30 -9
- package/scripts/doctor-sources.mjs +195 -0
- package/scripts/doctor.mjs +92 -247
- 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 +134 -0
- package/scripts/platform-smoke/suite-checks.mjs +98 -0
- package/scripts/platform-smoke/suite-evidence.mjs +281 -0
- package/scripts/platform-smoke/targets.mjs +158 -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
|
|
|
@@ -81,27 +86,35 @@ function parseArgs(argv) {
|
|
|
81
86
|
positional.push(arg);
|
|
82
87
|
continue;
|
|
83
88
|
}
|
|
84
|
-
if (
|
|
89
|
+
if (["--global", "--project", "--stdin", "--help"].includes(arg)) {
|
|
85
90
|
flags.set(arg, true);
|
|
86
91
|
continue;
|
|
87
92
|
}
|
|
88
93
|
if (arg === "--policy" || arg === "--provider") {
|
|
89
94
|
const value = argv[index + 1];
|
|
90
|
-
if (!value || value.startsWith("--"))
|
|
95
|
+
if (!value || value.startsWith("--")) {
|
|
96
|
+
throw new UsageError(`${arg} requires a value.`);
|
|
97
|
+
}
|
|
91
98
|
flags.set(arg, value);
|
|
92
99
|
index += 1;
|
|
93
100
|
continue;
|
|
94
101
|
}
|
|
95
102
|
throw new UsageError(`Unknown option: ${arg}`);
|
|
96
103
|
}
|
|
97
|
-
if (flags.get("--global") && flags.get("--project"))
|
|
104
|
+
if (flags.get("--global") && flags.get("--project")) {
|
|
105
|
+
throw new UsageError("Use only one of --global or --project.");
|
|
106
|
+
}
|
|
98
107
|
return { flags, positional };
|
|
99
108
|
}
|
|
100
109
|
|
|
101
110
|
function readConfig(path) {
|
|
102
|
-
if (!existsSync(path))
|
|
111
|
+
if (!existsSync(path)) {
|
|
112
|
+
return { ...DEFAULT_CONFIG };
|
|
113
|
+
}
|
|
103
114
|
const parsed = JSON.parse(readFileSync(path, "utf8"));
|
|
104
|
-
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed))
|
|
115
|
+
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
|
|
116
|
+
throw new Error(`${path} must contain a JSON object.`);
|
|
117
|
+
}
|
|
105
118
|
return { ...DEFAULT_CONFIG, ...parsed };
|
|
106
119
|
}
|
|
107
120
|
|
|
@@ -118,36 +131,60 @@ function writeConfig(path, config) {
|
|
|
118
131
|
|
|
119
132
|
function selectWritePath(flags) {
|
|
120
133
|
const paths = getAgentBrowserConfigPaths();
|
|
121
|
-
if (flags.get("--project"))
|
|
134
|
+
if (flags.get("--project")) {
|
|
135
|
+
return { path: paths.project, scope: "project" };
|
|
136
|
+
}
|
|
122
137
|
return { path: paths.global, scope: "global" };
|
|
123
138
|
}
|
|
124
139
|
|
|
125
140
|
function validateWebSearchProviderArg(provider, { allowAll = false } = {}) {
|
|
126
|
-
if (isWebSearchProvider(provider) || (allowAll && provider === "all"))
|
|
127
|
-
|
|
141
|
+
if (isWebSearchProvider(provider) || (allowAll && provider === "all")) {
|
|
142
|
+
return provider;
|
|
143
|
+
}
|
|
144
|
+
throw new UsageError(
|
|
145
|
+
`--provider must be one of ${allowAll ? `${WEB_SEARCH_PROVIDERS.join(", ")}, all` : WEB_SEARCH_PROVIDERS.join(", ")}.`,
|
|
146
|
+
);
|
|
128
147
|
}
|
|
129
148
|
|
|
130
149
|
function inferWebSearchProviderFromEnvName(envName) {
|
|
131
150
|
for (const provider of WEB_SEARCH_PROVIDERS) {
|
|
132
|
-
if (envName === getWebSearchProviderEnvVar(provider))
|
|
151
|
+
if (envName === getWebSearchProviderEnvVar(provider)) {
|
|
152
|
+
return provider;
|
|
153
|
+
}
|
|
133
154
|
}
|
|
134
|
-
return
|
|
155
|
+
return;
|
|
135
156
|
}
|
|
136
157
|
|
|
137
158
|
function getWebSearchProvider(flags, options = {}) {
|
|
138
159
|
const configured = flags.get("--provider");
|
|
139
|
-
if (configured)
|
|
160
|
+
if (configured) {
|
|
161
|
+
return validateWebSearchProviderArg(configured, options);
|
|
162
|
+
}
|
|
140
163
|
const inferred = options.envName ? inferWebSearchProviderFromEnvName(options.envName) : undefined;
|
|
141
|
-
if (inferred)
|
|
142
|
-
|
|
164
|
+
if (inferred) {
|
|
165
|
+
return inferred;
|
|
166
|
+
}
|
|
167
|
+
throw new UsageError(
|
|
168
|
+
options.allowAll
|
|
169
|
+
? "--provider is required and must be exa, brave, or all."
|
|
170
|
+
: "--provider is required and must be exa or brave.",
|
|
171
|
+
);
|
|
143
172
|
}
|
|
144
173
|
|
|
145
174
|
function setWebSearchCredential(config, provider, value) {
|
|
146
|
-
|
|
175
|
+
return {
|
|
176
|
+
...config,
|
|
177
|
+
webSearch: { ...config.webSearch, [getWebSearchProviderConfigKey(provider)]: value },
|
|
178
|
+
};
|
|
147
179
|
}
|
|
148
180
|
|
|
149
181
|
function clearWebSearchCredential(config, provider) {
|
|
150
|
-
if (config.webSearch)
|
|
182
|
+
if (!config.webSearch) {
|
|
183
|
+
return config;
|
|
184
|
+
}
|
|
185
|
+
const webSearch = { ...config.webSearch };
|
|
186
|
+
delete webSearch[getWebSearchProviderConfigKey(provider)];
|
|
187
|
+
return { ...config, webSearch };
|
|
151
188
|
}
|
|
152
189
|
|
|
153
190
|
function printPaths() {
|
|
@@ -168,171 +205,233 @@ function printStatus() {
|
|
|
168
205
|
console.log("");
|
|
169
206
|
console.log("Effective config:");
|
|
170
207
|
console.log(` webSearch.enabled: ${state.webSearchEnabled ? "true" : "false"}`);
|
|
171
|
-
console.log(
|
|
172
|
-
|
|
208
|
+
console.log(
|
|
209
|
+
` webSearch.preferredProvider: ${state.config.webSearch?.preferredProvider ?? `auto (default ${DEFAULT_WEB_SEARCH_PROVIDER})`}`,
|
|
210
|
+
);
|
|
211
|
+
console.log(
|
|
212
|
+
` webSearch.defaultSearchType: ${state.config.webSearch?.defaultSearchType ?? "not configured (Exa auto)"}`,
|
|
213
|
+
);
|
|
173
214
|
for (const provider of WEB_SEARCH_PROVIDERS) {
|
|
174
215
|
const field = getWebSearchProviderConfigKey(provider);
|
|
175
|
-
console.log(
|
|
216
|
+
console.log(
|
|
217
|
+
` webSearch.${field}: ${getCredentialSourceSummary(state.webSearchCredentialSources[provider], provider)}`,
|
|
218
|
+
);
|
|
176
219
|
}
|
|
177
220
|
console.log(` browser.defaultProfile: ${formatBrowserProfileStatus(state)}`);
|
|
178
221
|
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}`);
|
|
222
|
+
if (state.layers.length === 0) {
|
|
223
|
+
console.log(" layers: none");
|
|
184
224
|
}
|
|
185
|
-
|
|
225
|
+
printDiagnostics("Warnings", state.warnings);
|
|
226
|
+
printDiagnostics("Validation errors", state.errors);
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
function printDiagnostics(label, diagnostics) {
|
|
230
|
+
if (diagnostics.length > 0) {
|
|
186
231
|
console.log("");
|
|
187
|
-
console.log(
|
|
188
|
-
for (const
|
|
232
|
+
console.log(`${label}:`);
|
|
233
|
+
for (const diagnostic of diagnostics) {
|
|
234
|
+
console.log(` - ${diagnostic}`);
|
|
235
|
+
}
|
|
189
236
|
}
|
|
190
237
|
}
|
|
191
238
|
|
|
192
239
|
async function readSecretFromStdin(useStdin) {
|
|
193
|
-
if (!useStdin)
|
|
240
|
+
if (!useStdin) {
|
|
241
|
+
throw new UsageError(
|
|
242
|
+
"set-key requires --stdin so the key is not passed through argv or an echoed prompt.",
|
|
243
|
+
);
|
|
244
|
+
}
|
|
194
245
|
let input = "";
|
|
195
|
-
for await (const chunk of process.stdin)
|
|
246
|
+
for await (const chunk of process.stdin) {
|
|
247
|
+
input += chunk;
|
|
248
|
+
}
|
|
196
249
|
const value = input.trim();
|
|
197
|
-
if (!value)
|
|
250
|
+
if (!value) {
|
|
251
|
+
throw new UsageError("No key was provided on stdin.");
|
|
252
|
+
}
|
|
198
253
|
return value;
|
|
199
254
|
}
|
|
200
255
|
|
|
201
256
|
function mutateConfig(path, mutate) {
|
|
202
257
|
const config = readConfig(path);
|
|
203
|
-
mutate(config);
|
|
204
|
-
writeConfig(path, config);
|
|
258
|
+
writeConfig(path, mutate(config));
|
|
205
259
|
}
|
|
206
260
|
|
|
207
261
|
async function handleWebSearch(args, flags) {
|
|
208
262
|
const action = args[0];
|
|
263
|
+
if (action === "prefer" || action === "enable" || action === "disable") {
|
|
264
|
+
handleWebSearchPreference(action, args, flags);
|
|
265
|
+
return;
|
|
266
|
+
}
|
|
209
267
|
if (action === "status") {
|
|
210
268
|
printStatus();
|
|
211
269
|
return;
|
|
212
270
|
}
|
|
271
|
+
if (action === "clear") {
|
|
272
|
+
clearWebSearch(flags);
|
|
273
|
+
return;
|
|
274
|
+
}
|
|
275
|
+
await handleWebSearchCredential(action, args, flags);
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
async function handleWebSearchCredential(action, args, flags) {
|
|
213
279
|
if (action === "set-key") {
|
|
214
280
|
const provider = getWebSearchProvider(flags);
|
|
215
281
|
const key = await readSecretFromStdin(Boolean(flags.get("--stdin")));
|
|
216
282
|
const { path, scope } = selectWritePath(flags);
|
|
217
|
-
mutateConfig(path, (config) =>
|
|
218
|
-
setWebSearchCredential(config, provider, key);
|
|
219
|
-
});
|
|
283
|
+
mutateConfig(path, (config) => setWebSearchCredential(config, provider, key));
|
|
220
284
|
console.log(`Saved ${getWebSearchProviderLabel(provider)} key to ${scope} config: ${path}`);
|
|
221
285
|
return;
|
|
222
286
|
}
|
|
223
287
|
if (action === "set-env") {
|
|
224
288
|
const envName = args[1];
|
|
225
|
-
if (!envName || !/^[A-Za-z_][A-Za-z0-9_]*$/.test(envName))
|
|
289
|
+
if (!envName || !/^[A-Za-z_][A-Za-z0-9_]*$/.test(envName)) {
|
|
290
|
+
throw new UsageError("set-env requires a valid environment variable name.");
|
|
291
|
+
}
|
|
226
292
|
const provider = getWebSearchProvider(flags, { envName });
|
|
227
293
|
const envReference = `$${envName}`;
|
|
228
294
|
const { path, scope } = selectWritePath(flags);
|
|
229
|
-
mutateConfig(path, (config) =>
|
|
230
|
-
setWebSearchCredential(config, provider, envReference);
|
|
231
|
-
});
|
|
295
|
+
mutateConfig(path, (config) => setWebSearchCredential(config, provider, envReference));
|
|
232
296
|
console.log(`Saved ${getWebSearchProviderLabel(provider)} ${scope} env reference to: ${path}`);
|
|
233
297
|
return;
|
|
234
298
|
}
|
|
235
299
|
if (action === "set-command") {
|
|
236
300
|
const provider = getWebSearchProvider(flags);
|
|
237
301
|
const command = args.slice(1).join(" ").trim();
|
|
238
|
-
if (!command)
|
|
302
|
+
if (!command) {
|
|
303
|
+
throw new UsageError("set-command requires a command string.");
|
|
304
|
+
}
|
|
239
305
|
const { path, scope } = selectWritePath(flags);
|
|
240
|
-
mutateConfig(path, (config) => {
|
|
241
|
-
setWebSearchCredential(config, provider, `!${command}`);
|
|
242
|
-
});
|
|
306
|
+
mutateConfig(path, (config) => setWebSearchCredential(config, provider, `!${command}`));
|
|
243
307
|
console.log(`Saved ${getWebSearchProviderLabel(provider)} ${scope} command source to: ${path}`);
|
|
244
308
|
return;
|
|
245
309
|
}
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
310
|
+
throw new UsageError(`Unsupported web-search action: ${action ?? ""}`);
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
function clearWebSearch(flags) {
|
|
314
|
+
const provider = getWebSearchProvider(flags, { allowAll: true });
|
|
315
|
+
const { path, scope } = selectWritePath(flags);
|
|
316
|
+
mutateConfig(path, (config) => {
|
|
317
|
+
const providers = provider === "all" ? WEB_SEARCH_PROVIDERS : [provider];
|
|
318
|
+
return providers.reduce(clearWebSearchCredential, config);
|
|
319
|
+
});
|
|
320
|
+
console.log(
|
|
321
|
+
`Cleared ${provider === "all" ? "all web-search" : getWebSearchProviderLabel(provider)} credential source in ${scope} config: ${path}`,
|
|
322
|
+
);
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
function handleWebSearchPreference(action, args, flags) {
|
|
259
326
|
if (action === "prefer") {
|
|
260
327
|
const provider = args[1];
|
|
261
|
-
if (!provider || (!isWebSearchProvider(provider) && provider !== "auto"))
|
|
328
|
+
if (!provider || (!isWebSearchProvider(provider) && provider !== "auto")) {
|
|
329
|
+
throw new UsageError("prefer requires exa, brave, or auto.");
|
|
330
|
+
}
|
|
262
331
|
const { path, scope } = selectWritePath(flags);
|
|
263
332
|
mutateConfig(path, (config) => {
|
|
264
|
-
|
|
265
|
-
if (provider === "auto")
|
|
266
|
-
|
|
333
|
+
const webSearch = { ...config.webSearch };
|
|
334
|
+
if (provider === "auto") {
|
|
335
|
+
delete webSearch.preferredProvider;
|
|
336
|
+
} else {
|
|
337
|
+
webSearch.preferredProvider = provider;
|
|
338
|
+
}
|
|
339
|
+
return { ...config, webSearch };
|
|
267
340
|
});
|
|
268
|
-
console.log(
|
|
341
|
+
console.log(
|
|
342
|
+
`${provider === "auto" ? "Cleared" : "Saved"} web-search preferred provider in ${scope} config: ${path}`,
|
|
343
|
+
);
|
|
269
344
|
return;
|
|
270
345
|
}
|
|
271
346
|
if (action === "enable" || action === "disable") {
|
|
272
347
|
const { path, scope } = selectWritePath(flags);
|
|
273
|
-
mutateConfig(path, (config) => {
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
348
|
+
mutateConfig(path, (config) => ({
|
|
349
|
+
...config,
|
|
350
|
+
webSearch: { ...config.webSearch, enabled: action === "enable" },
|
|
351
|
+
}));
|
|
352
|
+
console.log(
|
|
353
|
+
`${action === "enable" ? "Enabled" : "Disabled"} agent_browser_web_search in ${scope} config: ${path}`,
|
|
354
|
+
);
|
|
277
355
|
return;
|
|
278
356
|
}
|
|
279
357
|
throw new UsageError(`Unsupported web-search action: ${action ?? ""}`);
|
|
280
358
|
}
|
|
281
359
|
|
|
282
|
-
function
|
|
283
|
-
|
|
360
|
+
function clearBrowserSetting(config, key) {
|
|
361
|
+
if (!config.browser) {
|
|
362
|
+
return config;
|
|
363
|
+
}
|
|
364
|
+
const browser = { ...config.browser };
|
|
365
|
+
delete browser[key];
|
|
366
|
+
return { ...config, browser };
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
function handleBrowserProfile(args, flags) {
|
|
284
370
|
const action = args[1];
|
|
285
|
-
if (
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
371
|
+
if (action === "status") {
|
|
372
|
+
printStatus();
|
|
373
|
+
return;
|
|
374
|
+
}
|
|
375
|
+
if (action === "set") {
|
|
376
|
+
const name = args.slice(2).join(" ").trim();
|
|
377
|
+
if (!name) {
|
|
378
|
+
throw new UsageError(
|
|
379
|
+
"browser profile set requires a profile name or profile directory path.",
|
|
380
|
+
);
|
|
289
381
|
}
|
|
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;
|
|
382
|
+
const policy = flags.get("--policy") || "authenticated-only";
|
|
383
|
+
if (!["explicit-only", "authenticated-only", "always"].includes(policy)) {
|
|
384
|
+
throw new UsageError("Invalid --policy value.");
|
|
301
385
|
}
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
386
|
+
const { path, scope } = selectWritePath(flags);
|
|
387
|
+
mutateConfig(path, (config) => ({
|
|
388
|
+
...config,
|
|
389
|
+
browser: { ...config.browser, defaultProfile: { name, policy } },
|
|
390
|
+
}));
|
|
391
|
+
console.log(`Saved browser default profile in ${scope} config: ${path}`);
|
|
392
|
+
return;
|
|
393
|
+
}
|
|
394
|
+
if (action === "clear") {
|
|
395
|
+
const { path, scope } = selectWritePath(flags);
|
|
396
|
+
mutateConfig(path, (config) => clearBrowserSetting(config, "defaultProfile"));
|
|
397
|
+
console.log(`Cleared browser default profile in ${scope} config: ${path}`);
|
|
398
|
+
return;
|
|
399
|
+
}
|
|
400
|
+
throw new UsageError(`Unsupported browser profile action: ${action ?? ""}`);
|
|
401
|
+
}
|
|
402
|
+
|
|
403
|
+
function handleBrowserExecutable(args, flags) {
|
|
404
|
+
const action = args[1];
|
|
405
|
+
if (action === "status") {
|
|
406
|
+
printStatus();
|
|
407
|
+
return;
|
|
408
|
+
}
|
|
409
|
+
if (action === "set") {
|
|
410
|
+
const executablePath = args.slice(2).join(" ").trim();
|
|
411
|
+
if (!executablePath) {
|
|
412
|
+
throw new UsageError("browser executable set requires a browser executable path.");
|
|
309
413
|
}
|
|
310
|
-
|
|
414
|
+
const { path, scope } = selectWritePath(flags);
|
|
415
|
+
mutateConfig(path, (config) => ({ ...config, browser: { ...config.browser, executablePath } }));
|
|
416
|
+
console.log(`Saved browser executable path in ${scope} config: ${path}`);
|
|
417
|
+
return;
|
|
418
|
+
}
|
|
419
|
+
if (action === "clear") {
|
|
420
|
+
const { path, scope } = selectWritePath(flags);
|
|
421
|
+
mutateConfig(path, (config) => clearBrowserSetting(config, "executablePath"));
|
|
422
|
+
console.log(`Cleared browser executable path in ${scope} config: ${path}`);
|
|
423
|
+
return;
|
|
424
|
+
}
|
|
425
|
+
throw new UsageError(`Unsupported browser executable action: ${action ?? ""}`);
|
|
426
|
+
}
|
|
427
|
+
|
|
428
|
+
function handleBrowser(args, flags) {
|
|
429
|
+
const target = args[0];
|
|
430
|
+
if (target === "profile") {
|
|
431
|
+
return handleBrowserProfile(args, flags);
|
|
311
432
|
}
|
|
312
433
|
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 ?? ""}`);
|
|
434
|
+
return handleBrowserExecutable(args, flags);
|
|
336
435
|
}
|
|
337
436
|
throw new UsageError(`Unsupported browser action: ${target ?? ""}`);
|
|
338
437
|
}
|
|
@@ -2,19 +2,40 @@
|
|
|
2
2
|
import { writeFile } from "node:fs/promises";
|
|
3
3
|
import { parseArgs } from "node:util";
|
|
4
4
|
|
|
5
|
-
const { values } = parseArgs({
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
const { values } = parseArgs({
|
|
6
|
+
options: {
|
|
7
|
+
source: { type: "string" },
|
|
8
|
+
output: { type: "string" },
|
|
9
|
+
receipt: { type: "string" },
|
|
10
|
+
"confirm-stopped": { type: "boolean" },
|
|
11
|
+
help: { type: "boolean", short: "h" },
|
|
12
|
+
},
|
|
13
|
+
});
|
|
9
14
|
if (values.help) {
|
|
10
|
-
console.log(
|
|
15
|
+
console.log(
|
|
16
|
+
"Usage: pi-agent-browser-convert --source <retained.jsonl> --output <private-archive/copy.jsonl> --confirm-stopped [--receipt <new.json>]\nStop/quiesce the exact writer first. This offline command never starts Pi, a provider or a browser, never edits the source, and publishes only a separate private copy. Keep the destination outside automatic session discovery until explicitly selected. The receipt and each converted record identify the retained source checksum/byte range.",
|
|
17
|
+
);
|
|
11
18
|
} else {
|
|
12
19
|
try {
|
|
13
|
-
if (!values.source || !values.output)
|
|
14
|
-
|
|
15
|
-
|
|
20
|
+
if (!values.source || !values.output) {
|
|
21
|
+
throw new Error(
|
|
22
|
+
"--source and --output are required; use --help for the stopped-writer workflow.",
|
|
23
|
+
);
|
|
24
|
+
}
|
|
25
|
+
const { convertBrowserSession } =
|
|
26
|
+
await import("../dist/extensions/agent-browser/lib/browser-session-conversion.js");
|
|
27
|
+
const receipt = await convertBrowserSession({
|
|
28
|
+
source: values.source,
|
|
29
|
+
destination: values.output,
|
|
30
|
+
confirmedStopped: values["confirm-stopped"] === true,
|
|
31
|
+
});
|
|
16
32
|
console.log(JSON.stringify(receipt, null, 2));
|
|
17
|
-
if (values.receipt)
|
|
33
|
+
if (values.receipt) {
|
|
34
|
+
await writeFile(values.receipt, `${JSON.stringify(receipt, null, 2)}\n`, {
|
|
35
|
+
flag: "wx",
|
|
36
|
+
mode: 0o600,
|
|
37
|
+
});
|
|
38
|
+
}
|
|
18
39
|
} catch (error) {
|
|
19
40
|
console.error(error instanceof Error ? error.message : String(error));
|
|
20
41
|
process.exitCode = 1;
|