agent-device 0.20.9 → 0.21.0

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.
Files changed (492) hide show
  1. package/README.md +2 -2
  2. package/android/ime-helper/dist/{agent-device-android-ime-helper-0.20.9.apk → agent-device-android-ime-helper-0.21.0.apk} +0 -0
  3. package/android/ime-helper/dist/agent-device-android-ime-helper-0.21.0.apk.sha256 +1 -0
  4. package/android/ime-helper/dist/{agent-device-android-ime-helper-0.20.9.manifest.json → agent-device-android-ime-helper-0.21.0.manifest.json} +4 -4
  5. package/android/snapshot-helper/dist/agent-device-android-snapshot-helper-0.21.0.apk +0 -0
  6. package/android/snapshot-helper/dist/agent-device-android-snapshot-helper-0.21.0.apk.sha256 +1 -0
  7. package/android/snapshot-helper/dist/{agent-device-android-snapshot-helper-0.20.9.manifest.json → agent-device-android-snapshot-helper-0.21.0.manifest.json} +6 -6
  8. package/apple/macos-helper/Sources/AgentDeviceMacOSHelper/AudioProbe.swift +35 -33
  9. package/apple/macos-helper/Sources/AgentDeviceMacOSHelper/main.swift +6 -1
  10. package/apple/snapshot-bridge/LICENSE.idb +23 -0
  11. package/apple/snapshot-bridge/README.md +49 -0
  12. package/apple/snapshot-bridge/SnapshotBridge.m +280 -0
  13. package/apple/snapshot-bridge/SnapshotBridgeRuntime.h +33 -0
  14. package/apple/snapshot-bridge/SnapshotBridgeRuntime.m +382 -0
  15. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunner/AgentDeviceRunnerApp.m +58 -0
  16. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunner.xcodeproj/project.pbxproj +19 -0
  17. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerAlertVerification.swift +36 -0
  18. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerStringNormalization.swift +8 -0
  19. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerSynthesizedGesture.h +12 -1
  20. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerSynthesizedGesture.m +100 -6
  21. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTapPointPolicy.swift +2 -2
  22. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+AXSnapshotFallback.swift +21 -12
  23. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+Alert.swift +21 -88
  24. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+AlertObservation.swift +124 -0
  25. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+CommandExecution.swift +110 -107
  26. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+CommandJournal.swift +6 -14
  27. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+Interaction.swift +85 -114
  28. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+Lifecycle.swift +13 -6
  29. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+Models.swift +72 -175
  30. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+Navigation.swift +10 -11
  31. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+PrivateAXElementTypes.swift +12 -0
  32. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+PrivateAXPresentation.swift +78 -64
  33. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+ScreenRecorder.swift +17 -9
  34. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+ScrollGesture.swift +47 -13
  35. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+Snapshot.swift +232 -438
  36. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+SnapshotBackendCapabilities.swift +98 -0
  37. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+SnapshotCapturePlan.swift +229 -168
  38. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+SnapshotPresentationInvariant.swift +19 -0
  39. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+SnapshotTiming.swift +110 -0
  40. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+SynthesizedCommitDeadline.swift +206 -0
  41. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+SynthesizedTextEntry.swift +147 -25
  42. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+SystemModal.swift +21 -18
  43. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+TextEntry.swift +24 -307
  44. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+TextEntryFocus.swift +206 -0
  45. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+TextEntryReadiness.swift +158 -0
  46. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+TextInputCandidatePolicy.swift +19 -0
  47. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+TextTyping.swift +49 -16
  48. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+Transport.swift +2 -11
  49. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+TvRemote.swift +4 -19
  50. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests.swift +16 -20
  51. package/dist/apple/runner/AgentDeviceRunner/RecordingScripts/RecordingExportSupport.swift +111 -0
  52. package/dist/apple/runner/AgentDeviceRunner/RecordingScripts/recording-overlay.swift +42 -81
  53. package/dist/apple/runner/AgentDeviceRunner/RecordingScripts/recording-trim.swift +35 -82
  54. package/dist/apple/snapshot-presentation/Package.swift +21 -0
  55. package/dist/apple/snapshot-presentation/Sources/AgentDeviceSnapshotPresentation/SnapshotGeometry.swift +56 -0
  56. package/dist/apple/snapshot-presentation/Sources/AgentDeviceSnapshotPresentation/SnapshotModels.swift +259 -0
  57. package/dist/apple/snapshot-presentation/Sources/AgentDeviceSnapshotPresentation/SnapshotPresentation.swift +153 -0
  58. package/dist/apple/snapshot-presentation/Sources/AgentDeviceSnapshotPresentation/SnapshotPresentationFailure.swift +27 -0
  59. package/dist/apple/snapshot-presentation/Sources/AgentDeviceSnapshotPresentation/SnapshotPresentationInvariant.swift +91 -0
  60. package/dist/apple/snapshot-presentation/Sources/AgentDeviceSnapshotPresentation/SnapshotPresentationProjection.swift +161 -0
  61. package/dist/apple/snapshot-presentation/Sources/AgentDeviceSnapshotPresentation/SnapshotScopePolicy.swift +53 -0
  62. package/dist/apple/snapshot-presentation/Sources/AgentDeviceSnapshotPresentation/SnapshotVisibilityFold.swift +242 -0
  63. package/dist/apple/snapshot-presentation/Sources/AgentDeviceSnapshotPresentation/SnapshotVisibilityFoldProjection.swift +97 -0
  64. package/dist/src/adapter.js +1 -0
  65. package/dist/src/adb-executor.js +2 -0
  66. package/dist/src/adb-failure.js +1 -0
  67. package/dist/src/adb-host.js +1 -0
  68. package/dist/src/adb.js +1 -0
  69. package/dist/src/agent-browser-lifecycle.js +1 -0
  70. package/dist/src/agent-browser-process-record.js +1 -0
  71. package/dist/src/agent-browser-provider.js +1 -0
  72. package/dist/src/agent-browser-tool.js +1 -1
  73. package/dist/src/agent-device-client.js +2 -2
  74. package/dist/src/ai-sdk.d.ts +61 -0
  75. package/dist/src/ai-sdk.js +1 -0
  76. package/dist/src/alert-contract.js +1 -0
  77. package/dist/src/alert-runtime.js +1 -0
  78. package/dist/src/android-adb.d.ts +27 -19
  79. package/dist/src/android-adb.js +1 -1
  80. package/dist/src/android-input-ownership.js +1 -0
  81. package/dist/src/android-system-chrome.js +1 -0
  82. package/dist/src/android.js +1 -1
  83. package/dist/src/api.js +11 -0
  84. package/dist/src/app-catalog.js +1 -0
  85. package/dist/src/app-deployment-resolution.js +2 -0
  86. package/dist/src/app-helpers.js +1 -1
  87. package/dist/src/app-inventory-contract.js +1 -0
  88. package/dist/src/app-inventory.js +1 -0
  89. package/dist/src/app-launch.js +2 -0
  90. package/dist/src/app-lifecycle-facade.js +1 -0
  91. package/dist/src/app-lifecycle.js +3 -6
  92. package/dist/src/app-lifecycle2.js +2 -2
  93. package/dist/src/app-lifecycle3.js +1 -0
  94. package/dist/src/app-log-files.js +1 -1
  95. package/dist/src/app-log-reconnect.js +1 -1
  96. package/dist/src/app-log-runtime.js +1 -4
  97. package/dist/src/app-log-runtime2.js +4 -0
  98. package/dist/src/app-parsers.js +4 -0
  99. package/dist/src/app-resolution-cache.js +1 -0
  100. package/dist/src/app-resolution-facade.js +1 -0
  101. package/dist/src/app-resolution.js +2 -2
  102. package/dist/src/app-state.js +1 -2
  103. package/dist/src/application-lifecycle-interaction.js +1 -0
  104. package/dist/src/application-lifecycle-runtime.js +1 -0
  105. package/dist/src/apps-simctl.js +1 -0
  106. package/dist/src/archive.js +4 -0
  107. package/dist/src/artifact-download.js +1 -0
  108. package/dist/src/artifacts.d.ts +6 -2
  109. package/dist/src/artifacts.js +1 -1
  110. package/dist/src/async-lifecycle.js +1 -0
  111. package/dist/src/audio-probe-result.js +1 -0
  112. package/dist/src/audio-probe-runtime.js +1 -0
  113. package/dist/src/audio-probe-support.js +1 -0
  114. package/dist/src/auth-session.js +1 -1
  115. package/dist/src/auth.js +1 -1
  116. package/dist/src/back-mode.js +1 -0
  117. package/dist/src/{url.js → base-url.js} +1 -1
  118. package/dist/src/boot-diagnostics.js +2 -2
  119. package/dist/src/byte-limit-stream.js +1 -1
  120. package/dist/src/capabilities.js +1 -0
  121. package/dist/src/capture.js +1 -0
  122. package/dist/src/catalog.js +1 -0
  123. package/dist/src/cli-command-aliases.js +1 -0
  124. package/dist/src/cli-config.js +1 -1
  125. package/dist/src/cli-help.js +77 -51
  126. package/dist/src/cli-output.js +1 -1
  127. package/dist/src/cli-runner.js +1 -1
  128. package/dist/src/cli.js +5 -7
  129. package/dist/src/click-button.js +1 -0
  130. package/dist/src/client-metro-companion.js +1 -0
  131. package/dist/src/client-metro.js +1 -1
  132. package/dist/src/client-types.d.ts +1606 -0
  133. package/dist/src/clipboard.js +1 -0
  134. package/dist/src/code-signature-cache.js +1 -0
  135. package/dist/src/code-signature.js +1 -0
  136. package/dist/src/color.js +1 -0
  137. package/dist/src/command-metadata.js +1 -1
  138. package/dist/src/command-schema.js +3 -3
  139. package/dist/src/command-surface.js +1 -1
  140. package/dist/src/command-tools.js +2 -0
  141. package/dist/src/command.js +1 -0
  142. package/dist/src/{selector-vocabulary.js → compatibility-policy.js} +1 -1
  143. package/dist/src/config.js +1 -1
  144. package/dist/src/config2.js +1 -0
  145. package/dist/src/connection-runtime.js +1 -1
  146. package/dist/src/connection.js +5 -5
  147. package/dist/src/contracts.d.ts +1 -1
  148. package/dist/src/contracts.js +1 -1
  149. package/dist/src/daemon-client-lifecycle.js +1 -0
  150. package/dist/src/daemon-process.js +1 -0
  151. package/dist/src/daemon-registration.js +1 -0
  152. package/dist/src/daemon-shutdown-report.js +1 -1
  153. package/dist/src/daemon.js +2 -2
  154. package/dist/src/debug-symbols-facade.js +5 -0
  155. package/dist/src/deploy-result-target.js +1 -0
  156. package/dist/src/device-claim-inspection.js +1 -1
  157. package/dist/src/device-claim-rule.js +1 -0
  158. package/dist/src/device-input-state.d.ts +190 -3
  159. package/dist/src/device-inventory-context.js +1 -0
  160. package/dist/src/device-isolation.js +1 -0
  161. package/dist/src/device-release.js +1 -0
  162. package/dist/src/device-rotation.js +1 -0
  163. package/dist/src/device-selection-resolver.js +1 -0
  164. package/dist/src/device-session.js +1 -0
  165. package/dist/src/device.js +1 -1
  166. package/dist/src/device2.js +3 -2
  167. package/dist/src/diagnostics.js +3 -0
  168. package/dist/src/diagnostics2.js +1 -0
  169. package/dist/src/dispatch-resolve.js +1 -0
  170. package/dist/src/doctor-facade.js +1 -0
  171. package/dist/src/doctor-output.js +1 -0
  172. package/dist/src/doctor.js +1 -0
  173. package/dist/src/doctor2.js +1 -0
  174. package/dist/src/doctor3.js +1 -0
  175. package/dist/src/durable-resource.js +1 -0
  176. package/dist/src/entities.js +1 -1
  177. package/dist/src/error.js +2 -0
  178. package/dist/src/exec.js +1 -0
  179. package/dist/src/file.js +1 -0
  180. package/dist/src/find.js +1 -1
  181. package/dist/src/finders.js +1 -1
  182. package/dist/src/format.js +2 -0
  183. package/dist/src/generic-settle.js +1 -1
  184. package/dist/src/generic.js +1 -1
  185. package/dist/src/gesture-admission.js +1 -0
  186. package/dist/src/gesture-plan-types.js +1 -0
  187. package/dist/src/gesture-plan.js +1 -0
  188. package/dist/src/gesture-runtime.js +1 -0
  189. package/dist/src/harmonyos.js +1 -1
  190. package/dist/src/hdc.js +1 -1
  191. package/dist/src/helper.js +2 -2
  192. package/dist/src/host-file.js +1 -0
  193. package/dist/src/human-control-contract.js +1 -0
  194. package/dist/src/human-control.js +1 -0
  195. package/dist/src/index.d.ts +2 -1578
  196. package/dist/src/index.js +1 -1
  197. package/dist/src/input-actions.js +1 -4
  198. package/dist/src/input-actions2.js +2 -1
  199. package/dist/src/install-artifact-facade.js +1 -0
  200. package/dist/src/install-source-network-transport.js +1 -0
  201. package/dist/src/install-source.d.ts +3 -10
  202. package/dist/src/install-source2.js +1 -1
  203. package/dist/src/interaction-positionals.js +1 -0
  204. package/dist/src/interaction-ref-policy.js +1 -0
  205. package/dist/src/interaction.js +1 -1
  206. package/dist/src/interaction2.js +1 -1
  207. package/dist/src/interactor-operation-catalog.js +1 -0
  208. package/dist/src/interactor-types.js +1 -0
  209. package/dist/src/interactor.js +6 -2
  210. package/dist/src/interactor2.js +1 -1
  211. package/dist/src/interactors.js +1 -1
  212. package/dist/src/internal/bin.d.ts +1 -1
  213. package/dist/src/internal/bin.js +1 -2
  214. package/dist/src/internal/companion-tunnel.d.ts +1 -1
  215. package/dist/src/internal/companion-tunnel.js +1 -1
  216. package/dist/src/internal/daemon.d.ts +1 -1
  217. package/dist/src/internal/daemon.js +2 -4
  218. package/dist/src/internal/png-worker.d.ts +4 -4
  219. package/dist/src/internal/png-worker.js +1 -1
  220. package/dist/src/internal/run-script-http-child.d.ts +4 -0
  221. package/dist/src/internal/run-script-http-child.js +1 -0
  222. package/dist/src/internal/update-check-entry.d.ts +1 -1
  223. package/dist/src/inventory.js +4 -4
  224. package/dist/src/inventory2.js +1 -1
  225. package/dist/src/inventory3.js +1 -1
  226. package/dist/src/inventory5.js +1 -1
  227. package/dist/src/inventory6.js +1 -1
  228. package/dist/src/ios-client.js +16 -0
  229. package/dist/src/ios-snapshot-acquisition.js +1 -0
  230. package/dist/src/ios-snapshot-adapter.js +1 -0
  231. package/dist/src/ios-snapshot-planning.js +1 -0
  232. package/dist/src/ios-snapshot-runtime.js +1 -0
  233. package/dist/src/json.js +1 -0
  234. package/dist/src/keyboard-actions.js +1 -0
  235. package/dist/src/launch-console.js +1 -0
  236. package/dist/src/lease-context.js +1 -1
  237. package/dist/src/lease-scope.js +1 -0
  238. package/dist/src/lease.js +1 -1
  239. package/dist/src/limrun-runtime-dependencies.js +1 -1
  240. package/dist/src/limrun.d.ts +1618 -7
  241. package/dist/src/limrun.js +1 -1
  242. package/dist/src/linux.js +1 -1
  243. package/dist/src/local-interactor-operation-set.js +1 -0
  244. package/dist/src/location-coordinates.js +1 -1
  245. package/dist/src/logcat.js +1 -1
  246. package/dist/src/macos-facade.js +1 -0
  247. package/dist/src/managed-device-scope.js +1 -0
  248. package/dist/src/mechanics.js +19 -0
  249. package/dist/src/metro.d.ts +4 -2
  250. package/dist/src/metro.js +1 -1
  251. package/dist/src/metro2.js +1 -1
  252. package/dist/src/mobile-snapshot-semantics.js +1 -0
  253. package/dist/src/multitouch-support.js +1 -0
  254. package/dist/src/numeric.js +1 -0
  255. package/dist/src/observability.js +1 -1
  256. package/dist/src/observation.js +2 -0
  257. package/dist/src/output-path.js +1 -1
  258. package/dist/src/owner-identity.js +3 -1
  259. package/dist/src/parameterized-recorded-fill.js +1 -0
  260. package/dist/src/parser.js +1 -1
  261. package/dist/src/perf-facade.js +2 -0
  262. package/dist/src/perf-runtime-operation-builder.js +1 -0
  263. package/dist/src/perf-runtime-plan.js +1 -0
  264. package/dist/src/perf-runtime.js +1 -0
  265. package/dist/src/perf.js +1 -4
  266. package/dist/src/physical-device-control.js +1 -1
  267. package/dist/src/physical-device-facade.js +1 -0
  268. package/dist/src/platform-request-scope.js +1 -0
  269. package/dist/src/platform-runtime-android-adb-host.js +1 -0
  270. package/dist/src/platform-runtime-android-mechanics.js +1 -0
  271. package/dist/src/platform-runtime-app-log-android-transport.js +1 -1
  272. package/dist/src/platform-runtime-app-log-process.js +1 -1
  273. package/dist/src/platform-runtime-apple-resources.js +1 -0
  274. package/dist/src/platform-runtime-host.js +1 -1
  275. package/dist/src/platform-runtime-managed-owner.js +1 -0
  276. package/dist/src/platform-runtime-network-web-transport.js +1 -1
  277. package/dist/src/platform-runtime-open-target.js +1 -1
  278. package/dist/src/platform-runtime-operation-host.js +4 -4
  279. package/dist/src/platform-runtime-runtime-hints.js +2 -2
  280. package/dist/src/platform-runtime-screen-recording-android-host.js +1 -1
  281. package/dist/src/platform-runtime-screen-recording-apple-runner-host.js +1 -1
  282. package/dist/src/platform-runtime-screen-recording-apple-runner-transport.js +1 -1
  283. package/dist/src/platform-runtime-screen-recording-apple-simulator-host.js +1 -1
  284. package/dist/src/platform-runtime-screen-recording-apple-transport.js +1 -1
  285. package/dist/src/platform-runtime-screen-recording-finalizer-host.js +1 -1
  286. package/dist/src/platform-runtime-screen-recording-harmony-host.js +1 -1
  287. package/dist/src/platform-runtime-screen-recording-process-host.js +1 -0
  288. package/dist/src/platform-runtime-screen-recording-web-host.js +1 -1
  289. package/dist/src/platform-runtime-unavailable.js +1 -0
  290. package/dist/src/platform-runtime.js +1 -1
  291. package/dist/src/platform-runtime2.js +1 -1
  292. package/dist/src/plist.js +1 -1
  293. package/dist/src/png-worker-contract.js +1 -1
  294. package/dist/src/prepare-kind.js +1 -15
  295. package/dist/src/process-exit.js +1 -1
  296. package/dist/src/process.js +1 -0
  297. package/dist/src/provider-device-runtime.js +1 -0
  298. package/dist/src/provider-session-ownership.js +2 -0
  299. package/dist/src/provider-webdriver.js +1 -1
  300. package/dist/src/provider.js +1 -1
  301. package/dist/src/providers.js +1 -0
  302. package/dist/src/proxy.js +2 -2
  303. package/dist/src/react-native-overlay.js +1 -0
  304. package/dist/src/react-native.js +1 -1
  305. package/dist/src/record-runtime.js +1 -1
  306. package/dist/src/record-trace.js +1 -1
  307. package/dist/src/rect-center.js +1 -0
  308. package/dist/src/register-builtins.js +1 -0
  309. package/dist/src/registry.js +39 -28
  310. package/dist/src/remote-config2.js +1 -1
  311. package/dist/src/replay-divergence.js +2 -0
  312. package/dist/src/replay.js +2 -2
  313. package/dist/src/reporting.js +8 -8
  314. package/dist/src/request-admission.js +1 -0
  315. package/dist/src/request-cancel.js +1 -0
  316. package/dist/src/request-cancellation.js +1 -0
  317. package/dist/src/request-progress-protocol.js +1 -0
  318. package/dist/src/request-providers.js +1 -0
  319. package/dist/src/request-runtime-binding.js +1 -0
  320. package/dist/src/request.js +1 -0
  321. package/dist/src/result-serialization.js +1 -0
  322. package/dist/src/retry.js +1 -0
  323. package/dist/src/rolldown-runtime.js +1 -1
  324. package/dist/src/runner-cache-metadata.js +2 -0
  325. package/dist/src/runner-client.js +1 -1
  326. package/dist/src/runner-disposal.js +1 -1
  327. package/dist/src/runner-operations-facade.js +1 -0
  328. package/dist/src/runner-owner-facade.js +1 -0
  329. package/dist/src/runner-owner-state.js +1 -0
  330. package/dist/src/runner-presentation.js +1 -0
  331. package/dist/src/runner-selector-query.js +1 -0
  332. package/dist/src/runner.js +1 -0
  333. package/dist/src/{runtime-transport.js → runtime-transport-hints.js} +1 -1
  334. package/dist/src/runtime.js +3 -3
  335. package/dist/src/runtime2.js +4 -4
  336. package/dist/src/runtime3.js +1 -1
  337. package/dist/src/runtime4.js +4 -3
  338. package/dist/src/runtime5.js +1 -1
  339. package/dist/src/runtime6.js +1 -1
  340. package/dist/src/runtime7.js +1 -1
  341. package/dist/src/runtime8.js +1 -1
  342. package/dist/src/runtime9.js +1 -1
  343. package/dist/src/scoped-provider.js +1 -1
  344. package/dist/src/screen-recording-completion.js +1 -0
  345. package/dist/src/screen-recording-live-handle.js +1 -0
  346. package/dist/src/screen-recording-options.js +1 -0
  347. package/dist/src/screen-recording-resource-recovery.js +1 -0
  348. package/dist/src/screen-recording-runtime.js +1 -0
  349. package/dist/src/screenshot-density.js +1 -1
  350. package/dist/src/screenshot-result.js +1 -6
  351. package/dist/src/screenshot-runtime.js +1 -0
  352. package/dist/src/screenshot.js +1 -1
  353. package/dist/src/screenshot2.js +1 -0
  354. package/dist/src/screenshot3.js +5 -0
  355. package/dist/src/script.js +1 -0
  356. package/dist/src/scroll-command.js +1 -0
  357. package/dist/src/scroll-gesture.js +1 -0
  358. package/dist/src/scroll-indicator.js +1 -0
  359. package/dist/src/sdk-batch-runner.d.ts +23 -6
  360. package/dist/src/sdk-batch-runner.js +2 -3
  361. package/dist/src/sdk-batch.js +2 -0
  362. package/dist/src/sdk-contracts.d.ts +222 -99
  363. package/dist/src/sdk-contracts.js +2 -2
  364. package/dist/src/sdk-device.js +1 -1
  365. package/dist/src/sdk-finders.d.ts +1 -1
  366. package/dist/src/sdk-finders.js +1 -1
  367. package/dist/src/sdk-io.js +1 -1
  368. package/dist/src/sdk-remote-config.d.ts +1 -1
  369. package/dist/src/sdk-remote-config.js +1 -1
  370. package/dist/src/sdk-selectors.d.ts +539 -199
  371. package/dist/src/sdk-selectors.js +1 -1
  372. package/dist/src/selection.js +1 -0
  373. package/dist/src/selector-runtime.js +1 -1
  374. package/dist/src/selectors.js +1 -1
  375. package/dist/src/semantic-index.js +1 -0
  376. package/dist/src/server.js +10 -3
  377. package/dist/src/session-allocation.js +1 -0
  378. package/dist/src/session-artifact-paths.js +1 -0
  379. package/dist/src/session-paths.js +1 -0
  380. package/dist/src/session-repair-tombstone.js +1 -0
  381. package/dist/src/session-routing.js +1 -0
  382. package/dist/src/session-runtime-admission.js +1 -0
  383. package/dist/src/session-snapshot.js +1 -0
  384. package/dist/src/session-store.js +4 -0
  385. package/dist/src/session-target-evidence.js +1 -1
  386. package/dist/src/session2.js +5 -28
  387. package/dist/src/settings.js +1 -0
  388. package/dist/src/shared.js +2 -2
  389. package/dist/src/simctl-facade.js +1 -0
  390. package/dist/src/simctl.js +1 -1
  391. package/dist/src/simulator-facade.js +1 -0
  392. package/dist/src/simulator.js +1 -1
  393. package/dist/src/snapshot-capture-annotations.js +1 -0
  394. package/dist/src/snapshot-desktop-projection.js +1 -0
  395. package/dist/src/snapshot-diagnostics.js +1 -0
  396. package/dist/src/snapshot-process.js +1 -0
  397. package/dist/src/snapshot-quality-backend-capabilities.js +1 -0
  398. package/dist/src/snapshot-quality-verdict.js +1 -0
  399. package/dist/src/snapshot-runtime-binding.js +1 -0
  400. package/dist/src/snapshot-runtime.js +1 -1
  401. package/dist/src/snapshot-scope.js +1 -0
  402. package/dist/src/snapshot-state.js +1 -0
  403. package/dist/src/snapshot.js +1 -8
  404. package/dist/src/snapshot2.js +1 -1
  405. package/dist/src/snapshot3.js +1 -1
  406. package/dist/src/snapshot4.js +1 -0
  407. package/dist/src/src.js +1 -1
  408. package/dist/src/src2.js +1 -1
  409. package/dist/src/src3.js +1 -2
  410. package/dist/src/src4.js +1 -0
  411. package/dist/src/src5.js +1 -0
  412. package/dist/src/src6.js +1 -0
  413. package/dist/src/src7.js +2 -0
  414. package/dist/src/src8.js +115 -0
  415. package/dist/src/startup-recovery-fence.js +1 -0
  416. package/dist/src/status-markers.js +1 -0
  417. package/dist/src/string-enum.js +1 -1
  418. package/dist/src/success-text.js +1 -0
  419. package/dist/src/surface-snapshot.js +1 -0
  420. package/dist/src/surface-snapshot2.js +1 -0
  421. package/dist/src/takeover.js +5 -0
  422. package/dist/src/tool-provider-facade.js +1 -0
  423. package/dist/src/tool-provider.js +4 -3
  424. package/dist/src/tool-provider2.js +1 -1
  425. package/dist/src/tool-provider3.js +1 -0
  426. package/dist/src/toolchain-probe.js +2 -0
  427. package/dist/src/touch-runtime.js +1 -0
  428. package/dist/src/transport.js +3 -0
  429. package/dist/src/tree.js +1 -0
  430. package/dist/src/ttl-memo.js +1 -0
  431. package/dist/src/tv-remote.js +1 -0
  432. package/dist/src/type-text-runtime.js +1 -0
  433. package/dist/src/undici.js +99 -0
  434. package/dist/src/update-check.js +1 -1
  435. package/dist/src/verified-file.js +1 -1
  436. package/dist/src/version.js +1 -1
  437. package/dist/src/video.js +2 -2
  438. package/dist/src/web.js +2 -1
  439. package/dist/src/web2.js +1 -0
  440. package/dist/src/webdriver-ios-snapshot.js +1 -0
  441. package/dist/src/webdriver-source.js +1 -0
  442. package/linux/atspi-dump.py +54 -9
  443. package/package.json +73 -38
  444. package/server.json +9 -3
  445. package/android/ime-helper/dist/agent-device-android-ime-helper-0.20.9.apk.sha256 +0 -1
  446. package/android/snapshot-helper/dist/agent-device-android-snapshot-helper-0.20.9.apk +0 -0
  447. package/android/snapshot-helper/dist/agent-device-android-snapshot-helper-0.20.9.apk.sha256 +0 -1
  448. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+CoordinateTextEntryTests.swift +0 -4
  449. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+FlatSnapshotFiltering.swift +0 -75
  450. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+LifecycleCacheTests.swift +0 -6
  451. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+RecordingTests.swift +0 -4
  452. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+SelectorMatchPolicyTests.swift +0 -4
  453. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+SnapshotTraversalIdentityTests.swift +0 -4
  454. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+TextEntryPolicyTests.swift +0 -4
  455. package/dist/src/appearance.js +0 -1
  456. package/dist/src/apps.js +0 -5
  457. package/dist/src/audio-probe.js +0 -1
  458. package/dist/src/cancel.js +0 -1
  459. package/dist/src/cli-grammar.js +0 -1
  460. package/dist/src/command-catalog.js +0 -1
  461. package/dist/src/debug-symbols.js +0 -5
  462. package/dist/src/device-input-state.js +0 -2
  463. package/dist/src/device-ready.js +0 -1
  464. package/dist/src/dispatch.js +0 -1
  465. package/dist/src/handler-utils.js +0 -1
  466. package/dist/src/helper-package-install.js +0 -1
  467. package/dist/src/host-process.js +0 -3
  468. package/dist/src/ime-lifecycle.js +0 -2
  469. package/dist/src/ime-recovery-marker.js +0 -1
  470. package/dist/src/input-actions3.js +0 -1
  471. package/dist/src/install-artifact.js +0 -1
  472. package/dist/src/install-artifact2.js +0 -1
  473. package/dist/src/interaction-common.js +0 -1
  474. package/dist/src/interaction-runtime.js +0 -1
  475. package/dist/src/interaction-snapshot.js +0 -1
  476. package/dist/src/manifest.js +0 -1
  477. package/dist/src/method-scope.js +0 -1
  478. package/dist/src/png-resize.js +0 -1
  479. package/dist/src/process-lock.js +0 -1
  480. package/dist/src/runner-lease.js +0 -1
  481. package/dist/src/runner-sequence.js +0 -1
  482. package/dist/src/screenshot-geometry.js +0 -1
  483. package/dist/src/sdk-android-adb.d.ts +0 -245
  484. package/dist/src/sdk-android-adb.js +0 -4
  485. package/dist/src/sdk.js +0 -1
  486. package/dist/src/setting-state.js +0 -1
  487. package/dist/src/shell-quote.js +0 -1
  488. package/dist/src/snapshot-session.js +0 -1
  489. package/dist/src/timing-safe-equal.js +0 -1
  490. package/dist/src/unsupported-interactor.js +0 -1
  491. package/dist/src/verdict.js +0 -1
  492. /package/dist/src/{recording-telemetry.js → telemetry.js} +0 -0
@@ -1 +1 @@
1
- import{_ as e}from"./sdk-contracts.js";import{K as t}from"./sdk-batch-runner.js";import{s as n}from"./interaction.js";import{h as r}from"./sdk-android-adb.js";import{t as i}from"./unsupported-interactor.js";import{t as a}from"./tool-provider2.js";const o={allowFailure:!0,timeoutMs:3e4};async function s(e,t){r(await a().launchApp(e.id,t,o),`Failed to launch Vega app ${t}`,{appName:t,deviceId:e.id})}async function c(e){r(await a().checkConnected(e.id,o),`Vega device is not connected`,{deviceId:e.id})}async function l(e,t){r(await a().terminateApp(e.id,t,o),`Failed to terminate Vega app ${t}`,{appName:t,deviceId:e.id})}async function u(e,t,i){let o=n(t);r(await a().pressRemote(e.id,o,i,{allowFailure:!0,timeoutMs:1e4+(i??0)}),`Failed to press Vega TV remote ${t}`,{button:t,deviceId:e.id})}const d=[{matches:(e,n)=>t(e)||!!n?.url,message:`Vega open does not support URLs or deep links.`,hint:`Use open <component-id> with an installed Vega app component ID.`},{matches:(e,t)=>!!t?.activity,message:`Vega open does not support Android activity selection.`,hint:`Remove --activity and use the Vega component ID as the open target.`},{matches:(e,t)=>!!t?.launchConsole,message:`Vega open does not support launch-console output.`,hint:`Remove --launch-console and open the Vega component ID directly.`},{matches:(e,t)=>!!t?.terminateRunningApp,message:`Vega open does not support terminating the running app before launch.`,hint:`Close the Vega component explicitly before opening it again.`},{matches:(e,t)=>!!t?.launchArgs?.length,message:`Vega open does not support launch arguments.`,hint:`Remove --launch-arg values and open the Vega component ID directly.`}];function f(e,t){return{...i(`Vega OS`),open:async(t,n)=>{p(t,n),await s(e,t)},openDevice:()=>c(e),close:t=>l(e,t),back:()=>u(e,`back`),home:()=>u(e,`home`),tvRemote:(t,n)=>u(e,t,n)}}function p(t,n){let r=d.find(({matches:e})=>e(t,n));if(r)throw new e(`UNSUPPORTED_OPERATION`,r.message,{hint:r.hint})}export{f as createVegaInteractor};
1
+ import{y as e}from"./sdk-contracts.js";import{r as t}from"./sdk-batch-runner.js";import{i as n}from"./exec.js";import{o as r}from"./tv-remote.js";import"./command.js";import{t as i}from"./tool-provider3.js";function a(t){let n=async n=>{throw new e(`UNSUPPORTED_OPERATION`,`${n} is not supported on ${t}`)};return{open:()=>n(`open`),openDevice:()=>n(`openDevice`),close:()=>n(`close`),tap:()=>n(`tap`),doubleTap:()=>n(`doubleTap`),longPress:()=>n(`longPress`),focus:()=>n(`focus`),type:()=>n(`type`),fill:()=>n(`fill`),scroll:()=>n(`scroll`),screenshot:()=>n(`screenshot`),snapshot:()=>n(`snapshot`),back:()=>n(`back`),home:()=>n(`home`),setOrientation:()=>n(`setOrientation`),appSwitcher:()=>n(`appSwitcher`),tvRemote:()=>n(`tvRemote`),readClipboard:()=>n(`readClipboard`),writeClipboard:()=>n(`writeClipboard`),setSetting:()=>n(`setSetting`),readAlert:()=>n(`readAlert`),awaitAlert:()=>n(`awaitAlert`),acceptAlert:()=>n(`acceptAlert`),dismissAlert:()=>n(`dismissAlert`)}}const o={allowFailure:!0,timeoutMs:3e4};async function s(e,t){n(await i().launchApp(e.id,t,o),`Failed to launch Vega app ${t}`,{appName:t,deviceId:e.id})}async function c(e){n(await i().checkConnected(e.id,o),`Vega device is not connected`,{deviceId:e.id})}async function l(e,t){n(await i().terminateApp(e.id,t,o),`Failed to terminate Vega app ${t}`,{appName:t,deviceId:e.id})}async function u(e,t,a){let o=r(t);n(await i().pressRemote(e.id,o,a,{allowFailure:!0,timeoutMs:1e4+(a??0)}),`Failed to press Vega TV remote ${t}`,{button:t,deviceId:e.id})}const d=[{matches:(e,n)=>t(e)||!!n?.url,message:`Vega open does not support URLs or deep links.`,hint:`Use open <component-id> with an installed Vega app component ID.`},{matches:(e,t)=>!!t?.activity,message:`Vega open does not support Android activity selection.`,hint:`Remove --activity and use the Vega component ID as the open target.`},{matches:(e,t)=>!!t?.launchConsole,message:`Vega open does not support launch-console output.`,hint:`Remove --launch-console and open the Vega component ID directly.`},{matches:(e,t)=>!!t?.terminateRunningApp,message:`Vega open does not support terminating the running app before launch.`,hint:`Close the Vega component explicitly before opening it again.`},{matches:(e,t)=>!!t?.launchArgs?.length,message:`Vega open does not support launch arguments.`,hint:`Remove --launch-arg values and open the Vega component ID directly.`}];function f(e,t){return{...a(`Vega OS`),open:async(t,n)=>{p(t,n),await s(e,t)},openDevice:()=>c(e),close:t=>l(e,t),back:()=>u(e,`back`),home:()=>u(e,`home`),tvRemote:(t,n)=>u(e,t,n)}}function p(t,n){let r=d.find(({matches:e})=>e(t,n));if(r)throw new e(`UNSUPPORTED_OPERATION`,r.message,{hint:r.hint})}export{f as createVegaInteractor};
@@ -1 +1 @@
1
- import{n as e}from"./rolldown-runtime.js";import{_ as t}from"./sdk-contracts.js";import{Tt as n}from"./sdk-batch-runner.js";import{_ as r,m as i,s as a,x as o}from"./sdk-device.js";import{n as s}from"./command-catalog.js";import{AsyncLocalStorage as c}from"node:async_hooks";let l=[];const u=new c;async function d(e,t){return await u.run([...e],t)}function f(e,t){for(let n of m()){if(!n.ownsDevice(e))continue;let r=n.getInteractor(e,t);if(r)return r}}function p(e){return m().some(t=>t.ownsDevice(e))}function m(){return u.getStore()??l}function ee(e,t={}){C(e);let n=e.map(e=>e.provider);return{providerRuntimes:Object.freeze([...e]),providerRuntimeIds:n,providerRuntimeRequiredIds:y([...n,...t.providerRuntimeRequiredIds??[]]),leaseLifecycleProvider:b(e),recoverableProviderIds:e.filter(e=>e.recoverExpiredLease!==void 0).map(e=>e.provider),recoverExpiredLease:v(e),cloudArtifactProvider:x(e),deviceInventorySource:S(e),appleRunnerProvider:h(e),appleRunnerScreenRecordingTransport:te(e),providerDeviceRuntimeScope:async t=>await d(e,t)}}function te(e){if(e.some(_))return t=>{for(let n of e){if(!_(n)||!n.ownsDevice(t.device))continue;let e=n.getAppleRunnerScreenRecordingTransport(t.device);if(e)return e}}}function h(e){if(e.some(g))return t=>{for(let n of e){if(!g(n)||!n.ownsDevice(t.device))continue;let e=n.getAppleRunnerProvider(t.device);if(e)return e}}}function g(e){return`getAppleRunnerProvider`in e&&typeof e.getAppleRunnerProvider==`function`}function _(e){return`getAppleRunnerScreenRecordingTransport`in e&&typeof e.getAppleRunnerScreenRecordingTransport==`function`}function v(e){if(e.some(e=>e.recoverExpiredLease!==void 0))return async n=>{let r=e.find(e=>E(e,n.leaseProvider));if(!r?.recoverExpiredLease)throw new t(`UNSUPPORTED_OPERATION`,`Provider ${n.leaseProvider??`unknown`} cannot recover an expired lease.`,{provider:n.leaseProvider,leaseId:n.leaseId});await r.recoverExpiredLease(n)}}function y(e){return[...new Set(e)]}function b(e){if(e.length!==0)return{allocate:async(t,n)=>await T(e,`allocate`,t,n),heartbeat:async(t,n)=>await T(e,`heartbeat`,t,n),release:async(t,n)=>await T(e,`release`,t,n)}}function x(e){if(e.length!==0)return{listCloudArtifacts:async t=>await w(e,t)}}function S(e){if(e.length!==0)return{discover:async(t,n)=>{n.throwIfAborted();for(let r of e){if(!E(r,t.leaseProvider))continue;let e=await r.deviceInventoryProvider(t,n);if(n.throwIfAborted(),e!=null)return{kind:`inventory`,devices:e}}return{kind:`declined`}}}}function C(e){let t=new Set;for(let n of e){if(t.has(n.provider))throw TypeError(`Duplicate provider device runtime: ${n.provider}`);t.add(n.provider)}}async function w(e,t){for(let n of e){if(!E(n,t.provider))continue;let e=await n.cloudArtifacts?.listCloudArtifacts?.(t);if(e)return e}}async function T(e,t,n,r){for(let i of e){if(!E(i,n.leaseProvider))continue;let e=i.leaseLifecycle[t],a=e?await e(n,r):void 0;if(a)return a}}function E(e,t){return e.provider===t}const D=new Map;function O(e){for(let t of e.platforms){if(D.has(t))throw Error(`PlatformPlugin already registered for platform "${t}"`);D.set(t,e)}}function k(e){let n=D.get(e);if(!n)throw new t(`UNSUPPORTED_PLATFORM`,`Unsupported platform: ${e}`);return n}function A(e){return D.get(e)}const j={appAndDeviceLifecycle:!0,keyboard:!0,orientation:!0,physicalDeviceSurfaces:!1},M={ios:j,ipados:j,visionos:{appAndDeviceLifecycle:!0,keyboard:!0,orientation:!0,physicalDeviceSurfaces:!1},tvos:{appAndDeviceLifecycle:!0,keyboard:!1,orientation:!1,physicalDeviceSurfaces:!1},macos:{appAndDeviceLifecycle:!1,keyboard:!1,orientation:!1,physicalDeviceSurfaces:!0},watchos:{appAndDeviceLifecycle:!1,keyboard:!1,orientation:!1,physicalDeviceSurfaces:!1}};function N(e){return a(e.platform)?M[o(e)]:void 0}const P=e=>{let t=N(e);return t?t.appAndDeviceLifecycle:!0},F=e=>e.platform!==`apple`||e.kind!==`device`||e.iosPhysicalDeviceBackend!==`xctest`,I=e=>{let t=N(e);return t?t.keyboard:e.platform===`android`},L=e=>{let t=N(e);return t?t.orientation:e.platform===`android`},R=e=>{let t=N(e);return t&&t.physicalDeviceSurfaces||e.kind===`simulator`},z=e=>e.platform===`android`||e.platform===`apple`&&o(e)===`ios`||R(e),B=e=>e.platform===`android`?e.target===`tv`:i(e),V={[s.perf]:F,[s.home]:P,[s.appSwitcher]:P,[s.clipboard]:e=>e.platform===`android`||e.platform===`linux`||R(e),[s.keyboard]:I,[s.orientation]:L,[s.tvRemote]:B,[s.alert]:z,[s.settings]:e=>e.platform===`android`||R(e),[s.audio]:n},H={[s.perf]:U,[s.viewport]:e=>e.platform===`apple`?`viewport resizes web targets only (--platform web). Apple screen geometry is fixed by the selected simulator or device type — open a different simulator to test another screen size.`:void 0,[s.tvRemote]:e=>e.platform===`android`?e.target===`tv`?void 0:`tv-remote is supported only on Android TV targets.`:N(e)?i(e)?void 0:`tv-remote is supported only on tvOS devices.`:void 0};function U(e){if(!F(e))return`This command requires a CoreDevice-backed physical iOS device. The selected XCTest backend supports open, close, interactions, snapshots, and screenshots.`}const W={id:`apple`,platforms:[`apple`],familySelector:`apple`,capability:{bucket:`apple`,supportsByDefault:V,unsupportedHintByDefault:H},perf:{supportsObservations:()=>!0},providers:{platformGatedResolvers:[`appleRunnerProvider`,`appleToolProvider`]},createInteractor:async(e,t)=>{let{createAppleInteractor:n}=await import(`./interactor.js`);return n(e,t)}},G=[s.back,s.home,s.tvRemote],K=e=>e.target===`tv`,q=e=>e.kind===`emulator`&&K(e),J={id:`vega`,platforms:[`vega`],capability:{bucket:`vega`,supportsByDefault:Object.fromEntries(G.map(e=>[e,K])),unsupportedHintByDefault:Object.fromEntries(G.map(e=>[e,t=>q(t)?void 0:`${e} currently supports only Vega Virtual Devices.`]))},providers:{platformGatedResolvers:[`vegaToolProvider`]},createInteractor:async(e,t)=>{let{createVegaInteractor:n}=await import(`./interactor2.js`);return n(e,t)}},Y=[W,{id:`android`,platforms:[`android`],capability:{bucket:`android`,supportsByDefault:{[s.audio]:n,[s.tvRemote]:e=>e.target===`tv`},unsupportedHintByDefault:{[s.tvRemote]:e=>e.target===`tv`?void 0:`tv-remote is supported only on Android TV targets.`}},perf:{supportsObservations:()=>!0},providers:{platformGatedResolvers:[`androidAdbProvider`]},createInteractor:async(e,t)=>{let{createAndroidInteractor:n}=await import(`./android.js`).then(e=>e.t);return n(e,void 0,t)}},{id:`harmonyos`,platforms:[`harmonyos`],capability:{bucket:`harmonyos`},perf:{supportsObservations:()=>!0},createInteractor:async(e,t)=>{let{createHarmonyInteractor:n}=await import(`./harmonyos.js`);return n(e,t)}},J,{id:`linux`,platforms:[`linux`],capability:{bucket:`linux`},providers:{platformGatedResolvers:[`linuxToolProvider`]},createInteractor:async()=>{let{createLinuxInteractor:e}=await import(`./linux.js`);return e()}},{id:`web`,platforms:[`web`],capability:{bucket:`web`},providers:{platformGatedResolvers:[`webProvider`]},createInteractor:async()=>{let{createWebInteractor:e}=await import(`./web.js`);return e()}}];let X=!1;function Z(){if(!X){for(let e of Y)O(e);X=!0}}var ne=e({getInteractor:()=>Q,getLocalInteractor:()=>$});Z();async function Q(e,n){if(p(e)){let i=f(e,n);if(i)return i;throw new t(`UNSUPPORTED_OPERATION`,`Provider device runtime does not have an active interactor for this device.`,{deviceId:e.id,platform:r(e)})}return await $(e,n)}async function $(e,t){return await k(e.platform).createInteractor(e,t)}export{ee as a,A as i,ne as n,p as o,Z as r,Q as t};
1
+ import{y as e}from"./sdk-contracts.js";import{v as t}from"./sdk-device.js";import{n,r}from"./provider-device-runtime.js";import{n as i,t as a}from"./register-builtins.js";a();async function o(i,a){if(r(i)){let r=n(i,a);if(r)return r;throw new e(`UNSUPPORTED_OPERATION`,`Provider device runtime does not have an active interactor for this device.`,{deviceId:i.id,platform:t(i)})}return await s(i,a)}async function s(e,t){return await i(e.platform).createInteractor(e,t)}export{o as getInteractor,s as getLocalInteractor};
@@ -1 +1 @@
1
- export { };
1
+ export {}
@@ -1,2 +1 @@
1
- const e=new Map([{alias:`long-press`,command:`longpress`},{alias:`tap`,command:`press`},{alias:`launch`,command:`open`},{alias:`relaunch`,command:`open`,impliedFlags:[`relaunch`]},{alias:`metrics`,command:`perf`}].map(e=>[e.alias,e]));function t(t){return e.get(t.toLowerCase())?.command??t}function n(t){return e.get(t.toLowerCase())}const r=process.argv.slice(2);i(r)||(r[0]===`mcp`&&!r.includes(`--help`)&&!r.includes(`-h`)?import(`../server.js`).then(({runAgentDeviceMcpServer:e})=>e()).catch(g):h(r));function i(e){return a(e)||o(e)||s(e)}function a(e){return e.length!==1||!m(e[0])?!1:(process.stdout.write(`0.20.9
2
- `),!0)}function o(e){return e.length===0?(import(`../cli-help.js`).then(async({buildUsageText:e})=>{process.stdout.write(`${e()}\n`);let{exitAfterFlush:t}=await import(`../process-exit.js`);await t(1)}).catch(g),!0):!1}function s(e){let n=c(e);return n===void 0?!1:(import(`../cli-help.js`).then(({buildCommandUsageText:r,buildUsageText:i})=>{if(n===null){process.stdout.write(`${i()}\n`);return}let a=r(t(n));if(a){process.stdout.write(a);return}h(e)}).catch(g),!0)}function c(e){switch(e.length){case 1:return l(e[0]);case 2:return u(e[0],e[1]);default:return}}function l(e){return e===`help`||p(e)?null:void 0}function u(e,t){return f(e)?t:d(e,t)}function d(e,t){return p(t)?e:void 0}function f(e){return e===`help`}function p(e){return e===`--help`||e===`-h`}function m(e){return e===`--version`||e===`-V`}function h(e){import(`../process-entry.js`).then(({runCliProcess:t})=>t(e)).catch(g)}function g(e){process.stderr.write(`${e instanceof Error?e.message:String(e)}\n`),import(`../process-exit.js`).then(({exitAfterFlush:e})=>e(1)).catch(()=>process.exit(1))}export{t as n,n as t};
1
+ async function e(e,n,r){try{await t(e,n,r)}catch(e){r.stderr(`${e instanceof Error?e.message:String(e)}\n`),await(await n.processExit()).exitAfterFlush(1)}}async function t(e,t,l){if(e.length===0)return await n(t,l);if(o(e))return await r(t,l);let u=c(e);if(u!==void 0)return await i(u,e,t,l);if(s(e))return await(await t.mcp()).runAgentDeviceMcpServer();await a(e,t)}async function n(e,t){t.stdout(`${(await e.help()).buildUsageText()}\n`),await(await e.processExit()).exitAfterFlush(1)}async function r(e,t){t.stdout(`${t.bundledVersion??(await e.version()).readVersion()}\n`)}async function i(e,t,n,r){let i=await n.help(),o=e===null?`${i.buildUsageText()}\n`:i.resolveHelpTargetUsageText(e);if(o===null)return await a(t,n);r.stdout(o)}async function a(e,t){await(await t.cli()).runCliProcess(e)}function o(e){return e.length===1&&(e[0]===`--version`||e[0]===`-V`)}function s(e){return e[0]===`mcp`&&!e.some(l)}function c(e){let[t,n]=e;if(e.length===1)return t===`help`||l(t)?null:void 0;if(e.length===2)return t===`help`?n:l(n)?t:void 0}function l(e){return e===`--help`||e===`-h`}e(process.argv.slice(2),{help:()=>import(`../cli-help.js`).then(e=>e.n),cli:()=>import(`../process-entry.js`),mcp:()=>import(`../server.js`),version:()=>import(`../version.js`).then(e=>e.t),processExit:()=>import(`../process-exit.js`)},{bundledVersion:`0.21.0`,stdout:e=>{process.stdout.write(e)},stderr:e=>{process.stderr.write(e)}}).catch(()=>process.exit(1));export{};
@@ -1 +1 @@
1
- export { };
1
+ export {}
@@ -1 +1 @@
1
- import{_ as e,a as t,c as n,d as r,f as i,h as a,i as o,l as s,m as c,n as l,o as u,p as d,s as f,u as p}from"../url.js";import m from"node:fs";import{setTimeout as h}from"node:timers/promises";const g=5e3,_=6e4;var v=class extends Error{retryable;retryAfterMs;constructor(e,t,n){super(e),this.retryable=t,this.retryAfterMs=n}};function y(e,t){return{authorization:`Bearer ${t}`,"content-type":`application/json`,...e.includes(`ngrok`)?{"ngrok-skip-browser-warning":`1`}:{}}}function b(e){let t=e.replaceAll(/\s+/g,` `).trim();return t.length>300?`${t.slice(0,300)}...`:t}function x(e){return e.registerPath}function S(e){return e.unregisterPath??null}function C(e){return{...e.bridgeScope,...e.session?{session:e.session}:{},local_base_url:l(e.localBaseUrl),...e.devicePort?{device_port:e.devicePort}:{},...e.launchUrl?{launch_url:e.launchUrl}:{}}}async function w(e){let t=x(e),n;try{n=await fetch(`${l(e.serverBaseUrl)}${t}`,{method:`POST`,headers:y(e.serverBaseUrl,e.bearerToken),body:JSON.stringify(C(e)),signal:AbortSignal.timeout(g)})}catch(n){throw n instanceof Error&&n.name===`TimeoutError`?Error(`${t} timed out after ${g}ms calling ${l(e.serverBaseUrl)}${t}`):n}let r=await n.text(),i;try{i=r?JSON.parse(r):{}}catch{throw new v(`Failed to register companion (${n.status}): invalid JSON response: ${b(r)}`,T(n.status,void 0),E(n,{}))}if(!n.ok||i.ok!==!0||typeof i.data?.ws_url!=`string`)throw new v(`Failed to register companion (${n.status}): ${JSON.stringify(i)}`,T(n.status,i.error?.code),E(n,i));return{wsUrl:i.data.ws_url}}function T(e,t){return t===`RATE_LIMITED`?!0:t===`UNAUTHORIZED`||t===`INVALID_ARGS`||t===`SESSION_NOT_FOUND`?!1:e===408||e===409||e===425||e===429||e>=500}function E(e,t){let n=t.error?.details?.retryAfterMs;if(typeof n==`number`&&Number.isFinite(n))return D(n);let r=e.headers.get(`retry-after`);if(!r)return;let i=Number(r);if(Number.isFinite(i))return D(i*1e3);let a=Date.parse(r);if(Number.isFinite(a))return D(a-Date.now())}function D(e){return Math.max(0,Math.min(_,Math.ceil(e)))}function O(e){return Math.min(e*2,_)}async function k(e){let t=S(e);if(t)try{await fetch(`${l(e.serverBaseUrl)}${t}`,{method:`POST`,headers:y(e.serverBaseUrl,e.bearerToken),body:JSON.stringify(C(e)),signal:AbortSignal.timeout(2e3)})}catch(e){console.error(e instanceof Error?e.message:String(e))}}async function A(e){return typeof e==`string`?Buffer.from(e,`utf8`):e instanceof ArrayBuffer?Buffer.from(e):ArrayBuffer.isView(e)?Buffer.from(e.buffer,e.byteOffset,e.byteLength):typeof Blob<`u`&&e instanceof Blob?Buffer.from(await e.arrayBuffer()):Buffer.from(String(e),`utf8`)}async function j(e){let t=(await A(e.data)).toString(`utf8`);return JSON.parse(t)}function M(e,t){let n=new URL(t,`${l(e)}/`);return n.protocol=n.protocol===`https:`?`wss:`:`ws:`,n.toString()}function N(e){return typeof e!=`number`||!Number.isInteger(e)?1011:e===1e3||e>=3e3&&e<=4999||e>=1001&&e<=1015&&e!==1004&&e!==1005&&e!==1006?e:1011}function P(e){return e===1e3||e>=3e3&&e<=4999?e:3001}function F(e,t){e.readyState===1&&e.send(JSON.stringify(t))}async function I(e,t){e.readyState!==1&&await new Promise((n,r)=>{let i=()=>{s(),n()},a=()=>{s(),r(Error(`${t} WebSocket failed before opening.`))},o=()=>{s(),r(Error(`${t} WebSocket closed before opening.`))},s=()=>{e.removeEventListener(`open`,i),e.removeEventListener(`error`,a),e.removeEventListener(`close`,o)};e.addEventListener(`open`,i,{once:!0}),e.addEventListener(`error`,a,{once:!0}),e.addEventListener(`close`,o,{once:!0})})}async function L(e){e.readyState>=WebSocket.CLOSING||await new Promise(t=>{let n=()=>{r(),t()},r=()=>{e.removeEventListener(`close`,n),e.removeEventListener(`error`,n)};e.addEventListener(`close`,n,{once:!0}),e.addEventListener(`error`,n,{once:!0}),e.readyState>=WebSocket.CLOSING&&n()})}function R(e,t,n){try{e.close(P(t),n)}catch{}}function z(e){return!e.statePath||m.existsSync(e.statePath)}async function B(e,t,n){try{let r=await fetch(new URL(t.path,`${l(n.localBaseUrl)}/`),{method:t.method,headers:t.headers,...t.bodyBase64?{body:Buffer.from(t.bodyBase64,`base64`)}:{}}),i=Buffer.from(await r.arrayBuffer());F(e,{type:`http-response`,requestId:t.requestId,status:r.status,headers:Object.fromEntries(r.headers.entries()),...i.length>0?{bodyBase64:i.toString(`base64`)}:{}})}catch(n){F(e,{type:`http-error`,requestId:t.requestId,message:n instanceof Error?n.message:String(n)})}}async function V(e,t,n,r){let i=new WebSocket(M(n.localBaseUrl,t.path));i.binaryType=`arraybuffer`;let a=!1;i.addEventListener(`message`,n=>{(async()=>{if(!a)return;let r=await A(n.data);F(e,{type:`ws-frame`,streamId:t.streamId,dataBase64:r.toString(`base64`),binary:typeof n.data!=`string`})})().catch(e=>{console.error(e instanceof Error?e.message:String(e))})}),i.addEventListener(`close`,n=>{r.delete(t.streamId),a&&F(e,{type:`ws-close`,streamId:t.streamId,code:n.code,reason:n.reason})}),i.addEventListener(`error`,()=>{a&&F(e,{type:`ws-close`,streamId:t.streamId,code:1011,reason:`Upstream WebSocket error.`})}),r.set(t.streamId,i);try{await I(i,`Upstream`),a=!0,F(e,{type:`ws-open-result`,streamId:t.streamId,success:!0,headers:{}})}catch(n){r.delete(t.streamId),R(i,1011,`open failed`),F(e,{type:`ws-open-result`,streamId:t.streamId,success:!1,error:n instanceof Error?n.message:String(n)})}}function H(e,t){let n=t.get(e.streamId);if(!n||n.readyState!==1)return;let r=Buffer.from(e.dataBase64,`base64`);n.send(e.binary?r:r.toString(`utf8`))}function U(e,t){let n=t.get(e.streamId);n&&(t.delete(e.streamId),R(n,N(e.code),e.reason??`bridge requested close`))}async function W(e,t,n,r){switch(t.type){case`ping`:F(e,{type:`pong`,timestamp:t.timestamp});return;case`http-request`:await B(e,t,n);return;case`ws-open`:await V(e,t,n,r);return;case`ws-frame`:H(t,r);return;case`ws-close`:U(t,r);return}}async function G(e,t={}){let n=new Map,r=!1,i=null,a=!1,o=null,s=t.delay??h,c,l=new Promise(e=>{c=e}),u=()=>{t.exit?.(0)},d=async()=>{!a&&!o||(o??=k(e).finally(()=>{a=!1,o=null}),await o)},f=()=>{r||(r=!0,c(),a&&d().finally(u),i&&R(i,1e3,`companion stopping`),t.exit&&setTimeout(u,900).unref())};t.registerProcessSignals&&(process.once(`SIGTERM`,f),process.once(`SIGINT`,f));let p=setInterval(()=>{z(e)||(f(),u())},t.leaseCheckIntervalMs??250);p.unref();let m=t.reconnectDelayMs??1e3;try{for(;!r&&z(e);){let o=!1,c;try{a=!1;let s=await w(e);if(m=t.reconnectDelayMs??1e3,o=!0,a=!0,r||!z(e)){await d(),o=!1;break}let c=new WebSocket(s.wsUrl);i=c,c.binaryType=`arraybuffer`;try{await I(c,`Bridge`),c.addEventListener(`message`,t=>{(async()=>{let r=await j(t);await W(c,r,e,n)})().catch(e=>{console.error(e instanceof Error?e.message:String(e))})}),await Promise.race([L(c),l])}finally{i=null,n.forEach(e=>R(e,1012,`bridge disconnected`)),n.clear(),o&&=(await d(),!1)}}catch(t){if(i=null,o&&=(await d(),!1),r||!z(e)||(console.error(t instanceof Error?t.message:String(t)),t instanceof v&&!t.retryable))break;c=t instanceof v?t.retryAfterMs:void 0}if(r||!z(e))break;let u=c??m;c===void 0&&(m=O(m)),await s(u)}}finally{clearInterval(p),t.registerProcessSignals&&(process.off(`SIGTERM`,f),process.off(`SIGINT`,f))}}function K(e){if(!e?.trim())return;let t=Number.parseInt(e,10);if(!Number.isInteger(t)||t<1||t>65535)throw Error(`Companion worker received invalid device port configuration.`);return t}function q(l,m){let h=l[0];if(h!==`--agent-device-run-metro-companion`&&h!==`--agent-device-run-react-devtools-companion`)return null;let g=m[i]?.trim(),_=m[o]?.trim(),v=m[f]?.trim();if(!g||!_||!v)throw new e(`Companion tunnel worker is missing required environment configuration.`);let y=m[r]?.trim(),b=m[p]?.trim(),x=m[s]?.trim();if(!y||!b||!x)throw new e(`Companion tunnel worker is missing required bridge scope configuration.`);let S=m[n]?.trim();if(!S)throw new e(`Companion tunnel worker is missing required register path configuration.`);return{serverBaseUrl:g,bearerToken:_,localBaseUrl:v,registerPath:S,bridgeScope:{tenantId:y,runId:b,leaseId:x},launchUrl:m[u]?.trim(),statePath:m[c]?.trim(),unregisterPath:m[a]?.trim(),devicePort:K(m[t]?.trim()),session:m[d]?.trim()}}async function J(e,t){let n=q(e,t);return n?(await G(n,{exit:e=>process.exit(e),registerProcessSignals:!0}),!0):!1}J(process.argv.slice(2),process.env).catch(t=>{if(t instanceof e){console.error(t.message),process.exitCode=1;return}console.error(t instanceof Error?t.stack??t.message:String(t)),process.exitCode=1});export{};
1
+ import{a as e,c as t,d as n,f as r,g as i,i as a,l as o,m as s,o as c,p as l,r as u,s as d,t as f,u as p}from"../base-url.js";import m from"node:fs";import{setTimeout as h}from"node:timers/promises";const g=5e3,_=6e4;var v=class extends Error{retryable;retryAfterMs;constructor(e,t,n){super(e),this.retryable=t,this.retryAfterMs=n}};function y(e,t){return{authorization:`Bearer ${t}`,"content-type":`application/json`,...e.includes(`ngrok`)?{"ngrok-skip-browser-warning":`1`}:{}}}function b(e){let t=e.replaceAll(/\s+/g,` `).trim();return t.length>300?`${t.slice(0,300)}...`:t}function x(e){return e.registerPath}function S(e){return e.unregisterPath??null}function C(e){return{...e.bridgeScope,...e.session?{session:e.session}:{},local_base_url:f(e.localBaseUrl),...e.devicePort?{device_port:e.devicePort}:{},...e.launchUrl?{launch_url:e.launchUrl}:{}}}async function w(e){let t=x(e),n;try{n=await fetch(`${f(e.serverBaseUrl)}${t}`,{method:`POST`,headers:y(e.serverBaseUrl,e.bearerToken),body:JSON.stringify(C(e)),signal:AbortSignal.timeout(g)})}catch(n){throw n instanceof Error&&n.name===`TimeoutError`?Error(`${t} timed out after ${g}ms calling ${f(e.serverBaseUrl)}${t}`):n}let r=await n.text(),i;try{i=r?JSON.parse(r):{}}catch{throw new v(`Failed to register companion (${n.status}): invalid JSON response: ${b(r)}`,T(n.status,void 0),E(n,{}))}if(!n.ok||i.ok!==!0||typeof i.data?.ws_url!=`string`)throw new v(`Failed to register companion (${n.status}): ${JSON.stringify(i)}`,T(n.status,i.error?.code),E(n,i));return{wsUrl:i.data.ws_url}}function T(e,t){return t===`RATE_LIMITED`?!0:t===`UNAUTHORIZED`||t===`INVALID_ARGS`||t===`SESSION_NOT_FOUND`?!1:e===408||e===409||e===425||e===429||e>=500}function E(e,t){let n=t.error?.details?.retryAfterMs;if(typeof n==`number`&&Number.isFinite(n))return D(n);let r=e.headers.get(`retry-after`);if(!r)return;let i=Number(r);if(Number.isFinite(i))return D(i*1e3);let a=Date.parse(r);if(Number.isFinite(a))return D(a-Date.now())}function D(e){return Math.max(0,Math.min(_,Math.ceil(e)))}function O(e){return Math.min(e*2,_)}async function k(e){let t=S(e);if(t)try{await fetch(`${f(e.serverBaseUrl)}${t}`,{method:`POST`,headers:y(e.serverBaseUrl,e.bearerToken),body:JSON.stringify(C(e)),signal:AbortSignal.timeout(2e3)})}catch(e){console.error(e instanceof Error?e.message:String(e))}}async function A(e){return typeof e==`string`?Buffer.from(e,`utf8`):e instanceof ArrayBuffer?Buffer.from(e):ArrayBuffer.isView(e)?Buffer.from(e.buffer,e.byteOffset,e.byteLength):typeof Blob<`u`&&e instanceof Blob?Buffer.from(await e.arrayBuffer()):Buffer.from(String(e),`utf8`)}async function j(e){let t=(await A(e.data)).toString(`utf8`);return JSON.parse(t)}function M(e,t){let n=new URL(t,`${f(e)}/`);return n.protocol=n.protocol===`https:`?`wss:`:`ws:`,n.toString()}function N(e){return typeof e!=`number`||!Number.isInteger(e)?1011:e===1e3||e>=3e3&&e<=4999||e>=1001&&e<=1015&&e!==1004&&e!==1005&&e!==1006?e:1011}function P(e){return e===1e3||e>=3e3&&e<=4999?e:3001}function F(e,t){e.readyState===1&&e.send(JSON.stringify(t))}async function I(e,t){e.readyState!==1&&await new Promise((n,r)=>{let i=()=>{s(),n()},a=()=>{s(),r(Error(`${t} WebSocket failed before opening.`))},o=()=>{s(),r(Error(`${t} WebSocket closed before opening.`))},s=()=>{e.removeEventListener(`open`,i),e.removeEventListener(`error`,a),e.removeEventListener(`close`,o)};e.addEventListener(`open`,i,{once:!0}),e.addEventListener(`error`,a,{once:!0}),e.addEventListener(`close`,o,{once:!0})})}async function L(e){e.readyState>=WebSocket.CLOSING||await new Promise(t=>{let n=()=>{r(),t()},r=()=>{e.removeEventListener(`close`,n),e.removeEventListener(`error`,n)};e.addEventListener(`close`,n,{once:!0}),e.addEventListener(`error`,n,{once:!0}),e.readyState>=WebSocket.CLOSING&&n()})}function R(e,t,n){try{e.close(P(t),n)}catch{}}function z(e){return!e.statePath||m.existsSync(e.statePath)}async function B(e,t,n){try{let r=await fetch(new URL(t.path,`${f(n.localBaseUrl)}/`),{method:t.method,headers:t.headers,...t.bodyBase64?{body:Buffer.from(t.bodyBase64,`base64`)}:{}}),i=Buffer.from(await r.arrayBuffer());F(e,{type:`http-response`,requestId:t.requestId,status:r.status,headers:Object.fromEntries(r.headers.entries()),...i.length>0?{bodyBase64:i.toString(`base64`)}:{}})}catch(n){F(e,{type:`http-error`,requestId:t.requestId,message:n instanceof Error?n.message:String(n)})}}async function V(e,t,n,r){let i=new WebSocket(M(n.localBaseUrl,t.path));i.binaryType=`arraybuffer`;let a=!1;i.addEventListener(`message`,n=>{(async()=>{if(!a)return;let r=await A(n.data);F(e,{type:`ws-frame`,streamId:t.streamId,dataBase64:r.toString(`base64`),binary:typeof n.data!=`string`})})().catch(e=>{console.error(e instanceof Error?e.message:String(e))})}),i.addEventListener(`close`,n=>{r.delete(t.streamId),a&&F(e,{type:`ws-close`,streamId:t.streamId,code:n.code,reason:n.reason})}),i.addEventListener(`error`,()=>{a&&F(e,{type:`ws-close`,streamId:t.streamId,code:1011,reason:`Upstream WebSocket error.`})}),r.set(t.streamId,i);try{await I(i,`Upstream`),a=!0,F(e,{type:`ws-open-result`,streamId:t.streamId,success:!0,headers:{}})}catch(n){r.delete(t.streamId),R(i,1011,`open failed`),F(e,{type:`ws-open-result`,streamId:t.streamId,success:!1,error:n instanceof Error?n.message:String(n)})}}function H(e,t){let n=t.get(e.streamId);if(!n||n.readyState!==1)return;let r=Buffer.from(e.dataBase64,`base64`);n.send(e.binary?r:r.toString(`utf8`))}function U(e,t){let n=t.get(e.streamId);n&&(t.delete(e.streamId),R(n,N(e.code),e.reason??`bridge requested close`))}async function W(e,t,n,r){switch(t.type){case`ping`:F(e,{type:`pong`,timestamp:t.timestamp});return;case`http-request`:await B(e,t,n);return;case`ws-open`:await V(e,t,n,r);return;case`ws-frame`:H(t,r);return;case`ws-close`:U(t,r);return}}async function G(e,t={}){let n=new Map,r=!1,i=null,a=!1,o=null,s=t.delay??h,c,l=new Promise(e=>{c=e}),u=()=>{t.exit?.(0)},d=async()=>{!a&&!o||(o??=k(e).finally(()=>{a=!1,o=null}),await o)},f=()=>{r||(r=!0,c(),a&&d().finally(u),i&&R(i,1e3,`companion stopping`),t.exit&&setTimeout(u,900).unref())};t.registerProcessSignals&&(process.once(`SIGTERM`,f),process.once(`SIGINT`,f));let p=setInterval(()=>{z(e)||(f(),u())},t.leaseCheckIntervalMs??250);p.unref();let m=t.reconnectDelayMs??1e3;try{for(;!r&&z(e);){let o=!1,c;try{a=!1;let s=await w(e);if(m=t.reconnectDelayMs??1e3,o=!0,a=!0,r||!z(e)){await d(),o=!1;break}let c=new WebSocket(s.wsUrl);i=c,c.binaryType=`arraybuffer`;try{await I(c,`Bridge`),c.addEventListener(`message`,t=>{(async()=>{let r=await j(t);await W(c,r,e,n)})().catch(e=>{console.error(e instanceof Error?e.message:String(e))})}),await Promise.race([L(c),l])}finally{i=null,n.forEach(e=>R(e,1012,`bridge disconnected`)),n.clear(),o&&=(await d(),!1)}}catch(t){if(i=null,o&&=(await d(),!1),r||!z(e)||(console.error(t instanceof Error?t.message:String(t)),t instanceof v&&!t.retryable))break;c=t instanceof v?t.retryAfterMs:void 0}if(r||!z(e))break;let u=c??m;c===void 0&&(m=O(m)),await s(u)}}finally{clearInterval(p),t.registerProcessSignals&&(process.off(`SIGTERM`,f),process.off(`SIGINT`,f))}}function K(e){if(!e?.trim())return;let t=Number.parseInt(e,10);if(!Number.isInteger(t)||t<1||t>65535)throw Error(`Companion worker received invalid device port configuration.`);return t}function q(f,m){let h=f[0];if(h!==`--agent-device-run-metro-companion`&&h!==`--agent-device-run-react-devtools-companion`)return null;let g=m[n]?.trim(),_=m[u]?.trim(),v=m[c]?.trim();if(!g||!_||!v)throw new i(`Companion tunnel worker is missing required environment configuration.`);let y=m[p]?.trim(),b=m[o]?.trim(),x=m[t]?.trim();if(!y||!b||!x)throw new i(`Companion tunnel worker is missing required bridge scope configuration.`);let S=m[d]?.trim();if(!S)throw new i(`Companion tunnel worker is missing required register path configuration.`);return{serverBaseUrl:g,bearerToken:_,localBaseUrl:v,registerPath:S,bridgeScope:{tenantId:y,runId:b,leaseId:x},launchUrl:m[e]?.trim(),statePath:m[l]?.trim(),unregisterPath:m[s]?.trim(),devicePort:K(m[a]?.trim()),session:m[r]?.trim()}}async function J(e,t){let n=q(e,t);return n?(await G(n,{exit:e=>process.exit(e),registerProcessSignals:!0}),!0):!1}J(process.argv.slice(2),process.env).catch(e=>{if(e instanceof i){console.error(e.message),process.exitCode=1;return}console.error(e instanceof Error?e.stack??e.message:String(e)),process.exitCode=1});export{};
@@ -1 +1 @@
1
- export { };
1
+ export {}