peachsim 0.1.1644 → 0.1.1653

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 (608) hide show
  1. package/README.md +12 -0
  2. package/cli/app-catalog.ts +1 -1
  3. package/cli/app-fonts.ts +11 -80
  4. package/cli/app-splash.ts +18 -12
  5. package/cli/bridge-flow-runner.ts +11 -7
  6. package/cli/cloud-client.ts +10 -13
  7. package/cli/command-registry.ts +13 -4
  8. package/cli/commands/box.ts +4 -4
  9. package/cli/commands/control.ts +93 -53
  10. package/cli/commands/coverage-parser.ts +67 -0
  11. package/cli/commands/coverage.ts +550 -0
  12. package/cli/commands/debug.ts +9 -18
  13. package/cli/commands/desktop.ts +19 -7
  14. package/cli/commands/device.ts +14 -9
  15. package/cli/commands/guest-host.ts +6 -10
  16. package/cli/commands/inspect/core.ts +81 -17
  17. package/cli/commands/inspect.ts +13 -8
  18. package/cli/commands/kotlin.ts +2 -2
  19. package/cli/commands/maestro-compare.ts +1 -1
  20. package/cli/commands/platform.ts +20 -11
  21. package/cli/commands/preview.ts +16 -18
  22. package/cli/commands/runtime.ts +3 -2
  23. package/cli/commands/screenshot-layers.ts +1 -1
  24. package/cli/commands/screenshot.ts +1 -1
  25. package/cli/commands/serve.ts +5 -1
  26. package/cli/commands/support.ts +4 -4
  27. package/cli/commands/three-mode.ts +22 -15
  28. package/cli/commands/upload.ts +44 -45
  29. package/cli/current-sim.ts +38 -0
  30. package/cli/desktop-companion.ts +36 -8
  31. package/cli/device-option.ts +1 -1
  32. package/cli/drivers/playwright.ts +1 -0
  33. package/cli/drivers/types.ts +4 -0
  34. package/cli/help-core.ts +1 -1
  35. package/cli/internal-child.ts +2 -1
  36. package/cli/main.ts +9 -3
  37. package/cli/outbound-endpoints.ts +11 -3
  38. package/cli/output-redaction.ts +39 -14
  39. package/cli/remote-simulators.ts +4 -1
  40. package/cli/scene-video.ts +5 -2
  41. package/cli/send-to-box.ts +7 -10
  42. package/cli/telemetry.ts +1 -1
  43. package/cli/ws-bridge.ts +8 -1
  44. package/detox/attempt-events.cjs +3 -1
  45. package/detox/attempt-events.d.cts +1 -1
  46. package/detox/expectations.ts +108 -99
  47. package/detox/frame-offset.d.mts +6 -0
  48. package/detox/frame-offset.mjs +35 -0
  49. package/detox/gestures.ts +6 -18
  50. package/detox/index.ts +169 -101
  51. package/detox/jest-preset.cjs +1 -3
  52. package/detox/jest-transform.cjs +4 -0
  53. package/detox/matchers.ts +3 -0
  54. package/detox/motion-change.cjs +46 -114
  55. package/detox/motion-change.d.cts +5 -27
  56. package/dist-lib/agent-daemon-client.cjs +1 -1
  57. package/dist-lib/agent-events.cjs +1 -1
  58. package/dist-lib/attached-projects.cjs +1 -1
  59. package/dist-lib/auth/shared-session.cjs +1 -1
  60. package/dist-lib/backend-origin.cjs +1 -1
  61. package/dist-lib/beta.cjs +1 -1
  62. package/dist-lib/beta.mjs +1 -1
  63. package/dist-lib/bridge-constants.cjs +1 -1
  64. package/dist-lib/bridge-contract-input.cjs +65 -1
  65. package/dist-lib/bridge-contract-input.mjs +63 -1
  66. package/dist-lib/bridge-contract.cjs +19 -1
  67. package/dist-lib/bridge-contract.mjs +17 -1
  68. package/dist-lib/bundle-channel.cjs +38091 -14846
  69. package/dist-lib/capture-contract.cjs +1 -1
  70. package/dist-lib/capture-contract.mjs +1 -1
  71. package/dist-lib/cloud-contract.cjs +1 -1
  72. package/dist-lib/cloud-contract.mjs +1 -1
  73. package/dist-lib/cloud-test-args.cjs +1 -1
  74. package/dist-lib/cloud-test-args.mjs +1 -1
  75. package/dist-lib/cloud.cjs +1 -1
  76. package/dist-lib/cloud.mjs +1 -1
  77. package/dist-lib/config.cjs +1 -1
  78. package/dist-lib/config.mjs +5 -3
  79. package/dist-lib/detox/index.cjs +1244 -4509
  80. package/dist-lib/detox/jest-preset.cjs +1 -3
  81. package/dist-lib/detox/jest-transform.cjs +4 -0
  82. package/dist-lib/dev-bundle-resolution.cjs +28 -24
  83. package/dist-lib/expo-swift-bundle.cjs +35049 -13125
  84. package/dist-lib/expo-swift-metadata.cjs +1 -1
  85. package/dist-lib/expo-swift-metadata.mjs +1 -1
  86. package/dist-lib/home-paths.cjs +1 -1
  87. package/dist-lib/host/bridge-host.cjs +45112 -63143
  88. package/dist-lib/host/fetch-proxy-handler.cjs +3544 -11
  89. package/dist-lib/host/fetch-proxy-overrides.cjs +1 -1
  90. package/dist-lib/host/fetch-proxy-overrides.mjs +1 -1
  91. package/dist-lib/host/replacement-module-handler.cjs +1 -1
  92. package/dist-lib/host/websocket-proxy.cjs +1 -1
  93. package/dist-lib/index.cjs +1909 -2029
  94. package/dist-lib/jump-to-source-babel.cjs +1 -1
  95. package/dist-lib/jump-to-source-native.cjs +1 -1
  96. package/dist-lib/kotlin-host.cjs +2 -2
  97. package/dist-lib/menu.cjs +1 -1
  98. package/dist-lib/menu.mjs +1 -1
  99. package/dist-lib/metro-fingerprint-registry.cjs +1 -1
  100. package/dist-lib/metro-fingerprint-registry.mjs +1 -1
  101. package/dist-lib/metro-production-bundle.cjs +1 -1
  102. package/dist-lib/metro-production-bundle.mjs +1 -1
  103. package/dist-lib/metro.cjs +380 -522
  104. package/dist-lib/native-app-identity-project.cjs +39 -252
  105. package/dist-lib/native-app-identity-project.mjs +1174 -11
  106. package/dist-lib/native-app-identity.cjs +8 -3
  107. package/dist-lib/native-app-identity.mjs +8 -3
  108. package/dist-lib/native-firebase-metadata.cjs +1 -1
  109. package/dist-lib/native-firebase-metadata.mjs +1 -1
  110. package/dist-lib/plist.cjs +2 -244
  111. package/dist-lib/plist.mjs +1 -1
  112. package/dist-lib/profiles.cjs +1 -1
  113. package/dist-lib/public-brand.cjs +1 -1
  114. package/dist-lib/public-origins-lib-esm.json +290 -0
  115. package/dist-lib/public-origins-lib-static.json +1 -0
  116. package/dist-lib/public-origins-lib.json +1852 -0
  117. package/dist-lib/react-native-host-modules.cjs +1 -1
  118. package/dist-lib/react-native-host-modules.mjs +1 -1
  119. package/dist-lib/scripts/dev-server-scanner.cjs +14 -253
  120. package/dist-lib/sdk.cjs +83 -16
  121. package/dist-lib/sdk.mjs +81 -15
  122. package/dist-lib/skills.cjs +50546 -75098
  123. package/dist-lib/swift-compile.cjs +25897 -1070
  124. package/dist-lib/swift-compile.mjs +25866 -1033
  125. package/dist-lib/swift-package.cjs +79 -1
  126. package/dist-lib/swift-package.mjs +75 -1
  127. package/dist-lib/swift-submit.cjs +1 -1
  128. package/dist-lib/swift-submit.mjs +1 -1
  129. package/dist-lib/swift-toolchain.cjs +1 -1
  130. package/dist-lib/swift.cjs +1 -1
  131. package/dist-lib/vite-swift.cjs +34273 -12349
  132. package/dist-lib/vite.cjs +373 -298
  133. package/dist-lib/worklet-executable.cjs +1 -1
  134. package/dist-lib/worklet-executable.mjs +1 -1
  135. package/dist-types/packages/peach-compat/src/engine-config.d.ts +2 -0
  136. package/dist-types/packages/peach-compat/src/stubs/form-sheet-spring.d.ts +9 -0
  137. package/dist-types/packages/peach-compat/src/stubs/native-evaluation-lease.d.ts +47 -0
  138. package/dist-types/packages/peach-compat/src/stubs/native-seams/react-native-cookies.d.ts +113 -0
  139. package/dist-types/packages/peach-compat/src/stubs/native-seams/react-native-gesture-handler.d.ts +154 -0
  140. package/dist-types/packages/peach-compat/src/stubs/screen-transition-math.d.ts +756 -0
  141. package/dist-types/packages/peach-compat/src/stubs/transition-scalar.d.ts +25 -0
  142. package/dist-types/packages/peach-engine/src/billing/plans.d.ts +64 -0
  143. package/dist-types/packages/peach-engine/src/browser-page-target.d.ts +2 -0
  144. package/dist-types/packages/peach-engine/src/bundle-platform-url.d.ts +3 -0
  145. package/dist-types/packages/peach-engine/src/capture/browser-accessibility-host.d.ts +3 -0
  146. package/dist-types/packages/peach-engine/src/capture/browser-composite.d.ts +55 -0
  147. package/dist-types/packages/peach-engine/src/capture/browserAccessibilityContract.d.ts +27 -0
  148. package/dist-types/packages/peach-engine/src/capture/nativeScreenCaptureContract.d.ts +22 -0
  149. package/dist-types/packages/peach-engine/src/cli-companion.d.ts +36 -0
  150. package/dist-types/packages/peach-engine/src/components/native-ui/webview-frame-bridge.d.ts +34 -0
  151. package/dist-types/packages/peach-engine/src/config.d.ts +5 -0
  152. package/dist-types/packages/peach-engine/src/engine/android-stretch-effect.d.ts +57 -0
  153. package/dist-types/packages/peach-engine/src/engine/animated-driven-style.d.ts +47 -0
  154. package/dist-types/packages/peach-engine/src/engine/animated-value.d.ts +5 -0
  155. package/dist-types/packages/peach-engine/src/engine/animated.d.ts +195 -0
  156. package/dist-types/packages/peach-engine/src/engine/animation-clockContract.d.ts +15 -0
  157. package/dist-types/packages/peach-engine/src/engine/animation-graph.d.ts +148 -0
  158. package/dist-types/packages/peach-engine/src/engine/app-catalog-wire.d.ts +10 -0
  159. package/dist-types/packages/peach-engine/src/engine/app-font-registry.d.ts +87 -0
  160. package/dist-types/packages/peach-engine/src/engine/attributed-paragraph-paint.d.ts +7 -0
  161. package/dist-types/packages/peach-engine/src/engine/attributed-paragraph.d.ts +123 -0
  162. package/dist-types/packages/peach-engine/src/engine/audioContract.d.ts +16 -0
  163. package/dist-types/packages/peach-engine/src/engine/canvaskit-api.d.ts +93 -0
  164. package/dist-types/packages/peach-engine/src/engine/canvaskit-renderer.d.ts +216 -0
  165. package/dist-types/packages/peach-engine/src/engine/config-plugin-fonts.d.ts +40 -0
  166. package/dist-types/packages/peach-engine/src/engine/config-plugin-splash.d.ts +25 -0
  167. package/dist-types/packages/peach-engine/src/engine/cull-visibility.d.ts +44 -0
  168. package/dist-types/packages/peach-engine/src/engine/damage-rect.d.ts +19 -0
  169. package/dist-types/packages/peach-engine/src/engine/engine-resource.d.ts +6 -0
  170. package/dist-types/packages/peach-engine/src/engine/expo-manifest.d.ts +5 -0
  171. package/dist-types/packages/peach-engine/src/engine/fiber-debug-metadata.d.ts +30 -0
  172. package/dist-types/packages/peach-engine/src/engine/font-config.d.ts +139 -0
  173. package/dist-types/packages/peach-engine/src/engine/generated/sf-pro-font.d.ts +1 -0
  174. package/dist-types/packages/peach-engine/src/engine/glass-material.d.ts +31 -0
  175. package/dist-types/packages/peach-engine/src/engine/host-composite.d.ts +100 -0
  176. package/dist-types/packages/peach-engine/src/engine/hosted-semantics.d.ts +49 -0
  177. package/dist-types/packages/peach-engine/src/engine/image-audit.d.ts +70 -0
  178. package/dist-types/packages/peach-engine/src/engine/image-loader.d.ts +350 -0
  179. package/dist-types/packages/peach-engine/src/engine/inspect-info.d.ts +27 -0
  180. package/dist-types/packages/peach-engine/src/engine/inspect-outline.d.ts +14 -0
  181. package/dist-types/packages/peach-engine/src/engine/inspect-visibility.d.ts +33 -0
  182. package/dist-types/packages/peach-engine/src/engine/ios-fast-scroll.d.ts +16 -0
  183. package/dist-types/packages/peach-engine/src/engine/layout-sab.d.ts +43 -0
  184. package/dist-types/packages/peach-engine/src/engine/liquid-glass-rect.d.ts +23 -0
  185. package/dist-types/packages/peach-engine/src/engine/liquid-glass-shaders.d.ts +9 -0
  186. package/dist-types/packages/peach-engine/src/engine/liquid-glass.d.ts +283 -0
  187. package/dist-types/packages/peach-engine/src/engine/live-object-counts.d.ts +6 -0
  188. package/dist-types/packages/peach-engine/src/engine/lottie-runtime.d.ts +32 -0
  189. package/dist-types/packages/peach-engine/src/engine/lottie-types.d.ts +138 -0
  190. package/dist-types/packages/peach-engine/src/engine/memory-counts.d.ts +27 -0
  191. package/dist-types/packages/peach-engine/src/engine/metalDirectContract.d.ts +108 -0
  192. package/dist-types/packages/peach-engine/src/engine/metalShaderContract.d.ts +217 -0
  193. package/dist-types/packages/peach-engine/src/engine/native-animation-driver.d.ts +112 -0
  194. package/dist-types/packages/peach-engine/src/engine/native-animation-graph.d.ts +62 -0
  195. package/dist-types/packages/peach-engine/src/engine/native-layout.d.ts +133 -0
  196. package/dist-types/packages/peach-engine/src/engine/native-resources.d.ts +26 -0
  197. package/dist-types/packages/peach-engine/src/engine/nativeReanimatedContract.d.ts +25 -0
  198. package/dist-types/packages/peach-engine/src/engine/nativeReplayContract.d.ts +64 -0
  199. package/dist-types/packages/peach-engine/src/engine/node.d.ts +589 -0
  200. package/dist-types/packages/peach-engine/src/engine/paint-boundary-types.d.ts +112 -0
  201. package/dist-types/packages/peach-engine/src/engine/paint-boundary.d.ts +57 -0
  202. package/dist-types/packages/peach-engine/src/engine/portalContract.d.ts +21 -0
  203. package/dist-types/packages/peach-engine/src/engine/portals.d.ts +20 -0
  204. package/dist-types/packages/peach-engine/src/engine/render-damage.d.ts +107 -0
  205. package/dist-types/packages/peach-engine/src/engine/riveContract.d.ts +420 -0
  206. package/dist-types/packages/peach-engine/src/engine/rn-spring.d.ts +51 -0
  207. package/dist-types/packages/peach-engine/src/engine/scene-table.d.ts +379 -0
  208. package/dist-types/packages/peach-engine/src/engine/scroll-momentum-math.d.ts +152 -0
  209. package/dist-types/packages/peach-engine/src/engine/scroll-pan-contacts.d.ts +10 -0
  210. package/dist-types/packages/peach-engine/src/engine/scroll-platform.d.ts +75 -0
  211. package/dist-types/packages/peach-engine/src/engine/scroll-range.d.ts +14 -0
  212. package/dist-types/packages/peach-engine/src/engine/scroll-velocity.d.ts +14 -0
  213. package/dist-types/packages/peach-engine/src/engine/scroll.d.ts +320 -0
  214. package/dist-types/packages/peach-engine/src/engine/signal.d.ts +7 -0
  215. package/dist-types/packages/peach-engine/src/engine/snapshot-cache-policy.d.ts +6 -0
  216. package/dist-types/packages/peach-engine/src/engine/svg-geometry.d.ts +41 -0
  217. package/dist-types/packages/peach-engine/src/engine/text-attachment-paragraphs.d.ts +10 -0
  218. package/dist-types/packages/peach-engine/src/engine/text-decoration.d.ts +11 -0
  219. package/dist-types/packages/peach-engine/src/engine/text-line-break.d.ts +22 -0
  220. package/dist-types/packages/peach-engine/src/engine/text-paint-receipt.d.ts +98 -0
  221. package/dist-types/packages/peach-engine/src/engine/text-paragraph.d.ts +11 -0
  222. package/dist-types/packages/peach-engine/src/engine/text-paragraphContract.d.ts +34 -0
  223. package/dist-types/packages/peach-engine/src/engine/text-transform.d.ts +1 -0
  224. package/dist-types/packages/peach-engine/src/engine/types.d.ts +657 -0
  225. package/dist-types/packages/peach-engine/src/engine/visible-frame.d.ts +54 -0
  226. package/dist-types/packages/peach-engine/src/engine/webrtcContract.d.ts +74 -0
  227. package/dist-types/packages/peach-engine/src/graphite-stats-fields.d.ts +184 -0
  228. package/dist-types/packages/peach-engine/src/guest-import-meta.d.ts +12 -0
  229. package/dist-types/packages/peach-engine/src/guest-module-overrides.d.ts +7 -0
  230. package/dist-types/packages/peach-engine/src/ios/app-card-types.d.ts +7 -0
  231. package/dist-types/packages/peach-engine/src/ios/apps/canvas-map-data.d.ts +177 -0
  232. package/dist-types/packages/peach-engine/src/ios/aux-home-scene.d.ts +54 -0
  233. package/dist-types/packages/peach-engine/src/ios/chrome-metrics.d.ts +47 -0
  234. package/dist-types/packages/peach-engine/src/ios/constants.d.ts +21 -0
  235. package/dist-types/packages/peach-engine/src/ios/duo-housing.d.ts +37 -0
  236. package/dist-types/packages/peach-engine/src/ios/home/types.d.ts +29 -0
  237. package/dist-types/packages/peach-engine/src/ios/home-app-catalog.d.ts +43 -0
  238. package/dist-types/packages/peach-engine/src/ios/photo-store.d.ts +73 -0
  239. package/dist-types/packages/peach-engine/src/ios/photoLibraryContract.d.ts +166 -0
  240. package/dist-types/packages/peach-engine/src/ios/shell-controller-types.d.ts +21 -0
  241. package/dist-types/packages/peach-engine/src/ios/shell-transition-debug.d.ts +18 -0
  242. package/dist-types/packages/peach-engine/src/metro-asset-path.d.ts +21 -0
  243. package/dist-types/packages/peach-engine/src/metro-fingerprint-registry-client.d.ts +11 -0
  244. package/dist-types/packages/peach-engine/src/metro-fingerprint.d.ts +38 -0
  245. package/dist-types/packages/peach-engine/src/native-preview-bundle.d.ts +44 -0
  246. package/dist-types/packages/peach-engine/src/observability/types.d.ts +74 -0
  247. package/dist-types/packages/peach-engine/src/peach-warm-manifest.d.ts +32 -0
  248. package/dist-types/packages/peach-engine/src/permissions/app-settings-client.d.ts +25 -0
  249. package/dist-types/packages/peach-engine/src/permissions/system-permission-types.d.ts +20 -0
  250. package/dist-types/packages/peach-engine/src/platform/android-back-panel.d.ts +131 -0
  251. package/dist-types/packages/peach-engine/src/platform/android-gesture-exclusion.d.ts +28 -0
  252. package/dist-types/packages/peach-engine/src/platform/android-predictive-back.d.ts +33 -0
  253. package/dist-types/packages/peach-engine/src/platform/system-bars-state.d.ts +14 -0
  254. package/dist-types/packages/peach-engine/src/playwright-sim-host.d.ts +1 -0
  255. package/dist-types/packages/peach-engine/src/preview/bundle-layout.d.ts +8 -0
  256. package/dist-types/packages/peach-engine/src/preview/bundle-variantContract.d.ts +24 -0
  257. package/dist-types/packages/peach-engine/src/preview/capture-bundle.d.ts +26 -0
  258. package/dist-types/packages/peach-engine/src/preview/compress-node.d.ts +2 -0
  259. package/dist-types/packages/peach-engine/src/preview/compress.d.ts +2 -0
  260. package/dist-types/packages/peach-engine/src/preview/presigned-upload.d.ts +60 -0
  261. package/dist-types/packages/peach-engine/src/preview/trace.d.ts +144 -0
  262. package/dist-types/packages/peach-engine/src/preview/upload-protocol.d.ts +152 -0
  263. package/dist-types/packages/peach-engine/src/profiler/animation-recording-loader.d.ts +1 -0
  264. package/dist-types/packages/peach-engine/src/profiler/profile-trace.d.ts +4 -0
  265. package/dist-types/packages/peach-engine/src/react-bridge.d.ts +3 -0
  266. package/dist-types/packages/peach-engine/src/react-native/AppState.d.ts +45 -0
  267. package/dist-types/packages/peach-engine/src/react-native/Appearance.d.ts +34 -0
  268. package/dist-types/packages/peach-engine/src/react-native/framework-colors-data.d.ts +2 -0
  269. package/dist-types/packages/peach-engine/src/react-native/host-services.d.ts +42 -0
  270. package/dist-types/packages/peach-engine/src/react-native/layout-animation.d.ts +22 -0
  271. package/dist-types/packages/peach-engine/src/react-native/platform-colors.d.ts +17 -0
  272. package/dist-types/packages/peach-engine/src/remote-stream/client-config.d.ts +10 -0
  273. package/dist-types/packages/peach-engine/src/remote-stream/cloud-display.d.ts +58 -0
  274. package/dist-types/packages/peach-engine/src/remote-stream/scene-recording.d.ts +45 -0
  275. package/dist-types/packages/peach-engine/src/render-worker/animated-drive-output.d.ts +35 -0
  276. package/dist-types/packages/peach-engine/src/render-worker/app-load.d.ts +16 -0
  277. package/dist-types/packages/peach-engine/src/render-worker/aux-surface-types.d.ts +2 -0
  278. package/dist-types/packages/peach-engine/src/render-worker/canvaskit-shared.d.ts +42 -0
  279. package/dist-types/packages/peach-engine/src/render-worker/canvaskit-webgpu.d.ts +434 -0
  280. package/dist-types/packages/peach-engine/src/render-worker/canvaskit-worker-init.d.ts +12 -0
  281. package/dist-types/packages/peach-engine/src/render-worker/compositor-backend.d.ts +31 -0
  282. package/dist-types/packages/peach-engine/src/render-worker/compositor-gpu.d.ts +202 -0
  283. package/dist-types/packages/peach-engine/src/render-worker/compositor-protocol.d.ts +1945 -0
  284. package/dist-types/packages/peach-engine/src/render-worker/compositor-runtime/scroll-drag-resample.d.ts +44 -0
  285. package/dist-types/packages/peach-engine/src/render-worker/css-keyframes-drive.d.ts +36 -0
  286. package/dist-types/packages/peach-engine/src/render-worker/edit-menu-geometry.d.ts +8 -0
  287. package/dist-types/packages/peach-engine/src/render-worker/engine-resource-relay.d.ts +21 -0
  288. package/dist-types/packages/peach-engine/src/render-worker/expo-widgetContract.d.ts +16 -0
  289. package/dist-types/packages/peach-engine/src/render-worker/gesture-seam-protocol.d.ts +152 -0
  290. package/dist-types/packages/peach-engine/src/render-worker/graph-linked-value.d.ts +29 -0
  291. package/dist-types/packages/peach-engine/src/render-worker/graphite-pipeline-compiler-contract.d.ts +49 -0
  292. package/dist-types/packages/peach-engine/src/render-worker/graphite-pipeline-compiler.d.ts +12 -0
  293. package/dist-types/packages/peach-engine/src/render-worker/host-service-protocol.d.ts +756 -0
  294. package/dist-types/packages/peach-engine/src/render-worker/image-lifecycle-event.d.ts +22 -0
  295. package/dist-types/packages/peach-engine/src/render-worker/image-pixel-contract.d.ts +48 -0
  296. package/dist-types/packages/peach-engine/src/render-worker/live-frame-mirror.d.ts +34 -0
  297. package/dist-types/packages/peach-engine/src/render-worker/map-command-channel.d.ts +189 -0
  298. package/dist-types/packages/peach-engine/src/render-worker/mapNativeContract.d.ts +101 -0
  299. package/dist-types/packages/peach-engine/src/render-worker/native-dynamic-synchronizable.d.ts +22 -0
  300. package/dist-types/packages/peach-engine/src/render-worker/native-menu-gesture.d.ts +9 -0
  301. package/dist-types/packages/peach-engine/src/render-worker/native-ui-commandContract.d.ts +23 -0
  302. package/dist-types/packages/peach-engine/src/render-worker/native-ui-protocol.d.ts +1087 -0
  303. package/dist-types/packages/peach-engine/src/render-worker/native-widgetContract.d.ts +100 -0
  304. package/dist-types/packages/peach-engine/src/render-worker/nativeAnimMirrorContract.d.ts +174 -0
  305. package/dist-types/packages/peach-engine/src/render-worker/nativeSyncReplyContract.d.ts +11 -0
  306. package/dist-types/packages/peach-engine/src/render-worker/one-native-contentContract.d.ts +54 -0
  307. package/dist-types/packages/peach-engine/src/render-worker/pointerSampleContract.d.ts +14 -0
  308. package/dist-types/packages/peach-engine/src/render-worker/protocol.d.ts +880 -0
  309. package/dist-types/packages/peach-engine/src/render-worker/reanimated-css-contract.d.ts +63 -0
  310. package/dist-types/packages/peach-engine/src/render-worker/reanimated-readiness.d.ts +29 -0
  311. package/dist-types/packages/peach-engine/src/render-worker/resilient-frame-clock.d.ts +22 -0
  312. package/dist-types/packages/peach-engine/src/render-worker/retained-app-load.d.ts +20 -0
  313. package/dist-types/packages/peach-engine/src/render-worker/screen-edge-swipe-commit-protocol.d.ts +1 -0
  314. package/dist-types/packages/peach-engine/src/render-worker/screen-form-sheet-commit-protocol.d.ts +26 -0
  315. package/dist-types/packages/peach-engine/src/render-worker/scroll-mirror-tenant.d.ts +37 -0
  316. package/dist-types/packages/peach-engine/src/render-worker/scroll-mirror.d.ts +164 -0
  317. package/dist-types/packages/peach-engine/src/render-worker/shell-event-registry.d.ts +119 -0
  318. package/dist-types/packages/peach-engine/src/render-worker/shell-gesture-regions.d.ts +41 -0
  319. package/dist-types/packages/peach-engine/src/render-worker/shell-protocol.d.ts +603 -0
  320. package/dist-types/packages/peach-engine/src/render-worker/shell-scene-schema.d.ts +101 -0
  321. package/dist-types/packages/peach-engine/src/render-worker/shell-tree-inline-sources.d.ts +13 -0
  322. package/dist-types/packages/peach-engine/src/render-worker/shell-tree-wire.d.ts +87 -0
  323. package/dist-types/packages/peach-engine/src/render-worker/test-bridge-protocol.d.ts +47 -0
  324. package/dist-types/packages/peach-engine/src/render-worker/text-inputContract.d.ts +93 -0
  325. package/dist-types/packages/peach-engine/src/render-worker/tree-sync-port.d.ts +102 -0
  326. package/dist-types/packages/peach-engine/src/render-worker/webgpu-frame-transaction.d.ts +292 -0
  327. package/dist-types/packages/peach-engine/src/render-worker/webgpu-readback-scheduler.d.ts +107 -0
  328. package/dist-types/packages/peach-engine/src/render-worker/webview-capture-protocol.d.ts +16 -0
  329. package/dist-types/packages/peach-engine/src/render-worker/worker-input-runtime.d.ts +211 -0
  330. package/dist-types/packages/peach-engine/src/render-worker/worker-storage.d.ts +33 -0
  331. package/dist-types/packages/peach-engine/src/render-worker/worklet-runtime.d.ts +987 -0
  332. package/dist-types/packages/peach-engine/src/render-worker/worklet-sab.d.ts +24 -0
  333. package/dist-types/packages/peach-engine/src/rolldown-bundle-inventory.d.ts +84 -0
  334. package/dist-types/packages/peach-engine/src/rolldown-production-fingerprint.d.ts +31 -0
  335. package/dist-types/packages/peach-engine/src/screenshots/timeline-assets.d.ts +10 -0
  336. package/dist-types/packages/peach-engine/src/screenshots/tokens.d.ts +9 -0
  337. package/dist-types/packages/peach-engine/src/settings/devices.d.ts +70 -0
  338. package/dist-types/packages/peach-engine/src/settings/duo-fold-bus.d.ts +87 -0
  339. package/dist-types/packages/peach-engine/src/settings/interface-rotation.d.ts +30 -0
  340. package/dist-types/packages/peach-engine/src/settings/react-native-configuration.d.ts +12 -0
  341. package/dist-types/packages/peach-engine/src/settings/scene-geometryContract.d.ts +40 -0
  342. package/dist-types/packages/peach-engine/src/settings/store.d.ts +37 -0
  343. package/dist-types/packages/peach-engine/src/shell-events.d.ts +203 -0
  344. package/dist-types/packages/peach-engine/src/shell-intent.d.ts +68 -0
  345. package/dist-types/packages/peach-engine/src/sootsim-event.d.ts +35 -0
  346. package/dist-types/packages/peach-engine/src/top-overlay-state.d.ts +5 -0
  347. package/dist-types/packages/peach-engine/src/web-authentication-automation-host.d.ts +2 -0
  348. package/dist-types/packages/peach-engine/src/webAuthenticationContract.d.ts +34 -0
  349. package/dist-types/packages/peach-engine/src/webview-automation-host.d.ts +180 -0
  350. package/dist-types/packages/peach-engine/src/wireframe-mode.d.ts +16 -0
  351. package/dist-types/packages/peach-globals/src/frameBreakdownContract.d.ts +16 -0
  352. package/dist-types/packages/peach-globals/src/index.d.ts +3311 -0
  353. package/dist-types/packages/peach-globals/src/nativeSurfaceContract.d.ts +76 -0
  354. package/dist-types/packages/peach-globals/src/pointerSourceEventContract.d.ts +8 -0
  355. package/dist-types/packages/peach-globals/src/profileTrace.d.ts +11 -0
  356. package/dist-types/packages/peach-globals/src/profilerContract.d.ts +223 -0
  357. package/dist-types/packages/peach-kit/src/capabilities.d.ts +721 -0
  358. package/dist-types/packages/peach-kit/src/internal.d.ts +4 -0
  359. package/dist-types/packages/peach-kit/src/materials/types.d.ts +27 -0
  360. package/dist-types/packages/peach-kit/src/materials/uikit-blur-material.d.ts +14 -0
  361. package/dist-types/packages/peach-kit/src/navigation-types.d.ts +11 -0
  362. package/dist-types/packages/peach-kit/src/react-bridge.d.ts +53 -0
  363. package/dist-types/packages/peach-kit/src/runtime.d.ts +26 -0
  364. package/dist-types/packages/peach-kit/src/ui/hosting-safe-area.d.ts +24 -0
  365. package/dist-types/packages/peach-kit/src/ui/popover-placement.d.ts +53 -0
  366. package/dist-types/packages/peach-kit/src/ui/presentationContract.d.ts +17 -0
  367. package/kotlin/ComposeSources/PeachComposeHost.kt +1 -1
  368. package/kotlin/JniSources/com/facebook/jni/HybridData.kt +0 -2
  369. package/kotlin/JniSources/dev/peach/jni/NativeBindings.kt +0 -2
  370. package/kotlin/JniTransportSources/dev/peach/jni/integration/JniTransport.kt +0 -2
  371. package/kotlin/README.md +6 -0
  372. package/package.json +22 -2
  373. package/runtime-companion.json +1 -0
  374. package/skills/contrast/SKILL.md +1 -0
  375. package/src/assetCatalogContract.ts +21 -0
  376. package/src/bridge-contract-input.ts +84 -0
  377. package/src/bridge-contract.ts +35 -3
  378. package/src/browser-launch-policy.ts +1 -0
  379. package/src/bundle-channel.mjs +4 -2
  380. package/src/cli-runtime.ts +55 -0
  381. package/src/crash-fingerprint.ts +26 -0
  382. package/src/dev-bundle-resolution.ts +50 -23
  383. package/src/device-catalog.ts +1159 -0
  384. package/src/host/bridge-host.ts +3 -26
  385. package/src/host/browser-pointer.ts +71 -0
  386. package/src/host/dev-server-package-versions.ts +23 -0
  387. package/src/host/fetch-proxy-handler.ts +17 -4
  388. package/src/installed-package-versions.ts +142 -38
  389. package/src/kotlin-host.ts +1 -1
  390. package/src/metro-plugin.ts +4 -4
  391. package/src/metro-project-root.ts +68 -0
  392. package/src/nitro-adapter.lock.json +26 -0
  393. package/src/nitro-adapter.ts +103 -0
  394. package/src/nitro-bundle.ts +24 -10
  395. package/src/nitro-compile.ts +33 -51
  396. package/src/nitro-source.ts +177 -96
  397. package/src/nitroAdapterContract.ts +217 -0
  398. package/src/nitroContract.ts +24 -11
  399. package/src/process-group.ts +41 -34
  400. package/src/react-bridge-importers.ts +28 -0
  401. package/src/reactNativeConfigurationContract.ts +36 -0
  402. package/src/runtime-assets.ts +7 -2
  403. package/src/runtime-delivery.ts +2 -0
  404. package/src/runtimePlatformContract.ts +70 -0
  405. package/src/screenshots/frame-compose.ts +42 -43
  406. package/src/screenshots/org-deck.ts +9 -4
  407. package/src/screenshots/preset-names.ts +29 -0
  408. package/src/screenshots/registry.ts +5 -5
  409. package/src/screenshots/schema.ts +1 -1
  410. package/src/screenshots/screenshotContract.ts +971 -0
  411. package/src/settings-flags.ts +107 -0
  412. package/src/settingsContract.ts +609 -0
  413. package/src/storageSnapshotContract.ts +344 -0
  414. package/src/stub-pattern-matcher.ts +550 -0
  415. package/src/swift-compile.ts +908 -40
  416. package/src/swift-compiler-digest.ts +13 -1
  417. package/src/swift-distribution.lock.json +49 -22
  418. package/src/swift-host.ts +167 -52
  419. package/src/swift-objc-compile.ts +54 -24
  420. package/src/swift-objc-export.ts +532 -0
  421. package/src/swift-objc-import.ts +769 -0
  422. package/src/swift-objc-metadata.ts +285 -10
  423. package/src/swift-objc-sdk.ts +13970 -158
  424. package/src/swift-objc-standin.ts +137 -1
  425. package/src/swift-package.ts +94 -0
  426. package/src/swift-packages.ts +5 -5
  427. package/src/swift-submit.ts +6 -0
  428. package/src/swiftContract.ts +99 -0
  429. package/src/target-matcher.ts +6 -1
  430. package/src/vite-plugin.ts +14 -40
  431. package/src/worker-system-chunks.ts +1 -1
  432. package/src/workerChunkContract.ts +5 -0
  433. package/src/worklets-babel.ts +24 -5
  434. package/src/xcode-project.ts +36 -7
  435. package/src/xcode-target-members.ts +10 -3
  436. package/cli/drivers/playwright-sim-host.ts +0 -825
  437. package/kotlin/fixtures/counter/Counter.d.kt.ts +0 -17
  438. package/kotlin/fixtures/counter/Counter.kt +0 -51
  439. package/kotlin/fixtures/counter/CounterApp.native.tsx +0 -61
  440. package/kotlin/fixtures/counter/CounterApp.tsx +0 -3
  441. package/kotlin/fixtures/counter/CounterScreen.d.kt.ts +0 -8
  442. package/kotlin/fixtures/counter/CounterScreen.kt +0 -56
  443. package/kotlin/fixtures/counter/app/_layout.tsx +0 -4
  444. package/kotlin/fixtures/counter/app/index+spa.tsx +0 -1
  445. package/kotlin/fixtures/counter/app/routes.d.ts +0 -18
  446. package/kotlin/fixtures/counter/package.json +0 -20
  447. package/kotlin/fixtures/counter/tsconfig.json +0 -19
  448. package/kotlin/fixtures/counter/vite.config.ts +0 -20
  449. package/kotlin/fixtures/headless-counter/Headless.kt +0 -234
  450. package/kotlin/fixtures/import-animation/Animation.d.kt.ts +0 -7
  451. package/kotlin/fixtures/import-animation/Animation.kt +0 -80
  452. package/kotlin/fixtures/import-animation/ImportAnimation.native.tsx +0 -13
  453. package/kotlin/fixtures/import-animation/README.md +0 -24
  454. package/kotlin/fixtures/import-animation/app/_layout.tsx +0 -4
  455. package/kotlin/fixtures/import-animation/app/index+spa.tsx +0 -1
  456. package/kotlin/fixtures/import-animation/app/routes.d.ts +0 -18
  457. package/kotlin/fixtures/import-animation/package.json +0 -23
  458. package/kotlin/fixtures/import-animation/tsconfig.json +0 -20
  459. package/kotlin/fixtures/import-animation/vite.config.ts +0 -20
  460. package/kotlin/fixtures/import-drawing/Drawing.d.kt.ts +0 -7
  461. package/kotlin/fixtures/import-drawing/Drawing.kt +0 -101
  462. package/kotlin/fixtures/import-drawing/ImportDrawing.native.tsx +0 -18
  463. package/kotlin/fixtures/import-drawing/README.md +0 -34
  464. package/kotlin/fixtures/import-drawing/app/_layout.tsx +0 -4
  465. package/kotlin/fixtures/import-drawing/app/index+spa.tsx +0 -1
  466. package/kotlin/fixtures/import-drawing/package.json +0 -23
  467. package/kotlin/fixtures/import-drawing/tsconfig.json +0 -20
  468. package/kotlin/fixtures/import-drawing/vite.config.ts +0 -20
  469. package/kotlin/fixtures/import-editor/Editor.d.kt.ts +0 -7
  470. package/kotlin/fixtures/import-editor/Editor.kt +0 -59
  471. package/kotlin/fixtures/import-editor/ImportEditor.native.tsx +0 -23
  472. package/kotlin/fixtures/import-editor/README.md +0 -27
  473. package/kotlin/fixtures/import-editor/app/_layout.tsx +0 -4
  474. package/kotlin/fixtures/import-editor/app/index+spa.tsx +0 -1
  475. package/kotlin/fixtures/import-editor/package.json +0 -23
  476. package/kotlin/fixtures/import-editor/tsconfig.json +0 -20
  477. package/kotlin/fixtures/import-editor/vite.config.ts +0 -20
  478. package/kotlin/fixtures/import-effects/Effects.d.kt.ts +0 -7
  479. package/kotlin/fixtures/import-effects/Effects.kt +0 -87
  480. package/kotlin/fixtures/import-effects/ImportEffects.native.tsx +0 -13
  481. package/kotlin/fixtures/import-effects/README.md +0 -19
  482. package/kotlin/fixtures/import-effects/app/_layout.tsx +0 -4
  483. package/kotlin/fixtures/import-effects/app/index+spa.tsx +0 -1
  484. package/kotlin/fixtures/import-effects/package.json +0 -23
  485. package/kotlin/fixtures/import-effects/tsconfig.json +0 -20
  486. package/kotlin/fixtures/import-effects/vite.config.ts +0 -20
  487. package/kotlin/fixtures/import-layout/ImportLayout.native.tsx +0 -13
  488. package/kotlin/fixtures/import-layout/Layout.d.kt.ts +0 -7
  489. package/kotlin/fixtures/import-layout/Layout.kt +0 -72
  490. package/kotlin/fixtures/import-layout/README.md +0 -24
  491. package/kotlin/fixtures/import-layout/app/_layout.tsx +0 -4
  492. package/kotlin/fixtures/import-layout/app/index+spa.tsx +0 -1
  493. package/kotlin/fixtures/import-layout/package.json +0 -23
  494. package/kotlin/fixtures/import-layout/tsconfig.json +0 -20
  495. package/kotlin/fixtures/import-layout/vite.config.ts +0 -20
  496. package/kotlin/fixtures/import-navigation/ImportNavigation.native.tsx +0 -18
  497. package/kotlin/fixtures/import-navigation/Navigation.d.kt.ts +0 -7
  498. package/kotlin/fixtures/import-navigation/Navigation.kt +0 -104
  499. package/kotlin/fixtures/import-navigation/README.md +0 -31
  500. package/kotlin/fixtures/import-navigation/app/_layout.tsx +0 -4
  501. package/kotlin/fixtures/import-navigation/app/index+spa.tsx +0 -1
  502. package/kotlin/fixtures/import-navigation/package.json +0 -23
  503. package/kotlin/fixtures/import-navigation/tsconfig.json +0 -20
  504. package/kotlin/fixtures/import-navigation/vite.config.ts +0 -20
  505. package/kotlin/fixtures/import-overlays/ImportOverlays.native.tsx +0 -29
  506. package/kotlin/fixtures/import-overlays/Overlays.d.kt.ts +0 -7
  507. package/kotlin/fixtures/import-overlays/Overlays.kt +0 -93
  508. package/kotlin/fixtures/import-overlays/README.md +0 -34
  509. package/kotlin/fixtures/import-overlays/app/_layout.tsx +0 -4
  510. package/kotlin/fixtures/import-overlays/app/index+spa.tsx +0 -1
  511. package/kotlin/fixtures/import-overlays/package.json +0 -23
  512. package/kotlin/fixtures/import-overlays/tsconfig.json +0 -20
  513. package/kotlin/fixtures/import-overlays/vite.config.ts +0 -20
  514. package/kotlin/fixtures/import-resources/ImportResources.native.tsx +0 -18
  515. package/kotlin/fixtures/import-resources/README.md +0 -26
  516. package/kotlin/fixtures/import-resources/Resources.d.kt.ts +0 -6
  517. package/kotlin/fixtures/import-resources/Resources.kt +0 -72
  518. package/kotlin/fixtures/import-resources/app/_layout.tsx +0 -4
  519. package/kotlin/fixtures/import-resources/app/index+spa.tsx +0 -1
  520. package/kotlin/fixtures/import-resources/package.json +0 -23
  521. package/kotlin/fixtures/import-resources/tsconfig.json +0 -20
  522. package/kotlin/fixtures/import-resources/vite.config.ts +0 -20
  523. package/kotlin/fixtures/import-scroll/ImportNested.native.tsx +0 -10
  524. package/kotlin/fixtures/import-scroll/ImportScroll.native.tsx +0 -13
  525. package/kotlin/fixtures/import-scroll/Nested.d.kt.ts +0 -4
  526. package/kotlin/fixtures/import-scroll/Nested.kt +0 -64
  527. package/kotlin/fixtures/import-scroll/README.md +0 -38
  528. package/kotlin/fixtures/import-scroll/Scroll.d.kt.ts +0 -7
  529. package/kotlin/fixtures/import-scroll/Scroll.kt +0 -91
  530. package/kotlin/fixtures/import-scroll/app/_layout.tsx +0 -4
  531. package/kotlin/fixtures/import-scroll/app/index+spa.tsx +0 -1
  532. package/kotlin/fixtures/import-scroll/app/nested+spa.tsx +0 -1
  533. package/kotlin/fixtures/import-scroll/package.json +0 -23
  534. package/kotlin/fixtures/import-scroll/tsconfig.json +0 -20
  535. package/kotlin/fixtures/import-scroll/vite.config.ts +0 -20
  536. package/kotlin/fixtures/import-selection/ImportSelection.native.tsx +0 -44
  537. package/kotlin/fixtures/import-selection/README.md +0 -32
  538. package/kotlin/fixtures/import-selection/Selection.d.kt.ts +0 -8
  539. package/kotlin/fixtures/import-selection/Selection.kt +0 -78
  540. package/kotlin/fixtures/import-selection/app/_layout.tsx +0 -4
  541. package/kotlin/fixtures/import-selection/app/index+spa.tsx +0 -1
  542. package/kotlin/fixtures/import-selection/package.json +0 -23
  543. package/kotlin/fixtures/import-selection/tsconfig.json +0 -20
  544. package/kotlin/fixtures/import-selection/vite.config.ts +0 -20
  545. package/kotlin/fixtures/import-surfaces/ImportSurfaces.native.tsx +0 -13
  546. package/kotlin/fixtures/import-surfaces/README.md +0 -22
  547. package/kotlin/fixtures/import-surfaces/Surfaces.d.kt.ts +0 -7
  548. package/kotlin/fixtures/import-surfaces/Surfaces.kt +0 -64
  549. package/kotlin/fixtures/import-surfaces/app/_layout.tsx +0 -4
  550. package/kotlin/fixtures/import-surfaces/app/index+spa.tsx +0 -1
  551. package/kotlin/fixtures/import-surfaces/package.json +0 -23
  552. package/kotlin/fixtures/import-surfaces/tsconfig.json +0 -20
  553. package/kotlin/fixtures/import-surfaces/vite.config.ts +0 -20
  554. package/kotlin/fixtures/import-values/ImportValues.native.tsx +0 -61
  555. package/kotlin/fixtures/import-values/README.md +0 -28
  556. package/kotlin/fixtures/import-values/Values.d.kt.ts +0 -15
  557. package/kotlin/fixtures/import-values/Values.kt +0 -84
  558. package/kotlin/fixtures/import-values/app/_layout.tsx +0 -4
  559. package/kotlin/fixtures/import-values/app/index+spa.tsx +0 -1
  560. package/kotlin/fixtures/import-values/package.json +0 -23
  561. package/kotlin/fixtures/import-values/tsconfig.json +0 -20
  562. package/kotlin/fixtures/import-values/vite.config.ts +0 -20
  563. package/kotlin/fixtures/kotlin-app/app/build.gradle.kts +0 -30
  564. package/kotlin/fixtures/kotlin-app/app/src/main/AndroidManifest.xml +0 -13
  565. package/kotlin/fixtures/kotlin-app/app/src/main/java/dev/contrast/kotlinapp/MainActivity.kt +0 -60
  566. package/kotlin/fixtures/kotlin-app/app/src/main/java/dev/contrast/kotlinapp/ProbeApplication.kt +0 -18
  567. package/kotlin/fixtures/kotlin-app/build.gradle.kts +0 -5
  568. package/kotlin/fixtures/kotlin-app/gradle.properties +0 -4
  569. package/kotlin/fixtures/kotlin-app/settings.gradle.kts +0 -4
  570. package/kotlin/fixtures/kotlin-app-variants/Anim.kt +0 -62
  571. package/kotlin/fixtures/kotlin-app-variants/BarBehavior.kt +0 -38
  572. package/kotlin/fixtures/kotlin-app-variants/BarVisibility.kt +0 -36
  573. package/kotlin/fixtures/kotlin-app-variants/Bitmaps.kt +0 -50
  574. package/kotlin/fixtures/kotlin-app-variants/Browse.kt +0 -73
  575. package/kotlin/fixtures/kotlin-app-variants/Colors.kt +0 -41
  576. package/kotlin/fixtures/kotlin-app-variants/Controls.kt +0 -62
  577. package/kotlin/fixtures/kotlin-app-variants/Drag.kt +0 -56
  578. package/kotlin/fixtures/kotlin-app-variants/Draw.kt +0 -74
  579. package/kotlin/fixtures/kotlin-app-variants/Drawables.kt +0 -53
  580. package/kotlin/fixtures/kotlin-app-variants/Focus.kt +0 -62
  581. package/kotlin/fixtures/kotlin-app-variants/Form.kt +0 -47
  582. package/kotlin/fixtures/kotlin-app-variants/Icons.kt +0 -59
  583. package/kotlin/fixtures/kotlin-app-variants/Ime.kt +0 -53
  584. package/kotlin/fixtures/kotlin-app-variants/Lists.kt +0 -57
  585. package/kotlin/fixtures/kotlin-app-variants/Nav.kt +0 -47
  586. package/kotlin/fixtures/kotlin-app-variants/Note.kt +0 -40
  587. package/kotlin/fixtures/kotlin-app-variants/Overlays.kt +0 -56
  588. package/kotlin/fixtures/kotlin-app-variants/Pan.kt +0 -38
  589. package/kotlin/fixtures/kotlin-app-variants/Pickers.kt +0 -44
  590. package/kotlin/fixtures/kotlin-app-variants/Press.kt +0 -43
  591. package/kotlin/fixtures/kotlin-app-variants/Scroll.kt +0 -63
  592. package/kotlin/fixtures/kotlin-app-variants/Sheet.kt +0 -43
  593. package/kotlin/fixtures/kotlin-app-variants/Strings.kt +0 -49
  594. package/kotlin/fixtures/kotlin-app-variants/Tabs.kt +0 -47
  595. package/kotlin/fixtures/kotlin-app-variants/TextWidth.kt +0 -45
  596. package/kotlin/fixtures/kotlin-app-variants/TransientInsets.kt +0 -50
  597. package/kotlin/fixtures/kotlin-app-variants/Transition.kt +0 -69
  598. package/kotlin/fixtures/kotlin-app-variants/ViewConfig.kt +0 -22
  599. package/kotlin/fixtures/kotlin-app-variants/Widgets.kt +0 -67
  600. package/kotlin/fixtures/runtime-state/RuntimeState.kt +0 -200
  601. package/kotlin/fork/README.md +0 -97
  602. package/kotlin/fork/build.sh +0 -176
  603. package/kotlin/fork/compose-worker-globals.patch +0 -1247
  604. package/kotlin/fork/fork.json +0 -46
  605. package/kotlin/fork/publish.ts +0 -99
  606. package/kotlin/fork/skia-android-shaping.patch +0 -189
  607. package/kotlin/fork/skiko-local.init.gradle +0 -10
  608. package/kotlin/fork/skiko-worker-clock.patch +0 -122
@@ -1,11 +1,9 @@
1
- // native recordings and SootSim live frames must use this exact definition.
2
- // retained static Android crops measured as high as 0.0331% after the channel
3
- // filter. the smallest corrected component transition with visible motion was
4
- // 0.1748%, so a 0.1% floor separates every measured static and moving frame.
5
- const MOTION_CHANGE_DEFINITION = Object.freeze({
6
- channelThreshold: 24,
7
- minimumChangePercent: 0.1,
8
- })
1
+ const {
2
+ MOTION_CHANGE_DEFINITION,
3
+ DISCRETE_FRAME_TIMING_TOLERANCE_MS,
4
+ parseDiscreteFrameCadence,
5
+ } = require('../../peach-conformance/src/cases/checkpoint-evidence.cjs')
6
+ const { frameTimingRoundingBound } = require('./frame-offset.mjs')
9
7
 
10
8
  function measureMotionChange(input) {
11
9
  if (!input || typeof input !== 'object' || Array.isArray(input)) {
@@ -151,7 +149,9 @@ function evaluateMotionTransitions(transitions, oracleTarget, repeating) {
151
149
  )
152
150
  .reduce((total, transition) => total + transition.changePercent, 0)
153
151
  const movesNear = (list, index) =>
154
- [index - 1, index, index + 1].some((neighbour) => list[neighbour]?.passedMinimum === true)
152
+ [index - 1, index, index + 1].some(
153
+ (neighbour) => list[neighbour]?.passedMinimum === true,
154
+ )
155
155
  const pairedChange = (transition) =>
156
156
  transition.changePercent >= PAIRED_MOTION_MINIMUM_CHANGE_PERCENT
157
157
  const settleBlip = (list) => {
@@ -194,108 +194,17 @@ function evaluateMotionTransitions(transitions, oracleTarget, repeating) {
194
194
  ) &&
195
195
  sootsim.every(
196
196
  (transition, index) =>
197
- !pairedChange(transition) || index === sootsimBlip || movesNear(oracle, index),
197
+ !pairedChange(transition) ||
198
+ index === sootsimBlip ||
199
+ movesNear(oracle, index),
198
200
  )
199
201
  return {
200
202
  moving: moving.length,
201
- passed:
202
- measured &&
203
- oracle.length > 0 &&
204
- paired &&
205
- moving.length > 0 &&
206
- follows,
203
+ passed: measured && oracle.length > 0 && paired && moving.length > 0 && follows,
207
204
  }
208
205
  }
209
206
 
210
207
  const DISPLAY_LINK_INTERVAL_MS = 1000 / 60
211
- const DISCRETE_FRAME_TIMING_TOLERANCE_MS = 1000 / 60 + 1000 / 600
212
-
213
- function parseDiscreteFrameCadence(value) {
214
- const fail = (message) => {
215
- throw new Error(`discrete frame cadence ${message}`)
216
- }
217
- if (!value || value.kind !== 'discrete-frame' || !value.asset || !value.probe)
218
- fail('requires an explicit asset and probe')
219
- for (const field of ['fixtureSha256', 'encodedSha256', 'calibrationSha256']) {
220
- if (!/^[a-f0-9]{64}$/.test(value.asset[field])) fail(`has invalid ${field}`)
221
- }
222
- for (const field of ['fixturePath', 'calibrationPath']) {
223
- if (
224
- typeof value.asset[field] !== 'string' ||
225
- !value.asset[field] ||
226
- value.asset[field].startsWith('/') ||
227
- value.asset[field].split('/').includes('..')
228
- )
229
- fail(`has invalid ${field}`)
230
- }
231
- if (
232
- typeof value.probe.elementName !== 'string' ||
233
- !value.probe.elementName ||
234
- !Number.isFinite(value.probe.inset) ||
235
- value.probe.inset < 0
236
- )
237
- fail('has invalid probe')
238
- if (!Array.isArray(value.asset.frames) || value.asset.frames.length < 2)
239
- fail('needs at least two frames')
240
- for (const [index, frame] of value.asset.frames.entries()) {
241
- if (
242
- !frame ||
243
- !Number.isFinite(frame.durationMs) ||
244
- frame.durationMs <= 2 * DISCRETE_FRAME_TIMING_TOLERANCE_MS
245
- )
246
- fail(`frame ${index} duration is unresolvable`)
247
- if (
248
- !Array.isArray(frame.uniformRgba) ||
249
- frame.uniformRgba.length !== 4 ||
250
- frame.uniformRgba.some(
251
- (channel) => !Number.isInteger(channel) || channel < 0 || channel > 255,
252
- )
253
- )
254
- fail(`frame ${index} needs uniform rgba`)
255
- const next = value.asset.frames[(index + 1) % value.asset.frames.length]
256
- if (
257
- next?.uniformRgba &&
258
- frame.uniformRgba.every((channel, i) => channel === next.uniformRgba[i])
259
- )
260
- fail('adjacent phases must differ')
261
- }
262
- for (let i = 0; i < value.asset.frames.length; i++) {
263
- for (let j = i + 1; j < value.asset.frames.length; j++) {
264
- if (
265
- !value.asset.frames[i].uniformRgba.some(
266
- (channel, k) =>
267
- Math.abs(channel - value.asset.frames[j].uniformRgba[k]) >
268
- MOTION_CHANGE_DEFINITION.channelThreshold,
269
- )
270
- )
271
- fail('phase colors cannot resolve the shared visible-change gate')
272
- }
273
- }
274
- if (value.mode === 'playing') {
275
- if (
276
- !Number.isInteger(value.entryFrame) ||
277
- value.entryFrame < 0 ||
278
- value.entryFrame >= value.asset.frames.length ||
279
- value.minimumTransitions !== 2
280
- )
281
- fail('playing mode needs an entry frame and two transitions')
282
- } else if (value.mode === 'frozen') {
283
- if (
284
- !Array.isArray(value.waitIntervalsMs) ||
285
- value.waitIntervalsMs.length < 2 ||
286
- value.waitIntervalsMs.some((ms) => !Number.isFinite(ms) || ms <= 0)
287
- )
288
- fail('frozen mode needs two positive waits')
289
- if (
290
- !Array.isArray(value.captures) ||
291
- value.captures.length !== value.waitIntervalsMs.length ||
292
- value.captures.some((id) => typeof id !== 'string' || !id) ||
293
- new Set(value.captures).size !== value.captures.length
294
- )
295
- fail('frozen mode needs distinct capture identities')
296
- } else fail('has an unknown mode')
297
- return value
298
- }
299
208
 
300
209
  function classifyDiscreteFrame(input) {
301
210
  // self-contained so the exact classifier can be installed inside a page.
@@ -383,8 +292,10 @@ function evaluateDiscreteFrameTrace(input) {
383
292
  // media lifetime. a virtual trace must include every tick through its end.
384
293
  const last = observations.at(-1)
385
294
  if (
386
- observations[0].atMs > coverageStartMs ||
387
- (clock === 'peach-virtual' && last.atMs < coverageEndMs) ||
295
+ observations[0].atMs - coverageStartMs >
296
+ frameTimingRoundingBound(observations[0].atMs, coverageStartMs) ||
297
+ (clock === 'peach-virtual' &&
298
+ coverageEndMs - last.atMs > frameTimingRoundingBound(coverageEndMs, last.atMs)) ||
388
299
  (clock === 'native-presentation' &&
389
300
  (!Number.isFinite(input.mediaDurationMs) ||
390
301
  input.mediaDurationMs < coverageEndMs ||
@@ -432,8 +343,17 @@ function evaluateDiscreteFrameTrace(input) {
432
343
  if (!before || before.phase === null || before.phase === anchor.phase)
433
344
  throw new Error('discrete trace entry did not change from the pre-trigger phase')
434
345
  const endMs = anchor.atMs + windowMs
435
- if (coverageEndMs < endMs) throw new Error('discrete playing trace is truncated')
436
- const rows = observations.filter((row) => row.atMs >= anchor.atMs && row.atMs <= endMs)
346
+ if (
347
+ endMs - coverageEndMs >
348
+ frameTimingRoundingBound(anchor.atMs, windowMs, endMs, coverageEndMs)
349
+ )
350
+ throw new Error('discrete playing trace is truncated')
351
+ const rows = observations.filter(
352
+ (row) =>
353
+ row.atMs >= anchor.atMs &&
354
+ row.atMs - endMs <=
355
+ frameTimingRoundingBound(row.atMs, anchor.atMs, windowMs, endMs),
356
+ )
437
357
  if (rows.some((row) => row.phase === null))
438
358
  throw new Error('discrete playing trace has an unexpected frame')
439
359
  const changes = rows.filter((row, i) => i === 0 || row.phase !== rows[i - 1].phase)
@@ -453,7 +373,10 @@ function evaluateDiscreteFrameTrace(input) {
453
373
  cadence.asset.frames[previous.phase].durationMs +
454
374
  (i === 1 && cadence.entryFrame === 0 ? DISPLAY_LINK_INTERVAL_MS : 0)
455
375
  const observedMs = changes[i].atMs - previous.atMs
456
- if (Math.abs(observedMs - expectedMs) > DISCRETE_FRAME_TIMING_TOLERANCE_MS)
376
+ if (
377
+ Math.abs(observedMs - expectedMs) - DISCRETE_FRAME_TIMING_TOLERANCE_MS >
378
+ frameTimingRoundingBound(changes[i].atMs, previous.atMs, observedMs, expectedMs)
379
+ )
457
380
  throw new Error(
458
381
  `discrete trace wrong cadence: phase ${previous.phase}, expected ${expectedMs}ms, observed ${observedMs}ms`,
459
382
  )
@@ -529,9 +452,20 @@ function motionCyclePeriods(reference, sootsim) {
529
452
  return reference.slice(1).map((onset, index) => {
530
453
  const referenceMs = onset.atMs - reference[index].atMs
531
454
  const sootsimMs = sootsim[index + 1].atMs - sootsim[index].atMs
455
+ const driftMs = Math.abs(referenceMs - sootsimMs)
456
+ const roundingMs = frameTimingRoundingBound(
457
+ onset.atMs,
458
+ reference[index].atMs,
459
+ sootsim[index + 1].atMs,
460
+ sootsim[index].atMs,
461
+ referenceMs,
462
+ sootsimMs,
463
+ driftMs,
464
+ MOTION_CYCLE_PERIOD_TOLERANCE_MS,
465
+ )
532
466
  return {
533
467
  id: onset.id,
534
- passed: Math.abs(referenceMs - sootsimMs) <= MOTION_CYCLE_PERIOD_TOLERANCE_MS,
468
+ passed: driftMs - MOTION_CYCLE_PERIOD_TOLERANCE_MS <= roundingMs,
535
469
  referenceMs,
536
470
  sootsimMs,
537
471
  }
@@ -570,7 +504,8 @@ function evaluateMotionPublication(stages, transitions, oracleTarget, cycleOnset
570
504
  last.passedThreshold &&
571
505
  (!needsIntermediates || movingPassed >= PUBLICATION_MIN_INTERMEDIATE_PASSES) &&
572
506
  cyclePeriods.every((period) => period.passed) &&
573
- evaluateMotionTransitions(transitions, oracleTarget, cyclePeriods.length > 0).passed,
507
+ evaluateMotionTransitions(transitions, oracleTarget, cyclePeriods.length > 0)
508
+ .passed,
574
509
  cyclePeriods,
575
510
  intermediateCount: intermediates.length,
576
511
  intermediatePassed,
@@ -579,14 +514,11 @@ function evaluateMotionPublication(stages, transitions, oracleTarget, cycleOnset
579
514
  }
580
515
 
581
516
  module.exports = {
582
- MOTION_CHANGE_DEFINITION,
583
517
  evaluateMotionPublication,
584
518
  motionCycleOnsets,
585
519
  measureMotionChange,
586
520
  measureProofMotionChange,
587
521
  evaluateMotionTransitions,
588
- DISCRETE_FRAME_TIMING_TOLERANCE_MS,
589
- parseDiscreteFrameCadence,
590
522
  classifyDiscreteFrame,
591
523
  evaluateDiscreteFrameTrace,
592
524
  }
@@ -1,7 +1,8 @@
1
- export type MotionChangeDefinition = {
2
- channelThreshold: number
3
- minimumChangePercent: number
4
- }
1
+ import type {
2
+ MotionChangeDefinition,
3
+ DiscreteFrameAsset,
4
+ DiscreteFrameCadence,
5
+ } from '../../peach-conformance/src/cases/checkpoint-evidence.cjs'
5
6
 
6
7
  type MotionChangePixels = ArrayLike<number>
7
8
 
@@ -24,8 +25,6 @@ export type MotionChangeMeasurement = {
24
25
  totalPixels: number
25
26
  }
26
27
 
27
- export const MOTION_CHANGE_DEFINITION: Readonly<MotionChangeDefinition>
28
-
29
28
  export function measureMotionChange(
30
29
  input: MotionChangeInput,
31
30
  ): MotionChangeMeasurement | null
@@ -88,25 +87,6 @@ export function evaluateMotionPublication(
88
87
  movingPassed: number
89
88
  }
90
89
 
91
- export type DiscreteFrameAsset = {
92
- fixturePath: string
93
- fixtureSha256: string
94
- encodedSha256: string
95
- calibrationPath: string
96
- calibrationSha256: string
97
- frames: readonly {
98
- durationMs: number
99
- uniformRgba: readonly [number, number, number, number]
100
- }[]
101
- }
102
- export type DiscreteFrameCadence = {
103
- kind: 'discrete-frame'
104
- asset: DiscreteFrameAsset
105
- probe: { elementName: string; inset: number }
106
- } & (
107
- | { mode: 'playing'; entryFrame: number; minimumTransitions: 2 }
108
- | { mode: 'frozen'; waitIntervalsMs: readonly number[]; captures: readonly string[] }
109
- )
110
90
  export type DiscreteFrameObservation = {
111
91
  frameIndex: number
112
92
  atMs: number
@@ -150,8 +130,6 @@ export type DiscreteFrameDecision = {
150
130
  holds: { phase: number; expectedMs: number; observedMs: number }[]
151
131
  waitIntervals?: { startMs: number; endMs: number }[]
152
132
  }
153
- export const DISCRETE_FRAME_TIMING_TOLERANCE_MS: number
154
- export function parseDiscreteFrameCadence(value: unknown): DiscreteFrameCadence
155
133
  export function classifyDiscreteFrame(input: {
156
134
  pixels?: ArrayLike<number>
157
135
  frames?: DiscreteFrameAsset['frames']
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.1644 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.1653 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.1644 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.1653 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.1644 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.1653 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.1644 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.1653 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.1644 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.1653 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
package/dist-lib/beta.cjs CHANGED
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.1644 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.1653 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
package/dist-lib/beta.mjs CHANGED
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.1644 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.1653 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
 
3
3
  // src/beta.ts
4
4
  var IS_BETA = true;
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.1644 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.1653 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.1644 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.1653 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -25,6 +25,8 @@ __export(bridge_contract_input_exports, {
25
25
  BridgeInputError: () => BridgeInputError,
26
26
  SEMANTIC_WAIT_MAX_TIMEOUT_MS: () => SEMANTIC_WAIT_MAX_TIMEOUT_MS,
27
27
  findInvalidPointerSequence: () => findInvalidPointerSequence,
28
+ parseDiagnosticsOptions: () => parseDiagnosticsOptions,
29
+ parseDiagnosticsResult: () => parseDiagnosticsResult,
28
30
  parsePerformStep: () => parsePerformStep,
29
31
  parseResetOptions: () => parseResetOptions,
30
32
  parseScreenshotOptions: () => parseScreenshotOptions,
@@ -314,6 +316,66 @@ function findInvalidPointerSequence(steps) {
314
316
  error: `perform.steps[${next.value[1]}] (touchDown) has no matching touchUp or touchCancel for pointer ${next.value[0]}`
315
317
  };
316
318
  }
319
+ function diagnosticsChannels(value, path) {
320
+ if (!Array.isArray(value)) validationFailure(path, "must be a list of channel names");
321
+ return value.map((channel) => stringValue(channel, path));
322
+ }
323
+ function parseDiagnosticsResult(value) {
324
+ if (!isRecord(value) || !Array.isArray(value.channels) || !value.channels.every((channel) => typeof channel === "string") || !Array.isArray(value.availableChannels) || !value.availableChannels.every((channel) => typeof channel === "string") || !Array.isArray(value.events)) {
325
+ validationFailure(
326
+ "remote diagnostics",
327
+ "returned an incompatible native host response"
328
+ );
329
+ }
330
+ return {
331
+ channels: value.channels,
332
+ availableChannels: value.availableChannels,
333
+ runtime: value.runtime,
334
+ found: value.found,
335
+ events: value.events
336
+ };
337
+ }
338
+ function parseDiagnosticsOptions(value) {
339
+ const options = recordValue(value, "diagnostics");
340
+ const channels = options.channels === void 0 ? void 0 : diagnosticsChannels(options.channels, "diagnostics.channels");
341
+ let channelControl;
342
+ if (options.channelControl !== void 0) {
343
+ if (channels !== void 0) {
344
+ validationFailure("diagnostics.channelControl", "cannot be combined with channels");
345
+ }
346
+ const control = recordValue(options.channelControl, "diagnostics.channelControl");
347
+ const action = control.action;
348
+ if (action !== "enable" && action !== "disable" && action !== "toggle") {
349
+ validationFailure(
350
+ "diagnostics.channelControl.action",
351
+ "must be enable, disable, or toggle"
352
+ );
353
+ }
354
+ const selected = diagnosticsChannels(
355
+ control.channels,
356
+ "diagnostics.channelControl.channels"
357
+ );
358
+ if (action === "toggle" && (selected.length !== 1 || selected[0] === "all")) {
359
+ validationFailure("diagnostics.channelControl", "toggle requires one channel");
360
+ }
361
+ channelControl = { action, channels: selected };
362
+ }
363
+ const find = options.find;
364
+ if (find !== void 0 && find !== "sheets" && find !== "portals" && find !== "boundaries") {
365
+ validationFailure("diagnostics.find", "must be sheets, portals, or boundaries");
366
+ }
367
+ return {
368
+ ...channels === void 0 ? {} : { channels },
369
+ ...channelControl === void 0 ? {} : { channelControl },
370
+ ...find === void 0 ? {} : { find },
371
+ ...options.recentChannel === void 0 ? {} : {
372
+ recentChannel: stringValue(options.recentChannel, "diagnostics.recentChannel")
373
+ },
374
+ ...options.recentLimit === void 0 ? {} : {
375
+ recentLimit: numberValue(options.recentLimit, "diagnostics.recentLimit")
376
+ }
377
+ };
378
+ }
317
379
  function parseStateOptions(value) {
318
380
  const input = recordValue(value, "state");
319
381
  const route = optionalBoolean(input, "route", "state");
@@ -487,6 +549,8 @@ function parseTapTarget(value) {
487
549
  BridgeInputError,
488
550
  SEMANTIC_WAIT_MAX_TIMEOUT_MS,
489
551
  findInvalidPointerSequence,
552
+ parseDiagnosticsOptions,
553
+ parseDiagnosticsResult,
490
554
  parsePerformStep,
491
555
  parseResetOptions,
492
556
  parseScreenshotOptions,
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.1644 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.1653 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
 
3
3
  // src/bridge-contract.ts
4
4
  var SIM_LONG_PRESS_MAX_MS = 5e3;
@@ -278,6 +278,66 @@ function findInvalidPointerSequence(steps) {
278
278
  error: `perform.steps[${next.value[1]}] (touchDown) has no matching touchUp or touchCancel for pointer ${next.value[0]}`
279
279
  };
280
280
  }
281
+ function diagnosticsChannels(value, path) {
282
+ if (!Array.isArray(value)) validationFailure(path, "must be a list of channel names");
283
+ return value.map((channel) => stringValue(channel, path));
284
+ }
285
+ function parseDiagnosticsResult(value) {
286
+ if (!isRecord(value) || !Array.isArray(value.channels) || !value.channels.every((channel) => typeof channel === "string") || !Array.isArray(value.availableChannels) || !value.availableChannels.every((channel) => typeof channel === "string") || !Array.isArray(value.events)) {
287
+ validationFailure(
288
+ "remote diagnostics",
289
+ "returned an incompatible native host response"
290
+ );
291
+ }
292
+ return {
293
+ channels: value.channels,
294
+ availableChannels: value.availableChannels,
295
+ runtime: value.runtime,
296
+ found: value.found,
297
+ events: value.events
298
+ };
299
+ }
300
+ function parseDiagnosticsOptions(value) {
301
+ const options = recordValue(value, "diagnostics");
302
+ const channels = options.channels === void 0 ? void 0 : diagnosticsChannels(options.channels, "diagnostics.channels");
303
+ let channelControl;
304
+ if (options.channelControl !== void 0) {
305
+ if (channels !== void 0) {
306
+ validationFailure("diagnostics.channelControl", "cannot be combined with channels");
307
+ }
308
+ const control = recordValue(options.channelControl, "diagnostics.channelControl");
309
+ const action = control.action;
310
+ if (action !== "enable" && action !== "disable" && action !== "toggle") {
311
+ validationFailure(
312
+ "diagnostics.channelControl.action",
313
+ "must be enable, disable, or toggle"
314
+ );
315
+ }
316
+ const selected = diagnosticsChannels(
317
+ control.channels,
318
+ "diagnostics.channelControl.channels"
319
+ );
320
+ if (action === "toggle" && (selected.length !== 1 || selected[0] === "all")) {
321
+ validationFailure("diagnostics.channelControl", "toggle requires one channel");
322
+ }
323
+ channelControl = { action, channels: selected };
324
+ }
325
+ const find = options.find;
326
+ if (find !== void 0 && find !== "sheets" && find !== "portals" && find !== "boundaries") {
327
+ validationFailure("diagnostics.find", "must be sheets, portals, or boundaries");
328
+ }
329
+ return {
330
+ ...channels === void 0 ? {} : { channels },
331
+ ...channelControl === void 0 ? {} : { channelControl },
332
+ ...find === void 0 ? {} : { find },
333
+ ...options.recentChannel === void 0 ? {} : {
334
+ recentChannel: stringValue(options.recentChannel, "diagnostics.recentChannel")
335
+ },
336
+ ...options.recentLimit === void 0 ? {} : {
337
+ recentLimit: numberValue(options.recentLimit, "diagnostics.recentLimit")
338
+ }
339
+ };
340
+ }
281
341
  function parseStateOptions(value) {
282
342
  const input = recordValue(value, "state");
283
343
  const route = optionalBoolean(input, "route", "state");
@@ -450,6 +510,8 @@ export {
450
510
  BridgeInputError,
451
511
  SEMANTIC_WAIT_MAX_TIMEOUT_MS,
452
512
  findInvalidPointerSequence,
513
+ parseDiagnosticsOptions,
514
+ parseDiagnosticsResult,
453
515
  parsePerformStep,
454
516
  parseResetOptions,
455
517
  parseScreenshotOptions,
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.1644 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.1653 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -29,6 +29,8 @@ __export(bridge_contract_exports, {
29
29
  SEMANTIC_READY_POLL_MS: () => SEMANTIC_READY_POLL_MS,
30
30
  SIM_LONG_PRESS_DEFAULT_MS: () => SIM_LONG_PRESS_DEFAULT_MS,
31
31
  SIM_LONG_PRESS_MAX_MS: () => SIM_LONG_PRESS_MAX_MS,
32
+ WRITE_COMMAND_TYPES: () => WRITE_COMMAND_TYPES,
33
+ commandWritesSim: () => commandWritesSim,
32
34
  performStepRefusal: () => performStepRefusal,
33
35
  readyProbeContentBasis: () => readyProbeContentBasis,
34
36
  readyProbeHasContent: () => readyProbeHasContent,
@@ -122,6 +124,20 @@ function readyProbeHasContent(probe) {
122
124
  function readyProbeIsReady(probe) {
123
125
  return readyProbeContentBasis(probe) !== "" && probe.externalReady !== false && !probe.externalError && !probe.loadingText;
124
126
  }
127
+ var WRITE_COMMAND_TYPES = /* @__PURE__ */ new Set([
128
+ "tap",
129
+ "keyboard",
130
+ "longPress",
131
+ "perform",
132
+ "reset",
133
+ "camera"
134
+ ]);
135
+ function commandWritesSim(msg) {
136
+ if (typeof msg.type !== "string") return false;
137
+ if (msg.acquireLock === true) return true;
138
+ if (msg.readOnly === true) return false;
139
+ return WRITE_COMMAND_TYPES.has(msg.type);
140
+ }
125
141
  // Annotate the CommonJS export names for ESM import in node:
126
142
  0 && (module.exports = {
127
143
  HEADLESS_TENANT_FETCH_HUNG_MARKER,
@@ -131,6 +147,8 @@ function readyProbeIsReady(probe) {
131
147
  SEMANTIC_READY_POLL_MS,
132
148
  SIM_LONG_PRESS_DEFAULT_MS,
133
149
  SIM_LONG_PRESS_MAX_MS,
150
+ WRITE_COMMAND_TYPES,
151
+ commandWritesSim,
134
152
  performStepRefusal,
135
153
  readyProbeContentBasis,
136
154
  readyProbeHasContent,
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.1644 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.1653 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
 
3
3
  // src/bridge-contract.ts
4
4
  var REFUSED_PERFORM_STEP_TYPES = [
@@ -87,6 +87,20 @@ function readyProbeHasContent(probe) {
87
87
  function readyProbeIsReady(probe) {
88
88
  return readyProbeContentBasis(probe) !== "" && probe.externalReady !== false && !probe.externalError && !probe.loadingText;
89
89
  }
90
+ var WRITE_COMMAND_TYPES = /* @__PURE__ */ new Set([
91
+ "tap",
92
+ "keyboard",
93
+ "longPress",
94
+ "perform",
95
+ "reset",
96
+ "camera"
97
+ ]);
98
+ function commandWritesSim(msg) {
99
+ if (typeof msg.type !== "string") return false;
100
+ if (msg.acquireLock === true) return true;
101
+ if (msg.readOnly === true) return false;
102
+ return WRITE_COMMAND_TYPES.has(msg.type);
103
+ }
90
104
  export {
91
105
  HEADLESS_TENANT_FETCH_HUNG_MARKER,
92
106
  REFUSED_PERFORM_STEP_TYPES,
@@ -95,6 +109,8 @@ export {
95
109
  SEMANTIC_READY_POLL_MS,
96
110
  SIM_LONG_PRESS_DEFAULT_MS,
97
111
  SIM_LONG_PRESS_MAX_MS,
112
+ WRITE_COMMAND_TYPES,
113
+ commandWritesSim,
98
114
  performStepRefusal,
99
115
  readyProbeContentBasis,
100
116
  readyProbeHasContent,