agent-device 0.21.13 → 0.21.15
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.13.apk → agent-device-android-ime-helper-0.21.15.apk} +0 -0
- package/android/ime-helper/dist/agent-device-android-ime-helper-0.21.15.apk.sha256 +1 -0
- package/android/ime-helper/dist/{agent-device-android-ime-helper-0.21.13.manifest.json → agent-device-android-ime-helper-0.21.15.manifest.json} +4 -4
- package/android/snapshot-helper/dist/agent-device-android-snapshot-helper-0.21.15.apk +0 -0
- package/android/snapshot-helper/dist/agent-device-android-snapshot-helper-0.21.15.apk.sha256 +1 -0
- package/android/snapshot-helper/dist/{agent-device-android-snapshot-helper-0.21.13.manifest.json → agent-device-android-snapshot-helper-0.21.15.manifest.json} +6 -6
- package/apple/snapshot-bridge/SnapshotBridgeRuntime.m +11 -1
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunner/AgentDeviceRunnerApp.m +110 -2
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerAXSnapshotBridge.m +4 -2
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerMainOwnedState.swift +27 -0
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerSynthesizedTextEntry.h +8 -2
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerSynthesizedTextEntry.m +26 -1
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+AXSnapshotFallback.swift +12 -19
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+Alert.swift +59 -20
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+AlertObservation.swift +2 -3
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+CommandDispatch.swift +179 -91
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+CommandExecution.swift +21 -24
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+CommandJournal.swift +1 -1
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+GestureExecution.swift +9 -13
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+Lifecycle.swift +36 -49
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+MainThreadWork.swift +11 -15
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+Models.swift +136 -29
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+Navigation.swift +20 -21
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+PrivateAXPresentation.swift +3 -0
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+ScreenRecorder.swift +6 -5
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+ScrollDragExecution.swift +12 -24
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+SequenceExecution.swift +22 -42
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+Snapshot.swift +15 -18
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+SnapshotAcquisition.swift +73 -31
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+SnapshotCapturePlan.swift +20 -11
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+SnapshotCaptureTarget.swift +9 -7
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+SnapshotExecution.swift +5 -4
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+SnapshotTiming.swift +2 -2
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+SynthesizedGesturePolicy.swift +51 -19
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+SynthesizedInteraction.swift +5 -2
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+SynthesizedTextEntry.swift +78 -10
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+TextEntry.swift +32 -2
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+TextEntryFocus.swift +7 -4
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+TextTyping.swift +23 -0
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+Transport.swift +17 -10
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+TvRemote.swift +8 -9
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+TypeExecution.swift +9 -15
- package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests.swift +12 -11
- package/dist/apple/snapshot-presentation/Sources/AgentDeviceSnapshotPresentation/SnapshotCoordinateSpace.swift +16 -19
- package/dist/apple/snapshot-presentation/Sources/AgentDeviceSnapshotPresentation/SnapshotGeometry.swift +24 -9
- package/dist/apple/snapshot-presentation/Sources/AgentDeviceSnapshotPresentation/SnapshotModels.swift +66 -10
- package/dist/apple/snapshot-presentation/Sources/AgentDeviceSnapshotPresentation/SnapshotPresentationInvariant.swift +12 -10
- package/dist/apple/snapshot-presentation/Sources/AgentDeviceSnapshotPresentation/SnapshotPresentationProjection.swift +1 -0
- package/dist/apple/snapshot-presentation/Sources/AgentDeviceSnapshotPresentation/SnapshotVisibilityFold.swift +27 -5
- package/dist/apple/snapshot-presentation/Sources/AgentDeviceSnapshotPresentation/SnapshotVisibilityFoldProjection.swift +1 -0
- package/dist/src/adapter.js +1 -1
- package/dist/src/adb-executor.js +1 -1
- package/dist/src/adb-failure.js +1 -1
- package/dist/src/adb-transport.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 +1 -8
- package/dist/src/android-input-ownership.js +1 -1
- package/dist/src/android-snapshot-quality.js +1 -0
- package/dist/src/android-system-chrome.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-inventory.js +1 -1
- package/dist/src/app-launch.js +1 -1
- package/dist/src/app-lifecycle.js +1 -1
- package/dist/src/app-lifecycle2.js +1 -1
- package/dist/src/app-log-files.js +1 -1
- package/dist/src/app-log-runtime2.js +1 -1
- package/dist/src/app-resolution.js +2 -2
- 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/backend-snapshot-options.js +1 -1
- package/dist/src/boot-diagnostics.js +1 -1
- package/dist/src/capture-disclosure.js +1 -1
- package/dist/src/capture.js +1 -1
- package/dist/src/cli-config.js +1 -1
- package/dist/src/cli-help.js +2 -2
- 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 +102 -95
- package/dist/src/clipboard-shell-response.js +1 -1
- package/dist/src/command-schema.js +1 -1
- package/dist/src/command-tools.js +3 -3
- 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-claim-rule.js +2 -2
- package/dist/src/device-input-state.d.ts +15 -2
- 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 -1
- package/dist/src/device2.js +1 -1
- package/dist/src/devicectl.js +1 -1
- package/dist/src/diagnostics.js +1 -1
- package/dist/src/dispatch-resolve.js +1 -1
- package/dist/src/doctor2.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/format.js +1 -1
- package/dist/src/gesture-plan-types.d.ts +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/helper.js +2 -2
- package/dist/src/human-control-contract.js +1 -1
- package/dist/src/human-control.js +1 -1
- package/dist/src/index.d.ts +7 -3
- 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/interaction2.js +1 -1
- package/dist/src/interactor-operation-binding.js +1 -1
- package/dist/src/interactor.js +4 -4
- 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.js +1 -1
- package/dist/src/internal/run-script-http-child.js +1 -1
- package/dist/src/inventory.js +1 -1
- package/dist/src/inventory2.js +1 -1
- package/dist/src/inventory3.js +1 -1
- package/dist/src/inventory5.js +1 -1
- package/dist/src/ios-snapshot-acquisition.js +1 -1
- package/dist/src/ios-snapshot-engine.js +1 -0
- package/dist/src/ios-snapshot-runtime.js +1 -1
- package/dist/src/lease.js +1 -1
- package/dist/src/limrun-download-file.js +1 -1
- package/dist/src/limrun-runtime-dependencies.js +1 -1
- package/dist/src/limrun.d.ts +16 -3
- package/dist/src/linux.js +1 -1
- package/dist/src/location-coordinates.js +1 -1
- package/dist/src/managed-device-scope.js +1 -1
- package/dist/src/mechanics.js +17 -17
- package/dist/src/mobile-snapshot-semantics.js +1 -1
- package/dist/src/multitouch-support.js +1 -1
- package/dist/src/native-build-cache.js +1 -0
- package/dist/src/observation.js +1 -1
- package/dist/src/overlay.js +3 -0
- package/dist/src/parameterized-recorded-fill.js +1 -1
- package/dist/src/perf-facade.js +1 -1
- package/dist/src/perf-runtime-operation-builder.js +1 -1
- package/dist/src/perf-runtime-plan.js +1 -1
- package/dist/src/perf-target.js +2 -2
- package/dist/src/perf.js +1 -1
- package/dist/src/physical-device-control.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 +1 -1
- package/dist/src/platform-runtime-screen-recording-apple-simulator-host.js +1 -1
- package/dist/src/platform-runtime-screen-recording-finalizer-host.js +1 -1
- package/dist/src/platform-runtime-screen-recording-process-host.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-size.js +1 -1
- package/dist/src/png-worker-client.js +1 -1
- 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/recording.js +1 -1
- package/dist/src/rect-center.js +1 -1
- package/dist/src/register-builtins.js +1 -1
- package/dist/src/registry.js +36 -36
- package/dist/src/remote-config2.js +1 -1
- package/dist/src/replay-divergence.js +1 -1
- package/dist/src/replay.js +1 -1
- 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/retry.js +1 -1
- package/dist/src/runner-cache-metadata.js +1 -1
- package/dist/src/runner-client.js +1 -1
- package/dist/src/runner-dev-tools-security.js +1 -1
- package/dist/src/runner-device-readiness.js +1 -1
- package/dist/src/runner-disposal.js +1 -1
- package/dist/src/runner-error-classification.js +1 -1
- package/dist/src/runner.js +1 -1
- package/dist/src/runtime-transport-hints.js +1 -1
- package/dist/src/runtime.js +1 -3
- package/dist/src/runtime10.js +2 -2
- 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 -1
- 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/screenshot-density.js +1 -1
- package/dist/src/screenshot-image.js +1 -1
- package/dist/src/screenshot-overlay-draw.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.d.ts +13 -6
- 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 +59 -12
- package/dist/src/sdk-contracts.js +2 -2
- package/dist/src/sdk-device.js +1 -1
- package/dist/src/sdk-finders.d.ts +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 +1 -1
- package/dist/src/selection.js +0 -0
- package/dist/src/selector-runtime.js +1 -1
- package/dist/src/server.js +1 -1
- package/dist/src/session-allocation.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 +1 -1
- package/dist/src/session.js +1 -1
- package/dist/src/session2.js +4 -4
- package/dist/src/settings.js +1 -1
- package/dist/src/settings2.js +1 -0
- package/dist/src/simctl.js +1 -1
- package/dist/src/simulator-state.js +1 -1
- package/dist/src/simulator.js +1 -1
- package/dist/src/snapshot-capture-annotations.js +1 -1
- package/dist/src/snapshot-desktop-projection.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/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/string-enum.js +1 -1
- package/dist/src/surface-snapshot.js +1 -1
- package/dist/src/takeover.js +1 -1
- package/dist/src/text-entry-focus.js +1 -1
- package/dist/src/tool-provider-facade.js +1 -1
- package/dist/src/tool-provider.js +2 -2
- 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 +1 -1
- 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/package.json +1 -1
- package/server.json +2 -2
- package/android/ime-helper/dist/agent-device-android-ime-helper-0.21.13.apk.sha256 +0 -1
- package/android/snapshot-helper/dist/agent-device-android-snapshot-helper-0.21.13.apk +0 -0
- package/android/snapshot-helper/dist/agent-device-android-snapshot-helper-0.21.13.apk.sha256 +0 -1
- package/dist/src/absence-observation-errors.js +0 -1
- package/dist/src/runner-presentation.js +0 -1
- package/dist/src/semantic-index.js +0 -1
- package/dist/src/snapshot-process.js +0 -1
- package/dist/src/snapshot-scope.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{A as e}from"../sdk-contracts.js";import{n as t,r as n}from"../install-source-network-transport.js";import{t as r}from"../undici.js";import{readFileSync as i}from"node:fs";import a from"node:net";import{pathToFileURL as o}from"node:url";var s=r();async function c(e){return e.publicNetworkOnly?await u(e):await l(e)}async function l(e){if(typeof fetch!=`function`)throw Error(`global fetch is required for Maestro runScript http helpers`);return await y(await fetch(e.url,d(e)))}async function u(t){let n=v(t.url),r=AbortSignal.timeout(3e4),i=new f(n.protocol===`https:`,r);try{return await y(await(0,s.fetch)(n,{...d(t),dispatcher:i,signal:r}),8388608)}catch(t){throw t instanceof TypeError&&t.cause instanceof e?t.cause:t}finally{await i.dispose()}}function d(e){return{method:e.method,headers:e.headers,...e.body===void 0?{}:{body:e.body}}}var f=class extends s.Dispatcher{#e=new Set;#t;#n;constructor(e,t){super(),this.#t=e,this.#n=t}dispatch(e,t){return this.dispatchApproved(e,t).catch(e=>{t.onError?.(e instanceof Error?e:Error(String(e)))}),!0}async dispose(){await Promise.all([...this.#e].map(async e=>await e.close()))}async dispatchApproved(r,i){let a=_(r);if(this.#t&&a.protocol!==`https:`)throw new e(`COMMAND_FAILED`,`Maestro runScript HTTP redirect downgraded HTTPS`);a.protocol===`https:`&&(this.#t=!0);let o=await n(a,this.#n),s=t(a),c=s?m(s,a):p(o.address,o.family);this.#e.add(c),c.dispatch(s?h(r,a,o.address,o.family):r,i)}};function p(e,t){return new s.Agent({connect:{lookup:(n,r,i)=>{if(r.all){i(null,[{address:e,family:t}]);return}i(null,e,t)}}})}function m(e,t){let n=g(t.hostname);return new s.ProxyAgent({uri:e,proxyTunnel:!0,requestTls:t.protocol===`https:`&&a.isIP(n)===0?{servername:n}:void 0})}function h(e,t,n,r){let i=new URL(t);i.hostname=r===6?`[${g(n)}]`:n;let a=Array.isArray(e.headers)?[...e.headers,`host`,t.host]:{...e.headers,host:t.host};return{...e,origin:i.origin,headers:a}}function g(e){return e.startsWith(`[`)&&e.endsWith(`]`)?e.slice(1,-1):e}function _(t){if(!t.origin)throw new e(`INVALID_ARGS`,`Invalid Maestro runScript HTTP URL`);return new URL(t.path,t.origin)}function v(t){try{return new URL(t)}catch{throw new e(`INVALID_ARGS`,`Invalid Maestro runScript HTTP URL`)}}async function y(e,t){return{status:e.status,body:await b(e,t),headers:Object.fromEntries(e.headers.entries())}}async function b(t,n){if(n===void 0)return await t.text();let r=[],i=0,a=t.body?.getReader();if(!a)return``;for(;;){let{done:o,value:s}=await a.read();if(o)break;if(i+=s.byteLength,i>n)throw await a.cancel(),new e(`COMMAND_FAILED`,`Maestro runScript HTTP response exceeded ${n} bytes`,{limitBytes:n,status:t.status});r.push(s)}return Buffer.concat(r,i).toString(`utf8`)}async function x(){let e=await c(JSON.parse(i(0,`utf8`)));process.stdout.write(JSON.stringify(e))}process.argv[1]&&o(process.argv[1]).href===import.meta.url&&x().catch(e=>{console.error(e instanceof Error?e.stack??e.message:String(e)),process.exitCode=1});export{x as runScriptHttpChild};
|
package/dist/src/inventory.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{A as e,j as t}from"./sdk-contracts.js";import{n}from"./device-shell.js";import{a as r,r as i}from"./adb-failure.js";import a from"node:path";function o(e){return e.startsWith(`emulator-`)}function s(e){return e.toLowerCase().replaceAll(`_`,` `).replaceAll(/\s+/g,` `).trim()}function c(e){let t=[];for(let n of e.split(`
|
|
2
2
|
`)){let e=n.trim().split(/\s+/),r=e[0];!r||r===`List`||e[1]!==`device`||t.push({serial:r,rawModel:(e.find(e=>e.startsWith(`model:`))??``).replace(`model:`,``)})}return t}function l(e){return e.split(`
|
|
3
3
|
`).map(e=>e.trim()).filter(e=>e.length>0)}function u(e){let t=e.split(`
|
|
4
4
|
`).map(e=>e.trim()).filter(e=>e.length>0);return t.at(-1)===`OK`&&t.pop(),t.join(`
|
package/dist/src/inventory2.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{A as e}from"./sdk-contracts.js";import{E as t}from"./sdk-device.js";import{c as n}from"./simctl.js";const r=/^(iphone|ipad|ipod|appletv|realitydevice)/i,i=/ipad/i,a=/\b(apple vision|vision pro|xros|visionos|realitydevice)\b/i,o=/\b(iphone|ipad|ipod)\b/i,s=/^appletv/i,c=[`apple tv`,`appletv`,`tvos`];function l(e){return(e??``).trim().toLowerCase()}function u(e){return e.includes(`tvos`)}function d(e){return e.includes(`xros`)||e.includes(`visionos`)}function f(e){return u(l(e))?`tv`:`mobile`}function p(e){let t=l(e);return t.includes(`ios`)||t.includes(`tvos`)||t.includes(`xros`)||t.includes(`visionos`)}function m(e){let t=l(e);return c.some(e=>t.includes(e))}function h(e){return o.test(e.trim())}function g(e){return m(e)?`tv`:h(e)||a.test(e)?`mobile`:null}function _(e,t){return e===`tv`?`tvos`:t.some(e=>a.test(e))?`visionos`:t.some(e=>i.test(e))?`ipados`:`ios`}function v(e){return r.test(e.trim())}function y(e){return s.test(e.trim())}function b(e){return[e.name??``,e.deviceProperties?.name??``,e.deviceProperties?.deviceType??``]}function x(e){return e.hardwareProperties?.productType??e.deviceProperties?.productType??``}function S(e){return u(l(e.hardwareProperties?.platform))||y(x(e))||b(e).some(m)?`tv`:`mobile`}function C(e){let t=l(e.hardwareProperties?.platform);return t.includes(`ios`)||u(t)||d(t)||v(x(e))?!0:b(e).some(m)}function w(e){if(!C(e))return null;let t=e.hardwareProperties?.udid??e.identifier??``,n=e.name??e.deviceProperties?.name??t;if(!t)return null;let r=S(e);return{platform:`apple`,id:t,name:n,kind:`device`,target:r,appleOs:_(r,[x(e),...b(e)]),iosPhysicalDeviceBackend:`coredevice`,booted:!0}}const T=/^==\s*(.+?)\s*==$/,E=/^(?<name>.+?)\s+(?:\[(?<idBracket>[^[\]]+)\]|\((?<osVersion>[^)]+)\)\s+\((?<idParen>[^)]+)\))\s*$/;function D(e){let t=[],n=null;for(let r of e.split(/\r?\n/)){let e=r.trim();if(!e)continue;let i=T.exec(e);if(i){n=i[1]?.trim()??null;continue}if(n!==`Devices`)continue;let a=O(e);a&&t.push(a)}return t}function O(e){let t=E.exec(e)?.groups;if(!t)return;let n=t.name?.trim(),r=t.idBracket?.trim()||t.idParen?.trim();if(!n||!r)return;let i=g(n);if(!i)return;let a=t.osVersion?.trim();return{platform:`apple`,id:r,name:n,kind:`device`,target:i,appleOs:_(i,a?[n,a]:[n]),iosPhysicalDeviceBackend:`xctest`,booted:!0}}async function k(e,t){let[n,r]=await Promise.all([A(e,t),j(e,t)]);return M(n,r)}async function A(e,t){let n;try{return n=await e.files.createTemporaryTextFile({prefix:`agent-device-devicectl-`,suffix:`.json`}),(await e.appleTools.run({tool:`devicectl`,args:[`list`,`devices`,`--json-output`,n.path],allowFailure:!0,timeoutMs:8e3},t.signal)).exitCode===0?(JSON.parse(await n.readText()).result?.devices??[]).flatMap(e=>{let t=w(e);return t?[t]:[]}):[]}catch{return t.signal.throwIfAborted(),[]}finally{try{await n?.[Symbol.asyncDispose]()}catch{}}}async function j(e,t){try{let n=await e.appleTools.run({tool:`xctrace`,args:[`list`,`devices`],allowFailure:!0},t.signal);return n.exitCode===0?D(n.stdout):[]}catch{return t.signal.throwIfAborted(),[]}}function M(e,t){let n=new Set(e.map(e=>e.id)),r=[...e];for(let e of t)n.has(e.id)||(n.add(e.id),r.push(e));return r}function N(e,t){let n=[];for(let[r,i]of Object.entries(e.devices))if(p(r))for(let e of i){if(!e.isAvailable)continue;let i=f(r);n.push({platform:`apple`,id:e.udid,name:e.name,kind:`simulator`,target:i,appleOs:_(i,[r,e.deviceTypeIdentifier??``,e.name]),booted:e.state===`Booted`,...t?{simulatorSetPath:t}:{}})}return n}async function P(r,i,a){let o=i.iosSimulatorSetPath?.trim()||void 0,s=await r.appleTools.run({tool:`simctl`,args:n(o),...i.booted===!0?{timeoutMs:3e3}:{}},a.signal),c;try{c=N(JSON.parse(s.stdout),o)}catch(t){throw new e(`COMMAND_FAILED`,`Failed to parse simctl devices JSON`,void 0,t)}for(let e of c)e.booted===!0&&await r.observations.deviceBooted(e);return t(c)}function F(e){return Object.freeze({discover:async(t,n)=>await I(e,t,n)})}async function I(n,r,i){if(L(r))return[B(n)];if(n.hostOs!==`darwin`)throw z(n.hostOs);if(!await n.appleTools.isXcrunAvailable(i.signal))throw new e(`TOOL_MISSING`,`xcrun not found in PATH`);let a=P(n,r,i);if(r.kind===`simulator`)return await a;if(r.iosSimulatorSetPath||r.udid){let e=await a,o=[...e,B(n)];if(r.iosSimulatorSetPath||e.some(e=>e.id===r.udid))return t(o);let s=await k(n,i);return t(V(o,s))}let[o,s]=await Promise.all([a,k(n,i)]),c=[...o,B(n)];return t(V(c,s))}function L(e){return e.platform===`macos`||e.platform===`apple`&&e.target===`desktop`}const R={darwin:`macOS`,linux:`Linux`,win32:`Windows`,other:`a non-macOS host`};function z(t){return new e(`UNSUPPORTED_PLATFORM`,`Apple tools are only available on macOS`,{supportedOn:`macOS`,hostOs:t,retriable:!1,hint:`This host runs ${R[t]}, so it cannot boot iOS Simulators or run macOS sessions. Drive Android here instead with the same command shape: agent-device devices --platform android to list targets, then agent-device open <app.apk> --platform android. To use an iOS Simulator from this machine, run agent-device on a macOS host and pass --daemon-base-url <that daemon URL>.`})}function B(e){return{platform:`apple`,id:`host-macos-local`,name:e.hostName,kind:`device`,target:`desktop`,appleOs:`macos`,booted:!0}}function V(e,t){let n=new Set(e.map(e=>e.id));return[...e,...t.filter(e=>!n.has(e.id)&&(n.add(e.id),!0))]}export{F as createAppleInventorySource};
|
package/dist/src/inventory3.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{A as e}from"./sdk-contracts.js";import{n as t}from"./device-shell.js";import n from"node:path";function r(e,t={}){return{discover:async(n,r)=>await a(e,t,n,r)}}function i(e){return e.split(`
|
|
2
2
|
`).map(e=>e.trim()).filter(e=>e.length>0&&e!==`[Empty]`)}async function a(t,n,r,a){await t.toolchains.prepare(`harmonyos`);let u=await s(t,o(n));if(!u)throw new e(`TOOL_MISSING`,`hdc not found in PATH`,{hint:`Install HarmonyOS Command Line Tools, then add its sdk/default/openharmony/toolchains directory to PATH.`});let d=await l(t,u,[`list`,`targets`],a);if(d.exitCode!==0)throw new e(`COMMAND_FAILED`,`hdc list targets failed`,{stderr:d.stderr,hint:`Confirm the HarmonyOS emulator or device is running, then run hdc list targets.`});let f=i(d.stdout).filter(e=>!r.serial||r.serial===e);return await Promise.all(f.map(async e=>await c(t,u,e,a)))}function o(e){return[e.hdcSdkPath,e.devecoSdkHome&&n.join(e.devecoSdkHome,`default`,`openharmony`,`toolchains`),e.commandLineToolsHome&&n.join(e.commandLineToolsHome,`sdk`,`default`,`openharmony`,`toolchains`)].filter(e=>e!==void 0)}async function s(e,t){for(let r of t){let t=n.join(r,`hdc`);if(await e.files.isExecutable(t))return t}return await e.commands.which(`hdc`)}async function c(e,n,r,i){let[a,o]=await Promise.all([l(e,n,t(`hdc`,`shell`,[`param`,`get`,`const.product.name`],[`-t`,r]),i),l(e,n,t(`hdc`,`shell`,[`param`,`get`,`const.build.characteristics`],[`-t`,r]),i)]),s=a.exitCode===0?a.stdout.trim():``,c=s.toLowerCase()===`emulator`;return{platform:`harmonyos`,id:r,name:s||r,kind:c?`emulator`:`device`,target:o.stdout.toLowerCase().includes(`tv`)?`tv`:`mobile`,booted:!0}}async function l(e,t,n,r){return await e.commands.run({executable:t,args:n,allowFailure:!0,timeoutMs:1e4},r.signal)}export{r as createHarmonyInventory};
|
package/dist/src/inventory5.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{A as e}from"./sdk-contracts.js";import t from"node:path";const n=`VirtualDevice`;function r(e){return{discover:async(t,n)=>await a(e,n)}}function i(e){return l(e).some(c)?[{platform:`vega`,id:n,name:`Vega Virtual Device (${n})`,kind:`emulator`,target:`tv`,booted:!0}]:[]}async function a(t,n){let r=await o(t);if(!r)throw new e(`TOOL_MISSING`,`Vega CLI not found in PATH`,{hint:`Install Vega Developer Tools, source ~/vega/env, and retry devices.`});let a=await t.commands.run({executable:r,args:[`device`,`list`],allowFailure:!0,timeoutMs:1e4},n.signal);s(a);let c=i(a.stdout),u=l(a.stdout);if(c.length===0&&u.length>0)throw new e(`DEVICE_NOT_FOUND`,`Vega CLI found devices, but no supported Vega Virtual Device is running.`,{listedSerials:u,hint:`Start the Vega Virtual Device, then retry with --platform vega --target tv.`});return c}async function o(e){let n=await e.commands.which(`vega`);if(n)return n;let r=t.join(e.homeDirectory,`vega`,`bin`,`vega`);return await e.files.isExecutable(r)?r:void 0}function s(t){if(t.exitCode!==0)throw new e(`COMMAND_FAILED`,`Failed to list Vega devices`,{stdout:t.stdout,stderr:t.stderr,exitCode:t.exitCode,processExitError:!0})}function c(e){return e.toLowerCase()===`virtualdevice`}function l(e){let t=new Set;for(let n of e.split(/\r?\n/)){let e=/^\s*([^\s:]+)\s*:\s*\S/.exec(n)?.[1]?.trim();e&&t.add(e)}return[...t]}export{r as createVegaInventory};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Ir as e,
|
|
1
|
+
import{Ir as e,Jr as t}from"./sdk-batch.js";const n={"appium-source":{producer:`appium-source`,acquisitionDepth:{rawTraversal:{kind:`incomplete`},regularPresented:{kind:`incomplete`}},hittabilityEvidence:`unavailable`},"limrun-ios-tree":{producer:`limrun-ios-tree`,acquisitionDepth:{rawTraversal:{kind:`incomplete`},regularPresented:{kind:`incomplete`}},hittabilityEvidence:`unavailable`}},r={"apple-runner":`available`,"simulator-ax-bridge":`available`,"appium-source":`unavailable`,"limrun-ios-tree":`unavailable`};function i(e){return r[e]}function a(e,t){let n=[];return e.hittabilityEvidence===`unavailable`&&n.push({kind:`unavailable-fact`,fact:`hittability`}),(e.acquisitionDepth.rawTraversal.kind===`incomplete`||e.acquisitionDepth.regularPresented.kind===`incomplete`)&&n.push({kind:`unavailable-fact`,fact:`acquisition-depth`}),i(e.producer)===`unavailable`&&n.push({kind:`unavailable-fact`,fact:`truncation`}),t.kind===`missing`&&n.push({kind:`missing-viewport`,reason:t.reason}),Object.freeze(n)}function o(e){let t=n[e.producer];return{stage:`acquired`,acquisition:{producer:e.producer,intent:`full`,nodes:e.nodes,viewport:e.viewport,lineage:e.lineage,residue:a(t,e.viewport)}}}function s(e,n={}){let r=e.filter(c),i=[...r.length>0||n.fallbackToLargestRoot!==!0?r:e].sort(l)[0];if(i)return t(i.rect)?{kind:`reported`,rect:i.rect}:{kind:`missing`,reason:i.rectStatus===`invalid`||i.rectStatus===void 0&&i.rect!==void 0?`invalid`:`not-provided`}}function c(t){let n=e(t.type??``);return n===`application`||n===`window`}function l(e,t){return u(t.rectStatus)-u(e.rectStatus)||d(t.rect)-d(e.rect)}function u(e){return e===`reported`?2:+(e===`invalid`)}function d(e){return e&&t(e)?e.width*e.height:0}export{i as n,s as r,o as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{h as e}from"./sdk-contracts.js";import{Ir as t,Jr as n,Kr as r,Mr as i,Qr as a,Yr as o,Zr as s,qr as c}from"./sdk-batch.js";import{n as l,t as u}from"./scroll-indicator.js";import{a as d,i as f,o as p,r as m}from"./react-native-overlay.js";import{t as h}from"./rect-center.js";import{i as g,n as _,t as ee}from"./ios-snapshot-planning.js";import{_ as te,a as v,c as y,d as ne,f as b,g as x,h as re,i as S,l as ie,m as C,n as w,o as T,p as E,r as ae,t as D,u as oe}from"./tree.js";function se(e,t){let n=v(t.sourceNodesByIndex.values());for(let r of e)ce(r,t.sourceNodesByIndex,n)&&C(t.replacements,r,{type:`Cell`})}function ce(e,n,r){return!(t(e.type??``)!==`other`||e.enabled===!1||!e.rect||!de(e.label)||!T(e,n,ue)||!le(e)||oe(e.rect,r))}function le(e){return e.rect?e.rect.height>=44&&e.rect.height<=160&&e.rect.width>=120:!1}function ue(e){let n=t(e.type??``);return n===`scrollview`||n===`scrollarea`}function de(e){let t=e?.trim();return!(!t||/^(toolbar|window|application)$/i.test(t)||t.startsWith(`!,`)||/debugger|fast refresh/i.test(t))}function fe(e,t){let n=new Set;for(let r of e)pe(t.replacements.get(r.index)??r)&&me(r,t.sourceNodesByIndex,t,n);_e(e,t,n)}function pe(e){let t=e.label?.trim();return!!(t&&l(t))}function me(e,t,n,r){let i=!b(e.type)||n.isSuppressed(e),a=u(e.label?.trim()??``,e.value),o=a?ge(e,t):void 0;i&&n.suppressNode(e,o?[o]:[]),o&&a&&Te(n,o,e,a)&&r.add(o.index)}function O(e,t){return typeof e.parentIndex==`number`?t.get(e.parentIndex):void 0}function he(e,t){return e.rect!=null&&t.rect!=null&&k(e.rect,t.rect)}function ge(e,t){if(b(e.type))return null;let n=O(e,t);for(;n&&!b(n.type);){let e=O(n,t);if(!e||!he(n,e))return null;n=e}return n??null}function _e(e,t,n){let r=new Map;for(let i of e){let e=r.get(i.parentIndex??-1),a=e?.clip,o=t.replacements.get(i.index)??i,s=we(o.rect,a),c=ve(o,a,s),l=ye(e,c,o);be(t,i,o,a,s,c,l),r.set(i.index,xe(i,o,a,s,l,n))}}function ve(e,t,r){return!!(t&&n(e.rect)&&!n(r))}function ye(e,t,n){return!!(e?.projectedOut||t&&Ce(n))}function be(e,t,n,r,i,a,o){o||a?e.suppressNode(t,[]):r&&i&&!k(n.rect,i)&&C(e.replacements,t,{rect:i})}function xe(e,t,n,r,i,a){return{projectedOut:i,...Se(e,t,n,r,a)?{clip:r}:n?{clip:n}:{}}}function Se(e,t,r,i,a){return!!(n(i)&&(a.has(e.index)||r!==void 0&&b(t.type)))}function Ce(e){return e.type?.trim().toLowerCase()===`cell`||b(e.type)}function we(e,t){if(!e||!t)return e;let n=Math.max(e.x,t.x),r=Math.max(e.y,t.y),i=Math.min(e.x+e.width,t.x+t.width),a=Math.min(e.y+e.height,t.y+t.height);return{x:n,y:r,width:Math.max(0,i-n),height:Math.max(0,a-r)}}function k(e,t){return!!(e&&e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height)}function Te(e,t,n,r){let i=Ee((e.replacements.get(t.index)??t).rect,n.rect);return te(e.replacements,t,e=>({rect:i??e.rect,hiddenContentAbove:A(e.hiddenContentAbove,r.above),hiddenContentBelow:A(e.hiddenContentBelow,r.below)})),!!i}function A(e,t){return e===!0||t?!0:void 0}function Ee(e,t){if(!(!e||!t)&&!(t.height<=0||t.height>=e.height)&&!(t.y<e.y||t.y>e.y+e.height))return{...e,y:t.y,height:Math.min(t.height,e.y+e.height-t.y)}}function j(e,n){for(let r=0;r<e.length;r+=1){let i=e[r],a=i?.label?.trim();i&&a&&t(i.type??``)===`other`&&n(i,a,r)}}function De(e,t){j(e,(n,r,i)=>{if(!d(r)||!n.rect)return;let a=S(e,i,e=>!!e.rect&&p(e.label?.trim()??``));if(!a?.rect)return;let o=ke(n.rect,a.rect);if(!o)return;let s=Oe(e,i,o);C(t,n,{rect:s}),y(e,i,e=>{d(e.label?.trim()??``)&&C(t,e,{rect:s})})})}function Oe(e,t,n){let r=n;return y(e,t,e=>{let t=e.label?.trim()??``;!e.rect||!d(t)||a(n,e.rect)&&s(e.rect)<s(r)&&(r=e.rect)}),r}function ke(e,t){let n=e.x+e.width,r=t.x+t.width,i={x:t.x,y:e.y,width:n-t.x,height:e.height};if(t.x>e.x&&h(t,i))return{...e,width:t.x-e.x};let a={x:e.x,y:e.y,width:r-e.x,height:e.height};if(r<n&&h(t,a))return{...e,x:r,width:n-r}}function Ae(e,t){j(e,(n,r,i)=>{m(n)&&f(n,M(e,i))&&t.suppressNode(n,M(e,i))})}function M(e,t){let n=[];return y(e,t,e=>{n.push(e)}),n}function je(e,t){let n=v(e),r=n?n.y+n.height:null;if(r!==null)for(let n=0;n<e.length;n+=1){let i=e[n];!i||!Me(i,r)||(t.suppressNode(i,[]),Ne(i,t,r),y(e,n,e=>{t.suppressNode(e,[])}))}}function Me(e,n){return!e.rect||t(e.type??``)!==`keyboard`?!1:e.rect.y>=n}function Ne(e,t,n){let r=typeof e.parentIndex==`number`?t.sourceNodesByIndex.get(e.parentIndex):void 0;for(;r?.rect&&r.rect.y>=n;)t.suppressNode(r,[]),r=typeof r.parentIndex==`number`?t.sourceNodesByIndex.get(r.parentIndex):void 0}function Pe(e,n){for(let r=0;r<e.length;r+=1){let i=e[r];if(!i)continue;if(Fe(i)){N(e,r,i,n);continue}if(!Ie(i))continue;let a=S(e,r,e=>t(e.type??``)===`searchfield`&&e.label===`Search`);a&&(n.suppressNode(i,[a]),Le(i,a,n),N(e,r,a,n))}}function Fe(e){return t(e.type??``)===`searchfield`&&e.label===`Search`}function Ie(e){let n=t(e.type??``);return e.label===`Toolbar`&&(n===`toolbar`||n===`searchfield`)}function N(e,t,n,r){y(e,t,e=>{e.index!==n.index&&Re(e)&&r.suppressNode(e,[n])})}function Le(e,t,n){let r=e;for(;typeof r.parentIndex==`number`;){let e=n.sourceNodesByIndex.get(r.parentIndex);if(!e||e.label!==`Toolbar`)return;n.suppressNode(e,[t]),r=e}}function Re(e){let n=t(e.type??``);return n===`button`?!1:n===`image`||e.label===`Search`}function ze(e,t){for(let n=0;n<e.length;n+=1){let r=e[n],i=r?.label?.trim();!r||t.isSuppressed(r)||!i||Be(e,n,r,i,t)}}function Be(e,n,r,i,a){let o=t(r.type??``);if(o===`statictext`||o===`link`){P(e,n,i,r,a);return}if(o!==`other`)return;let s=Ve(e,n,i);if(s){a.suppressNode(r,[s]);return}P(e,n,i,r,a)}function Ve(e,n,r){return S(e,n,e=>{let n=t(e.type??``);return(n===`link`||n===`searchfield`||b(e.type))&&e.label?.trim()===r})}function P(e,t,n,r,i){y(e,t,e=>{!i.semanticRepresentativeIndexes.has(e.index)&&ne(e,n)&&i.suppressNode(e,[r])})}function He(e,t){j(e,(n,r,i)=>{let a=S(e,i,e=>E(e)&&e.label?.trim()===r&&(h(e.rect,n.rect)||Ue(n,e)));a&&t.suppressNode(n,[a])})}function Ue(e,n){if(n.label?.trim()!==e.label?.trim())return!1;let r=t(n.type??``);return We(e,r)||r===`textfield`||Ge(e,r,n)}function We(e,t){let n=e.label?.trim();return t===`button`&&(n===`Dismiss`||n===`Back`)}function Ge(e,t,n){return t!==`button`||!e.rect||!n.rect?!1:e.rect.x===0&&e.rect.y===0&&e.rect.width>=300&&e.rect.height>=600&&n.rect.width<e.rect.width}function Ke(e,n){let r=D(e);for(let i of e){if(t(i.type??``)!==`other`||i.hittable===!0||i.label?.trim()||i.value?.trim()||!i.identifier?.trim())continue;let e=ae(i,r);(e.length!==0||i.hittable===!1)&&n.suppressNode(i,e)}}function qe(e,t){je(e,t),Ke(e,t),fe(e,t),Pe(e,t),He(e,t),De(e,t.replacements),Ae(e,t),ze(e,t)}function Je(e,t){for(let n=0;n<e.length;n+=1){let r=e[n],i=r?Ye(e,n,r,t):void 0;!r?.rect||!i||Qe(e,n,r,i,t)}}function Ye(e,n,r,i){let a=r.label?.trim();if(t(r.type??``)!==`cell`||a&&!Xe(a,r.identifier)&&!l(a))return a;let o=w(e,n).find(Ze),s=o?.label?.trim();return!o||!s?a:(C(i.replacements,r,{label:s}),i.suppressNode(o,[r]),s)}function Xe(e,t){return t?.trim()===e&&/^[A-Z_$][A-Za-z0-9_$]*Cell$/.test(e)}function Ze(e){if(!e.label?.trim())return!1;let n=t(e.type??``);return n===`statictext`||n===`text`||n===`textview`}function Qe(e,n,r,i,a){let o=t(r.type??``);if(o===`button`){F(w(e,n),i,a,r);return}if(o!==`cell`)return;let s=w(e,n);$e(s,r,i,a)||et(s,r,i,a)}function $e(e,t,n,r){let i=e.find(e=>nt(e,t,n));if(!i)return!1;let a=e.find(e=>I(e,t,n)),o=i.identifier?void 0:a?.identifier??t.identifier;return o&&C(r.replacements,i,{identifier:o}),r.suppressNode(t,[i]),tt(e,t,n,i,r),!0}function et(e,t,n,r){let i=e.find(e=>I(e,t,n));if(!i){e.some(ie)&&F(e,n,r,t);return}!t.identifier&&i.identifier&&C(r.replacements,t,{identifier:i.identifier}),r.suppressNode(i,[t]),F(e.filter(e=>e.index!==i.index),n,r,t)}function tt(e,t,n,r,i){for(let a of e)a.index!==r.index&&(I(a,t,n)||L(a,t)||rt(a,r)||x(a,n))&&i.suppressNode(a,[r])}function F(e,t,n,r){for(let i of e)(x(i,t)||r&&L(i,r))&&n.suppressNode(i,r?[r]:[])}function I(e,n,r){if(t(e.type??``)!==`button`)return!1;let i=n.identifier?.trim(),a=e.identifier?.trim();return i&&a&&i===a?!0:e.label?.trim()===r&&h(e.rect,n.rect)}function L(e,n){return t(e.type??``)===`button`&&!e.label?.trim()&&!e.value?.trim()&&h(e.rect,n.rect)}function nt(e,n,r){if(t(e.type??``)!==`switch`)return!1;let i=n.identifier?.trim(),a=e.identifier?.trim();return i&&a&&i===a?!0:e.label?.trim()===r}function rt(e,n){if(t(e.type??``)!==`switch`||e.index===n.index)return!1;let r=e.label?.trim();return r===n.value?.trim()||r===`0`||r===`1`}const R=1.15;function it(e,t,n){let r=new Map(e.map((e,t)=>[e.index,t]));for(let[i,a]of e.entries()){let s=at(e,r,t,a,n);if(!s)continue;B(e,i,n);let c=V(s.shelfRect,2);for(let t of s.intermediateSiblings){if(mt(t)||!t.rect||!o(t.rect,c))continue;let i=r.get(t.index);i!==void 0&&B(e,i,n)}}}function at(e,t,n,r,i){let a=ot(r,n,i.sourceNodesByIndex);if(!a)return;let o=lt(e,t,a.siblings,a.position,a.parent);if(!(o<0))return{shelfRect:a.rect,intermediateSiblings:a.siblings.slice(a.position+1,o)}}function ot(e,t,n){let r=ut(e,z(t,e.index));if(!r)return;let i=ct(e,n);if(!i||!i.rect)return;let a=z(t,i.index),o=a.findIndex(t=>t.index===e.index);if(st(a,o,e,r))return{rect:r.rect,parent:i,siblings:a,position:o}}function z(e,t){return e.get(t)??[]}function st(e,t,n,r){if(t<1)return!1;let i=dt(e,t,n);return i?!r.childActionsPresented||!ft(i,r.actionButtons):!1}function ct(e,t){return typeof e.parentIndex==`number`?t.get(e.parentIndex):void 0}function lt(e,t,n,r,i){return n.findIndex((n,a)=>a>r&&pt(e,t.get(n.index),n,i))}function ut(e,n){if(!b(e.type)||!e.rect)return;let r=e.rect,i=n.filter(e=>t(e.type??``)===`button`&&e.rect);if(i.length===0&&e.hiddenContentBelow===!0)return{rect:r,childActionsPresented:!1,actionButtons:i};if(i.length<3)return;let o=i.map(e=>e.rect.x+e.rect.width/2);if(o.every((e,t)=>t===0||e>o[t-1]))return{rect:r,childActionsPresented:i.some(e=>a(r,e.rect)),actionButtons:i}}function dt(e,t,n){if(!(!n.rect||t<1))for(let r=t-1;r>=0;--r){let t=e[r];if(!(!t.rect||!E(t))&&t.rect.x+t.rect.width/2<n.rect.x&&ht(t.rect,V(n.rect,2)))return t}}function ft(e,t){if(!e.rect||t.length===0)return!1;let n=Math.max(...t.map(e=>e.rect?.width??0)),r=Math.max(...t.map(e=>e.rect?.height??0));return e.rect.width>n*R||e.rect.height>r*R}function pt(e,n,r,i){return n!==void 0&&t(r.type??``)===`other`&&h(r.rect,i.rect)&&!!S(e,n,E)}function B(e,t,n){let r=e[t];if(r){n.suppressNode(r,[]);for(let r of w(e,t))n.suppressNode(r,[])}}function mt(e){let n=t(e.type??``);return n===`textfield`||n===`securetextfield`||n===`searchfield`||n===`textview`}function V(e,t){return{x:e.x-t,y:e.y-t,width:e.width+t*2,height:e.height+t*2}}function ht(e,t){return Math.max(e.y,t.y)<=Math.min(e.y+e.height,t.y+t.height)}function gt(e,t){let n=D(e);it(e,n,t),_t(e,n,t)}function _t(e,n,r){for(let i of e){if(t(i.type??``)!==`navigationbar`||!i.rect)continue;let e=n.get(i.index)??[],a=e.flatMap(t=>vt(t,e,i.rect));if(a.length!==1)continue;let{field:o,title:s,image:c,label:l}=a[0];C(r.replacements,o,{type:`Button`,label:l,enabled:!0,hittable:void 0,rect:Ct([c.rect,o.rect,s.rect])}),r.semanticRepresentativeIndexes.add(o.index),r.suppressNode(s,[o]),r.suppressNode(c,[o])}}function vt(e,t,n){let r=i(e);if(!yt(e,r))return[];let a=H(t,e=>bt(e,r)),o=H(t,xt);return a?.rect&&o?.rect&&St(o.rect,e.rect,a.rect,n)?[{field:e,title:a,image:o,label:r}]:[]}function yt(e,n){return t(e.type??``)===`textfield`&&e.enabled===!1&&!!e.rect&&!!n&&e.value?.trim()===n}function bt(e,n){return t(e.type??``)===`statictext`&&e.label?.trim()===n&&!!e.rect}function xt(e){return t(e.type??``)===`image`&&!!e.identifier?.trim()&&!!e.rect}function H(e,t){let n=e.filter(t);return n.length===1?n[0]:void 0}function St(e,t,n,r){let i=t.x-(e.x+e.width),o=n.x-(t.x+t.width);return a(r,e)&&a(r,t)&&a(r,n)&&i>=0&&i<=12&&o>=0&&o<=12&&U(e,t)&&U(t,n)}function U(e,t){return Math.max(e.y,t.y)<=Math.min(e.y+e.height,t.y+t.height)}function Ct(e){let t=Math.min(...e.map(e=>e.x)),n=Math.min(...e.map(e=>e.y)),r=Math.max(...e.map(e=>e.x+e.width)),i=Math.max(...e.map(e=>e.y+e.height));return{x:t,y:n,width:r-t,height:i-n}}function wt(e,n){let r=D(e);for(let i of e){if(t(i.type??``)===`element(58)`){C(n.replacements,i,{type:`WebView`});continue}let e=Tt(i,n.sourceNodesByIndex,r);if(e?.kind===`suppress`){n.suppressNode(i,[]);continue}e&&(C(n.replacements,i,{type:e.type,...e.type===`Heading`?{value:void 0}:{}}),n.semanticRepresentativeIndexes.add(i.index))}}function Tt(e,n,r){if(t(e.type??``)!==`other`)return null;let i=T(e,n,Ot),a=e.label?.trim();return!i||!a?null:Dt(e,i,a)?{kind:`suppress`}:Et(e,a,r)?{kind:`semantic`,type:W(e.value)?`Heading`:`StaticText`}:null}function Et(e,n,r){let i=r.get(e.index);if(i?.length!==1)return!1;let a=i[0];return t(a.type??``)===`statictext`&&a.label?.trim()===n&&!r.has(a.index)}function Dt(e,t,n){return e.parentIndex===t.index&&t.label?.trim()===n&&!W(e.value)}function Ot(e){let n=t(e.type??``);return n===`webview`||n===`element(58)`}function W(e){return/^[1-6]$/.test(e?.trim()??``)}const kt=[wt,gt,se,Je,qe];function G(e){if(e.length===0)return{nodes:e,presentedIndexesBySourceIndex:new Map};let t=new Map,n=new Map,r=new Set,i=new Map(e.map(e=>[e.index,e])),a=new Set,o={replacements:t,semanticRepresentativeIndexes:r,sourceNodesByIndex:i,isSuppressed:e=>a.has(e.index),suppressNode(e,t){if(a.add(e.index),t.length===0)return;let r=n.get(e.index)??new Set;for(let e of t)r.add(e.index);n.set(e.index,r)}};for(let t of kt)t(e,o);if(a.size===0&&t.size===0)return{nodes:e,presentedIndexesBySourceIndex:new Map(e.map(e=>[e.index,[e.index]]))};let s=e.filter(e=>!a.has(e.index)).map(e=>t.get(e.index)??e),c=re(s,a,e),l=new Map(s.map((e,t)=>[e.index,c[t].index]));return{nodes:c,presentedIndexesBySourceIndex:new Map(e.map(e=>[e.index,At(e.index,l,n)]))}}function At(e,t,n,r=new Set){let i=t.get(e);if(i!==void 0)return[i];if(r.has(e))return[];r.add(e);let a=new Set;for(let i of n.get(e)??[])for(let e of At(i,t,n,r))a.add(e);return[...a].sort((e,t)=>e-t)}var K=class extends Error{code=`IOS_SNAPSHOT_ENGINE_FAILED`;reason;details;constructor(e,t,n={}){super(t),this.name=`IosSnapshotEngineError`,this.reason=e,this.details=n}};function jt(e){return{reason:e.reason,...e.details}}function q(e){let t=new Map;for(let[n,r]of e.entries()){if(!Number.isInteger(r.index)||r.index<0||t.has(r.index))throw new K(`malformed-graph`,`iOS snapshot graph contains a duplicate or invalid node index`,{index:r.index});if(t.set(r.index,n),r.depth!==void 0&&(!Number.isInteger(r.depth)||r.depth<0))throw new K(`malformed-graph`,`iOS snapshot graph contains an invalid node depth`,{index:r.index,field:`depth`})}for(let[n,r]of e.entries()){if(r.parentIndex===void 0)continue;let e=t.get(r.parentIndex);if(e===void 0||e>=n)throw new K(`malformed-graph`,`iOS snapshot graph parent must precede its child`,{index:r.index,parentIndex:r.parentIndex})}}const J=new Set([`collectionview`,`scrollview`,`table`]),Mt=new Set([`application`,`window`]);function Nt(){return{projectedOut:!1}}function Pt(e,r,i,a,o,s){let c=s===`cursor-projected`?r.ancestorClip:void 0,l=Ft(e.rect,i,c),u=n(Y(e.rect)),d=n(l),f=t(e.type??``),p=It(s,r.projectedOut,u,d,f,o),m=Ut(e,Lt(s,r.projectedOut,u,d)&&!Rt(e,u,s),a,s),h=Ht(f,m,d,o),g=Bt(s,r.projectedOut,u,d,e);return{isIncluded:m,descendants:zt(s,p,c,l,h),effectiveRect:l,...g?{hiddenContentFrame:g}:{},establishesScrollAnchor:h}}function Ft(e,t,n){let r=Y(e);if(!r)return;let i=qt(r,t);return n&&(i=qt(i,n)),i}function It(e,t,n,r,i,a){return e===`plain-viewport`?!r:t||n&&!r&&Vt(i,a)}function Lt(e,t,n,r){return e===`plain-viewport`?r:!t&&(!n||r)}function Rt(e,t,n){return n!==`cursor-projected`||e.parentIndex===void 0||Wt(e)||!t?!1:Gt(e.rect)<=1||Kt(e.rect)<=1}function zt(e,t,n,r,i){return{projectedOut:t,...e===`cursor-projected`&&i?{ancestorClip:r}:{ancestorClip:n}}}function Bt(e,t,n,r,i){if(!(e!==`cursor-projected`||t||!n||r))return Y(i.rect)}function Vt(e,t){return t&&(e===`cell`||J.has(e))}function Ht(e,t,n,r){return t&&n&&r&&J.has(e)}function Ut(e,n,r,i){if(e.parentIndex===void 0)return!0;let a=t(e.type??``);return i===`plain-viewport`&&r&&!n&&a!==`application`?!1:Mt.has(a)||n}function Wt(e){return[e.label,e.identifier,e.value].some(e=>typeof e==`string`&&e.trim().length>0)}function Y(e){if(e&&[e.x,e.y,e.width,e.height].every(Number.isFinite)&&!(e.width<0||e.height<0))return{...e,width:Math.max(0,e.width),height:Math.max(0,e.height)}}function Gt(e){return Y(e)?.width??0}function Kt(e){return Y(e)?.height??0}function qt(e,t){let n=Math.max(e.x,t.x),r=Math.max(e.y,t.y),i=Math.min(e.x+e.width,t.x+t.width),a=Math.min(e.y+e.height,t.y+t.height);return i<=n||a<=r?{x:e.x,y:e.y,width:0,height:0}:{x:i>n?n:e.x,y:a>r?r:e.y,width:i-n,height:a-r}}function Jt(e){let t=D(e),n=new Set;for(let e of t.values()){let r=Yt(e,t);if(r){for(let i of e.slice(0,-1))if(Xt(r,i)){n.add(i.index);for(let e of ae(i,t))n.add(e.index)}}}return n}function Yt(e,t){let r=e.at(-1);if(!r||!Zt(r))return;let i=(t.get(r.index)??[]).find(Qt);if(!(i?.userInteractionEnabled!==!0||!n(i.rect)))return{container:r,dimmingRect:i.rect}}function Xt(e,t){return Zt(t)&&n(t.rect)&&a(e.dimmingRect,t.rect)}function Zt(e){return $t(e,`uitransitionview`)}function Qt(e){return $t(e,`uidimmingview`)}function $t(e,n){return t(e.role??``)===n}function en(e,t,n,r,i={}){q(e);let a=Jt(e),o=e.filter(e=>!a.has(e.index)),s=tn(o),c=new Map,l=[],u=new Map,d=0;for(let e of o){let a=nn(e,c,()=>{d+=1}),o=a?.traversal??Nt(),f=r===`cursor-projected`?a?.anchor:void 0,p=Pt(e,o,t,n,s.has(e.index),r);rn(p,f,u);let m=an(e,p,a,l,t,i),h=sn(p,f,m.keptIndex);c.set(e.index,{traversal:p.descendants,anchor:h,keptIndex:m.keptIndex,keptDepth:m.keptDepth})}let f=ln(u,l);return{nodes:f,stats:{presentedNodeCount:f.length,sourceNodeCount:e.length,parentClipLookups:d,modalContainedNodeCount:a.size}}}function tn(e){let t=new Set;for(let n of e)n.parentIndex!==void 0&&t.add(n.parentIndex);return t}function nn(e,t,n){if(e.parentIndex!==void 0)return n(),t.get(e.parentIndex)}function rn(e,t,n){e.hiddenContentFrame&&t&&cn(e.hiddenContentFrame,t,n)}function an(e,t,n,r,i,a){let o=n?.keptIndex,s=n?.keptDepth??-1;if(!t.isIncluded)return{keptIndex:o,keptDepth:s};let c=r.length;s+=1;let{hittable:l,...u}=e;return r.push({raw:{...u,index:c,depth:s,parentIndex:o,...on(l,e.parentIndex!==void 0,t.effectiveRect,e.enabled!==!1,i,a)},sourceIndex:e.index,...t.effectiveRect?{effectiveRect:t.effectiveRect}:{}}),o=c,{keptIndex:o,keptDepth:s}}function on(e,t,n,r,i,a){return a.hittabilityAvailable===!1?e===!1||!r?{hittable:!1}:{}:{hittable:t&&e===!0&&c(r,n,i)}}function sn(e,t,n){return e.establishesScrollAnchor&&n!==void 0&&e.effectiveRect?{index:n,rect:e.effectiveRect}:t}function cn(e,t,n){let r=n.get(t.index)??{above:!1,below:!1};e.y+e.height<=t.rect.y?r.above=!0:e.y>=t.rect.y+t.rect.height&&(r.below=!0),n.set(t.index,r)}function ln(e,t){return t.map(t=>{let n=e.get(t.raw.index);if(!n)return t;let r=t.raw;return{...t,raw:{...r,hiddenContentAbove:r.hiddenContentAbove===!0||n.above?!0:void 0,hiddenContentBelow:r.hiddenContentBelow===!0||n.below?!0:void 0}}})}const un=new Set([`collectionview`,`scrollview`,`table`]);function dn(e){return fn(e.viewport)}function fn(e){if(e.kind===`missing`)throw new K(e.reason===`invalid`?`invalid-viewport`:`missing-viewport`,`regular iOS snapshot presentation requires a valid viewport`,{field:`viewport`});if(!n(e.rect))throw new K(`invalid-viewport`,`regular iOS snapshot presentation requires a positive finite viewport`,{field:`viewport`});return e.rect}function pn(e,t,r,i=!0){q(e);let a=new Map,o=0;for(let s of e){let e=mn(s,a,t,()=>{o+=1}),c=bn(s.rect);if(hn(s,i),!c||!n(c)){gn(s,c),a.set(s.index,e);continue}_n(s,c,e),vn(s,c,t),a.set(s.index,yn(s,c,e,r))}return{parentClipLookups:o}}function mn(e,t,n,r){if(e.parentIndex===void 0)return n;r();let i=t.get(e.parentIndex);if(!i)throw new K(`invalid-presented-payload`,`regular iOS snapshot payload refers to a parent outside the payload`,{index:e.index,parentIndex:e.parentIndex});return i}function hn(e,t){if(!(e.hittable!==!0||t))throw new K(`invalid-presented-payload`,`iOS snapshot payload marked a node actionable without hittability evidence`,{index:e.index})}function gn(e,t){if(e.hittable===!0)throw new K(`regular-degenerate-actionable-node`,`regular iOS snapshot node with a missing or degenerate frame is actionable`,{index:e.index,frame:t??e.rect})}function _n(e,t,n){if(!xn(t,n))throw new K(`regular-node-outside-cumulative-clip`,`regular iOS snapshot node escaped its cumulative clip`,{index:e.index,frame:t,clip:n})}function vn(e,t,n){if(!(e.hittable!==!0||e.enabled!==!1&&r(n,t.x+t.width/2,t.y+t.height/2)))throw new K(`invalid-presented-payload`,`regular iOS snapshot payload marked a disabled or off-viewport node actionable`,{index:e.index,frame:t})}function yn(e,n,r,i){return i===`cursor-projected`&&un.has(t(e.type??``))?n:r}function X(e,t,n,r,i=!0){if(t===`raw`)return q(e),{parentClipLookups:0};if(!n)throw new K(`missing-viewport`,`regular iOS snapshot payload cannot be validated without a viewport`,{field:`viewport`});try{return pn(e,n,r,i)}catch(e){throw e instanceof K&&e.code===`IOS_SNAPSHOT_ENGINE_FAILED`&&e.reason===`malformed-graph`?new K(`invalid-presented-payload`,e.message,e.details):e}}function bn(e){if(!(!e||![e.x,e.y,e.width,e.height].every(Number.isFinite))&&!(e.width<0||e.height<0))return{...e,width:Math.max(0,e.width),height:Math.max(0,e.height)}}function xn(e,t){let n=1e-4;return a({x:t.x-n,y:t.y-n,width:t.width+n*2,height:t.height+n*2},e)}const Sn=new Set([`button`,`cell`,`checkbox`,`collectionview`,`link`,`menuitem`,`picker`,`searchfield`,`securetextfield`,`segmentedcontrol`,`slider`,`scrollview`,`stepper`,`switch`,`tabbar`,`table`,`textfield`,`textview`,`webview`]);function Cn(e){let t=Fn(e.nodes),n=Tn(e,t);return e.projection===`raw`?En(n,e.depth,t):Dn(n,e.depth)}function Z(e){let t=Fn(e.nodes);return e.projection===`raw`?En(e.nodes,e.depth,t):Dn(e.nodes,e.depth)}function wn(e){return e.parentIndex===void 0||Sn.has(t(e.type??``))||In(e)}function Tn(e,t){let n=e.scope?.trim().toLowerCase();if(!n)return[...e.nodes];for(let r=0;r<e.nodes.length;r+=1){let i=e.nodes[r];if(!i||!Nn(i.raw,n))continue;let a=Pn(e.nodes,r,t);if(!(e.projection===`raw`||a.some(t=>wn(e.nodes[t].raw))))continue;let o=a.map(t=>e.nodes[t]);return Mn(e.projection===`raw`&&e.depth!==null?o.filter(n=>Q(n,t)-Q(i,t)<=e.depth):o,Q(i,t),t)}return[]}function En(e,t,n){let r=t===null?[...e]:e.filter(e=>Q(e,n)<=t);return{nodes:r.map(e=>({...e.raw,rect:e.raw.rect})),sourceIndexes:r.map(e=>e.sourceIndex)}}function Dn(e,t){let n=[],r=[],i=new Map;for(let a of e){let e=On(a,i),o=kn(a,e,t,n.length);if(!o){jn(a,e,i);continue}n.push(o),r.push(a.sourceIndex),i.set(a.raw.index,o)}return{nodes:n,sourceIndexes:r}}function On(e,t){return e.raw.parentIndex===void 0?void 0:t.get(e.raw.parentIndex)}function kn(e,t,n,r){if(!wn(e.raw))return;let i=t?(t.depth??0)+1:0;if(n!==null&&i>n)return;let a=An(e);return{...e.raw,index:r,depth:i,parentIndex:t?.index,...e.effectiveRect?{rect:e.effectiveRect}:{rect:void 0},...a===void 0?{}:{hittable:a}}}function An(e){if(e.raw.hittable!==void 0)return!!(e.raw.hittable===!0&&e.effectiveRect&&e.effectiveRect.width>0&&e.effectiveRect.height>0)}function jn(e,t,n){t&&n.set(e.raw.index,t)}function Mn(e,t,n){let r=new Map(e.map((e,t)=>[e.raw.index,t]));return e.map((e,i)=>({...e,raw:{...e.raw,index:i,depth:Math.max(0,Q(e,n)-t),parentIndex:e.raw.parentIndex===void 0?void 0:r.get(e.raw.parentIndex)}}))}function Nn(e,t){return[e.label,e.identifier,e.value].some(e=>typeof e==`string`&&e.toLowerCase().includes(t))}function Pn(e,t,n){let r=Q(e[t],n),i=[];for(let a=t;a<e.length&&!(a>t&&Q(e[a],n)<=r);a+=1)i.push(a);return i}function Q(e,t){return Math.max(0,e.raw.depth??t?.get(e.raw.index)??0)}function Fn(e){let t=new Map;for(let n of e){let e=(n.raw.parentIndex===void 0?-1:t.get(n.raw.parentIndex)??-1)+1;t.set(n.raw.index,n.raw.depth===void 0?e:Math.max(0,n.raw.depth))}return t}function In(e){return[e.label,e.identifier,e.value].some(e=>typeof e==`string`&&e.trim().length>0)}function Ln(e,t,n=`cursor-projected`){Rn(e,t);let r=e.validation.presentationKey.projection,i=r===`regular`?fn(e.validation.viewport):void 0,a=e.validation.hittability.kind===`available`,o=zn(e,r,i,n,a),s=Bn(e.presentation.payload.nodes,r,t),c=Vn(s.nodes,r,i,n,a,o);return{nodes:s.nodes,...e.presentation.qualityPayload?{qualityNodes:[...e.presentation.qualityPayload.nodes]}:{},presentedIndexesBySourceIndex:s.presentedIndexesBySourceIndex,stats:{presentedNodeCount:s.nodes.length,sourceNodeCount:e.presentation.payload.nodes.length,parentClipLookups:c.parentClipLookups,modalContainedNodeCount:0}}}function Rn(e,t){if(!Hn(_(t),e.validation.presentationKey))throw new K(`projection-mismatch`,`presented iOS snapshot does not match the requested presentation key`,{projection:e.validation.presentationKey.projection});if(e.presentation.intent!==t.acquisitionIntent)throw new K(`projection-mismatch`,`presented iOS snapshot does not match the requested acquisition intent`,{field:`acquisitionIntent`})}function zn(e,t,n,r,i){let a=X(e.presentation.payload.nodes,t,n,r,i);if(e.presentation.qualityPayload)try{X(e.presentation.qualityPayload.nodes,t,n,r,i)}catch(e){throw e instanceof K?new K(`invalid-quality-payload`,e.message,e.details):e}return a}function Bn(e,t,n){return t===`regular`&&n.interactiveOnly?G([...e]):{nodes:[...e],presentedIndexesBySourceIndex:Un(e)}}function Vn(e,t,n,r,i,a){return t!==`regular`||!n?a:X(e,t,n,r,i)}function Hn(e,t){return e.projection===t.projection&&e.interactiveOnly===t.interactiveOnly&&e.depth===t.depth&&e.scope===t.scope&&e.customActions===t.customActions}function Un(e){return new Map(e.map(e=>[e.index,[e.index]]))}function Wn(t,n,r={}){let i=Gn(t,n,r),a=t.stage===`presented`?t.validation.presentationKey:_(n),o=t.stage===`acquired`?t.acquisition.truncated:t.presentation.payload.truncated;return{payload:{nodes:e(i.nodes),...o===void 0?{}:{truncated:o}},presentationKey:a,comparisonIdentity:ee(t,n),residue:t.stage===`acquired`?[...t.acquisition.residue]:[...t.validation.residue]}}function Gn(e,t,n={}){let r=n.foldPolicy??`cursor-projected`;return e.stage===`acquired`?Kn(e.acquisition,t,r):Ln(e,t,r)}function Kn(e,t,n){if(Jn(e,g(t)),t.projection===`raw`){q(e.nodes);let r=e.nodes.map(e=>({raw:e,sourceIndex:e.index})),i=Cn({nodes:r,projection:`raw`,scope:t.scope,depth:t.depth,foldPolicy:n}),a=t.scope===null?void 0:Z({nodes:r,projection:`raw`,depth:null,foldPolicy:n}).nodes;return{nodes:i.nodes,...a?{qualityNodes:a}:{},presentedIndexesBySourceIndex:$(e.nodes,i.nodes,i.sourceIndexes,Yn(i.nodes)),stats:{presentedNodeCount:i.nodes.length,sourceNodeCount:e.nodes.length,parentClipLookups:0,modalContainedNodeCount:0}}}let r=dn(e),i=!qn(e.residue),a=en(e.nodes,r,t.interactiveOnly,n,{hittabilityAvailable:i}),o=Cn({nodes:a.nodes,projection:`regular`,scope:t.scope,depth:t.depth,foldPolicy:n}),s=t.interactiveOnly?G(o.nodes):{nodes:o.nodes,presentedIndexesBySourceIndex:Yn(o.nodes)},c=X(s.nodes,`regular`,r,n,i),l=t.scope===null?void 0:Z({nodes:a.nodes,projection:`regular`,depth:null,foldPolicy:n}).nodes;return{nodes:s.nodes,...l?{qualityNodes:l}:{},presentedIndexesBySourceIndex:$(e.nodes,o.nodes,o.sourceIndexes,s.presentedIndexesBySourceIndex),stats:{presentedNodeCount:s.nodes.length,sourceNodeCount:e.nodes.length,parentClipLookups:a.stats.parentClipLookups+c.parentClipLookups,modalContainedNodeCount:a.stats.modalContainedNodeCount}}}function qn(e){return e.some(e=>e.kind===`unavailable-fact`&&e.fact===`hittability`)}function Jn(e,t){let n=e.hint;if(n.projection!==t.projection||n.rawTraversalDepth!==t.rawTraversalDepth||n.regularPresentedDepth!==t.regularPresentedDepth||n.interactiveOnly!==t.interactiveOnly||n.customActions!==t.customActions||n.acquisitionIntent!==t.acquisitionIntent)throw new K(`projection-mismatch`,`acquired iOS snapshot does not match the requested capture hint`,{projection:n.projection})}function Yn(e){return new Map(e.map(e=>[e.index,[e.index]]))}function $(e,t,n,r){let i=new Map(t.map((e,t)=>[e.index,n[t]])),a=new Map(e.map(e=>[e.index,[]]));for(let[e,t]of r){let n=i.get(e);n!==void 0&&a.set(n,t)}return a}export{G as a,jt as i,Ln as n,K as r,Wn as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{D as e,m as t}from"./sdk-contracts.js";import{Ir as n,Jr as r,Ur as i,Wr as a}from"./sdk-batch.js";import{i as o,n as s,r as c,t as l}from"./ios-snapshot-planning.js";import{r as u,t as d}from"./tree.js";import{t as f}from"./semantic-index.js";import{a as p,i as m,n as h,o as g,r as _,t as v}from"./runner-presentation.js";const y=new Set([`collectionview`,`scrollview`,`table`]),b=new Set([`application`,`window`]);function x(){return{projectedOut:!1}}function S(e,t,r,i,o,s){let c=s===`cursor-projected`?t.ancestorClip:void 0,l=C(e.rect,r,c),u=a(w(e.rect)),d=a(l),f=n(e.type??``),p=ee(s,t.projectedOut,u,d,f,o),m=se(e,te(s,t.projectedOut,u,d)&&!ne(e,u,s),i,s),h=oe(f,m,d,o),g=ie(s,t.projectedOut,u,d,e);return{isIncluded:m,descendants:re(s,p,c,l,h),effectiveRect:l,...g?{hiddenContentFrame:g}:{},establishesScrollAnchor:h}}function C(e,t,n){let r=w(e);if(!r)return;let i=D(r,t);return n&&(i=D(i,n)),i}function ee(e,t,n,r,i,a){return e===`plain-viewport`?!r:t||n&&!r&&ae(i,a)}function te(e,t,n,r){return e===`plain-viewport`?r:!t&&(!n||r)}function ne(e,t,n){return n!==`cursor-projected`||e.parentIndex===void 0||ce(e)||!t?!1:T(e.rect)<=1||E(e.rect)<=1}function re(e,t,n,r,i){return{projectedOut:t,...e===`cursor-projected`&&i?{ancestorClip:r}:{ancestorClip:n}}}function ie(e,t,n,r,i){if(!(e!==`cursor-projected`||t||!n||r))return w(i.rect)}function ae(e,t){return t&&(e===`cell`||y.has(e))}function oe(e,t,n,r){return t&&n&&r&&y.has(e)}function se(e,t,r,i){if(e.parentIndex===void 0)return!0;let a=n(e.type??``);return i===`plain-viewport`&&r&&!t&&a!==`application`?!1:b.has(a)||t}function ce(e){return[e.label,e.identifier,e.value].some(e=>typeof e==`string`&&e.trim().length>0)}function w(e){if(e&&[e.x,e.y,e.width,e.height].every(Number.isFinite)&&!(e.width<0||e.height<0))return{...e,width:Math.max(0,e.width),height:Math.max(0,e.height)}}function T(e){return w(e)?.width??0}function E(e){return w(e)?.height??0}function D(e,t){let n=Math.max(e.x,t.x),r=Math.max(e.y,t.y),i=Math.min(e.x+e.width,t.x+t.width),a=Math.min(e.y+e.height,t.y+t.height);return i<=n||a<=r?{x:e.x,y:e.y,width:0,height:0}:{x:i>n?n:e.x,y:a>r?r:e.y,width:i-n,height:a-r}}function O(e){let t=d(e),n=new Set;for(let e of t.values()){let r=k(e,t);if(r){for(let i of e.slice(0,-1))if(A(r,i)){n.add(i.index);for(let e of u(i,t))n.add(e.index)}}}return n}function k(e,t){let n=e.at(-1);if(!n||!j(n))return;let r=(t.get(n.index)??[]).find(M);if(!(r?.userInteractionEnabled!==!0||!a(r.rect)))return{container:n,dimmingRect:r.rect}}function A(e,t){return j(t)&&a(t.rect)&&r(e.dimmingRect,t.rect)}function j(e){return N(e,`uitransitionview`)}function M(e){return N(e,`uidimmingview`)}function N(e,t){return n(e.role??``)===t}function P(e,t,n,r,i={}){m(e);let a=O(e),o=e.filter(e=>!a.has(e.index)),s=F(o),c=new Map,l=[],u=new Map,d=0;for(let e of o){let a=I(e,c,()=>{d+=1}),o=a?.traversal??x(),f=r===`cursor-projected`?a?.anchor:void 0,p=S(e,o,t,n,s.has(e.index),r);L(p,f,u);let m=R(e,p,a,l,t,i),h=B(p,f,m.keptIndex);c.set(e.index,{traversal:p.descendants,anchor:h,keptIndex:m.keptIndex,keptDepth:m.keptDepth})}let f=H(u,l);return{nodes:f,stats:{presentedNodeCount:f.length,sourceNodeCount:e.length,parentClipLookups:d,modalContainedNodeCount:a.size}}}function F(e){let t=new Set;for(let n of e)n.parentIndex!==void 0&&t.add(n.parentIndex);return t}function I(e,t,n){if(e.parentIndex!==void 0)return n(),t.get(e.parentIndex)}function L(e,t,n){e.hiddenContentFrame&&t&&V(e.hiddenContentFrame,t,n)}function R(e,t,n,r,i,a){let o=n?.keptIndex,s=n?.keptDepth??-1;if(!t.isIncluded)return{keptIndex:o,keptDepth:s};let c=r.length;s+=1;let{hittable:l,...u}=e;return r.push({raw:{...u,index:c,depth:s,parentIndex:o,...z(l,e.parentIndex!==void 0,t.effectiveRect,e.enabled!==!1,i,a)},sourceIndex:e.index,...t.effectiveRect?{effectiveRect:t.effectiveRect}:{}}),o=c,{keptIndex:o,keptDepth:s}}function z(e,t,n,r,a,o){return o.hittabilityAvailable===!1?e===!1||!r?{hittable:!1}:{}:{hittable:t&&e===!0&&i(r,n,a)}}function B(e,t,n){return e.establishesScrollAnchor&&n!==void 0&&e.effectiveRect?{index:n,rect:e.effectiveRect}:t}function V(e,t,n){let r=n.get(t.index)??{above:!1,below:!1};e.y+e.height<=t.rect.y?r.above=!0:e.y>=t.rect.y+t.rect.height&&(r.below=!0),n.set(t.index,r)}function H(e,t){return t.map(t=>{let n=e.get(t.raw.index);if(!n)return t;let r=t.raw;return{...t,raw:{...r,hiddenContentAbove:r.hiddenContentAbove===!0||n.above?!0:void 0,hiddenContentBelow:r.hiddenContentBelow===!0||n.below?!0:void 0}}})}const U=new Set([`button`,`cell`,`checkbox`,`collectionview`,`link`,`menuitem`,`picker`,`searchfield`,`securetextfield`,`segmentedcontrol`,`slider`,`scrollview`,`stepper`,`switch`,`tabbar`,`table`,`textfield`,`textview`,`webview`]);function W(e){let t=X(e.nodes),n=le(e,t);return e.projection===`raw`?q(n,e.depth,t):J(n,e.depth)}function G(e){let t=X(e.nodes);return e.projection===`raw`?q(e.nodes,e.depth,t):J(e.nodes,e.depth)}function K(e){return e.parentIndex===void 0||U.has(n(e.type??``))||_e(e)}function le(e,t){let n=e.scope?.trim().toLowerCase();if(!n)return[...e.nodes];for(let r=0;r<e.nodes.length;r+=1){let i=e.nodes[r];if(!i||!he(i.raw,n))continue;let a=ge(e.nodes,r,t);if(!(e.projection===`raw`||a.some(t=>K(e.nodes[t].raw))))continue;let o=a.map(t=>e.nodes[t]);return me(e.projection===`raw`&&e.depth!==null?o.filter(n=>Y(n,t)-Y(i,t)<=e.depth):o,Y(i,t),t)}return[]}function q(e,t,n){let r=t===null?[...e]:e.filter(e=>Y(e,n)<=t);return{nodes:r.map(e=>({...e.raw,rect:e.raw.rect})),sourceIndexes:r.map(e=>e.sourceIndex)}}function J(e,t){let n=[],r=[],i=new Map;for(let a of e){let e=ue(a,i),o=de(a,e,t,n.length);if(!o){pe(a,e,i);continue}n.push(o),r.push(a.sourceIndex),i.set(a.raw.index,o)}return{nodes:n,sourceIndexes:r}}function ue(e,t){return e.raw.parentIndex===void 0?void 0:t.get(e.raw.parentIndex)}function de(e,t,n,r){if(!K(e.raw))return;let i=t?(t.depth??0)+1:0;if(n!==null&&i>n)return;let a=fe(e);return{...e.raw,index:r,depth:i,parentIndex:t?.index,...e.effectiveRect?{rect:e.effectiveRect}:{rect:void 0},...a===void 0?{}:{hittable:a}}}function fe(e){if(e.raw.hittable!==void 0)return!!(e.raw.hittable===!0&&e.effectiveRect&&e.effectiveRect.width>0&&e.effectiveRect.height>0)}function pe(e,t,n){t&&n.set(e.raw.index,t)}function me(e,t,n){let r=new Map(e.map((e,t)=>[e.raw.index,t]));return e.map((e,i)=>({...e,raw:{...e.raw,index:i,depth:Math.max(0,Y(e,n)-t),parentIndex:e.raw.parentIndex===void 0?void 0:r.get(e.raw.parentIndex)}}))}function he(e,t){return[e.label,e.identifier,e.value].some(e=>typeof e==`string`&&e.toLowerCase().includes(t))}function ge(e,t,n){let r=Y(e[t],n),i=[];for(let a=t;a<e.length&&!(a>t&&Y(e[a],n)<=r);a+=1)i.push(a);return i}function Y(e,t){return Math.max(0,e.raw.depth??t?.get(e.raw.index)??0)}function X(e){let t=new Map;for(let n of e){let e=(n.raw.parentIndex===void 0?-1:t.get(n.raw.parentIndex)??-1)+1;t.set(n.raw.index,n.raw.depth===void 0?e:Math.max(0,n.raw.depth))}return t}function _e(e){return[e.label,e.identifier,e.value].some(e=>typeof e==`string`&&e.trim().length>0)}function ve(e,n,r={}){let i=ye(e,n,r),a=e.stage===`presented`?e.validation.presentationKey:s(n),o=e.stage===`acquired`?e.acquisition.truncated:e.presentation.payload.truncated;return{payload:{nodes:t(i.nodes),...o===void 0?{}:{truncated:o}},presentationKey:a,comparisonIdentity:l(e,n),residue:e.stage===`acquired`?[...e.acquisition.residue]:[...e.validation.residue]}}function ye(e,t,n={}){let r=n.foldPolicy??`cursor-projected`;return e.stage===`acquired`?be(e.acquisition,t,r):v(e,t,r)}function be(e,t,n){if(Se(e,o(t)),t.projection===`raw`){m(e.nodes);let r=e.nodes.map(e=>({raw:e,sourceIndex:e.index})),i=W({nodes:r,projection:`raw`,scope:t.scope,depth:t.depth,foldPolicy:n}),a=t.scope===null?void 0:G({nodes:r,projection:`raw`,depth:null,foldPolicy:n}).nodes;return{nodes:i.nodes,...a?{qualityNodes:a}:{},presentedIndexesBySourceIndex:Q(e.nodes,i.nodes,i.sourceIndexes,Z(i.nodes)),stats:{presentedNodeCount:i.nodes.length,sourceNodeCount:e.nodes.length,parentClipLookups:0,modalContainedNodeCount:0}}}let r=h(e),i=!xe(e.residue),a=P(e.nodes,r,t.interactiveOnly,n,{hittabilityAvailable:i}),s=W({nodes:a.nodes,projection:`regular`,scope:t.scope,depth:t.depth,foldPolicy:n}),c=t.interactiveOnly?f(s.nodes):{nodes:s.nodes,presentedIndexesBySourceIndex:Z(s.nodes)},l=_(c.nodes,`regular`,r,n,i),u=t.scope===null?void 0:G({nodes:a.nodes,projection:`regular`,depth:null,foldPolicy:n}).nodes;return{nodes:c.nodes,...u?{qualityNodes:u}:{},presentedIndexesBySourceIndex:Q(e.nodes,s.nodes,s.sourceIndexes,c.presentedIndexesBySourceIndex),stats:{presentedNodeCount:c.nodes.length,sourceNodeCount:e.nodes.length,parentClipLookups:a.stats.parentClipLookups+l.parentClipLookups,modalContainedNodeCount:a.stats.modalContainedNodeCount}}}function xe(e){return e.some(e=>e.kind===`unavailable-fact`&&e.fact===`hittability`)}function Se(e,t){let n=e.hint;if(n.projection!==t.projection||n.rawTraversalDepth!==t.rawTraversalDepth||n.regularPresentedDepth!==t.regularPresentedDepth||n.interactiveOnly!==t.interactiveOnly||n.customActions!==t.customActions||n.acquisitionIntent!==t.acquisitionIntent)throw new p(`projection-mismatch`,`acquired iOS snapshot does not match the requested capture hint`,{projection:n.projection})}function Z(e){return new Map(e.map(e=>[e.index,[e.index]]))}function Q(e,t,n,r){let i=new Map(t.map((e,t)=>[e.index,n[t]])),a=new Map(e.map(e=>[e.index,[]]));for(let[e,t]of r){let n=i.get(e);n!==void 0&&a.set(n,t)}return a}const Ce={"acquisition-depth":`iOS snapshot acquisition does not report hierarchy completeness; provider-side depth or child limits may omit nodes.`,hittability:`iOS snapshot acquisition does not provide hittability evidence; regular snapshots omit unverified hittability while raw snapshots preserve supplied facts.`,truncation:`iOS snapshot acquisition does not expose truncation metadata; tree completeness is not independently verified.`};function $(e,t){let n=c({raw:t?.raw,interactiveOnly:t?.interactiveOnly,depth:t?.depth,scope:t?.scope,customActions:t?.customActions,acquisitionIntent:e.acquisition.intent}),r=we(e,n);try{let t=ve(r,n);return{backend:`xctest`,producer:e.acquisition.producer,nodes:[...t.payload.nodes],comparisonIdentity:t.comparisonIdentity,...e.acquisition.truncated===void 0?{}:{truncated:e.acquisition.truncated},...Te(e.acquisition.residue)}}catch(e){Ee(e)}}function we(e,t){let n=o(t);return e.acquisition.intent===`full`?{stage:`acquired`,acquisition:{...e.acquisition,intent:`full`,hint:{...n,acquisitionIntent:`full`}}}:{stage:`acquired`,acquisition:{...e.acquisition,intent:`surface-observation`,hint:{...n,acquisitionIntent:`surface-observation`}}}}function Te(e){let t=new Set(e.flatMap(e=>{if(e.kind===`missing-viewport`)return[`iOS snapshot acquisition did not provide a valid viewport (${e.reason}); retry with --raw to inspect the acquired tree, while regular presentation requires viewport evidence.`];if(e.kind!==`unavailable-fact`)return[];let t=Ce[e.fact];return t?[t]:[]}));return t.size===0?{}:{warnings:[...t]}}function Ee(t){if(!(t instanceof p))throw t;let n=g(t),r=t.reason===`missing-viewport`||t.reason===`invalid-viewport`?`Use snapshot --raw to inspect the acquired iOS tree; regular presentation requires valid viewport evidence.`:void 0;throw new e(`COMMAND_FAILED`,t.message,{...n,...r?{hint:r}:{}},t)}export{$ as presentIosSnapshotAcquisition};
|
|
1
|
+
import{A as e}from"./sdk-contracts.js";import{i as t,r as n}from"./ios-snapshot-planning.js";import{i as r,r as i,t as a}from"./ios-snapshot-engine.js";const o={"acquisition-depth":`iOS snapshot acquisition does not report hierarchy completeness; provider-side depth or child limits may omit nodes.`,hittability:`iOS snapshot acquisition does not provide hittability evidence; regular snapshots omit unverified hittability while raw snapshots preserve supplied facts.`,truncation:`iOS snapshot acquisition does not expose truncation metadata; tree completeness is not independently verified.`};function s(e,t){let r=n({raw:t?.raw,interactiveOnly:t?.interactiveOnly,depth:t?.depth,scope:t?.scope,customActions:t?.customActions,acquisitionIntent:e.acquisition.intent}),i=c(e,r);try{let t=a(i,r);return{backend:`xctest`,producer:e.acquisition.producer,nodes:[...t.payload.nodes],comparisonIdentity:t.comparisonIdentity,...e.acquisition.truncated===void 0?{}:{truncated:e.acquisition.truncated},...l(e.acquisition.residue)}}catch(e){u(e)}}function c(e,n){let r=t(n);return e.acquisition.intent===`full`?{stage:`acquired`,acquisition:{...e.acquisition,intent:`full`,hint:{...r,acquisitionIntent:`full`}}}:{stage:`acquired`,acquisition:{...e.acquisition,intent:`surface-observation`,hint:{...r,acquisitionIntent:`surface-observation`}}}}function l(e){let t=new Set(e.flatMap(e=>{if(e.kind===`missing-viewport`)return[`iOS snapshot acquisition did not provide a valid viewport (${e.reason}); retry with --raw to inspect the acquired tree, while regular presentation requires viewport evidence.`];if(e.kind!==`unavailable-fact`)return[];let t=o[e.fact];return t?[t]:[]}));return t.size===0?{}:{warnings:[...t]}}function u(t){if(!(t instanceof i))throw t;let n=r(t),a=t.reason===`missing-viewport`||t.reason===`invalid-viewport`?`Use snapshot --raw to inspect the acquired iOS tree; regular presentation requires valid viewport evidence.`:void 0;throw new e(`COMMAND_FAILED`,t.message,{...n,...a?{hint:a}:{}},t)}export{s as presentIosSnapshotAcquisition};
|
package/dist/src/lease.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{A as e,M as t,P as n}from"./sdk-contracts.js";import{d as r,l as i,o as a,r as o}from"./lease-scope.js";import{rn as s}from"./sdk-batch.js";import{n as c}from"./catalog.js";import{i as l,r as u}from"./request-cancel.js";import"./request.js";import{a as d,n as f}from"./provider-session-ownership.js";import{n as p,r as m}from"./lease-context.js";async function h(e){let{req:t,sessionName:n,sessionStore:o,leaseRegistry:d,providerRuntimeIds:f,providerRuntimeRequiredIds:h,leaseLifecycleProvider:y,cloudArtifactProvider:b}=e,w=p(t);switch(t.command){case c.artifacts:return{ok:!0,data:await C(t,m(t,o.get(n)),d,b)};case`lease_allocate`:{S(w.leaseProvider,f,h);let e=d.allocateLease(a(w));return await d.runDeviceMutation(e,async()=>{let n;try{n=await y?.allocate?.(e,{...x(t),signal:u(t.meta?.requestId),deadline:Date.now()+s}),k(d,e,n)}catch(t){throw d.releaseLease(g(e)),t}if(l(t.meta?.requestId))throw await v(e,y,d);return{ok:!0,data:{lease:e,...n?{provider:n}:{}}}})}case`lease_heartbeat`:{let e=d.heartbeatLease(i(w)),n=await y?.heartbeat?.(e,x(t));return{ok:!0,data:{lease:e,...n?{provider:n}:{}}}}case`lease_release`:{let e=r(w),n=d.getLease(e),i=await d.runDeviceMutation(n,async()=>await _(d,y,n,e,x(t)));return{ok:!0,data:{released:i.registryReleased,...i.provider?{provider:i.provider}:{}}}}default:return null}}function g(e){return r({leaseId:e.leaseId,tenantId:e.tenantId,runId:e.runId,leaseBackend:e.backend,leaseProvider:e.leaseProvider,deviceKey:e.deviceKey,clientId:e.clientId})}async function _(e,t,n,r,i){let a=n?await t?.release?.(n,i):void 0;return n&&k(e,n,a),{registryReleased:e.releaseLease(r).released,provider:a}}async function v(e,t,r){let i=g(e),a,o;try{a=await _(r,t,e,i)}catch(e){o=n(e),a={registryReleased:r.releaseLease(i).released}}return y(e,a,o)}function y(e,n,r){let i=n.provider?.providerSessionId,a=Array.isArray(n.provider?.warnings)?n.provider.warnings:[],o=n.registryReleased&&r===void 0&&a.length===0;return t({leaseId:e.leaseId,leaseProvider:e.leaseProvider,released:o,registryReleased:n.registryReleased,providerSessionId:i,...a.length>0?{warnings:a}:{},...r===void 0?{}:{releaseError:r},hint:b(o,e.leaseId,i)})}function b(e,t,n){return e?`The lease request was canceled while the provider was still allocating; the session it produced was released.`:`The lease request was canceled while the provider was still allocating, and the session it produced could NOT be confirmed released — it may still be running and billing. Stop provider session ${String(n??`(unknown)`)} for lease ${t} by hand.`}function x(e){return{flags:e.flags,...typeof e.flags?.providerApp==`string`?{initialApp:e.flags.providerApp}:{},cwd:typeof e.meta?.cwd==`string`?e.meta.cwd:void 0,...e.internal?.publicNetworkOnly?{publicNetworkOnly:!0}:{}}}function S(t,n,r){if(!(!t||n===void 0||r===void 0||!r.includes(t)||n.includes(t)))throw new e(`UNSUPPORTED_OPERATION`,`Provider "${t}" is not available in this daemon runtime.`,{provider:t,hint:`Restart the daemon with ${t} configured, then retry lease allocation.`})}async function C(e,t,n,r){let i=O(e.flags,`providerSessionId`);return w(t,i)?await T(t.tenantId):await E(t,i,n,r)}function w(e,t){return o(e)||!e.leaseProvider&&!t}async function T(e){let t=await d(e);return{source:`daemon`,status:`ready`,artifacts:t,...t.length===0?{message:`No daemon artifacts available.`}:{}}}async function E(t,n,r,i){if(!t.leaseProvider)throw new e(`INVALID_ARGS`,`artifacts requires --provider for provider session lookup or an active cloud connection.`);if(!t.leaseId&&!n)throw new e(`INVALID_ARGS`,`artifacts requires an active cloud lease or --provider-session <id>.`);let a=D(r,t,n),o=await i?.listCloudArtifacts?.({provider:t.leaseProvider,leaseId:a?.leaseId??t.leaseId,providerSessionId:n});if(!o)throw new e(`UNSUPPORTED_OPERATION`,`Cloud artifacts are not available for provider "${t.leaseProvider}".`);return o}function D(t,n,r){if(!r)return;let i=t.resolveProviderSession({provider:n.leaseProvider,providerSessionId:r,tenantId:n.tenantId});if(i)return i;throw new e(`UNAUTHORIZED`,`Provider session is not owned by the request tenant`,{reason:`PROVIDER_SESSION_NOT_OWNED`})}function O(e,t){let n=e?.[t];return typeof n==`string`&&n.trim().length>0?n.trim():void 0}function k(e,t,n){let r=f(n);r&&e.recordProviderSession(t,r)}export{h as handleLeaseCommands};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{A as e}from"./sdk-contracts.js";import t from"node:path";import n from"node:fs";import{Readable as r}from"node:stream";import{pipeline as i}from"node:stream/promises";async function a(a){let s=AbortSignal.timeout(a.timeoutMs);try{await n.promises.mkdir(t.dirname(a.destinationPath),{recursive:!0});let c=await fetch(a.url,{method:`GET`,headers:a.headers,signal:s});if(!c.ok)throw await o(c,a);if(!c.body)throw new e(`COMMAND_FAILED`,`Limrun download returned no body`,{url:a.url});await i(r.fromWeb(c.body),n.createWriteStream(a.destinationPath),{signal:s})}catch(e){throw await n.promises.rm(a.destinationPath,{force:!0}).catch(()=>{}),c(e,a,s)}}async function o(t,n){return new e(`COMMAND_FAILED`,`Limrun download failed with HTTP ${t.status}`,{url:n.url,statusCode:t.status,body:await s(t)})}async function s(e){if(!e.body)return``;let t=e.body.getReader(),n=[],r=0;try{for(;r<500;){let{done:e,value:i}=await t.read();if(e)break;let a=500-r;n.push(i.subarray(0,a)),r+=i.byteLength}}finally{t.cancel().catch(()=>{})}return Buffer.concat(n).toString(`utf8`)}function c(t,n,r){return r.aborted?new e(`COMMAND_FAILED`,`Limrun download timed out`,{url:n.url,timeoutMs:n.timeoutMs}):t instanceof e?t:new e(`COMMAND_FAILED`,`Limrun download failed`,{url:n.url,reason:t instanceof Error?t.message:String(t)})}export{a as downloadLimrunFile};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime.js";import{
|
|
1
|
+
import{r as e}from"./rolldown-runtime.js";import{A as t}from"./sdk-contracts.js";import{c as n,n as r}from"./exec.js";import"./command.js";import{a as i}from"./version.js";import{_ as a}from"./adb-executor.js";import{i as o,o as s,r as c}from"./adb-transport.js";import"./mechanics.js";import"./platform-runtime-android-adb-host.js";import{n as l}from"./android.js";var u=e({createLimrunRuntimeDependencies:()=>d});function d(){return{clientVersion:i(),android:{createInteractor:(e,t)=>l(e,t),createPortReverse:async e=>{let{createAndroidPortReverseManager:t}=await import(`./mechanics.js`).then(e=>e.r);return t(e)},inferAppName:async e=>{let{inferAndroidAppName:t}=await import(`./mechanics.js`).then(e=>e.r);return t(e)},listApps:async(e,t)=>{let{listAndroidAppsWithAdb:n}=await import(`./mechanics.js`).then(e=>e.r);return(await n(e,{filter:t,target:`mobile`})).map(e=>({id:e.package,name:e.name}))},getForegroundApp:async(e,t,n)=>{let{getAndroidAppStateWithAdb:r}=await import(`./platform-runtime.js`).then(e=>e.a),i=await r(async(e,r)=>await t(e,{...r,signal:n}),n);return i.package?{appId:i.package,activity:i.activity}:void 0},getKeyboardState:async e=>{let{getAndroidKeyboardStatusWithAdb:t}=await import(`./mechanics.js`).then(e=>e.r);return await t(e)},dismissKeyboard:async e=>{let{dismissAndroidKeyboardWithAdb:t}=await import(`./mechanics.js`).then(e=>e.r);return await t(e)},readLogs:async(e,t)=>{let{captureAndroidLogcatWithAdb:n}=await import(`./mechanics.js`).then(e=>e.r);return await n(e,{lines:t,timeoutMs:5e3})},forceStopApp:async(e,t,n)=>{let{runAdbShell:r}=await import(`./mechanics.js`).then(e=>e.r);await r(async(t,r)=>await e(t,{...r,signal:n}),[`am`,`force-stop`,t],{allowFailure:!0})},deviceAdbInvocation:(e,t)=>o(s(e),t),hostAdbInvocation:e=>o(c(),e),adbError:async(e,t,n)=>{let{androidAdbResultError:r,serializeAndroidAdbInvocation:i}=await import(`./mechanics.js`).then(e=>e.r);return r(e,t,n?{command:`adb ${i(n).join(` `)}`}:void 0)}},host:{runAdb:async(e,t)=>await a(e,t),downloadFile:async e=>{let{downloadLimrunFile:t}=await import(`./limrun-download-file.js`);await t(e)},archiveDirectory:async({sourceDirectory:e,entryName:i,archivePath:a})=>{let o=[`-qr`,a,i],s=await n(`zip`,o,{cwd:e,timeoutMs:12e4});if(s.exitCode!==0)throw new t(`COMMAND_FAILED`,`Failed to package iOS .app for Limrun install`,{command:[`zip`,...o].join(` `),...r(s)})}},ios:{resolveAppAlias:async e=>{let{resolveIosAppAlias:t}=await import(`./app-resolution-facade.js`);return t(e)},readBundleAppName:async e=>{let{readIosBundleInfo:t}=await import(`./install-artifact-facade.js`);return(await t(e)).appName}}}}export{u as n,d as t};
|
package/dist/src/limrun.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { A as Rect, D as IosTargetActivation, F as SnapshotOptions$1, I as SnapshotProvenance, N as SnapshotKeyboardBandFact, O as Point, S as DeviceTarget, b as DeviceInfo, f as LeaseBackend, k as RawSnapshotNode, w as PlatformSelector, x as DeviceKind } from "./sdk-contracts.js";
|
|
2
2
|
import { s as AppsFilter, t as GesturePlan } from "./gesture-plan-types.js";
|
|
3
|
-
import { T as BackendSnapshotResult,
|
|
4
|
-
import { d as AndroidAdbProvider, n as AndroidKeyboardState, s as AndroidInputOwner, t as AndroidKeyboardDismissResult } from "./device-input-state.js";
|
|
3
|
+
import { T as BackendSnapshotResult, _ as CloudArtifactProvider, f as ReadSettingResult, i as DeviceRotation, k as SessionSurface, m as SettingOptions, n as ScrollExecutionOptions, p as ReadableSetting, r as TvRemoteButton, s as BackMode, y as ScrollDirection } from "./scroll-command.js";
|
|
4
|
+
import { d as AndroidAdbProvider, m as AppStateRuntimeResult, n as AndroidKeyboardState, s as AndroidInputOwner, t as AndroidKeyboardDismissResult } from "./device-input-state.js";
|
|
5
5
|
//#region packages/contracts/src/device-inventory.d.ts
|
|
6
6
|
type DeviceInventoryRequest = {
|
|
7
7
|
platform?: PlatformSelector;
|
|
@@ -243,6 +243,14 @@ type SnapshotOptions = SnapshotOptions$1 & {
|
|
|
243
243
|
surface?: SessionSurface;
|
|
244
244
|
/** Internal capture purpose; action outcomes always require the full tree. */
|
|
245
245
|
acquisitionIntent?: 'full' | 'surface-observation';
|
|
246
|
+
/**
|
|
247
|
+
* A one-off read, such as an open's launch observation. It may use a capture host the session
|
|
248
|
+
* already keeps warm, but it never installs one or leaves running one that it started. It starts
|
|
249
|
+
* no re-capture after `settleBy` (epoch ms); only `signal` cancels work already started.
|
|
250
|
+
*/
|
|
251
|
+
transient?: Readonly<{
|
|
252
|
+
settleBy: number;
|
|
253
|
+
}>;
|
|
246
254
|
};
|
|
247
255
|
/**
|
|
248
256
|
* Android's live IME status read. Optional on {@link Interactor}: parity with the retired leaf,
|
|
@@ -364,6 +372,11 @@ type Interactor = {
|
|
|
364
372
|
*/
|
|
365
373
|
doubleTap?(x: number, y: number): Promise<Record<string, unknown> | void>;
|
|
366
374
|
longPress(x: number, y: number, durationMs?: number): Promise<Record<string, unknown> | void>;
|
|
375
|
+
/**
|
|
376
|
+
* How the app the runner context names is running, as the platform reports it. The Apple runner
|
|
377
|
+
* reads `XCUIApplication.state`; owners that read the foreground elsewhere leave it undefined.
|
|
378
|
+
*/
|
|
379
|
+
appState?(): Promise<AppStateRuntimeResult>;
|
|
367
380
|
/**
|
|
368
381
|
* Move the pointer to a point without pressing. Only pointer-driven
|
|
369
382
|
* platforms (web today) implement it; touch platforms have no hover state
|
package/dist/src/linux.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{A as e}from"./sdk-contracts.js";import{c as t}from"./diagnostics.js";import"./diagnostics2.js";import{a as n}from"./gesture-plan.js";import{S as r,_ as i,a,b as o,d as s,f as c,h as l,i as u,l as d,m as f,n as p,o as m,p as h,r as g,s as _,t as v,u as y,v as b,x}from"./src5.js";function S(){return{open:e=>s(e),openDevice:()=>Promise.resolve(),close:e=>g(e),tap:(e,t)=>c(e,t),alternateClick:async(e,t)=>t===`secondary`?await l(e.x,e.y):await y(e.x,e.y),doubleTap:(e,t)=>u(e,t),longPress:(e,t,n)=>d(e,t,n),focus:(e,t)=>m(e,t),type:(e,t)=>x(e,t),fill:(e,t,n,r)=>a(e,t,n,r),scroll:(e,t)=>b(e,t),performGesture:async t=>{if(t.topology===`two`)throw new e(`UNSUPPORTED_OPERATION`,`Multi-touch gestures are not supported on Linux`);let{start:r,end:i}=n(t);await o(r.x,r.y,i.x,i.y,t.durationMs)},screenshot:(e,t)=>i(e,t),readTextAtPoint:async(e,t)=>await f(e.x,e.y,t?.surface),snapshot:async e=>await t(`snapshot_capture`,async()=>await p(e,e?.signal),{backend:`linux-atspi`}),back:()=>v(),home:()=>_(),setOrientation:()=>{throw new e(`UNSUPPORTED_OPERATION`,`orientation not supported on Linux`)},appSwitcher:()=>{throw new e(`UNSUPPORTED_OPERATION`,`appSwitcher not yet supported on Linux`)},tvRemote:()=>{throw new e(`UNSUPPORTED_OPERATION`,`tv-remote not supported on Linux`)},readClipboard:()=>h(),writeClipboard:e=>r(e),setSetting:()=>{throw new e(`UNSUPPORTED_OPERATION`,`setSetting not supported on Linux`)}}}export{S as createLinuxInteractor};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{A as e}from"./sdk-contracts.js";function t(t,n){if(t===void 0||t.trim()===``)throw new e(`INVALID_ARGS`,`settings location set requires ${n}`);return r(Number(t),n)}function n(e){return{latitude:r(e?.latitude,`latitude`),longitude:r(e?.longitude,`longitude`)}}function r(t,n){let r=n===`latitude`?-90:-180,i=n===`latitude`?90:180;if(typeof t!=`number`||!Number.isFinite(t)||t<r||t>i)throw new e(`INVALID_ARGS`,`${n} must be a number from ${r} to ${i}`);return t}export{n,t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{A as e}from"./sdk-contracts.js";import{A as t,D as n}from"./sdk-device.js";import{t as r}from"./scoped-provider.js";const i=r(void 0);function a(){return i.resolve()}async function o(e,t){return await i.run(e,t)}function s(r,i){if(!t(n(r.device),n(i))||r.device.simulatorSetPath!==i.simulatorSetPath)throw new e(`COMMAND_FAILED`,`Managed automation cannot select another device.`,{reason:`managed-device-transport-mismatch`})}function c(){let e=a();if(e)return async t=>{s(e,t)}}async function l(e){let t=c();return t?(await t(e),!0):!1}export{o as a,c as i,a as n,l as r,s as t};
|