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
package/docs/platform-smoke.md
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
# Platform smoke testing
|
|
2
2
|
|
|
3
|
-
`pi-agent-browser-native` uses a Crabbox-backed local platform
|
|
3
|
+
`pi-agent-browser-native` uses a Crabbox-backed required local platform gate on **macOS and Ubuntu Linux**. Native Windows is **best-effort and explicitly on demand**, not a required default PR or release target.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
The owner's 2026-10-22 best-effort decision supersedes [#191](https://github.com/fitchmultz/pi-agent-browser-native/issues/191) / PR291's blocking policy, not their unresolved process-lock/Electron failures. The September waiver is historical, not current authority. Routine Windows CI is one nonblocking official-host build/import/process smoke; broader official/fork full qualification and its environment self-check require manual `windows-qualification=true`. Neither a green required aggregate nor a not-run deep suite is a Windows pass.
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
Missing macOS/Ubuntu setup is not a skipped pass. Default doctor requires only their providers/setup, not Windows, Parallels or Windows credentials. Explicit Windows doctor/run remains strict and returns real nonzero status. No test assertions, runtime ownership checks or budgets are relaxed.
|
|
8
8
|
|
|
9
9
|
## Required release gate
|
|
10
10
|
|
|
11
|
-
Run the cheap harness checks first, build the project-owned Ubuntu image, run doctor explicitly, then run the
|
|
11
|
+
Run the cheap harness checks first, build the project-owned Ubuntu image, run doctor explicitly, then run the required matrix and inspect the evidence:
|
|
12
12
|
|
|
13
13
|
```sh
|
|
14
14
|
npm run check:platform-smoke
|
|
@@ -16,33 +16,34 @@ npm run smoke:platform:ubuntu-image
|
|
|
16
16
|
npm run smoke:platform:doctor
|
|
17
17
|
npm run smoke:platform:all
|
|
18
18
|
crabbox list --provider local-container
|
|
19
|
-
crabbox list --provider parallels
|
|
20
19
|
```
|
|
21
20
|
|
|
22
|
-
`smoke:platform:all` also runs `smoke:platform:doctor` before any target suite starts, so the explicit doctor step is a readable release checklist step rather than a hidden precondition. The canonical `npm run verify -- release` gate also runs the configured-source lifecycle harness, then the same platform doctor and
|
|
21
|
+
`smoke:platform:all` means all **required** configured targets, not optional Windows. It also runs `smoke:platform:doctor` before any target suite starts, so the explicit doctor step is a readable release checklist step rather than a hidden precondition. The canonical `npm run verify -- release` gate also runs the configured-source lifecycle harness, then the same platform doctor and configured required `macos,ubuntu` matrix after default verification and packaged Pi smoke, so `npm publish` cannot pass `prepublishOnly` without lifecycle and platform gates. After the matrix, inspect `.artifacts/platform-smoke/<run-id>/...` summaries and manifests; a green Crabbox exit without matching suite assertions is not release proof. Use provider-specific `crabbox list` commands for cleanup review because this host may have unrelated Crabbox providers configured that require credentials.
|
|
23
22
|
|
|
24
23
|
Per-target commands are for diagnosis:
|
|
25
24
|
|
|
26
25
|
```sh
|
|
27
26
|
npm run smoke:platform:macos
|
|
28
27
|
npm run smoke:platform:ubuntu
|
|
28
|
+
node scripts/platform-smoke.mjs doctor --target windows-native
|
|
29
29
|
npm run smoke:platform:windows-native
|
|
30
|
+
crabbox list --provider parallels # only after an explicitly selected Windows run
|
|
30
31
|
npm run verify -- platform-smoke run --target ubuntu --suite platform-build
|
|
31
32
|
```
|
|
32
33
|
|
|
33
34
|
## Targets
|
|
34
35
|
|
|
35
|
-
| Target | Crabbox provider | Shell contract | Release status
|
|
36
|
-
| ---------------- | ---------------------- | -------------------------------------------------- |
|
|
37
|
-
| `macos` | `ssh` static localhost | POSIX shell on macOS | Required
|
|
38
|
-
| `ubuntu` | `local-container` | POSIX shell in a Docker-compatible local container | Required
|
|
39
|
-
| `windows-native` | `parallels` | native Windows PowerShell over OpenSSH |
|
|
36
|
+
| Target | Crabbox provider | Shell contract | Release status |
|
|
37
|
+
| ---------------- | ---------------------- | -------------------------------------------------- | ------------------------------------ |
|
|
38
|
+
| `macos` | `ssh` static localhost | POSIX shell on macOS | Required |
|
|
39
|
+
| `ubuntu` | `local-container` | POSIX shell in a Docker-compatible local container | Required |
|
|
40
|
+
| `windows-native` | `parallels` | native Windows PowerShell over OpenSSH | Best-effort; explicit selection only |
|
|
40
41
|
|
|
41
42
|
## Alternate native transports
|
|
42
43
|
|
|
43
|
-
With maintainer approval, local macOS execution can replace localhost SSH.
|
|
44
|
+
With maintainer approval, local macOS execution can replace localhost SSH. For native Windows, routine GitHub Actions includes only the nonblocking smoke. On-demand full Windows jobs and Crabbox/Parallels target results retain their own scope and failures; neither is substituted for required macOS/Ubuntu evidence or relabeled a browser-dogfood pass. Record alternate native checks separately from Crabbox SSH or Parallels results. The default `release` and `prepublishOnly` commands still select the Crabbox matrix; record alternate suite evidence separately rather than reporting those commands as passed.
|
|
44
45
|
|
|
45
|
-
On macOS, run the unchanged commands returned by `buildPlatformBuildCommand('macos', 'pi-agent-browser-native', '24.21.0')` and `buildBrowserDogfoodCommand('macos', '0.
|
|
46
|
+
On macOS, run the unchanged commands returned by `buildPlatformBuildCommand('macos', 'pi-agent-browser-native', '24.21.0')` and `buildBrowserDogfoodCommand('macos', '0.41.0', true)` in [`scripts/platform-smoke/targets.mjs`](../scripts/platform-smoke/targets.mjs), serially in a clean private source copy. Use private HOME, npm and Pi settings, and headless browser profiles, and clear inherited `PI_*` variables first: a shell started from Pi exports `PI_PACKAGE_DIR` and `PI_MANAGED_CLI`, which make the archived Pi CLI report the host package instead of the locked suite version. No Remote Login or host security change is required.
|
|
46
47
|
|
|
47
48
|
Retain the exact source head/tree, package and tool versions, native OS/architecture, generated commands, stdout/stderr, every `PLATFORM_*` exit marker, actual Pi registration output, dogfood JSON and verified screenshot. Check the suite assertions below and clean up only the run's processes and temporary files. These alternatives do not waive Ubuntu or any non-platform release check.
|
|
48
49
|
|
|
@@ -71,6 +72,7 @@ PLATFORM_SMOKE_MAC_PORT=22
|
|
|
71
72
|
# The tag suffix is derived from scripts/agent-browser-capability-baseline.mjs.
|
|
72
73
|
PLATFORM_SMOKE_UBUNTU_IMAGE="pi-agent-browser-native-platform:node24-agent-browser<baseline-version>"
|
|
73
74
|
|
|
75
|
+
# Optional: needed only when windows-native is explicitly selected.
|
|
74
76
|
PLATFORM_SMOKE_WINDOWS_VM="pi-extension-windows-template"
|
|
75
77
|
PLATFORM_SMOKE_WINDOWS_SNAPSHOT="crabbox-ready-ab-0.33.0"
|
|
76
78
|
PLATFORM_SMOKE_WINDOWS_USER="<windows-ssh-user>"
|
|
@@ -80,7 +82,7 @@ PLATFORM_SMOKE_WINDOWS_WORK_ROOT="C:\\crabbox\\pi-agent-browser-native"
|
|
|
80
82
|
PLATFORM_SMOKE_AUTH_ENV=""
|
|
81
83
|
```
|
|
82
84
|
|
|
83
|
-
The Ubuntu target image is derived from `node:24-bookworm`, installs the `agent-browser`
|
|
85
|
+
The Ubuntu target image is derived from `node:24-bookworm`, installs the latest stock `agent-browser` and checks it against [`scripts/agent-browser-capability-baseline.mjs`](../scripts/agent-browser-capability-baseline.mjs), installs Debian Chromium plus the upstream Linux WebGPU/Xvfb runtime packages (`libvulkan1`, `mesa-vulkan-drivers`, and `xvfb`) through apt, copies the official Go 1.27.1 toolchain onto `PATH` so `platform-target` can build the [corrected quality checker](CODE_QUALITY.md), creates a non-root `circleci` user, and sets `AGENT_BROWSER_EXECUTABLE_PATH=/usr/bin/chromium`. Rebaseline the project when current upstream differs from the audited version, then rebuild the image, or override `PLATFORM_SMOKE_UBUNTU_IMAGE` with an equivalent prepared local image. Do not install `agent-browser` ad hoc inside the Ubuntu smoke command; a missing tool is image/template drift.
|
|
84
86
|
|
|
85
87
|
The configured upstream `agent-browser` baseline is imported from [`scripts/agent-browser-capability-baseline.mjs`](../scripts/agent-browser-capability-baseline.mjs). Target-local browser suites verify that exact `agent-browser` version before running. Bake the exact upstream CLI and browser runtime into the Windows template/snapshot for speed and reproducibility; missing or stale Windows `agent-browser` / browser readiness is a blocked setup, not something the smoke command repairs. The Windows browser suite checks the preinstalled browser cache and prewarms one short loopback HTTP URL before the extension harness runs.
|
|
86
88
|
|
|
@@ -112,6 +114,8 @@ Each required target runs `platform-build` and `browser-dogfood-smoke` on one Cr
|
|
|
112
114
|
8. Run `pi list --approve` and assert the package is registered under project packages from the packed install.
|
|
113
115
|
9. Assert the release proof did not use `pi -e .` or `pi --extension .`.
|
|
114
116
|
|
|
117
|
+
When `PI_AGENT_BROWSER_RELEASE_TARBALL` names a retained release candidate, the harness copies it through the ordinary Crabbox workspace sync and installs that archive in step 6 instead of the target-local pack. The target-local `npm pack` still runs. Each target records and checks the candidate SHA-256 before and after installation; the caller remains responsible for comparing the original archive with the shared preparation receipt.
|
|
118
|
+
|
|
115
119
|
### `browser-dogfood-smoke`
|
|
116
120
|
|
|
117
121
|
1. Run `npm ci` in the synced checkout if needed.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pi-agent-browser-native",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.7",
|
|
4
4
|
"description": "pi extension that exposes agent-browser as a native tool for browser automation",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"author": "Mitch Fultz (https://github.com/fitchmultz)",
|
|
@@ -32,7 +32,14 @@
|
|
|
32
32
|
"pi-agent-browser-doctor": "scripts/doctor.mjs"
|
|
33
33
|
},
|
|
34
34
|
"files": [
|
|
35
|
-
"dist",
|
|
35
|
+
"dist/extensions/agent-browser/index.js",
|
|
36
|
+
"dist/extensions/agent-browser/script-worker.js",
|
|
37
|
+
"dist/packaged/lib/config-policy.js",
|
|
38
|
+
"dist/packaged/lib/browser-session-conversion.js",
|
|
39
|
+
"dist/packaged/lib/parsing.js",
|
|
40
|
+
"dist/packaged/lib/playbook.js",
|
|
41
|
+
"dist/packaged/lib/results/snapshot.js",
|
|
42
|
+
"dist/packaged/lib/runtime.js",
|
|
36
43
|
"platform-smoke.config.mjs",
|
|
37
44
|
"scripts/config.mjs",
|
|
38
45
|
"scripts/convert-browser-session.mjs",
|
|
@@ -53,6 +60,8 @@
|
|
|
53
60
|
"LICENSE",
|
|
54
61
|
"docs/ARCHITECTURE.md",
|
|
55
62
|
"docs/CODE_QUALITY.md",
|
|
63
|
+
"docs/PERFORMANCE.md",
|
|
64
|
+
"docs/performance/2026-10-12.json",
|
|
56
65
|
"docs/COMMAND_REFERENCE.md",
|
|
57
66
|
"docs/ELECTRON.md",
|
|
58
67
|
"docs/RELEASE.md",
|
|
@@ -111,14 +120,15 @@
|
|
|
111
120
|
"smoke:platform:macos": "node scripts/platform-smoke.mjs run --target macos",
|
|
112
121
|
"smoke:platform:ubuntu": "node scripts/platform-smoke.mjs run --target ubuntu",
|
|
113
122
|
"smoke:platform:windows-native": "node scripts/platform-smoke.mjs run --target windows-native",
|
|
114
|
-
"smoke:platform:all": "npm run smoke:platform:doctor && node scripts/platform-smoke.mjs run
|
|
123
|
+
"smoke:platform:all": "npm run smoke:platform:doctor && node scripts/platform-smoke.mjs run",
|
|
115
124
|
"check:compat": "node scripts/compat-host.mjs && npm run typecheck && npm test && node scripts/verify-package.mjs --smoke-pi",
|
|
116
125
|
"typecheck": "node ./scripts/project.mjs verify typecheck",
|
|
117
|
-
"test": "node ./scripts/
|
|
126
|
+
"test": "node ./scripts/project.mjs test",
|
|
118
127
|
"verify": "node ./scripts/project.mjs verify",
|
|
119
128
|
"prepublishOnly": "npm run verify -- release && npm pack --dry-run",
|
|
120
129
|
"build": "node ./scripts/build.mjs",
|
|
121
130
|
"startup-profile": "node ./scripts/profile-startup.mjs",
|
|
131
|
+
"performance-profile": "node --expose-gc ./scripts/profile-performance.mjs",
|
|
122
132
|
"prepare": "node ./scripts/prepare.mjs"
|
|
123
133
|
},
|
|
124
134
|
"packageManager": "npm@12.2.0",
|
|
@@ -139,8 +149,12 @@
|
|
|
139
149
|
"dependencies": {
|
|
140
150
|
"cross-spawn": "7.0.6",
|
|
141
151
|
"path-key": "3.1.1",
|
|
152
|
+
"stream-chain": "4.2.6",
|
|
142
153
|
"stream-json": "3.7.0",
|
|
143
154
|
"strip-json-comments": "5.0.3",
|
|
144
155
|
"which": "2.0.2"
|
|
156
|
+
},
|
|
157
|
+
"overrides": {
|
|
158
|
+
"undici": "8.12.3"
|
|
145
159
|
}
|
|
146
160
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// Platform smoke configuration for pi-agent-browser-native.
|
|
2
|
-
// Crabbox owns the target lease/sync loop; this file is the project source of truth for
|
|
2
|
+
// Crabbox owns the target lease/sync loop; this file is the project source of truth for required and explicitly selected best-effort platform coverage.
|
|
3
3
|
|
|
4
4
|
import packageJson from "./package.json" with { type: "json" };
|
|
5
5
|
import { CAPABILITY_BASELINE } from "./scripts/agent-browser-capability-baseline.mjs";
|
|
@@ -10,7 +10,8 @@ const PLATFORM_SMOKE_UBUNTU_IMAGE = `pi-agent-browser-native-platform:node24-age
|
|
|
10
10
|
export default {
|
|
11
11
|
packageName: "pi-agent-browser-native",
|
|
12
12
|
artifactRoot: ".artifacts/platform-smoke",
|
|
13
|
-
requiredTargets: ["macos", "ubuntu"
|
|
13
|
+
requiredTargets: ["macos", "ubuntu"],
|
|
14
|
+
optionalTargets: ["windows-native"],
|
|
14
15
|
requiredSuites: ["platform-build", "browser-dogfood-smoke"],
|
|
15
16
|
requiredCrabbox: {
|
|
16
17
|
install: "Homebrew package or PLATFORM_SMOKE_CRABBOX override",
|
|
@@ -89,6 +89,8 @@ const inventorySections = Object.freeze([
|
|
|
89
89
|
"session list",
|
|
90
90
|
"state save <path>",
|
|
91
91
|
"state load <path>",
|
|
92
|
+
"skippedOrigins",
|
|
93
|
+
"restoreSkippedOrigins",
|
|
92
94
|
"state list",
|
|
93
95
|
"state show <filename>",
|
|
94
96
|
"state rename <old-name> <new-name>",
|
|
@@ -118,6 +120,7 @@ const inventorySections = Object.freeze([
|
|
|
118
120
|
["session help", "--namespace <name>"],
|
|
119
121
|
["state help", "save <path>"],
|
|
120
122
|
["state help", "load <path>"],
|
|
123
|
+
["state help", "elsewhere are skipped and listed"],
|
|
121
124
|
["state help", "list"],
|
|
122
125
|
["state help", "show <filename>"],
|
|
123
126
|
["state help", "rename <old-name> <new-name>"],
|
|
@@ -144,7 +147,8 @@ const inventorySections = Object.freeze([
|
|
|
144
147
|
"Network, storage, artifacts, diagnostics, and performance",
|
|
145
148
|
[
|
|
146
149
|
"network <action>",
|
|
147
|
-
"network route <url> [--abort|--body <json>] [--resource-type <csv>]",
|
|
150
|
+
"network route <url> [--abort|--body <json> [--allow-origin <origin>]] [--resource-type <csv>]",
|
|
151
|
+
"--allow-origin <origin>",
|
|
148
152
|
"network unroute [url]",
|
|
149
153
|
"network requests [--clear] [--filter <pattern>] [--type <csv>] [--method <method>] [--status <code|range>]",
|
|
150
154
|
"network request <requestId>",
|
|
@@ -210,6 +214,7 @@ const inventorySections = Object.freeze([
|
|
|
210
214
|
root("network <action>"),
|
|
211
215
|
root("--resource-type <csv>"),
|
|
212
216
|
["network help", "unroute [url]"],
|
|
217
|
+
["network help", "--allow-origin <origin>"],
|
|
213
218
|
["network help", "network har start"],
|
|
214
219
|
["network help", "network har start --content all"],
|
|
215
220
|
["network help", "--content <mode>"],
|
|
@@ -285,6 +290,7 @@ const inventorySections = Object.freeze([
|
|
|
285
290
|
"Batch, auth, confirmations, setup, dashboard, devices, and AI commands",
|
|
286
291
|
[
|
|
287
292
|
"batch [--bail]",
|
|
293
|
+
"batch --bail --omit-command",
|
|
288
294
|
"auth save <name>",
|
|
289
295
|
"auth save <name> --url <url> --username <user> --password <pass>",
|
|
290
296
|
"auth save <name> --username-selector <s> --password-selector <s> --submit-selector <s>",
|
|
@@ -314,8 +320,10 @@ const inventorySections = Object.freeze([
|
|
|
314
320
|
"doctor --webgpu --headed",
|
|
315
321
|
"doctor --json",
|
|
316
322
|
"mcp",
|
|
323
|
+
"mcp call <tool>",
|
|
317
324
|
"mcp --tools core,webmcp",
|
|
318
325
|
"plugin add <ref>",
|
|
326
|
+
"plugin add <ref> --project",
|
|
319
327
|
"plugin [list]",
|
|
320
328
|
"plugin show <name>",
|
|
321
329
|
"plugin run <name> <type>",
|
|
@@ -323,7 +331,7 @@ const inventorySections = Object.freeze([
|
|
|
323
331
|
"profiles",
|
|
324
332
|
],
|
|
325
333
|
[
|
|
326
|
-
root(
|
|
334
|
+
root('batch [options] ["cmd" ...]'),
|
|
327
335
|
root("auth save <name>"),
|
|
328
336
|
root("auth login <name>"),
|
|
329
337
|
root("confirm <id>"),
|
|
@@ -340,6 +348,8 @@ const inventorySections = Object.freeze([
|
|
|
340
348
|
root("doctor [--fix]"),
|
|
341
349
|
root("profiles"),
|
|
342
350
|
["batch help", "--bail"],
|
|
351
|
+
["batch help", "--omit-command"],
|
|
352
|
+
["batch help", "does not make output safe for secrets"],
|
|
343
353
|
["auth help", "--url <url>"],
|
|
344
354
|
["auth help", "--username <user>"],
|
|
345
355
|
["auth help", "--password <pass>"],
|
|
@@ -361,8 +371,12 @@ const inventorySections = Object.freeze([
|
|
|
361
371
|
["auth help", "--credential-provider <p>"],
|
|
362
372
|
["auth help", "--no-navigate"],
|
|
363
373
|
["mcp help", "agent_browser_open"],
|
|
374
|
+
["mcp help", "mcp call <tool>"],
|
|
375
|
+
["mcp help", "_meta.agentBrowserVersion"],
|
|
364
376
|
["mcp help", "--tools"],
|
|
365
377
|
["plugin help", "Add a plugin from npm or GitHub"],
|
|
378
|
+
["plugin help", "plugin add writes ~/.agent-browser/config.json by default"],
|
|
379
|
+
["plugin help", "--project"],
|
|
366
380
|
["plugin help", "credential.read"],
|
|
367
381
|
],
|
|
368
382
|
),
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export const TARGET_AGENT_BROWSER_SOURCE = "scripts/agent-browser-target.mjs";
|
|
2
|
-
export const TARGET_AGENT_BROWSER_VERSION = "0.
|
|
2
|
+
export const TARGET_AGENT_BROWSER_VERSION = "0.41.0";
|
|
3
3
|
export const TARGET_AGENT_BROWSER_VERSION_LABEL = `agent-browser ${TARGET_AGENT_BROWSER_VERSION}`;
|
|
4
4
|
export const MINIMUM_AGENT_BROWSER_VERSION = "0.35.0";
|
|
5
5
|
export const MINIMUM_AGENT_BROWSER_VERSION_LABEL = `agent-browser ${MINIMUM_AGENT_BROWSER_VERSION}`;
|
package/scripts/build.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
/**
|
|
3
3
|
* Purpose: Produce the compiled runtime files that the published Pi package loads.
|
|
4
|
-
* Responsibilities: Remove stale dist output, emit runtime assets, bundle the
|
|
4
|
+
* Responsibilities: Remove stale dist output, emit all checkout runtime assets, bundle the packaged entrypoints, and fail with clear build output.
|
|
5
5
|
* Scope: Maintainer/package build only; runtime behavior remains in extensions/agent-browser TypeScript sources.
|
|
6
6
|
* Usage: `npm run build` before package verification, lifecycle validation, and npm pack/publish.
|
|
7
7
|
* Invariants/Assumptions: `node_modules` provides `typescript` and `esbuild`; Termux supplies Android-native `tsgo` on PATH. `dist/` is generated output.
|
|
@@ -51,14 +51,25 @@ async function main() {
|
|
|
51
51
|
}
|
|
52
52
|
throw error;
|
|
53
53
|
}
|
|
54
|
-
//
|
|
55
|
-
const
|
|
54
|
+
// Raw checkout libraries share module-owned state; package-only bundles must not overwrite them.
|
|
55
|
+
const distDirectory = join(process.cwd(), "dist");
|
|
56
|
+
const runtimeDirectory = join(process.cwd(), "dist", "extensions", "agent-browser");
|
|
56
57
|
await build({
|
|
57
58
|
allowOverwrite: true,
|
|
58
59
|
bundle: true,
|
|
59
|
-
entryPoints: [
|
|
60
|
+
entryPoints: [
|
|
61
|
+
{ in: join(runtimeDirectory, "index.js"), out: "extensions/agent-browser/index" },
|
|
62
|
+
...[
|
|
63
|
+
"lib/config-policy",
|
|
64
|
+
"lib/browser-session-conversion",
|
|
65
|
+
"lib/parsing",
|
|
66
|
+
"lib/playbook",
|
|
67
|
+
"lib/results/snapshot",
|
|
68
|
+
"lib/runtime",
|
|
69
|
+
].map((path) => ({ in: join(runtimeDirectory, `${path}.js`), out: `packaged/${path}` })),
|
|
70
|
+
],
|
|
60
71
|
format: "esm",
|
|
61
|
-
|
|
72
|
+
outdir: distDirectory,
|
|
62
73
|
packages: "external",
|
|
63
74
|
platform: "node",
|
|
64
75
|
target: "node24.21",
|
|
@@ -56,6 +56,9 @@ export const optionsAndEnv = section(
|
|
|
56
56
|
"--no-ca-cert",
|
|
57
57
|
"AGENT_BROWSER_CA_CERT",
|
|
58
58
|
"AGENT_BROWSER_CLEAR_CA_CERT",
|
|
59
|
+
"--use-system-ca",
|
|
60
|
+
"AGENT_BROWSER_USE_SYSTEM_CA",
|
|
61
|
+
"SSL_CERT_FILE",
|
|
59
62
|
"--allow-file-access",
|
|
60
63
|
"AGENT_BROWSER_ALLOW_FILE_ACCESS",
|
|
61
64
|
"--hide-scrollbars <bool>",
|
|
@@ -75,6 +78,9 @@ export const optionsAndEnv = section(
|
|
|
75
78
|
"AGENT_BROWSER_DOWNLOAD_PATH",
|
|
76
79
|
"--engine <name>",
|
|
77
80
|
"AGENT_BROWSER_ENGINE",
|
|
81
|
+
"--engine obscura",
|
|
82
|
+
"OBSCURA_ALLOW_PRIVATE_NETWORK",
|
|
83
|
+
"AGENT_BROWSER_OBSCURA_STEALTH",
|
|
78
84
|
"--input-mode <mode>",
|
|
79
85
|
"--no-auto-dialog",
|
|
80
86
|
"AGENT_BROWSER_NO_AUTO_DIALOG",
|
|
@@ -141,11 +147,15 @@ export const optionsAndEnv = section(
|
|
|
141
147
|
"BROWSERLESS_STEALTH",
|
|
142
148
|
"BROWSERLESS_TTL",
|
|
143
149
|
"BROWSER_USE_API_KEY",
|
|
150
|
+
"BROWSER_USE_PROFILE_ID",
|
|
151
|
+
"BROWSER_USE_PROXY_COUNTRY",
|
|
152
|
+
"BROWSER_USE_ENABLE_RECORDING",
|
|
144
153
|
"KERNEL_API_KEY",
|
|
145
154
|
"KERNEL_HEADLESS",
|
|
146
155
|
"KERNEL_STEALTH",
|
|
147
156
|
"KERNEL_TIMEOUT_SECONDS",
|
|
148
157
|
"KERNEL_PROFILE_NAME",
|
|
158
|
+
"KERNEL_PROFILE_SAVE_CHANGES",
|
|
149
159
|
"AGENTCORE_API_KEY",
|
|
150
160
|
"AGENTCORE_REGION",
|
|
151
161
|
"AGENTCORE_BROWSER_ID",
|
|
@@ -210,6 +220,9 @@ export const optionsAndEnv = section(
|
|
|
210
220
|
root("--no-ca-cert"),
|
|
211
221
|
root("AGENT_BROWSER_CA_CERT"),
|
|
212
222
|
root("AGENT_BROWSER_CLEAR_CA_CERT"),
|
|
223
|
+
root("--use-system-ca"),
|
|
224
|
+
root("AGENT_BROWSER_USE_SYSTEM_CA"),
|
|
225
|
+
["core skill full", "SSL_CERT_FILE"],
|
|
213
226
|
root("--allow-file-access"),
|
|
214
227
|
root("AGENT_BROWSER_ALLOW_FILE_ACCESS"),
|
|
215
228
|
root("--hide-scrollbars <bool>"),
|
|
@@ -226,6 +239,12 @@ export const optionsAndEnv = section(
|
|
|
226
239
|
root("AGENT_BROWSER_DOWNLOAD_PATH"),
|
|
227
240
|
root("--engine <name>"),
|
|
228
241
|
root("AGENT_BROWSER_ENGINE"),
|
|
242
|
+
root("--engine obscura"),
|
|
243
|
+
root("OBSCURA_ALLOW_PRIVATE_NETWORK"),
|
|
244
|
+
root("AGENT_BROWSER_OBSCURA_STEALTH"),
|
|
245
|
+
root("BROWSER_USE_PROFILE_ID"),
|
|
246
|
+
root("BROWSER_USE_PROXY_COUNTRY"),
|
|
247
|
+
root("BROWSER_USE_ENABLE_RECORDING"),
|
|
229
248
|
root("--input-mode <mode>"),
|
|
230
249
|
root("--no-auto-dialog"),
|
|
231
250
|
root("AGENT_BROWSER_NO_AUTO_DIALOG"),
|
|
@@ -266,6 +285,7 @@ export const optionsAndEnv = section(
|
|
|
266
285
|
root("--debug"),
|
|
267
286
|
root("AGENT_BROWSER_DEBUG"),
|
|
268
287
|
root("--config <path>"),
|
|
288
|
+
root("The auto-discovered ./agent-browser.json cannot set executablePath, args or plugins"),
|
|
269
289
|
root("AGENT_BROWSER_CONFIG"),
|
|
270
290
|
root("AGENT_BROWSER_DEFAULT_TIMEOUT"),
|
|
271
291
|
root("AGENT_BROWSER_AUTOSAVE_INTERVAL_MS"),
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
/** Audited upstream source evidence and the native help commands sampled for drift. */
|
|
2
2
|
export const sourceEvidence = Object.freeze({
|
|
3
3
|
repository: "vercel-labs/agent-browser",
|
|
4
|
-
upstreamHead: "
|
|
5
|
-
upstreamPackageVersion: "0.
|
|
4
|
+
upstreamHead: "1453dd37a40c730fe00f592bc32198a896ff8747",
|
|
5
|
+
upstreamPackageVersion: "0.41.0",
|
|
6
6
|
inspectedSources: Object.freeze([
|
|
7
|
+
"stock npm agent-browser@0.41.0 tarball and skill-data/",
|
|
7
8
|
"agent-browser --version",
|
|
8
9
|
"agent-browser --help",
|
|
9
10
|
"selected agent-browser <command> --help output",
|
|
@@ -20,19 +21,28 @@ export const sourceEvidence = Object.freeze({
|
|
|
20
21
|
"bin/agent-browser.js",
|
|
21
22
|
"cli/src/ca_bundle.rs",
|
|
22
23
|
"cli/src/commands.rs",
|
|
24
|
+
"cli/src/connection.rs",
|
|
23
25
|
"cli/src/mcp.rs",
|
|
24
26
|
"cli/src/flags.rs",
|
|
27
|
+
"cli/src/main.rs",
|
|
28
|
+
"cli/src/session_files.rs",
|
|
29
|
+
"cli/src/plugins.rs",
|
|
25
30
|
"cli/src/read.rs",
|
|
31
|
+
"cli/src/tls.rs",
|
|
26
32
|
"cli/src/doctor/ffmpeg.rs",
|
|
27
33
|
"cli/src/doctor/webgpu.rs",
|
|
28
34
|
"cli/src/native/actions.rs",
|
|
29
35
|
"cli/src/native/a11y/mod.rs",
|
|
30
36
|
"cli/src/native/browser.rs",
|
|
37
|
+
"cli/src/native/cdp/obscura.rs",
|
|
38
|
+
"cli/src/native/policy.rs",
|
|
39
|
+
"cli/src/native/providers.rs",
|
|
31
40
|
"cli/src/native/tab_binding.rs",
|
|
32
41
|
"cli/src/native/daemon.rs",
|
|
33
42
|
"cli/src/native/element.rs",
|
|
34
43
|
"cli/src/native/recording.rs",
|
|
35
44
|
"cli/src/native/snapshot.rs",
|
|
45
|
+
"cli/src/native/state.rs",
|
|
36
46
|
"cli/src/native/interaction.rs",
|
|
37
47
|
"cli/src/native/screenshot.rs",
|
|
38
48
|
"cli/src/native/stream/cdp_loop.rs",
|
|
@@ -41,13 +51,17 @@ export const sourceEvidence = Object.freeze({
|
|
|
41
51
|
"cli/src/native/test_fixtures/webmcp_probe.html",
|
|
42
52
|
"cli/src/native/webmcp.rs",
|
|
43
53
|
"cli/src/output.rs",
|
|
44
|
-
"docs/
|
|
45
|
-
"docs/
|
|
46
|
-
"docs/
|
|
47
|
-
"docs/
|
|
48
|
-
"docs/
|
|
49
|
-
"docs/
|
|
50
|
-
"docs/
|
|
54
|
+
"docs/content/docs/webgpu.mdx",
|
|
55
|
+
"docs/content/docs/webmcp.mdx",
|
|
56
|
+
"docs/content/docs/network.mdx",
|
|
57
|
+
"docs/content/docs/proxy.mdx",
|
|
58
|
+
"docs/content/docs/selectors.mdx",
|
|
59
|
+
"docs/content/docs/skills.mdx",
|
|
60
|
+
"docs/content/docs/commands.mdx",
|
|
61
|
+
"docs/content/docs/engines/obscura.mdx",
|
|
62
|
+
"docs/content/docs/providers/browser-use.mdx",
|
|
63
|
+
"docs/content/docs/providers/kernel.mdx",
|
|
64
|
+
"cli/tests/tls_cli.rs",
|
|
51
65
|
"skill-data/derive-client/SKILL.md",
|
|
52
66
|
"skill-data/core/SKILL.md",
|
|
53
67
|
"skill-data/core/references/video-recording.md",
|
|
@@ -60,7 +74,6 @@ export const sourceEvidence = Object.freeze({
|
|
|
60
74
|
"packages/@agent-browser/sandbox/README.md",
|
|
61
75
|
"packages/@agent-browser/sandbox/src/shared.ts",
|
|
62
76
|
"packages/@agent-browser/sandbox/src/vercel.ts",
|
|
63
|
-
"packages/@agent-browser/sandbox/src/eve.ts",
|
|
64
77
|
]),
|
|
65
78
|
});
|
|
66
79
|
|
package/scripts/config.mjs
CHANGED
|
@@ -17,7 +17,7 @@ async function loadConfigPolicyModule() {
|
|
|
17
17
|
if (existsSync(sourcePolicyUrl)) {
|
|
18
18
|
return import(sourcePolicyUrl.href);
|
|
19
19
|
}
|
|
20
|
-
return import("../dist/
|
|
20
|
+
return import("../dist/packaged/lib/config-policy.js");
|
|
21
21
|
}
|
|
22
22
|
|
|
23
23
|
const {
|
|
@@ -23,7 +23,7 @@ if (values.help) {
|
|
|
23
23
|
);
|
|
24
24
|
}
|
|
25
25
|
const { convertBrowserSession } =
|
|
26
|
-
await import("../dist/
|
|
26
|
+
await import("../dist/packaged/lib/browser-session-conversion.js");
|
|
27
27
|
const receipt = await convertBrowserSession({
|
|
28
28
|
source: values.source,
|
|
29
29
|
destination: values.output,
|
|
@@ -10,10 +10,19 @@ function psSingleQuote(value) {
|
|
|
10
10
|
return `'${String(value).replace(/'/g, "''")}'`;
|
|
11
11
|
}
|
|
12
12
|
|
|
13
|
-
export function buildPlatformBuildCommand(
|
|
13
|
+
export function buildPlatformBuildCommand(
|
|
14
|
+
targetName,
|
|
15
|
+
packageName,
|
|
16
|
+
nodeValidationVersion,
|
|
17
|
+
candidate,
|
|
18
|
+
) {
|
|
14
19
|
if (platformFor(targetName) === "powershell") {
|
|
15
|
-
|
|
20
|
+
const candidateArgs = candidate
|
|
21
|
+
? ` -CandidatePath ${psSingleQuote(candidate.path)} -CandidateSha256 ${psSingleQuote(candidate.sha256)}`
|
|
22
|
+
: "";
|
|
23
|
+
return `powershell.exe -NoLogo -NoProfile -ExecutionPolicy Bypass -File .\\scripts\\platform-smoke\\platform-build-windows.ps1 -PackageName ${psSingleQuote(packageName)} -NodeValidationVersion ${psSingleQuote(nodeValidationVersion)}${candidateArgs}`;
|
|
16
24
|
}
|
|
25
|
+
const candidateHash = `node -e 'process.stdout.write(require("node:crypto").createHash("sha256").update(require("node:fs").readFileSync(process.argv[1])).digest("hex"))' "$PACK_FILE"`;
|
|
17
26
|
return [
|
|
18
27
|
`echo "Starting platform-build in $(pwd) at $(date -u +%Y-%m-%dT%H:%M:%SZ)"`,
|
|
19
28
|
`RUN_ROOT=".platform-smoke-runs/platform-build-$(date -u +%Y%m%dT%H%M%SZ)-$$"`,
|
|
@@ -37,11 +46,21 @@ export function buildPlatformBuildCommand(targetName, packageName, nodeValidatio
|
|
|
37
46
|
`cat "$PACK_DIR/npm-pack.stderr.txt"`,
|
|
38
47
|
`PACK_FILE="$PACK_DIR/$PACK_TARBALL"`,
|
|
39
48
|
`echo "PLATFORM_NPM_PACK_EXIT=$PACK_EXIT"`,
|
|
49
|
+
...(candidate
|
|
50
|
+
? [
|
|
51
|
+
`CANDIDATE_EXIT=0`,
|
|
52
|
+
`CANDIDATE_SOURCE=${shellQuote(candidate.path)}`,
|
|
53
|
+
`PACK_FILE="$PACK_DIR/release-candidate.tgz"`,
|
|
54
|
+
`if cp "$SOURCE_ROOT/$CANDIDATE_SOURCE" "$PACK_FILE"; then CANDIDATE_BEFORE=$(${candidateHash}); else CANDIDATE_BEFORE=""; fi`,
|
|
55
|
+
`echo "PLATFORM_CANDIDATE_SHA256_BEFORE=$CANDIDATE_BEFORE"`,
|
|
56
|
+
`if [ "$CANDIDATE_BEFORE" != ${shellQuote(candidate.sha256)} ]; then CANDIDATE_EXIT=1; fi`,
|
|
57
|
+
]
|
|
58
|
+
: []),
|
|
40
59
|
`echo "PLATFORM_PACKED_TARBALL=$PACK_FILE"`,
|
|
41
60
|
`PI_CLI="$SOURCE_ROOT/node_modules/.bin/pi"`,
|
|
42
61
|
`if [ ! -x "$PI_CLI" ]; then PI_CLI="$(command -v pi || true)"; fi`,
|
|
43
62
|
`echo "PLATFORM_PI_CLI=$PI_CLI"`,
|
|
44
|
-
`if [ -n "$PACK_TARBALL" ] && [ -f "$PACK_FILE" ]; then (cd "$PI_PROJECT" && npm init -y >"$PACK_DIR/packed-node-install.stdout.txt" 2>"$PACK_DIR/packed-node-install.stderr.txt" && npm install --no-save "$PACK_FILE" >>"$PACK_DIR/packed-node-install.stdout.txt" 2>>"$PACK_DIR/packed-node-install.stderr.txt"); PACKED_NODE_INSTALL_EXIT=$?; else echo "missing tarball" >"$PACK_DIR/packed-node-install.stderr.txt"; PACKED_NODE_INSTALL_EXIT=1; fi`,
|
|
63
|
+
`if [ -n "$PACK_TARBALL" ] && [ -f "$PACK_FILE" ]${candidate ? ' && [ "$CANDIDATE_EXIT" -eq 0 ]' : ""}; then (cd "$PI_PROJECT" && npm init -y >"$PACK_DIR/packed-node-install.stdout.txt" 2>"$PACK_DIR/packed-node-install.stderr.txt" && npm install --no-save "$PACK_FILE" >>"$PACK_DIR/packed-node-install.stdout.txt" 2>>"$PACK_DIR/packed-node-install.stderr.txt"); PACKED_NODE_INSTALL_EXIT=$?; else echo "missing or invalid tarball" >"$PACK_DIR/packed-node-install.stderr.txt"; PACKED_NODE_INSTALL_EXIT=1; fi`,
|
|
45
64
|
`echo "PLATFORM_PACKED_NODE_INSTALL_EXIT=$PACKED_NODE_INSTALL_EXIT"`,
|
|
46
65
|
`echo "--- PACKED_NODE_INSTALL_STDOUT START ---"; cat "$PACK_DIR/packed-node-install.stdout.txt" 2>/dev/null || true; echo "--- PACKED_NODE_INSTALL_STDOUT END ---"`,
|
|
47
66
|
`echo "--- PACKED_NODE_INSTALL_STDERR START ---"; cat "$PACK_DIR/packed-node-install.stderr.txt" 2>/dev/null || true; echo "--- PACKED_NODE_INSTALL_STDERR END ---"`,
|
|
@@ -53,7 +72,14 @@ export function buildPlatformBuildCommand(targetName, packageName, nodeValidatio
|
|
|
53
72
|
`echo "PLATFORM_PI_LIST_EXIT=$PI_LIST_EXIT"`,
|
|
54
73
|
`echo "--- PI_LIST_STDOUT START ---"; cat "$PACK_DIR/pi-list.stdout.txt" 2>/dev/null || true; echo "--- PI_LIST_STDOUT END ---"`,
|
|
55
74
|
`echo "--- PI_LIST_STDERR START ---"; cat "$PACK_DIR/pi-list.stderr.txt" 2>/dev/null || true; echo "--- PI_LIST_STDERR END ---"`,
|
|
56
|
-
|
|
75
|
+
...(candidate
|
|
76
|
+
? [
|
|
77
|
+
`CANDIDATE_AFTER=$(${candidateHash})`,
|
|
78
|
+
`echo "PLATFORM_CANDIDATE_SHA256_AFTER=$CANDIDATE_AFTER"`,
|
|
79
|
+
`if [ "$CANDIDATE_AFTER" != ${shellQuote(candidate.sha256)} ]; then CANDIDATE_EXIT=1; fi`,
|
|
80
|
+
]
|
|
81
|
+
: []),
|
|
82
|
+
`if [ "$NODE_VERSION_EXIT" -ne 0 ] || [ "$NPM_CI_EXIT" -ne 0 ] || [ "$VERIFY_EXIT" -ne 0 ] || [ "$PACK_EXIT" -ne 0 ] || [ "$PACKED_NODE_INSTALL_EXIT" -ne 0 ] || [ "$PI_INSTALL_EXIT" -ne 0 ] || [ "$PI_LIST_EXIT" -ne 0 ]${candidate ? ' || [ "$CANDIDATE_EXIT" -ne 0 ]' : ""}; then echo "PLATFORM_BUILD_FAILED"; exit 1; fi`,
|
|
57
83
|
`echo "PLATFORM_BUILD_OK"`,
|
|
58
84
|
].join("\n");
|
|
59
85
|
}
|
|
@@ -85,12 +85,21 @@ function isForbiddenProjectPath(path) {
|
|
|
85
85
|
);
|
|
86
86
|
}
|
|
87
87
|
function npmPackFiles() {
|
|
88
|
-
const
|
|
88
|
+
const windows = process.platform === "win32";
|
|
89
|
+
const output = silent(windows ? "npm.cmd" : "npm", ["pack", "--dry-run", "--json"], {
|
|
90
|
+
timeout: 0,
|
|
91
|
+
shell: windows,
|
|
92
|
+
});
|
|
89
93
|
if (!output) {
|
|
90
94
|
return null;
|
|
91
95
|
}
|
|
92
96
|
try {
|
|
93
|
-
|
|
97
|
+
const parsed = JSON.parse(output);
|
|
98
|
+
const packages = Array.isArray(parsed) ? parsed : Object.values(parsed);
|
|
99
|
+
if (packages.length !== 1 || !Array.isArray(packages[0]?.files)) {
|
|
100
|
+
return null;
|
|
101
|
+
}
|
|
102
|
+
return packages[0].files.map((file) => file.path);
|
|
94
103
|
} catch {
|
|
95
104
|
return null;
|
|
96
105
|
}
|
|
@@ -183,7 +183,7 @@ export function checkWindows({
|
|
|
183
183
|
}) {
|
|
184
184
|
console.log("\n── Windows native / Parallels ──");
|
|
185
185
|
if (!(config?.requiredTargets ?? []).includes("windows-native")) {
|
|
186
|
-
report.warn("windows-native
|
|
186
|
+
report.warn("windows-native not selected (best-effort); setup not checked, not a pass");
|
|
187
187
|
return;
|
|
188
188
|
}
|
|
189
189
|
if (!commandPath("prlctl")) {
|
|
@@ -51,13 +51,19 @@ function crabboxProviders(cbox) {
|
|
|
51
51
|
.filter(Boolean);
|
|
52
52
|
}
|
|
53
53
|
|
|
54
|
-
function checkRequiredProviders(cbox, report) {
|
|
54
|
+
function checkRequiredProviders(cbox, config, report) {
|
|
55
55
|
const providers = crabboxProviders(cbox);
|
|
56
56
|
if (providers.length === 0) {
|
|
57
57
|
report.fail("could not read crabbox providers");
|
|
58
58
|
return;
|
|
59
59
|
}
|
|
60
|
-
|
|
60
|
+
const providersByTarget = {
|
|
61
|
+
macos: "ssh",
|
|
62
|
+
ubuntu: "local-container",
|
|
63
|
+
"windows-native": "parallels",
|
|
64
|
+
};
|
|
65
|
+
for (const target of config.requiredTargets) {
|
|
66
|
+
const provider = providersByTarget[target];
|
|
61
67
|
if (providers.includes(provider)) {
|
|
62
68
|
report.ok(`crabbox provider available: ${provider}`);
|
|
63
69
|
} else {
|
|
@@ -163,13 +169,18 @@ function macSettings(config, packageName) {
|
|
|
163
169
|
}
|
|
164
170
|
|
|
165
171
|
function checkProviders(cbox, config, settings, report) {
|
|
166
|
-
checkRequiredProviders(cbox, report);
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
172
|
+
checkRequiredProviders(cbox, config, report);
|
|
173
|
+
if (config.requiredTargets.includes("ubuntu")) {
|
|
174
|
+
checkCrabboxProvider(
|
|
175
|
+
cbox,
|
|
176
|
+
["--provider", "local-container", "--local-container-image", settings.ubuntuImage],
|
|
177
|
+
"ubuntu local-container",
|
|
178
|
+
report,
|
|
179
|
+
);
|
|
180
|
+
}
|
|
181
|
+
if (!config.requiredTargets.includes("macos")) {
|
|
182
|
+
return;
|
|
183
|
+
}
|
|
173
184
|
const mac = macSettings(config, settings.packageName);
|
|
174
185
|
checkCrabboxProvider(
|
|
175
186
|
cbox,
|
|
@@ -251,8 +262,12 @@ export async function runDoctor(config) {
|
|
|
251
262
|
if (cboxPath) {
|
|
252
263
|
checkProviders(cbox, config, { packageName, ubuntuImage }, report);
|
|
253
264
|
}
|
|
254
|
-
|
|
255
|
-
|
|
265
|
+
if (config.requiredTargets.includes("ubuntu")) {
|
|
266
|
+
checkDocker(ubuntuImage, report);
|
|
267
|
+
}
|
|
268
|
+
if (config.requiredTargets.includes("macos")) {
|
|
269
|
+
checkMacSsh(config, packageName, report);
|
|
270
|
+
}
|
|
256
271
|
checkWindows({
|
|
257
272
|
cbox,
|
|
258
273
|
config,
|