agent-device 0.21.22 → 0.21.24

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 (273) hide show
  1. package/README.md +6 -6
  2. package/android/ime-helper/dist/{agent-device-android-ime-helper-0.21.22.apk → agent-device-android-ime-helper-0.21.24.apk} +0 -0
  3. package/android/ime-helper/dist/agent-device-android-ime-helper-0.21.24.apk.sha256 +1 -0
  4. package/android/ime-helper/dist/{agent-device-android-ime-helper-0.21.22.manifest.json → agent-device-android-ime-helper-0.21.24.manifest.json} +4 -4
  5. package/android/snapshot-helper/dist/agent-device-android-snapshot-helper-0.21.24.apk +0 -0
  6. package/android/snapshot-helper/dist/agent-device-android-snapshot-helper-0.21.24.apk.sha256 +1 -0
  7. package/android/snapshot-helper/dist/{agent-device-android-snapshot-helper-0.21.22.manifest.json → agent-device-android-snapshot-helper-0.21.24.manifest.json} +6 -6
  8. package/apple/macos-helper/Sources/AgentDeviceMacOSHelper/SnapshotTraversal.swift +12 -6
  9. package/apple/macos-helper/Tests/AgentDeviceMacOSHelperTests/RectResponseTests.swift +21 -0
  10. package/apple/snapshot-bridge/README.md +9 -7
  11. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+CommandDispatch.swift +56 -0
  12. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+CommandExecution.swift +14 -5
  13. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+Lifecycle.swift +8 -0
  14. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+Models.swift +12 -0
  15. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+SnapshotCaptureTarget.swift +1 -1
  16. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+SnapshotExecution.swift +29 -5
  17. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+TextEntry.swift +34 -10
  18. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+TextEntryFocus.swift +19 -5
  19. package/dist/apple/runner/AgentDeviceRunner/AgentDeviceRunnerUITests/RunnerTests+TextTyping.swift +3 -3
  20. package/dist/src/adapter.js +1 -1
  21. package/dist/src/adb.js +1 -1
  22. package/dist/src/agent-browser-lifecycle.js +1 -1
  23. package/dist/src/agent-browser-process-record.js +1 -1
  24. package/dist/src/agent-browser-provider.js +1 -1
  25. package/dist/src/agent-device-client.js +2 -2
  26. package/dist/src/alert-runtime.js +1 -1
  27. package/dist/src/alert.js +1 -1
  28. package/dist/src/android-adb.d.ts +3 -2
  29. package/dist/src/android-input-ownership.js +1 -1
  30. package/dist/src/app-backend.js +1 -1
  31. package/dist/src/app-inventory.d.ts +4 -0
  32. package/dist/src/app-launch.js +1 -1
  33. package/dist/src/app-lifecycle.js +1 -1
  34. package/dist/src/app-log-reconnect.js +1 -1
  35. package/dist/src/app-log-runtime2.js +3 -3
  36. package/dist/src/app-resolution.js +2 -2
  37. package/dist/src/app-state-runtime.d.ts +15 -0
  38. package/dist/src/apple-runner-platform.js +1 -1
  39. package/dist/src/application-lifecycle-interaction.js +1 -1
  40. package/dist/src/aws-device-farm-connection.js +1 -0
  41. package/dist/src/back-mode.js +1 -1
  42. package/dist/src/backend-snapshot-options.js +1 -1
  43. package/dist/src/browserstack-connection.js +1 -0
  44. package/dist/src/browserstack-device-features.js +1 -0
  45. package/dist/src/browserstack.js +1 -0
  46. package/dist/src/cache.js +1 -1
  47. package/dist/src/cli-config.js +1 -1
  48. package/dist/src/cli-help.js +35 -19
  49. package/dist/src/cli-runner.js +1 -1
  50. package/dist/src/cli.js +3 -4
  51. package/dist/src/client-companion-tunnel.js +1 -0
  52. package/dist/src/client-metro-companion.js +1 -1
  53. package/dist/src/client-metro.js +1 -1
  54. package/dist/src/client-options.js +3 -3
  55. package/dist/src/client-types.d.ts +7 -5
  56. package/dist/src/cloud-artifacts.d.ts +9 -2
  57. package/dist/src/code-signature-cache.js +1 -1
  58. package/dist/src/command-metadata.js +1 -1
  59. package/dist/src/command-schema.js +1 -1
  60. package/dist/src/command-tools.js +2 -2
  61. package/dist/src/connection-runtime.js +1 -1
  62. package/dist/src/connection-verification.js +1 -0
  63. package/dist/src/connection.js +5 -5
  64. package/dist/src/contracts.d.ts +1 -1
  65. package/dist/src/daemon-client-lease-beat.js +1 -1
  66. package/dist/src/daemon-client-lifecycle.js +1 -1
  67. package/dist/src/daemon-client-transport.js +1 -1
  68. package/dist/src/daemon-http.js +1 -1
  69. package/dist/src/daemon-policy-file.js +1 -1
  70. package/dist/src/daemon-registration-owner.js +1 -1
  71. package/dist/src/device-claim-inspection.js +1 -1
  72. package/dist/src/device-input-state.d.ts +2 -15
  73. package/dist/src/device-readiness-runtime.js +1 -1
  74. package/dist/src/device-selection-resolver.js +1 -1
  75. package/dist/src/device-session.js +3 -1
  76. package/dist/src/device.js +1 -1
  77. package/dist/src/device2.js +1 -1
  78. package/dist/src/device3.js +1 -1
  79. package/dist/src/dispatch-resolve.js +3 -3
  80. package/dist/src/doctor-facade.js +1 -1
  81. package/dist/src/durable-capture-resource.js +1 -1
  82. package/dist/src/durable-resource.js +1 -1
  83. package/dist/src/exec.js +1 -1
  84. package/dist/src/file.js +1 -1
  85. package/dist/src/find.js +1 -1
  86. package/dist/src/finders.js +1 -1
  87. package/dist/src/format.js +2 -1
  88. package/dist/src/gesture-admission.js +1 -1
  89. package/dist/src/gesture-plan-types.d.ts +2 -5
  90. package/dist/src/gesture-runtime.js +1 -1
  91. package/dist/src/helper.js +2 -2
  92. package/dist/src/human-control.js +1 -1
  93. package/dist/src/ime-rebind.js +1 -0
  94. package/dist/src/ime-settings-record.js +1 -0
  95. package/dist/src/ime-state.js +1 -0
  96. package/dist/src/index.d.ts +3 -3
  97. package/dist/src/input-actions.js +1 -1
  98. package/dist/src/input-actions2.js +1 -1
  99. package/dist/src/install-source2.js +1 -1
  100. package/dist/src/instance-client.js +1 -1
  101. package/dist/src/interaction-positionals.js +1 -1
  102. package/dist/src/interaction-ref-policy.js +1 -1
  103. package/dist/src/interaction.js +1 -1
  104. package/dist/src/interaction2.js +1 -1
  105. package/dist/src/interactor.js +5 -5
  106. package/dist/src/interactors.js +1 -1
  107. package/dist/src/internal/bin.js +1 -1
  108. package/dist/src/internal/daemon.js +1 -1
  109. package/dist/src/inventory2.js +1 -1
  110. package/dist/src/ios-client.js +4 -4
  111. package/dist/src/ios-snapshot-acquisition.js +1 -1
  112. package/dist/src/ios-snapshot-engine.js +1 -1
  113. package/dist/src/ios-snapshot-runtime.js +1 -1
  114. package/dist/src/launch-confirmation.js +1 -1
  115. package/dist/src/lease-scope.js +1 -1
  116. package/dist/src/lease.js +1 -1
  117. package/dist/src/limrun.d.ts +4 -555
  118. package/dist/src/load.js +1 -1
  119. package/dist/src/local-interactor-operation-set.js +1 -1
  120. package/dist/src/log-stream.js +33 -0
  121. package/dist/src/managed-device-scope.js +1 -1
  122. package/dist/src/manifest.js +1 -0
  123. package/dist/src/mechanics.js +16 -16
  124. package/dist/src/mobile-snapshot-semantics.js +1 -1
  125. package/dist/src/node-http.js +1 -0
  126. package/dist/src/observation.js +1 -2
  127. package/dist/src/overlay.js +3 -3
  128. package/dist/src/owner-identity.js +3 -3
  129. package/dist/src/perf-facade.js +1 -1
  130. package/dist/src/perf-runtime-plan.js +1 -1
  131. package/dist/src/perf-target.js +1 -1
  132. package/dist/src/physical-device-control.js +1 -1
  133. package/dist/src/platform-request-scope.js +1 -1
  134. package/dist/src/platform-runtime-app-log-process.js +1 -1
  135. package/dist/src/platform-runtime-open-target.js +1 -1
  136. package/dist/src/platform-runtime-operation-host.js +4 -4
  137. package/dist/src/platform-runtime-runtime-hints.js +1 -1
  138. package/dist/src/platform-runtime-screen-recording-finalizer-host.js +1 -1
  139. package/dist/src/platform-runtime-screen-recording-process-host.js +1 -1
  140. package/dist/src/platform-runtime-unavailable.js +1 -1
  141. package/dist/src/platform-runtime.js +1 -1
  142. package/dist/src/platform-runtime2.js +1 -1
  143. package/dist/src/plugin.js +1 -0
  144. package/dist/src/plugins/webdriver.d.ts +111 -0
  145. package/dist/src/plugins/webdriver.js +1 -0
  146. package/dist/src/plugins.d.ts +2 -1
  147. package/dist/src/plugins2.js +1 -1
  148. package/dist/src/process-exit.js +1 -1
  149. package/dist/src/process.js +1 -1
  150. package/dist/src/provider-credential-fingerprint.js +1 -1
  151. package/dist/src/provider-device-admission.js +1 -1
  152. package/dist/src/provider-device-runtime.d.ts +556 -0
  153. package/dist/src/provider-policy.js +1 -0
  154. package/dist/src/provider-profile-fields.js +1 -1
  155. package/dist/src/provider-webdriver.js +1 -2
  156. package/dist/src/providers.js +1 -1
  157. package/dist/src/proxy.js +2 -2
  158. package/dist/src/react-devtools.js +2 -0
  159. package/dist/src/react-native.js +1 -1
  160. package/dist/src/record-runtime.js +1 -1
  161. package/dist/src/record-trace.js +1 -1
  162. package/dist/src/recording.js +1 -1
  163. package/dist/src/registry.js +24 -24
  164. package/dist/src/remote-bridge.js +1 -0
  165. package/dist/src/remote-config-core.js +1 -0
  166. package/dist/src/remote-config.js +1 -1
  167. package/dist/src/remote-config2.js +1 -1
  168. package/dist/src/remote-connection-state.js +1 -0
  169. package/dist/src/replay.js +2 -2
  170. package/dist/src/request-admission.js +1 -1
  171. package/dist/src/request-runtime-binding.js +1 -1
  172. package/dist/src/result-serialization.js +1 -1
  173. package/dist/src/retry.js +1 -1
  174. package/dist/src/retry2.js +1 -0
  175. package/dist/src/runner-artifact-manifest.js +1 -1
  176. package/dist/src/runner-cache-metadata.js +2 -3
  177. package/dist/src/runner-cache-retention.js +1 -0
  178. package/dist/src/runner-cache-trim.js +1 -0
  179. package/dist/src/runner-client.js +1 -1
  180. package/dist/src/runner-dev-tools-security.js +1 -1
  181. package/dist/src/runner-device-readiness.js +1 -1
  182. package/dist/src/runner-device-set.js +1 -0
  183. package/dist/src/runner-disposal.js +1 -1
  184. package/dist/src/runner-error-classification.js +1 -1
  185. package/dist/src/runner-exchange.js +1 -1
  186. package/dist/src/runner-lease.js +1 -0
  187. package/dist/src/runner-operations-facade.js +1 -1
  188. package/dist/src/runner-session-types.js +1 -1
  189. package/dist/src/runner-start-budget.js +1 -1
  190. package/dist/src/runner-toolchain-probe.js +2 -0
  191. package/dist/src/runner.js +1 -1
  192. package/dist/src/runtime-deployment.js +1 -0
  193. package/dist/src/runtime.js +1 -1
  194. package/dist/src/runtime10.js +1 -2
  195. package/dist/src/runtime11.js +2 -0
  196. package/dist/src/runtime2.js +2 -5
  197. package/dist/src/runtime3.js +5 -1
  198. package/dist/src/runtime4.js +1 -5
  199. package/dist/src/runtime5.js +5 -1
  200. package/dist/src/runtime6.js +1 -1
  201. package/dist/src/runtime7.js +1 -1
  202. package/dist/src/runtime8.js +1 -1
  203. package/dist/src/runtime9.js +1 -1
  204. package/dist/src/screen-recording-transport.js +1 -1
  205. package/dist/src/screenshot-density.js +1 -1
  206. package/dist/src/screenshot-overlay-draw.js +1 -1
  207. package/dist/src/screenshot3.js +2 -2
  208. package/dist/src/script.js +1 -1
  209. package/dist/src/scroll-gesture.js +1 -1
  210. package/dist/src/sdk-batch.js +2 -2
  211. package/dist/src/sdk-contracts.d.ts +25 -33
  212. package/dist/src/sdk-contracts.js +2 -2
  213. package/dist/src/sdk-device.js +1 -1
  214. package/dist/src/sdk-finders.d.ts +1 -1
  215. package/dist/src/sdk-finders.js +1 -1
  216. package/dist/src/sdk-remote-config.d.ts +4 -0
  217. package/dist/src/sdk-remote-config.js +1 -1
  218. package/dist/src/sdk-selectors.d.ts +1 -1
  219. package/dist/src/sdk-selectors.js +1 -1
  220. package/dist/src/selection.js +0 -0
  221. package/dist/src/selector-pipeline-policy.js +1 -1
  222. package/dist/src/selector-runtime.js +1 -1
  223. package/dist/src/selectors.js +1 -1
  224. package/dist/src/server.js +2 -2
  225. package/dist/src/session-snapshot.js +1 -1
  226. package/dist/src/session2.js +5 -5
  227. package/dist/src/simctl.js +1 -1
  228. package/dist/src/simulator-boot.js +1 -1
  229. package/dist/src/simulator-state.js +1 -1
  230. package/dist/src/simulator.js +1 -1
  231. package/dist/src/snapshot-capture-annotations.js +1 -1
  232. package/dist/src/snapshot-desktop-projection.js +1 -1
  233. package/dist/src/snapshot-private-evidence.js +1 -0
  234. package/dist/src/snapshot-runtime-binding.js +1 -1
  235. package/dist/src/snapshot-runtime.js +1 -1
  236. package/dist/src/snapshot-state.js +1 -1
  237. package/dist/src/snapshot4.js +1 -1
  238. package/dist/src/src2.js +1 -1
  239. package/dist/src/src3.js +1 -1
  240. package/dist/src/src4.js +1 -1
  241. package/dist/src/src5.js +1 -1
  242. package/dist/src/src6.js +1 -1
  243. package/dist/src/src7.js +1 -1
  244. package/dist/src/src8.js +20 -20
  245. package/dist/src/store.js +1 -1
  246. package/dist/src/target-evidence.js +1 -1
  247. package/dist/src/text-entry-focus.js +1 -1
  248. package/dist/src/tool-provider2.js +1 -1
  249. package/dist/src/touch-runtime2.js +1 -1
  250. package/dist/src/tree.js +1 -1
  251. package/dist/src/type-text-runtime.js +1 -1
  252. package/dist/src/video.js +1 -1
  253. package/package.json +24 -16
  254. package/server.json +2 -2
  255. package/android/ime-helper/dist/agent-device-android-ime-helper-0.21.22.apk.sha256 +0 -1
  256. package/android/snapshot-helper/dist/agent-device-android-snapshot-helper-0.21.22.apk +0 -0
  257. package/android/snapshot-helper/dist/agent-device-android-snapshot-helper-0.21.22.apk.sha256 +0 -1
  258. package/dist/src/capabilities.js +0 -1
  259. package/dist/src/compatibility-policy.js +0 -1
  260. package/dist/src/daemon-artifacts.js +0 -1
  261. package/dist/src/device-claim-rule.js +0 -1
  262. package/dist/src/human-control-contract.js +0 -1
  263. package/dist/src/prepare-kind.js +0 -1
  264. package/dist/src/provider-device-runtimes.js +0 -1
  265. package/dist/src/screen-recording-admission-ledger.js +0 -1
  266. package/dist/src/screenshot-runtime.js +0 -1
  267. package/dist/src/session-routing.js +0 -1
  268. package/dist/src/session-runtime-admission.js +0 -1
  269. package/dist/src/session-stream.js +0 -27
  270. package/dist/src/timeouts.js +0 -1
  271. package/dist/src/touch-reference-frame.js +0 -1
  272. package/dist/src/vars.js +0 -2
  273. package/dist/src/viewport.js +0 -1
@@ -1 +1 @@
1
- import{p as e}from"./sdk-device.js";import"./command.js";import{r as t}from"./device-isolation.js";import{o as n,s as r}from"./tool-provider.js";function i(n){let r=e(n)&&n.kind===`simulator`?t(n.simulatorSetPath):void 0;return Object.freeze({udid:n.id,simulatorSetPath:r})}function a(e,n){let r=t(e),i=r?[`--set`,r,...n]:[...n];return Object.freeze(i)}function o(){return a(void 0,[`help`])}function s(e){return a(e,[`list`,`-j`])}function c(e,t){return a(i(e).simulatorSetPath,t)}function l(e,t){return r(a(e.simulatorSetPath,t))}function u(e,t){return l(i(e),t)}function d(e,t,r){return n(u(e,t),r)}function f(e){return JSON.parse(e).devices??{}}function p(e,t){try{for(let n of Object.values(f(e))){let e=n.find(e=>e.udid===t);if(e)return e.state??null}return null}catch{return null}}export{d as a,s as c,f as i,i as l,u as n,c as o,p as r,o as s,l as t};
1
+ import{h as e}from"./sdk-device.js";import"./command.js";import{r as t}from"./device-isolation.js";import{o as n,s as r}from"./tool-provider.js";function i(n){let r=e(n)&&n.kind===`simulator`?t(n.simulatorSetPath):void 0;return Object.freeze({udid:n.id,simulatorSetPath:r})}function a(e,n){let r=t(e),i=r?[`--set`,r,...n]:[...n];return Object.freeze(i)}function o(){return a(void 0,[`help`])}function s(e){return a(e,[`list`,`-j`])}function c(e,t){return a(i(e).simulatorSetPath,t)}function l(e,t){return r(a(e.simulatorSetPath,t))}function u(e,t){return l(i(e),t)}function d(e,t,r){return n(u(e,t),r)}function f(e){return JSON.parse(e).devices??{}}function p(e,t){try{for(let n of Object.values(f(e))){let e=n.find(e=>e.udid===t);if(e)return e.state??null}return null}catch{return null}}function m(e){let t=e.trim();if(!(!t||t===`(null)`))return t}export{f as a,o as c,p as i,s as l,u as n,d as o,m as r,c as s,l as t,i as u};
@@ -1,3 +1,3 @@
1
- import{p as e}from"./sdk-device.js";import{l as t}from"./exec.js";import"./command.js";const n=`launchd_sim`,r={LC_ALL:`C`},i=/^(\d+)\s+([A-Za-z]{3} [A-Za-z]{3} +\d{1,2} \d{2}:\d{2}:\d{2} \d{4})\s+(.+)$/,a=/^[A-Za-z]{3} ([A-Za-z]{3}) +(\d{1,2}) (\d{2}):(\d{2}):(\d{2}) (\d{4})$/,o=new Map([[`Jan`,0],[`Feb`,1],[`Mar`,2],[`Apr`,3],[`May`,4],[`Jun`,5],[`Jul`,6],[`Aug`,7],[`Sep`,8],[`Oct`,9],[`Nov`,10],[`Dec`,11]]);async function s(t){if(!e(t)||t.kind!==`simulator`)return{observed:!1,reason:`unsupported-device`};let n=await c();if(n.length===0)return{observed:!1,reason:`unobserved`};let r=d(await l(n),t.id);return r===void 0?{observed:!1,reason:`unobserved`}:{observed:!0,bootedAtMs:r}}async function c(){let e=await u(`/usr/bin/pgrep`,[`-x`,n]);return e===void 0?[]:e.split(`
1
+ import{h as e}from"./sdk-device.js";import{l as t}from"./exec.js";import"./command.js";const n=`launchd_sim`,r={LC_ALL:`C`},i=/^(\d+)\s+([A-Za-z]{3} [A-Za-z]{3} +\d{1,2} \d{2}:\d{2}:\d{2} \d{4})\s+(.+)$/,a=/^[A-Za-z]{3} ([A-Za-z]{3}) +(\d{1,2}) (\d{2}):(\d{2}):(\d{2}) (\d{4})$/,o=new Map([[`Jan`,0],[`Feb`,1],[`Mar`,2],[`Apr`,3],[`May`,4],[`Jun`,5],[`Jul`,6],[`Aug`,7],[`Sep`,8],[`Oct`,9],[`Nov`,10],[`Dec`,11]]);async function s(t){if(!e(t)||t.kind!==`simulator`)return{observed:!1,reason:`unsupported-device`};let n=await c();if(n.length===0)return{observed:!1,reason:`unobserved`};let r=d(await l(n),t.id);return r===void 0?{observed:!1,reason:`unobserved`}:{observed:!0,bootedAtMs:r}}async function c(){let e=await u(`/usr/bin/pgrep`,[`-x`,n]);return e===void 0?[]:e.split(`
2
2
  `).map(e=>Number.parseInt(e.trim(),10)).filter(e=>Number.isInteger(e)&&e>0)}async function l(e){return await u(`/bin/ps`,[`-p`,e.join(`,`),`-o`,`pid=,lstart=,command=`],r)??``}async function u(e,n,r){try{let i=await t(e,[...n],{allowFailure:!0,timeoutMs:2e3,...r?{env:r}:{}});return i.exitCode===0?i.stdout:void 0}catch{return}}function d(e,t){let n=Date.now(),r;for(let i of e.split(`
3
3
  `)){let e=f(i,t);e===void 0||e>n||(r===void 0||e>r)&&(r=e)}return r}function f(e,t){let[,n,r]=i.exec(e)?.slice(1)??[];if(n!==void 0&&r!==void 0&&p(r,t))return m(n)}function p(e,t){let[r,...i]=e.trim().split(/\s+/);return r!==void 0&&r.split(`/`).pop()===n&&i.some(e=>e.includes(t))}function m(e){let[,t,n,r,i,s,c]=a.exec(e.trim())??[],l=t===void 0?void 0:o.get(t);if(l===void 0)return;let u=new Date(Number(c),l,Number(n),Number(r),Number(i),Number(s)).getTime();return Number.isFinite(u)?u:void 0}export{s as observeSimulatorBootTimeMs};
@@ -1 +1 @@
1
- import{o as e,r as t}from"./simctl.js";async function n(n,r,i,a){let o=await n.run({tool:`simctl`,args:e(r,[`list`,`devices`,`-j`]),allowFailure:!0,timeoutMs:a},i);return o.exitCode===0?t(o.stdout,r.id):null}export{n as t};
1
+ import{i as e,s as t}from"./simctl.js";async function n(n,r,i,a){let o=await n.run({tool:`simctl`,args:t(r,[`list`,`devices`,`-j`]),allowFailure:!0,timeoutMs:a},i);return o.exitCode===0?e(o.stdout,r.id):null}export{n as t};
@@ -1 +1 @@
1
- import{P as e}from"./sdk-contracts.js";import{o as t,r as n}from"./exec.js";import"./command.js";import{t as r}from"./ttl-memo.js";import{i,n as a}from"./retry.js";import{n as o,t as s}from"./boot-diagnostics.js";import{t as c}from"./scoped-provider.js";import{l,r as u,u as d}from"./config.js";import{a as f,o as p}from"./tool-provider.js";import{n as m,r as h}from"./simctl.js";const g=c(void 0);async function _(e,t){return await g.run(e,t)}const v=r({ttlMs:5e3});function y(e){return`${e.id}|${e.simulatorSetPath??``}`}function b(e){return v.get(y(e))===!0}function x(e){v.set(y(e),!0)}function S(t,n){if(t.kind!==`simulator`)throw new e(`UNSUPPORTED_OPERATION`,`${n} is only supported on iOS simulators`)}async function C(e={}){await f(`open`,[`-a`,`Simulator`],{allowFailure:!0,signal:e.signal,timeoutMs:d})}async function w(r,c={}){if(r.kind!==`simulator`)return;c.signal?.throwIfAborted();let l=g.resolve();if(l){await l(r),c.signal?.throwIfAborted();return}if((b(r)?`Booted`:await T(r,c.signal))===`Booted`){x(r);return}let d=a.fromTimeoutMs(u),f,h;try{await i(async({deadline:i})=>{if(i?.isExpired())throw new e(`COMMAND_FAILED`,`iOS simulator boot deadline exceeded`,{timeoutMs:u});let a=Math.max(1e3,i?.remainingMs()??18e4);f=await p(m(r,[`boot`,r.id]),{allowFailure:!0,signal:c.signal,timeoutMs:a});let o=`${f.stdout}\n${f.stderr}`.toLowerCase(),s=o.includes(`already booted`)||o.includes(`current state: booted`);if(f.exitCode!==0&&!s)throw new e(`COMMAND_FAILED`,`simctl boot failed`,n(f));h=await p(m(r,[`bootstatus`,r.id,`-b`]),{allowFailure:!0,signal:c.signal,timeoutMs:a}),t(h,`simctl bootstatus failed`);let l=await T(r,c.signal);if(l!==`Booted`)throw new e(`COMMAND_FAILED`,`Simulator is still booting`,{state:l})},{maxAttempts:3,baseDelayMs:500,maxDelayMs:2e3,jitter:.2,shouldRetry:e=>{let t=o({error:e,stdout:h?.stdout??f?.stdout,stderr:h?.stderr??f?.stderr,context:{platform:`ios`,phase:`boot`}});return t!==`IOS_BOOT_TIMEOUT`&&t!==`CI_RESOURCE_STARVATION_SUSPECTED`}},{deadline:d,phase:`boot`,signal:c.signal,classifyReason:e=>o({error:e,stdout:h?.stdout??f?.stdout,stderr:h?.stderr??f?.stderr,context:{platform:`ios`,phase:`boot`}})})}catch(t){let n=o({error:t,stdout:h?.stdout??f?.stdout,stderr:h?.stderr??f?.stderr,context:{platform:`ios`,phase:`boot`}});throw new e(`COMMAND_FAILED`,`iOS simulator failed to boot`,{platform:`ios`,deviceId:r.id,timeoutMs:u,elapsedMs:d.elapsedMs(),reason:n,hint:s(n),boot:f,bootstatus:h})}x(r),await C({signal:c.signal})}async function T(e,t){let n=m(e,[`list`,`devices`,`-j`]),r=await p(n,{allowFailure:!0,signal:t,timeoutMs:l});return r.exitCode===0?h(r.stdout,e.id):null}export{_ as a,b as i,x as n,S as r,w as t};
1
+ import{P as e}from"./sdk-contracts.js";import{o as t,r as n}from"./exec.js";import{r,t as i}from"./retry.js";import"./command.js";import{t as a}from"./ttl-memo.js";import"./retry2.js";import{n as o,t as s}from"./boot-diagnostics.js";import{t as c}from"./scoped-provider.js";import{l,r as u,u as d}from"./config.js";import{a as f,o as p}from"./tool-provider.js";import{i as m,n as h}from"./simctl.js";const g=c(void 0);async function _(e,t){return await g.run(e,t)}const v=a({ttlMs:5e3});function y(e){return`${e.id}|${e.simulatorSetPath??``}`}function b(e){return v.get(y(e))===!0}function x(e){v.set(y(e),!0)}function S(t,n){if(t.kind!==`simulator`)throw new e(`UNSUPPORTED_OPERATION`,`${n} is only supported on iOS simulators`)}async function C(e={}){await f(`open`,[`-a`,`Simulator`],{allowFailure:!0,signal:e.signal,timeoutMs:d})}async function w(a,c={}){if(a.kind!==`simulator`)return;c.signal?.throwIfAborted();let l=g.resolve();if(l){await l(a),c.signal?.throwIfAborted();return}if((b(a)?`Booted`:await T(a,c.signal))===`Booted`){x(a);return}let d=i.fromTimeoutMs(u),f,m;try{await r(async({deadline:r})=>{if(r?.isExpired())throw new e(`COMMAND_FAILED`,`iOS simulator boot deadline exceeded`,{timeoutMs:u});let i=Math.max(1e3,r?.remainingMs()??18e4);f=await p(h(a,[`boot`,a.id]),{allowFailure:!0,signal:c.signal,timeoutMs:i});let o=`${f.stdout}\n${f.stderr}`.toLowerCase(),s=o.includes(`already booted`)||o.includes(`current state: booted`);if(f.exitCode!==0&&!s)throw new e(`COMMAND_FAILED`,`simctl boot failed`,n(f));m=await p(h(a,[`bootstatus`,a.id,`-b`]),{allowFailure:!0,signal:c.signal,timeoutMs:i}),t(m,`simctl bootstatus failed`);let l=await T(a,c.signal);if(l!==`Booted`)throw new e(`COMMAND_FAILED`,`Simulator is still booting`,{state:l})},{maxAttempts:3,baseDelayMs:500,maxDelayMs:2e3,jitter:.2,shouldRetry:e=>{let t=o({error:e,stdout:m?.stdout??f?.stdout,stderr:m?.stderr??f?.stderr,context:{platform:`ios`,phase:`boot`}});return t!==`IOS_BOOT_TIMEOUT`&&t!==`CI_RESOURCE_STARVATION_SUSPECTED`}},{deadline:d,phase:`boot`,signal:c.signal,classifyReason:e=>o({error:e,stdout:m?.stdout??f?.stdout,stderr:m?.stderr??f?.stderr,context:{platform:`ios`,phase:`boot`}})})}catch(t){let n=o({error:t,stdout:m?.stdout??f?.stdout,stderr:m?.stderr??f?.stderr,context:{platform:`ios`,phase:`boot`}});throw new e(`COMMAND_FAILED`,`iOS simulator failed to boot`,{platform:`ios`,deviceId:a.id,timeoutMs:u,elapsedMs:d.elapsedMs(),reason:n,hint:s(n),boot:f,bootstatus:m})}x(a),await C({signal:c.signal})}async function T(e,t){let n=h(e,[`list`,`devices`,`-j`]),r=await p(n,{allowFailure:!0,signal:t,timeoutMs:l});return r.exitCode===0?m(r.stdout,e.id):null}export{_ as a,b as i,x as n,S as r,w as t};
@@ -1 +1 @@
1
- const e={healthy:!0,recovered:!0,sparse:!0},t={tree:!0,queries:!0,"private-ax":!0,"android-helper":!0};function n(e){let t=o(e.quality);return{...e.analysis?{analysis:e.analysis}:{},...e.androidSnapshot?{androidSnapshot:e.androidSnapshot}:{},...e.freshness?{freshness:e.freshness}:{},...t?{quality:t}:{},...e.warnings?{warnings:e.warnings}:{},...e.targetActivation?{targetActivation:e.targetActivation}:{}}}function r(e){return{...e.androidSnapshot?{androidSnapshot:e.androidSnapshot}:{},...e.quality?{snapshotQuality:e.quality}:{},...e.warnings&&e.warnings.length>0?{warnings:e.warnings}:{},...e.targetActivation?{targetActivation:e.targetActivation}:{}}}function i(e){let t=c(e.androidSnapshot),n=Array.isArray(e.warnings)?e.warnings.filter(e=>typeof e==`string`):void 0,i=o(e.snapshotQuality),s=a(e.targetActivation);return r({...t?{androidSnapshot:t}:{},...i?{quality:i}:{},...n?{warnings:n}:{},...s?{targetActivation:s}:{}})}function a(e){if(typeof e!=`object`||!e||Array.isArray(e))return;let t=e;return typeof t.reason==`string`&&typeof t.priorState==`string`?t:void 0}function o(n){if(!n||typeof n!=`object`)return;let r=n;if(!(!s(e,r.state)||!s(t,r.backend)))return r}function s(e,t){return typeof t==`string`&&Object.hasOwn(e,t)}function c(e){return typeof e==`object`&&e?e:void 0}export{i as n,n as r,r as t};
1
+ const e={healthy:!0,recovered:!0,sparse:!0},t={tree:!0,queries:!0,"private-ax":!0,"android-helper":!0};function n(e){let t=s(e.quality);return{...e.analysis?{analysis:e.analysis}:{},...e.androidSnapshot?{androidSnapshot:e.androidSnapshot}:{},...e.freshness?{freshness:e.freshness}:{},...t?{quality:t}:{},...e.warnings?{warnings:e.warnings}:{},...e.targetActivation?{targetActivation:e.targetActivation}:{},...e.observation?{observation:e.observation}:{}}}function r(e){return{...e.androidSnapshot?{androidSnapshot:e.androidSnapshot}:{},...e.quality?{snapshotQuality:e.quality}:{},...e.warnings&&e.warnings.length>0?{warnings:e.warnings}:{},...e.targetActivation?{targetActivation:e.targetActivation}:{},...e.observation?{observation:e.observation}:{}}}function i(e){let t=l(e.androidSnapshot),n=Array.isArray(e.warnings)?e.warnings.filter(e=>typeof e==`string`):void 0,i=s(e.snapshotQuality),c=o(e.targetActivation),u=a(e.observation);return r({...t?{androidSnapshot:t}:{},...i?{quality:i}:{},...n?{warnings:n}:{},...c?{targetActivation:c}:{},...u?{observation:u}:{}})}function a(e){if(typeof e!=`object`||!e||Array.isArray(e))return;let t=e;return t.mode===`observe-only`&&t.activationPerformed===!1&&t.appState===`runningForeground`&&t.appStateSource===`xcuiapplication-state`?{mode:`observe-only`,activationPerformed:!1,appState:t.appState,appStateSource:t.appStateSource}:void 0}function o(e){if(typeof e!=`object`||!e||Array.isArray(e))return;let t=e;return typeof t.reason==`string`&&typeof t.priorState==`string`?t:void 0}function s(n){if(!n||typeof n!=`object`)return;let r=n;if(!(!c(e,r.state)||!c(t,r.backend)))return r}function c(e,t){return typeof t==`string`&&Object.hasOwn(e,t)}function l(e){return typeof e==`object`&&e?e:void 0}export{n as i,i as n,a as r,r as t};
@@ -1 +1 @@
1
- import{Ur as e,Vr as t,Wr as n}from"./sdk-batch.js";const r=[`button`,`menu`,`textfield`,`searchfield`,`checkbox`,`radio`,`switch`];function i(e,t){let n=e.nodes??[];return t.scope&&(n=a(n,t.scope,e=>!t.interactiveOnly||n.slice(e.start,e.end).some(c))),t.interactiveOnly&&(n=o(n)),typeof t.depth==`number`&&(n=s(n,t.depth)),{...e,nodes:n}}function a(r,i,a){let o=e(i);if(!o)return n(r);let s=t(r,o,a);if(!s)return[];let c=r.slice(s.start,s.end);return n(c,c[0]?.depth??0)}function o(e){if(e.length===0)return e;let t=new Map(e.map(e=>[e.index,e])),r=new Set;for(let n of e){if(!c(n))continue;let e=n;for(;e&&!r.has(e.index);)r.add(e.index),e=typeof e.parentIndex==`number`?t.get(e.parentIndex):void 0}return r.size===0?e:n(e.filter(e=>r.has(e.index)))}function s(e,t){return n(e.filter(e=>(e.depth??0)<=t))}function c(e){if([e.focused,e.hittable,e.rect].some(Boolean))return!0;let t=`${e.type??``} ${e.role??``} ${e.subrole??``}`.toLowerCase();return r.some(e=>t.includes(e))}export{i as n,a as t};
1
+ import{Gr as e,Hr as t,Wr as n}from"./sdk-batch.js";const r=[`button`,`menu`,`textfield`,`searchfield`,`checkbox`,`radio`,`switch`];function i(e,t){let n=e.nodes??[];return t.scope&&(n=a(n,t.scope,e=>!t.interactiveOnly||n.slice(e.start,e.end).some(c))),t.interactiveOnly&&(n=o(n)),typeof t.depth==`number`&&(n=s(n,t.depth)),{...e,nodes:n}}function a(r,i,a){let o=n(i);if(!o)return e(r);let s=t(r,o,a);if(!s)return[];let c=r.slice(s.start,s.end);return e(c,c[0]?.depth??0)}function o(t){if(t.length===0)return t;let n=new Map(t.map(e=>[e.index,e])),r=new Set;for(let e of t){if(!c(e))continue;let t=e;for(;t&&!r.has(t.index);)r.add(t.index),t=typeof t.parentIndex==`number`?n.get(t.parentIndex):void 0}return r.size===0?t:e(t.filter(e=>r.has(e.index)))}function s(t,n){return e(t.filter(e=>(e.depth??0)<=n))}function c(e){if([e.focused,e.hittable,e.rect].some(Boolean))return!0;let t=`${e.type??``} ${e.role??``} ${e.subrole??``}`.toLowerCase();return r.some(e=>t.includes(e))}export{i as n,a as t};
@@ -0,0 +1 @@
1
+ const e=new WeakMap;function t(t,n){return e.set(t,{...e.get(t),...n}),t}function n(e,n){return t(e,{clickability:n})}function r(t){return t?e.get(t)?.clickability:void 0}function i(e,t){let i=r(e);return i?n(t,i):t}function a(e,n){return t(e,{occlusionContext:n})}function o(t){return t?e.get(t)?.occlusionContext:void 0}export{o as a,r as i,a as n,i as r,n as t};
@@ -1 +1 @@
1
- import{s as e}from"./sdk-contracts.js";import{p as t}from"./sdk-device.js";import{Bt as n}from"./sdk-batch.js";import{n as r}from"./dispatch-resolve.js";import{n as i}from"./provider-device-admission.js";import{s as a}from"./device-shell.js";import{d as o,h as s,p as c}from"./session-snapshot.js";import{n as l}from"./request-runtime-binding.js";import{a as u,i as d,n as f,t as p}from"./session-runtime-admission.js";async function m(e,t,n,i){let a=i??e.lookup(t),o=a?e.requireCurrent(a):void 0;return{ref:a,session:o,device:o?.device??await r(n??{})}}async function h(e,t,n,r){if(!e&&!r)throw Error(`Platform resource cleanup was not injected`);try{return await n()}finally{!e&&!i(t)&&await r.cleanupSessionlessExecutionHost(t)}}function g(e){let{sessionName:t,sessionScope:n,device:r,snapshot:i,appBundleId:a}=e;return{name:t,sessionScope:n,device:r,createdAt:Date.now(),appBundleId:a,snapshot:i,...i?.comparisonSafe===!0?{lastComparisonSafeSnapshot:i}:{},actions:[]}}async function _(e){if(!t(e)||e.kind!==`simulator`)return;let n=await s.resolveSoleForegroundApp({simulatorSetPath:e.simulatorSetPath});if(!n)return;let r=v(n.device,n.app.bundleId),i=`One booted device found ("${n.device.name}", udid ${n.device.id}) with ${n.app.bundleId} running. Run: ${r}`;return i.length<=350?i:void 0}function v(e,t){let n=e.simulatorSetPath?` --ios-simulator-device-set ${a(e.simulatorSetPath)}`:``;return`agent-device open ${t} --platform ios --udid ${e.id}${n}`}function y(e){let{readTextAtPoint:t}=e.operations,n=t?{operations:{readTextAtPoint:t}}:void 0;return Object.freeze(n?{readTextAtPoint:async e=>await n.operations.readTextAtPoint(e)}:{})}function b(e){let{findText:t}=e.operations;return Object.freeze(t?{findText:async e=>{e.signal?.throwIfAborted();try{let n=await t(e);return e.signal?.throwIfAborted(),n}catch{return e.signal?.throwIfAborted(),{found:!1}}}}:{})}function x(e){let{focusPoint:t,typeText:n}=e.operations;return Object.freeze({...t?{focusPoint:t}:{},...n?{typeText:n}:{}})}async function S(e){let{command:t,device:n,session:r,plan:i}=e,a=await p({device:n,plan:i,inspectFacts:e.inspectFacts});if(!a.admitted)return{ok:!1,response:await A({operation:a.operation,fact:a.fact,session:r,device:n,command:t})};let o=await w(e.bindDevice,a,e.readiness);return Object.freeze({ok:!0,capture:async e=>await o.captureSnapshot(e),...o.readTextAtPoint?{readTextAtPoint:o.readTextAtPoint}:{},...o.findText?{findText:o.findText}:{},...o.focusPoint?{focusPoint:o.focusPoint}:{},...o.typeText?{typeText:o.typeText}:{}})}async function C(e,t){let{req:r,sessionName:i,sessionStore:a}=e,{ref:s,session:l,device:u}=await m(a,i,r.flags,e.sessionRef),d=o(r.flags?.snapshotScope,l);if(!d.ok)return{ok:!1,response:d};let f=await S({command:t,device:u,session:l,plan:n({customActions:r.flags?.snapshotCustomActions===!0,hasActiveApp:l?.appBundleId!==void 0}),inspectFacts:e.inspectFacts,bindDevice:e.bindDevice,readiness:!l});if(!f.ok)return f;let p=c({flags:r.flags,logPath:e.logPath,meta:r.meta,session:l,snapshotScope:d.scope});return Object.freeze({ok:!0,ref:s,session:l,device:u,snapshotScope:d.scope,captureSnapshot:async()=>await f.capture(p)})}async function w(e,t,n){let r=f(e),i=async(e,t)=>{let i=await r(e,t);return n&&await l(i),i},{device:a,plan:o}=u(t);switch(o.kind){case`active-app`:return D(await i(a,o.use));case`selector-active-app`:return await T(i,a,o);case`custom-actions-active-app`:return O(await i(a,o.use));case`without-active-app`:return k(await i(a,o.use));case`selector-without-active-app`:return await E(i,a,o);case`custom-actions-without-active-app`:return O(await i(a,o.use))}}async function T(e,t,n){switch(n.intent){case`capture-only`:return D(await e(t,n.use));case`element-text`:{let r=await e(t,n.use);return{...D(r),...y(r)}}case`wait-observation`:{let r=await e(t,n.use);return{...D(r),...b(r)}}case`find-focus`:{let r=await e(t,n.use);return{...D(r),...x(r)}}case`find-type`:{let r=await e(t,n.use);return{...D(r),...x(r)}}}}async function E(e,t,n){switch(n.intent){case`capture-only`:return k(await e(t,n.use));case`element-text`:{let r=await e(t,n.use);return{...k(r),...y(r)}}case`wait-observation`:{let r=await e(t,n.use);return{...k(r),...b(r)}}case`find-focus`:{let r=await e(t,n.use);return{...k(r),...x(r)}}case`find-type`:{let r=await e(t,n.use);return{...k(r),...x(r)}}}}function D(e){return Object.freeze({captureSnapshot:async t=>await e.operations.captureSnapshot(t)})}function O(e){return Object.freeze({captureSnapshot:async t=>await e.operations.captureSnapshotWithCustomActions(t)})}function k(e){return Object.freeze({captureSnapshot:async t=>await e.operations.captureSnapshotWithoutActiveApp(t)})}async function A(t){if(t.operation===`captureSnapshot`||t.operation===`focusPoint`||t.operation===`typeText`)return d(t.command,t.fact);if(t.operation===`captureSnapshotWithCustomActions`)return j(t);let n=await _(t.device);return e(`SESSION_NOT_FOUND`,`iOS ${t.command} requires an active app session on the target device. Run open first (for example: open --session ${t.session?.name??`sim`} --platform ios --device "<name>" <app>).`,{reason:`ios_app_session_required`,...n?{hint:n}:{}})}function j(t){let n=t.command===`diff`?`--actions requires an iOS simulator: custom actions are read through the private accessibility snapshot backend, which ${t.device.platform}/${t.device.kind} targets do not have.`:`--actions requires an iOS simulator: custom actions are unavailable on this ${t.device.platform}/${t.device.kind} target.`;return e(`UNSUPPORTED_OPERATION`,n,{reason:t.fact.available?void 0:t.fact.reason},{hint:t.command===`diff`||t.fact.available||!t.fact.hint?`Re-run without --actions, or target an iOS simulator.`:t.fact.hint})}export{h as a,m as i,C as n,g as r,S as t};
1
+ import{P as e,s as t}from"./sdk-contracts.js";import{h as n,p as r}from"./sdk-device.js";import{Bt as i}from"./sdk-batch.js";import{n as a}from"./dispatch-resolve.js";import{n as o}from"./provider-device-admission.js";import{s}from"./device-shell.js";import{f as c,g as l,m as u}from"./session-snapshot.js";import{n as d}from"./request-runtime-binding.js";import{l as f,o as p,s as m,u as h}from"./internal/daemon.js";async function g(e,t,n,r){let i=r??e.lookup(t),o=i?e.requireCurrent(i):void 0;return{ref:i,session:o,device:o?.device??await a(n??{})}}async function _(e,t,n,r){if(!e&&!r)throw Error(`Platform resource cleanup was not injected`);try{return await n()}finally{!e&&!o(t)&&await r.cleanupSessionlessExecutionHost(t)}}function v(e){let{sessionName:t,sessionScope:n,device:r,snapshot:i,appBundleId:a}=e;return{name:t,sessionScope:n,device:r,createdAt:Date.now(),appBundleId:a,snapshot:i,...i?.comparisonSafe===!0?{lastComparisonSafeSnapshot:i}:{},actions:[]}}async function y(e){if(!n(e)||e.kind!==`simulator`)return;let t=await l.resolveSoleForegroundApp({simulatorSetPath:e.simulatorSetPath});if(!t)return;let r=b(t.device,t.app.bundleId),i=`One booted device found ("${t.device.name}", udid ${t.device.id}) with ${t.app.bundleId} running. Run: ${r}`;return i.length<=350?i:void 0}function b(e,t){let n=e.simulatorSetPath?` --ios-simulator-device-set ${s(e.simulatorSetPath)}`:``;return`agent-device open ${t} --platform ios --udid ${e.id}${n}`}function x(e){let{readTextAtPoint:t}=e.operations,n=t?{operations:{readTextAtPoint:t}}:void 0;return Object.freeze(n?{readTextAtPoint:async e=>await n.operations.readTextAtPoint(e)}:{})}function S(e){let{findText:t}=e.operations;return Object.freeze(t?{findText:async e=>{e.signal?.throwIfAborted();try{let n=await t(e);return e.signal?.throwIfAborted(),n}catch{return e.signal?.throwIfAborted(),{found:!1}}}}:{})}function C(e){let{focusPoint:t,typeText:n}=e.operations;return Object.freeze({...t?{focusPoint:t}:{},...n?{typeText:n}:{}})}async function w(e){let{command:t,device:n,session:r,plan:i}=e,a=await p({device:n,plan:i,inspectFacts:e.inspectFacts});if(!a.admitted)return{ok:!1,response:await M({operation:a.operation,fact:a.fact,session:r,device:n,command:t})};let o=await E(e.bindDevice,a,e.readiness);return Object.freeze({ok:!0,capture:async e=>await o.captureSnapshot(e),...o.readTextAtPoint?{readTextAtPoint:o.readTextAtPoint}:{},...o.findText?{findText:o.findText}:{},...o.focusPoint?{focusPoint:o.focusPoint}:{},...o.typeText?{typeText:o.typeText}:{}})}async function T(t,n){let{req:a,sessionName:o,sessionStore:s}=t,{ref:l,session:d,device:f}=await g(s,o,a.flags,t.sessionRef);if(a.flags?.snapshotObserveOnly===!0&&(n!==`snapshot`||!r(f)||!d?.appBundleId))throw new e(`UNSUPPORTED_OPERATION`,`observe-only snapshot requires an iOS or iPadOS app session.`);let p=c(a.flags?.snapshotScope,d);if(!p.ok)return{ok:!1,response:p};let m=await w({command:n,device:f,session:d,plan:i({customActions:a.flags?.snapshotCustomActions===!0,hasActiveApp:d?.appBundleId!==void 0}),inspectFacts:t.inspectFacts,bindDevice:t.bindDevice,readiness:!d});if(!m.ok)return m;let h=u({flags:a.flags,logPath:t.logPath,meta:a.meta,session:d,snapshotScope:p.scope});return Object.freeze({ok:!0,ref:l,session:d,device:f,snapshotScope:p.scope,captureSnapshot:async()=>await m.capture(h)})}async function E(e,t,n){let r=m(e),i=async(e,t)=>{let i=await r(e,t);return n&&await d(i),i},{device:a,plan:o}=h(t);switch(o.kind){case`active-app`:return k(await i(a,o.use));case`selector-active-app`:return await D(i,a,o);case`custom-actions-active-app`:return A(await i(a,o.use));case`without-active-app`:return j(await i(a,o.use));case`selector-without-active-app`:return await O(i,a,o);case`custom-actions-without-active-app`:return A(await i(a,o.use))}}async function D(e,t,n){switch(n.intent){case`capture-only`:return k(await e(t,n.use));case`element-text`:{let r=await e(t,n.use);return{...k(r),...x(r)}}case`wait-observation`:{let r=await e(t,n.use);return{...k(r),...S(r)}}case`find-focus`:{let r=await e(t,n.use);return{...k(r),...C(r)}}case`find-type`:{let r=await e(t,n.use);return{...k(r),...C(r)}}}}async function O(e,t,n){switch(n.intent){case`capture-only`:return j(await e(t,n.use));case`element-text`:{let r=await e(t,n.use);return{...j(r),...x(r)}}case`wait-observation`:{let r=await e(t,n.use);return{...j(r),...S(r)}}case`find-focus`:{let r=await e(t,n.use);return{...j(r),...C(r)}}case`find-type`:{let r=await e(t,n.use);return{...j(r),...C(r)}}}}function k(e){return Object.freeze({captureSnapshot:async t=>await e.operations.captureSnapshot(t)})}function A(e){return Object.freeze({captureSnapshot:async t=>await e.operations.captureSnapshotWithCustomActions(t)})}function j(e){return Object.freeze({captureSnapshot:async t=>await e.operations.captureSnapshotWithoutActiveApp(t)})}async function M(e){if(e.operation===`captureSnapshot`||e.operation===`focusPoint`||e.operation===`typeText`)return f(e.command,e.fact);if(e.operation===`captureSnapshotWithCustomActions`)return N(e);let n=await y(e.device);return t(`SESSION_NOT_FOUND`,`iOS ${e.command} requires an active app session on the target device. Run open first (for example: open --session ${e.session?.name??`sim`} --platform ios --device "<name>" <app>).`,{reason:`ios_app_session_required`,...n?{hint:n}:{}})}function N(e){let n=e.command===`diff`?`--actions requires an iOS simulator: custom actions are read through the private accessibility snapshot backend, which ${e.device.platform}/${e.device.kind} targets do not have.`:`--actions requires an iOS simulator: custom actions are unavailable on this ${e.device.platform}/${e.device.kind} target.`;return t(`UNSUPPORTED_OPERATION`,n,{reason:e.fact.available?void 0:e.fact.reason},{hint:e.command===`diff`||e.fact.available||!e.fact.hint?`Re-run without --actions, or target an iOS simulator.`:e.fact.hint})}export{_ as a,g as i,T as n,v as r,w as t};
@@ -1 +1 @@
1
- import{J as e,P as t,_ as n,k as r}from"./sdk-contracts.js";import"./capture.js";import{r as i}from"./snapshot-capture-annotations.js";import{i as a}from"./snapshot-diagnostics.js";import{f as o}from"./android-input-ownership.js";import{r as s}from"./diagnostics.js";import"./diagnostics2.js";import{w as c}from"./sdk-device.js";import{d as l}from"./dispatch-resolve.js";import{l as u,u as d}from"./target-evidence.js";import{n as f}from"./success-text.js";import{n as p}from"./android-snapshot-quality.js";import{i as m}from"./android-system-chrome.js";import{r as h}from"./request-cancel.js";import"./request.js";import{a as g,i as _,r as v,t as y}from"./screenshot-runtime.js";import{_ as b,a as x,f as S,k as C,l as w,s as T}from"./session-snapshot.js";import{a as E}from"./session-routing.js";import{s as D,t as O}from"./quality-warnings.js";import{a as k,n as A,r as j}from"./snapshot-runtime-binding.js";import{promises as M}from"node:fs";import N from"node:os";import P from"node:path";function F(e){return{captureFailed:!0,error:e}}function I(e){return{path:e,overlayRefsRequested:!0,overlayRefsAnnotated:!1,overlayRefSource:`unavailable`}}function L(e,t){let n={path:e,overlayRefsRequested:!0,overlayRefSource:`session-snapshot`};return R(t)?{...n,overlayRefsAnnotated:!0,overlayRefs:t}:{...n,overlayRefsAnnotated:!1,overlayRefs:[]}}function R(e){return e.length>0}function z(e,t){return{path:e,overlayRefsRequested:!0,overlayRefsAnnotated:!1,overlayRefSource:`session-snapshot`,overlayAnnotationError:t}}function ee(e){return`captureFailed`in e?{overlayRefCount:void 0,overlayRefsAnnotated:void 0}:{overlayRefCount:`overlayRefs`in e?e.overlayRefs.length:0,overlayRefsAnnotated:e.overlayRefsAnnotated}}function B(e){return p(e)===`accessibility-timeout`}async function V(t){if(t.command!==`snapshot`||t.device.platform!==`android`)return;let n=e(t.error);if(B(n))return{ok:!1,error:{...n,details:{...n.details??{},androidSnapshotTimeoutScreenshot:await H(t)}}}}async function H(n){try{let e=await _({device:n.device,overlayRefs:!1,inspectFacts:n.inspectFacts,bindDevice:n.bindDevice});if(!e.ok)throw new t(`UNSUPPORTED_OPERATION`,`The target does not support screenshot capture, so no timeout evidence was taken.`);let r=await M.mkdtemp(P.join(N.tmpdir(),`agent-device-android-snapshot-timeout-`)),i=P.join(r,`snapshot-timeout-overlay-refs.png`);await e.runtime.captureScreenshot({outPath:i,options:{appBundleId:n.session?.appBundleId,stabilize:!1,surface:n.session?.surface},execution:v(b(n.logPath,{screenshotNoStabilize:!0},n.session?.appBundleId,n.session?.trace?.outPath))}),await M.access(i);let a=await U(i,n.session);return s({level:`warn`,phase:`android_snapshot_timeout_screenshot_captured`,data:{path:i,...ee(a)}}),a}catch(t){let n=e(t);return s({level:`warn`,phase:`android_snapshot_timeout_screenshot_failed`,data:{error:n.message}}),F(n.message)}}async function U(t,n){if(!n?.snapshot)return I(t);try{return L(t,await g({screenshotPath:t,snapshot:n.snapshot}))}catch(n){let r=e(n);return s({level:`warn`,phase:`android_snapshot_timeout_screenshot_overlay_failed`,data:{path:t,error:r.message}}),z(t,r.message)}}function W(e){let{verdict:t,appBundleId:n,latch:r}=e;return!t||t.backend===`android-helper`?{latch:r}:t.state===`healthy`?{latch:void 0}:t.state!==`recovered`||t.reasonCode===`requested-backend`?{latch:r}:t.reasonCode===`deferred`?r!==void 0&&r.appBundleId===n?{latch:r}:{warning:O(t.backend),latch:{appBundleId:n}}:{latch:{appBundleId:n}}}function G(e){let{session:t,data:n,verdict:r,internalObservation:i}=e;if(i||!t)return n;let a=W({verdict:r,appBundleId:t.appBundleId,latch:t.recoveredSnapshotWarningLatch});return t.recoveredSnapshotWarningLatch=a.latch,a.warning?{...n,warnings:[a.warning,...f(n)]}:n}async function K(e){let t=await A(e,e.command);if(!t.ok)return t.response;let{ref:n,session:r,device:i,snapshotScope:a}=t;return await k(r,i,async()=>{let{req:s,logPath:c,sessionStore:l}=e,u=n?.address??e.sessionName,d={},{runtime:f,sessions:p}=q({req:s,sessionName:u,logPath:c,sessionStore:l,ref:n,session:r,device:i,snapshotScope:a,capturedQuality:d,captureSnapshotData:t.captureSnapshot}),m=()=>{let e=p.getRef();return e?l.requireCurrent(e):void 0},h;try{h=await e.execute({runtime:f,sessionName:u,req:s,snapshotScope:a,getSession:m})}catch(t){let n=await V({error:t,command:e.command,logPath:c,session:r,device:i,inspectFacts:e.inspectFacts,bindDevice:e.bindDevice});if(!n)throw t;return n}let g=m();$({req:s,sessionName:u,sessionStore:l,ref:p.getRef(),result:h.record});let _=G({session:g,data:h.data,verdict:d.value,internalObservation:s.internal?.observationOnly===!0});return{ok:!0,data:o(h.data,_)}},e.platformResourceCleanup)}function q(e){let{req:t,sessionName:n,logPath:r,sessionStore:i,session:a,device:o,snapshotScope:s}=e,c=T({sessionName:n,sessionStore:i,ref:e.ref,recordOptions:{includeSnapshot:!0},setRecord:(e,r,a)=>{let s=te(e),c=Y(r,s,J(t)),l=c?r.snapshot:s.snapshot,u=a?i.update(a,{}):j({sessionName:n,sessionScope:E(t),device:o,snapshot:l,appBundleId:e.appBundleId});return u.appName=e.appName??r?.appName,x(u,{snapshot:l,scopeSource:Z({current:r,keepCurrentSnapshot:c,refScopedSnapshot:J(t)}),keptCurrentSnapshot:c,previousGeneration:r?.snapshotGeneration}),X(u,c,t.command===`snapshot`&&t.internal?.observationOnly!==!0),a??i.publish(n,u)}});return{runtime:S({backend:Q({req:t,logPath:r,session:a,device:o,snapshotScope:s,capturedQuality:e.capturedQuality,captureSnapshotData:e.captureSnapshotData}),...d(`snapshot`),signal:h(t.meta?.requestId),sessions:c}),sessions:c}}function J(e){return e.flags?.snapshotScope?.trim().startsWith(`@`)===!0}function Y(e,t,n){return n&&t.snapshot?.nodes.length===0&&e?.snapshot!==void 0}function X(e,t,n){!t&&n&&C(e)}function Z(e){let{current:t,keepCurrentSnapshot:n,refScopedSnapshot:r}=e;if(r)return n?t?.snapshotScopeSource:t?.snapshotScopeSource??t?.snapshot}function Q(e){let{req:t,logPath:n,session:r,device:o,snapshotScope:s}=e;return{platform:c(o),captureSnapshot:async(c,l)=>{let u=await w({device:o,session:r,flags:t.flags,outPath:l?.outPath??t.flags?.out,logPath:n,snapshotScope:s,signal:c.signal,captureData:e.captureSnapshotData}),d=i(u);e.capturedQuality.value=d.quality;let f=a(r);return{snapshot:u.snapshot,...d,...f?{snapshotDiagnostics:f}:{},appName:r?.appBundleId?r.appName??r.appBundleId:void 0,appBundleId:r?.appBundleId}}}}function $(e){e.ref&&e.sessionStore.recordAction(e.ref,{command:e.req.command,positionals:e.req.positionals??[],flags:e.req.flags??{},result:ne(e.result),interactiveObservation:l(e.req)})}function te(e){if(!e.snapshot)throw new t(`UNKNOWN`,`snapshot runtime did not produce session state`);return e}function ne(e){return e.kind===`snapshot`?{nodes:e.nodes,truncated:e.truncated}:{mode:e.mode,baselineInitialized:e.baselineInitialized,summary:e.summary}}async function re(e){let t=e.session;if(!t||!D(e.verdict)||e.req.internal?.observationOnly===!0)return;let n=await ie({...e,session:t});if(n===void 0)return;let{path:r,displayRotation:i}=n;return{path:r,artifact:{field:`fallbackScreenshotPath`,artifactType:`screenshot`,path:r,fileName:`snapshot-fallback.png`,...i?{displayRotation:i}:{}}}}async function ie(e){let{req:t,session:n}=e;try{let r=await _({device:n.device,overlayRefs:!1,inspectFacts:e.inspectFacts,bindDevice:e.bindDevice});return r.ok?await y({session:n,sessionName:e.sessionName,captureScreenshot:r.runtime.captureScreenshot,dispatchContext:b(e.logPath,t.flags,n.appBundleId,n.trace?.outPath,t.meta?.requestId,t.meta)}):void 0}catch{return}}async function ae(e){let t={},i=await K({...e,command:`snapshot`,execute:async({runtime:i,sessionName:a,req:s,snapshotScope:c,getSession:l})=>{let u=await i.capture.snapshot({session:a,...r(s.flags,n),scope:c});u.targetActivation&&(t.targetActivation??=u.targetActivation);let d=oe(s,l()),f=m(u.nodes),p=o(u,f===u.nodes?u:{...u,nodes:f}),h=await re({req:s,session:l(),sessionName:a,logPath:e.logPath,verdict:u.snapshotQuality,inspectFacts:e.inspectFacts,bindDevice:e.bindDevice}),g=o(p,h?{...p,fallbackScreenshotPath:h.path,artifacts:[h.artifact]}:p);return{data:d===void 0?g:o(g,{...g,refsGeneration:d}),record:{kind:`snapshot`,nodes:u.nodes.length,truncated:u.truncated}}}});return u(i,t)}function oe(e,t){return e.internal?.observationOnly===!0?void 0:t?.snapshotGeneration}export{K as n,ae as t};
1
+ import{J as e,P as t,_ as n,k as r}from"./sdk-contracts.js";import"./capture.js";import{i}from"./snapshot-capture-annotations.js";import{i as a}from"./snapshot-diagnostics.js";import{r as o}from"./snapshot-private-evidence.js";import{r as s}from"./diagnostics.js";import"./diagnostics2.js";import{E as c}from"./sdk-device.js";import{d as l}from"./dispatch-resolve.js";import{l as u,u as d}from"./target-evidence.js";import{n as f}from"./success-text.js";import{n as p}from"./android-snapshot-quality.js";import{i as m}from"./android-system-chrome.js";import{r as h}from"./request-cancel.js";import"./request.js";import{A as g,c as _,o as v,p as y,u as b,v as x}from"./session-snapshot.js";import{s as S,t as C}from"./quality-warnings.js";import{K as w,a as T,d as E,i as D,r as O}from"./internal/daemon.js";import{a as k,n as A,r as j}from"./snapshot-runtime-binding.js";import{promises as M}from"node:fs";import N from"node:os";import P from"node:path";function F(e){return{captureFailed:!0,error:e}}function I(e){return{path:e,overlayRefsRequested:!0,overlayRefsAnnotated:!1,overlayRefSource:`unavailable`}}function L(e,t){let n={path:e,overlayRefsRequested:!0,overlayRefSource:`session-snapshot`};return R(t)?{...n,overlayRefsAnnotated:!0,overlayRefs:t}:{...n,overlayRefsAnnotated:!1,overlayRefs:[]}}function R(e){return e.length>0}function z(e,t){return{path:e,overlayRefsRequested:!0,overlayRefsAnnotated:!1,overlayRefSource:`session-snapshot`,overlayAnnotationError:t}}function B(e){return`captureFailed`in e?{overlayRefCount:void 0,overlayRefsAnnotated:void 0}:{overlayRefCount:`overlayRefs`in e?e.overlayRefs.length:0,overlayRefsAnnotated:e.overlayRefsAnnotated}}function ee(e){return p(e)===`accessibility-timeout`}async function V(t){if(t.command!==`snapshot`||t.device.platform!==`android`)return;let n=e(t.error);if(ee(n))return{ok:!1,error:{...n,details:{...n.details??{},androidSnapshotTimeoutScreenshot:await H(t)}}}}async function H(n){try{let e=await T({device:n.device,overlayRefs:!1,inspectFacts:n.inspectFacts,bindDevice:n.bindDevice});if(!e.ok)throw new t(`UNSUPPORTED_OPERATION`,`The target does not support screenshot capture, so no timeout evidence was taken.`);let r=await M.mkdtemp(P.join(N.tmpdir(),`agent-device-android-snapshot-timeout-`)),i=P.join(r,`snapshot-timeout-overlay-refs.png`);await e.runtime.captureScreenshot({outPath:i,options:{appBundleId:n.session?.appBundleId,stabilize:!1,surface:n.session?.surface},execution:D(x(n.logPath,{screenshotNoStabilize:!0},n.session?.appBundleId,n.session?.trace?.outPath))}),await M.access(i);let a=await U(i,n.session);return s({level:`warn`,phase:`android_snapshot_timeout_screenshot_captured`,data:{path:i,...B(a)}}),a}catch(t){let n=e(t);return s({level:`warn`,phase:`android_snapshot_timeout_screenshot_failed`,data:{error:n.message}}),F(n.message)}}async function U(t,n){if(!n?.snapshot)return I(t);try{return L(t,await E({screenshotPath:t,snapshot:n.snapshot}))}catch(n){let r=e(n);return s({level:`warn`,phase:`android_snapshot_timeout_screenshot_overlay_failed`,data:{path:t,error:r.message}}),z(t,r.message)}}function W(e){let{verdict:t,appBundleId:n,latch:r}=e;return!t||t.backend===`android-helper`?{latch:r}:t.state===`healthy`?{latch:void 0}:t.state!==`recovered`||t.reasonCode===`requested-backend`?{latch:r}:t.reasonCode===`deferred`?r!==void 0&&r.appBundleId===n?{latch:r}:{warning:C(t.backend),latch:{appBundleId:n}}:{latch:{appBundleId:n}}}function G(e){let{session:t,data:n,verdict:r,internalObservation:i}=e;if(i||!t)return n;let a=W({verdict:r,appBundleId:t.appBundleId,latch:t.recoveredSnapshotWarningLatch});return t.recoveredSnapshotWarningLatch=a.latch,a.warning?{...n,warnings:[a.warning,...f(n)]}:n}async function K(e){let t=await A(e,e.command);if(!t.ok)return t.response;let{ref:n,session:r,device:i,snapshotScope:a}=t;return await k(r,i,async()=>{let{req:s,logPath:c,sessionStore:l}=e,u=n?.address??e.sessionName,d={},{runtime:f,sessions:p}=q({req:s,sessionName:u,logPath:c,sessionStore:l,ref:n,session:r,device:i,snapshotScope:a,capturedQuality:d,captureSnapshotData:t.captureSnapshot}),m=()=>{let e=p.getRef();return e?l.requireCurrent(e):void 0},h;try{h=await e.execute({runtime:f,sessionName:u,req:s,snapshotScope:a,getSession:m})}catch(t){let n=await V({error:t,command:e.command,logPath:c,session:r,device:i,inspectFacts:e.inspectFacts,bindDevice:e.bindDevice});if(!n)throw t;return n}let g=m();$({req:s,sessionName:u,sessionStore:l,ref:p.getRef(),result:h.record});let _=G({session:g,data:h.data,verdict:d.value,internalObservation:s.internal?.observationOnly===!0});return{ok:!0,data:o(h.data,_)}},e.platformResourceCleanup)}function q(e){let{req:t,sessionName:n,logPath:r,sessionStore:i,session:a,device:o,snapshotScope:s}=e,c=_({sessionName:n,sessionStore:i,ref:e.ref,recordOptions:{includeSnapshot:!0},setRecord:(e,r,a)=>{let s=te(e),c=Y(r,s,J(t)),l=c?r.snapshot:s.snapshot,u=a?i.update(a,{}):j({sessionName:n,sessionScope:w(t),device:o,snapshot:l,appBundleId:e.appBundleId});return u.appName=e.appName??r?.appName,v(u,{snapshot:l,scopeSource:Z({current:r,keepCurrentSnapshot:c,refScopedSnapshot:J(t)}),keptCurrentSnapshot:c,previousGeneration:r?.snapshotGeneration}),X(u,c,t.command===`snapshot`&&t.internal?.observationOnly!==!0),a??i.publish(n,u)}});return{runtime:y({backend:Q({req:t,logPath:r,session:a,device:o,snapshotScope:s,capturedQuality:e.capturedQuality,captureSnapshotData:e.captureSnapshotData}),...d(`snapshot`),signal:h(t.meta?.requestId),sessions:c}),sessions:c}}function J(e){return e.flags?.snapshotScope?.trim().startsWith(`@`)===!0}function Y(e,t,n){return n&&t.snapshot?.nodes.length===0&&e?.snapshot!==void 0}function X(e,t,n){!t&&n&&g(e)}function Z(e){let{current:t,keepCurrentSnapshot:n,refScopedSnapshot:r}=e;if(r)return n?t?.snapshotScopeSource:t?.snapshotScopeSource??t?.snapshot}function Q(e){let{req:t,logPath:n,session:r,device:o,snapshotScope:s}=e;return{platform:c(o),captureSnapshot:async c=>{let l=await b({device:o,session:r,flags:t.flags,logPath:n,snapshotScope:s,signal:c.signal,captureData:e.captureSnapshotData}),u=i(l);e.capturedQuality.value=u.quality;let d=a(r);return{snapshot:l.snapshot,...u,...d?{snapshotDiagnostics:d}:{},appName:r?.appBundleId?r.appName??r.appBundleId:void 0,appBundleId:r?.appBundleId}}}}function $(e){e.ref&&e.sessionStore.recordAction(e.ref,{command:e.req.command,positionals:e.req.positionals??[],flags:e.req.flags??{},result:ne(e.result),interactiveObservation:l(e.req)})}function te(e){if(!e.snapshot)throw new t(`UNKNOWN`,`snapshot runtime did not produce session state`);return e}function ne(e){return e.kind===`snapshot`?{nodes:e.nodes,truncated:e.truncated}:{mode:e.mode,baselineInitialized:e.baselineInitialized,summary:e.summary}}async function re(e){let t=e.session;if(!t||!S(e.verdict)||e.req.internal?.observationOnly===!0)return;let n=await ie({...e,session:t});if(n===void 0)return;let{path:r,displayRotation:i}=n;return{path:r,artifact:{field:`fallbackScreenshotPath`,artifactType:`screenshot`,path:r,fileName:`snapshot-fallback.png`,...i?{displayRotation:i}:{}}}}async function ie(e){let{req:t,session:n}=e;try{let r=await T({device:n.device,overlayRefs:!1,inspectFacts:e.inspectFacts,bindDevice:e.bindDevice});return r.ok?await O({session:n,sessionName:e.sessionName,captureScreenshot:r.runtime.captureScreenshot,dispatchContext:x(e.logPath,t.flags,n.appBundleId,n.trace?.outPath,t.meta?.requestId,t.meta)}):void 0}catch{return}}async function ae(e){let t={},i=await K({...e,command:`snapshot`,execute:async({runtime:i,sessionName:a,req:s,snapshotScope:c,getSession:l})=>{let u=await i.capture.snapshot({session:a,...r(s.flags,n),scope:c});u.targetActivation&&(t.targetActivation??=u.targetActivation);let d=oe(s,l()),f=m(u.nodes),p=o(u,f===u.nodes?u:{...u,nodes:f}),h=await re({req:s,session:l(),sessionName:a,logPath:e.logPath,verdict:u.snapshotQuality,inspectFacts:e.inspectFacts,bindDevice:e.bindDevice}),g=o(p,h?{...p,fallbackScreenshotPath:h.path,artifacts:[h.artifact]}:p);return{data:d===void 0?g:o(g,{...g,refsGeneration:d}),record:{kind:`snapshot`,nodes:u.nodes.length,truncated:u.truncated}}}});return u(i,t)}function oe(e,t){return e.internal?.observationOnly===!0?void 0:t?.snapshotGeneration}export{K as n,ae as t};
@@ -1 +1 @@
1
- import{r as e}from"./rolldown-runtime.js";import{A as t,j as n,v as r,y as i}from"./sdk-contracts.js";import"./capture.js";import{r as a}from"./snapshot-capture-annotations.js";import{c as o,m as s,n as c,s as l}from"./android-input-ownership.js";import{Fr as u,Kr as d,Lr as f,Nr as p,Yr as m}from"./sdk-batch.js";import{t as h}from"./snapshot-desktop-projection.js";import{a as g}from"./ios-snapshot-planning.js";function _(e,t,n){if(n?.(e.length+t.length)===!1)return;let r=v(t);if(r.length===0)return 0;let i=1/0,a=-1/0;for(let e of r)i=Math.min(i,e.x),a=Math.max(a,e.endX);let o=v(e).filter(e=>e.x<a&&e.endX>i);if(o.length===0)return 0;let s=[...r.flatMap(e=>[e.x,e.endX]),...o.flatMap(e=>[Math.max(e.x,i),Math.min(e.endX,a)])];if(n?.(r.length+o.length+s.length)===!1)return;r.sort(y),o.sort(y);let c=[...new Set(s)].sort((e,t)=>e-t),l=[],u=[],d=0,f=0,p=0,m=0;for(let e=0;e<c.length-1;e+=1){let t=c[e],i=c[e+1];for(l=l.filter(e=>e.endX>t),u=u.filter(e=>e.endX>t);d<r.length&&r[d].x<=t;)l.push(r[d]),d+=1;for(;f<o.length&&o[f].x<=t;)u.push(o[f]),f+=1;if(n?.(1+l.length+u.length)===!1)return;let a=b(l),s=b(u),h=i-t;p+=h*x(a),m+=h*S(a,s)}return p<=0?0:m/p}function v(e){return e.filter(m).map(e=>({...e,endX:e.x+e.width}))}function y(e,t){return e.x-t.x||e.endX-t.endX}function b(e){let t=e.map(e=>({start:e.y,end:e.y+e.height})).sort((e,t)=>e.start-t.start||e.end-t.end),n=[];for(let e of t){let t=n.at(-1);!t||e.start>t.end?n.push({...e}):t.end=Math.max(t.end,e.end)}return n}function x(e){return e.reduce((e,t)=>e+t.end-t.start,0)}function S(e,t){let n=0,r=0,i=0;for(;r<e.length&&i<t.length;){let a=e[r],o=t[i];n+=Math.max(0,Math.min(a.end,o.end)-Math.max(a.start,o.start)),a.end<=o.end?r+=1:i+=1}return n}function C(e,t=new Map){if(t.size===0)return new Set;let n=D(e),r=O(e,n),i={remaining:Math.max(1024,e.length*128),exhausted:!1},a=w(n,{footprints:r,siblingOrders:t,budget:i});return i.exhausted?new Set:L(a,n)}function w(e,t){let n=new Set;for(let r of e.values())for(let e of r)if(T(e,r,t)&&n.add(e.index),t.budget.exhausted)return n;return n}function T(e,t,n){let r=n.siblingOrders.get(e.index),i=n.footprints.get(e.index);if(!r||!i)return!1;for(let e of t){if(!F(n.budget))return!1;if(E(r,i,e,n))return!0}return!1}function E(e,t,n,r){let i=r.siblingOrders.get(n.index),a=r.footprints.get(n.index);if(!i||!a?.hasAction||i.group!==e.group||i.order<=e.order)return!1;let o=P(a,`paint`,r.budget),s=P(t,`show`,r.budget);if(r.budget.exhausted)return!1;let c=_(o,s,e=>I(r.budget,e));return c!==void 0&&c>=.9}function D(e){let t=new Map;for(let n of e){if(typeof n.parentIndex!=`number`)continue;let e=t.get(n.parentIndex)??[];e.push(n),t.set(n.parentIndex,e)}return t}function O(e,t){let n=new Map;for(let r=e.length-1;r>=0;--r){let i=e[r],a=t.get(i.index)??[],o=a.flatMap(e=>n.get(e.index)??[]);n.set(i.index,k(i,a.length,o))}return n}function k(e,t,n){let r=j(e,t),i=r??M(e);return{...i?{showRect:i}:{},showChildren:r?[]:n,...r?{paintRect:r}:{},paintChildren:r?[]:n,hasAction:e.hittable===!0||n.some(A)}}function A(e){return e.hasAction}function j(e,t){if(m(e.rect))return e.hittable===!0||d(e.type)||t===0&&N(e)?e.rect:void 0}function M(e){return m(e.rect)&&N(e)?e.rect:void 0}function N(e){return!!(e.label?.trim()||e.value?.trim()||e.identifier?.trim())}function P(e,t,n){let r=[],i=[e];for(;i.length>0;){if(!F(n))return r;let e=i.pop(),a=t===`paint`?e.paintRect:e.showRect;a&&r.push(a),i.push(...t===`paint`?e.paintChildren:e.showChildren)}return r}function F(e){return I(e,1)}function I(e,t){return t>e.remaining?(e.exhausted=!0,!1):(e.remaining-=t,!0)}function L(e,t){let n=new Set,r=[...e];for(;r.length>0;){let e=r.pop();if(!n.has(e)){n.add(e);for(let n of t.get(e)??[])r.push(n.index)}}return n}function R(e){let t=new Map;for(let[n,r]of e.entries())t.set(r.index,n);let n=[],r=[];for(let[i,a]of e.entries()){let e=Math.max(0,a.depth??0);for(;r.length>0&&e<=r.at(-1).depth;)r.pop();let o=i,s=typeof a.parentIndex==`number`?t.get(a.parentIndex):void 0,c=typeof s==`number`&&s<o?s:r.at(-1)?.index;n.push({...a,index:o,depth:e,parentIndex:c}),r.push({depth:e,index:o})}return n}function z(e){let t=[],n=[];for(let r of e){let e=r.depth??0;for(;t.length>0&&e<=t.at(-1);)t.pop();let i=f(r.type??``),a=u(p(r));if((i===`group`||i===`ioscontentgroup`)&&!a){t.push(e);continue}let o=Math.max(0,e-t.length);n.push({...r,depth:o})}return n}var B=e({buildSnapshotState:()=>V});function V(e,o){let s=e?.nodes??[],c=o?.snapshotRaw,u=H(e,s,c===!0),d=R(c?u:z(u)),f=o?.snapshotScope&&G(e?.backend)?h(d,o.snapshotScope):d,p=a(e).quality;return{nodes:r(c?f:l(f,U(e?.backend))),truncated:e?.truncated,createdAt:Date.now(),...n(e),...p?{snapshotQuality:p}:{},...e.comparisonIdentity?{comparisonKey:g(e.comparisonIdentity)}:{},...e.systemSurface?{iosSystemSurfaceBundleId:e.systemSurface.bundleId}:{},...e.targetActivation?{targetActivation:e.targetActivation}:{},...e.keyboard?{keyboard:e.keyboard}:{},...e.viewport?{viewport:e.viewport}:{},presentationKey:i(t(o)),comparisonSafe:K(e?.backend,o)}}function H(e,t,n){return e.backend===`android`&&!n?W(e,t):t}function U(e){return e===`android`?{isAdditionalOverlayNode:c}:{}}function W(e,t){let n=s(e),r=C(n?.nodes??t,n?.androidSiblingOrderByNodeIndex);return o(t,e=>{let t=n?.sourceIndexByNodeIndex.get(e.index)??e.index;return r.has(t)})}function G(e){return e===void 0||e===`linux-atspi`||e===`harmonyos-arkui`||e===`web`}function K(e,t){return e===`android`&&t?.snapshotInteractiveOnly!==!0&&typeof t?.snapshotDepth!=`number`&&!t?.snapshotScope}export{B as n,V as t};
1
+ import{r as e}from"./rolldown-runtime.js";import{A as t,j as n,v as r,y as i}from"./sdk-contracts.js";import"./capture.js";import{i as a}from"./snapshot-capture-annotations.js";import{a as o}from"./snapshot-private-evidence.js";import{Ir as s,Pr as c,Rr as l,Xr as u,qr as d}from"./sdk-batch.js";import{c as f,n as p,s as m}from"./android-input-ownership.js";import{t as h}from"./snapshot-desktop-projection.js";import{a as g}from"./ios-snapshot-planning.js";function _(e,t,n){if(n?.(e.length+t.length)===!1)return;let r=v(t);if(r.length===0)return 0;let i=1/0,a=-1/0;for(let e of r)i=Math.min(i,e.x),a=Math.max(a,e.endX);let o=v(e).filter(e=>e.x<a&&e.endX>i);if(o.length===0)return 0;let s=[...r.flatMap(e=>[e.x,e.endX]),...o.flatMap(e=>[Math.max(e.x,i),Math.min(e.endX,a)])];if(n?.(r.length+o.length+s.length)===!1)return;r.sort(y),o.sort(y);let c=[...new Set(s)].sort((e,t)=>e-t),l=[],u=[],d=0,f=0,p=0,m=0;for(let e=0;e<c.length-1;e+=1){let t=c[e],i=c[e+1];for(l=l.filter(e=>e.endX>t),u=u.filter(e=>e.endX>t);d<r.length&&r[d].x<=t;)l.push(r[d]),d+=1;for(;f<o.length&&o[f].x<=t;)u.push(o[f]),f+=1;if(n?.(1+l.length+u.length)===!1)return;let a=b(l),s=b(u),h=i-t;p+=h*x(a),m+=h*S(a,s)}return p<=0?0:m/p}function v(e){return e.filter(u).map(e=>({...e,endX:e.x+e.width}))}function y(e,t){return e.x-t.x||e.endX-t.endX}function b(e){let t=e.map(e=>({start:e.y,end:e.y+e.height})).sort((e,t)=>e.start-t.start||e.end-t.end),n=[];for(let e of t){let t=n.at(-1);!t||e.start>t.end?n.push({...e}):t.end=Math.max(t.end,e.end)}return n}function x(e){return e.reduce((e,t)=>e+t.end-t.start,0)}function S(e,t){let n=0,r=0,i=0;for(;r<e.length&&i<t.length;){let a=e[r],o=t[i];n+=Math.max(0,Math.min(a.end,o.end)-Math.max(a.start,o.start)),a.end<=o.end?r+=1:i+=1}return n}function C(e,t=new Map){if(t.size===0)return new Set;let n=D(e),r=O(e,n),i={remaining:Math.max(1024,e.length*128),exhausted:!1},a=w(n,{footprints:r,siblingOrders:t,budget:i});return i.exhausted?new Set:L(a,n)}function w(e,t){let n=new Set;for(let r of e.values())for(let e of r)if(T(e,r,t)&&n.add(e.index),t.budget.exhausted)return n;return n}function T(e,t,n){let r=n.siblingOrders.get(e.index),i=n.footprints.get(e.index);if(!r||!i)return!1;for(let e of t){if(!F(n.budget))return!1;if(E(r,i,e,n))return!0}return!1}function E(e,t,n,r){let i=r.siblingOrders.get(n.index),a=r.footprints.get(n.index);if(!i||!a?.hasAction||i.group!==e.group||i.order<=e.order)return!1;let o=P(a,`paint`,r.budget),s=P(t,`show`,r.budget);if(r.budget.exhausted)return!1;let c=_(o,s,e=>I(r.budget,e));return c!==void 0&&c>=.9}function D(e){let t=new Map;for(let n of e){if(typeof n.parentIndex!=`number`)continue;let e=t.get(n.parentIndex)??[];e.push(n),t.set(n.parentIndex,e)}return t}function O(e,t){let n=new Map;for(let r=e.length-1;r>=0;--r){let i=e[r],a=t.get(i.index)??[],o=a.flatMap(e=>n.get(e.index)??[]);n.set(i.index,k(i,a.length,o))}return n}function k(e,t,n){let r=j(e,t),i=r??M(e);return{...i?{showRect:i}:{},showChildren:r?[]:n,...r?{paintRect:r}:{},paintChildren:r?[]:n,hasAction:e.hittable===!0||n.some(A)}}function A(e){return e.hasAction}function j(e,t){if(u(e.rect))return e.hittable===!0||d(e.type)||t===0&&N(e)?e.rect:void 0}function M(e){return u(e.rect)&&N(e)?e.rect:void 0}function N(e){return!!(e.label?.trim()||e.value?.trim()||e.identifier?.trim())}function P(e,t,n){let r=[],i=[e];for(;i.length>0;){if(!F(n))return r;let e=i.pop(),a=t===`paint`?e.paintRect:e.showRect;a&&r.push(a),i.push(...t===`paint`?e.paintChildren:e.showChildren)}return r}function F(e){return I(e,1)}function I(e,t){return t>e.remaining?(e.exhausted=!0,!1):(e.remaining-=t,!0)}function L(e,t){let n=new Set,r=[...e];for(;r.length>0;){let e=r.pop();if(!n.has(e)){n.add(e);for(let n of t.get(e)??[])r.push(n.index)}}return n}function R(e){let t=new Map;for(let[n,r]of e.entries())t.set(r.index,n);let n=[],r=[];for(let[i,a]of e.entries()){let e=Math.max(0,a.depth??0);for(;r.length>0&&e<=r.at(-1).depth;)r.pop();let o=i,s=typeof a.parentIndex==`number`?t.get(a.parentIndex):void 0,c=typeof s==`number`&&s<o?s:r.at(-1)?.index;n.push({...a,index:o,depth:e,parentIndex:c}),r.push({depth:e,index:o})}return n}function z(e){let t=[],n=[];for(let r of e){let e=r.depth??0;for(;t.length>0&&e<=t.at(-1);)t.pop();let i=l(r.type??``),a=s(c(r));if((i===`group`||i===`ioscontentgroup`)&&!a){t.push(e);continue}let o=Math.max(0,e-t.length);n.push({...r,depth:o})}return n}var B=e({buildSnapshotState:()=>V});function V(e,o){let s=e?.nodes??[],c=o?.snapshotRaw,l=H(e,s,c===!0),u=R(c?l:z(l)),d=o?.snapshotScope&&G(e?.backend)?h(u,o.snapshotScope):u,f=a(e).quality;return{nodes:r(c?d:m(d,U(e?.backend))),truncated:e?.truncated,createdAt:Date.now(),...n(e),...f?{snapshotQuality:f}:{},...e.comparisonIdentity?{comparisonKey:g(e.comparisonIdentity)}:{},...e.systemSurface?{iosSystemSurfaceBundleId:e.systemSurface.bundleId}:{},...e.targetActivation?{targetActivation:e.targetActivation}:{},...e.keyboard?{keyboard:e.keyboard}:{},...e.viewport?{viewport:e.viewport}:{},presentationKey:i(t(o)),comparisonSafe:K(e?.backend,o)}}function H(e,t,n){return e.backend===`android`&&!n?W(e,t):t}function U(e){return e===`android`?{isAdditionalOverlayNode:p}:{}}function W(e,t){let n=o(e),r=C(n?.nodes??t,n?.androidSiblingOrderByNodeIndex);return f(t,e=>{let t=n?.sourceIndexByNodeIndex.get(e.index)??e.index;return r.has(t)})}function G(e){return e===void 0||e===`linux-atspi`||e===`harmonyos-arkui`||e===`web`}function K(e,t){return e===`android`&&t?.snapshotInteractiveOnly!==!0&&typeof t?.snapshotDepth!=`number`&&!t?.snapshotScope}export{B as n,V as t};
@@ -1 +1 @@
1
- import{$ as e,P as t,s as n}from"./sdk-contracts.js";import{r}from"./diagnostics.js";import"./diagnostics2.js";import{O as i,d as a,f as o,m as s}from"./sdk-device.js";import{Ht as c,Lr as l,Ut as u,cn as d,et as f,mr as p,nt as m,rt as h,sn as g,tt as _,zt as v}from"./sdk-batch.js";import{f as y}from"./dispatch-resolve.js";import{c as b,s as ee}from"./target-evidence.js";import{l as x}from"./runtime.js";import{i as te,r as S}from"./success-text.js";import"./alert-contract.js";import{C as ne,S as re,c as ie,f as C,g as w,h as T,m as E,p as ae,r as D,w as O}from"./settings.js";import{t as k}from"./location-coordinates.js";import{r as oe,s as se}from"./overlay.js";import{g as ce}from"./screenshot-runtime.js";import{A,_ as j,i as le,l as M,m as N,p as P}from"./session-snapshot.js";import{n as F}from"./runtime-admission.js";import{n as I,t as L}from"./snapshot-runtime.js";import{a as R,i as z}from"./snapshot-runtime-binding.js";import{a as B,c as V,f as H,g as U,h as W,m as ue,o as de,p as fe,s as pe,t as me}from"./selector-runtime.js";async function he(e){let{device:t,action:n,inspectFacts:r,bindDevice:i}=e,a={command:`alert`,device:t,inspectFacts:r,bindDevice:i,readiness:!e.session};if(n===`wait`){let e=await F({...a,use:h});if(e.type===`response`)return{ok:!1,response:e.response};let t=e.runtime;return{ok:!0,execute:e=>_e(t,e)}}if(n===`accept`){let e=await F({...a,use:f});if(e.type===`response`)return{ok:!1,response:e.response};let t=e.runtime;return{ok:!0,execute:e=>ve(t,e)}}if(n===`dismiss`){let e=await F({...a,use:_});if(e.type===`response`)return{ok:!1,response:e.response};let t=e.runtime;return{ok:!0,execute:e=>ye(t,e)}}let o=await F({...a,use:m});if(o.type===`response`)return{ok:!1,response:o.response};let s=o.runtime;return{ok:!0,execute:e=>ge(s,e)}}async function ge(e,t){return await e.operations.readAlert(t)}async function _e(e,t){return await e.operations.awaitAlert(t)}async function ve(e,t){return await e.operations.acceptAlert(t)}async function ye(e,t){return await e.operations.dismissAlert(t)}async function be(e){let{req:t,logPath:n,sessionStore:r,ref:i,device:a,inspectFacts:o,bindDevice:s}=e,c=i?r.requireCurrent(i):void 0,l=await he({device:a,action:Se(t.positionals?.[0]),session:c,inspectFacts:o,bindDevice:s});if(!l.ok)return l.response;c=i?r.requireCurrent(i):void 0,c&&ce(t)===`may-invalidate`&&A(c);let u=j(n,t.flags,c?.appBundleId,c?.trace?.outPath),f=await l.execute({timeoutMs:d(t.positionals?.[1])??1e4,...xe(c),execution:N(u)});return y(r,i,t,t.command,f),{ok:!0,data:f}}function xe(e){return{...e?.appBundleId===void 0?{}:{appBundleId:e.appBundleId},...e?.surface===void 0?{}:{surface:e.surface}}}function Se(e){return e===`accept`||e===`dismiss`||e===`wait`?e:`get`}function Ce(e){let t=e.positionals?.[0]?.toLowerCase(),r=e.positionals?.[1]?.toLowerCase(),i=e.positionals?.[2]?.toLowerCase();if(t===`clear-app-state`)return{ok:!0,parsed:{leg:`write`,args:{setting:t,state:`clear`,appBundleId:r===`clear`?e.positionals?.[2]:e.positionals?.[1]}}};let a=v(e.positionals);if(a.kind===`read`)return{ok:!0,parsed:{leg:`read`,setting:a.setting}};if(!t||!r||t===`permission`&&!i||t===`location`&&r===`set`&&(!e.positionals?.[2]||!e.positionals?.[3])||t===`reset-keychain`&&e.positionals?.[2]!==void 0)return n(`INVALID_ARGS`,ie);let o=r;if(t===`text-size`){let e=re(r);if(e===void 0)return n(`INVALID_ARGS`,T(r));o=e}return{ok:!0,parsed:{leg:`write`,args:{setting:t,state:o,permissionTarget:i,permissionMode:e.positionals?.[3],latitude:e.positionals?.[2],longitude:e.positionals?.[3]}}}}function we(e){if(e.setting===`permission`)return{permissionTarget:e.permissionTarget,permissionMode:e.permissionMode};if(e.setting===`location`&&e.state===`set`)return{latitude:k(e.latitude,`latitude`),longitude:k(e.longitude,`longitude`)}}function Te(e,t,n){let{setting:r,state:i}=e;return r===`clear-app-state`?{setting:`clear-app-state`,state:`clear`,appBundleId:t,platform:n}:r===`location`&&i===`set`?{setting:r,state:i,latitude:e.latitude,longitude:e.longitude,platform:n}:r===`permission`?{setting:r,state:i,permissionTarget:e.permissionTarget,permissionMode:e.permissionMode,platform:n}:{setting:r,state:i,appBundleId:t,platform:n}}function Ee(e){return typeof e.message==`string`&&e.message.length>0?e.message:void 0}async function De(e,t,n){let{setting:r,state:i}=t,a=await e.operations.setSetting(t);return a&&typeof a==`object`?te({setting:r,state:i,...a},Ee(a)??n):{setting:r,state:i,...S(n)}}async function Oe(e){return e.parsed.leg===`read`?await ke(e,e.parsed.setting):await Ae(e,e.parsed.args)}async function ke(e,t){let{req:n,logPath:i,sessionStore:a,ref:o,device:s,inspectFacts:l,bindDevice:u}=e,d=o?a.requireCurrent(o):void 0,f=G(s,t);if(f!==void 0)return f;let p=await F({command:`settings ${t}`,device:s,use:c,inspectFacts:l,bindDevice:u,readiness:!d});if(p.type===`response`)return p.response;d=o?a.requireCurrent(o):void 0,r({level:`debug`,phase:`settings_read`,data:{setting:t,platform:s.platform}});let m=j(i,n.flags,d?.appBundleId,d?.trace?.outPath),h=await p.runtime.operations.readSetting({setting:t,execution:N(m)}),g={...h,...S(C(h))};return y(a,o,n,n.command,g),{ok:!0,data:g}}async function Ae(e,t){let{req:n,logPath:i,sessionStore:a,ref:o,device:s,inspectFacts:c,bindDevice:l}=e,d=o?a.requireCurrent(o):void 0,{setting:f,state:p}=t,m=G(s,f);if(m!==void 0)return m;let h=je(s,n,f,p);if(h!==void 0)return h;let g=await F({command:`settings`,device:s,use:u,inspectFacts:c,bindDevice:l,readiness:!d});if(g.type===`response`)return g.response;d=o?a.requireCurrent(o):void 0;let _=Me(n,t,d,s),v=Ne(t,_);if(v!==void 0)return v;d&&A(d),r({level:`debug`,phase:`settings_apply`,data:Te(t,_,s.platform)});let b=await De(g.runtime,Pe(t,_,j(i,n.flags,_,d?.trace?.outPath)),ae(f,p,_));return y(a,o,n,n.command,b),{ok:!0,data:b}}function G(e,t){if(s(e)&&!w(t))return n(`INVALID_ARGS`,E(t));if(t===`text-size`&&a(e.platform)&&!o(e))return n(`UNSUPPORTED_OPERATION`,D.message,{deviceKind:e.kind,appleOs:i(e),reason:D.reason},{hint:D.hint})}function K(e){let t=e.input?.app;if(typeof t!=`string`)return;let n=t.trim();return n.length>0?n:void 0}function q(e){return s(e)?`macos-host`:a(e.platform)?`apple`:`mobile`}function je(e,t,r,i){let a=K(t);if(a===void 0||O(q(e),r,i)!==`device-level`)return;let o=ne(r,i,a);return n(o.code,o.message,o.details,{hint:o.hint})}function Me(e,t,n,r){let i=O(q(r),t.setting,t.state)===`app-scoped`?K(e):void 0;return t.appBundleId??i??e.internal?.settingsAppBundleId??n?.appBundleId}function Ne(t,r){if(t.setting===`clear-app-state`&&!r)return n(`INVALID_ARGS`,`settings clear-app-state requires an app id when no app is bound to the session`,e())}function Pe(e,t,n){let r=we(e);return{setting:e.setting,state:e.state,...t===void 0?{}:{appBundleId:t},...r===void 0?{}:{options:r},execution:N(n)}}async function Fe(e){return await I({...e,command:`diff`,execute:async({runtime:e,sessionName:t,req:n,snapshotScope:r})=>{let i=await e.capture.diffSnapshot({session:t,interactiveOnly:n.flags?.snapshotInteractiveOnly,depth:n.flags?.snapshotDepth,scope:r,raw:n.flags?.snapshotRaw});return{data:i,record:{kind:`diff`,mode:`snapshot`,baselineInitialized:i.baselineInitialized,summary:i.summary}}}})}function Ie(e){return e!==`sleep`}const Le=[`application`,`window`,`tabbar`,`scrollbar`,`image`],Re=new Set([`tab bar`]);async function ze(e,t){if(t.ok||!Be(t.error.details?.reason)||t.error.details?.captureStalled===!0||t.error.details?.captureTruncated===!0)return t;let r=await Ve(e).catch(()=>null);return r?n(t.error.code,`${t.error.message}. Current surface: ${r.summary}.`,{...t.error.details??{},currentSurface:r.details}):t}function Be(e){return e===x.targetAbsent||e===x.stableTimeout}async function Ve(e){let t={...e.req.flags,snapshotInteractiveOnly:!0},n=await M({device:e.device,session:e.session,flags:t,logPath:e.logPath??``,captureData:async()=>await e.capture(P({flags:t,logPath:e.logPath??``,meta:e.req.meta,session:e.session,snapshotScope:void 0}))});ee(e.captureProof,n.snapshot);let r=[...n.snapshot.nodes].sort(He),i=J(r,6,{includeIdentifiers:!0});if(i.length===0)return null;let a=J(r.filter(e=>!Z(e)),4,{includeIdentifiers:!1}),o=J(r.filter(We),4,{includeIdentifiers:!0});return{summary:(a.length>0?a:i.slice(0,4)).join(`, `),details:{labels:i,...o.length>0?{buttons:o}:{}}}}function J(e,t,n){let r=new Set,i=[];for(let a of e){let e=X(a,n);if(!(!e||r.has(e))&&(r.add(e),i.push(e),i.length>=t))break}return i}function He(e,t){return Y(e)-Y(t)||Ue(e,t)}function Y(e){let t=!!X(e,{includeIdentifiers:!1});return(Z(e)?2:0)+ +!t}function Ue(e,t){return e.rect&&t.rect?e.rect.y-t.rect.y||e.rect.x-t.rect.x:e.rect?-1:t.rect?1:(e.depth??0)-(t.depth??0)||e.index-t.index}function X(e,t){let n=(t.includeIdentifiers?[e.label,e.value,e.identifier]:[e.label,e.value]).map(e=>typeof e==`string`?e.trim():``).find(e=>e.length>0);return n?n.replaceAll(/\s+/g,` `).slice(0,80):``}function Z(e){let t=l(`${e.type??``} ${e.role??``} ${e.subrole??``}`),n=`${e.label??``} ${e.value??``}`.trim().toLowerCase();return Le.some(e=>t.includes(e))||Re.has(n)||n.endsWith(`.fill`)}function We(e){let t=`${e.type??``} ${e.role??``} ${e.subrole??``}`;return l(t).includes(`button`)}async function Ge(e){let{req:t,sessionName:n,sessionStore:r}=e,i=Q(t);if(`ok`in i)return i;let a=i,{ref:o,session:s,device:c}=await z(r,n,t.flags),l=await Ke(e,a,s,c);if(l&&`ok`in l)return l;let u=l,d=t.internal?.replayLandmarkGuard,f=qe(a,s);if(`ok`in f)return f;let{waitParsed:p,staleRefsWarning:m}=f;return e.consumedSnapshot??={},e.captureProof??={},a.kind===`sleep`?await $({...e,ref:o},p,s,c,u,m,d):b({response:await R(s,c,()=>$({...e,ref:o},p,s,c,u,m,d),e.platformResourceCleanup),consumedTree:me(e),captureProof:e.captureProof})}function Q(e){let t=g(e.positionals??[]);if(!t)return n(`INVALID_ARGS`,`wait requires a duration or text`);if(t.kind===`invalid`)return n(`INVALID_ARGS`,t.message);if(t.kind!==`absent`)return t;let r=se({depth:e.flags?.snapshotDepth,scope:e.flags?.snapshotScope});if(!r)return t;let i=oe(r,`wait`);return n(i.code,i.message,i.details)}async function Ke(e,t,n,r){if(!Ie(t.kind))return;let i=await H({command:`wait`,device:r,session:n,inspectFacts:e.inspectFacts,bindDevice:e.bindDevice});return i.ok?i.operations:i.response}function qe(e,t){if(e.kind!==`ref`)return{waitParsed:e};let n=U(e.rawRef);return n.ok?{waitParsed:{...e,rawRef:n.ref},staleRefsWarning:le({session:t,ref:n.ref,mintedGeneration:n.generation})}:n.response}async function $(e,t,n,r,i,a,o){let{req:s,sessionName:c,sessionStore:l}=e,u=V({...e,ref:e.ref,session:n,device:r,bound:i}),d=await pe(async()=>{let r=await u.selectors.wait({session:c,requestId:s.meta?.requestId,target:Je(t,n,o)}),i=de(r);fe(l,e.ref,s,ue(r),i,`landmark`);let d=W(r);return a?{...d,warning:a}:d}),f=i?await ze({req:s,logPath:e.logPath,session:n,device:r,capture:i.capture,captureProof:e.captureProof},d):d;return await B(e,f,`wait`)}function Je(e,t,n){switch(e.kind){case`sleep`:return{kind:`sleep`,durationMs:e.durationMs};case`selector`:return{kind:`selector`,selector:e.selectorExpression,timeoutMs:e.timeoutMs,...n?{recordedLandmark:n}:{}};case`absent`:return{kind:`absent`,selector:e.selectorExpression,timeoutMs:e.timeoutMs};case`ref`:return Xe(e,t);case`stable`:return{kind:`stable`,quietMs:e.quietMs,timeoutMs:e.timeoutMs};case`text`:return Ze(e);default:return Ye(e)}}function Ye(e){throw Error(`Unsupported wait positional target: ${String(e)}`)}function Xe(e,n){if(!n?.snapshot)throw new t(`INVALID_ARGS`,`Ref wait requires an existing snapshot in session.`);return{kind:`ref`,ref:e.rawRef,timeoutMs:e.timeoutMs}}function Ze(e){let n=p(e.text);if(!n.ok)throw new t(n.code,n.message);return{kind:`text`,text:n.text,timeoutMs:e.timeoutMs}}const Qe={snapshot:async({req:e,sessionName:t,logPath:n,sessionStore:r,inspectFacts:i,bindDevice:a,platformResourceCleanup:o})=>await L({req:e,sessionName:t,logPath:n,sessionStore:r,inspectFacts:i,bindDevice:a,platformResourceCleanup:o}),diff:async({req:e,sessionName:t,logPath:r,sessionStore:i,inspectFacts:a,bindDevice:o,platformResourceCleanup:s})=>e.positionals?.[0]===`snapshot`?await Fe({req:e,sessionName:t,logPath:r,sessionStore:i,inspectFacts:a,bindDevice:o,platformResourceCleanup:s}):n(`INVALID_ARGS`,`diff currently supports only: diff snapshot`),wait:async({req:e,sessionName:t,logPath:n,sessionStore:r,inspectFacts:i,bindDevice:a,platformResourceCleanup:o})=>await Ge({req:e,sessionName:t,logPath:n,sessionStore:r,inspectFacts:i,bindDevice:a,platformResourceCleanup:o}),alert:async({req:e,sessionName:t,logPath:n,sessionStore:r,inspectFacts:i,bindDevice:a,platformResourceCleanup:o})=>{let{ref:s,session:c,device:l}=await z(r,t,e.flags);return await R(c,l,async()=>await be({req:e,logPath:n,sessionStore:r,ref:s,device:l,inspectFacts:i,bindDevice:a}),o)},settings:async({req:e,sessionName:t,logPath:n,sessionStore:r,inspectFacts:i,bindDevice:a,platformResourceCleanup:o})=>{let s=Ce(e);if(!s.ok)return s;let{ref:c,session:l,device:u}=await z(r,t,e.flags);return await R(l,u,async()=>await Oe({req:e,logPath:n,sessionStore:r,ref:c,device:u,parsed:s.parsed,inspectFacts:i,bindDevice:a}),o)}};async function $e(e){let t=e.req.command,n=Qe[t];return n?await n(e):null}export{$e as handleSnapshotCommands};
1
+ import{$ as e,P as t,s as n}from"./sdk-contracts.js";import{r}from"./diagnostics.js";import"./diagnostics2.js";import{A as i,f as a,g as o,m as s}from"./sdk-device.js";import{Ht as c,Rr as l,Ut as u,cn as d,et as f,hr as p,ln as m,nt as h,rt as g,tt as _,zt as v}from"./sdk-batch.js";import{f as y}from"./dispatch-resolve.js";import{c as b,s as ee}from"./target-evidence.js";import{l as x}from"./runtime.js";import{i as te,r as S}from"./success-text.js";import"./alert-contract.js";import{C as ne,S as re,c as ie,f as C,g as w,h as T,m as E,p as ae,r as D,w as O}from"./settings.js";import{t as k}from"./location-coordinates.js";import{r as oe,s as se}from"./overlay.js";import{a as ce,h as A,j,m as le,u as M,v as N}from"./session-snapshot.js";import{n as P}from"./runtime-admission.js";import{lt as F}from"./internal/daemon.js";import{n as I,t as L}from"./snapshot-runtime.js";import{a as R,i as z}from"./snapshot-runtime-binding.js";import{a as B,c as V,f as H,g as U,h as W,m as ue,o as de,p as fe,s as pe,t as me}from"./selector-runtime.js";async function he(e){let{device:t,action:n,inspectFacts:r,bindDevice:i}=e,a={command:`alert`,device:t,inspectFacts:r,bindDevice:i,readiness:!e.session};if(n===`wait`){let e=await P({...a,use:g});if(e.type===`response`)return{ok:!1,response:e.response};let t=e.runtime;return{ok:!0,execute:e=>_e(t,e)}}if(n===`accept`){let e=await P({...a,use:f});if(e.type===`response`)return{ok:!1,response:e.response};let t=e.runtime;return{ok:!0,execute:e=>ve(t,e)}}if(n===`dismiss`){let e=await P({...a,use:_});if(e.type===`response`)return{ok:!1,response:e.response};let t=e.runtime;return{ok:!0,execute:e=>ye(t,e)}}let o=await P({...a,use:h});if(o.type===`response`)return{ok:!1,response:o.response};let s=o.runtime;return{ok:!0,execute:e=>ge(s,e)}}async function ge(e,t){return await e.operations.readAlert(t)}async function _e(e,t){return await e.operations.awaitAlert(t)}async function ve(e,t){return await e.operations.acceptAlert(t)}async function ye(e,t){return await e.operations.dismissAlert(t)}async function be(e){let{req:t,logPath:n,sessionStore:r,ref:i,device:a,inspectFacts:o,bindDevice:s}=e,c=i?r.requireCurrent(i):void 0,l=await he({device:a,action:Se(t.positionals?.[0]),session:c,inspectFacts:o,bindDevice:s});if(!l.ok)return l.response;c=i?r.requireCurrent(i):void 0,c&&F(t)===`may-invalidate`&&j(c);let u=N(n,t.flags,c?.appBundleId,c?.trace?.outPath),d=await l.execute({timeoutMs:m(t.positionals?.[1])??1e4,...xe(c),execution:A(u)});return y(r,i,t,t.command,d),{ok:!0,data:d}}function xe(e){return{...e?.appBundleId===void 0?{}:{appBundleId:e.appBundleId},...e?.surface===void 0?{}:{surface:e.surface}}}function Se(e){return e===`accept`||e===`dismiss`||e===`wait`?e:`get`}function Ce(e){let t=e.positionals?.[0]?.toLowerCase(),r=e.positionals?.[1]?.toLowerCase(),i=e.positionals?.[2]?.toLowerCase();if(t===`clear-app-state`)return{ok:!0,parsed:{leg:`write`,args:{setting:t,state:`clear`,appBundleId:r===`clear`?e.positionals?.[2]:e.positionals?.[1]}}};let a=v(e.positionals);if(a.kind===`read`)return{ok:!0,parsed:{leg:`read`,setting:a.setting}};if(!t||!r||t===`permission`&&!i||t===`location`&&r===`set`&&(!e.positionals?.[2]||!e.positionals?.[3])||t===`reset-keychain`&&e.positionals?.[2]!==void 0)return n(`INVALID_ARGS`,ie);let o=r;if(t===`text-size`){let e=re(r);if(e===void 0)return n(`INVALID_ARGS`,T(r));o=e}return{ok:!0,parsed:{leg:`write`,args:{setting:t,state:o,permissionTarget:i,permissionMode:e.positionals?.[3],latitude:e.positionals?.[2],longitude:e.positionals?.[3]}}}}function we(e){if(e.setting===`permission`)return{permissionTarget:e.permissionTarget,permissionMode:e.permissionMode};if(e.setting===`location`&&e.state===`set`)return{latitude:k(e.latitude,`latitude`),longitude:k(e.longitude,`longitude`)}}function Te(e,t,n){let{setting:r,state:i}=e;return r===`clear-app-state`?{setting:`clear-app-state`,state:`clear`,appBundleId:t,platform:n}:r===`location`&&i===`set`?{setting:r,state:i,latitude:e.latitude,longitude:e.longitude,platform:n}:r===`permission`?{setting:r,state:i,permissionTarget:e.permissionTarget,permissionMode:e.permissionMode,platform:n}:{setting:r,state:i,appBundleId:t,platform:n}}function Ee(e){return typeof e.message==`string`&&e.message.length>0?e.message:void 0}async function De(e,t,n){let{setting:r,state:i}=t,a=await e.operations.setSetting(t);return a&&typeof a==`object`?te({setting:r,state:i,...a},Ee(a)??n):{setting:r,state:i,...S(n)}}async function Oe(e){return e.parsed.leg===`read`?await ke(e,e.parsed.setting):await Ae(e,e.parsed.args)}async function ke(e,t){let{req:n,logPath:i,sessionStore:a,ref:o,device:s,inspectFacts:l,bindDevice:u}=e,d=o?a.requireCurrent(o):void 0,f=G(s,t);if(f!==void 0)return f;let p=await P({command:`settings ${t}`,device:s,use:c,inspectFacts:l,bindDevice:u,readiness:!d});if(p.type===`response`)return p.response;d=o?a.requireCurrent(o):void 0,r({level:`debug`,phase:`settings_read`,data:{setting:t,platform:s.platform}});let m=N(i,n.flags,d?.appBundleId,d?.trace?.outPath),h=await p.runtime.operations.readSetting({setting:t,execution:A(m)}),g={...h,...S(C(h))};return y(a,o,n,n.command,g),{ok:!0,data:g}}async function Ae(e,t){let{req:n,logPath:i,sessionStore:a,ref:o,device:s,inspectFacts:c,bindDevice:l}=e,d=o?a.requireCurrent(o):void 0,{setting:f,state:p}=t,m=G(s,f);if(m!==void 0)return m;let h=je(s,n,f,p);if(h!==void 0)return h;let g=await P({command:`settings`,device:s,use:u,inspectFacts:c,bindDevice:l,readiness:!d});if(g.type===`response`)return g.response;d=o?a.requireCurrent(o):void 0;let _=Me(n,t,d,s),v=Ne(t,_);if(v!==void 0)return v;d&&j(d),r({level:`debug`,phase:`settings_apply`,data:Te(t,_,s.platform)});let b=await De(g.runtime,Pe(t,_,N(i,n.flags,_,d?.trace?.outPath)),ae(f,p,_));return y(a,o,n,n.command,b),{ok:!0,data:b}}function G(e,t){if(o(e)&&!w(t))return n(`INVALID_ARGS`,E(t));if(t===`text-size`&&a(e.platform)&&!s(e))return n(`UNSUPPORTED_OPERATION`,D.message,{deviceKind:e.kind,appleOs:i(e),reason:D.reason},{hint:D.hint})}function K(e){let t=e.input?.app;if(typeof t!=`string`)return;let n=t.trim();return n.length>0?n:void 0}function q(e){return o(e)?`macos-host`:a(e.platform)?`apple`:`mobile`}function je(e,t,r,i){let a=K(t);if(a===void 0||O(q(e),r,i)!==`device-level`)return;let o=ne(r,i,a);return n(o.code,o.message,o.details,{hint:o.hint})}function Me(e,t,n,r){let i=O(q(r),t.setting,t.state)===`app-scoped`?K(e):void 0;return t.appBundleId??i??e.internal?.settingsAppBundleId??n?.appBundleId}function Ne(t,r){if(t.setting===`clear-app-state`&&!r)return n(`INVALID_ARGS`,`settings clear-app-state requires an app id when no app is bound to the session`,e())}function Pe(e,t,n){let r=we(e);return{setting:e.setting,state:e.state,...t===void 0?{}:{appBundleId:t},...r===void 0?{}:{options:r},execution:A(n)}}async function Fe(e){return await I({...e,command:`diff`,execute:async({runtime:e,sessionName:t,req:n,snapshotScope:r})=>{let i=await e.capture.diffSnapshot({session:t,interactiveOnly:n.flags?.snapshotInteractiveOnly,depth:n.flags?.snapshotDepth,scope:r,raw:n.flags?.snapshotRaw});return{data:i,record:{kind:`diff`,mode:`snapshot`,baselineInitialized:i.baselineInitialized,summary:i.summary}}}})}function Ie(e){return e!==`sleep`}const Le=[`application`,`window`,`tabbar`,`scrollbar`,`image`],Re=new Set([`tab bar`]);async function ze(e,t){if(t.ok||!Be(t.error.details?.reason)||t.error.details?.captureStalled===!0||t.error.details?.captureTruncated===!0)return t;let r=await Ve(e).catch(()=>null);return r?n(t.error.code,`${t.error.message}. Current surface: ${r.summary}.`,{...t.error.details??{},currentSurface:r.details}):t}function Be(e){return e===x.targetAbsent||e===x.stableTimeout}async function Ve(e){let t={...e.req.flags,snapshotInteractiveOnly:!0},n=await M({device:e.device,session:e.session,flags:t,logPath:e.logPath??``,captureData:async()=>await e.capture(le({flags:t,logPath:e.logPath??``,meta:e.req.meta,session:e.session,snapshotScope:void 0}))});ee(e.captureProof,n.snapshot);let r=[...n.snapshot.nodes].sort(He),i=J(r,6,{includeIdentifiers:!0});if(i.length===0)return null;let a=J(r.filter(e=>!Z(e)),4,{includeIdentifiers:!1}),o=J(r.filter(We),4,{includeIdentifiers:!0});return{summary:(a.length>0?a:i.slice(0,4)).join(`, `),details:{labels:i,...o.length>0?{buttons:o}:{}}}}function J(e,t,n){let r=new Set,i=[];for(let a of e){let e=X(a,n);if(!(!e||r.has(e))&&(r.add(e),i.push(e),i.length>=t))break}return i}function He(e,t){return Y(e)-Y(t)||Ue(e,t)}function Y(e){let t=!!X(e,{includeIdentifiers:!1});return(Z(e)?2:0)+ +!t}function Ue(e,t){return e.rect&&t.rect?e.rect.y-t.rect.y||e.rect.x-t.rect.x:e.rect?-1:t.rect?1:(e.depth??0)-(t.depth??0)||e.index-t.index}function X(e,t){let n=(t.includeIdentifiers?[e.label,e.value,e.identifier]:[e.label,e.value]).map(e=>typeof e==`string`?e.trim():``).find(e=>e.length>0);return n?n.replaceAll(/\s+/g,` `).slice(0,80):``}function Z(e){let t=l(`${e.type??``} ${e.role??``} ${e.subrole??``}`),n=`${e.label??``} ${e.value??``}`.trim().toLowerCase();return Le.some(e=>t.includes(e))||Re.has(n)||n.endsWith(`.fill`)}function We(e){let t=`${e.type??``} ${e.role??``} ${e.subrole??``}`;return l(t).includes(`button`)}async function Ge(e){let{req:t,sessionName:n,sessionStore:r}=e,i=Q(t);if(`ok`in i)return i;let a=i,{ref:o,session:s,device:c}=await z(r,n,t.flags),l=await Ke(e,a,s,c);if(l&&`ok`in l)return l;let u=l,d=t.internal?.replayLandmarkGuard,f=qe(a,s);if(`ok`in f)return f;let{waitParsed:p,staleRefsWarning:m}=f;return e.consumedSnapshot??={},e.captureProof??={},a.kind===`sleep`?await $({...e,ref:o},p,s,c,u,m,d):b({response:await R(s,c,()=>$({...e,ref:o},p,s,c,u,m,d),e.platformResourceCleanup),consumedTree:me(e),captureProof:e.captureProof})}function Q(e){let t=d(e.positionals??[]);if(!t)return n(`INVALID_ARGS`,`wait requires a duration or text`);if(t.kind===`invalid`)return n(`INVALID_ARGS`,t.message);if(t.kind!==`absent`)return t;let r=se({depth:e.flags?.snapshotDepth,scope:e.flags?.snapshotScope});if(!r)return t;let i=oe(r,`wait`);return n(i.code,i.message,i.details)}async function Ke(e,t,n,r){if(!Ie(t.kind))return;let i=await H({command:`wait`,device:r,session:n,inspectFacts:e.inspectFacts,bindDevice:e.bindDevice});return i.ok?i.operations:i.response}function qe(e,t){if(e.kind!==`ref`)return{waitParsed:e};let n=U(e.rawRef);return n.ok?{waitParsed:{...e,rawRef:n.ref},staleRefsWarning:ce({session:t,ref:n.ref,mintedGeneration:n.generation})}:n.response}async function $(e,t,n,r,i,a,o){let{req:s,sessionName:c,sessionStore:l}=e,u=V({...e,ref:e.ref,session:n,device:r,bound:i}),d=await pe(async()=>{let r=await u.selectors.wait({session:c,requestId:s.meta?.requestId,target:Je(t,n,o)}),i=de(r);fe(l,e.ref,s,ue(r),i,`landmark`);let d=W(r);return a?{...d,warning:a}:d}),f=i?await ze({req:s,logPath:e.logPath,session:n,device:r,capture:i.capture,captureProof:e.captureProof},d):d;return await B(e,f,`wait`)}function Je(e,t,n){switch(e.kind){case`sleep`:return{kind:`sleep`,durationMs:e.durationMs};case`selector`:return{kind:`selector`,selector:e.selectorExpression,timeoutMs:e.timeoutMs,...n?{recordedLandmark:n}:{}};case`absent`:return{kind:`absent`,selector:e.selectorExpression,timeoutMs:e.timeoutMs};case`ref`:return Xe(e,t);case`stable`:return{kind:`stable`,quietMs:e.quietMs,timeoutMs:e.timeoutMs};case`text`:return Ze(e);default:return Ye(e)}}function Ye(e){throw Error(`Unsupported wait positional target: ${String(e)}`)}function Xe(e,n){if(!n?.snapshot)throw new t(`INVALID_ARGS`,`Ref wait requires an existing snapshot in session.`);return{kind:`ref`,ref:e.rawRef,timeoutMs:e.timeoutMs}}function Ze(e){let n=p(e.text);if(!n.ok)throw new t(n.code,n.message);return{kind:`text`,text:n.text,timeoutMs:e.timeoutMs}}const Qe={snapshot:async({req:e,sessionName:t,logPath:n,sessionStore:r,inspectFacts:i,bindDevice:a,platformResourceCleanup:o})=>await L({req:e,sessionName:t,logPath:n,sessionStore:r,inspectFacts:i,bindDevice:a,platformResourceCleanup:o}),diff:async({req:e,sessionName:t,logPath:r,sessionStore:i,inspectFacts:a,bindDevice:o,platformResourceCleanup:s})=>e.positionals?.[0]===`snapshot`?await Fe({req:e,sessionName:t,logPath:r,sessionStore:i,inspectFacts:a,bindDevice:o,platformResourceCleanup:s}):n(`INVALID_ARGS`,`diff currently supports only: diff snapshot`),wait:async({req:e,sessionName:t,logPath:n,sessionStore:r,inspectFacts:i,bindDevice:a,platformResourceCleanup:o})=>await Ge({req:e,sessionName:t,logPath:n,sessionStore:r,inspectFacts:i,bindDevice:a,platformResourceCleanup:o}),alert:async({req:e,sessionName:t,logPath:n,sessionStore:r,inspectFacts:i,bindDevice:a,platformResourceCleanup:o})=>{let{ref:s,session:c,device:l}=await z(r,t,e.flags);return await R(c,l,async()=>await be({req:e,logPath:n,sessionStore:r,ref:s,device:l,inspectFacts:i,bindDevice:a}),o)},settings:async({req:e,sessionName:t,logPath:n,sessionStore:r,inspectFacts:i,bindDevice:a,platformResourceCleanup:o})=>{let s=Ce(e);if(!s.ok)return s;let{ref:c,session:l,device:u}=await z(r,t,e.flags);return await R(l,u,async()=>await Oe({req:e,logPath:n,sessionStore:r,ref:c,device:u,parsed:s.parsed,inspectFacts:i,bindDevice:a}),o)}};async function $e(e){let t=e.req.command,n=Qe[t];return n?await n(e):null}export{$e as handleSnapshotCommands};
package/dist/src/src2.js CHANGED
@@ -1 +1 @@
1
- const e=Object.freeze({family:`apple`}),t=Object.freeze({...e,loadRuntime:async e=>{let{createApplePlatformRuntime:t}=await import(`./runtime4.js`);return t(e)}}),n=Object.freeze({...e,loadInventory:async e=>{let{createAppleInventorySource:t}=await import(`./inventory2.js`);return t(e)}});async function r(e){let{createAppleShutdownRuntime:t}=await import(`./runtime5.js`);return t(e)}const i={id:`apple`,platforms:[`apple`],familySelector:`apple`,providers:{platformGatedResolvers:[`appleRunnerProvider`,`appleToolProvider`]},createInteractor:async(e,t)=>{let{createAppleInteractor:n}=await import(`./interactor.js`);return n(e,t)}};export{t as i,n,r,i as t};
1
+ const e=Object.freeze({family:`apple`}),t=Object.freeze({...e,loadRuntime:async e=>{let{createApplePlatformRuntime:t}=await import(`./runtime5.js`);return t(e)}}),n=Object.freeze({...e,loadInventory:async e=>{let{createAppleInventorySource:t}=await import(`./inventory2.js`);return t(e)}});async function r(e){let{createAppleShutdownRuntime:t}=await import(`./runtime6.js`);return t(e)}const i={id:`apple`,platforms:[`apple`],familySelector:`apple`,providers:{platformGatedResolvers:[`appleRunnerProvider`,`appleToolProvider`]},createInteractor:async(e,t)=>{let{createAppleInteractor:n}=await import(`./interactor.js`);return n(e,t)}};export{t as i,n,r,i as t};
package/dist/src/src3.js CHANGED
@@ -1 +1 @@
1
- import{r as e}from"./rolldown-runtime.js";var t=e({inventoryModule:()=>a,runtimeModule:()=>i,vegaPlugin:()=>o,vegaToolchainCheck:()=>s,withVegaToolProvider:()=>c});function n(e){return(async(...t)=>await(await e())(...t))}const r=Object.freeze({family:`vega`}),i=Object.freeze({...r,loadRuntime:async e=>{let{createVegaPlatformRuntime:t}=await import(`./runtime8.js`);return t(e)}}),a=Object.freeze({...r,loadInventory:async e=>{let{createVegaInventory:t}=await import(`./inventory5.js`);return t(e)}}),o={id:`vega`,platforms:[`vega`],providers:{platformGatedResolvers:[`vegaToolProvider`]},createInteractor:async(e,t)=>{let{createVegaInteractor:n}=await import(`./interactor2.js`);return n(e,t)}},s=n(async()=>(await import(`./doctor2.js`)).vegaToolchainCheck);async function c(e,t){let{withVegaToolProvider:n}=await import(`./tool-provider3.js`).then(e=>e.n);return await n(e,t)}export{o as i,i as n,t as r,a as t};
1
+ import{r as e}from"./rolldown-runtime.js";var t=e({inventoryModule:()=>a,runtimeModule:()=>i,vegaPlugin:()=>o,vegaToolchainCheck:()=>s,withVegaToolProvider:()=>c});function n(e){return(async(...t)=>await(await e())(...t))}const r=Object.freeze({family:`vega`}),i=Object.freeze({...r,loadRuntime:async e=>{let{createVegaPlatformRuntime:t}=await import(`./runtime9.js`);return t(e)}}),a=Object.freeze({...r,loadInventory:async e=>{let{createVegaInventory:t}=await import(`./inventory5.js`);return t(e)}}),o={id:`vega`,platforms:[`vega`],providers:{platformGatedResolvers:[`vegaToolProvider`]},createInteractor:async(e,t)=>{let{createVegaInteractor:n}=await import(`./interactor2.js`);return n(e,t)}},s=n(async()=>(await import(`./doctor2.js`)).vegaToolchainCheck);async function c(e,t){let{withVegaToolProvider:n}=await import(`./tool-provider3.js`).then(e=>e.n);return await n(e,t)}export{o as i,i as n,t as r,a as t};
package/dist/src/src4.js CHANGED
@@ -1 +1 @@
1
- import{r as e}from"./rolldown-runtime.js";var t=e({appSwitcherHarmony:()=>y,backHarmony:()=>_,closeHarmonyApp:()=>o,createHarmonyInventoryModule:()=>O,doubleClickHarmony:()=>d,ensureHarmonyToolchainPathConfigured:()=>l,fillHarmony:()=>m,harmonyToolchainCheck:()=>D,homeHarmony:()=>v,longPressHarmony:()=>f,openHarmonyApp:()=>a,performHarmonyGesture:()=>g,pressHarmony:()=>u,pressHarmonyKeyboardKey:()=>b,readHarmonyGestureViewport:()=>T,runHarmonyHdc:()=>s,runHarmonyShell:()=>c,runtimeModule:()=>i,sampleHarmonyMemoryPerf:()=>E,screenshotHarmony:()=>S,scrollHarmony:()=>h,setHarmonyOrientation:()=>x,setHarmonySetting:()=>C,snapshotHarmony:()=>w,typeHarmony:()=>p});function n(e){return(async(...t)=>await(await e())(...t))}const r=Object.freeze({family:`harmonyos`}),i=Object.freeze({...r,loadRuntime:async e=>{let{createHarmonyPlatformRuntime:t}=await import(`./runtime6.js`);return t(e)}}),a=n(async()=>(await import(`./app-lifecycle2.js`)).openHarmonyApp),o=n(async()=>(await import(`./app-lifecycle2.js`)).closeHarmonyApp),s=n(async()=>(await import(`./hdc.js`)).runHarmonyHdc),c=n(async()=>(await import(`./hdc.js`)).runHarmonyShell),l=n(async()=>(await import(`./hdc.js`)).ensureHarmonyToolchainPathConfigured),u=n(async()=>(await import(`./input-actions.js`)).pressHarmony),d=n(async()=>(await import(`./input-actions.js`)).doubleClickHarmony),f=n(async()=>(await import(`./input-actions.js`)).longPressHarmony),p=n(async()=>(await import(`./input-actions.js`)).typeHarmony),m=n(async()=>(await import(`./input-actions.js`)).fillHarmony),h=n(async()=>(await import(`./input-actions.js`)).scrollHarmony),g=n(async()=>(await import(`./input-actions.js`)).performHarmonyGesture),_=n(async()=>(await import(`./input-actions.js`)).backHarmony),v=n(async()=>(await import(`./input-actions.js`)).homeHarmony),y=n(async()=>(await import(`./input-actions.js`)).appSwitcherHarmony),b=n(async()=>(await import(`./input-actions.js`)).pressHarmonyKeyboardKey),x=n(async()=>(await import(`./input-actions.js`)).setHarmonyOrientation),S=n(async()=>(await import(`./screenshot.js`)).screenshotHarmony),C=n(async()=>(await import(`./settings2.js`)).setHarmonySetting),w=n(async()=>(await import(`./snapshot2.js`)).snapshotHarmony),T=n(async()=>(await import(`./snapshot2.js`)).readHarmonyGestureViewport),E=n(async()=>(await import(`./perf.js`)).sampleHarmonyMemoryPerf),D=n(async()=>(await import(`./doctor.js`)).harmonyToolchainCheck);function O(e){let t=Object.freeze({hdcSdkPath:k(e.hdcSdkPath),devecoSdkHome:k(e.devecoSdkHome),commandLineToolsHome:k(e.commandLineToolsHome)});return Object.freeze({...r,loadInventory:async e=>{let{createHarmonyInventory:n}=await import(`./inventory3.js`);return n(e,t)}})}function k(e){return e?.trim()||void 0}export{x as _,d as a,t as b,f as c,u as d,b as f,h as g,S as h,O as i,a as l,i as m,_ as n,m as o,T as p,o as r,v as s,y as t,g as u,C as v,p as x,w as y};
1
+ import{r as e}from"./rolldown-runtime.js";var t=e({appSwitcherHarmony:()=>y,backHarmony:()=>_,closeHarmonyApp:()=>o,createHarmonyInventoryModule:()=>O,doubleClickHarmony:()=>d,ensureHarmonyToolchainPathConfigured:()=>l,fillHarmony:()=>m,harmonyToolchainCheck:()=>D,homeHarmony:()=>v,longPressHarmony:()=>f,openHarmonyApp:()=>a,performHarmonyGesture:()=>g,pressHarmony:()=>u,pressHarmonyKeyboardKey:()=>b,readHarmonyGestureViewport:()=>T,runHarmonyHdc:()=>s,runHarmonyShell:()=>c,runtimeModule:()=>i,sampleHarmonyMemoryPerf:()=>E,screenshotHarmony:()=>S,scrollHarmony:()=>h,setHarmonyOrientation:()=>x,setHarmonySetting:()=>C,snapshotHarmony:()=>w,typeHarmony:()=>p});function n(e){return(async(...t)=>await(await e())(...t))}const r=Object.freeze({family:`harmonyos`}),i=Object.freeze({...r,loadRuntime:async e=>{let{createHarmonyPlatformRuntime:t}=await import(`./runtime7.js`);return t(e)}}),a=n(async()=>(await import(`./app-lifecycle2.js`)).openHarmonyApp),o=n(async()=>(await import(`./app-lifecycle2.js`)).closeHarmonyApp),s=n(async()=>(await import(`./hdc.js`)).runHarmonyHdc),c=n(async()=>(await import(`./hdc.js`)).runHarmonyShell),l=n(async()=>(await import(`./hdc.js`)).ensureHarmonyToolchainPathConfigured),u=n(async()=>(await import(`./input-actions.js`)).pressHarmony),d=n(async()=>(await import(`./input-actions.js`)).doubleClickHarmony),f=n(async()=>(await import(`./input-actions.js`)).longPressHarmony),p=n(async()=>(await import(`./input-actions.js`)).typeHarmony),m=n(async()=>(await import(`./input-actions.js`)).fillHarmony),h=n(async()=>(await import(`./input-actions.js`)).scrollHarmony),g=n(async()=>(await import(`./input-actions.js`)).performHarmonyGesture),_=n(async()=>(await import(`./input-actions.js`)).backHarmony),v=n(async()=>(await import(`./input-actions.js`)).homeHarmony),y=n(async()=>(await import(`./input-actions.js`)).appSwitcherHarmony),b=n(async()=>(await import(`./input-actions.js`)).pressHarmonyKeyboardKey),x=n(async()=>(await import(`./input-actions.js`)).setHarmonyOrientation),S=n(async()=>(await import(`./screenshot.js`)).screenshotHarmony),C=n(async()=>(await import(`./settings2.js`)).setHarmonySetting),w=n(async()=>(await import(`./snapshot2.js`)).snapshotHarmony),T=n(async()=>(await import(`./snapshot2.js`)).readHarmonyGestureViewport),E=n(async()=>(await import(`./perf.js`)).sampleHarmonyMemoryPerf),D=n(async()=>(await import(`./doctor.js`)).harmonyToolchainCheck);function O(e){let t=Object.freeze({hdcSdkPath:k(e.hdcSdkPath),devecoSdkHome:k(e.devecoSdkHome),commandLineToolsHome:k(e.commandLineToolsHome)});return Object.freeze({...r,loadInventory:async e=>{let{createHarmonyInventory:n}=await import(`./inventory3.js`);return n(e,t)}})}function k(e){return e?.trim()||void 0}export{x as _,d as a,t as b,f as c,u as d,b as f,h as g,S as h,O as i,a as l,i as m,_ as n,m as o,T as p,o as r,v as s,y as t,g as u,C as v,p as x,w as y};
package/dist/src/src5.js CHANGED
@@ -1 +1 @@
1
- import{r as e}from"./rolldown-runtime.js";var t=e({backLinux:()=>c,captureLinuxSurfaceSnapshot:()=>C,closeLinuxApp:()=>s,doubleClickLinux:()=>f,fillLinux:()=>p,focusLinux:()=>m,homeLinux:()=>l,inventoryModule:()=>a,longPressLinux:()=>h,middleClickLinux:()=>v,openLinuxApp:()=>o,pressLinux:()=>g,readLinuxClipboard:()=>u,readLinuxTextAtPoint:()=>w,rightClickLinux:()=>_,runtimeModule:()=>i,screenshotLinux:()=>S,scrollLinux:()=>y,swipeLinux:()=>b,typeLinux:()=>x,withLinuxToolProvider:()=>T,writeLinuxClipboard:()=>d});function n(e){return(async(...t)=>await(await e())(...t))}const r=Object.freeze({family:`linux`}),i=Object.freeze({...r,loadRuntime:async e=>{let{createLinuxPlatformRuntime:t}=await import(`./runtime7.js`);return t(e)}}),a=Object.freeze({...r,loadInventory:async e=>{let{createLinuxInventory:t}=await import(`./inventory4.js`);return t(e)}}),o=n(async()=>(await import(`./app-lifecycle3.js`)).openLinuxApp),s=n(async()=>(await import(`./app-lifecycle3.js`)).closeLinuxApp),c=n(async()=>(await import(`./app-lifecycle3.js`)).backLinux),l=n(async()=>(await import(`./app-lifecycle3.js`)).homeLinux),u=n(async()=>(await import(`./clipboard.js`)).readLinuxClipboard),d=n(async()=>(await import(`./clipboard.js`)).writeLinuxClipboard),f=n(async()=>(await import(`./input-actions2.js`)).doubleClickLinux),p=n(async()=>(await import(`./input-actions2.js`)).fillLinux),m=n(async()=>(await import(`./input-actions2.js`)).focusLinux),h=n(async()=>(await import(`./input-actions2.js`)).longPressLinux),g=n(async()=>(await import(`./input-actions2.js`)).pressLinux),_=n(async()=>(await import(`./input-actions2.js`)).rightClickLinux),v=n(async()=>(await import(`./input-actions2.js`)).middleClickLinux),y=n(async()=>(await import(`./input-actions2.js`)).scrollLinux),b=n(async()=>(await import(`./input-actions2.js`)).swipeLinux),x=n(async()=>(await import(`./input-actions2.js`)).typeLinux),S=n(async()=>(await import(`./screenshot2.js`)).screenshotLinux),C=n(async()=>(await import(`./surface-snapshot2.js`)).captureLinuxSurfaceSnapshot),w=n(async()=>(await import(`./snapshot3.js`)).readLinuxTextAtPoint);async function T(e,t){let{withLinuxToolProvider:n}=await import(`./tool-provider2.js`).then(e=>e.r);return await n(e,t)}export{d as S,S as _,p as a,b,a as c,o as d,g as f,i as g,_ as h,f as i,h as l,w as m,C as n,m as o,u as p,s as r,l as s,c as t,v as u,y as v,x,t as y};
1
+ import{r as e}from"./rolldown-runtime.js";var t=e({backLinux:()=>c,captureLinuxSurfaceSnapshot:()=>C,closeLinuxApp:()=>s,doubleClickLinux:()=>f,fillLinux:()=>p,focusLinux:()=>m,homeLinux:()=>l,inventoryModule:()=>a,longPressLinux:()=>h,middleClickLinux:()=>v,openLinuxApp:()=>o,pressLinux:()=>g,readLinuxClipboard:()=>u,readLinuxTextAtPoint:()=>w,rightClickLinux:()=>_,runtimeModule:()=>i,screenshotLinux:()=>S,scrollLinux:()=>y,swipeLinux:()=>b,typeLinux:()=>x,withLinuxToolProvider:()=>T,writeLinuxClipboard:()=>d});function n(e){return(async(...t)=>await(await e())(...t))}const r=Object.freeze({family:`linux`}),i=Object.freeze({...r,loadRuntime:async e=>{let{createLinuxPlatformRuntime:t}=await import(`./runtime8.js`);return t(e)}}),a=Object.freeze({...r,loadInventory:async e=>{let{createLinuxInventory:t}=await import(`./inventory4.js`);return t(e)}}),o=n(async()=>(await import(`./app-lifecycle3.js`)).openLinuxApp),s=n(async()=>(await import(`./app-lifecycle3.js`)).closeLinuxApp),c=n(async()=>(await import(`./app-lifecycle3.js`)).backLinux),l=n(async()=>(await import(`./app-lifecycle3.js`)).homeLinux),u=n(async()=>(await import(`./clipboard.js`)).readLinuxClipboard),d=n(async()=>(await import(`./clipboard.js`)).writeLinuxClipboard),f=n(async()=>(await import(`./input-actions2.js`)).doubleClickLinux),p=n(async()=>(await import(`./input-actions2.js`)).fillLinux),m=n(async()=>(await import(`./input-actions2.js`)).focusLinux),h=n(async()=>(await import(`./input-actions2.js`)).longPressLinux),g=n(async()=>(await import(`./input-actions2.js`)).pressLinux),_=n(async()=>(await import(`./input-actions2.js`)).rightClickLinux),v=n(async()=>(await import(`./input-actions2.js`)).middleClickLinux),y=n(async()=>(await import(`./input-actions2.js`)).scrollLinux),b=n(async()=>(await import(`./input-actions2.js`)).swipeLinux),x=n(async()=>(await import(`./input-actions2.js`)).typeLinux),S=n(async()=>(await import(`./screenshot2.js`)).screenshotLinux),C=n(async()=>(await import(`./surface-snapshot2.js`)).captureLinuxSurfaceSnapshot),w=n(async()=>(await import(`./snapshot3.js`)).readLinuxTextAtPoint);async function T(e,t){let{withLinuxToolProvider:n}=await import(`./tool-provider2.js`).then(e=>e.r);return await n(e,t)}export{d as S,S as _,p as a,b,a as c,o as d,g as f,i as g,_ as h,f as i,h as l,w as m,C as n,m as o,u as p,s as r,l as s,c as t,v as u,y as v,x,t as y};
package/dist/src/src6.js CHANGED
@@ -1 +1 @@
1
- import{r as e}from"./rolldown-runtime.js";var t=e({AGENT_BROWSER_TIMEOUT_MS:()=>AGENT_BROWSER_TIMEOUT_MS,cleanupManagedAgentBrowserOrphans:()=>u,createAgentBrowserWebProvider:()=>o,doctorManagedAgentBrowser:()=>l,getManagedAgentBrowserStatus:()=>s,hasScopedWebProvider:()=>p,inventoryModule:()=>a,resolveWebProvider:()=>f,runtimeModule:()=>i,setupManagedAgentBrowser:()=>c,webBrowserLifecycleCheck:()=>d,withWebProvider:()=>m});function n(e){return(async(...t)=>await(await e())(...t))}const r=Object.freeze({family:`web`}),i=Object.freeze({...r,loadRuntime:async e=>{let{createWebPlatformRuntime:t}=await import(`./runtime9.js`);return t(e)}}),a=Object.freeze({...r,loadInventory:async()=>{let{createWebInventory:e}=await import(`./inventory6.js`);return e()}}),o=n(async()=>(await import(`./agent-browser-provider.js`)).createAgentBrowserWebProvider),s=n(async()=>(await import(`./agent-browser-tool.js`).then(e=>e.t)).getManagedAgentBrowserStatus),c=n(async()=>(await import(`./agent-browser-tool.js`).then(e=>e.t)).setupManagedAgentBrowser),l=n(async()=>(await import(`./agent-browser-tool.js`).then(e=>e.t)).doctorManagedAgentBrowser),u=n(async()=>(await import(`./agent-browser-lifecycle.js`).then(e=>e.t)).cleanupManagedAgentBrowserOrphans),d=n(async()=>(await import(`./doctor3.js`)).webBrowserLifecycleCheck),f=n(async()=>(await import(`./provider.js`)).resolveWebProvider),p=n(async()=>(await import(`./provider.js`)).hasScopedWebProvider);async function m(e,t){let{withWebProvider:n}=await import(`./provider.js`);return await n(e,t)}export{t as i,f as n,i as r,a as t};
1
+ import{r as e}from"./rolldown-runtime.js";var t=e({AGENT_BROWSER_TIMEOUT_MS:()=>AGENT_BROWSER_TIMEOUT_MS,cleanupManagedAgentBrowserOrphans:()=>u,createAgentBrowserWebProvider:()=>o,doctorManagedAgentBrowser:()=>l,getManagedAgentBrowserStatus:()=>s,hasScopedWebProvider:()=>p,inventoryModule:()=>a,resolveWebProvider:()=>f,runtimeModule:()=>i,setupManagedAgentBrowser:()=>c,webBrowserLifecycleCheck:()=>d,withWebProvider:()=>m});function n(e){return(async(...t)=>await(await e())(...t))}const r=Object.freeze({family:`web`}),i=Object.freeze({...r,loadRuntime:async e=>{let{createWebPlatformRuntime:t}=await import(`./runtime10.js`);return t(e)}}),a=Object.freeze({...r,loadInventory:async()=>{let{createWebInventory:e}=await import(`./inventory6.js`);return e()}}),o=n(async()=>(await import(`./agent-browser-provider.js`)).createAgentBrowserWebProvider),s=n(async()=>(await import(`./agent-browser-tool.js`).then(e=>e.t)).getManagedAgentBrowserStatus),c=n(async()=>(await import(`./agent-browser-tool.js`).then(e=>e.t)).setupManagedAgentBrowser),l=n(async()=>(await import(`./agent-browser-tool.js`).then(e=>e.t)).doctorManagedAgentBrowser),u=n(async()=>(await import(`./agent-browser-lifecycle.js`).then(e=>e.t)).cleanupManagedAgentBrowserOrphans),d=n(async()=>(await import(`./doctor3.js`)).webBrowserLifecycleCheck),f=n(async()=>(await import(`./provider.js`)).resolveWebProvider),p=n(async()=>(await import(`./provider.js`)).hasScopedWebProvider);async function m(e,t){let{withWebProvider:n}=await import(`./provider.js`);return await n(e,t)}export{t as i,f as n,i as r,a as t};
package/dist/src/src7.js CHANGED
@@ -1,2 +1,2 @@
1
- import{P as e}from"./sdk-contracts.js";import{j as t}from"./sdk-device.js";import{Xt as n,tn as r}from"./sdk-batch.js";import{t as i}from"./audio-probe-runtime.js";import{a,n as o,t as s}from"./durable-resource.js";import{n as c}from"./async-lifecycle.js";import{n as l,t as u}from"./audio-probe-result.js";import d from"node:fs/promises";function f(e,t){if(e.resourceKind!==t.resourceKind)return{status:`unreattachable`,reason:`descriptor-invalid`,message:`Durable resource kind ${e.resourceKind} does not match ${t.resourceKind}`};if(e.descriptor.version!==t.version)return{status:`unreattachable`,reason:`descriptor-version-unsupported`,message:`Unsupported ${t.resourceKind} descriptor version: ${e.descriptor.version}`,version:e.descriptor.version};try{let n=t.decode(e.descriptor.body);return n.status===`decoded`?n:{status:`unreattachable`,reason:`descriptor-invalid`,message:n.message}}catch(e){return{status:`unreattachable`,reason:`descriptor-invalid`,message:e instanceof Error?e.message:`Descriptor codec rejected the body`}}}function p(e,t){return Object.freeze({pendingHandle:new c(e),envelope:t})}function m(e){return Object.freeze({appLogReattach:async({envelope:t})=>{let n=f(t,e.codec);return n.status===`unreattachable`?n:await e.reattach(n.descriptor,h(t))},appLogCleanup:async({envelope:t})=>{let n=f(t,e.codec);return n.status===`decoded`?await e.cleanup(n.descriptor,h(t)):{status:`cleanup-pending`,reason:`manual-recovery-required`,message:n.message}}})}function h(e){return Object.freeze({sessionId:e.sessionId,fence:e.fence})}function g(e){if(typeof e!=`object`||!e||Array.isArray(e))return{status:`invalid`,message:`App-log process marker must be an object`};let t=e;return!Number.isInteger(t.pid)||Number(t.pid)<=0?{status:`invalid`,message:`App-log process marker pid must be a positive integer`}:typeof t.startTime!=`string`||t.startTime.trim().length===0?{status:`invalid`,message:`App-log process marker startTime must be a non-empty string`}:typeof t.command!=`string`||t.command.trim().length===0?{status:`invalid`,message:`App-log process marker command must be a non-empty string`}:{status:`decoded`,marker:Object.freeze({pid:Number(t.pid),startTime:t.startTime,command:t.command})}}function _(e){let t,n,r,i=()=>n??=e.forceCleanup();return Object.freeze({inspect:()=>e.inspect(),finish:()=>t??=e.finish(),forceCleanup:i,[Symbol.asyncDispose]:async()=>{r??=i().then(ee),await r}})}function v(e){return _({inspect:e.inspect,finish:e.finish,forceCleanup:async()=>{let t=await e.finish();return t.status===`completed`?{status:`cleaned`}:{status:`cleanup-pending`,reason:t.reason,message:t.message}}})}function ee(t){if(!s(t))throw new e(`COMMAND_FAILED`,t.message??`Durable resource cleanup could not be confirmed`,{reason:t.reason,retriable:t.reason!==`ownership-fence-lost`,hint:t.reason===`ownership-fence-lost`?`Use the current resource owner or recovery record before retrying cleanup.`:`Keep the recovery record and retry cleanup through the exact runtime owner.`})}const te=e=>b(e.backend)&&(e.source===`system-audio`||e.source===`media-elements`)&&x(e.sourceCount,0)&&re(e.notes)&&b(e.statusPath)&&x(e.startedAt,1)&&x(e.durationMs,1)&&x(e.bucketMs,1),y=Object.freeze({resourceKind:i,version:1,encode:e=>({...e,notes:[...e.notes],marker:{...e.marker}}),decode:e=>{let t=te(e)?ne(e.marker):`invalid`;if(t===`invalid`)return{status:`invalid`,message:`Audio probe descriptor body is invalid`};let n=e;return{status:`decoded`,descriptor:Object.freeze({backend:n.backend,source:n.source,sourceCount:n.sourceCount,notes:Object.freeze([...n.notes]),statusPath:n.statusPath,startedAt:n.startedAt,durationMs:n.durationMs,bucketMs:n.bucketMs,marker:t})}}});function ne(e){if(typeof e!=`object`||!e)return`invalid`;let t=e;return!x(t.pid,1)||!b(t.startTime)||!b(t.command)?`invalid`:Object.freeze({pid:t.pid,startTime:t.startTime,command:t.command})}function b(e){return typeof e==`string`&&e.length>0}function x(e,t){return typeof e==`number`&&Number.isInteger(e)&&e>=t}function re(e){return Array.isArray(e)&&e.every(e=>typeof e==`string`)}async function S(e){try{let t=await d.readFile(e.statusPath,`utf8`);return l(JSON.parse(t),{source:e.source,backend:e.backend,durationMs:e.durationMs,elapsedMs:Date.now()-e.startedAt,bucketMs:e.bucketMs,activeFallback:!0,sourceCount:e.sourceCount,notes:[...e.notes]})}catch(e){if(e.code===`ENOENT`)return;throw e}}function C(e,t,n){let r=Math.min(e.durationMs,Math.max(0,Date.now()-e.startedAt));return{...t??u({source:e.source,backend:e.backend,durationMs:e.durationMs,bucketMs:e.bucketMs,sourceCount:e.sourceCount,notes:[...e.notes]}),state:`stopped`,active:!1,elapsedMs:r,stoppedAt:new Date().toISOString(),reason:n}}function ie(e){let{host:t}=e;return Object.freeze({audioProbeReattach:async e=>{let n=f(e.envelope,y);if(n.status!==`decoded`)return n;let r=n.descriptor,i=await t.inspectProcess(r.marker);if(i===`owned-alive`)return{status:`unreattachable`,reason:`transport-not-reattachable`};if(i===`ownership-lost`)return{status:`unreattachable`,reason:`ownership-fence-lost`};let a=await S(r);return a===void 0||a.state!==`stopped`?{status:`missing`}:{status:`completed`,result:C(r,a,`daemon-recovery`)}},audioProbeCleanup:async e=>{let n=f(e.envelope,y);if(n.status!==`decoded`)return{status:`cleanup-pending`,reason:`manual-recovery-required`,message:n.message};let r=n.descriptor,i=await t.inspectProcess(r.marker);if(i===`ownership-lost`)return{status:`cleanup-pending`,reason:`ownership-fence-lost`};if(i===`missing`)return{status:`already-missing`};let a=await t.terminateProcess(r.marker);return a===`ownership-lost`?{status:`cleanup-pending`,reason:`ownership-fence-lost`}:{status:a===`terminated`?`cleaned`:`already-missing`}}})}async function ae(n){let{host:r,device:s,owner:l,input:u}=n,f=Date.now(),p=r.info,m=Object.freeze([...p.notes(s)]),h=Object.freeze({source:p.source,backend:p.backend,sourceCount:p.sourceCount,notes:m,statusPath:u.statusPath,startedAt:f,durationMs:u.durationMs,bucketMs:u.bucketMs});await d.rm(u.statusPath,{force:!0});let g=await r.start({durationMs:u.durationMs,bucketMs:u.bucketMs,statusPath:u.statusPath});g.wait.catch(()=>{});let _=g.marker;try{if(_===void 0)throw new e(`COMMAND_FAILED`,`failed to start host audio probe: the helper process exposed no exact identity, so the capture could not be recovered after daemon loss and was terminated`);await ue(h,g)}catch(e){throw await g.terminate().catch(()=>{}),e}return Object.freeze({pendingHandle:new c(oe(h,g)),envelope:o({resourceKind:i,sessionId:u.sessionId,device:t(s),owner:l,fence:u.fence,lifecycle:`open`,descriptor:a(y,{backend:p.backend,source:p.source,sourceCount:p.sourceCount,notes:m,statusPath:u.statusPath,startedAt:f,durationMs:u.durationMs,bucketMs:u.bucketMs,marker:_})})})}function oe(e,t){let n,r,i,a;t.wait.then(e=>{a={message:se(e)}},e=>{a={message:e instanceof Error?e.message:`audio probe helper wait failed`}});let o=()=>n??=(async()=>{let n=await S(e);if(n?.state!==`stopped`&&a)throw w(a);return await t.terminate().catch(()=>{}),await t.wait.catch(()=>{}),{status:`completed`,result:C(e,n,`stopped`)}})(),s=()=>r??=n?n.then(async()=>({status:`cleaned`}),async()=>await T(t)):T(t);return Object.freeze({inspect:()=>e,status:async()=>{let t=await S(e);if(t?.state===`stopped`)return t;if(a)throw w(a);return t??C(e,void 0,`not-started`)},finish:o,forceCleanup:s,[Symbol.asyncDispose]:async()=>{i??=s().then(ce),await i}})}function se(e){return e.stderr?.trim()||e.stdout?.trim()||`audio probe helper exited with code ${e.exitCode??1}`}function w(t){return new e(`COMMAND_FAILED`,`host audio probe helper exited before completing the capture: ${t.message}`,{hint:`Keep audio-probe.resource.json; stop resolves the record through descriptor cleanup.`})}async function T(e){try{return await e.terminate(),await e.wait.catch(()=>{}),{status:`cleaned`}}catch(e){return{status:`cleanup-pending`,reason:`cleanup-unconfirmed`,message:e instanceof Error?e.message:`Audio probe termination failed`}}}function ce(t){if(!s(t))throw new e(`COMMAND_FAILED`,t.message??`Audio probe cleanup could not be confirmed`,{reason:t.reason,retriable:t.reason!==`ownership-fence-lost`,hint:`Keep audio-probe.resource.json and retry stop through its exact runtime owner.`})}function le(e){let{host:t,device:n,owner:r}=e,i=ie({host:t});return Object.freeze({audioProbeStart:async e=>await ae({host:t,device:n,owner:r,input:e}),audioProbeReattach:i.audioProbeReattach,audioProbeCleanup:i.audioProbeCleanup})}async function ue(t,n){let r=Date.now()+5e3;for(;Date.now()<r;){if(await S(t))return;let r=await Promise.race([n.wait.then(e=>e,e=>e),de(100).then(()=>void 0)]);if(r instanceof Error)throw r;if(r){let t=r,n=t.stderr?.trim()||t.stdout?.trim()||`host audio probe helper exited with code ${t.exitCode??1}`;throw new e(`COMMAND_FAILED`,`failed to start host audio probe: ${n}`)}}throw new e(`COMMAND_FAILED`,`failed to start host audio probe`)}function de(e){return new Promise(t=>setTimeout(t,e))}async function E(e,t){let n=await O(e,t);if(n.status===`missing`)return{status:`missing`};if(n.status===`invalid`)return{status:`unreattachable`,reason:`ownership-fence-lost`,message:n.message};let r=await e.processes.inspect(n.marker);return r===`missing`?(t&&await e.processes.clearMarker(t),{status:`missing`}):r===`ownership-lost`?{status:`unreattachable`,reason:`ownership-fence-lost`}:{status:`unreattachable`,reason:`transport-not-reattachable`}}async function D(e,t){if(!t)return{status:`cleanup-pending`,reason:`manual-recovery-required`,message:`App-log process marker path is missing`};let n=await O(e,t);if(n.status===`missing`)return{status:`already-missing`};if(n.status===`invalid`)return{status:`cleanup-pending`,reason:`manual-recovery-required`,message:n.message};let r=await e.processes.inspect(n.marker);if(r===`ownership-lost`)return k();if(r===`missing`)return await e.processes.clearMarker(t),{status:`already-missing`};let i=await e.processes.terminate(n.marker);return i===`ownership-lost`?k():(await e.processes.clearMarker(t),{status:i===`terminated`?`cleaned`:`already-missing`})}async function O(e,t){return t?await e.processes.readMarker(t):{status:`invalid`,message:`App-log process marker path is missing`}}function k(){return{status:`cleanup-pending`,reason:`ownership-fence-lost`}}async function fe(e){let t=e.initialProcess;for(;!e.stopped();){if(t){await pe(e,t),t=void 0,await be(e);continue}let n=await xe(e);if(n.status===`stopped`)return;n.status!==`waiting`&&(t=n.process)}}async function pe(e,t){let{process:n}=t;e.setActive(n);try{e.setState(`active`),await me(e,t)}finally{await A(e,n)}}async function me(e,t){let n=he(t.process);try{await ge(e,t,n),await ve(e,t.process,n),await ye(n.outcome)}finally{n.controller.abort()}}function he(e){let t=new AbortController,n=!1,r=()=>{n=!0,t.abort()};return{controller:t,outcome:e.wait.then(()=>(r(),{status:`exited`}),e=>(r(),{status:`failed`,error:e})),settled:()=>n}}async function ge(e,t,n){for(;!e.stopped()&&!n.settled();){if(!await _e(e,n))return;let r=await e.resolvePid();if(e.stopped())return;if(r!==t.pid){await t.process.terminate();return}}}async function _e(e,t){try{await e.sleep(500,t.controller.signal)}catch(e){if(!t.settled())throw e}return!t.settled()}async function ve(e,t,n){e.stopped()&&!n.settled()&&await t.terminate()}async function ye(e){let t=await e;if(t.status===`failed`)throw t.error}async function be(e){e.stopped()||(e.setState(`recovering`),await e.sleep(500))}async function xe(e){let t=await e.resolvePid();if(e.stopped())return{status:`stopped`};if(!t)return e.setState(`recovering`),await e.sleep(1e3),{status:`waiting`};let n=await e.startProcess(t);return e.setActive(n),e.stopped()?(await Se(e,n),{status:`stopped`}):{status:`started`,process:{pid:t,process:n}}}async function Se(e,t){try{await t.terminate(),await t.wait}finally{await A(e,t)}}async function A(e,t){try{await t[Symbol.asyncDispose]()}finally{e.setActive(void 0)}}async function Ce(e){let t=await e.resolvePid(e.setupSignal);e.setupSignal.throwIfAborted();let n=await e.host.outputs.openAppend(e.outputPath),r=`recovering`,i=!1,a;try{if(e.setupSignal.throwIfAborted(),t){e.setupSignal.throwIfAborted();let i=new AbortController,o=()=>i.abort(e.setupSignal.reason);e.setupSignal.addEventListener(`abort`,o,{once:!0});try{a=await e.processStart({command:e.command(t),output:n,markerPath:e.pidPath},i.signal)}finally{e.setupSignal.removeEventListener(`abort`,o)}e.setupSignal.throwIfAborted(),r=`active`}}catch(e){throw await j([async()=>await a?.terminate(),async()=>{await a?.wait},async()=>await a?.[Symbol.asyncDispose](),async()=>await n[Symbol.asyncDispose]()]),e}let o=fe({initialProcess:a&&t?{pid:t,process:a}:void 0,stopped:()=>i,setActive:e=>{a=e},setState:e=>{r=e},resolvePid:async()=>await e.resolvePid(),startProcess:async t=>await e.processStart({command:e.command(t),output:n,markerPath:e.pidPath}),sleep:async(t,n)=>await e.host.clock.sleep(t,n)}).catch(()=>{r=`failed`}),s,c=async()=>s??=we({options:e,monitor:o,active:()=>a,stop:()=>{i=!0},setState:e=>{r=e},output:n}),l=e.host.clock.now();return v({inspect:()=>({backend:e.backend,state:r,startedAt:l}),finish:c})}async function we(e){return e.stop(),(await j([async()=>await e.active()?.terminate(),async()=>await e.monitor,async()=>await e.output[Symbol.asyncDispose]()])).length>0?(e.setState(`failed`),{status:`cleanup-pending`,reason:`transport-failed`,message:e.options.cleanupFailureMessage}):(e.setState(`ended`),{status:`completed`,result:{backend:e.options.backend,outputPath:e.options.outputPath,completedAt:e.options.host.clock.now()}})}async function j(e){let t=[];for(let n of e)try{await n()}catch(e){t.push(e)}return t}function M(e,t,n){let r=e.artifacts.resolveSession(t);return n.outputPath===r.outputPath&&(n.pidPath===void 0||n.pidPath===r.pidPath)}function N(t,n){if(!M(t,n.sessionId,n))throw new e(`INVALID_ARGS`,`App-log paths do not match the owning session`)}const P=Object.freeze({available:!0});async function Te(e,t,n){let r=(await e.commands.run(t,n)).stdout.trim().split(/\s+/)[0]??``;return/^\d+$/.test(r)?r:``}function Ee(t,i){let a=n(i.family);return Object.freeze({owner:a,ownsDevice:e=>e.platform===i.family,inspectFacts:async e=>F(e,await t.processTransports.resolve(e),i),bind:async n=>{if(n.intent.kind===`exact-owner`&&!r(n.intent.owner,a))throw new e(`UNSUPPORTED_OPERATION`,`${i.label} app-log owner identity does not match`);if(n.device.platform!==i.family)throw new e(`UNSUPPORTED_PLATFORM`,`${i.label} app-log owner cannot bind ${n.device.platform}`);let o=await t.processTransports.resolve(n.device);return De(t,n.device,n.scope.signal,o,a,i)},shutdown:async()=>void 0})}function De(e,t,n,r,i,a){let o=m({codec:a.codec,reattach:async(t,n)=>M(e,n.sessionId,t)?await E(e,t.pidPath):{status:`unreattachable`,reason:`descriptor-invalid`,message:`${a.label} app-log descriptor paths do not match the owning session`},cleanup:async(t,n)=>M(e,n.sessionId,t)?await D(e,t.pidPath):{status:`cleanup-pending`,reason:`ownership-fence-lost`,message:`${a.label} app-log descriptor paths do not match the owning session`}}),s=Object.freeze({appLogInspect:async()=>({backend:a.backend}),appLogDoctor:async({appBundleId:r})=>await a.doctor({host:e,device:t,signal:n},r),...r.start?{appLogStart:async o=>await Oe(e,t,n,r,i,o,a)}:{},...o});return Object.freeze({device:t,owner:i,facts:F(t,r,a),operations:s,[Symbol.asyncDispose]:async()=>void 0})}function F(e,t,n){let r=t.start?P:{available:!1,reason:`owner-capability-missing`,hint:n.startUnavailableHint};return Object.freeze({device:{family:n.family,kind:e.kind,...e.target===void 0?{}:{target:e.target},providerMode:t.mode},operations:{appLogInspect:P,appLogDoctor:P,appLogStart:r,appLogReattach:P,appLogCleanup:P}})}async function Oe(t,n,r,i,a,o,s){if(!i.start)throw new e(`UNSUPPORTED_OPERATION`,s.startUnavailableHint);N(t,o);let c=t.artifacts.resolveSession(o.sessionId),l={host:t,device:n,signal:r,input:o,artifacts:c,transport:i};s.validateStart?.(l),r.throwIfAborted();let u=await s.process(l);r.throwIfAborted();let d=await Ce({host:t,backend:s.backend,outputPath:c.outputPath,pidPath:c.pidPath,processStart:i.start,setupSignal:r,resolvePid:u.resolvePid,command:u.command,cleanupFailureMessage:s.cleanupFailureMessage}),f=s.descriptor({artifacts:c,transport:i});return p(d,s.envelope({input:o,device:n,owner:a,descriptor:f}))}function I(e){for(let t of[/\bstatus(?:Code)?["'=: ]+([1-5]\d{2})\b/i,/\bresponse(?:\s+code)?["'=: ]+([1-5]\d{2})\b/i,/\bHTTP\/[0-9.]+\s+([1-5]\d{2})\b/i]){let n=t.exec(e);if(!n)continue;let r=Number.parseInt(n[1]??``,10);if(Number.isInteger(r))return r}return null}function L(e){return/\b\d{4}-\d{2}-\d{2}[ T]\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z)?\b/.exec(e)?.[0]??/\b\d{2}-\d{2} \d{2}:\d{2}:\d{2}\.\d+\b/.exec(e)?.[0]}function ke(e){let t=e.indexOf(`{`),n=e.lastIndexOf(`}`);if(t<0||n<=t)return null;try{let r=JSON.parse(e.slice(t,n+1));return r&&typeof r==`object`&&!Array.isArray(r)?r:null}catch{return null}}function R(e,t){for(let n of t){let t=e?.[n];if(typeof t==`string`&&t.trim())return t.trim()}}function Ae(e,t){for(let n of t){let t=e?.[n];if(typeof t==`number`&&Number.isInteger(t))return t;if(typeof t==`string`&&/^\d{3}$/.test(t.trim()))return Number.parseInt(t,10)}return null}function je(e,t){let n=t?.headers??t?.requestHeaders??t?.responseHeaders;return n===void 0?/\bheaders?["'=: ]+(\{.*\})/i.exec(e)?.[1]?.trim():B(n)}function z(e,t,n){for(let r of n){if(t?.[r]!==void 0)return B(t[r]);let n=r.replaceAll(/[.*+?^${}()|[\]\\]/g,String.raw`\$&`),i=RegExp(`\\b${n}["'=: ]+(.+)$`,`i`).exec(e);if(i?.[1])return i[1].trim()}}function B(e){if(typeof e==`string`)return e;try{return JSON.stringify(e)}catch{return String(e)}}function Me(e,t,n){let r=U(t,n,5),i=e.packetId??r.map(V).find(e=>typeof e==`string`&&e.length>0);i&&(e.packetId=i);let a=i?U(t,n,12).filter(e=>V(e)===i):r;e.timestamp??=a.map(L).find(e=>typeof e==`string`&&e.length>0),e.status??=a.map(I).find(e=>typeof e==`number`)??void 0,e.durationMs??=a.map(H).find(e=>typeof e==`number`)??void 0}function V(e){return/\bpacket id (\d+)\b/i.exec(e)?.[1]??null}function H(e){let t=/\b(?:duration|elapsed request\/response time, ms)[:= ]+(\d+)\b/i.exec(e);return t?Number.parseInt(t[1]??``,10):null}function U(e,t,n){return e.slice(Math.max(0,t-n),Math.min(e.length,t+n+1)).map(e=>e.trim()).filter(Boolean)}const Ne=RegExp(`\\b(${[`GET`,`POST`,`PUT`,`PATCH`,`DELETE`,`HEAD`,`OPTIONS`].join(`|`)})\\b\\s+https?:\\/\\/`,`i`),Pe=/https?:\/\/[^\s"'<>\])]+/i,Fe=/\[C(\d+)\b[^\]]*?\burl:\s*([^\s,\]]+)/,W=/\bsummary for task (?:success|failure)\s*\{([^}]*)\}/,Ie=/\bTask\s+<([0-9A-Fa-f-]+)>\.<(\d+)>/,G=/(?:^|\s)(\S+)\[(\d+):[0-9a-f]+\]/,Le=/\burl:\s*(https?:\/\/[^\s,\]]+)/i;function Re(e,t,n=e.dump.limits.maxEntries){let r=[...e.dump.entries],i=new Set(r.map(K));for(let e of t.dump.entries){let t=K(e);if(!i.has(t)&&(i.add(t),r.push(e),r.length>=n))break}let a=new Set([...e.dump.entries,...t.dump.entries].map(e=>e.packetId).filter(e=>e!==void 0)),o=[...new Set([...e.unnamedRequestIds,...t.unnamedRequestIds])].filter(e=>!a.has(e));return Object.freeze({dump:Object.freeze({...e.dump,matchedLines:r.length,entries:Object.freeze(r),unnamedRequests:o.length}),unnamedRequestIds:Object.freeze(o)})}function ze(e,t){let n=J(t.maxEntries,25,1,200),r=t.include??`summary`,i=J(t.maxPayloadChars,2048,64,16384),a=J(t.maxScanLines,4e3,100,2e4),o=Ve(t.lineNumberOffset);if(!t.exists)return Object.freeze({dump:Object.freeze({path:t.path,exists:!1,scannedLines:0,matchedLines:0,entries:Object.freeze([]),unnamedRequests:0,include:r,limits:Object.freeze({maxEntries:n,maxPayloadChars:i,maxScanLines:a})}),unnamedRequestIds:Object.freeze([])});let s=e.split(`
1
+ import{P as e}from"./sdk-contracts.js";import{N as t}from"./sdk-device.js";import{Xt as n,tn as r}from"./sdk-batch.js";import{t as i}from"./audio-probe-runtime.js";import{a,n as o,t as s}from"./durable-resource.js";import{n as c}from"./async-lifecycle.js";import{n as l,t as u}from"./audio-probe-result.js";import d from"node:fs/promises";function f(e,t){if(e.resourceKind!==t.resourceKind)return{status:`unreattachable`,reason:`descriptor-invalid`,message:`Durable resource kind ${e.resourceKind} does not match ${t.resourceKind}`};if(e.descriptor.version!==t.version)return{status:`unreattachable`,reason:`descriptor-version-unsupported`,message:`Unsupported ${t.resourceKind} descriptor version: ${e.descriptor.version}`,version:e.descriptor.version};try{let n=t.decode(e.descriptor.body);return n.status===`decoded`?n:{status:`unreattachable`,reason:`descriptor-invalid`,message:n.message}}catch(e){return{status:`unreattachable`,reason:`descriptor-invalid`,message:e instanceof Error?e.message:`Descriptor codec rejected the body`}}}function p(e,t){return Object.freeze({pendingHandle:new c(e),envelope:t})}function m(e){return Object.freeze({appLogReattach:async({envelope:t})=>{let n=f(t,e.codec);return n.status===`unreattachable`?n:await e.reattach(n.descriptor,h(t))},appLogCleanup:async({envelope:t})=>{let n=f(t,e.codec);return n.status===`decoded`?await e.cleanup(n.descriptor,h(t)):{status:`cleanup-pending`,reason:`manual-recovery-required`,message:n.message}}})}function h(e){return Object.freeze({sessionId:e.sessionId,fence:e.fence})}function g(e){if(typeof e!=`object`||!e||Array.isArray(e))return{status:`invalid`,message:`App-log process marker must be an object`};let t=e;return!Number.isInteger(t.pid)||Number(t.pid)<=0?{status:`invalid`,message:`App-log process marker pid must be a positive integer`}:typeof t.startTime!=`string`||t.startTime.trim().length===0?{status:`invalid`,message:`App-log process marker startTime must be a non-empty string`}:typeof t.command!=`string`||t.command.trim().length===0?{status:`invalid`,message:`App-log process marker command must be a non-empty string`}:{status:`decoded`,marker:Object.freeze({pid:Number(t.pid),startTime:t.startTime,command:t.command})}}function _(e){let t,n,r,i=()=>n??=e.forceCleanup();return Object.freeze({inspect:()=>e.inspect(),finish:()=>t??=e.finish(),forceCleanup:i,[Symbol.asyncDispose]:async()=>{r??=i().then(ee),await r}})}function v(e){return _({inspect:e.inspect,finish:e.finish,forceCleanup:async()=>{let t=await e.finish();return t.status===`completed`?{status:`cleaned`}:{status:`cleanup-pending`,reason:t.reason,message:t.message}}})}function ee(t){if(!s(t))throw new e(`COMMAND_FAILED`,t.message??`Durable resource cleanup could not be confirmed`,{reason:t.reason,retriable:t.reason!==`ownership-fence-lost`,hint:t.reason===`ownership-fence-lost`?`Use the current resource owner or recovery record before retrying cleanup.`:`Keep the recovery record and retry cleanup through the exact runtime owner.`})}const te=e=>b(e.backend)&&(e.source===`system-audio`||e.source===`media-elements`)&&x(e.sourceCount,0)&&re(e.notes)&&b(e.statusPath)&&x(e.startedAt,1)&&x(e.durationMs,1)&&x(e.bucketMs,1),y=Object.freeze({resourceKind:i,version:1,encode:e=>({...e,notes:[...e.notes],marker:{...e.marker}}),decode:e=>{let t=te(e)?ne(e.marker):`invalid`;if(t===`invalid`)return{status:`invalid`,message:`Audio probe descriptor body is invalid`};let n=e;return{status:`decoded`,descriptor:Object.freeze({backend:n.backend,source:n.source,sourceCount:n.sourceCount,notes:Object.freeze([...n.notes]),statusPath:n.statusPath,startedAt:n.startedAt,durationMs:n.durationMs,bucketMs:n.bucketMs,marker:t})}}});function ne(e){if(typeof e!=`object`||!e)return`invalid`;let t=e;return!x(t.pid,1)||!b(t.startTime)||!b(t.command)?`invalid`:Object.freeze({pid:t.pid,startTime:t.startTime,command:t.command})}function b(e){return typeof e==`string`&&e.length>0}function x(e,t){return typeof e==`number`&&Number.isInteger(e)&&e>=t}function re(e){return Array.isArray(e)&&e.every(e=>typeof e==`string`)}async function S(e){try{let t=await d.readFile(e.statusPath,`utf8`);return l(JSON.parse(t),{source:e.source,backend:e.backend,durationMs:e.durationMs,elapsedMs:Date.now()-e.startedAt,bucketMs:e.bucketMs,activeFallback:!0,sourceCount:e.sourceCount,notes:[...e.notes]})}catch(e){if(e.code===`ENOENT`)return;throw e}}function C(e,t,n){let r=Math.min(e.durationMs,Math.max(0,Date.now()-e.startedAt));return{...t??u({source:e.source,backend:e.backend,durationMs:e.durationMs,bucketMs:e.bucketMs,sourceCount:e.sourceCount,notes:[...e.notes]}),state:`stopped`,active:!1,elapsedMs:r,stoppedAt:new Date().toISOString(),reason:n}}function ie(e){let{host:t}=e;return Object.freeze({audioProbeReattach:async e=>{let n=f(e.envelope,y);if(n.status!==`decoded`)return n;let r=n.descriptor,i=await t.inspectProcess(r.marker);if(i===`owned-alive`)return{status:`unreattachable`,reason:`transport-not-reattachable`};if(i===`ownership-lost`)return{status:`unreattachable`,reason:`ownership-fence-lost`};let a=await S(r);return a===void 0||a.state!==`stopped`?{status:`missing`}:{status:`completed`,result:C(r,a,`daemon-recovery`)}},audioProbeCleanup:async e=>{let n=f(e.envelope,y);if(n.status!==`decoded`)return{status:`cleanup-pending`,reason:`manual-recovery-required`,message:n.message};let r=n.descriptor,i=await t.inspectProcess(r.marker);if(i===`ownership-lost`)return{status:`cleanup-pending`,reason:`ownership-fence-lost`};if(i===`missing`)return{status:`already-missing`};let a=await t.terminateProcess(r.marker);return a===`ownership-lost`?{status:`cleanup-pending`,reason:`ownership-fence-lost`}:{status:a===`terminated`?`cleaned`:`already-missing`}}})}async function ae(n){let{host:r,device:s,owner:l,input:u}=n,f=Date.now(),p=r.info,m=Object.freeze([...p.notes(s)]),h=Object.freeze({source:p.source,backend:p.backend,sourceCount:p.sourceCount,notes:m,statusPath:u.statusPath,startedAt:f,durationMs:u.durationMs,bucketMs:u.bucketMs});await d.rm(u.statusPath,{force:!0});let g=await r.start({durationMs:u.durationMs,bucketMs:u.bucketMs,statusPath:u.statusPath});g.wait.catch(()=>{});let _=g.marker;try{if(_===void 0)throw new e(`COMMAND_FAILED`,`failed to start host audio probe: the helper process exposed no exact identity, so the capture could not be recovered after daemon loss and was terminated`);await ue(h,g)}catch(e){throw await g.terminate().catch(()=>{}),e}return Object.freeze({pendingHandle:new c(oe(h,g)),envelope:o({resourceKind:i,sessionId:u.sessionId,device:t(s),owner:l,fence:u.fence,lifecycle:`open`,descriptor:a(y,{backend:p.backend,source:p.source,sourceCount:p.sourceCount,notes:m,statusPath:u.statusPath,startedAt:f,durationMs:u.durationMs,bucketMs:u.bucketMs,marker:_})})})}function oe(e,t){let n,r,i,a;t.wait.then(e=>{a={message:se(e)}},e=>{a={message:e instanceof Error?e.message:`audio probe helper wait failed`}});let o=()=>n??=(async()=>{let n=await S(e);if(n?.state!==`stopped`&&a)throw w(a);return await t.terminate().catch(()=>{}),await t.wait.catch(()=>{}),{status:`completed`,result:C(e,n,`stopped`)}})(),s=()=>r??=n?n.then(async()=>({status:`cleaned`}),async()=>await T(t)):T(t);return Object.freeze({inspect:()=>e,status:async()=>{let t=await S(e);if(t?.state===`stopped`)return t;if(a)throw w(a);return t??C(e,void 0,`not-started`)},finish:o,forceCleanup:s,[Symbol.asyncDispose]:async()=>{i??=s().then(ce),await i}})}function se(e){return e.stderr?.trim()||e.stdout?.trim()||`audio probe helper exited with code ${e.exitCode??1}`}function w(t){return new e(`COMMAND_FAILED`,`host audio probe helper exited before completing the capture: ${t.message}`,{hint:`Keep audio-probe.resource.json; stop resolves the record through descriptor cleanup.`})}async function T(e){try{return await e.terminate(),await e.wait.catch(()=>{}),{status:`cleaned`}}catch(e){return{status:`cleanup-pending`,reason:`cleanup-unconfirmed`,message:e instanceof Error?e.message:`Audio probe termination failed`}}}function ce(t){if(!s(t))throw new e(`COMMAND_FAILED`,t.message??`Audio probe cleanup could not be confirmed`,{reason:t.reason,retriable:t.reason!==`ownership-fence-lost`,hint:`Keep audio-probe.resource.json and retry stop through its exact runtime owner.`})}function le(e){let{host:t,device:n,owner:r}=e,i=ie({host:t});return Object.freeze({audioProbeStart:async e=>await ae({host:t,device:n,owner:r,input:e}),audioProbeReattach:i.audioProbeReattach,audioProbeCleanup:i.audioProbeCleanup})}async function ue(t,n){let r=Date.now()+5e3;for(;Date.now()<r;){if(await S(t))return;let r=await Promise.race([n.wait.then(e=>e,e=>e),de(100).then(()=>void 0)]);if(r instanceof Error)throw r;if(r){let t=r,n=t.stderr?.trim()||t.stdout?.trim()||`host audio probe helper exited with code ${t.exitCode??1}`;throw new e(`COMMAND_FAILED`,`failed to start host audio probe: ${n}`)}}throw new e(`COMMAND_FAILED`,`failed to start host audio probe`)}function de(e){return new Promise(t=>setTimeout(t,e))}async function E(e,t){let n=await O(e,t);if(n.status===`missing`)return{status:`missing`};if(n.status===`invalid`)return{status:`unreattachable`,reason:`ownership-fence-lost`,message:n.message};let r=await e.processes.inspect(n.marker);return r===`missing`?(t&&await e.processes.clearMarker(t),{status:`missing`}):r===`ownership-lost`?{status:`unreattachable`,reason:`ownership-fence-lost`}:{status:`unreattachable`,reason:`transport-not-reattachable`}}async function D(e,t){if(!t)return{status:`cleanup-pending`,reason:`manual-recovery-required`,message:`App-log process marker path is missing`};let n=await O(e,t);if(n.status===`missing`)return{status:`already-missing`};if(n.status===`invalid`)return{status:`cleanup-pending`,reason:`manual-recovery-required`,message:n.message};let r=await e.processes.inspect(n.marker);if(r===`ownership-lost`)return k();if(r===`missing`)return await e.processes.clearMarker(t),{status:`already-missing`};let i=await e.processes.terminate(n.marker);return i===`ownership-lost`?k():(await e.processes.clearMarker(t),{status:i===`terminated`?`cleaned`:`already-missing`})}async function O(e,t){return t?await e.processes.readMarker(t):{status:`invalid`,message:`App-log process marker path is missing`}}function k(){return{status:`cleanup-pending`,reason:`ownership-fence-lost`}}async function fe(e){let t=e.initialProcess;for(;!e.stopped();){if(t){await pe(e,t),t=void 0,await be(e);continue}let n=await xe(e);if(n.status===`stopped`)return;n.status!==`waiting`&&(t=n.process)}}async function pe(e,t){let{process:n}=t;e.setActive(n);try{e.setState(`active`),await me(e,t)}finally{await A(e,n)}}async function me(e,t){let n=he(t.process);try{await ge(e,t,n),await ve(e,t.process,n),await ye(n.outcome)}finally{n.controller.abort()}}function he(e){let t=new AbortController,n=!1,r=()=>{n=!0,t.abort()};return{controller:t,outcome:e.wait.then(()=>(r(),{status:`exited`}),e=>(r(),{status:`failed`,error:e})),settled:()=>n}}async function ge(e,t,n){for(;!e.stopped()&&!n.settled();){if(!await _e(e,n))return;let r=await e.resolvePid();if(e.stopped())return;if(r!==t.pid){await t.process.terminate();return}}}async function _e(e,t){try{await e.sleep(500,t.controller.signal)}catch(e){if(!t.settled())throw e}return!t.settled()}async function ve(e,t,n){e.stopped()&&!n.settled()&&await t.terminate()}async function ye(e){let t=await e;if(t.status===`failed`)throw t.error}async function be(e){e.stopped()||(e.setState(`recovering`),await e.sleep(500))}async function xe(e){let t=await e.resolvePid();if(e.stopped())return{status:`stopped`};if(!t)return e.setState(`recovering`),await e.sleep(1e3),{status:`waiting`};let n=await e.startProcess(t);return e.setActive(n),e.stopped()?(await Se(e,n),{status:`stopped`}):{status:`started`,process:{pid:t,process:n}}}async function Se(e,t){try{await t.terminate(),await t.wait}finally{await A(e,t)}}async function A(e,t){try{await t[Symbol.asyncDispose]()}finally{e.setActive(void 0)}}async function Ce(e){let t=await e.resolvePid(e.setupSignal);e.setupSignal.throwIfAborted();let n=await e.host.outputs.openAppend(e.outputPath),r=`recovering`,i=!1,a;try{if(e.setupSignal.throwIfAborted(),t){e.setupSignal.throwIfAborted();let i=new AbortController,o=()=>i.abort(e.setupSignal.reason);e.setupSignal.addEventListener(`abort`,o,{once:!0});try{a=await e.processStart({command:e.command(t),output:n,markerPath:e.pidPath},i.signal)}finally{e.setupSignal.removeEventListener(`abort`,o)}e.setupSignal.throwIfAborted(),r=`active`}}catch(e){throw await j([async()=>await a?.terminate(),async()=>{await a?.wait},async()=>await a?.[Symbol.asyncDispose](),async()=>await n[Symbol.asyncDispose]()]),e}let o=fe({initialProcess:a&&t?{pid:t,process:a}:void 0,stopped:()=>i,setActive:e=>{a=e},setState:e=>{r=e},resolvePid:async()=>await e.resolvePid(),startProcess:async t=>await e.processStart({command:e.command(t),output:n,markerPath:e.pidPath}),sleep:async(t,n)=>await e.host.clock.sleep(t,n)}).catch(()=>{r=`failed`}),s,c=async()=>s??=we({options:e,monitor:o,active:()=>a,stop:()=>{i=!0},setState:e=>{r=e},output:n}),l=e.host.clock.now();return v({inspect:()=>({backend:e.backend,state:r,startedAt:l}),finish:c})}async function we(e){return e.stop(),(await j([async()=>await e.active()?.terminate(),async()=>await e.monitor,async()=>await e.output[Symbol.asyncDispose]()])).length>0?(e.setState(`failed`),{status:`cleanup-pending`,reason:`transport-failed`,message:e.options.cleanupFailureMessage}):(e.setState(`ended`),{status:`completed`,result:{backend:e.options.backend,outputPath:e.options.outputPath,completedAt:e.options.host.clock.now()}})}async function j(e){let t=[];for(let n of e)try{await n()}catch(e){t.push(e)}return t}function M(e,t,n){let r=e.artifacts.resolveSession(t);return n.outputPath===r.outputPath&&(n.pidPath===void 0||n.pidPath===r.pidPath)}function N(t,n){if(!M(t,n.sessionId,n))throw new e(`INVALID_ARGS`,`App-log paths do not match the owning session`)}const P=Object.freeze({available:!0});async function Te(e,t,n){let r=(await e.commands.run(t,n)).stdout.trim().split(/\s+/)[0]??``;return/^\d+$/.test(r)?r:``}function Ee(t,i){let a=n(i.family);return Object.freeze({owner:a,ownsDevice:e=>e.platform===i.family,inspectFacts:async e=>F(e,await t.processTransports.resolve(e),i),bind:async n=>{if(n.intent.kind===`exact-owner`&&!r(n.intent.owner,a))throw new e(`UNSUPPORTED_OPERATION`,`${i.label} app-log owner identity does not match`);if(n.device.platform!==i.family)throw new e(`UNSUPPORTED_PLATFORM`,`${i.label} app-log owner cannot bind ${n.device.platform}`);let o=await t.processTransports.resolve(n.device);return De(t,n.device,n.scope.signal,o,a,i)},shutdown:async()=>void 0})}function De(e,t,n,r,i,a){let o=m({codec:a.codec,reattach:async(t,n)=>M(e,n.sessionId,t)?await E(e,t.pidPath):{status:`unreattachable`,reason:`descriptor-invalid`,message:`${a.label} app-log descriptor paths do not match the owning session`},cleanup:async(t,n)=>M(e,n.sessionId,t)?await D(e,t.pidPath):{status:`cleanup-pending`,reason:`ownership-fence-lost`,message:`${a.label} app-log descriptor paths do not match the owning session`}}),s=Object.freeze({appLogInspect:async()=>({backend:a.backend}),appLogDoctor:async({appBundleId:r})=>await a.doctor({host:e,device:t,signal:n},r),...r.start?{appLogStart:async o=>await Oe(e,t,n,r,i,o,a)}:{},...o});return Object.freeze({device:t,owner:i,facts:F(t,r,a),operations:s,[Symbol.asyncDispose]:async()=>void 0})}function F(e,t,n){let r=t.start?P:{available:!1,reason:`owner-capability-missing`,hint:n.startUnavailableHint};return Object.freeze({device:{family:n.family,kind:e.kind,...e.target===void 0?{}:{target:e.target},providerMode:t.mode},operations:{appLogInspect:P,appLogDoctor:P,appLogStart:r,appLogReattach:P,appLogCleanup:P}})}async function Oe(t,n,r,i,a,o,s){if(!i.start)throw new e(`UNSUPPORTED_OPERATION`,s.startUnavailableHint);N(t,o);let c=t.artifacts.resolveSession(o.sessionId),l={host:t,device:n,signal:r,input:o,artifacts:c,transport:i};s.validateStart?.(l),r.throwIfAborted();let u=await s.process(l);r.throwIfAborted();let d=await Ce({host:t,backend:s.backend,outputPath:c.outputPath,pidPath:c.pidPath,processStart:i.start,setupSignal:r,resolvePid:u.resolvePid,command:u.command,cleanupFailureMessage:s.cleanupFailureMessage}),f=s.descriptor({artifacts:c,transport:i});return p(d,s.envelope({input:o,device:n,owner:a,descriptor:f}))}function I(e){for(let t of[/\bstatus(?:Code)?["'=: ]+([1-5]\d{2})\b/i,/\bresponse(?:\s+code)?["'=: ]+([1-5]\d{2})\b/i,/\bHTTP\/[0-9.]+\s+([1-5]\d{2})\b/i]){let n=t.exec(e);if(!n)continue;let r=Number.parseInt(n[1]??``,10);if(Number.isInteger(r))return r}return null}function L(e){return/\b\d{4}-\d{2}-\d{2}[ T]\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z)?\b/.exec(e)?.[0]??/\b\d{2}-\d{2} \d{2}:\d{2}:\d{2}\.\d+\b/.exec(e)?.[0]}function ke(e){let t=e.indexOf(`{`),n=e.lastIndexOf(`}`);if(t<0||n<=t)return null;try{let r=JSON.parse(e.slice(t,n+1));return r&&typeof r==`object`&&!Array.isArray(r)?r:null}catch{return null}}function R(e,t){for(let n of t){let t=e?.[n];if(typeof t==`string`&&t.trim())return t.trim()}}function Ae(e,t){for(let n of t){let t=e?.[n];if(typeof t==`number`&&Number.isInteger(t))return t;if(typeof t==`string`&&/^\d{3}$/.test(t.trim()))return Number.parseInt(t,10)}return null}function je(e,t){let n=t?.headers??t?.requestHeaders??t?.responseHeaders;return n===void 0?/\bheaders?["'=: ]+(\{.*\})/i.exec(e)?.[1]?.trim():B(n)}function z(e,t,n){for(let r of n){if(t?.[r]!==void 0)return B(t[r]);let n=r.replaceAll(/[.*+?^${}()|[\]\\]/g,String.raw`\$&`),i=RegExp(`\\b${n}["'=: ]+(.+)$`,`i`).exec(e);if(i?.[1])return i[1].trim()}}function B(e){if(typeof e==`string`)return e;try{return JSON.stringify(e)}catch{return String(e)}}function Me(e,t,n){let r=U(t,n,5),i=e.packetId??r.map(V).find(e=>typeof e==`string`&&e.length>0);i&&(e.packetId=i);let a=i?U(t,n,12).filter(e=>V(e)===i):r;e.timestamp??=a.map(L).find(e=>typeof e==`string`&&e.length>0),e.status??=a.map(I).find(e=>typeof e==`number`)??void 0,e.durationMs??=a.map(H).find(e=>typeof e==`number`)??void 0}function V(e){return/\bpacket id (\d+)\b/i.exec(e)?.[1]??null}function H(e){let t=/\b(?:duration|elapsed request\/response time, ms)[:= ]+(\d+)\b/i.exec(e);return t?Number.parseInt(t[1]??``,10):null}function U(e,t,n){return e.slice(Math.max(0,t-n),Math.min(e.length,t+n+1)).map(e=>e.trim()).filter(Boolean)}const Ne=RegExp(`\\b(${[`GET`,`POST`,`PUT`,`PATCH`,`DELETE`,`HEAD`,`OPTIONS`].join(`|`)})\\b\\s+https?:\\/\\/`,`i`),Pe=/https?:\/\/[^\s"'<>\])]+/i,Fe=/\[C(\d+)\b[^\]]*?\burl:\s*([^\s,\]]+)/,W=/\bsummary for task (?:success|failure)\s*\{([^}]*)\}/,Ie=/\bTask\s+<([0-9A-Fa-f-]+)>\.<(\d+)>/,G=/(?:^|\s)(\S+)\[(\d+):[0-9a-f]+\]/,Le=/\burl:\s*(https?:\/\/[^\s,\]]+)/i;function Re(e,t,n=e.dump.limits.maxEntries){let r=[...e.dump.entries],i=new Set(r.map(K));for(let e of t.dump.entries){let t=K(e);if(!i.has(t)&&(i.add(t),r.push(e),r.length>=n))break}let a=new Set([...e.dump.entries,...t.dump.entries].map(e=>e.packetId).filter(e=>e!==void 0)),o=[...new Set([...e.unnamedRequestIds,...t.unnamedRequestIds])].filter(e=>!a.has(e));return Object.freeze({dump:Object.freeze({...e.dump,matchedLines:r.length,entries:Object.freeze(r),unnamedRequests:o.length}),unnamedRequestIds:Object.freeze(o)})}function ze(e,t){let n=J(t.maxEntries,25,1,200),r=t.include??`summary`,i=J(t.maxPayloadChars,2048,64,16384),a=J(t.maxScanLines,4e3,100,2e4),o=Ve(t.lineNumberOffset);if(!t.exists)return Object.freeze({dump:Object.freeze({path:t.path,exists:!1,scannedLines:0,matchedLines:0,entries:Object.freeze([]),unnamedRequests:0,include:r,limits:Object.freeze({maxEntries:n,maxPayloadChars:i,maxScanLines:a})}),unnamedRequestIds:Object.freeze([])});let s=e.split(`
2
2
  `),c=Math.max(0,s.length-a),l=s.slice(c),u=[],d=Be(t.backend)?Qe(l):void 0,f=d?et(l,d):[];for(let e=l.length-1;e>=0&&u.length<n;--e){if(!l[e]?.trim())continue;let n=He(l,e,o+c+e+1,t.backend,r,i,d);n&&u.push(n)}return Object.freeze({dump:Object.freeze({path:t.path,exists:!0,scannedLines:l.length,matchedLines:u.length,entries:Object.freeze(u),unnamedRequests:f.length,include:r,limits:Object.freeze({maxEntries:n,maxPayloadChars:i,maxScanLines:a})}),unnamedRequestIds:Object.freeze(f)})}function Be(e){return e===`ios-simulator`||e===`ios-device`||e===`macos`}function Ve(e){if(e===void 0)return 0;if(!Number.isInteger(e)||e<0)throw TypeError(`Network line number offset must be a non-negative integer`);return e}function He(e,t,n,r,i,a,o){let s=e[t]?.trim();if(!s)return null;let c=ke(s),l=Ue(s,c)??(o?$e(s,o,t):null);if(!l)return null;let u=Je(s,n,l,a);return r===`android`&&Me(u,e,t),Ye(u,s,c,i,a),u}function Ue(e,t){let n=We(e,t),r=Ge(e,t);if(!r)return null;let i=Ke(e,t);return qe(e,n.explicit,i)?{method:n.value,url:r,status:i}:null}function We(e,t){let n=R(t,[`method`,`httpMethod`]),r=/\bmethod["'=: ]+([A-Z]+)\b/i.exec(e)?.[1],i=Ne.exec(e)?.[1],a=n??r??i;return{value:a?.toUpperCase(),explicit:!!a}}function Ge(e,t){return R(t,[`url`,`requestUrl`])||(Le.exec(e)?.[1]??Pe.exec(e)?.[0])}function Ke(e,t){return Ae(t,[`status`,`statusCode`,`responseCode`])??I(e)??void 0}function qe(e,t,n){return t||n!==void 0||/\bURL["'=: ]+https?:\/\//i.test(e)||/\bheaders?["'=: ]+/i.test(e)||/\b(?:requestBody|responseBody|payload|request|response)["'=: ]+/i.test(e)}function Je(e,t,n,r){return{...n,timestamp:L(e),packetId:n.packetId??V(e)??void 0,durationMs:n.durationMs??H(e)??void 0,raw:q(e,r),line:t}}function Ye(e,t,n,r,i){if(Xe(r)){let r=je(t,n);r&&(e.headers=q(r,i))}if(Ze(r)){let r=z(t,n,[`requestBody`,`body`,`payload`,`request`]),a=z(t,n,[`responseBody`,`response`]);r&&(e.requestBody=q(r,i)),a&&(e.responseBody=q(a,i))}}function Xe(e){return e===`headers`||e===`all`}function Ze(e){return e===`body`||e===`all`}function K(e){return`${e.timestamp??``}|${e.method??``}|${e.url}|${e.status??``}|${e.raw}`}function q(e,t){return e.length<=t?e:`${e.slice(0,t)}...<truncated>`}function J(e,t,n,r){return e===void 0||!Number.isInteger(e)?t:Math.max(n,Math.min(r,e))}function Qe(e){let t=new Map;for(let[n,r]of e.entries()){let e=Fe.exec(r);if(!e)continue;let i=Y(r,e[1]),a=i===void 0?void 0:nt(e[2]);if(!a||i===void 0)continue;let o=t.get(i);o?o.push({lineIndex:n,origin:a}):t.set(i,[{lineIndex:n,origin:a}])}return t}function Y(e,t){let n=G.exec(e);if(n)return`${n[1]}[${n[2]}]#${t}`}function $e(e,t,n){let r=W.exec(e);if(!r)return null;let i=Q(r[1]);if(i.get(`reused`)!==`1`)return null;let a=i.get(`connection`),o=a===void 0?void 0:Y(e,a),s=o===void 0?void 0:Z(t,o,n);return s?{url:s,status:rt(i.get(`response_status`)),durationMs:$(i.get(`transaction_duration_ms`)),pathUnavailable:!0,packetId:X(e)}:null}function et(e,t){let n=new Set;for(let[r,i]of e.entries()){let e=tt(i,t,r);e!==void 0&&n.add(e)}return[...n]}function tt(e,t,n){if(!e.includes(`summary for task`))return;let r=W.exec(e);if(!r)return;let i=Q(r[1]);if(i.get(`reused`)!==`1`)return;let a=i.get(`connection`),o=a===void 0?void 0:Y(e,a);if(!(o!==void 0&&Z(t,o,n)))return X(e)}function X(e){let t=Ie.exec(e);if(!t)return;let n=G.exec(e);return`${n?`${n[1]}[${n[2]}]`:``}#${t[1]}.${t[2]}`}function Z(e,t,n){let r=e.get(t);if(!r)return;let i;for(let e of r){if(e.lineIndex>n)break;i=e.origin}return i}function Q(e){let t=new Map;for(let n of e.split(`,`)){let e=n.indexOf(`=`);e!==-1&&t.set(n.slice(0,e).trim(),n.slice(e+1).trim())}return t}function nt(e){try{return new URL(e).origin}catch{return}}function rt(e){let t=$(e);return t!==void 0&&t>0?t:void 0}function $(e){if(e===void 0)return;let t=Number(e);return Number.isFinite(t)?t:void 0}export{M as a,E as c,m as d,p as f,Te as i,le as l,f as m,ze as n,N as o,g as p,Ee as r,D as s,Re as t,v as u};