agent-device 0.21.5 → 0.21.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/android/ime-helper/dist/{agent-device-android-ime-helper-0.21.5.apk → agent-device-android-ime-helper-0.21.7.apk} +0 -0
- package/android/ime-helper/dist/agent-device-android-ime-helper-0.21.7.apk.sha256 +1 -0
- package/android/ime-helper/dist/{agent-device-android-ime-helper-0.21.5.manifest.json → agent-device-android-ime-helper-0.21.7.manifest.json} +4 -4
- package/android/snapshot-helper/dist/{agent-device-android-snapshot-helper-0.21.5.apk → agent-device-android-snapshot-helper-0.21.7.apk} +0 -0
- package/android/snapshot-helper/dist/agent-device-android-snapshot-helper-0.21.7.apk.sha256 +1 -0
- package/android/snapshot-helper/dist/{agent-device-android-snapshot-helper-0.21.5.manifest.json → agent-device-android-snapshot-helper-0.21.7.manifest.json} +6 -6
- package/apple/snapshot-bridge/SnapshotBridgeRuntime.m +8 -1
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerAXSnapshotBridge.h +4 -0
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerAXSnapshotBridge.m +20 -0
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerScrollViewportPolicy.swift +1 -2
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+AXSnapshotFallback.swift +25 -12
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+CommandExecution.swift +56 -1
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+CommandJournal.swift +1 -1
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+Interaction.swift +36 -108
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+Keyboard.swift +241 -0
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+Lifecycle.swift +29 -0
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+Models.swift +46 -0
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+PrivateAXPresentation.swift +85 -26
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+Snapshot.swift +134 -117
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+SnapshotBackendCapabilities.swift +1 -3
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+SnapshotCapturePlan.swift +25 -4
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+SystemModal.swift +1 -1
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests.swift +3 -0
- package/dist/apple/snapshot-presentation/Sources/AgentDeviceSnapshotPresentation/SnapshotCoordinateSpace.swift +197 -0
- package/dist/apple/snapshot-presentation/Sources/AgentDeviceSnapshotPresentation/SnapshotModels.swift +30 -4
- package/dist/apple/snapshot-presentation/Sources/AgentDeviceSnapshotPresentation/SnapshotPresentation.swift +0 -81
- package/dist/apple/snapshot-presentation/Sources/AgentDeviceSnapshotPresentation/SnapshotPresentationInvariant.swift +1 -9
- package/dist/src/absence-observation-errors.js +1 -1
- package/dist/src/adapter.js +1 -1
- package/dist/src/adb-executor.js +2 -2
- package/dist/src/adb-failure.js +1 -1
- package/dist/src/adb-transport.js +1 -0
- package/dist/src/adb.js +1 -1
- package/dist/src/agent-browser-lifecycle.js +1 -1
- package/dist/src/agent-browser-process-record.js +1 -1
- package/dist/src/agent-browser-provider.js +1 -1
- package/dist/src/agent-browser-tool.js +1 -1
- package/dist/src/agent-device-client.js +2 -2
- package/dist/src/ai-sdk.js +1 -1
- package/dist/src/alert-runtime.js +1 -1
- package/dist/src/android-adb.d.ts +29 -2
- package/dist/src/android-adb.js +1 -1
- package/dist/src/android-input-ownership.js +1 -1
- package/dist/src/android.js +1 -1
- package/dist/src/app-catalog.js +1 -1
- package/dist/src/app-deployment-resolution.js +1 -1
- package/dist/src/app-helpers.js +1 -1
- package/dist/src/app-inventory.js +1 -1
- package/dist/src/app-launch.js +2 -2
- package/dist/src/app-lifecycle.js +3 -3
- package/dist/src/app-lifecycle2.js +2 -2
- package/dist/src/app-log-files.js +1 -1
- package/dist/src/app-log-reconnect.js +1 -1
- package/dist/src/app-log-runtime2.js +3 -3
- package/dist/src/app-resolution.js +2 -2
- package/dist/src/app-state.js +1 -1
- package/dist/src/apple-runner-platform.js +1 -1
- package/dist/src/application-lifecycle-interaction.js +1 -1
- package/dist/src/archive.js +1 -1
- package/dist/src/artifact-download.js +1 -1
- package/dist/src/auth-session.js +1 -1
- package/dist/src/auth.js +1 -1
- package/dist/src/back-mode.js +1 -1
- package/dist/src/backend-snapshot-options.js +1 -1
- package/dist/src/boot-diagnostics.js +1 -1
- package/dist/src/capture-disclosure.js +1 -0
- package/dist/src/capture.js +1 -1
- package/dist/src/cli-config.js +1 -1
- package/dist/src/cli-help.js +15 -2
- package/dist/src/cli-output.js +1 -1
- package/dist/src/cli.js +4 -4
- package/dist/src/click-button.js +1 -1
- package/dist/src/client-metro.js +1 -1
- package/dist/src/client-types.d.ts +32 -2
- package/dist/src/clipboard-shell-response.js +1 -0
- package/dist/src/command-schema.js +1 -1
- package/dist/src/command-tools.js +4 -2
- package/dist/src/command.js +1 -1
- package/dist/src/config.js +1 -1
- package/dist/src/connection-runtime.js +1 -1
- package/dist/src/connection.js +1 -1
- package/dist/src/contracts.d.ts +1 -1
- package/dist/src/contracts.js +1 -1
- package/dist/src/daemon-client-lifecycle.js +1 -1
- package/dist/src/daemon.js +1 -1
- package/dist/src/debug-symbols-facade.js +1 -1
- package/dist/src/device-boot.js +1 -1
- package/dist/src/device-claim-inspection.js +1 -1
- package/dist/src/device-claim-rule.js +2 -1
- package/dist/src/device-input-state.d.ts +7 -8
- package/dist/src/device-inventory-context.js +1 -1
- package/dist/src/device-rotation.js +1 -1
- package/dist/src/device-selection-resolver.js +1 -1
- package/dist/src/device-session.js +1 -1
- package/dist/src/device-shell.js +1 -0
- package/dist/src/device.js +1 -1
- package/dist/src/device2.js +1 -1
- package/dist/src/devicectl.js +1 -0
- package/dist/src/diagnostics.js +1 -1
- package/dist/src/dispatch-resolve.js +1 -1
- package/dist/src/display-inventory.js +1 -0
- package/dist/src/doctor-facade.js +1 -1
- package/dist/src/doctor2.js +1 -1
- package/dist/src/durable-resource.js +1 -1
- package/dist/src/engine-eval-script.js +1 -1
- package/dist/src/error.js +1 -1
- package/dist/src/exec.js +1 -1
- package/dist/src/file.js +1 -1
- package/dist/src/find.js +1 -1
- package/dist/src/finders.js +1 -1
- package/dist/src/format.js +2 -1
- package/dist/src/generic.js +1 -1
- package/dist/src/gesture-admission.js +1 -1
- package/dist/src/gesture-plan.js +1 -1
- package/dist/src/gesture-runtime.js +1 -1
- package/dist/src/harmonyos.js +1 -1
- package/dist/src/hdc.js +1 -1
- package/dist/src/helper.js +1 -1
- package/dist/src/human-control-contract.js +1 -1
- package/dist/src/human-control.js +1 -1
- package/dist/src/index.d.ts +1 -1
- package/dist/src/index.js +1 -1
- package/dist/src/input-actions.js +1 -1
- package/dist/src/input-actions2.js +1 -1
- package/dist/src/install-artifact-facade.js +1 -1
- package/dist/src/install-source-network-transport.js +1 -1
- package/dist/src/install-source2.js +1 -1
- package/dist/src/interaction-positionals.js +1 -1
- package/dist/src/interaction-ref-policy.js +1 -1
- package/dist/src/interaction.js +1 -1
- package/dist/src/interaction2.js +1 -1
- package/dist/src/interactor-operation-catalog.js +1 -1
- package/dist/src/interactor.js +5 -5
- package/dist/src/interactor2.js +1 -1
- package/dist/src/interactors.js +1 -1
- package/dist/src/internal/bin.js +1 -1
- package/dist/src/internal/daemon.js +2 -2
- package/dist/src/internal/png-worker.d.ts +4 -1
- package/dist/src/internal/png-worker.js +1 -1
- package/dist/src/internal/run-script-http-child.d.ts +1 -1
- package/dist/src/internal/run-script-http-child.js +1 -1
- package/dist/src/inventory.js +4 -4
- package/dist/src/inventory2.js +1 -1
- package/dist/src/inventory3.js +2 -2
- package/dist/src/inventory5.js +1 -1
- package/dist/src/ios-snapshot-acquisition.js +1 -1
- package/dist/src/ios-snapshot-runtime.js +1 -1
- package/dist/src/ios-target-activation.js +1 -0
- package/dist/src/lease-context.js +1 -1
- package/dist/src/lease-scope.js +1 -1
- package/dist/src/lease.js +1 -1
- package/dist/src/limrun-download-file.js +1 -0
- package/dist/src/limrun-runtime-dependencies.js +1 -1
- package/dist/src/limrun.d.ts +10 -4
- package/dist/src/linux.js +1 -1
- package/dist/src/local-interactor-operation-set.js +1 -1
- package/dist/src/location-coordinates.js +1 -1
- package/dist/src/logcat.js +1 -1
- package/dist/src/managed-device-scope.js +1 -1
- package/dist/src/mechanics.js +16 -16
- package/dist/src/mobile-snapshot-semantics.js +1 -1
- package/dist/src/multitouch-support.js +1 -1
- package/dist/src/observation.js +2 -2
- package/dist/src/output-common.js +5 -2
- package/dist/src/parameterized-recorded-fill.js +1 -1
- package/dist/src/perf-facade.js +2 -2
- package/dist/src/perf-runtime-operation-builder.js +1 -1
- package/dist/src/perf-runtime-plan.js +1 -1
- package/dist/src/perf.js +1 -1
- package/dist/src/physical-device-control.js +1 -1
- package/dist/src/platform-request-scope.js +1 -1
- package/dist/src/platform-runtime-android-adb-host.js +1 -1
- package/dist/src/platform-runtime-host.js +1 -1
- package/dist/src/platform-runtime-managed-owner.js +1 -1
- package/dist/src/platform-runtime-open-target.js +1 -1
- package/dist/src/platform-runtime-operation-host.js +4 -4
- package/dist/src/platform-runtime-runtime-hints.js +2 -2
- package/dist/src/platform-runtime-screen-recording-android-host.js +1 -1
- package/dist/src/platform-runtime-screen-recording-apple-runner-transport.js +1 -1
- package/dist/src/platform-runtime-screen-recording-apple-simulator-host.js +1 -1
- package/dist/src/platform-runtime-screen-recording-apple-transport.js +1 -1
- package/dist/src/platform-runtime-screen-recording-finalizer-host.js +1 -1
- package/dist/src/platform-runtime-screen-recording-harmony-host.js +1 -1
- package/dist/src/platform-runtime-screen-recording-process-host.js +1 -1
- package/dist/src/platform-runtime-unavailable.js +1 -1
- package/dist/src/platform-runtime.js +1 -1
- package/dist/src/platform-runtime2.js +1 -1
- package/dist/src/png-crop-bytes.js +1 -1
- package/dist/src/png-transcode.js +1 -0
- package/dist/src/png-worker-client.js +1 -0
- package/dist/src/png.js +1 -1
- package/dist/src/prepare-kind.js +1 -1
- package/dist/src/provider-session-ownership.js +1 -1
- package/dist/src/provider-webdriver.js +1 -1
- package/dist/src/proxy.js +1 -1
- package/dist/src/quality-warnings.js +1 -1
- package/dist/src/react-native.js +1 -1
- package/dist/src/record-runtime.js +1 -1
- package/dist/src/record-trace.js +1 -1
- package/dist/src/rect-center.js +1 -1
- package/dist/src/register-builtins.js +1 -1
- package/dist/src/registry.js +35 -35
- package/dist/src/remote-config2.js +1 -1
- package/dist/src/replay-divergence.js +1 -1
- package/dist/src/replay.js +2 -2
- package/dist/src/reporting.js +1 -1
- package/dist/src/request-admission.js +1 -1
- package/dist/src/request-cancel.js +1 -1
- package/dist/src/request-runtime-binding.js +1 -1
- package/dist/src/result-serialization.js +1 -1
- package/dist/src/retry.js +1 -1
- package/dist/src/runner-cache-metadata.js +2 -2
- package/dist/src/runner-client.js +1 -1
- package/dist/src/runner-disposal.js +1 -1
- package/dist/src/runner-operations-facade.js +1 -1
- package/dist/src/runner-presentation.js +1 -1
- package/dist/src/runner.js +1 -1
- package/dist/src/runtime-transport-hints.js +1 -1
- package/dist/src/runtime.js +3 -3
- package/dist/src/runtime10.js +1 -1
- package/dist/src/runtime2.js +4 -4
- package/dist/src/runtime3.js +1 -1
- package/dist/src/runtime4.js +5 -5
- package/dist/src/runtime5.js +1 -1
- package/dist/src/runtime6.js +1 -1
- package/dist/src/runtime7.js +1 -1
- package/dist/src/runtime8.js +1 -1
- package/dist/src/runtime9.js +1 -1
- package/dist/src/screen-recording-admission-ledger.js +1 -0
- package/dist/src/screen-recording-completion.js +1 -1
- package/dist/src/screen-recording-options.js +1 -1
- package/dist/src/screen-recording-resource-recovery.js +1 -1
- package/dist/src/screen-recording-transport.js +1 -0
- package/dist/src/screenshot-density.js +1 -1
- package/dist/src/screenshot-runtime.js +1 -1
- package/dist/src/screenshot.js +1 -1
- package/dist/src/screenshot3.js +1 -1
- package/dist/src/script.js +1 -1
- package/dist/src/scroll-command.js +1 -1
- package/dist/src/scroll-gesture.js +1 -1
- package/dist/src/sdk-batch-runner.js +2 -2
- package/dist/src/sdk-batch.js +2 -2
- package/dist/src/sdk-contracts.d.ts +76 -1
- package/dist/src/sdk-contracts.js +1 -1
- package/dist/src/sdk-device.js +1 -1
- package/dist/src/sdk-finders.d.ts +1 -1
- package/dist/src/sdk-finders.js +1 -1
- package/dist/src/sdk-io.js +1 -1
- package/dist/src/sdk-remote-config.js +1 -1
- package/dist/src/sdk-selectors.d.ts +18 -1
- package/dist/src/sdk-selectors.js +1 -1
- package/dist/src/selection.js +0 -0
- package/dist/src/selector-runtime.js +1 -1
- package/dist/src/selectors.js +1 -1
- package/dist/src/semantic-index.js +1 -1
- package/dist/src/server.js +1 -1
- package/dist/src/session-allocation.js +1 -1
- package/dist/src/session-observation.js +1 -1
- package/dist/src/session-routing.js +1 -1
- package/dist/src/session-runtime-admission.js +1 -1
- package/dist/src/session-snapshot.js +1 -1
- package/dist/src/session-store.js +3 -3
- package/dist/src/session2.js +4 -5
- package/dist/src/settings.js +1 -1
- package/dist/src/simctl-facade.js +1 -1
- package/dist/src/simctl.js +1 -1
- package/dist/src/simulator-boot.js +1 -1
- package/dist/src/simulator.js +1 -1
- package/dist/src/snapshot-capture-annotations.js +1 -1
- package/dist/src/snapshot-diagnostics.js +1 -1
- package/dist/src/snapshot-quality-backend-capabilities.js +1 -1
- package/dist/src/snapshot-runtime-binding.js +1 -1
- package/dist/src/snapshot-runtime.js +1 -1
- package/dist/src/snapshot-state.js +1 -1
- package/dist/src/snapshot.js +1 -1
- package/dist/src/snapshot2.js +1 -1
- package/dist/src/snapshot3.js +1 -1
- package/dist/src/snapshot4.js +1 -1
- package/dist/src/src.js +1 -1
- package/dist/src/src4.js +1 -1
- package/dist/src/src7.js +1 -1
- package/dist/src/src8.js +1 -1
- package/dist/src/stop-sequence.js +1 -1
- package/dist/src/string-enum.js +1 -1
- package/dist/src/takeover.js +1 -1
- package/dist/src/text-entry-focus.js +1 -1
- package/dist/src/tool-provider.js +1 -1
- package/dist/src/tool-provider2.js +1 -1
- package/dist/src/touch-runtime.js +1 -1
- package/dist/src/transport.js +1 -1
- package/dist/src/tree.js +1 -1
- package/dist/src/tv-remote.js +1 -1
- package/dist/src/type-text-runtime.js +1 -1
- package/dist/src/verified-file.js +1 -1
- package/dist/src/video.js +2 -2
- package/dist/src/viewport.js +1 -1
- package/dist/src/web.js +1 -1
- package/dist/src/web2.js +1 -1
- package/dist/src/webdriver-source.js +1 -1
- package/dist/src/window-state.js +1 -1
- package/package.json +3 -2
- package/server.json +2 -2
- package/android/ime-helper/dist/agent-device-android-ime-helper-0.21.5.apk.sha256 +0 -1
- package/android/snapshot-helper/dist/agent-device-android-snapshot-helper-0.21.5.apk.sha256 +0 -1
- package/dist/src/adb-host.js +0 -1
- package/dist/src/session-target-evidence.js +0 -1
- package/dist/src/vars.js +0 -2
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import{
|
|
2
|
-
`);o=t.pop()??``;for(let e of t)await T(r,w(`${e}\n`,a))};return{write:async e=>await u(async()=>await d(
|
|
3
|
-
`);return d<0?``:u.slice(d+1)}function C(e,t){return
|
|
1
|
+
import{D as e}from"./sdk-contracts.js";import{T as t,d as n,m as r,u as i}from"./sdk-device.js";import{r as a}from"./diagnostics.js";import{C as o}from"./owner-identity.js";import{i as s,r as c}from"./verified-file.js";import{c as l,h as u,u as d}from"./exec.js";import"./file.js";import"./diagnostics2.js";import"./command.js";import"./process.js";import{t as f}from"./platform-runtime-android-mechanics.js";import{t as p}from"./perf-runtime.js";import{a as ee,n as m}from"./durable-resource.js";import{n as h}from"./async-lifecycle.js";import{m as g}from"./src7.js";import{r as _}from"./device-inventory-context.js";import{t as te}from"./app-log-files.js";import{n as ne,r as re,t as ie}from"./platform-runtime-app-log-process.js";import{createTemporaryTextFile as ae,n as oe,r as se,t as ce}from"./platform-runtime-host.js";import{i as v,n as y,t as b}from"./platform-runtime-screen-recording-process-host.js";import x from"node:fs";import{setTimeout as le}from"node:timers/promises";async function ue(e,t){t=C(e,t),te(t);let n=c(t),r;try{r=x.createWriteStream(t,{fd:n,autoClose:!0})}catch(e){throw x.closeSync(n),e}let i;r.on(`error`,e=>{i??=e});let a=de(),o=``,s=Promise.resolve(),l,u=e=>{let t=s.then(e);return s=t.catch(()=>void 0),t},d=async e=>{let t=`${o}${e}`.split(`
|
|
2
|
+
`);o=t.pop()??``;for(let e of t)await T(r,w(`${e}\n`,a))};return{write:async e=>await u(async()=>await d(fe(e))),[Symbol.asyncDispose]:async()=>{l??=u(async()=>{if(o&&=(await T(r,w(o,a)),``),await pe(r),i)throw i}),await l}}}async function S(e,t,n){if(t=C(e,t),!Number.isInteger(n)||n<1||n>1048576)throw TypeError(`App-log tail size must be between 1 byte and 1 MiB`);let r=s(t);if(r===void 0)return``;let i=x.fstatSync(r).size,a=Math.min(i,n),o=i-a,c=+(o>0),l=Buffer.alloc(a+c);try{x.readSync(r,l,0,l.length,o-c)}finally{x.closeSync(r)}let u=l.subarray(c).toString(`utf8`);if(c===0||l[0]===10)return u;let d=u.indexOf(`
|
|
3
|
+
`);return d<0?``:u.slice(d+1)}function C(e,t){return re({sessionsDir:e,pathname:t,basename:`app.log`,label:`App-log output`})}function de(){return(process.env.AGENT_DEVICE_APP_LOG_REDACT_PATTERNS??``).split(`,`).map(e=>e.trim()).filter(Boolean).flatMap(e=>{try{return[new RegExp(e,`gi`)]}catch{return[]}})}function w(e,t){return t.reduce((e,t)=>e.replace(t,`[REDACTED]`),e)}function fe(e){return typeof e==`string`?e:Buffer.from(e).toString(`utf8`)}async function T(e,t){t&&await new Promise((n,r)=>{e.write(t,e=>e?r(e):n())})}async function pe(e){e.closed||await new Promise((t,n)=>{e.once(`error`,n),e.end(()=>{e.off(`error`,n),t()})})}function me(e){return Object.freeze({appLogs:Object.freeze({resolveSession:e.resolveSessionArtifacts,readRecent:async(t,n)=>{let{outputPath:r}=e.resolveSessionArtifacts(t);return he(r,n)},readProcessMarker:async t=>{let{pidPath:n}=e.resolveSessionArtifacts(t);return await e.processes.readMarker(n)}}),networkTransports:Object.freeze({resolve:e.resolveTransport})})}function he(e,t){if(!Number.isInteger(t)||t<1||t>2e4)throw TypeError(`Network app-log scan lines must be between 1 and 20000`);let n=s(e);if(n===void 0)return Object.freeze({path:e,exists:!1,text:``,skippedLines:0});try{let r=ge(x.readFileSync(n,`utf8`),t);return Object.freeze({path:e,exists:!0,...r})}finally{x.closeSync(n)}}function ge(e,t){let n=e.split(`
|
|
4
4
|
`),r=Math.max(0,n.length-t);return Object.freeze({text:n.slice(r).join(`
|
|
5
|
-
`),skippedLines:r})}function ge(e={}){let t=Object.freeze({resolve:async e=>{let{createAndroidScreenRecordingTransport:t}=await import(`./platform-runtime-screen-recording-android-host.js`);return await t(e)}}),n=Object.freeze({resolve:async e=>{let{resolveWebScreenRecordingTransport:t}=await import(`./platform-runtime-screen-recording-web-host.js`);return await t(e)}}),r=Object.freeze({prepare:async e=>{let{createScreenRecordingOutputHost:t}=await import(`./platform-runtime-screen-recording-output-host.js`);await t().prepare(e)},copy:async e=>{let{createScreenRecordingOutputHost:t}=await import(`./platform-runtime-screen-recording-output-host.js`);await t().copy(e)},remove:async e=>{let{createScreenRecordingOutputHost:t}=await import(`./platform-runtime-screen-recording-output-host.js`);return await t().remove(e)}}),i=Object.freeze({sniff:async e=>{let{createScreenRecordingFinalizer:t}=await import(`./platform-runtime-screen-recording-finalizer-host.js`);await t().sniff(e)},complete:async(e,t)=>{let{createScreenRecordingFinalizer:n}=await import(`./platform-runtime-screen-recording-finalizer-host.js`);return await n().complete(e,t)}}),a=e.ownedProcesses??Object.freeze({replace:()=>{},clear:()=>{}});return Object.freeze({apple:E(),android:t,harmony:D(),web:n,outputs:r,finalize:i,ownedProcesses:a})}function E(){let e=async()=>{let{createAppleScreenRecordingHost:e}=await import(`./platform-runtime-screen-recording-apple-host.js`);return e()};return Object.freeze({availability:async t=>(await e()).availability(t),runRunner:async(t,n,r)=>await(await e()).runRunner(t,n,r),startSimulator:async(t,n,r)=>await(await e()).startSimulator(t,n,r),inspectProcess:async t=>await(await e()).inspectProcess(t),terminateProcess:async t=>await(await e()).terminateProcess(t),inspectRunner:async(t,n,r)=>await(await e()).inspectRunner(t,n,r),retrieveRunnerRecording:async(t,n,r,i)=>await(await e()).retrieveRunnerRecording(t,n,r,i),captureClockAnchor:async(t,n,r)=>await(await e()).captureClockAnchor(t,n,r),isRunnerBundleId:async t=>await(await e()).isRunnerBundleId(t)})}function D(){let e=async()=>{let{createHarmonyScreenRecordingHost:e}=await import(`./platform-runtime-screen-recording-harmony-host.js`);return e()};return Object.freeze({start:async(t,n,r)=>await(await e()).start(t,n,r),stop:async(t,n)=>await(await e()).stop(t,n),findMedia:async(t,n,r)=>await(await e()).findMedia(t,n,r),stageMedia:async(t,n,r)=>await(await e()).stageMedia(t,n,r),stagedFileSize:async(t,n,r)=>await(await e()).stagedFileSize(t,n,r),pull:async(t,n,r)=>await(await e()).pull(t,n,r),remove:async(t,n,r)=>await(await e()).remove(t,n,r),removeMedia:async(t,n,r)=>await(await e()).removeMedia(t,n,r)})}function O(e={}){let t=e.ownedProcesses??Object.freeze({replace:()=>{},clear:()=>{}});return Object.freeze({hostCapture:Object.freeze({info:Object.freeze({source:`system-audio`,backend:`macos-screencapturekit`,sourceCount:1,notes:k}),start:async e=>{let{startMacOsAudioProbeProcess:t}=await import(`./macos-facade.js`),n=await t(e),r=await b(n.child.pid??void 0);return Object.freeze({...r===void 0?{}:{marker:r},wait:n.wait,terminate:async()=>{n.child.kill(`SIGTERM`),await n.wait.catch(()=>{})}})},inspectProcess:async e=>x(e),terminateProcess:async e=>await y([e])}),web:Object.freeze({resolve:async e=>{if(e.platform!==`web`)return;let{resolveWebProvider:t}=await import(`./src6.js`).then(e=>e.i),n=await t(),r=n.probeAudio?.bind(n);if(r)return Object.freeze({probe:async e=>await r({action:e.action,durationMs:e.durationMs,bucketMs:e.bucketMs})})}}),ownedProcesses:t})}function k(e){return[`Audio probe samples host system audio through ScreenCaptureKit for this ${t(e)?`iOS simulator`:e.platform===`android`?`Android emulator`:`macOS session`}; it is not app-instrumented audio.`,`Screen Recording permission is required for host system audio capture.`,`Other audible host apps can contribute to the measured buckets.`]}const A=f,j=async()=>await import(`./perf-facade.js`),M=Object.freeze({resourceKind:p,version:1,encode:e=>e,decode:Ce});async function N(t,n,r){if(r.kind!==`xctrace`)throw H(`Apple`,`xctrace`,r.kind);let i=r.template??(r.mode===`cpu-profile`?`Time Profiler`:`Animation Hitches`),a=await j(),o=await a.startAppleXctracePerfCapture({device:t,appBundleId:r.appId,mode:r.mode,template:i,outPath:r.outPath}),s=await b(o.child.pid??void 0);if(!s)throw await a.cleanupAppleXctracePerfCapture(o).catch(()=>{}),new e(`COMMAND_FAILED`,`Apple xctrace exposed no exact process identity`);return F(t,n,r,{family:`apple`,marker:s,capture:xe(o)},I(o),z(`started`,o))}async function P(e,t,n){let r=await A(),i;if(n.mode===`cpu-profile`){if(n.kind!==`simpleperf`)throw H(`Android`,`simpleperf`,n.kind);i=await r.startAndroidSimpleperfProfile(e,n.appId,n.outPath)}else{if(n.kind!==`perfetto`)throw H(`Android`,`perfetto`,n.kind);i=await r.startAndroidPerfettoTrace(e,n.appId,n.outPath)}return F(e,t,n,{family:`android`,capture:i},L(e,i),B(i))}function F(e,t,n,r,a,o){return Object.freeze({pendingHandle:new ne(a),envelope:te({resourceKind:p,sessionId:n.sessionId,device:i(e),owner:t,fence:n.fence,lifecycle:`open`,descriptor:ee(M,r)}),response:o})}function I(e){return R({initialOutPath:e.outPath,inspect:()=>z(`started`,e),finish:async t=>await j().then(async n=>z(`stopped`,await n.stopAppleXctracePerfCapture(e,t))),cleanup:async()=>await j().then(async t=>{await t.cleanupAppleXctracePerfCapture(e)})})}function L(e,t){return R({initialOutPath:t.outPath,inspect:()=>B(t),finish:async n=>{let r=await A();return B(t.kind===`simpleperf`?await r.stopAndroidSimpleperfProfile(e,t,n):await r.stopAndroidPerfettoTrace(e,t,n))},cleanup:async()=>{await(await A()).cleanupAndroidNativePerfSession(e,t)}})}function R(e){let t=e.initialOutPath,n,r,i=async()=>await e.cleanup().then(()=>({status:`cleaned`}),V);return Object.freeze({inspect:e.inspect,setOutputPath:e=>{t=e},finish:async()=>n??=e.finish(t).then(e=>({status:`completed`,result:e}),e=>{throw n=void 0,e}),forceCleanup:async()=>r??=i(),[Symbol.asyncDispose]:async()=>{Se(await(r??=i()))}})}async function _e(e){let t=m(e,M);if(t.status!==`decoded`||t.descriptor.family!==`apple`)return{status:`cleanup-pending`,reason:`manual-recovery-required`};let n=await x(t.descriptor.marker);if(n===`ownership-lost`)return{status:`cleanup-pending`,reason:`ownership-fence-lost`};if(n===`missing`)return{status:`already-missing`};let r=await y([t.descriptor.marker]);return r===`terminated`?{status:`cleaned`}:r===`already-missing`?{status:`already-missing`}:{status:`cleanup-pending`,reason:`ownership-fence-lost`}}async function ve(e){let t=m(e,M);if(t.status!==`decoded`)return t;if(t.descriptor.family!==`apple`)return{status:`unreattachable`,reason:`descriptor-invalid`};let n=await x(t.descriptor.marker);return n===`owned-alive`?{status:`unreattachable`,reason:`transport-not-reattachable`}:n===`ownership-lost`?{status:`unreattachable`,reason:`ownership-fence-lost`}:{status:`missing`}}async function ye(e){let t=m(e,M);return t.status===`decoded`?t.descriptor.family===`android`?{status:`unreattachable`,reason:`transport-not-reattachable`}:{status:`unreattachable`,reason:`descriptor-invalid`}:t}async function be(e,t){let n=m(t,M);if(n.status!==`decoded`||n.descriptor.family!==`android`)return{status:`cleanup-pending`,reason:`manual-recovery-required`};try{return await(await A()).cleanupAndroidNativePerfSession(e,n.descriptor.capture),{status:`cleaned`}}catch(e){return V(e)}}function xe(e){let{child:t,wait:n,...r}=e;return r}function z(e,t){return{perf:e,kind:t.kind,mode:t.mode,template:t.template,outPath:t.outPath,appBundleId:t.appBundleId,deviceId:t.deviceId,platform:t.platform,targetPids:t.targetPids,targetProcesses:t.targetProcesses,startedAt:t.startedAt,endedAt:t.endedAt}}function B(e){let t={action:e.action,platform:`android`,type:e.type,packageName:e.packageName,appPid:e.appPid,profilerPid:e.profilerPid,state:e.state,startedAt:new Date(e.startedAt).toISOString(),stoppedAt:typeof e.stoppedAt==`number`?new Date(e.stoppedAt).toISOString():void 0,outPath:e.outPath,sizeBytes:e.sizeBytes,remotePath:e.remotePath,method:e.method,message:e.message,...e.action===`stop`?{durationMs:e.durationMs,summary:e.summary}:{}};return e.kind===`simpleperf`?{...t,kind:`simpleperf`,mode:`cpu-profile`}:{...t,kind:`perfetto`,mode:`trace`}}function V(e){return{status:`cleanup-pending`,reason:`cleanup-unconfirmed`,message:e instanceof Error?e.message:String(e)}}function Se(t){if(t.status===`cleanup-pending`)throw new e(`COMMAND_FAILED`,t.message??`Perf capture cleanup could not be confirmed`,{reason:t.reason})}function H(t,n,r){return new e(`INVALID_ARGS`,`${t} native perf requires --kind ${n}, not ${r}`)}function Ce(e){return e.family===`android`&&we(e.capture)?{status:`decoded`,descriptor:{family:`android`,capture:e.capture}}:e.family===`apple`&&De(e.capture)&&je(e.marker)?{status:`decoded`,descriptor:{family:`apple`,capture:e.capture,marker:e.marker}}:{status:`invalid`,message:`Perf capture descriptor body is invalid`}}function we(e){return W(e)?Te(e.kind,e.type)&&U(e,[`packageName`,`appPid`,`profilerPid`,`remotePath`,`outPath`])&&typeof e.startedAt==`number`&&Ee(e.state)&&Oe(e,[`stoppedAt`,`sizeBytes`]):!1}function Te(e,t){return e===`simpleperf`&&t===`cpu-profile`||e===`perfetto`&&t===`trace`}function Ee(e){return e===`running`||e===`stopped`}function De(e){return W(e)&&e.kind===`xctrace`&&(e.mode===`cpu-profile`||e.mode===`trace`)&&U(e,[`template`,`outPath`,`appBundleId`,`deviceId`,`startedAt`])&&n(e.platform)&&ke(e.targetProcesses)&&Ae(e.targetPids)}function U(e,t){return t.every(t=>typeof e[t]==`string`)}function Oe(e,t){return t.every(t=>e[t]===void 0||typeof e[t]==`number`)}function ke(e){return Array.isArray(e)&&e.every(e=>typeof e==`string`)}function Ae(e){return Array.isArray(e)&&e.every(e=>typeof e==`number`)}function W(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function je(e){return W(e)&&typeof e.pid==`number`&&typeof e.startTime==`string`&&typeof e.command==`string`}const G=f,Me=f,Ne=f,K=async()=>await import(`./perf-facade.js`),q=async()=>await import(`./perf-facade.js`),Pe=async()=>await import(`./perf-facade.js`),Fe=async()=>await import(`./src4.js`).then(e=>e.b);function Ie(){let e=Object.freeze({sampleFrames:async(e,t)=>await(await K()).sampleAppleFramePerf(e,t),frameSampling:async e=>(await q()).buildAppleFrameSamplingMetadata(e),sampleMemory:async(e,t)=>await(await K()).sampleAppleMemoryPerf(e,t),memorySampling:async e=>(await q()).buildAppleMemorySamplingMetadata(e),memorySnapshotSupport:async e=>(await q()).buildAppleMemorySnapshotSupport(e),captureMemorySnapshot:async(e,t,n)=>await(await K()).captureAppleMemorySnapshot(e,t,n),start:async(e,t,n)=>await N(e,t,n),reattach:async(e,{envelope:t})=>await ve(t),cleanup:async(e,{envelope:t})=>await _e(t),writeProfileReport:async e=>await(await Pe()).writeAppleXctracePerfReport({tracePath:e.tracePath,outPath:e.outPath,template:e.template,appBundleId:e.appId})}),t=Object.freeze({sampleFrames:async(e,t)=>await(await Me()).sampleAndroidFramePerf(e,t),sampleMemory:async(e,t)=>await(await G()).sampleAndroidMemoryPerf(e,t),captureMemorySnapshot:async(e,t,n)=>await(await G()).captureAndroidHeapSnapshot(e,t,n),start:async(e,t,n)=>await P(e,t,n),reattach:async(e,{envelope:t})=>await ye(t),cleanup:async(e,{envelope:t})=>await be(e,t),writeProfileReport:async(e,t)=>await(await Ne()).writeAndroidSimpleperfReport(e,Le(t.profile,t.tracePath),t.outPath)}),n=Object.freeze({sampleMemory:async(e,t)=>await(await Fe()).sampleHarmonyMemoryPerf(e,t)});return Object.freeze({apple:e,android:t,harmony:n})}function Le(t,n){if(t?.kind!==`simpleperf`||t.type!==`cpu-profile`||t.mode!==`cpu-profile`)throw new e(`INVALID_ARGS`,`Stopped Simpleperf profile metadata is malformed.`);return{type:`cpu-profile`,kind:`simpleperf`,packageName:t.packageName,appPid:t.appPid,profilerPid:t.profilerPid,remotePath:t.remotePath,outPath:n,startedAt:t.startedAt?Date.parse(t.startedAt):Date.now(),state:`stopped`,...t.stoppedAt?{stoppedAt:Date.parse(t.stoppedAt)}:{},...t.sizeBytes===void 0?{}:{sizeBytes:t.sizeBytes}}}function Re(){return Object.freeze({ensureConnected:async(e,t)=>{t.throwIfAborted();try{let{resolveIosPhysicalDeviceControl:n}=await import(`./physical-device-facade.js`);await n(e).ensureReady(e,t),t.throwIfAborted()}catch(e){throw t.throwIfAborted(),e}}})}function ze(){return Object.freeze({keepHot:e=>{import(`./runner-operations-facade.js`).then(({prewarmAppleRunnerCache:t})=>t(e,{})).catch(()=>{})},wasRecentlyObservedBooted:async e=>{let{wasSimulatorRecentlyObservedBooted:t}=await import(`./simulator-facade.js`);return t(e)},markBooted:e=>{import(`./simulator-facade.js`).then(({markSimulatorBooted:t})=>t(e)).catch(()=>{})}})}function Be(){return Object.freeze({discover:async(e,t)=>{t.throwIfAborted();let n=await re(e);return t.throwIfAborted(),n},launch:(e,t)=>{let n=[`-avd`,e];return t&&n.push(`-no-window`,`-no-audio`),d(`emulator`,n)},terminate:async e=>{await o({pids:[e],termTimeoutMs:1500,killTimeoutMs:1500})}})}function Ve(e,t){let n,r,i=async()=>(n??=t.apple({appleTools:e.appleTools}),await n),a=async()=>(r??=t.android({commands:e.commands}),await r),o=Object.freeze({shutdownTarget:async(e,t)=>await(await i()).shutdownTarget(e,t)}),s=Object.freeze({shutdownTarget:async(e,t)=>await(await a()).shutdownTarget(e,t)}),c=Object.freeze({canShutdownTarget:async e=>await He(e,i,a),shutdownTarget:async e=>await Ue(e,i,a)});return Object.freeze({apple:o,android:s,close:c})}async function He(e,t,n){return e.platform===`apple`?(await t()).canShutdownTarget(e):e.platform===`android`&&(await n()).canShutdownTarget(e)}async function Ue(e,t,n){let r=new AbortController().signal;return e.platform===`apple`?await(await t()).shutdownTarget(e,r):e.platform===`android`?await(await n()).shutdownTarget(e,r):{success:!1,exitCode:-1,stdout:``,stderr:`Cannot shut down unsupported device ${e.platform}/${e.kind}`}}function We(){return Object.freeze({withInvalidatedAppResolutionCache:async(e,t)=>{let{invalidateIosAppResolutionCache:n}=await import(`./app-resolution-facade.js`);return await n(e,t)},prepareArtifact:async(e,t)=>{let{prepareIosInstallArtifact:n}=await import(`./install-artifact-facade.js`);return await n(e.source,t)},resolveAppBundleId:async(e,t)=>{let{resolveIosApp:n}=await import(`./app-resolution-facade.js`);return await n(e,t)}})}function Ge(){return Object.freeze({bundletoolJar:process.env.AGENT_DEVICE_BUNDLETOOL_JAR?.trim()||void 0,withInvalidatedAppResolutionCache:async(e,t)=>{let{withAndroidAppResolutionCacheInvalidated:n}=await f();return await n(e,t)},prepareArtifact:async(e,t)=>{let{prepareAndroidInstallArtifact:n}=await f();return await n(e.source,t)},resolveAppPackage:async(e,t)=>{let{resolveAndroidApp:n}=await f(),r=await n(e,t);if(r.type===`intent`){let{AppError:e}=await import(`./sdk-contracts.js`).then(e=>e.O);throw new e(`INVALID_ARGS`,`App uninstall requires a package name, not an intent`)}return r.value}})}function Ke(){return Object.freeze({probeClipboardShellSupport:async(e,t)=>{try{let{runAndroidAdb:n,isAndroidShellCommandUnsupported:r}=await f(),i=await n(e,[`shell`,`cmd`,`clipboard`,`get`,`text`],{allowFailure:!0,signal:t});return i.exitCode===0?`supported`:r(i.stdout,i.stderr)?`unsupported`:`probe-failed`}catch{return`probe-failed`}},runAdb:async(e,t,n,r)=>{let{runAndroidAdb:i}=await f(),a=await i(e,[...t],{allowFailure:n.allowFailure,timeoutMs:n.timeoutMs,signal:r});return{stdout:a.stdout,stderr:a.stderr,exitCode:a.exitCode}},installPackage:async(e,t,n,r)=>{let{resolveAndroidAdbProvider:i}=await f(),a=i(e),o=a.install?await a.install(t,{replace:n.replace,signal:r}):await a.exec([`install`,...n.replace?[`-r`]:[],t],{signal:r});return{stdout:o.stdout,stderr:o.stderr,exitCode:o.exitCode}},installBundle:async(e,t,n,r)=>{let{resolveAndroidAdbProvider:i}=await f(),a=i(e).installBundle;return a?(await a(t,{mode:n,signal:r}),!0):!1}})}let qe;const J=()=>qe??=import(`./runner-operations-facade.js`);let Je;const Y=()=>Je??=import(`./platform-runtime-runtime-hints.js`);let Ye;const Xe=()=>Ye??=import(`./platform-runtime-open-target.js`).then(e=>e.t);let Ze;const Qe=()=>Ze??=import(`./app-resolution-facade.js`);let $e;const X=()=>$e??=import(`./macos-facade.js`);let et;const tt=()=>et??=import(`./retry.js`).then(e=>e.t);function nt(){return Object.freeze({resolveOpenTarget:async(e,t)=>await rt(e,t),prewarmRunnerCache:async(e,t,n)=>{let{prewarmAppleRunnerCache:r}=await J();await r(e,Q(t,n))},prewarmRunnerSession:async(e,t,n,r,i)=>{let{prewarmIosRunnerSession:a}=await J();await a(e,{...Q(t,n),propagateError:r,...i})},notifyRunnerAppRelaunched:async(e,t,n)=>{let{notifyIosRunnerAppRelaunched:r}=await J();await r(e,Q(t,n))},stopRunnerSession:async e=>{let{stopIosRunnerSession:t}=await J();await t(e)},hasLiveRunnerSession:async(e,t)=>{let{hasLiveIosRunnerSession:n}=await J();return n(e,{requestId:t.requestId})},releaseSpeculativeRunner:async(e,t)=>{let{releaseSpeculativeIosRunnerSessionFor:n}=await J();return await n(e,{requestId:t.requestId})},releaseRunnerOnClose:async(e,t)=>{let{releaseIosRunnerOnClose:n}=await J();await n(e,t)},prepareRunner:async(e,t,n)=>{let{Deadline:r}=await tt(),{prepareIosRunner:i}=await J(),a=Date.now();return await i(e,{...Q(t.execution,n),cleanStaleBundles:!0,buildTimeoutMs:t.timeoutMs,healthTimeoutMs:t.timeoutMs,prepareDeadline:r.fromTimeoutMs(t.timeoutMs,a),startupTimeoutMs:t.timeoutMs})},applyRuntimeHints:async(e,t)=>{let{applyRuntimeHintValues:n}=await Y();await n({device:e,...t})},clearRuntimeHints:async(e,t)=>{let{clearRuntimeHintValues:n}=await Y();await n({device:e,...t})},dismissCloseAlerts:async(e,t)=>await at(e,t),detachRunnerSessionsForShutdown:async()=>{let{detachIosSimulatorRunnerSessionsForShutdown:e}=await J();await e()},finalizeRunnerSessionsForShutdown:async()=>{let{stopAllIosRunnerSessions:e}=await J();await e()}})}async function rt(t,n){if(n.foreground){let n=await Z(t);if(n)return n;throw new e(`AMBIGUOUS_MATCH`,`open --foreground requires exactly one running app on the selected iOS simulator.`,{reason:`foreground_app_ambiguous`,hint:`Pass an explicit app instead: agent-device open <app> --platform ios.`})}let r=await it(t,n.surface),{resolveSessionAppBundleIdForTarget:i}=await Xe();return{appBundleId:r.appBundleId??await i(t,n.target,n.currentAppBundleId),appName:r.appName??n.target}}async function Z(e){if(!t(e)||e.kind!==`simulator`)return;let{detectSoleRunningIosSimulatorApp:n}=await Qe(),r=await n(e);return r?{appBundleId:r.bundleId,appName:r.name}:void 0}async function it(e,t){if(!r(e)||t===`app`||t===`desktop`||t===`menubar`)return{};let{resolveFrontmostMacOsApp:n}=await X(),i=await n();return{appBundleId:i.bundleId,appName:i.appName}}function Q(e,t){return{requestId:e.requestId,logPath:e.logPath,traceLogPath:e.traceLogPath,verbose:e.verbose,iosXctestrunFile:e.iosXctestrunFile,iosXctestDerivedDataPath:e.iosXctestDerivedDataPath,iosXctestEnvDir:e.iosXctestEnvDir,runnerLeaseContext:e.runnerLeaseContext,signal:t}}async function at(e,t){if(!r(e))return;let{runMacOsAlertAction:n}=await X();await n(`dismiss`,t.surface===`frontmost-app`?{surface:`frontmost-app`}:t.appBundleId?{bundleId:t.appBundleId}:{})}let ot;const st=()=>ot??=import(`./platform-runtime-open-target.js`).then(e=>e.t);let ct;const $=()=>ct??=import(`./platform-runtime-runtime-hints.js`);function lt(){return Object.freeze({resolveOpenTarget:async(e,t)=>await ut(e,t),inferOpenedAppBundleId:async(e,t,n)=>{if(n)return n;try{let{inferAndroidPackageAfterOpen:r}=await f();return await r(e,t,n)}catch{return n}},resetFramePerfStats:async(e,t)=>{let{resetAndroidFramePerfStats:n}=await f();await n(e,t)},applyRuntimeHints:async(e,t)=>{let{applyRuntimeHintValues:n}=await $();await n({device:e,...t})},clearRuntimeHints:async(e,t)=>{let{clearRuntimeHintValues:n}=await $();await n({device:e,...t})},activateTestIme:async(t,n)=>{let{activateAndroidTestIme:r}=await f(),i=await r(t,n);if(i.outcome===`helper-unavailable`){a({level:`warn`,phase:`android_test_ime_activate_failed`,data:{device:t.id,error:i.reason,...i.hint===void 0?{}:{hint:i.hint}}});return}if(i.persistFailed&&!(!i.alreadyActive&&!i.activated))throw new e(`COMMAND_FAILED`,`Android test IME recovery records could not be persisted for ${t.name??t.id}.`,{reason:`android_test_ime_recovery_fence_failed`,deviceId:t.id})},restoreTestIme:async(t,n)=>{let{restoreAndroidTestIme:r}=await f();if((await r(t,{stateDir:n.stateDir})).reason===`set-failed`)throw new e(`COMMAND_FAILED`,`Android test IME could not be restored on ${t.name??t.id}.`,{reason:`android_test_ime_restore_incomplete`,deviceId:t.id})},recoverTestImeStartup:async e=>{let{listAndroidAdbSerialsQuick:t,restoreOrphanedAndroidTestImeOnDaemonStartup:n}=await f();await n({stateDir:e.stateDir,listSerials:t})},hasTestImeRecoveryEvidence:async e=>{let{readAndroidTestImeRecoveryMarkers:t}=await f();return(await t(e)).length>0}})}async function ut(e,t){let{resolveSessionAppBundleIdForTarget:n}=await st();return{appBundleId:await n(e,t.target,t.currentAppBundleId),appName:t.target}}function dt(){return Object.freeze({resolve:async(e,t)=>{let{getLocalInteractor:n}=await import(`./interactors.js`).then(e=>e.n);return await n(e,t)}})}function ft(e){return Object.freeze({recoverStartupResources:async t=>{await e.android.hasTestImeRecoveryEvidence(t.stateDir)&&await e.android.recoverTestImeStartup(t)},detachForDaemonShutdown:async()=>await e.apple.detachRunnerSessionsForShutdown(),finalizeDaemonShutdown:async()=>await e.apple.finalizeRunnerSessionsForShutdown()})}function pt(e){return Object.freeze({captureSurface:async(t,n,r)=>t.platform===`linux`?await e.linux(n,r):(mt(t),await e.macos(n,r)),presentIosAcquisition:async(e,t)=>{let{presentIosSnapshotAcquisition:n}=await import(`./ios-snapshot-runtime.js`);return await n(e,t)}})}function mt(e){if(e.platform!==`apple`||e.appleOs!==`macos`)throw TypeError(`Apple surface capture requires a non-app macOS surface`)}async function ht(e,t){let{captureMacOsSurfaceSnapshot:n}=await import(`./macos-facade.js`);return await n(e??{},t)}function gt(e){let t=h(e.sessionsDir),n=Object.freeze({mode:`local`,start:t.start}),r=_(),i=Object.freeze({which:async e=>await u(e)?e:void 0,run:async(e,t)=>{let n=await l(e.executable,[...e.args],{allowFailure:e.allowFailure,cwd:e.cwd,env:e.env?{...process.env,...e.env}:void 0,signal:t,timeoutMs:e.timeoutMs});return{stdout:n.stdout,stderr:n.stderr,exitCode:n.exitCode}}}),a=pe({resolveSessionArtifacts:e.resolveSessionArtifacts,processes:t,resolveTransport:async e=>{if(e.platform!==`web`)return Object.freeze({mode:`local`});let{resolveWebNetworkTransport:t}=await import(`./platform-runtime-network-web-transport.js`);return await t(e)}}),o=nt(),s=lt();return Object.freeze({commands:i,appleTools:r,toolchains:v(),artifacts:Object.freeze({resolveSession:e.resolveSessionArtifacts}),outputs:Object.freeze({openAppend:async t=>await ce(e.sessionsDir,t),readTail:async(t,n)=>await le(e.sessionsDir,t,n)}),processes:t,processTransports:Object.freeze({resolve:async t=>{if(t.platform!==`android`)return n;let{resolveAndroidAppLogProcessTransport:r}=await import(`./platform-runtime-app-log-android-transport.js`);return r(e.sessionsDir,t,n)}}),...a,appleDeployment:We(),androidDeployment:Ge(),androidTools:Ke(),temporaryFiles:Object.freeze({create:async e=>await g(e)}),deviceReadiness:Object.freeze({applePhysical:Re(),appleAutomation:ze(),androidEmulator:Be()}),deviceShutdown:Ve({appleTools:r,commands:i},e.shutdownLoaders),screenRecording:ge({ownedProcesses:e.ownedProcesses}),audioProbe:O({ownedProcesses:e.ownedProcesses}),perf:Ie(),snapshot:e.snapshot,localInteractors:dt(),appleApplications:o,androidApplications:s,applicationResources:ft({android:s,apple:o}),clock:Object.freeze({now:()=>Date.now(),sleep:async(e,t)=>{await se(e,void 0,t?{signal:t}:void 0)}})})}export{gt as createPlatformRuntimeHost,pt as createSnapshotRuntimeHost,ht as loadMacOsSurfaceSnapshot,ae as recoverLegacyAppLogMarkersAfterDaemonLock};
|
|
5
|
+
`),skippedLines:r})}function E(e={}){let t=Object.freeze({resolve:async e=>{let{createAndroidScreenRecordingTransport:t}=await import(`./platform-runtime-screen-recording-android-host.js`);return await t(e)}}),n=Object.freeze({resolve:async e=>{let{resolveWebScreenRecordingTransport:t}=await import(`./platform-runtime-screen-recording-web-host.js`);return await t(e)}}),r=Object.freeze({prepare:async e=>{let{createScreenRecordingOutputHost:t}=await import(`./platform-runtime-screen-recording-output-host.js`);await t().prepare(e)},copy:async e=>{let{createScreenRecordingOutputHost:t}=await import(`./platform-runtime-screen-recording-output-host.js`);await t().copy(e)},remove:async e=>{let{createScreenRecordingOutputHost:t}=await import(`./platform-runtime-screen-recording-output-host.js`);return await t().remove(e)}}),i=Object.freeze({sniff:async e=>{let{createScreenRecordingFinalizer:t}=await import(`./platform-runtime-screen-recording-finalizer-host.js`);await t().sniff(e)},complete:async(e,t)=>{let{createScreenRecordingFinalizer:n}=await import(`./platform-runtime-screen-recording-finalizer-host.js`);return await n().complete(e,t)}}),a=e.ownedProcesses??Object.freeze({replace:()=>{},clear:()=>{}});return Object.freeze({apple:D(),android:t,harmony:O(),web:n,outputs:r,finalize:i,ownedProcesses:a})}function D(){let e=async()=>{let{createAppleScreenRecordingHost:e}=await import(`./platform-runtime-screen-recording-apple-host.js`);return e()};return Object.freeze({availability:async t=>(await e()).availability(t),runRunner:async(t,n,r)=>await(await e()).runRunner(t,n,r),startSimulator:async(t,n,r)=>await(await e()).startSimulator(t,n,r),inspectProcess:async t=>await(await e()).inspectProcess(t),terminateProcess:async t=>await(await e()).terminateProcess(t),inspectRunner:async(t,n,r)=>await(await e()).inspectRunner(t,n,r),retrieveRunnerRecording:async(t,n,r,i)=>await(await e()).retrieveRunnerRecording(t,n,r,i),captureClockAnchor:async(t,n,r)=>await(await e()).captureClockAnchor(t,n,r),isRunnerBundleId:async t=>await(await e()).isRunnerBundleId(t)})}function O(){let e=async()=>{let{createHarmonyScreenRecordingHost:e}=await import(`./platform-runtime-screen-recording-harmony-host.js`);return e()};return Object.freeze({start:async(t,n,r)=>await(await e()).start(t,n,r),stop:async(t,n)=>await(await e()).stop(t,n),findMedia:async(t,n,r)=>await(await e()).findMedia(t,n,r),stageMedia:async(t,n,r)=>await(await e()).stageMedia(t,n,r),stagedFileSize:async(t,n,r)=>await(await e()).stagedFileSize(t,n,r),pull:async(t,n,r)=>await(await e()).pull(t,n,r),remove:async(t,n,r)=>await(await e()).remove(t,n,r),removeMedia:async(t,n,r)=>await(await e()).removeMedia(t,n,r)})}function k(e={}){let t=e.ownedProcesses??Object.freeze({replace:()=>{},clear:()=>{}});return Object.freeze({hostCapture:Object.freeze({info:Object.freeze({source:`system-audio`,backend:`macos-screencapturekit`,sourceCount:1,notes:A}),start:async e=>{let{startMacOsAudioProbeProcess:t}=await import(`./macos-facade.js`),n=await t(e),r=await y(n.child.pid??void 0);return Object.freeze({...r===void 0?{}:{marker:r},wait:n.wait,terminate:async()=>{n.child.kill(`SIGTERM`),await n.wait.catch(()=>{})}})},inspectProcess:async e=>b(e),terminateProcess:async e=>await v([e])}),web:Object.freeze({resolve:async e=>{if(e.platform!==`web`)return;let{resolveWebProvider:t}=await import(`./src6.js`).then(e=>e.i),n=await t(),r=n.probeAudio?.bind(n);if(r)return Object.freeze({probe:async e=>await r({action:e.action,durationMs:e.durationMs,bucketMs:e.bucketMs})})}}),ownedProcesses:t})}function A(e){return[`Audio probe samples host system audio through ScreenCaptureKit for this ${i(e)?`iOS simulator`:e.platform===`android`?`Android emulator`:`macOS session`}; it is not app-instrumented audio.`,`Screen Recording permission is required for host system audio capture.`,`Other audible host apps can contribute to the measured buckets.`]}const j=f,M=async()=>await import(`./perf-facade.js`),N=Object.freeze({resourceKind:p,version:1,encode:e=>e,decode:we});async function P(t,n,r){if(r.kind!==`xctrace`)throw H(`Apple`,`xctrace`,r.kind);let i=r.template??(r.mode===`cpu-profile`?`Time Profiler`:`Animation Hitches`),a=await M(),o=await a.startAppleXctracePerfCapture({device:t,appBundleId:r.appId,mode:r.mode,template:i,outPath:r.outPath}),s=await y(o.child.pid??void 0);if(!s)throw await a.cleanupAppleXctracePerfCapture(o).catch(()=>{}),new e(`COMMAND_FAILED`,`Apple xctrace exposed no exact process identity`);return I(t,n,r,{family:`apple`,marker:s,capture:Se(o)},L(o),z(`started`,o))}async function F(e,t,n){let r=await j(),i;if(n.mode===`cpu-profile`){if(n.kind!==`simpleperf`)throw H(`Android`,`simpleperf`,n.kind);i=await r.startAndroidSimpleperfProfile(e,n.appId,n.outPath)}else{if(n.kind!==`perfetto`)throw H(`Android`,`perfetto`,n.kind);i=await r.startAndroidPerfettoTrace(e,n.appId,n.outPath)}return I(e,t,n,{family:`android`,capture:i},_e(e,i),B(i))}function I(e,n,r,i,a,o){return Object.freeze({pendingHandle:new h(a),envelope:m({resourceKind:p,sessionId:r.sessionId,device:t(e),owner:n,fence:r.fence,lifecycle:`open`,descriptor:ee(N,i)}),response:o})}function L(e){return R({initialOutPath:e.outPath,inspect:()=>z(`started`,e),finish:async t=>await M().then(async n=>z(`stopped`,await n.stopAppleXctracePerfCapture(e,t))),cleanup:async()=>await M().then(async t=>{await t.cleanupAppleXctracePerfCapture(e)})})}function _e(e,t){return R({initialOutPath:t.outPath,inspect:()=>B(t),finish:async n=>{let r=await j();return B(t.kind===`simpleperf`?await r.stopAndroidSimpleperfProfile(e,t,n):await r.stopAndroidPerfettoTrace(e,t,n))},cleanup:async()=>{await(await j()).cleanupAndroidNativePerfSession(e,t)}})}function R(e){let t=e.initialOutPath,n,r,i=async()=>await e.cleanup().then(()=>({status:`cleaned`}),V);return Object.freeze({inspect:e.inspect,setOutputPath:e=>{t=e},finish:async()=>n??=e.finish(t).then(e=>({status:`completed`,result:e}),e=>{throw n=void 0,e}),forceCleanup:async()=>r??=i(),[Symbol.asyncDispose]:async()=>{Ce(await(r??=i()))}})}async function ve(e){let t=g(e,N);if(t.status!==`decoded`||t.descriptor.family!==`apple`)return{status:`cleanup-pending`,reason:`manual-recovery-required`};let n=await b(t.descriptor.marker);if(n===`ownership-lost`)return{status:`cleanup-pending`,reason:`ownership-fence-lost`};if(n===`missing`)return{status:`already-missing`};let r=await v([t.descriptor.marker]);return r===`terminated`?{status:`cleaned`}:r===`already-missing`?{status:`already-missing`}:{status:`cleanup-pending`,reason:`ownership-fence-lost`}}async function ye(e){let t=g(e,N);if(t.status!==`decoded`)return t;if(t.descriptor.family!==`apple`)return{status:`unreattachable`,reason:`descriptor-invalid`};let n=await b(t.descriptor.marker);return n===`owned-alive`?{status:`unreattachable`,reason:`transport-not-reattachable`}:n===`ownership-lost`?{status:`unreattachable`,reason:`ownership-fence-lost`}:{status:`missing`}}async function be(e){let t=g(e,N);return t.status===`decoded`?t.descriptor.family===`android`?{status:`unreattachable`,reason:`transport-not-reattachable`}:{status:`unreattachable`,reason:`descriptor-invalid`}:t}async function xe(e,t){let n=g(t,N);if(n.status!==`decoded`||n.descriptor.family!==`android`)return{status:`cleanup-pending`,reason:`manual-recovery-required`};try{return await(await j()).cleanupAndroidNativePerfSession(e,n.descriptor.capture),{status:`cleaned`}}catch(e){return V(e)}}function Se(e){let{child:t,wait:n,...r}=e;return r}function z(e,t){return{perf:e,kind:t.kind,mode:t.mode,template:t.template,outPath:t.outPath,appBundleId:t.appBundleId,deviceId:t.deviceId,platform:t.platform,targetPids:t.targetPids,targetProcesses:t.targetProcesses,startedAt:t.startedAt,endedAt:t.endedAt}}function B(e){let t={action:e.action,platform:`android`,type:e.type,packageName:e.packageName,appPid:e.appPid,profilerPid:e.profilerPid,state:e.state,startedAt:new Date(e.startedAt).toISOString(),stoppedAt:typeof e.stoppedAt==`number`?new Date(e.stoppedAt).toISOString():void 0,outPath:e.outPath,sizeBytes:e.sizeBytes,remotePath:e.remotePath,method:e.method,message:e.message,...e.action===`stop`?{durationMs:e.durationMs,summary:e.summary}:{}};return e.kind===`simpleperf`?{...t,kind:`simpleperf`,mode:`cpu-profile`}:{...t,kind:`perfetto`,mode:`trace`}}function V(e){return{status:`cleanup-pending`,reason:`cleanup-unconfirmed`,message:e instanceof Error?e.message:String(e)}}function Ce(t){if(t.status===`cleanup-pending`)throw new e(`COMMAND_FAILED`,t.message??`Perf capture cleanup could not be confirmed`,{reason:t.reason})}function H(t,n,r){return new e(`INVALID_ARGS`,`${t} native perf requires --kind ${n}, not ${r}`)}function we(e){return e.family===`android`&&Te(e.capture)?{status:`decoded`,descriptor:{family:`android`,capture:e.capture}}:e.family===`apple`&&Oe(e.capture)&&Me(e.marker)?{status:`decoded`,descriptor:{family:`apple`,capture:e.capture,marker:e.marker}}:{status:`invalid`,message:`Perf capture descriptor body is invalid`}}function Te(e){return W(e)?Ee(e.kind,e.type)&&U(e,[`packageName`,`appPid`,`profilerPid`,`remotePath`,`outPath`])&&typeof e.startedAt==`number`&&De(e.state)&&ke(e,[`stoppedAt`,`sizeBytes`]):!1}function Ee(e,t){return e===`simpleperf`&&t===`cpu-profile`||e===`perfetto`&&t===`trace`}function De(e){return e===`running`||e===`stopped`}function Oe(e){return W(e)&&e.kind===`xctrace`&&(e.mode===`cpu-profile`||e.mode===`trace`)&&U(e,[`template`,`outPath`,`appBundleId`,`deviceId`,`startedAt`])&&r(e.platform)&&Ae(e.targetProcesses)&&je(e.targetPids)}function U(e,t){return t.every(t=>typeof e[t]==`string`)}function ke(e,t){return t.every(t=>e[t]===void 0||typeof e[t]==`number`)}function Ae(e){return Array.isArray(e)&&e.every(e=>typeof e==`string`)}function je(e){return Array.isArray(e)&&e.every(e=>typeof e==`number`)}function W(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Me(e){return W(e)&&typeof e.pid==`number`&&typeof e.startTime==`string`&&typeof e.command==`string`}const G=f,Ne=f,K=f,q=async()=>await import(`./perf-facade.js`),J=async()=>await import(`./perf-facade.js`),Pe=async()=>await import(`./perf-facade.js`),Fe=async()=>await import(`./src4.js`).then(e=>e.b);function Ie(){let e=Object.freeze({sampleFrames:async(e,t)=>await(await q()).sampleAppleFramePerf(e,t),frameSampling:async e=>(await J()).buildAppleFrameSamplingMetadata(e),sampleMemory:async(e,t)=>await(await q()).sampleAppleMemoryPerf(e,t),memorySampling:async e=>(await J()).buildAppleMemorySamplingMetadata(e),memorySnapshotSupport:async e=>(await J()).buildAppleMemorySnapshotSupport(e),captureMemorySnapshot:async(e,t,n)=>await(await q()).captureAppleMemorySnapshot(e,t,n),start:async(e,t,n)=>await P(e,t,n),reattach:async(e,{envelope:t})=>await ye(t),cleanup:async(e,{envelope:t})=>await ve(t),writeProfileReport:async e=>await(await Pe()).writeAppleXctracePerfReport({tracePath:e.tracePath,outPath:e.outPath,template:e.template,appBundleId:e.appId})}),t=Object.freeze({sampleFrames:async(e,t)=>await(await Ne()).sampleAndroidFramePerf(e,t),sampleMemory:async(e,t)=>await(await G()).sampleAndroidMemoryPerf(e,t),captureMemorySnapshot:async(e,t,n)=>await(await G()).captureAndroidHeapSnapshot(e,t,n),start:async(e,t,n)=>await F(e,t,n),reattach:async(e,{envelope:t})=>await be(t),cleanup:async(e,{envelope:t})=>await xe(e,t),writeProfileReport:async(e,t)=>await(await K()).writeAndroidSimpleperfReport(e,Le(t.profile,t.tracePath),t.outPath)}),n=Object.freeze({sampleMemory:async(e,t)=>await(await Fe()).sampleHarmonyMemoryPerf(e,t)});return Object.freeze({apple:e,android:t,harmony:n})}function Le(t,n){if(t?.kind!==`simpleperf`||t.type!==`cpu-profile`||t.mode!==`cpu-profile`)throw new e(`INVALID_ARGS`,`Stopped Simpleperf profile metadata is malformed.`);return{type:`cpu-profile`,kind:`simpleperf`,packageName:t.packageName,appPid:t.appPid,profilerPid:t.profilerPid,remotePath:t.remotePath,outPath:n,startedAt:t.startedAt?Date.parse(t.startedAt):Date.now(),state:`stopped`,...t.stoppedAt?{stoppedAt:Date.parse(t.stoppedAt)}:{},...t.sizeBytes===void 0?{}:{sizeBytes:t.sizeBytes}}}function Re(){return Object.freeze({ensureConnected:async(e,t)=>{t.throwIfAborted();try{let{resolveIosPhysicalDeviceControl:n}=await import(`./physical-device-facade.js`);await n(e).ensureReady(e,t),t.throwIfAborted()}catch(e){throw t.throwIfAborted(),e}}})}function ze(){return Object.freeze({keepHot:e=>{import(`./runner-operations-facade.js`).then(({prewarmAppleRunnerCache:t})=>t(e,{})).catch(()=>{})},wasRecentlyObservedBooted:async e=>{let{wasSimulatorRecentlyObservedBooted:t}=await import(`./simulator-facade.js`);return t(e)},markBooted:e=>{import(`./simulator-facade.js`).then(({markSimulatorBooted:t})=>t(e)).catch(()=>{})}})}function Be(){return Object.freeze({discover:async(e,t)=>{t.throwIfAborted();let n=await _(e);return t.throwIfAborted(),n},launch:(e,t)=>{let n=[`-avd`,e];return t&&n.push(`-no-window`,`-no-audio`),d(`emulator`,n)},terminate:async e=>{await o({pids:[e],termTimeoutMs:1500,killTimeoutMs:1500})}})}function Ve(e,t){let n,r,i=async()=>(n??=t.apple({appleTools:e.appleTools}),await n),a=async()=>(r??=t.android({commands:e.commands}),await r),o=Object.freeze({shutdownTarget:async(e,t)=>await(await i()).shutdownTarget(e,t)}),s=Object.freeze({shutdownTarget:async(e,t)=>await(await a()).shutdownTarget(e,t)}),c=Object.freeze({canShutdownTarget:async e=>await He(e,i,a),shutdownTarget:async e=>await Ue(e,i,a)});return Object.freeze({apple:o,android:s,close:c})}async function He(e,t,n){return e.platform===`apple`?(await t()).canShutdownTarget(e):e.platform===`android`&&(await n()).canShutdownTarget(e)}async function Ue(e,t,n){let r=new AbortController().signal;return e.platform===`apple`?await(await t()).shutdownTarget(e,r):e.platform===`android`?await(await n()).shutdownTarget(e,r):{success:!1,exitCode:-1,stdout:``,stderr:`Cannot shut down unsupported device ${e.platform}/${e.kind}`}}function We(){return Object.freeze({withInvalidatedAppResolutionCache:async(e,t)=>{let{invalidateIosAppResolutionCache:n}=await import(`./app-resolution-facade.js`);return await n(e,t)},prepareArtifact:async(e,t)=>{let{prepareIosInstallArtifact:n}=await import(`./install-artifact-facade.js`);return await n(e.source,t)},resolveAppBundleId:async(e,t)=>{let{resolveIosApp:n}=await import(`./app-resolution-facade.js`);return await n(e,t)}})}function Ge(){return Object.freeze({bundletoolJar:process.env.AGENT_DEVICE_BUNDLETOOL_JAR?.trim()||void 0,withInvalidatedAppResolutionCache:async(e,t)=>{let{withAndroidAppResolutionCacheInvalidated:n}=await f();return await n(e,t)},prepareArtifact:async(e,t)=>{let{prepareAndroidInstallArtifact:n}=await f();return await n(e.source,t)},resolveAppPackage:async(e,t)=>{let{resolveAndroidApp:n}=await f(),r=await n(e,t);if(r.type===`intent`){let{AppError:e}=await import(`./sdk-contracts.js`).then(e=>e.M);throw new e(`INVALID_ARGS`,`App uninstall requires a package name, not an intent`)}return r.value}})}function Ke(){return Object.freeze({probeClipboardShellSupport:async(e,t)=>{try{let{runAndroidShell:n,androidClipboardShellSupportForResult:r}=await f();return await r(await n(e,[`cmd`,`clipboard`,`get`,`text`],{allowFailure:!0,signal:t}))}catch{return`probe-failed`}},runAdb:async(e,t,n,r)=>{let{runAndroidAdb:i}=await f(),a=await i(e,t,{allowFailure:n.allowFailure,timeoutMs:n.timeoutMs,signal:r});return{stdout:a.stdout,stderr:a.stderr,exitCode:a.exitCode}},installPackage:async(e,t,n,r)=>{let{resolveAndroidAdbProvider:i}=await f(),a=i(e),o=a.install?await a.install(t,{replace:n.replace,signal:r}):await a.exec([`install`,...n.replace?[`-r`]:[],t],{signal:r});return{stdout:o.stdout,stderr:o.stderr,exitCode:o.exitCode}},installBundle:async(e,t,n,r)=>{let{resolveAndroidAdbProvider:i}=await f(),a=i(e).installBundle;return a?(await a(t,{mode:n,signal:r}),!0):!1}})}let qe;const Y=()=>qe??=import(`./runner-operations-facade.js`);let Je;const X=()=>Je??=import(`./platform-runtime-runtime-hints.js`);let Ye;const Xe=()=>Ye??=import(`./platform-runtime-open-target.js`).then(e=>e.t);let Ze;const Qe=()=>Ze??=import(`./app-resolution-facade.js`);let $e;const Z=()=>$e??=import(`./macos-facade.js`);let et;const tt=()=>et??=import(`./retry.js`).then(e=>e.t);function nt(){return Object.freeze({resolveOpenTarget:async(e,t)=>await rt(e,t),prewarmRunnerCache:async(e,t,n)=>{let{prewarmAppleRunnerCache:r}=await Y();await r(e,Q(t,n))},prewarmRunnerSession:async(e,t,n,r,i)=>{let{prewarmIosRunnerSession:a}=await Y();await a(e,{...Q(t,n),propagateError:r,...i})},notifyRunnerAppRelaunched:async(e,t,n)=>{let{notifyIosRunnerAppRelaunched:r}=await Y();await r(e,Q(t,n))},stopRunnerSession:async e=>{let{stopIosRunnerSession:t}=await Y();await t(e)},hasLiveRunnerSession:async(e,t)=>{let{hasLiveIosRunnerSession:n}=await Y();return n(e,{requestId:t.requestId})},releaseSpeculativeRunner:async(e,t)=>{let{releaseSpeculativeIosRunnerSessionFor:n}=await Y();return await n(e,{requestId:t.requestId})},releaseRunnerOnClose:async(e,t)=>{let{releaseIosRunnerOnClose:n}=await Y();await n(e,t)},prepareRunner:async(e,t,n)=>{let{Deadline:r}=await tt(),{prepareIosRunner:i}=await Y(),a=Date.now();return await i(e,{...Q(t.execution,n),cleanStaleBundles:!0,buildTimeoutMs:t.timeoutMs,healthTimeoutMs:t.timeoutMs,prepareDeadline:r.fromTimeoutMs(t.timeoutMs,a),startupTimeoutMs:t.timeoutMs})},applyRuntimeHints:async(e,t)=>{let{applyRuntimeHintValues:n}=await X();await n({device:e,...t})},clearRuntimeHints:async(e,t)=>{let{clearRuntimeHintValues:n}=await X();await n({device:e,...t})},dismissCloseAlerts:async(e,t)=>await ot(e,t),detachRunnerSessionsForShutdown:async()=>{let{detachIosSimulatorRunnerSessionsForShutdown:e}=await Y();await e()},finalizeRunnerSessionsForShutdown:async()=>{let{stopAllIosRunnerSessions:e}=await Y();await e()}})}async function rt(t,n){if(n.foreground){let n=await it(t);if(n)return n;throw new e(`AMBIGUOUS_MATCH`,`open --foreground requires exactly one running app on the selected iOS simulator.`,{reason:`foreground_app_ambiguous`,hint:`Pass an explicit app instead: agent-device open <app> --platform ios.`})}let r=await at(t,n.surface),{resolveSessionAppBundleIdForTarget:i}=await Xe();return{appBundleId:r.appBundleId??await i(t,n.target,n.currentAppBundleId),appName:r.appName??n.target}}async function it(e){if(!i(e)||e.kind!==`simulator`)return;let{detectSoleRunningIosSimulatorApp:t}=await Qe(),n=await t(e);return n?{appBundleId:n.bundleId,appName:n.name}:void 0}async function at(e,t){if(!n(e)||t===`app`||t===`desktop`||t===`menubar`)return{};let{resolveFrontmostMacOsApp:r}=await Z(),i=await r();return{appBundleId:i.bundleId,appName:i.appName}}function Q(e,t){return{requestId:e.requestId,logPath:e.logPath,traceLogPath:e.traceLogPath,verbose:e.verbose,iosXctestrunFile:e.iosXctestrunFile,iosXctestDerivedDataPath:e.iosXctestDerivedDataPath,iosXctestEnvDir:e.iosXctestEnvDir,runnerLeaseContext:e.runnerLeaseContext,signal:t}}async function ot(e,t){if(!n(e))return;let{runMacOsAlertAction:r}=await Z();await r(`dismiss`,t.surface===`frontmost-app`?{surface:`frontmost-app`}:t.appBundleId?{bundleId:t.appBundleId}:{})}let st;const ct=()=>st??=import(`./platform-runtime-open-target.js`).then(e=>e.t);let lt;const $=()=>lt??=import(`./platform-runtime-runtime-hints.js`);function ut(){return Object.freeze({resolveOpenTarget:async(e,t)=>await dt(e,t),inferOpenedAppBundleId:async(e,t,n)=>{if(n)return n;try{let{inferAndroidPackageAfterOpen:r}=await f();return await r(e,t,n)}catch{return n}},resetFramePerfStats:async(e,t)=>{let{resetAndroidFramePerfStats:n}=await f();await n(e,t)},applyRuntimeHints:async(e,t)=>{let{applyRuntimeHintValues:n}=await $();await n({device:e,...t})},clearRuntimeHints:async(e,t)=>{let{clearRuntimeHintValues:n}=await $();await n({device:e,...t})},activateTestIme:async(t,n)=>{let{activateAndroidTestIme:r}=await f(),i=await r(t,n);if(i.outcome===`helper-unavailable`){a({level:`warn`,phase:`android_test_ime_activate_failed`,data:{device:t.id,error:i.reason,...i.hint===void 0?{}:{hint:i.hint}}});return}if(i.persistFailed&&!(!i.alreadyActive&&!i.activated))throw new e(`COMMAND_FAILED`,`Android test IME recovery records could not be persisted for ${t.name??t.id}.`,{reason:`android_test_ime_recovery_fence_failed`,deviceId:t.id})},restoreTestIme:async(t,n)=>{let{restoreAndroidTestIme:r}=await f();if((await r(t,{stateDir:n.stateDir})).reason===`set-failed`)throw new e(`COMMAND_FAILED`,`Android test IME could not be restored on ${t.name??t.id}.`,{reason:`android_test_ime_restore_incomplete`,deviceId:t.id})},recoverTestImeStartup:async e=>{let{listAndroidAdbSerialsQuick:t,restoreOrphanedAndroidTestImeOnDaemonStartup:n}=await f();await n({stateDir:e.stateDir,listSerials:t})},hasTestImeRecoveryEvidence:async e=>{let{readAndroidTestImeRecoveryMarkers:t}=await f();return(await t(e)).length>0}})}async function dt(e,t){let{resolveSessionAppBundleIdForTarget:n}=await ct();return{appBundleId:await n(e,t.target,t.currentAppBundleId),appName:t.target}}function ft(){return Object.freeze({resolve:async(e,t)=>{let{getLocalInteractor:n}=await import(`./interactors.js`).then(e=>e.n);return await n(e,t)}})}function pt(e){return Object.freeze({recoverStartupResources:async t=>{await e.android.hasTestImeRecoveryEvidence(t.stateDir)&&await e.android.recoverTestImeStartup(t)},detachForDaemonShutdown:async()=>await e.apple.detachRunnerSessionsForShutdown(),finalizeDaemonShutdown:async()=>await e.apple.finalizeRunnerSessionsForShutdown()})}function mt(e){return Object.freeze({captureSurface:async(t,n,r)=>t.platform===`linux`?await e.linux(n,r):(ht(t),await e.macos(n,r)),presentIosAcquisition:async(e,t)=>{let{presentIosSnapshotAcquisition:n}=await import(`./ios-snapshot-runtime.js`);return await n(e,t)}})}function ht(e){if(e.platform!==`apple`||e.appleOs!==`macos`)throw TypeError(`Apple surface capture requires a non-app macOS surface`)}async function gt(e,t){let{captureMacOsSurfaceSnapshot:n}=await import(`./macos-facade.js`);return await n(e??{},t)}function _t(e){let t=ie(e.sessionsDir),n=Object.freeze({mode:`local`,start:t.start}),r=se(),i=Object.freeze({which:async e=>await u(e)?e:void 0,run:async(e,t)=>{let n=await l(e.executable,ce(e),{allowFailure:e.allowFailure,cwd:e.cwd,env:e.env?{...process.env,...e.env}:void 0,signal:t,timeoutMs:e.timeoutMs});return{stdout:n.stdout,stderr:n.stderr,exitCode:n.exitCode}}}),a=me({resolveSessionArtifacts:e.resolveSessionArtifacts,processes:t,resolveTransport:async e=>{if(e.platform!==`web`)return Object.freeze({mode:`local`});let{resolveWebNetworkTransport:t}=await import(`./platform-runtime-network-web-transport.js`);return await t(e)}}),o=nt(),s=ut();return Object.freeze({commands:i,appleTools:r,toolchains:oe(),artifacts:Object.freeze({resolveSession:e.resolveSessionArtifacts}),outputs:Object.freeze({openAppend:async t=>await ue(e.sessionsDir,t),readTail:async(t,n)=>await S(e.sessionsDir,t,n)}),processes:t,processTransports:Object.freeze({resolve:async t=>{if(t.platform!==`android`)return n;let{resolveAndroidAppLogProcessTransport:r}=await import(`./platform-runtime-app-log-android-transport.js`);return r(e.sessionsDir,t,n)}}),...a,appleDeployment:We(),androidDeployment:Ge(),androidTools:Ke(),temporaryFiles:Object.freeze({create:async e=>await ae(e)}),deviceReadiness:Object.freeze({applePhysical:Re(),appleAutomation:ze(),androidEmulator:Be()}),deviceShutdown:Ve({appleTools:r,commands:i},e.shutdownLoaders),screenRecording:E({ownedProcesses:e.ownedProcesses}),audioProbe:k({ownedProcesses:e.ownedProcesses}),perf:Ie(),snapshot:e.snapshot,localInteractors:ft(),appleApplications:o,androidApplications:s,applicationResources:pt({android:s,apple:o}),clock:Object.freeze({now:()=>Date.now(),sleep:async(e,t)=>{await le(e,void 0,t?{signal:t}:void 0)}})})}export{_t as createPlatformRuntimeHost,mt as createSnapshotRuntimeHost,gt as loadMacOsSurfaceSnapshot,ne as recoverLegacyAppLogMarkersAfterDaemonLock};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
2
|
-
`);async function
|
|
1
|
+
import{D as e,O as t}from"./sdk-contracts.js";import{u as n}from"./sdk-device.js";import{n as r}from"./exec.js";import"./command.js";import{n as i}from"./device-shell.js";import{t as a}from"./platform-runtime-android-mechanics.js";import{n as o}from"./entities.js";const s=`debug_http_host`,c=`dev_server_https`,l=`RCT_jsLocation`,u=`RCT_packager_scheme`,d=`React Native runtime hints require adb run-as access to the app sandbox. Verify the app is debuggable and the selected package/device are correct.`,f=[`<?xml version="1.0" encoding="utf-8" standalone="yes" ?>`,`<map>`,`</map>`,``].join(`
|
|
2
|
+
`);async function p(e){let{device:t,appId:r,values:i}=e;if(!r)return;let a=h(i);if(a){if(t.platform===`android`){await S(t,r,a);return}n(t)&&t.kind===`simulator`&&await j(t,r,a)}}async function m(e){let{device:t,appId:r}=e;if(r){if(t.platform===`android`){await C(t,r);return}n(t)&&t.kind===`simulator`&&await M(t,r)}}function h(e){let t=g(_(e,`bundleUrl`)),n=_(e,`metroHost`)??t?.host,r=v(e,`metroPort`)??t?.port,i=t?.scheme??`http`;return n&&r?{host:n,port:r,scheme:i}:void 0}function g(t){if(!t)return;let n;try{n=new URL(t)}catch(n){throw new e(`INVALID_ARGS`,`Invalid runtime bundle URL: ${t}`,{},n)}if(n.protocol===`http:`||n.protocol===`https:`)return{host:y(n.hostname),port:b(n.port.length>0?Number(n.port):n.protocol===`https:`?443:80),scheme:n.protocol===`https:`?`https`:`http`}}function _(e,t){return y(e[t])}function v(e,t){let n=_(e,t);return n===void 0?void 0:b(Number(n))}function y(e){let t=e?.trim();return t&&t.length>0?t:void 0}function b(e){return Number.isInteger(e)&&e>0&&e<=65535?e:void 0}function x(e){return[`shared_prefs/${e}_preferences.xml`,`shared_prefs/ReactNativeDevPrefs.xml`]}async function S(e,t,n){await z(t);let r=[];for(let i of x(t)){let a=F(await T(e,t,i),s,`${n.host}:${n.port}`);a=I(a,c,n.scheme===`https`),r.push({path:i,xml:a})}await E(e,t,r)}async function C(e,t){await z(t);let n=[];for(let r of x(t)){let i=await T(e,t,r),a=R(R(i,s),c);a!==i&&n.push({path:r,xml:a})}n.length!==0&&await E(e,t,n)}async function w(e,t,n){let{runAndroidAdb:r}=await a();return await r(e,t,n)}async function T(e,t,n){let r=await w(e,i(`adb`,`shell`,[`run-as`,t,`cat`,n]),{allowFailure:!0});return r.exitCode===0?P(r.stdout):f}async function E(e,t,n){await D(e,t);try{await k(e,t,n)}catch(e){throw A(e,t)}}async function D(e,t){let n=i(`adb`,`shell`,[`run-as`,t,`id`]),r=await w(e,n,{allowFailure:!0});if(r.exitCode!==0)throw O(r,t,n)}function O(t,n,i){let a=V(t.stdout,t.stderr);return new e(`COMMAND_FAILED`,a?`Failed to access Android app sandbox for ${n}`:`Failed to probe Android app sandbox for ${n}`,r(t,{package:n,cmd:`adb`,args:i,hint:a?d:`adb shell run-as probe failed. Check adb connectivity and that the device is reachable. Inspect stderr/details for more information.`}))}async function k(e,t,n){await w(e,i(`adb`,`shell`,[`run-as`,t,`mkdir`,`-p`,`shared_prefs`]));for(let r of n)await w(e,i(`adb`,`shell`,[`run-as`,t,`tee`,r.path]),{stdin:r.xml.trimEnd()})}function A(n,r){let i=t(n);if(i.code===`TOOL_MISSING`)return i;let a=V(typeof i.details?.stdout==`string`?i.details.stdout:``,typeof i.details?.stderr==`string`?i.details.stderr:``);return new e(`COMMAND_FAILED`,a?`Failed to access Android app sandbox for ${r}`:`Failed to write Android runtime hints for ${r}`,{...i.details??{},package:r,cmd:`adb`,phase:`write-runtime-hints`,hint:a?d:`adb run-as succeeded, but writing React Native dev-server preferences failed. Inspect stderr/details for the failing shell command.`},i)}async function j(e,t,n){await N(e,[`spawn`,e.id,`defaults`,`write`,t,l,`-string`,`${n.host}:${n.port}`]),await N(e,[`spawn`,e.id,`defaults`,`write`,t,u,`-string`,n.scheme])}async function M(e,t){await N(e,[`spawn`,e.id,`defaults`,`delete`,t,l],{allowFailure:!0}),await N(e,[`spawn`,e.id,`defaults`,`delete`,t,u],{allowFailure:!0})}async function N(e,t,n){let[{buildSimctlArgsForDevice:r},{runXcrun:i}]=await Promise.all([import(`./simctl-facade.js`),import(`./tool-provider-facade.js`)]);await i(r(e,t),n)}function P(e){let t=e.trim();return!t.includes(`<map`)||!t.includes(`</map>`)?f:`${t}\n`}function F(e,t,n){let r=` <string name="${o(t)}">${o(n)}</string>`;return L(R(e,t),r)}function I(e,t,n){let r=` <boolean name="${o(t)}" value="${n?`true`:`false`}" />`;return L(R(e,t),r)}function L(e,t){return P(e).replace(`</map>`,`${t}\n</map>`)}function R(e,t){let n=B(t);return P(e).replace(RegExp(`^\\s*<string name="${n}">[\\s\\S]*?<\\/string>\\n?`,`m`),``).replace(RegExp(`^\\s*<boolean name="${n}" value="(?:true|false)"\\s*\\/?>\\n?`,`m`),``)}async function z(t){let{classifyAndroidAppTarget:n,formatAndroidInstalledPackageRequiredMessage:r}=await a();if(n(t)!==`binary`)return;let i=r(t);throw new e(`INVALID_ARGS`,i,{package:t,hint:i})}function B(e){return e.replaceAll(/[.*+?^${}()|[\]\\]/g,String.raw`\$&`)}function V(e,t){let n=`${e}\n${t}`.toLowerCase();return[`run-as: package not debuggable`,`run-as: permission denied`,`run-as: package is unknown`,`run-as: unknown package`,`is unknown`,`is not an application`,`could not set capabilities`].some(e=>n.includes(e))}export{p as applyRuntimeHintValues,m as clearRuntimeHintValues};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{a as e,o as t}from"./device-shell.js";import{t as n}from"./platform-runtime-android-mechanics.js";import{n as r}from"./video.js";import i from"node:path";const a={medium:8e6,high:2e7};async function o(o){let{resolveAndroidAdbExecutor:c,resolveScopedAndroidAdbBackgroundTransport:l,runAdbShell:u}=await n(),d=c(o),f=l(o),p=async(e,t)=>await u(d,e,{allowFailure:!0,timeoutMs:5e3,signal:t}),m=async(e,t)=>{let n=await p([`test`,`-e`,e],t);return n.exitCode===0?`present`:n.exitCode===1&&n.stderr.trim()===``?`absent`:`uncertain`};return Object.freeze({mode:f.mode,start:async({remotePath:n,quality:r=`medium`},i)=>{let o=(await p([e(`screenrecord --bit-rate ${a[r]} ${t(n)} >/dev/null 2>&1 & echo $!`)],i)).stdout.split(/\s+/).find(e=>/^\d+$/.test(e));if(!o)throw Error(`Android screenrecord did not return a process id`);let c=await s(p,{pid:o,remotePath:n,startTime:``},i);if(c.status!==`owned-alive`||!c.process)throw Error(`Android screenrecord did not expose a complete process identity`);return Object.freeze({process:c.process})},inspect:async(e,t)=>(await s(p,e,t)).status,stop:async(e,t,n)=>{let r=await s(p,e,n);return r.status===`missing`?`already-missing`:r.status===`foreign-writer`?`ownership-lost`:r.status===`owned-alive`?(await p([`kill`,t?.force?`-9`:`-2`,e.pid],n)).exitCode===0?`stopped`:`uncertain`:r.status},exists:async(e,t)=>{let n=await m(e,t);return n===`present`||n!==`absent`&&`uncertain`},size:async(e,t)=>{let n=await m(e,t);if(n!==`present`)return n===`absent`?void 0:`uncertain`;let r=await p([`stat`,`-c`,`%s`,e],t);if(r.exitCode!==0)return`uncertain`;let i=Number(r.stdout.trim());return Number.isSafeInteger(i)&&i>=0?i:`uncertain`},probeRunningWriters:async(e,t)=>{let n=await p([`ps`,`-A`,`-o`,`pid=`],t);if(n.exitCode!==0)return{writers:[],conclusive:!1};let r=n.stdout.split(/\s+/).filter(e=>/^\d+$/.test(e)),i=await Promise.all(r.map(async n=>await s(p,{pid:n,remotePath:e,startTime:``},t)));return{writers:i.flatMap(e=>e.status===`owned-alive`&&e.process?[e.process]:[]),conclusive:!i.some(e=>e.status===`uncertain`)}},pullPlayable:async({remotePath:e,outputPath:t},n)=>{let i=await d([`pull`,e,t],{allowFailure:!0,signal:n});return{...i,playable:i.exitCode===0&&await r(t)}},remove:async(e,t)=>(await p([`rm`,`-f`,e],t)).exitCode===0,manifestPathFor:e=>`${i.posix.dirname(e)}/agent-device-recording-active.json`,readManifest:async(e,t)=>{let n=await p([`test`,`-e`,e],t);if(n.exitCode!==0)return n.exitCode===1&&n.stderr.trim()===``?{status:`missing`}:{status:`unavailable`,message:n.stderr.trim()||`Android recording manifest probe failed`};let r=await p([`cat`,e],t);return r.exitCode===0?{status:`read`,contents:r.stdout}:{status:`unavailable`,message:r.stderr.trim()||`Android recording manifest could not be read`}},writeManifest:async({manifestPath:n,contents:r},i)=>{let a=`${n}.tmp`;if((await p([e(`printf %s ${t(r)} > ${t(a)} && mv -f ${t(a)} ${t(n)}`)],i)).exitCode!==0)throw Error(`failed to write Android recording manifest`)},removeManifest:async(e,t)=>(await p([`rm`,`-f`,e],t)).exitCode===0})}async function s(e,t,n){let r=await c(e,t.pid,n);if(r!==`present`)return{status:r};let i=await e([`cat`,`/proc/${t.pid}/stat`],n);if(i.exitCode!==0)return{status:`uncertain`};let a=u(i.stdout);if(!a)return{status:`uncertain`};let o=await e([`cat`,`/proc/${t.pid}/cmdline`],n);return o.exitCode===0?l(o.stdout,t.remotePath)?t.startTime.length>0&&t.startTime!==a?{status:`foreign-writer`}:{status:`owned-alive`,process:Object.freeze({pid:t.pid,remotePath:t.remotePath,startTime:a})}:{status:`ownership-lost`}:{status:`uncertain`}}async function c(e,t,n){let r=await e([`test`,`-d`,`/proc/${t}`],n);return r.exitCode===0?`present`:r.exitCode===1&&r.stderr.trim()===``?`missing`:`uncertain`}function l(e,t){let n=e.split(`\0`).filter(e=>e.length>0),r=n[0];return r!==void 0&&i.posix.basename(r)===`screenrecord`&&n.at(-1)===t}function u(e){let t=e.lastIndexOf(`)`);if(t<0)return;let n=e.slice(t+1).trim().split(/\s+/)[19];return n&&/^\d+$/.test(n)?n:void 0}export{o as createAndroidScreenRecordingTransport};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{p as e}from"./owner-identity.js";import"./process.js";import{t}from"./scoped-provider.js";import n from"node:path";const r=Object.freeze({authority:`local-lease`,available:!0,start:i,inspect:async(e,t)=>await d(e,t),stop:async({device:e,runnerSessionId:t,appBundleId:n,signal:r})=>{let{runAppleRunnerCommand:i}=await import(`./runner-operations-facade.js`);await i(e,{command:`recordStop`,appBundleId:n},{signal:r,expectedRunnerSessionId:t})}});async function i({device:e,appBundleId:t,outputPath:n,fps:r,signal:i}){let{
|
|
1
|
+
import{p as e}from"./owner-identity.js";import"./process.js";import{t}from"./scoped-provider.js";import n from"node:path";const r=Object.freeze({authority:`local-lease`,available:!0,start:i,inspect:async(e,t)=>await d(e,t),stop:async({device:e,runnerSessionId:t,appBundleId:n,signal:r})=>{let{runAppleRunnerCommand:i}=await import(`./runner-operations-facade.js`);await i(e,{command:`recordStop`,appBundleId:n},{signal:r,expectedRunnerSessionId:t})}});async function i({device:e,appBundleId:t,outputPath:n,fps:r,signal:i}){let{readRunnerSessionLiveness:s,runAppleRunnerCommand:c}=await import(`./runner-operations-facade.js`),l=`agent-device-recording-${Date.now()}.mp4`,u=e.appleOs===`macos`||e.kind!==`device`?void 0:`tmp/${l}`,d=await c(e,{command:`recordStart`,outPath:a(e,n,l,u),...r===void 0?{}:{fps:r},appBundleId:t},{signal:i}),f=s(e.id);if(!f||f.liveness!==`ready`)throw Error(`Apple runner recording did not expose a durable runner session identity`);try{i?.throwIfAborted()}catch(n){throw await c(e,{command:`recordStop`,appBundleId:t},{expectedRunnerSessionId:f.sessionId}).catch(()=>{}),n}return o(f.sessionId,u,d)}function a(e,t,r,i){return e.appleOs===`macos`?t:i===void 0?n.basename(t):r}function o(e,t,n){return Object.freeze({runnerSessionId:e,...t===void 0?{}:{remotePath:t},...typeof n.recorderStartUptimeMs==`number`?{recorderStartUptimeMs:n.recorderStartUptimeMs}:{}})}const s=Object.freeze({authority:`scoped-provider`,available:!1,start:async()=>{throw Error(`Scoped Apple runner provider does not expose durable recording authority`)},inspect:async()=>`ownership-lost`,stop:async()=>{throw Error(`Scoped Apple runner recording authority is unavailable`)}}),c=t(r);function l(){return c.resolve()}async function u(e,t){return await c.run(e??s,t)}async function d(t,n){let{readRunnerSessionLiveness:r,readStaleRunnerLease:i,verifyLeaseRunnerPidIdentity:a}=await import(`./runner-operations-facade.js`),o=r(t.id);if(o)return o.liveness===`gone`?`missing`:o.sessionId===n?`owned-alive`:`ownership-lost`;let s=await i(t.id);return s?s.sessionId===n?s.runnerPid===null||!e(s.runnerPid)?`missing`:await a(s,s.runnerPid)?`owned-alive`:`ownership-lost`:`ownership-lost`:`missing`}export{l as resolveAppleRunnerScreenRecordingTransport,u as withAppleRunnerScreenRecordingTransport};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{D as e}from"./sdk-contracts.js";import{n as t}from"./exec.js";import"./command.js";import{i as n,n as r,r as i,t as a}from"./platform-runtime-screen-recording-process-host.js";import o from"node:fs";const s=(e,t)=>{if(e===t)return!0;let n=/^(?:\S*\/)?xcrun simctl (.+)$/.exec(e)?.[1],r=/^(?:\S*\/)?simctl (.+)$/.exec(t)?.[1];return n!==void 0&&n===r&&/^(?:--set .+ )?io \S+ recordVideo .+$/.test(n)};async function c(e,t,a){let{resolveAppleSimulatorScreenRecordingTransport:c}=await import(`./platform-runtime-screen-recording-apple-transport.js`);a?.throwIfAborted();let p;try{p=await u(c().start({device:e,outputPath:t,signal:a}),a),a?.throwIfAborted()}catch(e){throw p&&await d(p),o.rmSync(t,{force:!0}),a?.throwIfAborted(),e}if(!p)throw Error(`simctl recordVideo acquisition did not return a process`);let m;try{if(m=await l(p.child.pid,p.wait,a),!m)throw Error(`simctl recordVideo did not expose a complete process identity`)}catch(e){throw await d(p),a?.throwIfAborted(),e}try{await h(t,p.wait,a);let e=await r(m.pid)??m,n=await i(e);return f(p,n)}catch(e){throw await n([m],p,s).catch(()=>{}),await p.wait.catch(()=>void 0),o.rmSync(t,{force:!0}),a?.throwIfAborted(),e}}async function l(e,t,n){let i=g(t),a=e===void 0?0:80;for(let t=0;t<=a;t+=1){n?.throwIfAborted();let o=await r(e);if(o)return o;let s=await Promise.race([i,t<a?v(25,n).then(()=>void 0):Promise.resolve(void 0)]);if(s)throw _(s)}}async function u(e,t){let n=Promise.resolve(e);if(!t)return await n;if(t.aborted)throw`child`in e?await d(e):n.then(d).catch(()=>void 0),t.reason;let r=()=>{},i=new Promise((e,n)=>{let i=()=>n(t.reason);t.addEventListener(`abort`,i,{once:!0}),r=()=>t.removeEventListener(`abort`,i),t.aborted&&i()});try{return await Promise.race([n,i])}catch(e){throw t.aborted?(n.then(d).catch(()=>void 0),t.reason):e}finally{r()}}async function d(e){e.child.kill(`SIGINT`);let t=new AbortController;await Promise.race([e.wait.then(()=>!0,()=>!0),v(5e3,t.signal).then(()=>!1)]).finally(()=>t.abort())||(e.child.kill(`SIGKILL`),await e.wait.catch(()=>void 0))}function f(e,t){let r,i=!1,a=()=>n(t,e,s).then(e=>{if(e===`ownership-lost`)throw Error(`simctl recordVideo process ownership changed before cleanup`);i=e===`terminated`}),o=()=>(r??=a().catch(e=>{throw r=void 0,e}),r),c=e.wait.then(async e=>{let t=r;return t&&await t.catch(()=>void 0),i&&e.exitCode!==0?{...e,exitCode:0}:e});return Object.freeze({markers:Object.freeze([...t]),wait:c,terminate:o})}function p(e){return a(e,s)}async function m(e){return await n([e],void 0,s)}async function h(e,t,n){let r=g(t),i;r.then(e=>{i=e}),await Promise.resolve();for(let t=0;t<=60;t+=1){if(n?.throwIfAborted(),i)throw _(i);if(o.existsSync(e)){let e=await Promise.race([r,v(50,n).then(()=>void 0)]);if(e)throw _(e);return}if(t===60)throw Error(`simctl recordVideo did not create its output within 15000ms`);let a=await Promise.race([r,v(250,n).then(()=>void 0)]);if(a)throw _(a)}}function g(e){return e.then(e=>({kind:`exited`,result:e}),e=>({kind:`failed`,error:e}))}function _(n){if(n.kind===`failed`)return n.error instanceof Error?n.error:Error(String(n.error));let{exitCode:r}=n.result;return r===16?new e(`DEVICE_IN_USE`,`CoreSimulator host recording is already in progress`,t({...n.result,exitCode:r},{reason:`apple_simulator_recording_busy`,retriable:!1,hint:`Stop the active recording with record stop in its owning session. If a previous recorder died and no recording is active, ask the host operator to restart the CoreSimulator stream service before retrying.`})):Error(`simctl recordVideo exited with code ${r}`)}function v(e,t){return t?.throwIfAborted(),new Promise((n,r)=>{let i=e=>{clearTimeout(a),t?.removeEventListener(`abort`,o),e===void 0?n():r(e)},a=setTimeout(()=>i(),e);if(!t)return;let o=()=>i(t.reason);t.addEventListener(`abort`,o,{once:!0}),t.aborted&&o()})}export{p as inspectAppleSimulatorRecordingProcess,c as startAppleSimulatorRecording,m as terminateAppleSimulatorRecordingProcess};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import"./command.js";import{t as e}from"./scoped-provider.js";const t=Object.freeze({available:!0,mode:`local`,async start({device:e,outputPath:t,signal:n}){let[{
|
|
1
|
+
import"./command.js";import{t as e}from"./scoped-provider.js";const t=Object.freeze({available:!0,mode:`local`,async start({device:e,outputPath:t,signal:n}){let[{buildAppleSimulatorRecordVideoArgs:r},{runCmdBackground:i}]=await Promise.all([import(`./simctl-facade.js`),import(`./command.js`).then(e=>e.t)]);n?.throwIfAborted();let a=await r(e,t,{signal:n});return n?.throwIfAborted(),i(`xcrun`,a,{allowFailure:!0})}}),n=Object.freeze({available:!1,mode:`transport-composed`,start:async()=>{throw Error(`Scoped Apple provider does not expose an Apple simulator screen-recording transport`)}}),r=e(t);function i(){return r.resolve()}async function a(e,t){return await r.run(e??n,t)}export{i as resolveAppleSimulatorScreenRecordingTransport,a as withAppleSimulatorScreenRecordingTransport};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{D as e}from"./sdk-contracts.js";import{t}from"./recording-export-quality.js";import{c as n}from"./exec.js";import"./command.js";import{n as r}from"./version.js";import{t as i}from"./screen-recording-runtime.js";import{n as a}from"./telemetry.js";import{a as o,i as s,n as c,o as l,r as u,t as d}from"./video.js";import f from"node:path";import p from"node:fs";import{fileURLToPath as m}from"node:url";function h(e,t,n,r){let i=`apple/runner/AgentDeviceRunner/RecordingScripts/${e}`,a=`dist/${i}`;return[f.resolve(t,e),f.resolve(n,i),f.resolve(t,`../${i}`),f.resolve(t,`../../${i}`),f.resolve(t,`../../../${i}`),f.resolve(n,a),f.resolve(r,i)]}function g(t){let n=h(t,f.dirname(m(import.meta.url)),r(),process.cwd());for(let e of n)if(p.existsSync(e))return e;throw new e(`COMMAND_FAILED`,`Missing recording helper script: ${t}`,{hint:`Ensure apple/runner/AgentDeviceRunner/RecordingScripts is present in this checkout or bundled under dist/apple/runner in the package.`,scriptName:t,searchedPaths:n})}let _,v;function y(e=process.platform){if(e!==`darwin`)return`touch overlay burn-in is only available on macOS hosts; returning raw video plus gesture telemetry`}function b(){return _??=g(`recording-overlay.swift`),_}function x(){return v??=g(`RecordingExportSupport.swift`),v}async function S(t){let{videoPath:r,scriptPath:i,scriptArgs:a,commandDescription:c}=t;await s(r),await u(r);let d=C(r);try{let e=await l({sourcePath:i,extraSourcePaths:[x()]});await n(e,[`--input`,r,`--output`,d,...a],{timeoutMs:12e4,env:o()}),await u(d),p.renameSync(d,r)}catch(t){let n=t instanceof e?t:new e(`COMMAND_FAILED`,String(t),void 0,t instanceof Error?t:void 0);throw new e(`COMMAND_FAILED`,c,{...n.details,videoPath:r,script:i},n)}finally{p.rmSync(d,{force:!0})}}function C(e){let t=f.parse(e),n=`${process.pid}-${Date.now()}-${Math.random().toString(16).slice(2)}`;return f.join(t.dir,`.${t.name}.agent-device-${n}${t.ext||`.mp4`}`)}async function w(e){let{videoPath:n,telemetryPath:r,exportQuality:i=t,targetLabel:a=`recording`}=e;await S({videoPath:n,scriptPath:b(),scriptArgs:[`--events`,r,`--quality`,i],commandDescription:`Failed to add touch overlays to the ${a}`})}function T(){return Object.freeze({sniff:E,complete:D})}async function E(e){if(!await d(e.outputPath))throw k(e.outputPath)}async function D(e){if(await s(e.outputPath),await u(e.outputPath),!await c(e.outputPath))throw k(e.outputPath);let t=a({recording:{outPath:e.outputPath,gestureEvents:[...e.gestureEvents]}});return!e.showTouches||e.gestureEvents.length===0?{telemetryPath:t}:await O(e,t)}async function O(e,t){let n=y();if(n)return{telemetryPath:t,overlayWarning:n};try{if(await w({videoPath:e.outputPath,telemetryPath:t,exportQuality:e.exportQuality,targetLabel:e.targetLabel}),!await c(e.outputPath))throw Error(`recording post-processing produced an unplayable video`);return{telemetryPath:t}}catch(e){return{telemetryPath:t,overlayWarning:`failed to overlay recording touches: ${e instanceof Error?e.message:String(e)}`}}}function k(t){return new e(`COMMAND_FAILED`,`recording was not finalized into a playable video: ${t}`,{reason:i,retriable:!0,hint:`Run record stop again: a recorder that is still finalizing its file is playable on the next stop, and the recording keeps its evidence either way. If the recorder died before writing a video, close this session to release the device and record again.`})}export{T as createScreenRecordingFinalizer};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
function e(){return Object.freeze({start:async(e,
|
|
1
|
+
function e(){return Object.freeze({start:async(e,t,r)=>await n(e,[`aa`,`start`,`-b`,`com.huawei.hmos.screenrecorder`,`-a`,`com.huawei.hmos.screenrecorder.ServiceExtAbility`,`--ps`,`CustomizedFileName`,t],r),stop:async(e,t)=>await n(e,[`aa`,`start`,`-b`,`com.huawei.hmos.screenrecorder`,`-a`,`com.huawei.hmos.screenrecorder.ServiceExtAbility`],t),findMedia:async(e,t,r)=>(await n(e,[`mediatool`,`query`,t,`-u`],r)).stdout.match(/file:\/\/[^\s"']+/)?.[0],stageMedia:async(e,t,r)=>(await n(e,[`mediatool`,`recv`,t.mediaUri,t.remotePath],r)).exitCode===0,stagedFileSize:async(e,t,r)=>{let i=await n(e,[`stat`,`-c`,`%s`,t],r);if(i.exitCode!==0)return;let a=Number(i.stdout.trim());return Number.isSafeInteger(a)&&a>0?a:void 0},pull:async(e,n,r)=>await t(e,[`file`,`recv`,n.remotePath,n.outputPath],r),remove:async(e,t,r)=>(await n(e,[`rm`,`-f`,t],r)).exitCode===0,removeMedia:async(e,t,r)=>(await n(e,[`mediatool`,`delete`,t],r)).exitCode===0})}async function t(e,t,n){let{runHarmonyHdc:r}=await import(`./src4.js`).then(e=>e.b);return await r(e,t,{allowFailure:!0,signal:n})}async function n(e,t,n){let{runHarmonyShell:r}=await import(`./src4.js`).then(e=>e.b);return await r(e,t,{allowFailure:!0,signal:n})}export{e as createHarmonyScreenRecordingHost};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{j as e}from"./sdk-contracts.js";import{r as t}from"./diagnostics.js";import{S as n,b as r,g as i,h as a,o,p as s,w as c,x as l,y as u}from"./owner-identity.js";import"./diagnostics2.js";import"./process.js";const d=2e3,f=(e,t)=>e===t;async function p(e){if(e===void 0)return;let[t,n]=await Promise.all([Promise.resolve(l(e)),Promise.resolve(u(e))]);return t&&n?Object.freeze({pid:e,startTime:t,command:n}):void 0}async function m(e){let t=await h(e.pid),n=o([e.pid],t),r=(await Promise.all(n.map(async e=>await p(e.pid)))).filter(e=>e!==void 0);return Object.freeze([e,...r.filter(t=>t.pid!==e.pid)])}async function h(n){try{return await i({timeoutMs:5e3})}catch(r){return t({level:`warn`,phase:`screen_recording_process_tree_unreadable`,data:{rootPid:n,reason:e(r)}}),[]}}function g(e,t=f){return!s(e.pid)||a(e.pid)?`missing`:S(e,t)?`owned-alive`:`ownership-lost`}async function _(e,t){if(!s(e.pid))return`gone`;let n=await r(e.pid,5e3);return n.zombie===!0?`gone`:e.startTime.length===0||e.command.length===0?`not-ours`:n.startTime===null||n.command===null?`unprovable`:n.startTime===e.startTime&&t(e.command,n.command)?`ours`:`not-ours`}async function v(e,t,n=f){let r=t?.child.pid,i=async e=>({marker:e,evidence:await _(e,n)}),a=({marker:e,evidence:t})=>t===`ours`||t===`unprovable`&&e.pid===r,o=await Promise.all(e.map(i)),s=o[0],c=new Set(e.map(({pid:e})=>e)),l=s!==void 0&&a(s)?await m(s.marker):[],u=await Promise.all(l.filter(({pid:e})=>!c.has(e)).map(async e=>await i(e))),p=[...o,...u],h=p.filter(a).map(({marker:e})=>e);if(h.length===0)return y(p.map(({evidence:e})=>e));let g=new Set(h.map(({pid:e})=>e)),v=p.filter(({marker:e,evidence:t})=>!g.has(e.pid)&&t!==`gone`);for(let[e,r]of[[`SIGINT`,5e3],[`SIGTERM`,d],[`SIGKILL`,d]])if(b(h,e,t),await x(h,r,t,n))return v.length===0?`terminated`:`ownership-lost`;return`ownership-lost`}function y(e){return e.every(e=>e===`gone`)?`already-missing`:`ownership-lost`}function b(e,t,r){let i=r?.child.pid;n(e.map(({pid:e})=>e).filter(e=>e!==i),t),i!==void 0&&e.some(({pid:e})=>e===i)&&r?.child.kill(t)}async function x(e,t,n,r){let i=n?.child.pid,a=n?await C(n.wait,t):!1;return await Promise.all(e.filter(({pid:e})=>!a||e!==i).map(async({pid:e})=>await c(e,t))),e.every(e=>a&&e.pid===i||g(e,r)===`missing`)}function S(e,t){let n=u(e.pid);return e.startTime.length>0&&e.command.length>0&&l(e.pid)===e.startTime&&n!==null&&t(e.command,n)}async function C(e,t){return await Promise.race([e.then(()=>!0,()=>!0),new Promise(e=>setTimeout(()=>e(!1),t))])}export{v as i,p as n,m as r,g as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{D as e}from"./sdk-device.js";import{t}from"./application-lifecycle-runtime.js";import{i as n}from"./touch-runtime.js";import{A as r,D as i,G as a,H as o,I as s,L as c,N as l,R as u,a as d,b as f,d as p,g as m,i as h,m as g,s as _,t as v,v as y,w as b,x}from"./alert-runtime.js";import{n as S}from"./audio-probe-runtime.js";import{n as C}from"./perf-runtime.js";const w={appLog:!0,apps:!0,appDeployment:!0,appState:!0,network:!0,screenRecording:!0,screenshot:!0,snapshot:!0,viewport:!0,focus:!0,gesture:!0,scroll:!0,typeText:!0,touch:!0,elementText:!0,back:!0,home:!0,orientation:!0,tvRemote:!0,keyboard:!0,clipboard:!0,appSwitcher:!0,actionButton:!0,triggerAppEvent:!0,setSetting:!0,readAlert:!0,awaitAlert:!0,acceptAlert:!0,dismissAlert:!0,audioProbeCapture:!0,audioProbeQuery:!0,perf:!0,readiness:!0,shutdown:!0};function T(e){let t={};for(let n of Object.keys(w))t[n]=e(n);return t}function E(e){return Object.freeze({...T(()=>e),lifecycle:t({resolveOpenTarget:e,prepareApplicationOpen:e,openApplication:e,applyRuntimeHints:e,clearRuntimeHints:e,closeApplication:e,finalizeApplicationClose:e,prepareAppleRunner:e,configureProviderPortReverse:e})})}function D(e,t,n){return Object.freeze({device:e,owner:t,facts:O(e,t,n),operations:Object.freeze({}),[Symbol.asyncDispose]:async()=>void 0})}function O(t,w,T){let E=A(T);return Object.freeze({device:{...e(t),providerMode:k(w)},operations:{appLogInspect:E.appLog,appLogDoctor:E.appLog,appLogStart:E.appLog,appLogReattach:E.appLog,appLogCleanup:E.appLog,listApps:E.apps,deployApp:E.appDeployment,materializeAppSource:E.appDeployment,deployMaterializedApp:E.appDeployment,sendPushNotification:E.appDeployment,appState:E.appState,networkDump:E.network,screenRecordingStart:E.screenRecording,screenRecordingReattach:E.screenRecording,screenRecordingCleanup:E.screenRecording,...a({capture:E.screenshot}),...o({capture:E.snapshot,customActions:E.snapshot,withoutActiveApp:E.snapshot}),...u({findText:E.snapshot}),...c({setViewport:E.viewport}),...s({focus:E.focus}),...l({unsupported:E.gesture}),...r({scroll:E.scroll}),...i({type:E.typeText}),...n({unsupported:E.touch,tap:E.touch,longPress:E.touch,fill:E.touch}),...b({readTextAtPoint:E.elementText}),...x({back:E.back}),...f({home:E.home}),...y({orientation:E.orientation}),...m({tvRemote:E.tvRemote}),...g({unsupported:E.keyboard}),...p({unsupported:E.clipboard}),..._({appSwitcher:E.appSwitcher}),actionButton:E.actionButton,...d({triggerAppEvent:E.triggerAppEvent}),...h({setSetting:E.setSetting}),...v({read:E.readAlert,wait:E.awaitAlert,accept:E.acceptAlert,dismiss:E.dismissAlert}),...S({capture:E.audioProbeCapture,query:E.audioProbeQuery}),...C({frames:E.perf,memorySample:E.perf,memorySnapshot:E.perf,nativeCapture:E.perf,profileReport:E.perf}),ensureReady:E.readiness,bootTarget:E.readiness,bootTargetHeadless:E.readiness,shutdownTarget:E.shutdown,...E.lifecycle}})}function k(e){switch(e.kind){case`local-family`:case`managed-local`:return`local`;case`provider-runtime`:return`provider-runtime`}}function A(e){return Object.freeze({...T(t=>Object.freeze({...e[t]??e.network})),lifecycle:t(e.lifecycle)})}export{D as n,O as r,E as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime.js";import{C as t}from"./sdk-contracts.js";import{D as n,E as r,O as i,c as a,w as o}from"./sdk-device.js";import{Jt as s,Xt as c,Yt as l,k as u}from"./sdk-batch.js";import{a as d,i as f,t as p}from"./device.js";import{t as ee}from"./startup-recovery-fence.js";import{i as m,n as h,r as g}from"./src2.js";import{n as _,t as v}from"./src3.js";import{i as te,m as ne}from"./src4.js";import{c as re,g as y,n as b}from"./src5.js";import{r as x,t as S}from"./src6.js";import{n as C,r as ie,t as w}from"./platform-runtime-unavailable.js";const T=Object.freeze({family:`android`});function ae(e){let t,n=()=>(t??=import(`./observation.js`).then(({createAndroidObservationAdapter:t})=>t(e)),t);return Object.freeze({readAppState:async(...e)=>await(await n()).readAppState(...e),readBlockingDialog:async(...e)=>await(await n()).readBlockingDialog(...e),readAppFocus:async(...e)=>await(await n()).readAppFocus(...e),readSnapshotNodes:async(...e)=>await(await n()).readSnapshotNodes(...e),tap:async(...e)=>await(await n()).tap(...e),openApp:async(...e)=>await(await n()).openApp(...e),readScreenSize:async(...e)=>await(await n()).readScreenSize(...e),isPermissionPackage:async(...e)=>await(await n()).isPermissionPackage(...e)})}async function oe(e,t){let{readAndroidAppStateWithExecutor:n}=await import(`./app-state.js`);return await n(e,t)}function se(e){return Object.freeze({...T,loadRuntime:async t=>{await e.bindAdbHost();let{createAndroidPlatformRuntime:n}=await import(`./runtime2.js`);return n(t)}})}function ce(e){let t=Object.freeze({sdkRoots:Object.freeze([...new Set(e.sdkRoots.map(e=>e.trim()).filter(Boolean))])});return Object.freeze({...T,loadInventory:async e=>{let{createAndroidInventory:n}=await import(`./inventory.js`);return n(e,t)}})}async function le(e){let{createAndroidShutdownRuntime:t}=await import(`./runtime3.js`);return t(e)}function ue(e){let t=new Map,n=new Map;for(let r of e.providerModules??[]){let{runtime:e,module:i}=r,a=l(i.owner);if(i.owner.provider!==e.provider)throw z(`Provider platform runtime metadata is invalid: ${a}`);if(t.has(a))throw z(`Duplicate platform runtime owner: ${a}`);if(n.has(e))throw z(`Duplicate platform module registration for ${e.provider}`);t.set(a,r),n.set(e,i)}let r=new Map;for(let t of e.managedOwners??[]){let e=l(t);if(r.has(e))throw z(`Duplicate platform runtime owner: ${e}`);r.set(e,t)}let i=new Map,a=new Map,o=new Map,s=new Map,u,d=async()=>{u??=e.loadHost();try{return await u}catch(e){throw u=void 0,e}},f,p,m=Object.freeze({recoverStartupResources:async e=>{await ee(e.stateDir,async()=>{await(await d()).applicationResources.recoverStartupResources(e)})},detachForDaemonShutdown:async()=>{f??=d().then(async e=>await e.applicationResources.detachForDaemonShutdown()),await f},finalizeDaemonShutdown:async()=>{p??=d().then(async e=>await e.applicationResources.finalizeDaemonShutdown()),await p}}),h=e=>{let t=l(e.owner),n=s.get(t);if(n&&n!==e)throw z(`Duplicate platform runtime owner: ${t}`);return s.set(t,e),e},g=async t=>{let n=i.get(t);if(n)return await n;let r=e.modules.get(t);if(!r)throw z(`Missing platform runtime module for ${t}`);if(r.family!==t)throw z(`Platform runtime module registered for ${t} declares ${r.family}`);let a=d().then(async e=>{let n=await r.loadRuntime(e);if(n.owner.kind!==`local-family`||n.owner.family!==t)throw z(`Platform runtime module for ${t} returned a different local owner`);return h(n)});i.set(t,a);try{return await a}catch(e){throw i.get(t)===a&&i.delete(t),e}},_=async e=>{let t=a.get(e);if(t)return await t;let n=d().then(async t=>{let n=await e.loadRuntime(t);if(!c(n.owner,e.owner))throw z(`Provider platform runtime returned a different advertised owner`);return h(n)});a.set(e,n);try{return await n}catch(t){throw a.get(e)===n&&a.delete(e),t}},v=async e=>{let t=l(e),n=r.get(t);if(!n)throw R(e);let i=o.get(t);if(i)return i;let{createManagedLocalRuntimeOwner:a}=await import(`./platform-runtime-managed-owner.js`),s=h(a({owner:n,loadLocal:g}));return o.set(t,s),s};return Object.freeze({applicationLifecycle:m,inspectFacts:async t=>{let r=E(e.providerRuntimes,t);if(r){let e=n.get(r);return e?await D(await _(e),t):L(r,t)}return await D(await g(t.platform),t)},bind:async r=>{if(r.intent.kind===`exact-owner`)return await O(await P(r.intent.owner,t,_,g,v),r);let i=E(e.providerRuntimes,r.device);if(i){let e=n.get(i);return e?await O(await _(e),r):I(i,r.device)}return await O(await g(r.device.platform),r)},shutdown:async()=>{await Promise.allSettled([...s.values()].map(async e=>await e.shutdown())),s.clear(),i.clear(),a.clear(),o.clear()}})}function E(e,t){let n=(e??[]).filter(e=>e.ownsDevice(t));if(n.length>1)throw z(`Multiple provider runtimes claim the selected device`);return n[0]}async function D(e,t){let n=await e.inspectFacts(t);if(!M(t,e.owner,n))throw z(`Platform runtime facts do not match the selected device and owner`);return n}async function O(e,t){let n=await e.bind(t),r=k(e,n,t);if(!r)return n;let i;try{await n[Symbol.asyncDispose]()}catch(e){i=e instanceof Error?e.message:String(e)}throw z(r,i)}function k(e,t,r){if(!c(t.owner,e.owner))return`Platform binding returned a different owner than the selected runtime`;if(!A(t.owner,r))return`Exact platform binding returned a different persisted owner`;if(!n(o(t.device),o(r.device)))return`Platform binding returned a different device identity`;if(!j(t))return`Platform binding facts do not match its device and owner`}function A(e,t){return t.intent.kind!==`exact-owner`||c(e,t.intent.owner)}function j(e){return M(e.device,e.owner,e.facts)}function M(e,t,n){return i(n.device,r(e))&&N(n.device.providerMode,t)}function N(e,t){switch(t.kind){case`local-family`:return e===`local`||e===`transport-composed`;case`managed-local`:return e===`local`||e===`transport-composed`;case`provider-runtime`:return e===`provider-runtime`}}async function P(e,t,n,r,i){switch(e.kind){case`local-family`:{let t=await r(e.family);if(c(t.owner,e))return t;throw R(e)}case`managed-local`:return await i(e);case`provider-runtime`:{let r=t.get(l(e));if(r)return await n(r.module);throw R(e)}}}const F=Object.freeze({available:!1,reason:`unsupported-provider-mode`});function I(e,t){let n=s(e.provider,`default`);return C(t,n,w(F))}function L(e,t){return ie(t,s(e.provider,`default`),w(F))}function R(e){return new t(`UNSUPPORTED_OPERATION`,`The exact platform runtime owner is unavailable.`,{reason:`owner-unavailable`,owner:l(e)})}function z(e,n){return new t(`COMMAND_FAILED`,e,{reason:`runtime-contract-invalid`,...n?{cleanupError:n}:{}})}function B(e){let t=V(e.registry,e.loadHost),n=e.provider,r=n?async(e,r)=>{r.signal.throwIfAborted();let i=await n.discover(d(e),r.signal);return r.signal.throwIfAborted(),ge(i),i.kind===`inventory`?{devices:f(i.devices.map(e=>({...e})),e),source:`provider`}:{devices:await t.discover(e,r),source:`local`}}:async(e,n)=>({devices:await t.discover(e,n),source:`local`}),i=Object.freeze({discover:async(e,t)=>(await r(e,t)).devices,discoverWithSource:r});return Object.freeze({providerFirst:i,localOnly:t,findInstalledApp:async(e,t)=>{let{findIosSimulatorInstalledApp:n}=await import(`./app-resolution-facade.js`);return await n(e,t)}})}function V(e,t){let n,r=async()=>{n??=t();try{return await n}catch(e){throw n=void 0,e}},i=new Map,a=async t=>{let n=i.get(t);if(n)return await n;let a=H(e.get(t),r);i.set(t,a);try{return await a}catch(e){throw i.get(t)===a&&i.delete(t),e}};return Object.freeze({discover:async(e,t)=>{if(t.signal.throwIfAborted(),e.platform)return await W(a,G(e.platform),e,t);let n=await Promise.all(p.map(async n=>{try{let r=await W(a,G(n),{...e,platform:n},t);return Array.isArray(r)?r:[]}catch{return[]}}));return t.signal.throwIfAborted(),n.flat()}})}async function H(e,t){switch(e.family){case`apple`:return await e.loadInventory(U(await t()));case`android`:return await e.loadInventory(de(await t()));case`harmonyos`:return await e.loadInventory(fe(await t()));case`vega`:return await e.loadInventory(pe(await t()));case`linux`:return await e.loadInventory(me(await t()));case`web`:return await e.loadInventory()}}function U(e){return Object.freeze({appleTools:e.appleTools,files:e.files,hostName:e.hostName,hostOs:e.hostOs,observations:e.observations})}function de(e){return Object.freeze({commands:e.commands,files:e.files,homeDirectory:e.homeDirectory,toolchains:e.toolchains})}function fe(e){return Object.freeze({commands:e.commands,files:e.files,toolchains:e.toolchains})}function pe(e){return Object.freeze({commands:e.commands,files:e.files,homeDirectory:e.homeDirectory})}function me(e){return Object.freeze({hostName:e.hostName,hostOs:e.hostOs})}async function W(e,t,n,r){let i=await e(t);r.signal.throwIfAborted();let a=await i.discover(n,r);return r.signal.throwIfAborted(),he(t,a),f(a,n)}function G(e){return a(e)?`apple`:e}function he(e,n){let r=n.find(t=>t.platform!==e);if(r)throw new t(`COMMAND_FAILED`,`Platform inventory source ${e} returned a ${r.platform} device.`,{expectedFamily:e,actualFamily:r.platform,deviceId:r.id})}function ge(e){if(typeof e==`object`&&e){let t=e;if(t.kind===`declined`&&!(`devices`in t)||t.kind===`inventory`&&Array.isArray(t.devices))return}throw new t(`COMMAND_FAILED`,`Provider device inventory returned an invalid outcome.`,{reason:`provider_inventory_contract_violation`})}function _e(){return Object.freeze({async runAdb(e,t,n){let{runAndroidAdb:r}=await K(),i=await r(e,[...t],n);return{exitCode:i.exitCode,stdout:i.stdout,stderr:i.stderr}},async readSnapshotNodes(e){let{snapshotAndroid:t,androidSnapshotPublicationInput:n}=await K(),{buildSnapshotState:r}=await import(`./snapshot-state.js`).then(e=>e.n);return r(n(await t(e,{interactiveOnly:!1})),void 0).nodes},async openApp(e,t){let{openAndroidApp:n}=await K();await n(e,t)}})}async function K(){let{loadAndroidMechanics:e}=await import(`./platform-runtime-android-mechanics.js`).then(e=>e.n);return await e()}var ve=e({androidObservation:()=>J,createPlatformDeviceInventoryGateways:()=>X,createPlatformRuntimeGateway:()=>Q,createRequestPlatformProviders:()=>$,getAndroidAppStateWithAdb:()=>ye,platformModuleRegistry:()=>Y,platformRuntimeModules:()=>Z});async function ye(e,t){return await oe(e,t)}const q=ce({sdkRoots:Ce(process.env.ANDROID_SDK_ROOT,process.env.ANDROID_HOME)}),J=ae(_e()),be=Object.freeze({apple:async e=>await g(e),android:async e=>await le(e)}),xe=te({hdcSdkPath:process.env.HDC_SDK_PATH,devecoSdkHome:process.env.DEVECO_SDK_HOME,commandLineToolsHome:process.env.HARMONYOS_COMMAND_LINE_TOOLS}),Y=u([h,q,xe,v,re,S]);function X(e){return B({registry:Y,loadHost:async()=>{let{createDeviceInventoryHost:e}=await import(`./platform-runtime-host.js`);return e()},provider:e})}const Se=se({bindAdbHost:async()=>{await import(`./platform-runtime-android-adb-host.js`).then(e=>e.t)}}),Z=new Map([[`apple`,m],[`android`,Se],[`harmonyos`,ne],[`vega`,_],[`linux`,y],[`web`,x]]);function Q(e){return ue({modules:Z,loadHost:async()=>{let{createPlatformRuntimeHost:t,createSnapshotRuntimeHost:n,loadMacOsSurfaceSnapshot:r}=await import(`./platform-runtime-operation-host.js`);return t({sessionsDir:e.sessionsDir,resolveSessionArtifacts:e.resolveSessionArtifacts,shutdownLoaders:be,snapshot:n({linux:b,macos:r}),ownedProcesses:e.ownedProcesses})},providerRuntimes:e.providerRuntimes,providerModules:e.providerModules})}function $(e={}){let t,n=()=>(t??=import(`./request-providers.js`).then(({createComposedRequestPlatformProviders:t})=>t(e)),t);return Object.freeze({hasConfiguredResolvers:Object.values(e.providers??{}).some(Boolean),run:async(e,t)=>await(await n()).run(e,t)})}function Ce(...e){return e.flatMap(e=>{let t=e?.trim();return t?[t]:[]})}export{ve as a,$ as i,X as n,Q as r,J as t};
|
|
1
|
+
import{r as e}from"./rolldown-runtime.js";import{D as t}from"./sdk-contracts.js";import{D as n,O as r,T as i,k as a,l as o}from"./sdk-device.js";import{Xt as s,Yt as c,Zt as l,k as u}from"./sdk-batch.js";import{i as d,o as f,t as p}from"./device.js";import{t as ee}from"./startup-recovery-fence.js";import{i as m,n as h,r as g}from"./src2.js";import{n as _,t as v}from"./src3.js";import{i as te,m as ne}from"./src4.js";import{c as re,g as y,n as b}from"./src5.js";import{r as x,t as S}from"./src6.js";import{n as C,r as ie,t as w}from"./platform-runtime-unavailable.js";const T=Object.freeze({family:`android`});function ae(e){let t,n=()=>(t??=import(`./observation.js`).then(({createAndroidObservationAdapter:t})=>t(e)),t);return Object.freeze({readAppState:async(...e)=>await(await n()).readAppState(...e),readBlockingDialog:async(...e)=>await(await n()).readBlockingDialog(...e),readAppFocus:async(...e)=>await(await n()).readAppFocus(...e),readSnapshotNodes:async(...e)=>await(await n()).readSnapshotNodes(...e),tap:async(...e)=>await(await n()).tap(...e),openApp:async(...e)=>await(await n()).openApp(...e),readScreenSize:async(...e)=>await(await n()).readScreenSize(...e),isPermissionPackage:async(...e)=>await(await n()).isPermissionPackage(...e)})}async function oe(e,t){let{readAndroidAppStateWithExecutor:n}=await import(`./app-state.js`);return await n(e,t)}function se(e){return Object.freeze({...T,loadRuntime:async t=>{await e.bindAdbHost();let{createAndroidPlatformRuntime:n}=await import(`./runtime2.js`);return n(t)}})}function ce(e){let t=Object.freeze({sdkRoots:Object.freeze([...new Set(e.sdkRoots.map(e=>e.trim()).filter(Boolean))])});return Object.freeze({...T,loadInventory:async e=>{let{createAndroidInventory:n}=await import(`./inventory.js`);return n(e,t)}})}async function le(e){let{createAndroidShutdownRuntime:t}=await import(`./runtime3.js`);return t(e)}function ue(e){let t=new Map,n=new Map;for(let r of e.providerModules??[]){let{runtime:e,module:i}=r,a=s(i.owner);if(i.owner.provider!==e.provider)throw z(`Provider platform runtime metadata is invalid: ${a}`);if(t.has(a))throw z(`Duplicate platform runtime owner: ${a}`);if(n.has(e))throw z(`Duplicate platform module registration for ${e.provider}`);t.set(a,r),n.set(e,i)}let r=new Map;for(let t of e.managedOwners??[]){let e=s(t);if(r.has(e))throw z(`Duplicate platform runtime owner: ${e}`);r.set(e,t)}let i=new Map,a=new Map,o=new Map,c=new Map,u,d=async()=>{u??=e.loadHost();try{return await u}catch(e){throw u=void 0,e}},f,p,m=Object.freeze({recoverStartupResources:async e=>{await ee(e.stateDir,async()=>{await(await d()).applicationResources.recoverStartupResources(e)})},detachForDaemonShutdown:async()=>{f??=d().then(async e=>await e.applicationResources.detachForDaemonShutdown()),await f},finalizeDaemonShutdown:async()=>{p??=d().then(async e=>await e.applicationResources.finalizeDaemonShutdown()),await p}}),h=e=>{let t=s(e.owner),n=c.get(t);if(n&&n!==e)throw z(`Duplicate platform runtime owner: ${t}`);return c.set(t,e),e},g=async t=>{let n=i.get(t);if(n)return await n;let r=e.modules.get(t);if(!r)throw z(`Missing platform runtime module for ${t}`);if(r.family!==t)throw z(`Platform runtime module registered for ${t} declares ${r.family}`);let a=d().then(async e=>{let n=await r.loadRuntime(e);if(n.owner.kind!==`local-family`||n.owner.family!==t)throw z(`Platform runtime module for ${t} returned a different local owner`);return h(n)});i.set(t,a);try{return await a}catch(e){throw i.get(t)===a&&i.delete(t),e}},_=async e=>{let t=a.get(e);if(t)return await t;let n=d().then(async t=>{let n=await e.loadRuntime(t);if(!l(n.owner,e.owner))throw z(`Provider platform runtime returned a different advertised owner`);return h(n)});a.set(e,n);try{return await n}catch(t){throw a.get(e)===n&&a.delete(e),t}},v=async e=>{let t=s(e),n=r.get(t);if(!n)throw R(e);let i=o.get(t);if(i)return i;let{createManagedLocalRuntimeOwner:a}=await import(`./platform-runtime-managed-owner.js`),c=h(a({owner:n,loadLocal:g}));return o.set(t,c),c};return Object.freeze({applicationLifecycle:m,inspectFacts:async t=>{let r=E(e.providerRuntimes,t);if(r){let e=n.get(r);return e?await D(await _(e),t):L(r,t)}return await D(await g(t.platform),t)},bind:async r=>{if(r.intent.kind===`exact-owner`)return await O(await P(r.intent.owner,t,_,g,v),r);let i=E(e.providerRuntimes,r.device);if(i){let e=n.get(i);return e?await O(await _(e),r):I(i,r.device)}return await O(await g(r.device.platform),r)},shutdown:async()=>{await Promise.allSettled([...c.values()].map(async e=>await e.shutdown())),c.clear(),i.clear(),a.clear(),o.clear()}})}function E(e,t){let n=(e??[]).filter(e=>e.ownsDevice(t));if(n.length>1)throw z(`Multiple provider runtimes claim the selected device`);return n[0]}async function D(e,t){let n=await e.inspectFacts(t);if(!M(t,e.owner,n))throw z(`Platform runtime facts do not match the selected device and owner`);return n}async function O(e,t){let n=await e.bind(t),r=k(e,n,t);if(!r)return n;let i;try{await n[Symbol.asyncDispose]()}catch(e){i=e instanceof Error?e.message:String(e)}throw z(r,i)}function k(e,t,n){if(!l(t.owner,e.owner))return`Platform binding returned a different owner than the selected runtime`;if(!A(t.owner,n))return`Exact platform binding returned a different persisted owner`;if(!r(i(t.device),i(n.device)))return`Platform binding returned a different device identity`;if(!j(t))return`Platform binding facts do not match its device and owner`}function A(e,t){return t.intent.kind!==`exact-owner`||l(e,t.intent.owner)}function j(e){return M(e.device,e.owner,e.facts)}function M(e,t,r){return a(r.device,n(e))&&N(r.device.providerMode,t)}function N(e,t){switch(t.kind){case`local-family`:return e===`local`||e===`transport-composed`;case`managed-local`:return e===`local`||e===`transport-composed`;case`provider-runtime`:return e===`provider-runtime`}}async function P(e,t,n,r,i){switch(e.kind){case`local-family`:{let t=await r(e.family);if(l(t.owner,e))return t;throw R(e)}case`managed-local`:return await i(e);case`provider-runtime`:{let r=t.get(s(e));if(r)return await n(r.module);throw R(e)}}}const F=Object.freeze({available:!1,reason:`unsupported-provider-mode`});function I(e,t){let n=c(e.provider,`default`);return C(t,n,w(F))}function L(e,t){return ie(t,c(e.provider,`default`),w(F))}function R(e){return new t(`UNSUPPORTED_OPERATION`,`The exact platform runtime owner is unavailable.`,{reason:`owner-unavailable`,owner:s(e)})}function z(e,n){return new t(`COMMAND_FAILED`,e,{reason:`runtime-contract-invalid`,...n?{cleanupError:n}:{}})}function B(e){let t=V(e.registry,e.loadHost),n=e.provider,r=n?async(e,r)=>{r.signal.throwIfAborted();let i=await n.discover(f(e),r.signal);return r.signal.throwIfAborted(),ge(i),i.kind===`inventory`?{devices:d(i.devices.map(e=>({...e})),e),source:`provider`}:{devices:await t.discover(e,r),source:`local`}}:async(e,n)=>({devices:await t.discover(e,n),source:`local`}),i=Object.freeze({discover:async(e,t)=>(await r(e,t)).devices,discoverWithSource:r});return Object.freeze({providerFirst:i,localOnly:t,findInstalledApp:async(e,t)=>{let{findIosSimulatorInstalledApp:n}=await import(`./app-resolution-facade.js`);return await n(e,t)}})}function V(e,t){let n,r=async()=>{n??=t();try{return await n}catch(e){throw n=void 0,e}},i=new Map,a=async t=>{let n=i.get(t);if(n)return await n;let a=H(e.get(t),r);i.set(t,a);try{return await a}catch(e){throw i.get(t)===a&&i.delete(t),e}};return Object.freeze({discover:async(e,t)=>{if(t.signal.throwIfAborted(),e.platform)return await W(a,G(e.platform),e,t);let n=await Promise.all(p.map(async n=>{try{let r=await W(a,G(n),{...e,platform:n},t);return Array.isArray(r)?r:[]}catch{return[]}}));return t.signal.throwIfAborted(),n.flat()}})}async function H(e,t){switch(e.family){case`apple`:return await e.loadInventory(U(await t()));case`android`:return await e.loadInventory(de(await t()));case`harmonyos`:return await e.loadInventory(fe(await t()));case`vega`:return await e.loadInventory(pe(await t()));case`linux`:return await e.loadInventory(me(await t()));case`web`:return await e.loadInventory()}}function U(e){return Object.freeze({appleTools:e.appleTools,files:e.files,hostName:e.hostName,hostOs:e.hostOs,observations:e.observations})}function de(e){return Object.freeze({commands:e.commands,files:e.files,homeDirectory:e.homeDirectory,toolchains:e.toolchains})}function fe(e){return Object.freeze({commands:e.commands,files:e.files,toolchains:e.toolchains})}function pe(e){return Object.freeze({commands:e.commands,files:e.files,homeDirectory:e.homeDirectory})}function me(e){return Object.freeze({hostName:e.hostName,hostOs:e.hostOs})}async function W(e,t,n,r){let i=await e(t);r.signal.throwIfAborted();let a=await i.discover(n,r);return r.signal.throwIfAborted(),he(t,a),d(a,n)}function G(e){return o(e)?`apple`:e}function he(e,n){let r=n.find(t=>t.platform!==e);if(r)throw new t(`COMMAND_FAILED`,`Platform inventory source ${e} returned a ${r.platform} device.`,{expectedFamily:e,actualFamily:r.platform,deviceId:r.id})}function ge(e){if(typeof e==`object`&&e){let t=e;if(t.kind===`declined`&&!(`devices`in t)||t.kind===`inventory`&&Array.isArray(t.devices))return}throw new t(`COMMAND_FAILED`,`Provider device inventory returned an invalid outcome.`,{reason:`provider_inventory_contract_violation`})}function _e(){return Object.freeze({async runAdb(e,t,n){let{runAndroidAdb:r}=await K(),i=await r(e,t,n);return{exitCode:i.exitCode,stdout:i.stdout,stderr:i.stderr}},async readSnapshotNodes(e){let{snapshotAndroid:t,androidSnapshotPublicationInput:n}=await K(),{buildSnapshotState:r}=await import(`./snapshot-state.js`).then(e=>e.n);return r(n(await t(e,{interactiveOnly:!1})),void 0).nodes},async openApp(e,t){let{openAndroidApp:n}=await K();await n(e,t)}})}async function K(){let{loadAndroidMechanics:e}=await import(`./platform-runtime-android-mechanics.js`).then(e=>e.n);return await e()}var ve=e({androidObservation:()=>J,createPlatformDeviceInventoryGateways:()=>X,createPlatformRuntimeGateway:()=>Q,createRequestPlatformProviders:()=>$,getAndroidAppStateWithAdb:()=>ye,platformModuleRegistry:()=>Y,platformRuntimeModules:()=>Z});async function ye(e,t){return await oe(e,t)}const q=ce({sdkRoots:Ce(process.env.ANDROID_SDK_ROOT,process.env.ANDROID_HOME)}),J=ae(_e()),be=Object.freeze({apple:async e=>await g(e),android:async e=>await le(e)}),xe=te({hdcSdkPath:process.env.HDC_SDK_PATH,devecoSdkHome:process.env.DEVECO_SDK_HOME,commandLineToolsHome:process.env.HARMONYOS_COMMAND_LINE_TOOLS}),Y=u([h,q,xe,v,re,S]);function X(e){return B({registry:Y,loadHost:async()=>{let{createDeviceInventoryHost:e}=await import(`./platform-runtime-host.js`);return e()},provider:e})}const Se=se({bindAdbHost:async()=>{await import(`./platform-runtime-android-adb-host.js`).then(e=>e.t)}}),Z=new Map([[`apple`,m],[`android`,Se],[`harmonyos`,ne],[`vega`,_],[`linux`,y],[`web`,x]]);function Q(e){return ue({modules:Z,loadHost:async()=>{let{createPlatformRuntimeHost:t,createSnapshotRuntimeHost:n,loadMacOsSurfaceSnapshot:r}=await import(`./platform-runtime-operation-host.js`);return t({sessionsDir:e.sessionsDir,resolveSessionArtifacts:e.resolveSessionArtifacts,shutdownLoaders:be,snapshot:n({linux:b,macos:r}),ownedProcesses:e.ownedProcesses})},providerRuntimes:e.providerRuntimes,providerModules:e.providerModules})}function $(e={}){let t,n=()=>(t??=import(`./request-providers.js`).then(({createComposedRequestPlatformProviders:t})=>t(e)),t);return Object.freeze({hasConfiguredResolvers:Object.values(e.providers??{}).some(Boolean),run:async(e,t)=>await(await n()).run(e,t)})}function Ce(...e){return e.flatMap(e=>{let t=e?.trim();return t?[t]:[]})}export{ve as a,$ as i,X as n,Q as r,J as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{C as e}from"./sdk-contracts.js";import{Xt as t,Zt as n}from"./sdk-batch.js";import{n as r,t as i}from"./application-lifecycle-runtime.js";import{i as a,n as o}from"./touch-runtime.js";import{A as s,B as c,D as ee,E as l,F as u,G as d,H as f,I as p,L as m,M as h,N as g,W as _,a as v,b as y,d as b,g as te,i as ne,k as re,s as ie,t as ae,v as oe,x as se}from"./alert-runtime.js";import{r as x}from"./platform-runtime-unavailable.js";import{r as ce,t as le}from"./capabilities.js";import{n as ue}from"./src7.js";import{r as de}from"./gesture-admission.js";import{n as fe}from"./interactor-operation-catalog.js";import{r as pe,t as me}from"./application-lifecycle-interaction.js";function he(e){return me({owner:`WebDriver`,openTargetIdentity:`bundle-id`,closeBeforeRelaunch:!0,binding:pe({device:e.device,signal:e.signal,resolveInteractor:t=>e.getInteractor(e.device,t)})})}const S=Object.freeze({available:!0}),C=Object.freeze({available:!1,reason:`unsupported-provider-mode`}),w=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`WebDriver provider runtimes do not expose screen recording.`}),T=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`Headless boot is unavailable for provider-owned devices.`}),E=Object.freeze({available:!1,reason:`owner-capability-missing`,hint:`WebDriver provider runtimes do not expose app inventory.`}),D=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`This WebDriver provider runtime does not expose app deployment.`}),O=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`Push notifications are unavailable for WebDriver provider-owned devices.`}),k=Object.freeze({available:!1,reason:`owner-capability-missing`,hint:`The WebDriver provider session is no longer active for this device.`}),A=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`This WebDriver provider runtime does not expose snapshot capture for this device.`}),j=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`This WebDriver provider runtime does not expose screenshot capture for this device.`}),M=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`WebDriver provider runtimes do not expose iOS simulator custom snapshot actions.`}),N=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`WebDriver provider runtimes do not expose viewport resizing.`}),P=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`This WebDriver provider runtime does not expose focus for this device.`}),F=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`This WebDriver provider runtime does not expose text entry for this device.`}),I=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`This WebDriver provider runtime does not expose gestures for this device.`}),L=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`This WebDriver provider runtime does not expose scrolling for this device.`}),R=Object.freeze({available:!1,reason:`unsupported-device-kind`,hint:de}),ge=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`WebDriver provider runtimes read element text from the captured tree only.`}),z=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`This WebDriver provider runtime does not expose back for this device.`}),B=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`This WebDriver provider runtime does not expose home for this device.`}),V=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`This WebDriver provider runtime does not expose orientation for this device.`}),H=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`WebDriver provider runtimes do not expose tv-remote.`}),_e=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`WebDriver provider runtimes do not expose keyboard actions.`}),U=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`This WebDriver provider runtime does not expose clipboard access for this device.`}),W=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`This WebDriver provider runtime does not expose the app switcher for this device.`}),G=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`WebDriver provider runtimes do not expose native alert handling.`}),K=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`WebDriver provider runtimes do not expose device settings.`}),q=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`This WebDriver provider runtime does not expose app-event delivery for this device.`}),ve=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`WebDriver provider runtimes do not expose a foreground app-state operation.`}),J=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`This WebDriver provider runtime does not expose the audio probe.`}),ye=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`Apple runner preparation is unavailable for WebDriver-owned devices.`}),be=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`WebDriver open is supported only for its owned iOS or Android mobile-device sessions.`}),xe=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`WebDriver close is supported only for its owned iOS or Android mobile-device sessions.`}),Y=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`Runtime hints are not applied to provider-owned devices.`}),Se=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`WebDriver provider runtimes do not expose port reverse.`});function Ce(e){let t=e.platform===`android`&&e.kind===`device`&&e.target===`mobile`||e.platform===`apple`&&e.kind===`device`&&e.target===`mobile`&&e.appleOs===`ios`,n=t?S:be,r=t?S:xe;return i({resolveOpenTarget:n,prepareApplicationOpen:n,openApplication:n,applyRuntimeHints:Y,clearRuntimeHints:Y,closeApplication:r,finalizeApplicationClose:r,prepareAppleRunner:ye,configureProviderPortReverse:Se})}function X(n){return Object.freeze({owner:n.owner,ownsDevice:n.ownsDevice,inspectFacts:async e=>Q(n,e),bind:async r=>{if(r.intent.kind===`exact-owner`&&!t(r.intent.owner,n.owner))throw new e(`UNSUPPORTED_OPERATION`,`WebDriver runtime owner identity does not match`);if(!n.ownsDevice(r.device))throw new e(`UNSUPPORTED_PLATFORM`,`WebDriver runtime does not own this device`);if(!$(n,r.device))throw new e(`UNSUPPORTED_OPERATION`,`The WebDriver provider session is no longer active for this device.`);return Te(n,r.device,r.scope.signal)},shutdown:async()=>void 0})}function we(e,t,r,i){let a={device:t,signal:r,resolveInteractor:n=>e.getInteractor?.(t,n),presentIosAcquisition:e.host.snapshot.presentIosAcquisition};return{...i.operations.captureSnapshot.available?c(a):{},...i.operations.captureScreenshot.available?_(a):{},...i.operations.focusPoint.available?u(a):{},...i.operations.typeText.available?l(a):{},...h({...a,facts:i.operations}),...i.operations.scrollDirection.available?re(a):{},...fe({...a,facts:i.operations}),...n(i.operations.tapPoint,()=>o({...a,facts:i.operations,pause:async t=>await e.host.clock.sleep(t,r)}))}}function Te(e,t,n){let i=t.platform===`apple`?`ios-device`:`android`,a=Q(e,t),o=a.operations.deployApp,s=Object.freeze({ensureReady:async()=>({...t,booted:!0}),bootTarget:async()=>({...t,booted:!0}),...r(he({device:t,signal:n,getInteractor:(t,n)=>e.getInteractor?.(t,n)}),a.operations),...we(e,t,n,a),networkDump:async t=>{let n=await e.host.appLogs.readRecent(t.sessionId,t.maxScanLines),{dump:r}=ue(n.text,{...t,path:n.path,exists:n.exists,lineNumberOffset:n.skippedLines,backend:i});return Object.freeze({source:`app-log`,backend:i,dump:r,notes:Object.freeze(r.entries.length===0?[`No HTTP(s) entries were found in recent session app logs.`]:[])})},...o.available&&e.deployment?{deployApp:async r=>await e.deployment.deployApp(t,r,n),materializeAppSource:async r=>await ke(e.host,t,r,n),deployMaterializedApp:async r=>await e.deployment.deployMaterializedApp(t,r,n)}:{}});return Object.freeze({device:t,owner:e.owner,facts:a,operations:s,[Symbol.asyncDispose]:async()=>void 0})}function Z(e,t){return e?S:t}function Ee(e){return e.reachable?le(e.capabilities,e.operation)?S:Object.freeze({available:!1,reason:`owner-capability-missing`,hint:ce(e.capabilities,e.operation)}):e.whenUnreachable}function Q(e,t){if(!$(e,t))return x(t,e.owner,{appLog:k,appDeployment:k,network:k,screenRecording:k,screenshot:k,viewport:k,focus:k,gesture:k,scroll:k,typeText:k,touch:k,elementText:k,back:k,home:k,orientation:k,tvRemote:k,keyboard:k,clipboard:k,appSwitcher:k,triggerAppEvent:k,setSetting:k,readAlert:k,awaitAlert:k,acceptAlert:k,dismissAlert:k,audioProbeCapture:k,audioProbeQuery:k,perf:k,lifecycle:i({resolveOpenTarget:k,prepareApplicationOpen:k,openApplication:k,applyRuntimeHints:k,clearRuntimeHints:k,closeApplication:k,finalizeApplicationClose:k,prepareAppleRunner:k,configureProviderPortReverse:k})});let n=e.deployment?.fact(t)??D,r=x(t,e.owner,{appLog:C,appDeployment:D,network:C,screenRecording:w,screenshot:j,viewport:N,focus:P,gesture:I,scroll:L,typeText:F,touch:F,elementText:ge,back:z,home:B,orientation:V,tvRemote:H,keyboard:_e,clipboard:U,appSwitcher:W,triggerAppEvent:q,setSetting:K,readAlert:G,awaitAlert:G,acceptAlert:G,dismissAlert:G,audioProbeCapture:J,audioProbeQuery:J,perf:J,lifecycle:Ce(t)}),o=e.getInteractor!==void 0&&Oe(t),c=o&&e.snapshotAvailable!==!1?S:A,l=o&&e.screenshotAvailable!==!1?S:j,u=(t,n)=>Ee({reachable:o,capabilities:e.capabilities,operation:t,whenUnreachable:n});return Object.freeze({device:r.device,operations:{...r.operations,deployApp:n,materializeAppSource:n,deployMaterializedApp:n,sendPushNotification:O,appState:ve,networkDump:S,...f({capture:c,customActions:M,withoutActiveApp:c}),...d({capture:l}),...p({focus:Z(o,P)}),...ee({type:u(`type`,F)}),...a({unsupported:P,tap:u(`tap`,P),longPress:u(`longPress`,P),fill:u(`fill`,F),fillRef:F}),...g({unsupported:I,plan:Z(o,I),directionalFling:Z(o,I),multiTouch:De(t,o),targetAuthoredDrag:Z(o,I),viewport:Z(o,I)}),...s({scroll:u(`scroll`,L)}),...se({back:u(`back`,z)}),...y({home:u(`home`,B)}),...oe({orientation:u(`orientation`,V)}),...te({tvRemote:H}),...b({unsupported:U,read:u(`clipboard.read`,U),write:u(`clipboard.write`,U)}),...ie({appSwitcher:u(`appSwitcher`,W)}),...v({triggerAppEvent:Z(o,q)}),...ne({setSetting:K}),...ae({read:G,wait:G,accept:G,dismiss:G}),...m({setViewport:N}),ensureReady:S,bootTarget:S,bootTargetHeadless:T,listApps:E,shutdownTarget:{available:!1,reason:`unsupported-provider-mode`,hint:`WebDriver owns the target lifecycle for provider-owned devices.`}}})}function De(e,t){return t?e.platform===`apple`?R:S:I}function Oe(e){return e.kind===`device`&&e.target===`mobile`&&(e.platform===`android`||e.platform===`apple`&&e.appleOs===`ios`)}function $(e,t){return e.isSessionActive?.(t)??e.ownsDevice(t)}async function ke(e,t,n,r){return t.platform===`apple`?await e.appleDeployment.prepareArtifact(n,{signal:r}):await e.androidDeployment.prepareArtifact(n,{signal:r})}export{X as createWebDriverPlatformRuntimeOwner};
|
|
1
|
+
import{D as e}from"./sdk-contracts.js";import{Qt as t,Zt as n}from"./sdk-batch.js";import{n as r,t as i}from"./application-lifecycle-runtime.js";import{i as a,n as o}from"./touch-runtime.js";import{A as s,B as c,D as ee,E as l,F as u,G as te,H as d,I as f,L as p,M as m,N as h,W as g,a as _,b as v,d as y,g as ne,i as re,k as ie,s as ae,t as oe,v as se,x as ce}from"./alert-runtime.js";import{r as b}from"./platform-runtime-unavailable.js";import{r as le,t as ue}from"./capabilities.js";import{n as de}from"./src7.js";import{r as fe}from"./gesture-admission.js";import{n as pe}from"./interactor-operation-catalog.js";import{r as me,t as he}from"./application-lifecycle-interaction.js";function ge(e){return he({owner:`WebDriver`,openTargetIdentity:`bundle-id`,closeBeforeRelaunch:!0,binding:me({device:e.device,signal:e.signal,resolveInteractor:t=>e.getInteractor(e.device,t)})})}const x=Object.freeze({available:!0}),S=Object.freeze({available:!1,reason:`unsupported-provider-mode`}),C=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`WebDriver provider runtimes do not expose screen recording.`}),w=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`Headless boot is unavailable for provider-owned devices.`}),T=Object.freeze({available:!1,reason:`owner-capability-missing`,hint:`WebDriver provider runtimes do not expose app inventory.`}),E=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`This WebDriver provider runtime does not expose app deployment.`}),D=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`Push notifications are unavailable for WebDriver provider-owned devices.`}),O=Object.freeze({available:!1,reason:`owner-capability-missing`,hint:`The WebDriver provider session is no longer active for this device.`}),k=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`This WebDriver provider runtime does not expose snapshot capture for this device.`}),A=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`This WebDriver provider runtime does not expose screenshot capture for this device.`}),j=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`WebDriver provider runtimes do not expose iOS simulator custom snapshot actions.`}),M=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`WebDriver provider runtimes do not expose viewport resizing.`}),N=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`This WebDriver provider runtime does not expose focus for this device.`}),P=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`This WebDriver provider runtime does not expose text entry for this device.`}),F=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`This WebDriver provider runtime does not expose gestures for this device.`}),I=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`This WebDriver provider runtime does not expose scrolling for this device.`}),L=Object.freeze({available:!1,reason:`unsupported-device-kind`,hint:fe}),_e=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`WebDriver provider runtimes read element text from the captured tree only.`}),R=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`This WebDriver provider runtime does not expose back for this device.`}),z=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`This WebDriver provider runtime does not expose home for this device.`}),B=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`This WebDriver provider runtime does not expose orientation for this device.`}),V=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`WebDriver provider runtimes do not expose tv-remote.`}),ve=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`WebDriver provider runtimes do not expose keyboard actions.`}),H=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`This WebDriver provider runtime does not expose clipboard access for this device.`}),U=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`This WebDriver provider runtime does not expose the app switcher for this device.`}),W=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`action-button presses iPhone Action Button hardware, which no WebDriver backend exposes.`}),G=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`WebDriver provider runtimes do not expose native alert handling.`}),K=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`WebDriver provider runtimes do not expose device settings.`}),q=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`This WebDriver provider runtime does not expose app-event delivery for this device.`}),ye=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`WebDriver provider runtimes do not expose a foreground app-state operation.`}),J=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`This WebDriver provider runtime does not expose the audio probe.`}),be=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`Apple runner preparation is unavailable for WebDriver-owned devices.`}),xe=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`WebDriver open is supported only for its owned iOS or Android mobile-device sessions.`}),Se=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`WebDriver close is supported only for its owned iOS or Android mobile-device sessions.`}),Y=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`Runtime hints are not applied to provider-owned devices.`}),Ce=Object.freeze({available:!1,reason:`unsupported-provider-mode`,hint:`WebDriver provider runtimes do not expose port reverse.`});function X(e){let t=e.platform===`android`&&e.kind===`device`&&e.target===`mobile`||e.platform===`apple`&&e.kind===`device`&&e.target===`mobile`&&e.appleOs===`ios`,n=t?x:xe,r=t?x:Se;return i({resolveOpenTarget:n,prepareApplicationOpen:n,openApplication:n,applyRuntimeHints:Y,clearRuntimeHints:Y,closeApplication:r,finalizeApplicationClose:r,prepareAppleRunner:be,configureProviderPortReverse:Ce})}function we(t){return Object.freeze({owner:t.owner,ownsDevice:t.ownsDevice,inspectFacts:async e=>Q(t,e),bind:async r=>{if(r.intent.kind===`exact-owner`&&!n(r.intent.owner,t.owner))throw new e(`UNSUPPORTED_OPERATION`,`WebDriver runtime owner identity does not match`);if(!t.ownsDevice(r.device))throw new e(`UNSUPPORTED_PLATFORM`,`WebDriver runtime does not own this device`);if(!$(t,r.device))throw new e(`UNSUPPORTED_OPERATION`,`The WebDriver provider session is no longer active for this device.`);return Ee(t,r.device,r.scope.signal)},shutdown:async()=>void 0})}function Te(e,n,r,i){let a={device:n,signal:r,resolveInteractor:t=>e.getInteractor?.(n,t),presentIosAcquisition:e.host.snapshot.presentIosAcquisition};return{...i.operations.captureSnapshot.available?c(a):{},...i.operations.captureScreenshot.available?g(a):{},...i.operations.focusPoint.available?u(a):{},...i.operations.typeText.available?l(a):{},...m({...a,facts:i.operations}),...i.operations.scrollDirection.available?ie(a):{},...pe({...a,facts:i.operations}),...t(i.operations.tapPoint,()=>o({...a,facts:i.operations,pause:async t=>await e.host.clock.sleep(t,r)}))}}function Ee(e,t,n){let i=t.platform===`apple`?`ios-device`:`android`,a=Q(e,t),o=a.operations.deployApp,s=Object.freeze({ensureReady:async()=>({...t,booted:!0}),bootTarget:async()=>({...t,booted:!0}),...r(ge({device:t,signal:n,getInteractor:(t,n)=>e.getInteractor?.(t,n)}),a.operations),...Te(e,t,n,a),networkDump:async t=>{let n=await e.host.appLogs.readRecent(t.sessionId,t.maxScanLines),{dump:r}=de(n.text,{...t,path:n.path,exists:n.exists,lineNumberOffset:n.skippedLines,backend:i});return Object.freeze({source:`app-log`,backend:i,dump:r,notes:Object.freeze(r.entries.length===0?[`No HTTP(s) entries were found in recent session app logs.`]:[])})},...o.available&&e.deployment?{deployApp:async r=>await e.deployment.deployApp(t,r,n),materializeAppSource:async r=>await Ae(e.host,t,r,n),deployMaterializedApp:async r=>await e.deployment.deployMaterializedApp(t,r,n)}:{}});return Object.freeze({device:t,owner:e.owner,facts:a,operations:s,[Symbol.asyncDispose]:async()=>void 0})}function Z(e,t){return e?x:t}function De(e){return e.reachable?ue(e.capabilities,e.operation)?x:Object.freeze({available:!1,reason:`owner-capability-missing`,hint:le(e.capabilities,e.operation)}):e.whenUnreachable}function Q(e,t){if(!$(e,t))return b(t,e.owner,{appLog:O,appDeployment:O,network:O,screenRecording:O,screenshot:O,viewport:O,focus:O,gesture:O,scroll:O,typeText:O,touch:O,elementText:O,back:O,home:O,orientation:O,tvRemote:O,keyboard:O,clipboard:O,appSwitcher:O,actionButton:W,triggerAppEvent:O,setSetting:O,readAlert:O,awaitAlert:O,acceptAlert:O,dismissAlert:O,audioProbeCapture:O,audioProbeQuery:O,perf:O,lifecycle:i({resolveOpenTarget:O,prepareApplicationOpen:O,openApplication:O,applyRuntimeHints:O,clearRuntimeHints:O,closeApplication:O,finalizeApplicationClose:O,prepareAppleRunner:O,configureProviderPortReverse:O})});let n=e.deployment?.fact(t)??E,r=b(t,e.owner,{appLog:S,appDeployment:E,network:S,screenRecording:C,screenshot:A,viewport:M,focus:N,gesture:F,scroll:I,typeText:P,touch:P,elementText:_e,back:R,home:z,orientation:B,tvRemote:V,keyboard:ve,clipboard:H,appSwitcher:U,actionButton:W,triggerAppEvent:q,setSetting:K,readAlert:G,awaitAlert:G,acceptAlert:G,dismissAlert:G,audioProbeCapture:J,audioProbeQuery:J,perf:J,lifecycle:X(t)}),o=e.getInteractor!==void 0&&ke(t),c=o&&e.snapshotAvailable!==!1?x:k,l=o&&e.screenshotAvailable!==!1?x:A,u=(t,n)=>De({reachable:o,capabilities:e.capabilities,operation:t,whenUnreachable:n});return Object.freeze({device:r.device,operations:{...r.operations,deployApp:n,materializeAppSource:n,deployMaterializedApp:n,sendPushNotification:D,appState:ye,networkDump:x,...d({capture:c,customActions:j,withoutActiveApp:c}),...te({capture:l}),...f({focus:Z(o,N)}),...ee({type:u(`type`,P)}),...a({unsupported:N,tap:u(`tap`,N),longPress:u(`longPress`,N),fill:u(`fill`,P),fillRef:P}),...h({unsupported:F,plan:Z(o,F),directionalFling:Z(o,F),multiTouch:Oe(t,o),targetAuthoredDrag:Z(o,F),viewport:Z(o,F)}),...s({scroll:u(`scroll`,I)}),...ce({back:u(`back`,R)}),...v({home:u(`home`,z)}),...se({orientation:u(`orientation`,B)}),...ne({tvRemote:V}),...y({unsupported:H,read:u(`clipboard.read`,H),write:u(`clipboard.write`,H)}),...ae({appSwitcher:u(`appSwitcher`,U)}),actionButton:W,..._({triggerAppEvent:Z(o,q)}),...re({setSetting:K}),...oe({read:G,wait:G,accept:G,dismiss:G}),...p({setViewport:M}),ensureReady:x,bootTarget:x,bootTargetHeadless:w,listApps:T,shutdownTarget:{available:!1,reason:`unsupported-provider-mode`,hint:`WebDriver owns the target lifecycle for provider-owned devices.`}}})}function Oe(e,t){return t?e.platform===`apple`?L:x:F}function ke(e){return e.kind===`device`&&e.target===`mobile`&&(e.platform===`android`||e.platform===`apple`&&e.appleOs===`ios`)}function $(e,t){return e.isSessionActive?.(t)??e.ownsDevice(t)}async function Ae(e,t,n,r){return t.platform===`apple`?await e.appleDeployment.prepareArtifact(n,{signal:r}):await e.androidDeployment.prepareArtifact(n,{signal:r})}export{we as createWebDriverPlatformRuntimeOwner};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime.js";import{
|
|
1
|
+
import{r as e}from"./rolldown-runtime.js";import{D as t}from"./sdk-contracts.js";import{r as n,t as r}from"./png.js";import i from"node:zlib";const a=Uint8Array.from([137,80,78,71,13,10,26,10]),o=Buffer.from(`IHDR`,`ascii`),s=Buffer.from(`IDAT`,`ascii`),c=Buffer.from(`IEND`,`ascii`),l=new Uint8Array;function u(e,t,n,r){let i=Buffer.alloc(13);return i.writeUInt32BE(t,0),i.writeUInt32BE(n,4),i[8]=8,i[9]=r===3?2:6,Buffer.concat([a,f(o,i),f(s,d(e,t,n,r)),f(c,l)])}function d(e,t,n,r){let a=t*r,o=new Uint8Array(n*(a+1));for(let t=0;t<n;t+=1){let n=t*(a+1)+1;o.set(e.subarray(t*a,(t+1)*a),n)}return i.deflateSync(o,{level:6})}function f(e,t){let n=Buffer.allocUnsafe(12+t.length);return n.writeUInt32BE(t.length,0),n.set(e,4),n.set(t,8),n.writeUInt32BE(i.crc32(t,i.crc32(e))>>>0,8+t.length),n}const p=[137,80,78,71,13,10,26,10],m=[`IHDR`,`PLTE`,`IDAT`,`IEND`],h=/^[A-Za-z]{4}$/;function g(e){return!h.test(e)||e[0]<=`Z`&&!m.includes(e)}function _(e){return p.every((t,n)=>e[n]===t)}function v(e){if(e.length<33||!_(e))return null;let t=Buffer.from(e.buffer,e.byteOffset,e.byteLength);if(t.readUInt32BE(8)!==13||t.toString(`ascii`,12,16)!==`IHDR`)return null;let n=t.subarray(12,29);return t.readUInt32BE(29)===i.crc32(n)>>>0?{width:t.readUInt32BE(16),height:t.readUInt32BE(20),bitDepth:e[24],colorType:e[25],compressionMethod:e[26],filterMethod:e[27],interlace:e[28]}:null}function y(e){return e===2?3:e===6?4:null}function b(e){if(!_(e))return null;let t=Buffer.from(e.buffer,e.byteOffset,e.byteLength),n=[],r=8;for(;r+12<=e.length;){let a=t.readUInt32BE(r);if(a>2147483647||r+12+a>e.length)return null;let o=t.subarray(r+4,r+8+a);if(t.readUInt32BE(r+8+a)!==i.crc32(o)>>>0)return null;let s=t.toString(`ascii`,r+4,r+8);if(g(s))return null;if(n.push({type:s,data:t.subarray(r+8,r+8+a)}),s===`IEND`)return r+12+a===e.length?n:null;r+=12+a}return null}const x=[0,1,2,3,4];function S(e,t,n,r){switch(e){case 1:return t;case 2:return n;case 3:return t+n>>1;case 4:return C(t,n,r);default:return 0}}function C(e,t,n){let r=e+t-n,i=Math.abs(r-e),a=Math.abs(r-t),o=Math.abs(r-n);return i<=a&&i<=o?e:a<=o?t:n}function w(e,t){return e+t&255}function T(e){let t=v(e);return t===null||t.bitDepth!==8||t.compressionMethod!==0||t.filterMethod!==0||t.interlace!==0||y(t.colorType)===null?null:t}function E(e,t,n){let r=y(t.colorType);if(r===null)return null;let i=P(e);if(i===null)return null;let a=t.width*r,o=t.height*(a+1),s=N(i,o);if(s===null||s.length<o)return null;for(let e=0;e<n.y+n.height;e+=1)if(!D(s,e,a,r))return null;if(!A(s,n.y+n.height,t.height,a))return null;let c=r===4&&!j(s,n,a)?4:3;return{width:n.width,height:n.height,channels:c,pixels:M(s,n,a,r,c)}}function D(e,t,n,r){let i=t*(n+1)+1,a=e[i-1];return x.includes(a)?a===0?!0:t===0?O(e,i,n,r,a):k(e,i,n,r,a):!1}function O(e,t,n,r,i){let a=t+n;if(i===1||i===4){for(let n=t+r;n<a;n+=1)e[n]=w(e[n],e[n-r]);return!0}for(let n=t;n<a;n+=1){let a=n>=t+r?e[n-r]:0;e[n]=w(e[n],S(i,a,0,0))}return!0}function k(e,t,n,r,i){let a=t+n,o=t-(n+1);if(i===1){for(let n=t+r;n<a;n+=1)e[n]=w(e[n],e[n-r]);return!0}if(i===2){for(let n=t;n<a;n+=1)e[n]=w(e[n],e[o+(n-t)]);return!0}for(let n=t;n<a;n+=1){let a=n-t,s=n>=t+r?e[n-r]:0;e[n]=w(e[n],S(i,s,e[o+a],n>=t+r?e[o+a-r]:0))}return!0}function A(e,t,n,r){for(let i=t;i<n;i+=1)if(!x.includes(e[i*(r+1)]))return!1;return!0}function j(e,t,n){let r=255;for(let i=t.y;i<t.y+t.height&&r===255;i+=1){let a=i*(n+1)+4;for(let n=0;n<t.width;n+=1)r&=e[a+(t.x+n)*4]}return r===255}function M(e,t,n,r,i){let a=t.width*i,o=new Uint8Array(t.height*a);for(let s=0;s<t.height;s+=1){let c=(s+t.y)*(n+1)+1+t.x*r,l=s*a;if(r===i)o.set(e.subarray(c,c+t.width*r),l);else for(let n=0;n<t.width;n+=1){let t=c+n*r,a=l+n*i;o[a]=e[t],o[a+1]=e[t+1],o[a+2]=e[t+2]}}return o}function N(e,t){try{return i.inflateSync(e,{maxOutputLength:t})}catch{return null}}function P(e){let t=b(e);if(t===null)return null;let n=[];for(let e of t){if(e.type===`PLTE`||e.type===`tRNS`)return null;e.type===`IDAT`&&n.push(e.data)}return n.length===0?null:Buffer.concat(n)}var F=e({cropPngBytes:()=>I});function I(e,t,n){let r=T(e);if(r!==null&&!B(t,r.width,r.height)){z(t,r.width,r.height);let n=E(e,r,t);if(n!==null)return u(n.pixels,n.width,n.height,n.channels)}return L(e,t,n)}function L(e,t,i){let a=r(e,i);return z(t,a.width,a.height),B(t,a.width,a.height)?null:n.PNG.sync.write(R(a,t))}function R(e,t){let r=new n.PNG({width:t.width,height:t.height});for(let n=0;n<t.height;n+=1){let i=((n+t.y)*e.width+t.x)*4;e.data.copy(r.data,n*r.width*4,i,i+t.width*4)}return r}function z(e,n,r){if(e.x+e.width>n||e.y+e.height>r)throw new t(`INVALID_ARGS`,`Screenshot crop box ${e.width}x${e.height} at (${e.x}, ${e.y}) exceeds the ${n}x${r} image`)}function B(e,t,n){return e.x===0&&e.y===0&&e.width===t&&e.height===n}export{F as n,I as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./rolldown-runtime.js";import{D as t}from"./sdk-contracts.js";import{n,r}from"./png.js";var i=e(((e,t)=>{function n(e){var n=Math.floor,r=Array(64),i=Array(64),a=Array(64),o=Array(64),s,c,l,u,d=Array(65535),f=Array(65535),p=Array(64),m=Array(64),h=[],g=0,_=7,v=Array(64),y=Array(64),b=Array(64),x=Array(256),S=Array(2048),C,w=[0,1,5,6,14,15,27,28,2,4,7,13,16,26,29,42,3,8,12,17,25,30,41,43,9,11,18,24,31,40,44,53,10,19,23,32,39,45,52,54,20,22,33,38,46,51,55,60,21,34,37,47,50,56,59,61,35,36,48,49,57,58,62,63],T=[0,0,1,5,1,1,1,1,1,1,0,0,0,0,0,0,0],E=[0,1,2,3,4,5,6,7,8,9,10,11],D=[0,0,2,1,3,3,2,4,3,5,5,4,4,0,0,1,125],O=[1,2,3,0,4,17,5,18,33,49,65,6,19,81,97,7,34,113,20,50,129,145,161,8,35,66,177,193,21,82,209,240,36,51,98,114,130,9,10,22,23,24,25,26,37,38,39,40,41,42,52,53,54,55,56,57,58,67,68,69,70,71,72,73,74,83,84,85,86,87,88,89,90,99,100,101,102,103,104,105,106,115,116,117,118,119,120,121,122,131,132,133,134,135,136,137,138,146,147,148,149,150,151,152,153,154,162,163,164,165,166,167,168,169,170,178,179,180,181,182,183,184,185,186,194,195,196,197,198,199,200,201,202,210,211,212,213,214,215,216,217,218,225,226,227,228,229,230,231,232,233,234,241,242,243,244,245,246,247,248,249,250],k=[0,0,3,1,1,1,1,1,1,1,1,1,0,0,0,0,0],A=[0,1,2,3,4,5,6,7,8,9,10,11],j=[0,0,2,1,2,4,4,3,4,7,5,4,4,0,1,2,119],M=[0,1,2,3,17,4,5,33,49,6,18,65,81,7,97,113,19,34,50,129,8,20,66,145,161,177,193,9,35,51,82,240,21,98,114,209,10,22,36,52,225,37,241,23,24,25,26,38,39,40,41,42,53,54,55,56,57,58,67,68,69,70,71,72,73,74,83,84,85,86,87,88,89,90,99,100,101,102,103,104,105,106,115,116,117,118,119,120,121,122,130,131,132,133,134,135,136,137,138,146,147,148,149,150,151,152,153,154,162,163,164,165,166,167,168,169,170,178,179,180,181,182,183,184,185,186,194,195,196,197,198,199,200,201,202,210,211,212,213,214,215,216,217,218,226,227,228,229,230,231,232,233,234,242,243,244,245,246,247,248,249,250];function N(e){for(var t=[16,11,10,16,24,40,51,61,12,12,14,19,26,58,60,55,14,13,16,24,40,57,69,56,14,17,22,29,51,87,80,62,18,22,37,56,68,109,103,77,24,35,55,64,81,104,113,92,49,64,78,87,103,121,120,101,72,92,95,98,112,100,103,99],s=0;s<64;s++){var c=n((t[s]*e+50)/100);c<1?c=1:c>255&&(c=255),r[w[s]]=c}for(var l=[17,18,24,47,99,99,99,99,18,21,26,66,99,99,99,99,24,26,56,99,99,99,99,99,47,66,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99],u=0;u<64;u++){var d=n((l[u]*e+50)/100);d<1?d=1:d>255&&(d=255),i[w[u]]=d}for(var f=[1,1.387039845,1.306562965,1.175875602,1,.785694958,.5411961,.275899379],p=0,m=0;m<8;m++)for(var h=0;h<8;h++)a[p]=1/(r[w[p]]*f[m]*f[h]*8),o[p]=1/(i[w[p]]*f[m]*f[h]*8),p++}function P(e,t){for(var n=0,r=0,i=[],a=1;a<=16;a++){for(var o=1;o<=e[a];o++)i[t[r]]=[],i[t[r]][0]=n,i[t[r]][1]=a,r++,n++;n*=2}return i}function F(){s=P(T,E),c=P(k,A),l=P(D,O),u=P(j,M)}function I(){for(var e=1,t=2,n=1;n<=15;n++){for(var r=e;r<t;r++)f[32767+r]=n,d[32767+r]=[],d[32767+r][1]=n,d[32767+r][0]=r;for(var i=-(t-1);i<=-e;i++)f[32767+i]=n,d[32767+i]=[],d[32767+i][1]=n,d[32767+i][0]=t-1+i;e<<=1,t<<=1}}function L(){for(var e=0;e<256;e++)S[e]=19595*e,S[e+256>>0]=38470*e,S[e+512>>0]=7471*e+32768,S[e+768>>0]=-11059*e,S[e+1024>>0]=-21709*e,S[e+1280>>0]=32768*e+8421375,S[e+1536>>0]=-27439*e,S[e+1792>>0]=-5329*e}function R(e){for(var t=e[0],n=e[1]-1;n>=0;)t&1<<n&&(g|=1<<_),n--,_--,_<0&&(g==255?(z(255),z(0)):z(g),_=7,g=0)}function z(e){h.push(e)}function B(e){z(e>>8&255),z(e&255)}function V(e,t){var n,r,i,a,o,s,c,l,u=0,d,f=8,m=64;for(d=0;d<f;++d){n=e[u],r=e[u+1],i=e[u+2],a=e[u+3],o=e[u+4],s=e[u+5],c=e[u+6],l=e[u+7];var h=n+l,g=n-l,_=r+c,v=r-c,y=i+s,b=i-s,x=a+o,S=a-o,C=h+x,w=h-x,T=_+y,E=_-y;e[u]=C+T,e[u+4]=C-T;var D=(E+w)*.707106781;e[u+2]=w+D,e[u+6]=w-D,C=S+b,T=b+v,E=v+g;var O=(C-E)*.382683433,k=.5411961*C+O,A=1.306562965*E+O,j=T*.707106781,M=g+j,N=g-j;e[u+5]=N+k,e[u+3]=N-k,e[u+1]=M+A,e[u+7]=M-A,u+=8}for(u=0,d=0;d<f;++d){n=e[u],r=e[u+8],i=e[u+16],a=e[u+24],o=e[u+32],s=e[u+40],c=e[u+48],l=e[u+56];var P=n+l,F=n-l,I=r+c,L=r-c,R=i+s,z=i-s,B=a+o,V=a-o,H=P+B,U=P-B,W=I+R,G=I-R;e[u]=H+W,e[u+32]=H-W;var K=(G+U)*.707106781;e[u+16]=U+K,e[u+48]=U-K,H=V+z,W=z+L,G=L+F;var q=(H-G)*.382683433,J=.5411961*H+q,Y=1.306562965*G+q,X=W*.707106781,Z=F+X,Q=F-X;e[u+40]=Q+J,e[u+24]=Q-J,e[u+8]=Z+Y,e[u+56]=Z-Y,u++}var $;for(d=0;d<m;++d)$=e[d]*t[d],p[d]=$>0?$+.5|0:$-.5|0;return p}function H(){B(65504),B(16),z(74),z(70),z(73),z(70),z(0),z(1),z(1),z(0),B(1),B(1),z(0),z(0)}function U(e){if(e){B(65505),e[0]===69&&e[1]===120&&e[2]===105&&e[3]===102?B(e.length+2):(B(e.length+5+2),z(69),z(120),z(105),z(102),z(0));for(var t=0;t<e.length;t++)z(e[t])}}function W(e,t){B(65472),B(17),z(8),B(t),B(e),z(3),z(1),z(17),z(0),z(2),z(17),z(1),z(3),z(17),z(1)}function G(){B(65499),B(132),z(0);for(var e=0;e<64;e++)z(r[e]);z(1);for(var t=0;t<64;t++)z(i[t])}function K(){B(65476),B(418),z(0);for(var e=0;e<16;e++)z(T[e+1]);for(var t=0;t<=11;t++)z(E[t]);z(16);for(var n=0;n<16;n++)z(D[n+1]);for(var r=0;r<=161;r++)z(O[r]);z(1);for(var i=0;i<16;i++)z(k[i+1]);for(var a=0;a<=11;a++)z(A[a]);z(17);for(var o=0;o<16;o++)z(j[o+1]);for(var s=0;s<=161;s++)z(M[s])}function q(e){e!==void 0&&e.constructor===Array&&e.forEach(e=>{if(typeof e==`string`){B(65534);var t=e.length;B(t+2);var n;for(n=0;n<t;n++)z(e.charCodeAt(n))}})}function J(){B(65498),B(12),z(3),z(1),z(0),z(2),z(17),z(3),z(17),z(0),z(63),z(0)}function Y(e,t,n,r,i){for(var a=i[0],o=i[240],s,c=16,l=63,u=64,p=V(e,t),h=0;h<u;++h)m[w[h]]=p[h];var g=m[0]-n;n=m[0],g==0?R(r[0]):(s=32767+g,R(r[f[s]]),R(d[s]));for(var _=63;_>0&&m[_]==0;_--);if(_==0)return R(a),n;for(var v=1,y;v<=_;){for(var b=v;m[v]==0&&v<=_;++v);var x=v-b;if(x>=c){y=x>>4;for(var S=1;S<=y;++S)R(o);x&=15}s=32767+m[v],R(i[(x<<4)+f[s]]),R(d[s]),v++}return _!=l&&R(a),n}function X(){for(var e=String.fromCharCode,t=0;t<256;t++)x[t]=e(t)}this.encode=function(e,n){new Date().getTime(),n&&Z(n),h=[],g=0,_=7,B(65496),H(),q(e.comments),U(e.exifBuffer),G(),W(e.width,e.height),K(),J();var r=0,i=0,d=0;g=0,_=7,this.encode.displayName=`_encode_`;var f=e.data,p=e.width,m=e.height,x=p*4;p*3;for(var C,w=0,T,E,D,O,k,A,j,M;w<m;){for(C=0;C<x;){for(O=x*w+C,k=O,A=-1,j=0,M=0;M<64;M++)j=M>>3,A=(M&7)*4,k=O+j*x+A,w+j>=m&&(k-=x*(w+1+j-m)),C+A>=x&&(k-=C+A-x+4),T=f[k++],E=f[k++],D=f[k++],v[M]=(S[T]+S[E+256>>0]+S[D+512>>0]>>16)-128,y[M]=(S[T+768>>0]+S[E+1024>>0]+S[D+1280>>0]>>16)-128,b[M]=(S[T+1280>>0]+S[E+1536>>0]+S[D+1792>>0]>>16)-128;r=Y(v,a,r,s,l),i=Y(y,o,i,c,u),d=Y(b,o,d,c,u),C+=32}w+=8}if(_>=0){var N=[];N[1]=_+1,N[0]=(1<<_+1)-1,R(N)}return B(65497),t===void 0?new Uint8Array(h):Buffer.from(h)};function Z(e){if(e<=0&&(e=1),e>100&&(e=100),C!=e){var t=0;t=Math.floor(e<50?5e3/e:200-e*2),N(t),C=e}}function Q(){var t=new Date().getTime();e||=50,X(),F(),I(),L(),Z(e),new Date().getTime()-t}Q()}t===void 0?typeof window<`u`&&(window[`jpeg-js`]=window[`jpeg-js`]||{},window[`jpeg-js`].encode=r):t.exports=r;function r(e,t){return t===void 0&&(t=50),{data:new n(t).encode(e,t),width:e.width,height:e.height}}})),a=e(((e,t)=>{var n=(function(){var e=new Int32Array([0,1,8,16,9,2,3,10,17,24,32,25,18,11,4,5,12,19,26,33,40,48,41,34,27,20,13,6,7,14,21,28,35,42,49,56,57,50,43,36,29,22,15,23,30,37,44,51,58,59,52,45,38,31,39,46,53,60,61,54,47,55,62,63]),t=4017,n=799,r=3406,i=2276,a=1567,o=3784,s=5793,c=2896;function l(){}function u(e,t){for(var n=0,r=[],i,a,o=16;o>0&&!e[o-1];)o--;r.push({children:[],index:0});var s=r[0],c;for(i=0;i<o;i++){for(a=0;a<e[i];a++){for(s=r.pop(),s.children[s.index]=t[n];s.index>0;){if(r.length===0)throw Error(`Could not recreate Huffman Table`);s=r.pop()}for(s.index++,r.push(s);r.length<=i;)r.push(c={children:[],index:0}),s.children[s.index]=c.children,s=c;n++}i+1<o&&(r.push(c={children:[],index:0}),s.children[s.index]=c.children,s=c)}return r[0].children}function d(t,n,r,i,a,o,s,c,l,u){r.precision,r.samplesPerLine,r.scanLines;var d=r.mcusPerLine,f=r.progressive;r.maxH,r.maxV;var p=n,m=0,h=0;function g(){if(h>0)return h--,m>>h&1;if(m=t[n++],m==255){var e=t[n++];if(e)throw Error(`unexpected marker: `+(m<<8|e).toString(16))}return h=7,m>>>7}function _(e){for(var t=e,n;(n=g())!==null;){if(t=t[n],typeof t==`number`)return t;if(typeof t!=`object`)throw Error(`invalid huffman sequence`)}return null}function v(e){for(var t=0;e>0;){var n=g();if(n===null)return;t=t<<1|n,e--}return t}function y(e){var t=v(e);return t>=1<<e-1?t:t+(-1<<e)+1}function b(t,n){var r=_(t.huffmanTableDC),i=r===0?0:y(r);n[0]=t.pred+=i;for(var a=1;a<64;){var o=_(t.huffmanTableAC),s=o&15,c=o>>4;if(s===0){if(c<15)break;a+=16;continue}a+=c;var l=e[a];n[l]=y(s),a++}}function x(e,t){var n=_(e.huffmanTableDC),r=n===0?0:y(n)<<l;t[0]=e.pred+=r}function S(e,t){t[0]|=g()<<l}var C=0;function w(t,n){if(C>0){C--;return}for(var r=o,i=s;r<=i;){var a=_(t.huffmanTableAC),c=a&15,u=a>>4;if(c===0){if(u<15){C=v(u)+(1<<u)-1;break}r+=16;continue}r+=u;var d=e[r];n[d]=y(c)*(1<<l),r++}}var T=0,E;function D(t,n){for(var r=o,i=s,a=0;r<=i;){var c=e[r],u=n[c]<0?-1:1;switch(T){case 0:var d=_(t.huffmanTableAC),f=d&15,a=d>>4;if(f===0)a<15?(C=v(a)+(1<<a),T=4):(a=16,T=1);else{if(f!==1)throw Error(`invalid ACn encoding`);E=y(f),T=a?2:3}continue;case 1:case 2:n[c]?n[c]+=(g()<<l)*u:(a--,a===0&&(T=T==2?3:0));break;case 3:n[c]?n[c]+=(g()<<l)*u:(n[c]=E<<l,T=0);break;case 4:n[c]&&(n[c]+=(g()<<l)*u)}r++}T===4&&(C--,C===0&&(T=0))}function O(e,t,n,r,i){var a=n/d|0,o=n%d,s=a*e.v+r,c=o*e.h+i;e.blocks[s]===void 0&&u.tolerantDecoding||t(e,e.blocks[s][c])}function k(e,t,n){var r=n/e.blocksPerLine|0,i=n%e.blocksPerLine;e.blocks[r]===void 0&&u.tolerantDecoding||t(e,e.blocks[r][i])}var A=i.length,j,M,N,P,F,I=f?o===0?c===0?x:S:c===0?w:D:b,L=0,R,z=A==1?i[0].blocksPerLine*i[0].blocksPerColumn:d*r.mcusPerColumn;a||=z;for(var B,V;L<z;){for(M=0;M<A;M++)i[M].pred=0;if(C=0,A==1)for(j=i[0],F=0;F<a;F++)k(j,I,L),L++;else for(F=0;F<a;F++){for(M=0;M<A;M++)for(j=i[M],B=j.h,V=j.v,N=0;N<V;N++)for(P=0;P<B;P++)O(j,I,L,N,P);if(L++,L===z)break}if(L===z)do{if(t[n]===255&&t[n+1]!==0)break;n+=1}while(n<t.length-2);if(h=0,R=t[n]<<8|t[n+1],R<65280)throw Error(`marker was not found`);if(R>=65488&&R<=65495)n+=2;else break}return n-p}function f(e,l){var u=[],d=l.blocksPerLine,f=l.blocksPerColumn,p=d<<3,m=new Int32Array(64),h=new Uint8Array(64);function _(e,u,d){var f=l.quantizationTable,p,m,h,g,_,v,y,b,x,S=d,C;for(C=0;C<64;C++)S[C]=e[C]*f[C];for(C=0;C<8;++C){var w=8*C;if(S[1+w]==0&&S[2+w]==0&&S[3+w]==0&&S[4+w]==0&&S[5+w]==0&&S[6+w]==0&&S[7+w]==0){x=s*S[0+w]+512>>10,S[0+w]=x,S[1+w]=x,S[2+w]=x,S[3+w]=x,S[4+w]=x,S[5+w]=x,S[6+w]=x,S[7+w]=x;continue}p=s*S[0+w]+128>>8,m=s*S[4+w]+128>>8,h=S[2+w],g=S[6+w],_=c*(S[1+w]-S[7+w])+128>>8,b=c*(S[1+w]+S[7+w])+128>>8,v=S[3+w]<<4,y=S[5+w]<<4,x=p-m+1>>1,p=p+m+1>>1,m=x,x=h*o+g*a+128>>8,h=h*a-g*o+128>>8,g=x,x=_-y+1>>1,_=_+y+1>>1,y=x,x=b+v+1>>1,v=b-v+1>>1,b=x,x=p-g+1>>1,p=p+g+1>>1,g=x,x=m-h+1>>1,m=m+h+1>>1,h=x,x=_*i+b*r+2048>>12,_=_*r-b*i+2048>>12,b=x,x=v*n+y*t+2048>>12,v=v*t-y*n+2048>>12,y=x,S[0+w]=p+b,S[7+w]=p-b,S[1+w]=m+y,S[6+w]=m-y,S[2+w]=h+v,S[5+w]=h-v,S[3+w]=g+_,S[4+w]=g-_}for(C=0;C<8;++C){var T=C;if(S[8+T]==0&&S[16+T]==0&&S[24+T]==0&&S[32+T]==0&&S[40+T]==0&&S[48+T]==0&&S[56+T]==0){x=s*d[C+0]+8192>>14,S[0+T]=x,S[8+T]=x,S[16+T]=x,S[24+T]=x,S[32+T]=x,S[40+T]=x,S[48+T]=x,S[56+T]=x;continue}p=s*S[0+T]+2048>>12,m=s*S[32+T]+2048>>12,h=S[16+T],g=S[48+T],_=c*(S[8+T]-S[56+T])+2048>>12,b=c*(S[8+T]+S[56+T])+2048>>12,v=S[24+T],y=S[40+T],x=p-m+1>>1,p=p+m+1>>1,m=x,x=h*o+g*a+2048>>12,h=h*a-g*o+2048>>12,g=x,x=_-y+1>>1,_=_+y+1>>1,y=x,x=b+v+1>>1,v=b-v+1>>1,b=x,x=p-g+1>>1,p=p+g+1>>1,g=x,x=m-h+1>>1,m=m+h+1>>1,h=x,x=_*i+b*r+2048>>12,_=_*r-b*i+2048>>12,b=x,x=v*n+y*t+2048>>12,v=v*t-y*n+2048>>12,y=x,S[0+T]=p+b,S[56+T]=p-b,S[8+T]=m+y,S[48+T]=m-y,S[16+T]=h+v,S[40+T]=h-v,S[24+T]=g+_,S[32+T]=g-_}for(C=0;C<64;++C){var E=128+(S[C]+8>>4);u[C]=E<0?0:E>255?255:E}}g(p*f*8);for(var v,y,b=0;b<f;b++){var x=b<<3;for(v=0;v<8;v++)u.push(new Uint8Array(p));for(var S=0;S<d;S++){_(l.blocks[b][S],h,m);var C=0,w=S<<3;for(y=0;y<8;y++){var T=u[x+y];for(v=0;v<8;v++)T[w+v]=h[C++]}}}return u}function p(e){return e<0?0:e>255?255:e}l.prototype={load:function(e){var t=new XMLHttpRequest;t.open(`GET`,e,!0),t.responseType=`arraybuffer`,t.onload=(function(){var e=new Uint8Array(t.response||t.mozResponseArrayBuffer);this.parse(e),this.onload&&this.onload()}).bind(this),t.send(null)},parse:function(t){var n=this.opts.maxResolutionInMP*1e3*1e3,r=0;t.length;function i(){var e=t[r]<<8|t[r+1];return r+=2,e}function a(){var e=i(),n=t.subarray(r,r+e-2);return r+=n.length,n}function o(e){var t=1,n=1,r,i;for(i in e.components)e.components.hasOwnProperty(i)&&(r=e.components[i],t<r.h&&(t=r.h),n<r.v&&(n=r.v));var a=Math.ceil(e.samplesPerLine/8/t),o=Math.ceil(e.scanLines/8/n);for(i in e.components)if(e.components.hasOwnProperty(i)){r=e.components[i];var s=Math.ceil(Math.ceil(e.samplesPerLine/8)*r.h/t),c=Math.ceil(Math.ceil(e.scanLines/8)*r.v/n),l=a*r.h,u=o*r.v,d=u*l,f=[];g(d*256);for(var p=0;p<u;p++){for(var m=[],h=0;h<l;h++)m.push(new Int32Array(64));f.push(m)}r.blocksPerLine=s,r.blocksPerColumn=c,r.blocks=f}e.maxH=t,e.maxV=n,e.mcusPerLine=a,e.mcusPerColumn=o}var s=null,c=null,l,p,m=[],h=[],_=[],v=[],y=i(),b=-1;if(this.comments=[],y!=65496)throw Error(`SOI not found`);for(y=i();y!=65497;){var x,S;switch(y){case 65280:break;case 65504:case 65505:case 65506:case 65507:case 65508:case 65509:case 65510:case 65511:case 65512:case 65513:case 65514:case 65515:case 65516:case 65517:case 65518:case 65519:case 65534:var C=a();if(y===65534){var w=String.fromCharCode.apply(null,C);this.comments.push(w)}y===65504&&C[0]===74&&C[1]===70&&C[2]===73&&C[3]===70&&C[4]===0&&(s={version:{major:C[5],minor:C[6]},densityUnits:C[7],xDensity:C[8]<<8|C[9],yDensity:C[10]<<8|C[11],thumbWidth:C[12],thumbHeight:C[13],thumbData:C.subarray(14,14+3*C[12]*C[13])}),y===65505&&C[0]===69&&C[1]===120&&C[2]===105&&C[3]===102&&C[4]===0&&(this.exifBuffer=C.subarray(5,C.length)),y===65518&&C[0]===65&&C[1]===100&&C[2]===111&&C[3]===98&&C[4]===101&&C[5]===0&&(c={version:C[6],flags0:C[7]<<8|C[8],flags1:C[9]<<8|C[10],transformCode:C[11]});break;case 65499:for(var T=i()+r-2;r<T;){var E=t[r++];g(256);var D=new Int32Array(64);if(!(E>>4))for(S=0;S<64;S++){var O=e[S];D[O]=t[r++]}else if(E>>4==1)for(S=0;S<64;S++){var O=e[S];D[O]=i()}else throw Error(`DQT: invalid table spec`);m[E&15]=D}break;case 65472:case 65473:case 65474:i(),l={},l.extended=y===65473,l.progressive=y===65474,l.precision=t[r++],l.scanLines=i(),l.samplesPerLine=i(),l.components={},l.componentsOrder=[];var k=l.scanLines*l.samplesPerLine;if(k>n){var A=Math.ceil((k-n)/1e6);throw Error(`maxResolutionInMP limit exceeded by ${A}MP`)}var j=t[r++],M;for(x=0;x<j;x++){M=t[r];var N=t[r+1]>>4,P=t[r+1]&15,F=t[r+2];if(N<=0||P<=0)throw Error(`Invalid sampling factor, expected values above 0`);l.componentsOrder.push(M),l.components[M]={h:N,v:P,quantizationIdx:F},r+=3}o(l),h.push(l);break;case 65476:var I=i();for(x=2;x<I;){var L=t[r++],R=new Uint8Array(16),z=0;for(S=0;S<16;S++,r++)z+=R[S]=t[r];g(16+z);var B=new Uint8Array(z);for(S=0;S<z;S++,r++)B[S]=t[r];x+=17+z,(L>>4?_:v)[L&15]=u(R,B)}break;case 65501:i(),p=i();break;case 65500:i(),i();break;case 65498:i();var V=t[r++],H=[],U;for(x=0;x<V;x++){U=l.components[t[r++]];var W=t[r++];U.huffmanTableDC=v[W>>4],U.huffmanTableAC=_[W&15],H.push(U)}var G=t[r++],K=t[r++],q=t[r++],J=d(t,r,l,H,p,G,K,q>>4,q&15,this.opts);r+=J;break;case 65535:t[r]!==255&&r--;break;default:if(t[r-3]==255&&t[r-2]>=192&&t[r-2]<=254){r-=3;break}if(y===224||y==225){if(b!==-1)throw Error(`first unknown JPEG marker at offset ${b.toString(16)}, second unknown JPEG marker ${y.toString(16)} at offset ${(r-1).toString(16)}`);b=r-1;let e=i();if(t[r+e-2]===255){r+=e-2;break}}throw Error(`unknown JPEG marker `+y.toString(16))}y=i()}if(h.length!=1)throw Error(`only single frame JPEGs supported`);for(var x=0;x<h.length;x++){var Y=h[x].components;for(var S in Y)Y[S].quantizationTable=m[Y[S].quantizationIdx],delete Y[S].quantizationIdx}this.width=l.samplesPerLine,this.height=l.scanLines,this.jfif=s,this.adobe=c,this.components=[];for(var x=0;x<l.componentsOrder.length;x++){var U=l.components[l.componentsOrder[x]];this.components.push({lines:f(l,U),scaleX:U.h/l.maxH,scaleY:U.v/l.maxV})}},getData:function(e,t){var n=this.width/e,r=this.height/t,i,a,o,s,c,l,u,d,f,m,h=0,_,v,y,b,x,S,C,w,T,E,D,O=e*t*this.components.length;g(O);var k=new Uint8Array(O);switch(this.components.length){case 1:for(i=this.components[0],m=0;m<t;m++)for(c=i.lines[0|m*i.scaleY*r],f=0;f<e;f++)_=c[0|f*i.scaleX*n],k[h++]=_;break;case 2:for(i=this.components[0],a=this.components[1],m=0;m<t;m++)for(c=i.lines[0|m*i.scaleY*r],l=a.lines[0|m*a.scaleY*r],f=0;f<e;f++)_=c[0|f*i.scaleX*n],k[h++]=_,_=l[0|f*a.scaleX*n],k[h++]=_;break;case 3:for(D=!0,this.adobe&&this.adobe.transformCode?D=!0:this.opts.colorTransform!==void 0&&(D=!!this.opts.colorTransform),i=this.components[0],a=this.components[1],o=this.components[2],m=0;m<t;m++)for(c=i.lines[0|m*i.scaleY*r],l=a.lines[0|m*a.scaleY*r],u=o.lines[0|m*o.scaleY*r],f=0;f<e;f++)D?(_=c[0|f*i.scaleX*n],v=l[0|f*a.scaleX*n],y=u[0|f*o.scaleX*n],w=p(_+1.402*(y-128)),T=p(_-.3441363*(v-128)-.71413636*(y-128)),E=p(_+1.772*(v-128))):(w=c[0|f*i.scaleX*n],T=l[0|f*a.scaleX*n],E=u[0|f*o.scaleX*n]),k[h++]=w,k[h++]=T,k[h++]=E;break;case 4:if(!this.adobe)throw Error(`Unsupported color mode (4 components)`);for(D=!1,this.adobe&&this.adobe.transformCode?D=!0:this.opts.colorTransform!==void 0&&(D=!!this.opts.colorTransform),i=this.components[0],a=this.components[1],o=this.components[2],s=this.components[3],m=0;m<t;m++)for(c=i.lines[0|m*i.scaleY*r],l=a.lines[0|m*a.scaleY*r],u=o.lines[0|m*o.scaleY*r],d=s.lines[0|m*s.scaleY*r],f=0;f<e;f++)D?(_=c[0|f*i.scaleX*n],v=l[0|f*a.scaleX*n],y=u[0|f*o.scaleX*n],b=d[0|f*s.scaleX*n],x=255-p(_+1.402*(y-128)),S=255-p(_-.3441363*(v-128)-.71413636*(y-128)),C=255-p(_+1.772*(v-128))):(x=c[0|f*i.scaleX*n],S=l[0|f*a.scaleX*n],C=u[0|f*o.scaleX*n],b=d[0|f*s.scaleX*n]),k[h++]=255-x,k[h++]=255-S,k[h++]=255-C,k[h++]=255-b;break;default:throw Error(`Unsupported color mode`)}return k},copyToImageData:function(e,t){var n=e.width,r=e.height,i=e.data,a=this.getData(n,r),o=0,s=0,c,l,u,d,f,m,h,g,_;switch(this.components.length){case 1:for(l=0;l<r;l++)for(c=0;c<n;c++)u=a[o++],i[s++]=u,i[s++]=u,i[s++]=u,t&&(i[s++]=255);break;case 3:for(l=0;l<r;l++)for(c=0;c<n;c++)h=a[o++],g=a[o++],_=a[o++],i[s++]=h,i[s++]=g,i[s++]=_,t&&(i[s++]=255);break;case 4:for(l=0;l<r;l++)for(c=0;c<n;c++)f=a[o++],m=a[o++],u=a[o++],d=a[o++],h=255-p(f*(1-d/255)+d),g=255-p(m*(1-d/255)+d),_=255-p(u*(1-d/255)+d),i[s++]=h,i[s++]=g,i[s++]=_,t&&(i[s++]=255);break;default:throw Error(`Unsupported color mode`)}}};var m=0,h=0;function g(e=0){var t=m+e;if(t>h){var n=Math.ceil((t-h)/1024/1024);throw Error(`maxMemoryUsageInMB limit exceeded by at least ${n}MB`)}m=t}return l.resetMaxMemoryUsage=function(e){m=0,h=e},l.getBytesAllocated=function(){return m},l.requestMemoryAllocation=g,l})();t===void 0?typeof window<`u`&&(window[`jpeg-js`]=window[`jpeg-js`]||{},window[`jpeg-js`].decode=r):t.exports=r;function r(e,t={}){var r={colorTransform:void 0,useTArray:!1,formatAsRGBA:!0,tolerantDecoding:!0,maxResolutionInMP:100,maxMemoryUsageInMB:512,...t},i=new Uint8Array(e),a=new n;a.opts=r,n.resetMaxMemoryUsage(r.maxMemoryUsageInMB*1024*1024),a.parse(i);var o=r.formatAsRGBA?4:3,s=a.width*a.height*o;try{n.requestMemoryAllocation(s);var c={width:a.width,height:a.height,exifBuffer:a.exifBuffer,data:r.useTArray?new Uint8Array(s):Buffer.alloc(s)};a.comments.length>0&&(c.comments=a.comments)}catch(e){throw e instanceof RangeError?Error(`Could not allocate enough memory for the image. Required: `+s):e instanceof ReferenceError&&e.message===`Buffer is not defined`?Error(`Buffer is not globally defined in this environment. Consider setting useTArray to true`):e}return a.copyToImageData(c,r.formatAsRGBA),c}})),o=e(((e,t)=>{t.exports={encode:i(),decode:a()}}))();const s=Buffer.from([255,216,255]);function c(e){if(n(e))return`png`;if(e.subarray(0,s.length).equals(s))return`jpeg`}function l(e,n){let r=c(e);if(r===`png`)return e;if(r===`jpeg`)return u(e,n);throw new t(`COMMAND_FAILED`,`${n} is neither PNG nor JPEG`,{label:n,leadingBytes:e.subarray(0,4).toString(`hex`)})}function u(e,n){try{let t=(0,o.decode)(e,{useTArray:!0,formatAsRGBA:!0}),n=new r.PNG({width:t.width,height:t.height});return n.data=Buffer.from(t.data.buffer,t.data.byteOffset,t.data.byteLength),r.PNG.sync.write(n)}catch(e){throw new t(`COMMAND_FAILED`,`Failed to decode ${n} as JPEG`,{label:n,reason:e instanceof Error?e.message:String(e)})}}export{l as transcodeScreenshotToPng};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e}from"./rolldown-runtime.js";import{D as t,U as n}from"./sdk-contracts.js";import{r}from"./diagnostics.js";import"./diagnostics2.js";import{n as i,r as a,t as o}from"./png.js";import{n as s,r as c,t as l}from"./png-worker-contract.js";import u from"node:path";import d from"node:fs";import{fileURLToPath as f}from"node:url";import{Worker as p}from"node:worker_threads";function m(e,t){try{let n=f(e),r=u.extname(n)||`.js`;return[u.join(u.dirname(n),`${t}${r}`),u.join(u.dirname(n),`internal`,`${t}${r}`)].find(e=>d.existsSync(e))??null}catch{return null}}var h=e({computePngRgbDifferenceAsync:()=>F,computeScreenshotDiffPixelsAsync:()=>I,cropPngBytesAsync:()=>P,decodePngAsync:()=>M,encodePngAsync:()=>N,prewarmPngWorker:()=>A,terminatePngWorker:()=>j,transcodeScreenshotToPngAsync:()=>L}),g=class extends Error{};let _=null,v=!1,y=!1,b=0;const x=new Map;function S(e){v=!0,!y&&(y=!0,r({level:`warn`,phase:`png_worker_unavailable`,data:{reason:e}}),process.emitWarning(`PNG worker unavailable, falling back to in-process PNG processing: ${e}`))}function C(e){let r=x.get(e.id);r&&(x.delete(e.id),E(),e.ok?r.resolve(e.result):r.reject(new t(n(e.error.code),e.error.message,e.error.details)))}function w(e,t){_===e&&(S(t.message),_=null,e.terminate().catch(()=>{}),T(new g(`PNG worker failed: ${t.message}`)))}function T(e){let t=[...x.values()];x.clear();for(let n of t)n.reject(e)}function E(){_&&(x.size>0?_.ref():_.unref())}function D(){if(v)return null;if(_)return _;let e=m(import.meta.url,`png-worker`);if(!e)return S(`worker entry module not found next to the current module`),null;try{let t=new p(e,{execArgv:e.endsWith(`.ts`)?[`--experimental-strip-types`]:[]});return t.on(`message`,C),t.on(`error`,e=>{w(t,e)}),t.on(`exit`,e=>{w(t,Error(`PNG worker exited with code ${e}`))}),t.unref(),_=t,t}catch(e){return S(`failed to spawn worker: ${e instanceof Error?e.message:String(e)}`),null}}function O(e){let t=D();if(!t)return Promise.reject(new g(`PNG worker is unavailable`));b+=1;let n=b;return new Promise((r,i)=>{x.set(n,{resolve:r,reject:i}),E();try{t.postMessage({...e,id:n})}catch(e){x.delete(n),E(),i(new g(`failed to post job to PNG worker: ${e instanceof Error?e.message:String(e)}`))}})}async function k(e,t){try{return await O(e)}catch(e){if(e instanceof g)return await t();throw e}}function A(){D()}async function j(){let e=_;_=null,T(new g(`PNG worker terminated`)),e&&await e.terminate()}async function M(e,t){let n=await k({kind:`decode`,png:e,label:t},()=>{let n=o(e,t);return{kind:`decode`,width:n.width,height:n.height,data:n.data}}),r=new a.PNG({width:n.width,height:n.height});return r.data=l(n.data),r}async function N(e){let t=await k({kind:`encode`,width:e.width,height:e.height,data:e.data},()=>({kind:`encode`,png:a.PNG.sync.write(e)}));return l(t.png)}async function P(e,t,n){let r=await k({kind:`crop`,png:e,label:n,box:t},async()=>{let{cropPngBytes:r}=await import(`./png-crop-bytes.js`).then(e=>e.n);return{kind:`crop`,png:r(e,t,n)}});return r.png===null?null:l(r.png)}async function F(e,t,n){let{kind:r,...i}=await k({kind:`rgb-difference`,firstPng:e,secondPng:t,label:n},()=>({kind:`rgb-difference`,...s(o(e,n),o(t,n))}));return i}async function I(e){let{kind:t,...n}=await k({kind:`diff-pixels`,...e},()=>({kind:`diff-pixels`,...c(e)}));return{...n,diffData:l(n.diffData)}}async function L(e,t){if(i(e))return e;let n=await k({kind:`jpeg-to-png`,image:e,label:t},async()=>{let{transcodeScreenshotToPng:n}=await import(`./png-transcode.js`);return{kind:`jpeg-to-png`,png:n(e,t)}});return l(n.png)}export{N as a,j as c,M as i,I as n,h as o,P as r,A as s,F as t};
|