pi-agent-browser-native 0.9.5 → 0.9.7
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 +114 -1
- package/README.md +17 -6
- package/dist/extensions/agent-browser/index.js +2482 -925
- package/dist/packaged/lib/browser-session-conversion.js +2946 -0
- package/dist/packaged/lib/config-policy.js +599 -0
- package/dist/packaged/lib/parsing.js +34 -0
- package/dist/packaged/lib/playbook.js +728 -0
- package/dist/packaged/lib/results/snapshot.js +2800 -0
- package/dist/packaged/lib/runtime.js +3075 -0
- package/docs/ARCHITECTURE.md +29 -10
- package/docs/CODE_QUALITY.md +32 -5
- package/docs/COMMAND_REFERENCE.md +156 -40
- package/docs/ELECTRON.md +1 -1
- package/docs/PERFORMANCE.md +252 -0
- package/docs/REFERENCE.md +15 -15
- package/docs/RELEASE.md +41 -18
- package/docs/REQUIREMENTS.md +6 -0
- package/docs/SESSION_STORAGE.md +13 -5
- package/docs/SUPPORT_MATRIX.md +31 -25
- package/docs/TOOL_CONTRACT.md +41 -18
- package/docs/performance/2026-10-12.json +7257 -0
- package/docs/platform-smoke.md +18 -14
- package/package.json +18 -4
- package/platform-smoke.config.mjs +3 -2
- package/scripts/agent-browser-capability-baseline.mjs +16 -2
- package/scripts/agent-browser-target.mjs +1 -1
- package/scripts/build.mjs +16 -5
- package/scripts/capability-options.mjs +20 -0
- package/scripts/capability-samples.mjs +23 -10
- package/scripts/config.mjs +1 -1
- package/scripts/convert-browser-session.mjs +1 -1
- package/scripts/platform-smoke/commands.mjs +30 -4
- package/scripts/platform-smoke/doctor-support.mjs +11 -2
- package/scripts/platform-smoke/doctor-windows.mjs +1 -1
- package/scripts/platform-smoke/doctor.mjs +26 -11
- package/scripts/platform-smoke/linux-image/Dockerfile +6 -3
- package/scripts/platform-smoke/platform-build-windows.ps1 +23 -3
- package/scripts/platform-smoke/suite-checks.mjs +11 -1
- package/scripts/platform-smoke/targets.mjs +4 -3
- package/scripts/platform-smoke.mjs +68 -25
- package/dist/extensions/agent-browser/lib/argv-descriptor.js +0 -123
- package/dist/extensions/agent-browser/lib/argv-grammar.js +0 -320
- package/dist/extensions/agent-browser/lib/bash-guard.js +0 -193
- package/dist/extensions/agent-browser/lib/batch-lifecycle.js +0 -131
- package/dist/extensions/agent-browser/lib/browser-execution-claim-codec.js +0 -61
- package/dist/extensions/agent-browser/lib/browser-execution-claim-storage.js +0 -232
- package/dist/extensions/agent-browser/lib/browser-execution-claims.js +0 -202
- package/dist/extensions/agent-browser/lib/browser-execution-identity.js +0 -77
- package/dist/extensions/agent-browser/lib/browser-journal-branch.js +0 -98
- package/dist/extensions/agent-browser/lib/browser-journal-contracts.js +0 -1
- package/dist/extensions/agent-browser/lib/browser-journal-projection.js +0 -221
- package/dist/extensions/agent-browser/lib/browser-journal-reader.js +0 -89
- package/dist/extensions/agent-browser/lib/browser-journal-replay.js +0 -246
- package/dist/extensions/agent-browser/lib/browser-journal.js +0 -148
- package/dist/extensions/agent-browser/lib/browser-legacy-pages.js +0 -220
- package/dist/extensions/agent-browser/lib/browser-legacy-projection.js +0 -282
- package/dist/extensions/agent-browser/lib/browser-legacy-types.js +0 -1
- package/dist/extensions/agent-browser/lib/browser-session-conversion-stream.js +0 -217
- package/dist/extensions/agent-browser/lib/browser-session-conversion.js +0 -126
- package/dist/extensions/agent-browser/lib/browser-transcript-contracts.js +0 -35
- package/dist/extensions/agent-browser/lib/browser-transcript-validation.js +0 -166
- package/dist/extensions/agent-browser/lib/browser-transcript.js +0 -189
- package/dist/extensions/agent-browser/lib/browser-value-parsing.js +0 -15
- package/dist/extensions/agent-browser/lib/command-capabilities.js +0 -340
- package/dist/extensions/agent-browser/lib/command-policy.js +0 -155
- package/dist/extensions/agent-browser/lib/command-taxonomy.js +0 -105
- package/dist/extensions/agent-browser/lib/config-policy.js +0 -450
- package/dist/extensions/agent-browser/lib/config-providers.js +0 -71
- package/dist/extensions/agent-browser/lib/config-validation.js +0 -231
- package/dist/extensions/agent-browser/lib/config.js +0 -69
- package/dist/extensions/agent-browser/lib/electron/cdp.js +0 -62
- package/dist/extensions/agent-browser/lib/electron/cleanup.js +0 -274
- package/dist/extensions/agent-browser/lib/electron/discovery-darwin.js +0 -109
- package/dist/extensions/agent-browser/lib/electron/discovery-desktop.js +0 -136
- package/dist/extensions/agent-browser/lib/electron/discovery-evidence.js +0 -90
- package/dist/extensions/agent-browser/lib/electron/discovery-linux.js +0 -93
- package/dist/extensions/agent-browser/lib/electron/discovery-packages.js +0 -162
- package/dist/extensions/agent-browser/lib/electron/discovery-types.js +0 -2
- package/dist/extensions/agent-browser/lib/electron/discovery.js +0 -217
- package/dist/extensions/agent-browser/lib/electron/launch-monitor.js +0 -102
- package/dist/extensions/agent-browser/lib/electron/launch-process.js +0 -209
- package/dist/extensions/agent-browser/lib/electron/launch-types.js +0 -2
- package/dist/extensions/agent-browser/lib/electron/launch.js +0 -340
- package/dist/extensions/agent-browser/lib/executable-path.js +0 -29
- package/dist/extensions/agent-browser/lib/execution-cwd.js +0 -67
- package/dist/extensions/agent-browser/lib/fs-utils.js +0 -10
- package/dist/extensions/agent-browser/lib/input-modes/electron.js +0 -201
- package/dist/extensions/agent-browser/lib/input-modes/job.js +0 -198
- package/dist/extensions/agent-browser/lib/input-modes/lookup-network-evidence.js +0 -116
- package/dist/extensions/agent-browser/lib/input-modes/lookup-plan.js +0 -132
- package/dist/extensions/agent-browser/lib/input-modes/lookup-redaction.js +0 -57
- package/dist/extensions/agent-browser/lib/input-modes/lookup-source-evidence.js +0 -151
- package/dist/extensions/agent-browser/lib/input-modes/lookup-workspace.js +0 -142
- package/dist/extensions/agent-browser/lib/input-modes/lookups.js +0 -84
- package/dist/extensions/agent-browser/lib/input-modes/params.js +0 -195
- package/dist/extensions/agent-browser/lib/input-modes/qa-analysis.js +0 -268
- package/dist/extensions/agent-browser/lib/input-modes/qa-presentation.js +0 -117
- package/dist/extensions/agent-browser/lib/input-modes/script-child.js +0 -396
- package/dist/extensions/agent-browser/lib/input-modes/script-protocol.js +0 -86
- package/dist/extensions/agent-browser/lib/input-modes/script-types.js +0 -1
- package/dist/extensions/agent-browser/lib/input-modes/script-validation.js +0 -60
- package/dist/extensions/agent-browser/lib/input-modes/script.js +0 -108
- package/dist/extensions/agent-browser/lib/input-modes/semantic-action.js +0 -243
- package/dist/extensions/agent-browser/lib/input-modes/shared.js +0 -48
- package/dist/extensions/agent-browser/lib/input-modes/types.js +0 -65
- package/dist/extensions/agent-browser/lib/json-schema.js +0 -65
- package/dist/extensions/agent-browser/lib/launch-scoped-flags.js +0 -212
- package/dist/extensions/agent-browser/lib/managed-session-policy-lock.js +0 -165
- package/dist/extensions/agent-browser/lib/managed-session-posix-storage.js +0 -58
- package/dist/extensions/agent-browser/lib/managed-session-project-identity.js +0 -244
- package/dist/extensions/agent-browser/lib/managed-session-restore-context.js +0 -84
- package/dist/extensions/agent-browser/lib/managed-session-restore-policy.js +0 -119
- package/dist/extensions/agent-browser/lib/managed-session-restore-state.js +0 -83
- package/dist/extensions/agent-browser/lib/managed-session-restore.js +0 -212
- package/dist/extensions/agent-browser/lib/managed-session-snapshot-records.js +0 -277
- package/dist/extensions/agent-browser/lib/managed-session-snapshots.js +0 -181
- package/dist/extensions/agent-browser/lib/managed-session-storage.js +0 -126
- package/dist/extensions/agent-browser/lib/native-confirmation.js +0 -140
- package/dist/extensions/agent-browser/lib/native-output.js +0 -81
- package/dist/extensions/agent-browser/lib/orchestration/batch-stdin.js +0 -182
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/artifact-merge.js +0 -30
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/artifact-paths.js +0 -188
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/browser-observation-result.js +0 -82
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/click-dispatch.js +0 -406
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/diagnostic-values.js +0 -31
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/diagnostics.js +0 -240
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/electron-observation.js +0 -203
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/electron-text-diagnostics.js +0 -109
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/fill-diagnostics.js +0 -119
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/final-result-action-recovery.js +0 -147
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/final-result-actions.js +0 -144
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/final-result-content.js +0 -123
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/final-result-contracts.js +0 -1
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/final-result-details.js +0 -156
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/final-result-electron.js +0 -187
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/final-result-evidence.js +0 -39
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/final-result-missing-binary.js +0 -89
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/final-result-recovery.js +0 -97
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/final-result-redaction.js +0 -106
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/final-result-timeout.js +0 -110
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/final-result.js +0 -53
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/index.js +0 -224
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/interaction-diagnostics.js +0 -290
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/managed-session-close.js +0 -167
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/managed-session-daemon-inspection.js +0 -108
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/managed-session-daemon-policy.js +0 -174
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/native-helper-observation.js +0 -65
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/observation-types.js +0 -1
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/overlay-diagnostics.js +0 -120
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/prepare/network-page-filter.js +0 -192
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/prepare/scroll-shims.js +0 -225
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/prepare/snapshot-filter-data.js +0 -150
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/prepare/snapshot-filter.js +0 -174
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/prepare/snapshot-rendered-text.js +0 -147
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/prepare/wait-timeouts.js +0 -145
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/prepare-artifacts.js +0 -159
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/prepare-command.js +0 -131
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/prepare-contracts.js +0 -1
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/prepare-daemon.js +0 -93
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/prepare-failure.js +0 -42
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/prepare-guards.js +0 -242
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/prepare-input.js +0 -75
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/prepare-observations.js +0 -92
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/prepare-page-selection.js +0 -254
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/prepare-page-state.js +0 -121
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/prepare-refs.js +0 -130
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/prepare-resources.js +0 -114
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/prepare-semantic.js +0 -121
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/prepare-session-plan.js +0 -222
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/prepare-timeouts.js +0 -68
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/prepare.js +0 -202
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-analysis.js +0 -191
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-confirmation.js +0 -152
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-diagnostics.js +0 -182
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-electron.js +0 -150
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-lifecycle-contracts.js +0 -1
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-lifecycle-phase-contracts.js +0 -1
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-lifecycle-phase.js +0 -115
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-lifecycle.js +0 -256
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-managed-contracts.js +0 -1
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-managed.js +0 -256
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-native-phase-contracts.js +0 -1
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-native-phase.js +0 -93
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-native.js +0 -113
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-navigation-contracts.js +0 -1
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-navigation.js +0 -316
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-ownership.js +0 -28
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-page-phase-contracts.js +0 -1
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-page-phase.js +0 -142
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-presentation-contracts.js +0 -1
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-presentation.js +0 -333
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-publication-phase-contracts.js +0 -1
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-publication-phase.js +0 -71
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-publication.js +0 -201
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-receipts.js +0 -183
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-refs.js +0 -200
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output-tabs.js +0 -142
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/process-output.js +0 -25
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/prompt-guards.js +0 -50
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/recording-receipt-reconciliation.js +0 -198
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/recording-recovery-contracts.js +0 -1
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/recording-recovery-presentation.js +0 -154
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/recording-recovery.js +0 -80
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/screenshot-capture.js +0 -14
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/screenshot-observation.js +0 -206
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/session-state-commands.js +0 -130
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/session-state-electron.js +0 -212
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/session-state-observations.js +0 -61
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/session-state-outcomes.js +0 -187
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/session-state-refs.js +0 -169
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/session-state-tabs.js +0 -228
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/session-state.js +0 -117
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/text-visibility-diagnostics.js +0 -182
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/timeout-diagnostics.js +0 -256
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/timeout-progress.js +0 -108
- package/dist/extensions/agent-browser/lib/orchestration/browser-run/types.js +0 -1
- package/dist/extensions/agent-browser/lib/orchestration/code-artifact-observation.js +0 -39
- package/dist/extensions/agent-browser/lib/orchestration/code-image-observation.js +0 -119
- package/dist/extensions/agent-browser/lib/orchestration/electron-host/branch.js +0 -93
- package/dist/extensions/agent-browser/lib/orchestration/electron-host/cleanup-result.js +0 -58
- package/dist/extensions/agent-browser/lib/orchestration/electron-host/cleanup.js +0 -78
- package/dist/extensions/agent-browser/lib/orchestration/electron-host/contracts.js +0 -1
- package/dist/extensions/agent-browser/lib/orchestration/electron-host/discovery.js +0 -106
- package/dist/extensions/agent-browser/lib/orchestration/electron-host/index.js +0 -60
- package/dist/extensions/agent-browser/lib/orchestration/electron-host/policy.js +0 -86
- package/dist/extensions/agent-browser/lib/orchestration/electron-host/probe-collection.js +0 -68
- package/dist/extensions/agent-browser/lib/orchestration/electron-host/probe-data.js +0 -169
- package/dist/extensions/agent-browser/lib/orchestration/electron-host/probe-presentation.js +0 -182
- package/dist/extensions/agent-browser/lib/orchestration/electron-host/probe.js +0 -161
- package/dist/extensions/agent-browser/lib/orchestration/electron-host/status.js +0 -167
- package/dist/extensions/agent-browser/lib/orchestration/execution-queue.js +0 -98
- package/dist/extensions/agent-browser/lib/orchestration/extension-artifact-preflight.js +0 -211
- package/dist/extensions/agent-browser/lib/orchestration/extension-artifacts.js +0 -23
- package/dist/extensions/agent-browser/lib/orchestration/extension-attachment-replay.js +0 -99
- package/dist/extensions/agent-browser/lib/orchestration/extension-branch-restore.js +0 -275
- package/dist/extensions/agent-browser/lib/orchestration/extension-code.js +0 -280
- package/dist/extensions/agent-browser/lib/orchestration/extension-command-admission.js +0 -303
- package/dist/extensions/agent-browser/lib/orchestration/extension-command-output.js +0 -36
- package/dist/extensions/agent-browser/lib/orchestration/extension-command-result.js +0 -335
- package/dist/extensions/agent-browser/lib/orchestration/extension-command-run.js +0 -227
- package/dist/extensions/agent-browser/lib/orchestration/extension-command-state.js +0 -1
- package/dist/extensions/agent-browser/lib/orchestration/extension-electron-ownership.js +0 -204
- package/dist/extensions/agent-browser/lib/orchestration/extension-execution-locks.js +0 -139
- package/dist/extensions/agent-browser/lib/orchestration/extension-execution-queue.js +0 -24
- package/dist/extensions/agent-browser/lib/orchestration/extension-host-coordination.js +0 -98
- package/dist/extensions/agent-browser/lib/orchestration/extension-host-run.js +0 -295
- package/dist/extensions/agent-browser/lib/orchestration/extension-intent-replay.js +0 -41
- package/dist/extensions/agent-browser/lib/orchestration/extension-invocation.js +0 -7
- package/dist/extensions/agent-browser/lib/orchestration/extension-lifecycle.js +0 -102
- package/dist/extensions/agent-browser/lib/orchestration/extension-managed-ownership.js +0 -133
- package/dist/extensions/agent-browser/lib/orchestration/extension-observation.js +0 -120
- package/dist/extensions/agent-browser/lib/orchestration/extension-prompt.js +0 -180
- package/dist/extensions/agent-browser/lib/orchestration/extension-recording.js +0 -290
- package/dist/extensions/agent-browser/lib/orchestration/extension-resource-contracts.js +0 -1
- package/dist/extensions/agent-browser/lib/orchestration/extension-resource-replay.js +0 -269
- package/dist/extensions/agent-browser/lib/orchestration/extension-result-state.js +0 -113
- package/dist/extensions/agent-browser/lib/orchestration/extension-runtime.js +0 -146
- package/dist/extensions/agent-browser/lib/orchestration/extension-script-leases.js +0 -58
- package/dist/extensions/agent-browser/lib/orchestration/extension-tool-boundary.js +0 -62
- package/dist/extensions/agent-browser/lib/orchestration/extension-version-check.js +0 -54
- package/dist/extensions/agent-browser/lib/orchestration/input-plan-types.js +0 -1
- package/dist/extensions/agent-browser/lib/orchestration/input-plan.js +0 -313
- package/dist/extensions/agent-browser/lib/orchestration/input-redaction.js +0 -62
- package/dist/extensions/agent-browser/lib/orchestration/native-config.js +0 -144
- package/dist/extensions/agent-browser/lib/orchestration/native-root-launch.js +0 -77
- package/dist/extensions/agent-browser/lib/orchestration/native-session-defaults.js +0 -231
- package/dist/extensions/agent-browser/lib/orchestration/operation-paths.js +0 -142
- package/dist/extensions/agent-browser/lib/orchestration/output-file.js +0 -276
- package/dist/extensions/agent-browser/lib/orchestration/script-mode.js +0 -220
- package/dist/extensions/agent-browser/lib/owned-managed-session-context.js +0 -55
- package/dist/extensions/agent-browser/lib/page-target-batch.js +0 -118
- package/dist/extensions/agent-browser/lib/page-target-guards.js +0 -50
- package/dist/extensions/agent-browser/lib/page-target-navigation.js +0 -104
- package/dist/extensions/agent-browser/lib/page-target-validation.js +0 -90
- package/dist/extensions/agent-browser/lib/parsing.js +0 -30
- package/dist/extensions/agent-browser/lib/pi-tool-rendering.js +0 -343
- package/dist/extensions/agent-browser/lib/playbook.js +0 -146
- package/dist/extensions/agent-browser/lib/process-child.js +0 -284
- package/dist/extensions/agent-browser/lib/process-environment.js +0 -48
- package/dist/extensions/agent-browser/lib/process-errors.js +0 -23
- package/dist/extensions/agent-browser/lib/process-identity.js +0 -127
- package/dist/extensions/agent-browser/lib/process-socket-storage.js +0 -256
- package/dist/extensions/agent-browser/lib/process-stdout.js +0 -74
- package/dist/extensions/agent-browser/lib/process.js +0 -216
- package/dist/extensions/agent-browser/lib/prompt-artifacts.js +0 -287
- package/dist/extensions/agent-browser/lib/prompt-policy.js +0 -54
- package/dist/extensions/agent-browser/lib/read-command.js +0 -41
- package/dist/extensions/agent-browser/lib/read-confirmation.js +0 -162
- package/dist/extensions/agent-browser/lib/recording-reservations.js +0 -208
- package/dist/extensions/agent-browser/lib/redaction-fields.js +0 -75
- package/dist/extensions/agent-browser/lib/redaction-json.js +0 -149
- package/dist/extensions/agent-browser/lib/redaction-url.js +0 -88
- package/dist/extensions/agent-browser/lib/results/action-contracts.js +0 -1
- package/dist/extensions/agent-browser/lib/results/action-recommendations.js +0 -38
- package/dist/extensions/agent-browser/lib/results/artifact-contracts.js +0 -1
- package/dist/extensions/agent-browser/lib/results/artifact-manifest-validation.js +0 -133
- package/dist/extensions/agent-browser/lib/results/artifact-manifest.js +0 -173
- package/dist/extensions/agent-browser/lib/results/artifact-recommendations.js +0 -73
- package/dist/extensions/agent-browser/lib/results/categories.js +0 -152
- package/dist/extensions/agent-browser/lib/results/confirmation.js +0 -75
- package/dist/extensions/agent-browser/lib/results/contracts.js +0 -1
- package/dist/extensions/agent-browser/lib/results/editable-ref-evidence.js +0 -99
- package/dist/extensions/agent-browser/lib/results/electron-recommendations.js +0 -83
- package/dist/extensions/agent-browser/lib/results/envelope-decoding.js +0 -48
- package/dist/extensions/agent-browser/lib/results/envelope.js +0 -198
- package/dist/extensions/agent-browser/lib/results/evidence-contracts.js +0 -1
- package/dist/extensions/agent-browser/lib/results/failure-recommendations.js +0 -180
- package/dist/extensions/agent-browser/lib/results/network-routes.js +0 -133
- package/dist/extensions/agent-browser/lib/results/network.js +0 -89
- package/dist/extensions/agent-browser/lib/results/next-actions.js +0 -111
- package/dist/extensions/agent-browser/lib/results/presentation/artifact-files.js +0 -320
- package/dist/extensions/agent-browser/lib/results/presentation/artifact-format.js +0 -138
- package/dist/extensions/agent-browser/lib/results/presentation/artifact-images.js +0 -113
- package/dist/extensions/agent-browser/lib/results/presentation/artifact-verification.js +0 -145
- package/dist/extensions/agent-browser/lib/results/presentation/artifacts.js +0 -165
- package/dist/extensions/agent-browser/lib/results/presentation/batch-contracts.js +0 -1
- package/dist/extensions/agent-browser/lib/results/presentation/batch-recording.js +0 -118
- package/dist/extensions/agent-browser/lib/results/presentation/batch-redaction.js +0 -68
- package/dist/extensions/agent-browser/lib/results/presentation/batch-rendering.js +0 -135
- package/dist/extensions/agent-browser/lib/results/presentation/batch-step.js +0 -227
- package/dist/extensions/agent-browser/lib/results/presentation/batch-summary.js +0 -91
- package/dist/extensions/agent-browser/lib/results/presentation/batch.js +0 -123
- package/dist/extensions/agent-browser/lib/results/presentation/browser-profile-recovery.js +0 -54
- package/dist/extensions/agent-browser/lib/results/presentation/command-presenters.js +0 -216
- package/dist/extensions/agent-browser/lib/results/presentation/common.js +0 -81
- package/dist/extensions/agent-browser/lib/results/presentation/content.js +0 -119
- package/dist/extensions/agent-browser/lib/results/presentation/diagnostic-a11y.js +0 -67
- package/dist/extensions/agent-browser/lib/results/presentation/diagnostic-health.js +0 -79
- package/dist/extensions/agent-browser/lib/results/presentation/diagnostic-identity.js +0 -199
- package/dist/extensions/agent-browser/lib/results/presentation/diagnostic-logs.js +0 -75
- package/dist/extensions/agent-browser/lib/results/presentation/diagnostic-network-actions.js +0 -216
- package/dist/extensions/agent-browser/lib/results/presentation/diagnostic-network.js +0 -124
- package/dist/extensions/agent-browser/lib/results/presentation/diagnostic-redaction.js +0 -64
- package/dist/extensions/agent-browser/lib/results/presentation/diagnostic-storage.js +0 -209
- package/dist/extensions/agent-browser/lib/results/presentation/diagnostic-stream.js +0 -69
- package/dist/extensions/agent-browser/lib/results/presentation/diagnostic-summary.js +0 -222
- package/dist/extensions/agent-browser/lib/results/presentation/diagnostics.js +0 -124
- package/dist/extensions/agent-browser/lib/results/presentation/early-result.js +0 -70
- package/dist/extensions/agent-browser/lib/results/presentation/errors.js +0 -285
- package/dist/extensions/agent-browser/lib/results/presentation/input-contracts.js +0 -1
- package/dist/extensions/agent-browser/lib/results/presentation/large-output.js +0 -117
- package/dist/extensions/agent-browser/lib/results/presentation/navigation.js +0 -231
- package/dist/extensions/agent-browser/lib/results/presentation/notices.js +0 -75
- package/dist/extensions/agent-browser/lib/results/presentation/observation-contracts.js +0 -1
- package/dist/extensions/agent-browser/lib/results/presentation/observation-rendering.js +0 -127
- package/dist/extensions/agent-browser/lib/results/presentation/outcomes.js +0 -120
- package/dist/extensions/agent-browser/lib/results/presentation/output-completion.js +0 -77
- package/dist/extensions/agent-browser/lib/results/presentation/output-spill.js +0 -51
- package/dist/extensions/agent-browser/lib/results/presentation/registry.js +0 -145
- package/dist/extensions/agent-browser/lib/results/presentation/semantic-action.js +0 -104
- package/dist/extensions/agent-browser/lib/results/presentation/skills.js +0 -183
- package/dist/extensions/agent-browser/lib/results/presentation/source.js +0 -109
- package/dist/extensions/agent-browser/lib/results/presentation.js +0 -19
- package/dist/extensions/agent-browser/lib/results/recommendation-contracts.js +0 -1
- package/dist/extensions/agent-browser/lib/results/recording.js +0 -88
- package/dist/extensions/agent-browser/lib/results/recovery-actions.js +0 -118
- package/dist/extensions/agent-browser/lib/results/recovery-next-actions.js +0 -60
- package/dist/extensions/agent-browser/lib/results/selector-recovery-target.js +0 -83
- package/dist/extensions/agent-browser/lib/results/selector-recovery.js +0 -261
- package/dist/extensions/agent-browser/lib/results/snapshot-compact.js +0 -266
- package/dist/extensions/agent-browser/lib/results/snapshot-content.js +0 -32
- package/dist/extensions/agent-browser/lib/results/snapshot-high-value-controls.js +0 -240
- package/dist/extensions/agent-browser/lib/results/snapshot-refs.js +0 -103
- package/dist/extensions/agent-browser/lib/results/snapshot-segments.js +0 -383
- package/dist/extensions/agent-browser/lib/results/snapshot-spill.js +0 -53
- package/dist/extensions/agent-browser/lib/results/snapshot.js +0 -44
- package/dist/extensions/agent-browser/lib/results/text.js +0 -44
- package/dist/extensions/agent-browser/lib/runtime-args-validation.js +0 -133
- package/dist/extensions/agent-browser/lib/runtime-compatibility.js +0 -81
- package/dist/extensions/agent-browser/lib/runtime-contracts.js +0 -1
- package/dist/extensions/agent-browser/lib/runtime-redaction.js +0 -118
- package/dist/extensions/agent-browser/lib/runtime-replay-events.js +0 -144
- package/dist/extensions/agent-browser/lib/runtime-session-identity.js +0 -76
- package/dist/extensions/agent-browser/lib/runtime-session-plan.js +0 -114
- package/dist/extensions/agent-browser/lib/runtime-session-replay.js +0 -123
- package/dist/extensions/agent-browser/lib/runtime-tab-correction.js +0 -65
- package/dist/extensions/agent-browser/lib/runtime-timeouts.js +0 -28
- package/dist/extensions/agent-browser/lib/runtime.js +0 -163
- package/dist/extensions/agent-browser/lib/session-identity.js +0 -51
- package/dist/extensions/agent-browser/lib/session-page-observation.js +0 -357
- package/dist/extensions/agent-browser/lib/session-page-state.js +0 -353
- package/dist/extensions/agent-browser/lib/session-page-types.js +0 -1
- package/dist/extensions/agent-browser/lib/string-enum-schema.js +0 -8
- package/dist/extensions/agent-browser/lib/temp-artifact-budget.js +0 -81
- package/dist/extensions/agent-browser/lib/temp-mutation-queue.js +0 -7
- package/dist/extensions/agent-browser/lib/temp-root-ownership.js +0 -234
- package/dist/extensions/agent-browser/lib/temp-root.js +0 -211
- package/dist/extensions/agent-browser/lib/temp.js +0 -91
- package/dist/extensions/agent-browser/lib/tool-surface.js +0 -239
- package/dist/extensions/agent-browser/lib/upstream-version.js +0 -15
- package/dist/extensions/agent-browser/lib/web-search-providers.js +0 -193
- package/dist/extensions/agent-browser/lib/web-search-request.js +0 -102
- package/dist/extensions/agent-browser/lib/web-search-results.js +0 -281
- package/dist/extensions/agent-browser/lib/web-search-schema.js +0 -82
- package/dist/extensions/agent-browser/lib/web-search.js +0 -167
- package/dist/extensions/agent-browser/lib/webmcp-observation.js +0 -35
- package/dist/extensions/agent-browser/lib/windows-stock-launcher.js +0 -96
- package/dist/scripts/agent-browser-target.mjs +0 -23
|
@@ -1,225 +0,0 @@
|
|
|
1
|
-
import { isRecord } from "../../../parsing.js";
|
|
2
|
-
import { buildAgentBrowserResultCategoryDetails } from "../../../results/categories.js";
|
|
3
|
-
import { applyNamespaceToNextActions } from "../../../results/next-actions.js";
|
|
4
|
-
import { buildScrollNoopNextActions } from "../interaction-diagnostics.js";
|
|
5
|
-
import { buildSessionDetailFields, runSessionCommandData } from "../session-state.js";
|
|
6
|
-
const SCROLL_CONTAINER_DIRECTIONS = new Set(["down", "left", "right", "up"]);
|
|
7
|
-
function getContainerScrollRequest(commandTokens) {
|
|
8
|
-
if (commandTokens[0] !== "scroll" || commandTokens.length < 3 || commandTokens.length > 4) {
|
|
9
|
-
return undefined;
|
|
10
|
-
}
|
|
11
|
-
const selector = commandTokens[1];
|
|
12
|
-
const direction = commandTokens[2]?.toLowerCase();
|
|
13
|
-
if (selector === "" ||
|
|
14
|
-
selector.startsWith("-") ||
|
|
15
|
-
selector.startsWith("@") ||
|
|
16
|
-
SCROLL_CONTAINER_DIRECTIONS.has(selector.toLowerCase())) {
|
|
17
|
-
return undefined;
|
|
18
|
-
}
|
|
19
|
-
if (!SCROLL_CONTAINER_DIRECTIONS.has(direction)) {
|
|
20
|
-
return undefined;
|
|
21
|
-
}
|
|
22
|
-
return { amount: commandTokens[3], direction, selector };
|
|
23
|
-
}
|
|
24
|
-
function buildContainerScrollScript(request) {
|
|
25
|
-
return `(() => {
|
|
26
|
-
const selector = ${JSON.stringify(request.selector)};
|
|
27
|
-
const direction = ${JSON.stringify(request.direction)};
|
|
28
|
-
const amountToken = ${JSON.stringify(request.amount ?? "")};
|
|
29
|
-
let element;
|
|
30
|
-
try { element = document.querySelector(selector); } catch (error) { return { status: "invalid-selector", selector, error: String(error && error.message || error) }; }
|
|
31
|
-
if (!(element instanceof HTMLElement)) return { status: "not-found", selector };
|
|
32
|
-
const axis = direction === "left" || direction === "right" ? "x" : "y";
|
|
33
|
-
const before = { scrollLeft: element.scrollLeft, scrollTop: element.scrollTop, scrollHeight: element.scrollHeight, scrollWidth: element.scrollWidth, clientHeight: element.clientHeight, clientWidth: element.clientWidth };
|
|
34
|
-
const parseAmount = () => {
|
|
35
|
-
const token = String(amountToken || "").trim().toLowerCase();
|
|
36
|
-
const extent = axis === "x" ? element.clientWidth : element.clientHeight;
|
|
37
|
-
if (!token) return Math.max(1, Math.floor(extent * 0.8));
|
|
38
|
-
if (token.endsWith("%")) {
|
|
39
|
-
const value = Number(token.slice(0, -1));
|
|
40
|
-
return Number.isFinite(value) ? Math.max(1, Math.floor(extent * value / 100)) : Math.max(1, Math.floor(extent * 0.8));
|
|
41
|
-
}
|
|
42
|
-
const pixels = Number(token.replace(/px$/, ""));
|
|
43
|
-
return Number.isFinite(pixels) && pixels > 0 ? Math.floor(pixels) : Math.max(1, Math.floor(extent * 0.8));
|
|
44
|
-
};
|
|
45
|
-
const delta = parseAmount() * (direction === "up" || direction === "left" ? -1 : 1);
|
|
46
|
-
element.scrollBy({ [axis === "x" ? "left" : "top"]: delta, behavior: "instant" });
|
|
47
|
-
const after = { scrollLeft: element.scrollLeft, scrollTop: element.scrollTop, scrollHeight: element.scrollHeight, scrollWidth: element.scrollWidth, clientHeight: element.clientHeight, clientWidth: element.clientWidth };
|
|
48
|
-
const moved = before.scrollLeft !== after.scrollLeft || before.scrollTop !== after.scrollTop;
|
|
49
|
-
return { status: moved ? "scrolled" : "no-movement", selector, direction, amount: amountToken || undefined, before, after };
|
|
50
|
-
})()`;
|
|
51
|
-
}
|
|
52
|
-
function buildScrollResult(options) {
|
|
53
|
-
return {
|
|
54
|
-
content: [{ type: "text", text: options.message }],
|
|
55
|
-
details: {
|
|
56
|
-
args: options.redactedArgs,
|
|
57
|
-
command: options.command,
|
|
58
|
-
compatibilityWorkaround: options.compatibilityWorkaround,
|
|
59
|
-
data: options.result,
|
|
60
|
-
effectiveArgs: options.effectiveArgs,
|
|
61
|
-
exitCode: options.succeeded ? 0 : 1,
|
|
62
|
-
nextActions: options.succeeded
|
|
63
|
-
? undefined
|
|
64
|
-
: applyNamespaceToNextActions(buildScrollNoopNextActions(options.sessionName), options.namespace),
|
|
65
|
-
[options.scrollField]: options.scrollValue,
|
|
66
|
-
sessionMode: options.sessionMode,
|
|
67
|
-
...buildAgentBrowserResultCategoryDetails({
|
|
68
|
-
args: options.effectiveArgs,
|
|
69
|
-
command: options.command,
|
|
70
|
-
errorText: options.succeeded ? undefined : options.message,
|
|
71
|
-
succeeded: options.succeeded,
|
|
72
|
-
validationError: options.succeeded ? undefined : options.message,
|
|
73
|
-
}),
|
|
74
|
-
...buildSessionDetailFields(options.sessionName, options.usedImplicitSession, options.namespace, options.managedSessionRestoreDisabled()),
|
|
75
|
-
summary: options.message,
|
|
76
|
-
validationError: options.succeeded ? undefined : options.message,
|
|
77
|
-
},
|
|
78
|
-
isError: !options.succeeded,
|
|
79
|
-
};
|
|
80
|
-
}
|
|
81
|
-
function getScrollResult(data) {
|
|
82
|
-
const result = isRecord(data) && isRecord(data.result) ? data.result : data;
|
|
83
|
-
return isRecord(result) && typeof result.status === "string"
|
|
84
|
-
? { ...result, status: result.status }
|
|
85
|
-
: undefined;
|
|
86
|
-
}
|
|
87
|
-
function describeScrollAmount(amount) {
|
|
88
|
-
return amount !== undefined && amount !== "" ? ` by ${amount}` : "";
|
|
89
|
-
}
|
|
90
|
-
export async function tryContainerScroll(options) {
|
|
91
|
-
const request = getContainerScrollRequest(options.commandTokens);
|
|
92
|
-
if (!request || (options.sessionName ?? "") === "") {
|
|
93
|
-
return undefined;
|
|
94
|
-
}
|
|
95
|
-
const data = await runSessionCommandData({
|
|
96
|
-
args: ["eval", "--stdin"],
|
|
97
|
-
cwd: options.cwd,
|
|
98
|
-
namespace: options.namespace,
|
|
99
|
-
sessionName: options.sessionName,
|
|
100
|
-
signal: options.signal,
|
|
101
|
-
stdin: buildContainerScrollScript(request),
|
|
102
|
-
});
|
|
103
|
-
const result = getScrollResult(data);
|
|
104
|
-
if (!result) {
|
|
105
|
-
return undefined;
|
|
106
|
-
}
|
|
107
|
-
const succeeded = result.status === "scrolled";
|
|
108
|
-
const message = succeeded
|
|
109
|
-
? `Scrolled container ${request.selector} ${request.direction}${describeScrollAmount(request.amount)}.`
|
|
110
|
-
: `Scroll container ${request.selector} did not move (${result.status}).`;
|
|
111
|
-
return buildScrollResult({
|
|
112
|
-
...options,
|
|
113
|
-
command: "scroll",
|
|
114
|
-
message,
|
|
115
|
-
result,
|
|
116
|
-
scrollField: "scrollContainer",
|
|
117
|
-
scrollValue: { request, result },
|
|
118
|
-
succeeded,
|
|
119
|
-
});
|
|
120
|
-
}
|
|
121
|
-
function isPageScrollDirection(direction) {
|
|
122
|
-
return (direction === "down" || direction === "left" || direction === "right" || direction === "up");
|
|
123
|
-
}
|
|
124
|
-
function isValidScrollAmount(amount) {
|
|
125
|
-
if (amount === undefined || amount === "") {
|
|
126
|
-
return true;
|
|
127
|
-
}
|
|
128
|
-
return /^\d+(?:\.\d+)?(?:px|%)?$/.test(amount) && Number(amount.replace(/(?:px|%)$/, "")) > 0;
|
|
129
|
-
}
|
|
130
|
-
function describePageScroll(request) {
|
|
131
|
-
if ("target" in request) {
|
|
132
|
-
return `to ${request.target}`;
|
|
133
|
-
}
|
|
134
|
-
return `${request.direction}${describeScrollAmount(request.amount)}`;
|
|
135
|
-
}
|
|
136
|
-
function getPageScrollToRequest(commandTokens) {
|
|
137
|
-
if (commandTokens[0] !== "scroll") {
|
|
138
|
-
return undefined;
|
|
139
|
-
}
|
|
140
|
-
if (commandTokens[1]?.toLowerCase() === "to") {
|
|
141
|
-
return commandTokens.length === 3 ? getPageScrollTarget(commandTokens.at(2)) : undefined;
|
|
142
|
-
}
|
|
143
|
-
const direction = commandTokens[1]?.toLowerCase();
|
|
144
|
-
if (!isPageScrollDirection(direction) || commandTokens.length > 3) {
|
|
145
|
-
return undefined;
|
|
146
|
-
}
|
|
147
|
-
const amount = commandTokens.at(2);
|
|
148
|
-
if (!isValidScrollAmount(amount)) {
|
|
149
|
-
return undefined;
|
|
150
|
-
}
|
|
151
|
-
return { amount, direction };
|
|
152
|
-
}
|
|
153
|
-
function getPageScrollTarget(token) {
|
|
154
|
-
const target = token?.toLowerCase();
|
|
155
|
-
return target === "end" || target === "top" ? { target } : undefined;
|
|
156
|
-
}
|
|
157
|
-
function buildPageScrollToScript(request) {
|
|
158
|
-
return `(() => {
|
|
159
|
-
const target = ${JSON.stringify("target" in request ? request.target : undefined)};
|
|
160
|
-
const direction = ${JSON.stringify("direction" in request ? request.direction : undefined)};
|
|
161
|
-
const amountToken = ${JSON.stringify("amount" in request ? (request.amount ?? "") : "")};
|
|
162
|
-
const request = target ? { target } : { direction, amount: amountToken || undefined };
|
|
163
|
-
const scroller = document.scrollingElement || document.documentElement || document.body;
|
|
164
|
-
if (!scroller) return { status: "no-scroller", ...request };
|
|
165
|
-
const before = { scrollLeft: scroller.scrollLeft, scrollTop: scroller.scrollTop, scrollHeight: scroller.scrollHeight, scrollWidth: scroller.scrollWidth, clientHeight: scroller.clientHeight, clientWidth: scroller.clientWidth };
|
|
166
|
-
const axis = direction === "left" || direction === "right" ? "x" : "y";
|
|
167
|
-
const extent = axis === "x" ? scroller.clientWidth : scroller.clientHeight;
|
|
168
|
-
const parseAmount = () => {
|
|
169
|
-
if (!amountToken) return Math.max(1, Math.floor(extent * 0.8));
|
|
170
|
-
if (amountToken.endsWith("%")) {
|
|
171
|
-
const value = Number(amountToken.slice(0, -1));
|
|
172
|
-
return Number.isFinite(value) ? Math.max(1, Math.floor(extent * value / 100)) : Math.max(1, Math.floor(extent * 0.8));
|
|
173
|
-
}
|
|
174
|
-
const pixels = Number(amountToken.replace(/px$/, ""));
|
|
175
|
-
return Number.isFinite(pixels) && pixels > 0 ? Math.floor(pixels) : Math.max(1, Math.floor(extent * 0.8));
|
|
176
|
-
};
|
|
177
|
-
const delta = parseAmount() * (direction === "up" || direction === "left" ? -1 : 1);
|
|
178
|
-
const nextTop = target === "top" ? 0 : target === "end" ? Math.max(0, scroller.scrollHeight - scroller.clientHeight) : axis === "y" ? scroller.scrollTop + delta : scroller.scrollTop;
|
|
179
|
-
const nextLeft = axis === "x" ? scroller.scrollLeft + delta : scroller.scrollLeft;
|
|
180
|
-
const priorBehavior = scroller.style.scrollBehavior;
|
|
181
|
-
scroller.style.scrollBehavior = "auto";
|
|
182
|
-
window.scrollTo(nextLeft, nextTop);
|
|
183
|
-
scroller.scrollLeft = nextLeft;
|
|
184
|
-
scroller.scrollTop = nextTop;
|
|
185
|
-
const after = { scrollLeft: scroller.scrollLeft, scrollTop: scroller.scrollTop, scrollHeight: scroller.scrollHeight, scrollWidth: scroller.scrollWidth, clientHeight: scroller.clientHeight, clientWidth: scroller.clientWidth };
|
|
186
|
-
scroller.style.scrollBehavior = priorBehavior;
|
|
187
|
-
const moved = before.scrollLeft !== after.scrollLeft || before.scrollTop !== after.scrollTop;
|
|
188
|
-
return { status: moved ? "scrolled" : "no-movement", ...request, before, after };
|
|
189
|
-
})()`;
|
|
190
|
-
}
|
|
191
|
-
export async function tryPageScrollTo(options) {
|
|
192
|
-
const request = getPageScrollToRequest(options.commandTokens);
|
|
193
|
-
if (!request || (options.sessionName ?? "") === "") {
|
|
194
|
-
return undefined;
|
|
195
|
-
}
|
|
196
|
-
const data = await runSessionCommandData({
|
|
197
|
-
args: ["eval", "--stdin"],
|
|
198
|
-
cwd: options.cwd,
|
|
199
|
-
namespace: options.namespace,
|
|
200
|
-
sessionName: options.sessionName,
|
|
201
|
-
signal: options.signal,
|
|
202
|
-
stdin: buildPageScrollToScript(request),
|
|
203
|
-
});
|
|
204
|
-
const result = getScrollResult(data);
|
|
205
|
-
if (!result) {
|
|
206
|
-
return undefined;
|
|
207
|
-
}
|
|
208
|
-
const succeeded = result.status === "scrolled";
|
|
209
|
-
if (!succeeded && "direction" in request) {
|
|
210
|
-
return undefined;
|
|
211
|
-
}
|
|
212
|
-
const description = describePageScroll(request);
|
|
213
|
-
const message = succeeded
|
|
214
|
-
? `Scrolled page ${description}.`
|
|
215
|
-
: `Scroll ${description} completed with no observed movement (${result.status}).`;
|
|
216
|
-
return buildScrollResult({
|
|
217
|
-
...options,
|
|
218
|
-
command: "scroll",
|
|
219
|
-
message,
|
|
220
|
-
result,
|
|
221
|
-
scrollField: "scrollPage",
|
|
222
|
-
scrollValue: { request, result },
|
|
223
|
-
succeeded,
|
|
224
|
-
});
|
|
225
|
-
}
|
package/dist/extensions/agent-browser/lib/orchestration/browser-run/prepare/snapshot-filter-data.js
DELETED
|
@@ -1,150 +0,0 @@
|
|
|
1
|
-
import { isRecord } from "../../../parsing.js";
|
|
2
|
-
export function hasSnapshotText(value) {
|
|
3
|
-
return value !== undefined && value !== "";
|
|
4
|
-
}
|
|
5
|
-
function filterOperand(tokens, index) {
|
|
6
|
-
const token = tokens[index];
|
|
7
|
-
if (token !== "--search" && token !== "--filter") {
|
|
8
|
-
return undefined;
|
|
9
|
-
}
|
|
10
|
-
const value = tokens.at(index + 1);
|
|
11
|
-
if (value === undefined || value.startsWith("-")) {
|
|
12
|
-
return undefined;
|
|
13
|
-
}
|
|
14
|
-
if (token === "--search") {
|
|
15
|
-
return { search: value };
|
|
16
|
-
}
|
|
17
|
-
const role = /^role=(.+)$/i.exec(value.trim())?.at(1);
|
|
18
|
-
return hasSnapshotText(role) ? { role: role.trim().toLowerCase() } : {};
|
|
19
|
-
}
|
|
20
|
-
export function snapshotHasTextFilters(request) {
|
|
21
|
-
return hasSnapshotText(request.role) || hasSnapshotText(request.search);
|
|
22
|
-
}
|
|
23
|
-
export function parseSnapshotFilterRequest(commandTokens) {
|
|
24
|
-
if (commandTokens[0] !== "snapshot") {
|
|
25
|
-
return undefined;
|
|
26
|
-
}
|
|
27
|
-
const cleanArgs = [];
|
|
28
|
-
let role;
|
|
29
|
-
let search;
|
|
30
|
-
for (let index = 0; index < commandTokens.length; index += 1) {
|
|
31
|
-
const token = commandTokens[index];
|
|
32
|
-
// Wrapper filters require the complete native tree, never a revision-relative patch.
|
|
33
|
-
if (["--delta", "--full", "--viewport", "--diff"].includes(token)) {
|
|
34
|
-
continue;
|
|
35
|
-
}
|
|
36
|
-
const operand = filterOperand(commandTokens, index);
|
|
37
|
-
if (operand) {
|
|
38
|
-
if (operand.search !== undefined) {
|
|
39
|
-
search = operand.search;
|
|
40
|
-
}
|
|
41
|
-
if (operand.role !== undefined) {
|
|
42
|
-
role = operand.role;
|
|
43
|
-
}
|
|
44
|
-
index += 1;
|
|
45
|
-
}
|
|
46
|
-
else {
|
|
47
|
-
cleanArgs.push(token);
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
const viewport = commandTokens.includes("--viewport");
|
|
51
|
-
const diff = commandTokens.includes("--diff");
|
|
52
|
-
return snapshotHasTextFilters({ role, search }) || viewport || diff
|
|
53
|
-
? { cleanArgs, diff, role, search, viewport }
|
|
54
|
-
: undefined;
|
|
55
|
-
}
|
|
56
|
-
export function buildSnapshotDiff(previous, current) {
|
|
57
|
-
if (!current) {
|
|
58
|
-
return undefined;
|
|
59
|
-
}
|
|
60
|
-
const currentRefs = new Map(Object.entries(current.refs ?? {}));
|
|
61
|
-
const previousRefs = new Map(Object.entries(previous?.refs ?? {}));
|
|
62
|
-
if (!previous) {
|
|
63
|
-
return {
|
|
64
|
-
addedRefs: [...currentRefs.keys()],
|
|
65
|
-
changedRefs: [],
|
|
66
|
-
removedRefs: [],
|
|
67
|
-
summary: `Snapshot diff: no previous snapshot; ${currentRefs.size} current refs recorded.`,
|
|
68
|
-
unchangedRefs: 0,
|
|
69
|
-
};
|
|
70
|
-
}
|
|
71
|
-
const addedRefs = [];
|
|
72
|
-
const changedRefs = [];
|
|
73
|
-
let unchangedRefs = 0;
|
|
74
|
-
for (const [refId, currentRef] of currentRefs) {
|
|
75
|
-
const previousRef = previousRefs.get(refId);
|
|
76
|
-
if (!previousRef) {
|
|
77
|
-
addedRefs.push(refId);
|
|
78
|
-
}
|
|
79
|
-
else if (previousRef.role !== currentRef.role || previousRef.name !== currentRef.name) {
|
|
80
|
-
changedRefs.push(refId);
|
|
81
|
-
}
|
|
82
|
-
else {
|
|
83
|
-
unchangedRefs += 1;
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
const removedRefs = [...previousRefs.keys()].filter((refId) => !currentRefs.has(refId));
|
|
87
|
-
return {
|
|
88
|
-
addedRefs,
|
|
89
|
-
changedRefs,
|
|
90
|
-
removedRefs,
|
|
91
|
-
summary: `Snapshot diff: +${addedRefs.length} / -${removedRefs.length} / Δ${changedRefs.length} refs versus previous snapshot.`,
|
|
92
|
-
unchangedRefs,
|
|
93
|
-
};
|
|
94
|
-
}
|
|
95
|
-
function refMatches(value, request) {
|
|
96
|
-
if (!isRecord(value)) {
|
|
97
|
-
return false;
|
|
98
|
-
}
|
|
99
|
-
const role = typeof value.role === "string" ? value.role.toLowerCase() : "";
|
|
100
|
-
const name = typeof value.name === "string" ? value.name : "";
|
|
101
|
-
const search = request.search?.trim().toLowerCase();
|
|
102
|
-
return ((!hasSnapshotText(request.role) || role === request.role) &&
|
|
103
|
-
(!hasSnapshotText(search) || `${role} ${name}`.toLowerCase().includes(search)));
|
|
104
|
-
}
|
|
105
|
-
function snapshotLineMatches(line, refs, search) {
|
|
106
|
-
return ((hasSnapshotText(search) && line.toLowerCase().includes(search)) ||
|
|
107
|
-
[...refs].some((refId) => line.includes(`[ref=${refId}]`) || line.includes(`ref=${refId}`)));
|
|
108
|
-
}
|
|
109
|
-
function filterDescription(request) {
|
|
110
|
-
return [
|
|
111
|
-
hasSnapshotText(request.role) ? `role=${request.role}` : undefined,
|
|
112
|
-
hasSnapshotText(request.search) ? `search=${JSON.stringify(request.search)}` : undefined,
|
|
113
|
-
]
|
|
114
|
-
.filter((part) => part !== undefined)
|
|
115
|
-
.join(", ");
|
|
116
|
-
}
|
|
117
|
-
export function filterSnapshotData(data, request) {
|
|
118
|
-
if (!isRecord(data)) {
|
|
119
|
-
return undefined;
|
|
120
|
-
}
|
|
121
|
-
const refs = isRecord(data.refs) ? data.refs : {};
|
|
122
|
-
const snapshot = typeof data.snapshot === "string" ? data.snapshot : "";
|
|
123
|
-
const lines = snapshot.split(/\r?\n/);
|
|
124
|
-
if (!hasSnapshotText(request.role) && !hasSnapshotText(request.search)) {
|
|
125
|
-
const totalLines = lines.filter((line) => line.length > 0).length;
|
|
126
|
-
return {
|
|
127
|
-
data,
|
|
128
|
-
matchedRefs: Object.keys(refs).length,
|
|
129
|
-
totalRefs: Object.keys(refs).length,
|
|
130
|
-
totalLines,
|
|
131
|
-
visibleLines: totalLines,
|
|
132
|
-
};
|
|
133
|
-
}
|
|
134
|
-
const matchingRefs = Object.entries(refs).filter(([, value]) => refMatches(value, request));
|
|
135
|
-
const ids = new Set(matchingRefs.map(([id]) => id));
|
|
136
|
-
const visibleLines = lines.filter((line) => snapshotLineMatches(line, ids, request.search?.trim().toLowerCase()));
|
|
137
|
-
return {
|
|
138
|
-
data: {
|
|
139
|
-
...data,
|
|
140
|
-
refs: Object.fromEntries(matchingRefs),
|
|
141
|
-
snapshot: visibleLines.length > 0
|
|
142
|
-
? visibleLines.join("\n")
|
|
143
|
-
: `(no snapshot lines matched ${filterDescription(request)})`,
|
|
144
|
-
},
|
|
145
|
-
matchedRefs: matchingRefs.length,
|
|
146
|
-
totalRefs: Object.keys(refs).length,
|
|
147
|
-
totalLines: lines.filter((line) => line.length > 0).length,
|
|
148
|
-
visibleLines: visibleLines.length,
|
|
149
|
-
};
|
|
150
|
-
}
|
package/dist/extensions/agent-browser/lib/orchestration/browser-run/prepare/snapshot-filter.js
DELETED
|
@@ -1,174 +0,0 @@
|
|
|
1
|
-
import { buildAgentBrowserResultCategoryDetails } from "../../../results/categories.js";
|
|
2
|
-
import { buildSnapshotPresentation } from "../../../results/snapshot.js";
|
|
3
|
-
import { extractRefSnapshotFromData, } from "../../../session-page-state.js";
|
|
4
|
-
import { redactSensitiveValue } from "../../../runtime-redaction.js";
|
|
5
|
-
import { collectScrollPositionSnapshot } from "../interaction-diagnostics.js";
|
|
6
|
-
import { buildSessionDetailFields, runSessionCommandData } from "../session-state.js";
|
|
7
|
-
import { attachRenderedTextMatchRefs, buildRenderedTextSearchEval, extractRenderedTextSearchResult, formatRenderedTextSearchMatches, } from "./snapshot-rendered-text.js";
|
|
8
|
-
import { buildSnapshotDiff, filterSnapshotData, hasSnapshotText, parseSnapshotFilterRequest, } from "./snapshot-filter-data.js";
|
|
9
|
-
async function collectRenderedText(options, request, snapshotData) {
|
|
10
|
-
if (!hasSnapshotText(request.search)) {
|
|
11
|
-
return undefined;
|
|
12
|
-
}
|
|
13
|
-
const data = await runSessionCommandData({
|
|
14
|
-
...options,
|
|
15
|
-
args: ["eval", "--stdin"],
|
|
16
|
-
stdin: buildRenderedTextSearchEval(request.search),
|
|
17
|
-
});
|
|
18
|
-
const result = extractRenderedTextSearchResult(data);
|
|
19
|
-
return result
|
|
20
|
-
? { ...result, matches: attachRenderedTextMatchRefs(result.matches, snapshotData) }
|
|
21
|
-
: undefined;
|
|
22
|
-
}
|
|
23
|
-
async function collectSnapshotEvidence(options, request) {
|
|
24
|
-
const snapshotData = await runSessionCommandData({
|
|
25
|
-
args: request.cleanArgs,
|
|
26
|
-
cwd: options.cwd,
|
|
27
|
-
namespace: options.namespace,
|
|
28
|
-
sessionName: options.sessionName,
|
|
29
|
-
signal: options.signal,
|
|
30
|
-
});
|
|
31
|
-
const filtered = filterSnapshotData(snapshotData, request);
|
|
32
|
-
if (!filtered) {
|
|
33
|
-
return undefined;
|
|
34
|
-
}
|
|
35
|
-
const renderedTextSearch = await collectRenderedText({
|
|
36
|
-
cwd: options.cwd,
|
|
37
|
-
namespace: options.namespace,
|
|
38
|
-
sessionName: options.sessionName,
|
|
39
|
-
signal: options.signal,
|
|
40
|
-
}, request, snapshotData);
|
|
41
|
-
const viewport = request.viewport
|
|
42
|
-
? await collectScrollPositionSnapshot({
|
|
43
|
-
cwd: options.cwd,
|
|
44
|
-
namespace: options.namespace,
|
|
45
|
-
sessionName: options.sessionName,
|
|
46
|
-
signal: options.signal,
|
|
47
|
-
})
|
|
48
|
-
: undefined;
|
|
49
|
-
const fullSnapshot = extractRefSnapshotFromData(snapshotData);
|
|
50
|
-
const diff = request.diff
|
|
51
|
-
? buildSnapshotDiff(options.previousRefSnapshot, fullSnapshot)
|
|
52
|
-
: undefined;
|
|
53
|
-
if (fullSnapshot) {
|
|
54
|
-
if (fullSnapshot.target) {
|
|
55
|
-
options.sessionPageState.applyTabTarget({
|
|
56
|
-
sessionName: options.sessionStateKey ?? options.sessionName,
|
|
57
|
-
target: fullSnapshot.target,
|
|
58
|
-
update: options.sessionPageStateUpdate,
|
|
59
|
-
});
|
|
60
|
-
}
|
|
61
|
-
options.sessionPageState.applyRefSnapshot({
|
|
62
|
-
sessionName: options.sessionStateKey ?? options.sessionName,
|
|
63
|
-
snapshot: fullSnapshot,
|
|
64
|
-
update: options.sessionPageStateUpdate,
|
|
65
|
-
});
|
|
66
|
-
}
|
|
67
|
-
return { filtered, renderedTextSearch, viewport, fullSnapshot, diff };
|
|
68
|
-
}
|
|
69
|
-
function snapshotFilterSummary(request, evidence) {
|
|
70
|
-
if (hasSnapshotText(request.role) || hasSnapshotText(request.search)) {
|
|
71
|
-
const role = hasSnapshotText(request.role) ? ` role=${request.role}` : "";
|
|
72
|
-
const search = hasSnapshotText(request.search)
|
|
73
|
-
? ` search ${JSON.stringify(request.search)}`
|
|
74
|
-
: "";
|
|
75
|
-
return `Snapshot filter: ${evidence.filtered.matchedRefs}/${evidence.filtered.totalRefs} direct refs matched${role}${search}; ${evidence.filtered.visibleLines} surrounding snapshot line${evidence.filtered.visibleLines === 1 ? "" : "s"} shown.`;
|
|
76
|
-
}
|
|
77
|
-
return request.diff
|
|
78
|
-
? (evidence.diff?.summary ?? "Snapshot diff unavailable.")
|
|
79
|
-
: "Snapshot viewport metadata collected.";
|
|
80
|
-
}
|
|
81
|
-
function viewportText(viewport) {
|
|
82
|
-
return viewport
|
|
83
|
-
? `Viewport: ${viewport.innerWidth}×${viewport.innerHeight}, scroll ${viewport.scrollX},${viewport.scrollY}, document ${viewport.scrollWidth}×${viewport.scrollHeight}, sampled scroll containers ${viewport.containers.length}/${viewport.containerCount}.`
|
|
84
|
-
: undefined;
|
|
85
|
-
}
|
|
86
|
-
function snapshotPrefix(request, evidence, summary) {
|
|
87
|
-
const diffText = hasSnapshotText(request.role) || hasSnapshotText(request.search)
|
|
88
|
-
? evidence.diff?.summary
|
|
89
|
-
: undefined;
|
|
90
|
-
return [
|
|
91
|
-
summary,
|
|
92
|
-
formatRenderedTextSearchMatches(evidence.renderedTextSearch),
|
|
93
|
-
diffText,
|
|
94
|
-
viewportText(evidence.viewport),
|
|
95
|
-
]
|
|
96
|
-
.filter((line) => line !== undefined)
|
|
97
|
-
.join("\n\n");
|
|
98
|
-
}
|
|
99
|
-
async function presentSnapshotFilter(options, evidence, prefix) {
|
|
100
|
-
const presentation = options.modelVisible === false
|
|
101
|
-
? { content: [], data: redactSensitiveValue(evidence.filtered.data), summary: "Snapshot" }
|
|
102
|
-
: await buildSnapshotPresentation(evidence.filtered.data, options.persistentArtifactStore, options.artifactManifest);
|
|
103
|
-
const first = presentation.content.at(0);
|
|
104
|
-
const content = [...presentation.content];
|
|
105
|
-
if (first?.type === "text") {
|
|
106
|
-
content[0] = { ...first, text: `${prefix}\n\n${first.text}` };
|
|
107
|
-
}
|
|
108
|
-
return { ...presentation, content };
|
|
109
|
-
}
|
|
110
|
-
function snapshotFilterDetails(request, evidence) {
|
|
111
|
-
if (!hasSnapshotText(request.role) && !hasSnapshotText(request.search)) {
|
|
112
|
-
return undefined;
|
|
113
|
-
}
|
|
114
|
-
return {
|
|
115
|
-
cleanArgs: request.cleanArgs,
|
|
116
|
-
matchedRefs: evidence.filtered.matchedRefs,
|
|
117
|
-
renderedTextMatches: evidence.renderedTextSearch?.matches,
|
|
118
|
-
renderedTextTotalMatches: evidence.renderedTextSearch?.totalMatches,
|
|
119
|
-
renderedTextTruncated: evidence.renderedTextSearch?.truncated,
|
|
120
|
-
role: request.role,
|
|
121
|
-
search: request.search,
|
|
122
|
-
totalLines: evidence.filtered.totalLines,
|
|
123
|
-
totalRefs: evidence.filtered.totalRefs,
|
|
124
|
-
visibleLines: evidence.filtered.visibleLines,
|
|
125
|
-
};
|
|
126
|
-
}
|
|
127
|
-
function snapshotToolResult(options, request, evidence, presentation) {
|
|
128
|
-
const summary = snapshotFilterSummary(request, evidence);
|
|
129
|
-
return {
|
|
130
|
-
content: [...presentation.content],
|
|
131
|
-
details: {
|
|
132
|
-
args: options.redactedArgs,
|
|
133
|
-
artifactManifest: presentation.artifactManifest,
|
|
134
|
-
artifactRetentionSummary: presentation.artifactRetentionSummary,
|
|
135
|
-
command: "snapshot",
|
|
136
|
-
compatibilityWorkaround: options.compatibilityWorkaround,
|
|
137
|
-
data: presentation.data,
|
|
138
|
-
effectiveArgs: options.effectiveArgs,
|
|
139
|
-
fullOutputPath: presentation.fullOutputPath,
|
|
140
|
-
fullOutputPaths: presentation.fullOutputPaths,
|
|
141
|
-
refSnapshot: evidence.fullSnapshot,
|
|
142
|
-
sessionMode: options.sessionMode,
|
|
143
|
-
sessionTabTarget: options.sessionPageState.get(options.sessionStateKey ?? options.sessionName)
|
|
144
|
-
.tabTarget,
|
|
145
|
-
snapshotDiff: evidence.diff,
|
|
146
|
-
snapshotFilter: snapshotFilterDetails(request, evidence),
|
|
147
|
-
snapshotViewport: evidence.viewport,
|
|
148
|
-
...buildAgentBrowserResultCategoryDetails({
|
|
149
|
-
args: options.effectiveArgs,
|
|
150
|
-
command: "snapshot",
|
|
151
|
-
succeeded: true,
|
|
152
|
-
}),
|
|
153
|
-
...buildSessionDetailFields(options.sessionName, options.usedImplicitSession, options.namespace, options.managedSessionRestoreDisabled()),
|
|
154
|
-
summary,
|
|
155
|
-
},
|
|
156
|
-
isError: false,
|
|
157
|
-
};
|
|
158
|
-
}
|
|
159
|
-
export async function trySnapshotFilter(options) {
|
|
160
|
-
const request = parseSnapshotFilterRequest(options.commandTokens);
|
|
161
|
-
if (!request || !hasSnapshotText(options.sessionName)) {
|
|
162
|
-
return undefined;
|
|
163
|
-
}
|
|
164
|
-
const evidence = await collectSnapshotEvidence({ ...options, sessionName: options.sessionName }, request);
|
|
165
|
-
if (!evidence) {
|
|
166
|
-
return undefined;
|
|
167
|
-
}
|
|
168
|
-
const summary = snapshotFilterSummary(request, evidence);
|
|
169
|
-
const presentation = await presentSnapshotFilter(options, evidence, snapshotPrefix(request, evidence, summary));
|
|
170
|
-
return {
|
|
171
|
-
artifactManifest: presentation.artifactManifest,
|
|
172
|
-
result: snapshotToolResult(options, request, evidence, presentation),
|
|
173
|
-
};
|
|
174
|
-
}
|