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.
- package/README.md +12 -0
- package/cli/app-catalog.ts +1 -1
- package/cli/app-fonts.ts +11 -80
- package/cli/app-splash.ts +18 -12
- package/cli/bridge-flow-runner.ts +11 -7
- package/cli/cloud-client.ts +10 -13
- package/cli/command-registry.ts +13 -4
- package/cli/commands/box.ts +4 -4
- package/cli/commands/control.ts +93 -53
- package/cli/commands/coverage-parser.ts +67 -0
- package/cli/commands/coverage.ts +550 -0
- package/cli/commands/debug.ts +9 -18
- package/cli/commands/desktop.ts +19 -7
- package/cli/commands/device.ts +14 -9
- package/cli/commands/guest-host.ts +6 -10
- package/cli/commands/inspect/core.ts +81 -17
- package/cli/commands/inspect.ts +13 -8
- package/cli/commands/kotlin.ts +2 -2
- package/cli/commands/maestro-compare.ts +1 -1
- package/cli/commands/platform.ts +20 -11
- package/cli/commands/preview.ts +16 -18
- package/cli/commands/runtime.ts +3 -2
- package/cli/commands/screenshot-layers.ts +1 -1
- package/cli/commands/screenshot.ts +1 -1
- package/cli/commands/serve.ts +5 -1
- package/cli/commands/support.ts +4 -4
- package/cli/commands/three-mode.ts +22 -15
- package/cli/commands/upload.ts +44 -45
- package/cli/current-sim.ts +38 -0
- package/cli/desktop-companion.ts +36 -8
- package/cli/device-option.ts +1 -1
- package/cli/drivers/playwright.ts +1 -0
- package/cli/drivers/types.ts +4 -0
- package/cli/help-core.ts +1 -1
- package/cli/internal-child.ts +2 -1
- package/cli/main.ts +9 -3
- package/cli/outbound-endpoints.ts +11 -3
- package/cli/output-redaction.ts +39 -14
- package/cli/remote-simulators.ts +4 -1
- package/cli/scene-video.ts +5 -2
- package/cli/send-to-box.ts +7 -10
- package/cli/telemetry.ts +1 -1
- package/cli/ws-bridge.ts +8 -1
- package/detox/attempt-events.cjs +3 -1
- package/detox/attempt-events.d.cts +1 -1
- package/detox/expectations.ts +108 -99
- package/detox/frame-offset.d.mts +6 -0
- package/detox/frame-offset.mjs +35 -0
- package/detox/gestures.ts +6 -18
- package/detox/index.ts +169 -101
- package/detox/jest-preset.cjs +1 -3
- package/detox/jest-transform.cjs +4 -0
- package/detox/matchers.ts +3 -0
- package/detox/motion-change.cjs +46 -114
- package/detox/motion-change.d.cts +5 -27
- package/dist-lib/agent-daemon-client.cjs +1 -1
- package/dist-lib/agent-events.cjs +1 -1
- package/dist-lib/attached-projects.cjs +1 -1
- package/dist-lib/auth/shared-session.cjs +1 -1
- package/dist-lib/backend-origin.cjs +1 -1
- package/dist-lib/beta.cjs +1 -1
- package/dist-lib/beta.mjs +1 -1
- package/dist-lib/bridge-constants.cjs +1 -1
- package/dist-lib/bridge-contract-input.cjs +65 -1
- package/dist-lib/bridge-contract-input.mjs +63 -1
- package/dist-lib/bridge-contract.cjs +19 -1
- package/dist-lib/bridge-contract.mjs +17 -1
- package/dist-lib/bundle-channel.cjs +38091 -14846
- package/dist-lib/capture-contract.cjs +1 -1
- package/dist-lib/capture-contract.mjs +1 -1
- package/dist-lib/cloud-contract.cjs +1 -1
- package/dist-lib/cloud-contract.mjs +1 -1
- package/dist-lib/cloud-test-args.cjs +1 -1
- package/dist-lib/cloud-test-args.mjs +1 -1
- package/dist-lib/cloud.cjs +1 -1
- package/dist-lib/cloud.mjs +1 -1
- package/dist-lib/config.cjs +1 -1
- package/dist-lib/config.mjs +5 -3
- package/dist-lib/detox/index.cjs +1244 -4509
- package/dist-lib/detox/jest-preset.cjs +1 -3
- package/dist-lib/detox/jest-transform.cjs +4 -0
- package/dist-lib/dev-bundle-resolution.cjs +28 -24
- package/dist-lib/expo-swift-bundle.cjs +35049 -13125
- package/dist-lib/expo-swift-metadata.cjs +1 -1
- package/dist-lib/expo-swift-metadata.mjs +1 -1
- package/dist-lib/home-paths.cjs +1 -1
- package/dist-lib/host/bridge-host.cjs +45112 -63143
- package/dist-lib/host/fetch-proxy-handler.cjs +3544 -11
- package/dist-lib/host/fetch-proxy-overrides.cjs +1 -1
- package/dist-lib/host/fetch-proxy-overrides.mjs +1 -1
- package/dist-lib/host/replacement-module-handler.cjs +1 -1
- package/dist-lib/host/websocket-proxy.cjs +1 -1
- package/dist-lib/index.cjs +1909 -2029
- package/dist-lib/jump-to-source-babel.cjs +1 -1
- package/dist-lib/jump-to-source-native.cjs +1 -1
- package/dist-lib/kotlin-host.cjs +2 -2
- package/dist-lib/menu.cjs +1 -1
- package/dist-lib/menu.mjs +1 -1
- package/dist-lib/metro-fingerprint-registry.cjs +1 -1
- package/dist-lib/metro-fingerprint-registry.mjs +1 -1
- package/dist-lib/metro-production-bundle.cjs +1 -1
- package/dist-lib/metro-production-bundle.mjs +1 -1
- package/dist-lib/metro.cjs +380 -522
- package/dist-lib/native-app-identity-project.cjs +39 -252
- package/dist-lib/native-app-identity-project.mjs +1174 -11
- package/dist-lib/native-app-identity.cjs +8 -3
- package/dist-lib/native-app-identity.mjs +8 -3
- package/dist-lib/native-firebase-metadata.cjs +1 -1
- package/dist-lib/native-firebase-metadata.mjs +1 -1
- package/dist-lib/plist.cjs +2 -244
- package/dist-lib/plist.mjs +1 -1
- package/dist-lib/profiles.cjs +1 -1
- package/dist-lib/public-brand.cjs +1 -1
- package/dist-lib/public-origins-lib-esm.json +290 -0
- package/dist-lib/public-origins-lib-static.json +1 -0
- package/dist-lib/public-origins-lib.json +1852 -0
- package/dist-lib/react-native-host-modules.cjs +1 -1
- package/dist-lib/react-native-host-modules.mjs +1 -1
- package/dist-lib/scripts/dev-server-scanner.cjs +14 -253
- package/dist-lib/sdk.cjs +83 -16
- package/dist-lib/sdk.mjs +81 -15
- package/dist-lib/skills.cjs +50546 -75098
- package/dist-lib/swift-compile.cjs +25897 -1070
- package/dist-lib/swift-compile.mjs +25866 -1033
- package/dist-lib/swift-package.cjs +79 -1
- package/dist-lib/swift-package.mjs +75 -1
- package/dist-lib/swift-submit.cjs +1 -1
- package/dist-lib/swift-submit.mjs +1 -1
- package/dist-lib/swift-toolchain.cjs +1 -1
- package/dist-lib/swift.cjs +1 -1
- package/dist-lib/vite-swift.cjs +34273 -12349
- package/dist-lib/vite.cjs +373 -298
- package/dist-lib/worklet-executable.cjs +1 -1
- package/dist-lib/worklet-executable.mjs +1 -1
- package/dist-types/packages/peach-compat/src/engine-config.d.ts +2 -0
- package/dist-types/packages/peach-compat/src/stubs/form-sheet-spring.d.ts +9 -0
- package/dist-types/packages/peach-compat/src/stubs/native-evaluation-lease.d.ts +47 -0
- package/dist-types/packages/peach-compat/src/stubs/native-seams/react-native-cookies.d.ts +113 -0
- package/dist-types/packages/peach-compat/src/stubs/native-seams/react-native-gesture-handler.d.ts +154 -0
- package/dist-types/packages/peach-compat/src/stubs/screen-transition-math.d.ts +756 -0
- package/dist-types/packages/peach-compat/src/stubs/transition-scalar.d.ts +25 -0
- package/dist-types/packages/peach-engine/src/billing/plans.d.ts +64 -0
- package/dist-types/packages/peach-engine/src/browser-page-target.d.ts +2 -0
- package/dist-types/packages/peach-engine/src/bundle-platform-url.d.ts +3 -0
- package/dist-types/packages/peach-engine/src/capture/browser-accessibility-host.d.ts +3 -0
- package/dist-types/packages/peach-engine/src/capture/browser-composite.d.ts +55 -0
- package/dist-types/packages/peach-engine/src/capture/browserAccessibilityContract.d.ts +27 -0
- package/dist-types/packages/peach-engine/src/capture/nativeScreenCaptureContract.d.ts +22 -0
- package/dist-types/packages/peach-engine/src/cli-companion.d.ts +36 -0
- package/dist-types/packages/peach-engine/src/components/native-ui/webview-frame-bridge.d.ts +34 -0
- package/dist-types/packages/peach-engine/src/config.d.ts +5 -0
- package/dist-types/packages/peach-engine/src/engine/android-stretch-effect.d.ts +57 -0
- package/dist-types/packages/peach-engine/src/engine/animated-driven-style.d.ts +47 -0
- package/dist-types/packages/peach-engine/src/engine/animated-value.d.ts +5 -0
- package/dist-types/packages/peach-engine/src/engine/animated.d.ts +195 -0
- package/dist-types/packages/peach-engine/src/engine/animation-clockContract.d.ts +15 -0
- package/dist-types/packages/peach-engine/src/engine/animation-graph.d.ts +148 -0
- package/dist-types/packages/peach-engine/src/engine/app-catalog-wire.d.ts +10 -0
- package/dist-types/packages/peach-engine/src/engine/app-font-registry.d.ts +87 -0
- package/dist-types/packages/peach-engine/src/engine/attributed-paragraph-paint.d.ts +7 -0
- package/dist-types/packages/peach-engine/src/engine/attributed-paragraph.d.ts +123 -0
- package/dist-types/packages/peach-engine/src/engine/audioContract.d.ts +16 -0
- package/dist-types/packages/peach-engine/src/engine/canvaskit-api.d.ts +93 -0
- package/dist-types/packages/peach-engine/src/engine/canvaskit-renderer.d.ts +216 -0
- package/dist-types/packages/peach-engine/src/engine/config-plugin-fonts.d.ts +40 -0
- package/dist-types/packages/peach-engine/src/engine/config-plugin-splash.d.ts +25 -0
- package/dist-types/packages/peach-engine/src/engine/cull-visibility.d.ts +44 -0
- package/dist-types/packages/peach-engine/src/engine/damage-rect.d.ts +19 -0
- package/dist-types/packages/peach-engine/src/engine/engine-resource.d.ts +6 -0
- package/dist-types/packages/peach-engine/src/engine/expo-manifest.d.ts +5 -0
- package/dist-types/packages/peach-engine/src/engine/fiber-debug-metadata.d.ts +30 -0
- package/dist-types/packages/peach-engine/src/engine/font-config.d.ts +139 -0
- package/dist-types/packages/peach-engine/src/engine/generated/sf-pro-font.d.ts +1 -0
- package/dist-types/packages/peach-engine/src/engine/glass-material.d.ts +31 -0
- package/dist-types/packages/peach-engine/src/engine/host-composite.d.ts +100 -0
- package/dist-types/packages/peach-engine/src/engine/hosted-semantics.d.ts +49 -0
- package/dist-types/packages/peach-engine/src/engine/image-audit.d.ts +70 -0
- package/dist-types/packages/peach-engine/src/engine/image-loader.d.ts +350 -0
- package/dist-types/packages/peach-engine/src/engine/inspect-info.d.ts +27 -0
- package/dist-types/packages/peach-engine/src/engine/inspect-outline.d.ts +14 -0
- package/dist-types/packages/peach-engine/src/engine/inspect-visibility.d.ts +33 -0
- package/dist-types/packages/peach-engine/src/engine/ios-fast-scroll.d.ts +16 -0
- package/dist-types/packages/peach-engine/src/engine/layout-sab.d.ts +43 -0
- package/dist-types/packages/peach-engine/src/engine/liquid-glass-rect.d.ts +23 -0
- package/dist-types/packages/peach-engine/src/engine/liquid-glass-shaders.d.ts +9 -0
- package/dist-types/packages/peach-engine/src/engine/liquid-glass.d.ts +283 -0
- package/dist-types/packages/peach-engine/src/engine/live-object-counts.d.ts +6 -0
- package/dist-types/packages/peach-engine/src/engine/lottie-runtime.d.ts +32 -0
- package/dist-types/packages/peach-engine/src/engine/lottie-types.d.ts +138 -0
- package/dist-types/packages/peach-engine/src/engine/memory-counts.d.ts +27 -0
- package/dist-types/packages/peach-engine/src/engine/metalDirectContract.d.ts +108 -0
- package/dist-types/packages/peach-engine/src/engine/metalShaderContract.d.ts +217 -0
- package/dist-types/packages/peach-engine/src/engine/native-animation-driver.d.ts +112 -0
- package/dist-types/packages/peach-engine/src/engine/native-animation-graph.d.ts +62 -0
- package/dist-types/packages/peach-engine/src/engine/native-layout.d.ts +133 -0
- package/dist-types/packages/peach-engine/src/engine/native-resources.d.ts +26 -0
- package/dist-types/packages/peach-engine/src/engine/nativeReanimatedContract.d.ts +25 -0
- package/dist-types/packages/peach-engine/src/engine/nativeReplayContract.d.ts +64 -0
- package/dist-types/packages/peach-engine/src/engine/node.d.ts +589 -0
- package/dist-types/packages/peach-engine/src/engine/paint-boundary-types.d.ts +112 -0
- package/dist-types/packages/peach-engine/src/engine/paint-boundary.d.ts +57 -0
- package/dist-types/packages/peach-engine/src/engine/portalContract.d.ts +21 -0
- package/dist-types/packages/peach-engine/src/engine/portals.d.ts +20 -0
- package/dist-types/packages/peach-engine/src/engine/render-damage.d.ts +107 -0
- package/dist-types/packages/peach-engine/src/engine/riveContract.d.ts +420 -0
- package/dist-types/packages/peach-engine/src/engine/rn-spring.d.ts +51 -0
- package/dist-types/packages/peach-engine/src/engine/scene-table.d.ts +379 -0
- package/dist-types/packages/peach-engine/src/engine/scroll-momentum-math.d.ts +152 -0
- package/dist-types/packages/peach-engine/src/engine/scroll-pan-contacts.d.ts +10 -0
- package/dist-types/packages/peach-engine/src/engine/scroll-platform.d.ts +75 -0
- package/dist-types/packages/peach-engine/src/engine/scroll-range.d.ts +14 -0
- package/dist-types/packages/peach-engine/src/engine/scroll-velocity.d.ts +14 -0
- package/dist-types/packages/peach-engine/src/engine/scroll.d.ts +320 -0
- package/dist-types/packages/peach-engine/src/engine/signal.d.ts +7 -0
- package/dist-types/packages/peach-engine/src/engine/snapshot-cache-policy.d.ts +6 -0
- package/dist-types/packages/peach-engine/src/engine/svg-geometry.d.ts +41 -0
- package/dist-types/packages/peach-engine/src/engine/text-attachment-paragraphs.d.ts +10 -0
- package/dist-types/packages/peach-engine/src/engine/text-decoration.d.ts +11 -0
- package/dist-types/packages/peach-engine/src/engine/text-line-break.d.ts +22 -0
- package/dist-types/packages/peach-engine/src/engine/text-paint-receipt.d.ts +98 -0
- package/dist-types/packages/peach-engine/src/engine/text-paragraph.d.ts +11 -0
- package/dist-types/packages/peach-engine/src/engine/text-paragraphContract.d.ts +34 -0
- package/dist-types/packages/peach-engine/src/engine/text-transform.d.ts +1 -0
- package/dist-types/packages/peach-engine/src/engine/types.d.ts +657 -0
- package/dist-types/packages/peach-engine/src/engine/visible-frame.d.ts +54 -0
- package/dist-types/packages/peach-engine/src/engine/webrtcContract.d.ts +74 -0
- package/dist-types/packages/peach-engine/src/graphite-stats-fields.d.ts +184 -0
- package/dist-types/packages/peach-engine/src/guest-import-meta.d.ts +12 -0
- package/dist-types/packages/peach-engine/src/guest-module-overrides.d.ts +7 -0
- package/dist-types/packages/peach-engine/src/ios/app-card-types.d.ts +7 -0
- package/dist-types/packages/peach-engine/src/ios/apps/canvas-map-data.d.ts +177 -0
- package/dist-types/packages/peach-engine/src/ios/aux-home-scene.d.ts +54 -0
- package/dist-types/packages/peach-engine/src/ios/chrome-metrics.d.ts +47 -0
- package/dist-types/packages/peach-engine/src/ios/constants.d.ts +21 -0
- package/dist-types/packages/peach-engine/src/ios/duo-housing.d.ts +37 -0
- package/dist-types/packages/peach-engine/src/ios/home/types.d.ts +29 -0
- package/dist-types/packages/peach-engine/src/ios/home-app-catalog.d.ts +43 -0
- package/dist-types/packages/peach-engine/src/ios/photo-store.d.ts +73 -0
- package/dist-types/packages/peach-engine/src/ios/photoLibraryContract.d.ts +166 -0
- package/dist-types/packages/peach-engine/src/ios/shell-controller-types.d.ts +21 -0
- package/dist-types/packages/peach-engine/src/ios/shell-transition-debug.d.ts +18 -0
- package/dist-types/packages/peach-engine/src/metro-asset-path.d.ts +21 -0
- package/dist-types/packages/peach-engine/src/metro-fingerprint-registry-client.d.ts +11 -0
- package/dist-types/packages/peach-engine/src/metro-fingerprint.d.ts +38 -0
- package/dist-types/packages/peach-engine/src/native-preview-bundle.d.ts +44 -0
- package/dist-types/packages/peach-engine/src/observability/types.d.ts +74 -0
- package/dist-types/packages/peach-engine/src/peach-warm-manifest.d.ts +32 -0
- package/dist-types/packages/peach-engine/src/permissions/app-settings-client.d.ts +25 -0
- package/dist-types/packages/peach-engine/src/permissions/system-permission-types.d.ts +20 -0
- package/dist-types/packages/peach-engine/src/platform/android-back-panel.d.ts +131 -0
- package/dist-types/packages/peach-engine/src/platform/android-gesture-exclusion.d.ts +28 -0
- package/dist-types/packages/peach-engine/src/platform/android-predictive-back.d.ts +33 -0
- package/dist-types/packages/peach-engine/src/platform/system-bars-state.d.ts +14 -0
- package/dist-types/packages/peach-engine/src/playwright-sim-host.d.ts +1 -0
- package/dist-types/packages/peach-engine/src/preview/bundle-layout.d.ts +8 -0
- package/dist-types/packages/peach-engine/src/preview/bundle-variantContract.d.ts +24 -0
- package/dist-types/packages/peach-engine/src/preview/capture-bundle.d.ts +26 -0
- package/dist-types/packages/peach-engine/src/preview/compress-node.d.ts +2 -0
- package/dist-types/packages/peach-engine/src/preview/compress.d.ts +2 -0
- package/dist-types/packages/peach-engine/src/preview/presigned-upload.d.ts +60 -0
- package/dist-types/packages/peach-engine/src/preview/trace.d.ts +144 -0
- package/dist-types/packages/peach-engine/src/preview/upload-protocol.d.ts +152 -0
- package/dist-types/packages/peach-engine/src/profiler/animation-recording-loader.d.ts +1 -0
- package/dist-types/packages/peach-engine/src/profiler/profile-trace.d.ts +4 -0
- package/dist-types/packages/peach-engine/src/react-bridge.d.ts +3 -0
- package/dist-types/packages/peach-engine/src/react-native/AppState.d.ts +45 -0
- package/dist-types/packages/peach-engine/src/react-native/Appearance.d.ts +34 -0
- package/dist-types/packages/peach-engine/src/react-native/framework-colors-data.d.ts +2 -0
- package/dist-types/packages/peach-engine/src/react-native/host-services.d.ts +42 -0
- package/dist-types/packages/peach-engine/src/react-native/layout-animation.d.ts +22 -0
- package/dist-types/packages/peach-engine/src/react-native/platform-colors.d.ts +17 -0
- package/dist-types/packages/peach-engine/src/remote-stream/client-config.d.ts +10 -0
- package/dist-types/packages/peach-engine/src/remote-stream/cloud-display.d.ts +58 -0
- package/dist-types/packages/peach-engine/src/remote-stream/scene-recording.d.ts +45 -0
- package/dist-types/packages/peach-engine/src/render-worker/animated-drive-output.d.ts +35 -0
- package/dist-types/packages/peach-engine/src/render-worker/app-load.d.ts +16 -0
- package/dist-types/packages/peach-engine/src/render-worker/aux-surface-types.d.ts +2 -0
- package/dist-types/packages/peach-engine/src/render-worker/canvaskit-shared.d.ts +42 -0
- package/dist-types/packages/peach-engine/src/render-worker/canvaskit-webgpu.d.ts +434 -0
- package/dist-types/packages/peach-engine/src/render-worker/canvaskit-worker-init.d.ts +12 -0
- package/dist-types/packages/peach-engine/src/render-worker/compositor-backend.d.ts +31 -0
- package/dist-types/packages/peach-engine/src/render-worker/compositor-gpu.d.ts +202 -0
- package/dist-types/packages/peach-engine/src/render-worker/compositor-protocol.d.ts +1945 -0
- package/dist-types/packages/peach-engine/src/render-worker/compositor-runtime/scroll-drag-resample.d.ts +44 -0
- package/dist-types/packages/peach-engine/src/render-worker/css-keyframes-drive.d.ts +36 -0
- package/dist-types/packages/peach-engine/src/render-worker/edit-menu-geometry.d.ts +8 -0
- package/dist-types/packages/peach-engine/src/render-worker/engine-resource-relay.d.ts +21 -0
- package/dist-types/packages/peach-engine/src/render-worker/expo-widgetContract.d.ts +16 -0
- package/dist-types/packages/peach-engine/src/render-worker/gesture-seam-protocol.d.ts +152 -0
- package/dist-types/packages/peach-engine/src/render-worker/graph-linked-value.d.ts +29 -0
- package/dist-types/packages/peach-engine/src/render-worker/graphite-pipeline-compiler-contract.d.ts +49 -0
- package/dist-types/packages/peach-engine/src/render-worker/graphite-pipeline-compiler.d.ts +12 -0
- package/dist-types/packages/peach-engine/src/render-worker/host-service-protocol.d.ts +756 -0
- package/dist-types/packages/peach-engine/src/render-worker/image-lifecycle-event.d.ts +22 -0
- package/dist-types/packages/peach-engine/src/render-worker/image-pixel-contract.d.ts +48 -0
- package/dist-types/packages/peach-engine/src/render-worker/live-frame-mirror.d.ts +34 -0
- package/dist-types/packages/peach-engine/src/render-worker/map-command-channel.d.ts +189 -0
- package/dist-types/packages/peach-engine/src/render-worker/mapNativeContract.d.ts +101 -0
- package/dist-types/packages/peach-engine/src/render-worker/native-dynamic-synchronizable.d.ts +22 -0
- package/dist-types/packages/peach-engine/src/render-worker/native-menu-gesture.d.ts +9 -0
- package/dist-types/packages/peach-engine/src/render-worker/native-ui-commandContract.d.ts +23 -0
- package/dist-types/packages/peach-engine/src/render-worker/native-ui-protocol.d.ts +1087 -0
- package/dist-types/packages/peach-engine/src/render-worker/native-widgetContract.d.ts +100 -0
- package/dist-types/packages/peach-engine/src/render-worker/nativeAnimMirrorContract.d.ts +174 -0
- package/dist-types/packages/peach-engine/src/render-worker/nativeSyncReplyContract.d.ts +11 -0
- package/dist-types/packages/peach-engine/src/render-worker/one-native-contentContract.d.ts +54 -0
- package/dist-types/packages/peach-engine/src/render-worker/pointerSampleContract.d.ts +14 -0
- package/dist-types/packages/peach-engine/src/render-worker/protocol.d.ts +880 -0
- package/dist-types/packages/peach-engine/src/render-worker/reanimated-css-contract.d.ts +63 -0
- package/dist-types/packages/peach-engine/src/render-worker/reanimated-readiness.d.ts +29 -0
- package/dist-types/packages/peach-engine/src/render-worker/resilient-frame-clock.d.ts +22 -0
- package/dist-types/packages/peach-engine/src/render-worker/retained-app-load.d.ts +20 -0
- package/dist-types/packages/peach-engine/src/render-worker/screen-edge-swipe-commit-protocol.d.ts +1 -0
- package/dist-types/packages/peach-engine/src/render-worker/screen-form-sheet-commit-protocol.d.ts +26 -0
- package/dist-types/packages/peach-engine/src/render-worker/scroll-mirror-tenant.d.ts +37 -0
- package/dist-types/packages/peach-engine/src/render-worker/scroll-mirror.d.ts +164 -0
- package/dist-types/packages/peach-engine/src/render-worker/shell-event-registry.d.ts +119 -0
- package/dist-types/packages/peach-engine/src/render-worker/shell-gesture-regions.d.ts +41 -0
- package/dist-types/packages/peach-engine/src/render-worker/shell-protocol.d.ts +603 -0
- package/dist-types/packages/peach-engine/src/render-worker/shell-scene-schema.d.ts +101 -0
- package/dist-types/packages/peach-engine/src/render-worker/shell-tree-inline-sources.d.ts +13 -0
- package/dist-types/packages/peach-engine/src/render-worker/shell-tree-wire.d.ts +87 -0
- package/dist-types/packages/peach-engine/src/render-worker/test-bridge-protocol.d.ts +47 -0
- package/dist-types/packages/peach-engine/src/render-worker/text-inputContract.d.ts +93 -0
- package/dist-types/packages/peach-engine/src/render-worker/tree-sync-port.d.ts +102 -0
- package/dist-types/packages/peach-engine/src/render-worker/webgpu-frame-transaction.d.ts +292 -0
- package/dist-types/packages/peach-engine/src/render-worker/webgpu-readback-scheduler.d.ts +107 -0
- package/dist-types/packages/peach-engine/src/render-worker/webview-capture-protocol.d.ts +16 -0
- package/dist-types/packages/peach-engine/src/render-worker/worker-input-runtime.d.ts +211 -0
- package/dist-types/packages/peach-engine/src/render-worker/worker-storage.d.ts +33 -0
- package/dist-types/packages/peach-engine/src/render-worker/worklet-runtime.d.ts +987 -0
- package/dist-types/packages/peach-engine/src/render-worker/worklet-sab.d.ts +24 -0
- package/dist-types/packages/peach-engine/src/rolldown-bundle-inventory.d.ts +84 -0
- package/dist-types/packages/peach-engine/src/rolldown-production-fingerprint.d.ts +31 -0
- package/dist-types/packages/peach-engine/src/screenshots/timeline-assets.d.ts +10 -0
- package/dist-types/packages/peach-engine/src/screenshots/tokens.d.ts +9 -0
- package/dist-types/packages/peach-engine/src/settings/devices.d.ts +70 -0
- package/dist-types/packages/peach-engine/src/settings/duo-fold-bus.d.ts +87 -0
- package/dist-types/packages/peach-engine/src/settings/interface-rotation.d.ts +30 -0
- package/dist-types/packages/peach-engine/src/settings/react-native-configuration.d.ts +12 -0
- package/dist-types/packages/peach-engine/src/settings/scene-geometryContract.d.ts +40 -0
- package/dist-types/packages/peach-engine/src/settings/store.d.ts +37 -0
- package/dist-types/packages/peach-engine/src/shell-events.d.ts +203 -0
- package/dist-types/packages/peach-engine/src/shell-intent.d.ts +68 -0
- package/dist-types/packages/peach-engine/src/sootsim-event.d.ts +35 -0
- package/dist-types/packages/peach-engine/src/top-overlay-state.d.ts +5 -0
- package/dist-types/packages/peach-engine/src/web-authentication-automation-host.d.ts +2 -0
- package/dist-types/packages/peach-engine/src/webAuthenticationContract.d.ts +34 -0
- package/dist-types/packages/peach-engine/src/webview-automation-host.d.ts +180 -0
- package/dist-types/packages/peach-engine/src/wireframe-mode.d.ts +16 -0
- package/dist-types/packages/peach-globals/src/frameBreakdownContract.d.ts +16 -0
- package/dist-types/packages/peach-globals/src/index.d.ts +3311 -0
- package/dist-types/packages/peach-globals/src/nativeSurfaceContract.d.ts +76 -0
- package/dist-types/packages/peach-globals/src/pointerSourceEventContract.d.ts +8 -0
- package/dist-types/packages/peach-globals/src/profileTrace.d.ts +11 -0
- package/dist-types/packages/peach-globals/src/profilerContract.d.ts +223 -0
- package/dist-types/packages/peach-kit/src/capabilities.d.ts +721 -0
- package/dist-types/packages/peach-kit/src/internal.d.ts +4 -0
- package/dist-types/packages/peach-kit/src/materials/types.d.ts +27 -0
- package/dist-types/packages/peach-kit/src/materials/uikit-blur-material.d.ts +14 -0
- package/dist-types/packages/peach-kit/src/navigation-types.d.ts +11 -0
- package/dist-types/packages/peach-kit/src/react-bridge.d.ts +53 -0
- package/dist-types/packages/peach-kit/src/runtime.d.ts +26 -0
- package/dist-types/packages/peach-kit/src/ui/hosting-safe-area.d.ts +24 -0
- package/dist-types/packages/peach-kit/src/ui/popover-placement.d.ts +53 -0
- package/dist-types/packages/peach-kit/src/ui/presentationContract.d.ts +17 -0
- package/kotlin/ComposeSources/PeachComposeHost.kt +1 -1
- package/kotlin/JniSources/com/facebook/jni/HybridData.kt +0 -2
- package/kotlin/JniSources/dev/peach/jni/NativeBindings.kt +0 -2
- package/kotlin/JniTransportSources/dev/peach/jni/integration/JniTransport.kt +0 -2
- package/kotlin/README.md +6 -0
- package/package.json +22 -2
- package/runtime-companion.json +1 -0
- package/skills/contrast/SKILL.md +1 -0
- package/src/assetCatalogContract.ts +21 -0
- package/src/bridge-contract-input.ts +84 -0
- package/src/bridge-contract.ts +35 -3
- package/src/browser-launch-policy.ts +1 -0
- package/src/bundle-channel.mjs +4 -2
- package/src/cli-runtime.ts +55 -0
- package/src/crash-fingerprint.ts +26 -0
- package/src/dev-bundle-resolution.ts +50 -23
- package/src/device-catalog.ts +1159 -0
- package/src/host/bridge-host.ts +3 -26
- package/src/host/browser-pointer.ts +71 -0
- package/src/host/dev-server-package-versions.ts +23 -0
- package/src/host/fetch-proxy-handler.ts +17 -4
- package/src/installed-package-versions.ts +142 -38
- package/src/kotlin-host.ts +1 -1
- package/src/metro-plugin.ts +4 -4
- package/src/metro-project-root.ts +68 -0
- package/src/nitro-adapter.lock.json +26 -0
- package/src/nitro-adapter.ts +103 -0
- package/src/nitro-bundle.ts +24 -10
- package/src/nitro-compile.ts +33 -51
- package/src/nitro-source.ts +177 -96
- package/src/nitroAdapterContract.ts +217 -0
- package/src/nitroContract.ts +24 -11
- package/src/process-group.ts +41 -34
- package/src/react-bridge-importers.ts +28 -0
- package/src/reactNativeConfigurationContract.ts +36 -0
- package/src/runtime-assets.ts +7 -2
- package/src/runtime-delivery.ts +2 -0
- package/src/runtimePlatformContract.ts +70 -0
- package/src/screenshots/frame-compose.ts +42 -43
- package/src/screenshots/org-deck.ts +9 -4
- package/src/screenshots/preset-names.ts +29 -0
- package/src/screenshots/registry.ts +5 -5
- package/src/screenshots/schema.ts +1 -1
- package/src/screenshots/screenshotContract.ts +971 -0
- package/src/settings-flags.ts +107 -0
- package/src/settingsContract.ts +609 -0
- package/src/storageSnapshotContract.ts +344 -0
- package/src/stub-pattern-matcher.ts +550 -0
- package/src/swift-compile.ts +908 -40
- package/src/swift-compiler-digest.ts +13 -1
- package/src/swift-distribution.lock.json +49 -22
- package/src/swift-host.ts +167 -52
- package/src/swift-objc-compile.ts +54 -24
- package/src/swift-objc-export.ts +532 -0
- package/src/swift-objc-import.ts +769 -0
- package/src/swift-objc-metadata.ts +285 -10
- package/src/swift-objc-sdk.ts +13970 -158
- package/src/swift-objc-standin.ts +137 -1
- package/src/swift-package.ts +94 -0
- package/src/swift-packages.ts +5 -5
- package/src/swift-submit.ts +6 -0
- package/src/swiftContract.ts +99 -0
- package/src/target-matcher.ts +6 -1
- package/src/vite-plugin.ts +14 -40
- package/src/worker-system-chunks.ts +1 -1
- package/src/workerChunkContract.ts +5 -0
- package/src/worklets-babel.ts +24 -5
- package/src/xcode-project.ts +36 -7
- package/src/xcode-target-members.ts +10 -3
- package/cli/drivers/playwright-sim-host.ts +0 -825
- package/kotlin/fixtures/counter/Counter.d.kt.ts +0 -17
- package/kotlin/fixtures/counter/Counter.kt +0 -51
- package/kotlin/fixtures/counter/CounterApp.native.tsx +0 -61
- package/kotlin/fixtures/counter/CounterApp.tsx +0 -3
- package/kotlin/fixtures/counter/CounterScreen.d.kt.ts +0 -8
- package/kotlin/fixtures/counter/CounterScreen.kt +0 -56
- package/kotlin/fixtures/counter/app/_layout.tsx +0 -4
- package/kotlin/fixtures/counter/app/index+spa.tsx +0 -1
- package/kotlin/fixtures/counter/app/routes.d.ts +0 -18
- package/kotlin/fixtures/counter/package.json +0 -20
- package/kotlin/fixtures/counter/tsconfig.json +0 -19
- package/kotlin/fixtures/counter/vite.config.ts +0 -20
- package/kotlin/fixtures/headless-counter/Headless.kt +0 -234
- package/kotlin/fixtures/import-animation/Animation.d.kt.ts +0 -7
- package/kotlin/fixtures/import-animation/Animation.kt +0 -80
- package/kotlin/fixtures/import-animation/ImportAnimation.native.tsx +0 -13
- package/kotlin/fixtures/import-animation/README.md +0 -24
- package/kotlin/fixtures/import-animation/app/_layout.tsx +0 -4
- package/kotlin/fixtures/import-animation/app/index+spa.tsx +0 -1
- package/kotlin/fixtures/import-animation/app/routes.d.ts +0 -18
- package/kotlin/fixtures/import-animation/package.json +0 -23
- package/kotlin/fixtures/import-animation/tsconfig.json +0 -20
- package/kotlin/fixtures/import-animation/vite.config.ts +0 -20
- package/kotlin/fixtures/import-drawing/Drawing.d.kt.ts +0 -7
- package/kotlin/fixtures/import-drawing/Drawing.kt +0 -101
- package/kotlin/fixtures/import-drawing/ImportDrawing.native.tsx +0 -18
- package/kotlin/fixtures/import-drawing/README.md +0 -34
- package/kotlin/fixtures/import-drawing/app/_layout.tsx +0 -4
- package/kotlin/fixtures/import-drawing/app/index+spa.tsx +0 -1
- package/kotlin/fixtures/import-drawing/package.json +0 -23
- package/kotlin/fixtures/import-drawing/tsconfig.json +0 -20
- package/kotlin/fixtures/import-drawing/vite.config.ts +0 -20
- package/kotlin/fixtures/import-editor/Editor.d.kt.ts +0 -7
- package/kotlin/fixtures/import-editor/Editor.kt +0 -59
- package/kotlin/fixtures/import-editor/ImportEditor.native.tsx +0 -23
- package/kotlin/fixtures/import-editor/README.md +0 -27
- package/kotlin/fixtures/import-editor/app/_layout.tsx +0 -4
- package/kotlin/fixtures/import-editor/app/index+spa.tsx +0 -1
- package/kotlin/fixtures/import-editor/package.json +0 -23
- package/kotlin/fixtures/import-editor/tsconfig.json +0 -20
- package/kotlin/fixtures/import-editor/vite.config.ts +0 -20
- package/kotlin/fixtures/import-effects/Effects.d.kt.ts +0 -7
- package/kotlin/fixtures/import-effects/Effects.kt +0 -87
- package/kotlin/fixtures/import-effects/ImportEffects.native.tsx +0 -13
- package/kotlin/fixtures/import-effects/README.md +0 -19
- package/kotlin/fixtures/import-effects/app/_layout.tsx +0 -4
- package/kotlin/fixtures/import-effects/app/index+spa.tsx +0 -1
- package/kotlin/fixtures/import-effects/package.json +0 -23
- package/kotlin/fixtures/import-effects/tsconfig.json +0 -20
- package/kotlin/fixtures/import-effects/vite.config.ts +0 -20
- package/kotlin/fixtures/import-layout/ImportLayout.native.tsx +0 -13
- package/kotlin/fixtures/import-layout/Layout.d.kt.ts +0 -7
- package/kotlin/fixtures/import-layout/Layout.kt +0 -72
- package/kotlin/fixtures/import-layout/README.md +0 -24
- package/kotlin/fixtures/import-layout/app/_layout.tsx +0 -4
- package/kotlin/fixtures/import-layout/app/index+spa.tsx +0 -1
- package/kotlin/fixtures/import-layout/package.json +0 -23
- package/kotlin/fixtures/import-layout/tsconfig.json +0 -20
- package/kotlin/fixtures/import-layout/vite.config.ts +0 -20
- package/kotlin/fixtures/import-navigation/ImportNavigation.native.tsx +0 -18
- package/kotlin/fixtures/import-navigation/Navigation.d.kt.ts +0 -7
- package/kotlin/fixtures/import-navigation/Navigation.kt +0 -104
- package/kotlin/fixtures/import-navigation/README.md +0 -31
- package/kotlin/fixtures/import-navigation/app/_layout.tsx +0 -4
- package/kotlin/fixtures/import-navigation/app/index+spa.tsx +0 -1
- package/kotlin/fixtures/import-navigation/package.json +0 -23
- package/kotlin/fixtures/import-navigation/tsconfig.json +0 -20
- package/kotlin/fixtures/import-navigation/vite.config.ts +0 -20
- package/kotlin/fixtures/import-overlays/ImportOverlays.native.tsx +0 -29
- package/kotlin/fixtures/import-overlays/Overlays.d.kt.ts +0 -7
- package/kotlin/fixtures/import-overlays/Overlays.kt +0 -93
- package/kotlin/fixtures/import-overlays/README.md +0 -34
- package/kotlin/fixtures/import-overlays/app/_layout.tsx +0 -4
- package/kotlin/fixtures/import-overlays/app/index+spa.tsx +0 -1
- package/kotlin/fixtures/import-overlays/package.json +0 -23
- package/kotlin/fixtures/import-overlays/tsconfig.json +0 -20
- package/kotlin/fixtures/import-overlays/vite.config.ts +0 -20
- package/kotlin/fixtures/import-resources/ImportResources.native.tsx +0 -18
- package/kotlin/fixtures/import-resources/README.md +0 -26
- package/kotlin/fixtures/import-resources/Resources.d.kt.ts +0 -6
- package/kotlin/fixtures/import-resources/Resources.kt +0 -72
- package/kotlin/fixtures/import-resources/app/_layout.tsx +0 -4
- package/kotlin/fixtures/import-resources/app/index+spa.tsx +0 -1
- package/kotlin/fixtures/import-resources/package.json +0 -23
- package/kotlin/fixtures/import-resources/tsconfig.json +0 -20
- package/kotlin/fixtures/import-resources/vite.config.ts +0 -20
- package/kotlin/fixtures/import-scroll/ImportNested.native.tsx +0 -10
- package/kotlin/fixtures/import-scroll/ImportScroll.native.tsx +0 -13
- package/kotlin/fixtures/import-scroll/Nested.d.kt.ts +0 -4
- package/kotlin/fixtures/import-scroll/Nested.kt +0 -64
- package/kotlin/fixtures/import-scroll/README.md +0 -38
- package/kotlin/fixtures/import-scroll/Scroll.d.kt.ts +0 -7
- package/kotlin/fixtures/import-scroll/Scroll.kt +0 -91
- package/kotlin/fixtures/import-scroll/app/_layout.tsx +0 -4
- package/kotlin/fixtures/import-scroll/app/index+spa.tsx +0 -1
- package/kotlin/fixtures/import-scroll/app/nested+spa.tsx +0 -1
- package/kotlin/fixtures/import-scroll/package.json +0 -23
- package/kotlin/fixtures/import-scroll/tsconfig.json +0 -20
- package/kotlin/fixtures/import-scroll/vite.config.ts +0 -20
- package/kotlin/fixtures/import-selection/ImportSelection.native.tsx +0 -44
- package/kotlin/fixtures/import-selection/README.md +0 -32
- package/kotlin/fixtures/import-selection/Selection.d.kt.ts +0 -8
- package/kotlin/fixtures/import-selection/Selection.kt +0 -78
- package/kotlin/fixtures/import-selection/app/_layout.tsx +0 -4
- package/kotlin/fixtures/import-selection/app/index+spa.tsx +0 -1
- package/kotlin/fixtures/import-selection/package.json +0 -23
- package/kotlin/fixtures/import-selection/tsconfig.json +0 -20
- package/kotlin/fixtures/import-selection/vite.config.ts +0 -20
- package/kotlin/fixtures/import-surfaces/ImportSurfaces.native.tsx +0 -13
- package/kotlin/fixtures/import-surfaces/README.md +0 -22
- package/kotlin/fixtures/import-surfaces/Surfaces.d.kt.ts +0 -7
- package/kotlin/fixtures/import-surfaces/Surfaces.kt +0 -64
- package/kotlin/fixtures/import-surfaces/app/_layout.tsx +0 -4
- package/kotlin/fixtures/import-surfaces/app/index+spa.tsx +0 -1
- package/kotlin/fixtures/import-surfaces/package.json +0 -23
- package/kotlin/fixtures/import-surfaces/tsconfig.json +0 -20
- package/kotlin/fixtures/import-surfaces/vite.config.ts +0 -20
- package/kotlin/fixtures/import-values/ImportValues.native.tsx +0 -61
- package/kotlin/fixtures/import-values/README.md +0 -28
- package/kotlin/fixtures/import-values/Values.d.kt.ts +0 -15
- package/kotlin/fixtures/import-values/Values.kt +0 -84
- package/kotlin/fixtures/import-values/app/_layout.tsx +0 -4
- package/kotlin/fixtures/import-values/app/index+spa.tsx +0 -1
- package/kotlin/fixtures/import-values/package.json +0 -23
- package/kotlin/fixtures/import-values/tsconfig.json +0 -20
- package/kotlin/fixtures/import-values/vite.config.ts +0 -20
- package/kotlin/fixtures/kotlin-app/app/build.gradle.kts +0 -30
- package/kotlin/fixtures/kotlin-app/app/src/main/AndroidManifest.xml +0 -13
- package/kotlin/fixtures/kotlin-app/app/src/main/java/dev/contrast/kotlinapp/MainActivity.kt +0 -60
- package/kotlin/fixtures/kotlin-app/app/src/main/java/dev/contrast/kotlinapp/ProbeApplication.kt +0 -18
- package/kotlin/fixtures/kotlin-app/build.gradle.kts +0 -5
- package/kotlin/fixtures/kotlin-app/gradle.properties +0 -4
- package/kotlin/fixtures/kotlin-app/settings.gradle.kts +0 -4
- package/kotlin/fixtures/kotlin-app-variants/Anim.kt +0 -62
- package/kotlin/fixtures/kotlin-app-variants/BarBehavior.kt +0 -38
- package/kotlin/fixtures/kotlin-app-variants/BarVisibility.kt +0 -36
- package/kotlin/fixtures/kotlin-app-variants/Bitmaps.kt +0 -50
- package/kotlin/fixtures/kotlin-app-variants/Browse.kt +0 -73
- package/kotlin/fixtures/kotlin-app-variants/Colors.kt +0 -41
- package/kotlin/fixtures/kotlin-app-variants/Controls.kt +0 -62
- package/kotlin/fixtures/kotlin-app-variants/Drag.kt +0 -56
- package/kotlin/fixtures/kotlin-app-variants/Draw.kt +0 -74
- package/kotlin/fixtures/kotlin-app-variants/Drawables.kt +0 -53
- package/kotlin/fixtures/kotlin-app-variants/Focus.kt +0 -62
- package/kotlin/fixtures/kotlin-app-variants/Form.kt +0 -47
- package/kotlin/fixtures/kotlin-app-variants/Icons.kt +0 -59
- package/kotlin/fixtures/kotlin-app-variants/Ime.kt +0 -53
- package/kotlin/fixtures/kotlin-app-variants/Lists.kt +0 -57
- package/kotlin/fixtures/kotlin-app-variants/Nav.kt +0 -47
- package/kotlin/fixtures/kotlin-app-variants/Note.kt +0 -40
- package/kotlin/fixtures/kotlin-app-variants/Overlays.kt +0 -56
- package/kotlin/fixtures/kotlin-app-variants/Pan.kt +0 -38
- package/kotlin/fixtures/kotlin-app-variants/Pickers.kt +0 -44
- package/kotlin/fixtures/kotlin-app-variants/Press.kt +0 -43
- package/kotlin/fixtures/kotlin-app-variants/Scroll.kt +0 -63
- package/kotlin/fixtures/kotlin-app-variants/Sheet.kt +0 -43
- package/kotlin/fixtures/kotlin-app-variants/Strings.kt +0 -49
- package/kotlin/fixtures/kotlin-app-variants/Tabs.kt +0 -47
- package/kotlin/fixtures/kotlin-app-variants/TextWidth.kt +0 -45
- package/kotlin/fixtures/kotlin-app-variants/TransientInsets.kt +0 -50
- package/kotlin/fixtures/kotlin-app-variants/Transition.kt +0 -69
- package/kotlin/fixtures/kotlin-app-variants/ViewConfig.kt +0 -22
- package/kotlin/fixtures/kotlin-app-variants/Widgets.kt +0 -67
- package/kotlin/fixtures/runtime-state/RuntimeState.kt +0 -200
- package/kotlin/fork/README.md +0 -97
- package/kotlin/fork/build.sh +0 -176
- package/kotlin/fork/compose-worker-globals.patch +0 -1247
- package/kotlin/fork/fork.json +0 -46
- package/kotlin/fork/publish.ts +0 -99
- package/kotlin/fork/skia-android-shaping.patch +0 -189
- package/kotlin/fork/skiko-local.init.gradle +0 -10
- package/kotlin/fork/skiko-worker-clock.patch +0 -122
package/cli/commands/device.ts
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
|
+
import { getCliRuntime } from '../../src/cli-runtime.ts'
|
|
1
2
|
import {
|
|
2
3
|
devices,
|
|
3
|
-
getDevice,
|
|
4
4
|
listSelectableDeviceModels,
|
|
5
5
|
type DeviceModel,
|
|
6
|
-
} from '
|
|
7
|
-
import { DUO_REST_PROGRESS, type DuoFoldRest } from 'peach-engine/settings/duo-fold-bus'
|
|
6
|
+
} from '../../src/device-catalog.ts'
|
|
8
7
|
import { SOOTSIM_SHELL_COMMAND_NAME } from '../../src/menu'
|
|
9
8
|
import { peachExit } from '../run-rnx'
|
|
10
9
|
import {
|
|
@@ -14,6 +13,7 @@ import {
|
|
|
14
13
|
parseBridgeCliArgs,
|
|
15
14
|
type ParsedBridgeCliArgs,
|
|
16
15
|
} from '../ws-bridge'
|
|
16
|
+
import type { DuoFoldRest } from '#peach-cli-contract/settings/duo-fold-bus'
|
|
17
17
|
|
|
18
18
|
interface DeviceCommandOptions {
|
|
19
19
|
port?: number
|
|
@@ -48,7 +48,7 @@ examples:
|
|
|
48
48
|
}
|
|
49
49
|
|
|
50
50
|
function printDevice(model: DeviceModel) {
|
|
51
|
-
const spec = getDevice(model)
|
|
51
|
+
const spec = getCliRuntime().settings_devices.getDevice(model)
|
|
52
52
|
console.log(
|
|
53
53
|
` ${model.padEnd(14)} ${String(spec.width).padStart(4)}x${String(spec.height).padEnd(4)} pt ${String(spec.width * spec.scale).padStart(4)}x${String(spec.height * spec.scale).padEnd(4)} px ${spec.name}`,
|
|
54
54
|
)
|
|
@@ -65,7 +65,7 @@ async function readCurrentDevice(
|
|
|
65
65
|
)) ?? { deviceModel: null }
|
|
66
66
|
const model = typeof settings.deviceModel === 'string' ? settings.deviceModel : null
|
|
67
67
|
if (!model || !(model in devices)) return null
|
|
68
|
-
const spec = getDevice(
|
|
68
|
+
const spec = getCliRuntime().settings_devices.getDevice(
|
|
69
69
|
model as DeviceModel,
|
|
70
70
|
settings.posture === 'open' || settings.posture === 'closed'
|
|
71
71
|
? settings.posture
|
|
@@ -88,10 +88,15 @@ async function readCurrentDevice(
|
|
|
88
88
|
}
|
|
89
89
|
|
|
90
90
|
function isDuoRest(value: unknown): value is DuoFoldRest {
|
|
91
|
-
return
|
|
91
|
+
return (
|
|
92
|
+
typeof value === 'string' &&
|
|
93
|
+
value in getCliRuntime().settings_duo_fold_bus.DUO_REST_PROGRESS
|
|
94
|
+
)
|
|
92
95
|
}
|
|
93
96
|
|
|
94
|
-
const DUO_RESTS = Object.keys(
|
|
97
|
+
const DUO_RESTS = Object.keys(
|
|
98
|
+
getCliRuntime().settings_duo_fold_bus.DUO_REST_PROGRESS,
|
|
99
|
+
).filter(isDuoRest)
|
|
95
100
|
|
|
96
101
|
type CurrentPostureSnapshot = {
|
|
97
102
|
model: DeviceModel
|
|
@@ -165,7 +170,7 @@ export async function runDeviceCommand(args: string[], opts: DeviceCommandOption
|
|
|
165
170
|
'deviceModel',
|
|
166
171
|
model,
|
|
167
172
|
)
|
|
168
|
-
const spec = getDevice(model as DeviceModel)
|
|
173
|
+
const spec = getCliRuntime().settings_devices.getDevice(model as DeviceModel)
|
|
169
174
|
console.log(
|
|
170
175
|
` ${changed ? 'set' : 'kept'} device: ${model} (${spec.width}x${spec.height} pt, ${spec.width * spec.scale}x${spec.height * spec.scale} px)${changed ? ' — reloading sim' : ''}`,
|
|
171
176
|
)
|
|
@@ -228,7 +233,7 @@ export async function runDeviceCommand(args: string[], opts: DeviceCommandOption
|
|
|
228
233
|
const settled = () => {
|
|
229
234
|
const fold = globalThis.__sootsimDuoFold
|
|
230
235
|
return !!fold && fold.rest === ${JSON.stringify(target)} && !fold.active &&
|
|
231
|
-
Math.abs(fold.progress - ${DUO_REST_PROGRESS[target]}) < 1e-6
|
|
236
|
+
Math.abs(fold.progress - ${getCliRuntime().settings_duo_fold_bus.DUO_REST_PROGRESS[target]}) < 1e-6
|
|
232
237
|
}
|
|
233
238
|
const check = () => {
|
|
234
239
|
if (settled()) resolve(true)
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
// and the teardown of the simulator, driver and bridge their open started.
|
|
3
3
|
import { isLoopbackHost } from '../../src/backend-origin'
|
|
4
4
|
import { clearCurrentSimId, readCurrentSimId } from '../current-sim'
|
|
5
|
+
import { terminateProcessGroup } from '../../src/process-group'
|
|
5
6
|
import { createBridge } from '../ws-bridge'
|
|
6
7
|
import {
|
|
7
8
|
printDriverDiagnosticLogTail,
|
|
@@ -74,18 +75,13 @@ export async function closeGuestResources(
|
|
|
74
75
|
closed = false
|
|
75
76
|
}
|
|
76
77
|
}
|
|
77
|
-
if (
|
|
78
|
-
|
|
79
|
-
resources.driver.launched &&
|
|
80
|
-
resources.driver.pid
|
|
81
|
-
) {
|
|
78
|
+
if (resources.driver?.driverId === 'playwright' && resources.driver.process) {
|
|
79
|
+
// the host owns a browser tree; wait until it and its descendants are gone.
|
|
82
80
|
try {
|
|
83
|
-
|
|
81
|
+
await terminateProcessGroup(resources.driver.process)
|
|
84
82
|
} catch (error) {
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
closed = false
|
|
88
|
-
}
|
|
83
|
+
console.error(` ${label} driver cleanup failed: ${String(error)}`)
|
|
84
|
+
closed = false
|
|
89
85
|
}
|
|
90
86
|
}
|
|
91
87
|
if (resources.bridge && !resources.bridgeReady) resources.bridge.kill('SIGTERM')
|
|
@@ -15,12 +15,18 @@ import {
|
|
|
15
15
|
HEADLESS_TENANT_FETCH_HUNG_MARKER,
|
|
16
16
|
readyProbeContentBasis,
|
|
17
17
|
readyProbeIsReady,
|
|
18
|
+
type DiagnosticsOptions,
|
|
19
|
+
type DiagnosticsResult,
|
|
18
20
|
type SemanticWaitCondition,
|
|
19
21
|
type SemanticWaitResult,
|
|
20
22
|
type WsBridgeCommand,
|
|
21
23
|
} from '../../../src/bridge-contract'
|
|
22
|
-
import {
|
|
24
|
+
import {
|
|
25
|
+
parseDiagnosticsResult,
|
|
26
|
+
SEMANTIC_WAIT_MAX_TIMEOUT_MS,
|
|
27
|
+
} from '../../../src/bridge-contract-input'
|
|
23
28
|
export { readyProbeHasContent, readyProbeIsReady } from '../../../src/bridge-contract'
|
|
29
|
+
import type { KeyboardLayoutSnapshot } from '#peach-cli-contract/render-worker/native-ui-protocol'
|
|
24
30
|
import type {
|
|
25
31
|
SimSemanticNode,
|
|
26
32
|
SimSemanticQueryResult,
|
|
@@ -36,7 +42,6 @@ import type {
|
|
|
36
42
|
SootSimTimelineQueryResult,
|
|
37
43
|
SootSimTimelineSummary,
|
|
38
44
|
} from '@peach/globals'
|
|
39
|
-
import type { KeyboardLayoutSnapshot } from 'peach-engine/render-worker/native-ui-protocol'
|
|
40
45
|
|
|
41
46
|
// resolve a wait's `--max-ms <n>` budget, tolerating the spellings agents and
|
|
42
47
|
// humans actually type (`--maxMs`, `--maxms`, `--max_ms`). `--timeout`, the
|
|
@@ -1994,29 +1999,50 @@ export async function inspectScreens(bridge: InspectBridge): Promise<ScreensRepo
|
|
|
1994
1999
|
|
|
1995
2000
|
// ─── debug channels ───
|
|
1996
2001
|
|
|
1997
|
-
//
|
|
1998
|
-
//
|
|
1999
|
-
|
|
2000
|
-
|
|
2001
|
-
|
|
2002
|
-
|
|
2003
|
-
'
|
|
2004
|
-
|
|
2005
|
-
'render',
|
|
2006
|
-
'touch',
|
|
2007
|
-
'yoga',
|
|
2008
|
-
] as const
|
|
2002
|
+
// remote diagnostics stay on the typed read surface; evaluation retains its
|
|
2003
|
+
// separate debug-scope requirement.
|
|
2004
|
+
async function inspectCloudDiagnostics(
|
|
2005
|
+
bridge: InspectBridge,
|
|
2006
|
+
diagnostics: DiagnosticsOptions = {},
|
|
2007
|
+
): Promise<DiagnosticsResult> {
|
|
2008
|
+
return parseDiagnosticsResult(await bridge.send({ type: 'diagnostics', diagnostics }))
|
|
2009
|
+
}
|
|
2009
2010
|
|
|
2010
|
-
// `debug status`
|
|
2011
|
-
export async function inspectDebugStatus(
|
|
2011
|
+
// `debug status` reads the currently enabled debug channels.
|
|
2012
|
+
export async function inspectDebugStatus(
|
|
2013
|
+
bridge: InspectBridge,
|
|
2014
|
+
host = false,
|
|
2015
|
+
): Promise<unknown> {
|
|
2016
|
+
if (bridge.plane === 'cloud' && !host) {
|
|
2017
|
+
return (await inspectCloudDiagnostics(bridge)).channels
|
|
2018
|
+
}
|
|
2012
2019
|
return bridge.send({ type: 'evaluate', code: 'window.__sootsimDebug.status()' })
|
|
2013
2020
|
}
|
|
2014
2021
|
|
|
2015
2022
|
// `debug flags` — the engine's debug feature flags.
|
|
2016
|
-
export async function inspectDebugFlags(
|
|
2023
|
+
export async function inspectDebugFlags(
|
|
2024
|
+
bridge: InspectBridge,
|
|
2025
|
+
host = false,
|
|
2026
|
+
): Promise<unknown> {
|
|
2027
|
+
if (bridge.plane === 'cloud' && !host) {
|
|
2028
|
+
const { channels, availableChannels } = await inspectCloudDiagnostics(bridge)
|
|
2029
|
+
return Object.fromEntries(
|
|
2030
|
+
availableChannels.map((channel) => [channel, channels.includes(channel)]),
|
|
2031
|
+
)
|
|
2032
|
+
}
|
|
2017
2033
|
return bridge.send({ type: 'evaluate', code: 'window.__sootsimDebug.flags()' })
|
|
2018
2034
|
}
|
|
2019
2035
|
|
|
2036
|
+
export async function inspectDebugChannels(
|
|
2037
|
+
bridge: InspectBridge,
|
|
2038
|
+
host = false,
|
|
2039
|
+
): Promise<unknown> {
|
|
2040
|
+
if (bridge.plane === 'cloud' && !host) {
|
|
2041
|
+
return (await inspectCloudDiagnostics(bridge)).availableChannels
|
|
2042
|
+
}
|
|
2043
|
+
return bridge.send({ type: 'evaluate', code: 'window.__sootsimDebug.channels()' })
|
|
2044
|
+
}
|
|
2045
|
+
|
|
2020
2046
|
// `debug find sheets|portals` — locate all live sheet / portal nodes.
|
|
2021
2047
|
// routed through the test bridge (not the page __sootsimDebug global) so the
|
|
2022
2048
|
// walk runs against the worker's live tree — the page-local tree is empty
|
|
@@ -2024,7 +2050,11 @@ export async function inspectDebugFlags(bridge: InspectBridge): Promise<unknown>
|
|
|
2024
2050
|
export async function inspectDebugFind(
|
|
2025
2051
|
bridge: InspectBridge,
|
|
2026
2052
|
target: 'sheets' | 'portals' | 'boundaries',
|
|
2053
|
+
host = false,
|
|
2027
2054
|
): Promise<unknown> {
|
|
2055
|
+
if (bridge.plane === 'cloud' && !host) {
|
|
2056
|
+
return (await inspectCloudDiagnostics(bridge, { find: target })).found
|
|
2057
|
+
}
|
|
2028
2058
|
return bridge.send({
|
|
2029
2059
|
type: 'evaluate',
|
|
2030
2060
|
code: `window.__sootsimTest.debugFind(${JSON.stringify(target)})`,
|
|
@@ -2060,6 +2090,14 @@ export async function inspectDebugRecent(
|
|
|
2060
2090
|
limit = 50,
|
|
2061
2091
|
host = false,
|
|
2062
2092
|
): Promise<unknown> {
|
|
2093
|
+
if (bridge.plane === 'cloud' && !host) {
|
|
2094
|
+
return (
|
|
2095
|
+
await inspectCloudDiagnostics(bridge, {
|
|
2096
|
+
...(channel && channel !== 'all' ? { recentChannel: channel } : {}),
|
|
2097
|
+
recentLimit: limit,
|
|
2098
|
+
})
|
|
2099
|
+
).events
|
|
2100
|
+
}
|
|
2063
2101
|
return callDebugBridge(
|
|
2064
2102
|
bridge,
|
|
2065
2103
|
`recent(${channel && channel !== 'all' ? JSON.stringify(channel) : 'undefined'}, ${limit})`,
|
|
@@ -2075,6 +2113,11 @@ export async function setDebugChannels(
|
|
|
2075
2113
|
channels: string[],
|
|
2076
2114
|
host = false,
|
|
2077
2115
|
): Promise<unknown> {
|
|
2116
|
+
if (bridge.plane === 'cloud' && !host) {
|
|
2117
|
+
return (
|
|
2118
|
+
await inspectCloudDiagnostics(bridge, { channelControl: { action, channels } })
|
|
2119
|
+
).channels
|
|
2120
|
+
}
|
|
2078
2121
|
const args =
|
|
2079
2122
|
channels.length > 0
|
|
2080
2123
|
? channels.map((c) => JSON.stringify(c)).join(', ')
|
|
@@ -2087,6 +2130,27 @@ export async function setDebugChannels(
|
|
|
2087
2130
|
return callDebugBridge(bridge, expression)
|
|
2088
2131
|
}
|
|
2089
2132
|
|
|
2133
|
+
export async function toggleDebugChannel(
|
|
2134
|
+
bridge: InspectBridge,
|
|
2135
|
+
channel: string,
|
|
2136
|
+
host = false,
|
|
2137
|
+
): Promise<unknown> {
|
|
2138
|
+
if (bridge.plane === 'cloud' && !host) {
|
|
2139
|
+
const { channels } = await inspectCloudDiagnostics(bridge, {
|
|
2140
|
+
channelControl: { action: 'toggle', channels: [channel] },
|
|
2141
|
+
})
|
|
2142
|
+
return channels.includes(channel)
|
|
2143
|
+
}
|
|
2144
|
+
const result = await callDebugBridge(bridge, `toggle(${JSON.stringify(channel)})`, true)
|
|
2145
|
+
if (!host) {
|
|
2146
|
+
await callDebugBridge(
|
|
2147
|
+
bridge,
|
|
2148
|
+
`${result ? 'enable' : 'disable'}(${JSON.stringify(channel)})`,
|
|
2149
|
+
)
|
|
2150
|
+
}
|
|
2151
|
+
return result
|
|
2152
|
+
}
|
|
2153
|
+
|
|
2090
2154
|
// ─── memory ───
|
|
2091
2155
|
|
|
2092
2156
|
export interface ImageLoaderStats {
|
package/cli/commands/inspect.ts
CHANGED
|
@@ -3467,13 +3467,17 @@ export async function runInspect(args: string[], opts: InspectOptions) {
|
|
|
3467
3467
|
// early in that case instead of waiting the full budget.
|
|
3468
3468
|
let issuedReload = false
|
|
3469
3469
|
let inPlaceReload = false
|
|
3470
|
+
// a reload rewrites the sim's running app, so it takes the cli lease
|
|
3471
|
+
// like any other write. a live foreign lease refuses here, before the
|
|
3472
|
+
// sim is touched, and the refusal must not be swallowed by the
|
|
3473
|
+
// reconnect handling below.
|
|
3474
|
+
await evalInBridge(bridge, 'window.__sootsimConsole?.clear()', {
|
|
3475
|
+
acquireLock: true,
|
|
3476
|
+
})
|
|
3470
3477
|
try {
|
|
3471
|
-
await bridge.send({
|
|
3472
|
-
type: 'evaluate',
|
|
3473
|
-
code: 'window.__sootsimConsole?.clear()',
|
|
3474
|
-
})
|
|
3475
3478
|
const reloadResult = await bridge.send({
|
|
3476
3479
|
type: 'evaluate',
|
|
3480
|
+
acquireLock: true,
|
|
3477
3481
|
code: `;(async () => {
|
|
3478
3482
|
// in-place guest reload is only valid while the page still runs
|
|
3479
3483
|
// the engine build the server would serve NOW. the shell dev
|
|
@@ -3602,10 +3606,11 @@ export async function runInspect(args: string[], opts: InspectOptions) {
|
|
|
3602
3606
|
}
|
|
3603
3607
|
|
|
3604
3608
|
case 'storage-clear': {
|
|
3605
|
-
await
|
|
3606
|
-
|
|
3607
|
-
|
|
3608
|
-
|
|
3609
|
+
await evalInBridge(bridge, 'window.__sootsimConsole?.clear()', {
|
|
3610
|
+
acquireLock: true,
|
|
3611
|
+
})
|
|
3612
|
+
const cleared = await evalInBridge(bridge, resetGuestAppStateEval(true), {
|
|
3613
|
+
acquireLock: true,
|
|
3609
3614
|
})
|
|
3610
3615
|
if (cleared !== true) {
|
|
3611
3616
|
if (wantsJson(effectiveArgs)) {
|
package/cli/commands/kotlin.ts
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
import fs from 'node:fs'
|
|
2
2
|
import http from 'node:http'
|
|
3
3
|
import path from 'node:path'
|
|
4
|
-
import { DEFAULT_DEVICE_BY_PLATFORM, devices } from 'peach-engine/settings/devices'
|
|
5
4
|
import { WebSocket, WebSocketServer } from 'ws'
|
|
5
|
+
import { DEFAULT_DEVICE_BY_PLATFORM, devices } from '../../src/device-catalog.ts'
|
|
6
6
|
import { kotlinGuestBundle } from '../../src/guest-bundle'
|
|
7
7
|
import {
|
|
8
8
|
readAndroidPins,
|
|
9
9
|
readKotlinApp,
|
|
10
10
|
type KotlinAppProject,
|
|
11
11
|
} from '../../src/kotlin-app'
|
|
12
|
+
import { peachKotlinModuleRoot } from '../../src/kotlin-module'
|
|
12
13
|
import {
|
|
13
14
|
KOTLIN_DISCOVERY_PATH,
|
|
14
15
|
KOTLIN_GUEST_PATH,
|
|
15
16
|
type KotlinHostDiscovery,
|
|
16
17
|
} from '../../src/kotlinDiscoveryContract'
|
|
17
|
-
import { peachKotlinModuleRoot } from '../../src/kotlin-module'
|
|
18
18
|
import { PeachExit } from '../run-rnx'
|
|
19
19
|
import { runOpenCommand, type OpenCommandResources } from './control'
|
|
20
20
|
import {
|
|
@@ -7,8 +7,8 @@ import { spawn, spawnSync } from 'child_process'
|
|
|
7
7
|
import * as fs from 'fs'
|
|
8
8
|
import * as os from 'os'
|
|
9
9
|
import * as path from 'path'
|
|
10
|
-
import { devices } from 'peach-engine/settings/devices'
|
|
11
10
|
import { PNG } from 'pngjs'
|
|
11
|
+
import { devices } from '../../src/device-catalog.ts'
|
|
12
12
|
import { rnxHomeDir } from '../../src/home-paths'
|
|
13
13
|
import { parseFlowFile } from '../flow-file'
|
|
14
14
|
import {
|
package/cli/commands/platform.ts
CHANGED
|
@@ -1,19 +1,17 @@
|
|
|
1
|
+
import { createHash } from 'node:crypto'
|
|
1
2
|
// `peach ios` and `peach android` — start a simulator on that platform.
|
|
2
3
|
//
|
|
3
4
|
// the platform picks the device; the command context picks where the sim runs
|
|
4
5
|
// (this machine, a local box, or the `peach remote` namespace). this file resolves
|
|
5
6
|
// the device and hands the rest to the normal open path.
|
|
6
|
-
|
|
7
|
-
import { createHash } from 'node:crypto'
|
|
7
|
+
import { getCliRuntime } from '../../src/cli-runtime.ts'
|
|
8
8
|
import {
|
|
9
9
|
DEFAULT_DEVICE_BY_PLATFORM,
|
|
10
10
|
devices,
|
|
11
|
-
getRuntimePlatform,
|
|
12
11
|
listSelectableDeviceModels,
|
|
13
12
|
type DeviceModel,
|
|
14
13
|
type RuntimePlatform,
|
|
15
|
-
} from '
|
|
16
|
-
import { settingsStore } from 'peach-engine/settings/store'
|
|
14
|
+
} from '../../src/device-catalog.ts'
|
|
17
15
|
import { rnxPublicBrand } from '../../src/public-brand'
|
|
18
16
|
import { UnsupportedRemoteHostError } from '../cloud-client'
|
|
19
17
|
import { rethrowIfExit } from '../run-rnx'
|
|
@@ -155,13 +153,17 @@ export async function runPlatformCommand(
|
|
|
155
153
|
)
|
|
156
154
|
return 1
|
|
157
155
|
}
|
|
158
|
-
const devicePlatform =
|
|
156
|
+
const devicePlatform =
|
|
157
|
+
getCliRuntime().settings_devices.getRuntimePlatform(explicitDevice)
|
|
159
158
|
if (devicePlatform !== platform) {
|
|
160
159
|
console.error(
|
|
161
160
|
` ${rnxPublicBrand.commandName} ${platform}: --device ${explicitDevice} is ` +
|
|
162
161
|
`${PLATFORM_LABEL[devicePlatform]}, not ${PLATFORM_LABEL[platform]}.\n` +
|
|
163
162
|
` pick one of: ${listSelectableDeviceModels()
|
|
164
|
-
.filter(
|
|
163
|
+
.filter(
|
|
164
|
+
(model) =>
|
|
165
|
+
getCliRuntime().settings_devices.getRuntimePlatform(model) === platform,
|
|
166
|
+
)
|
|
165
167
|
.join(', ')}`,
|
|
166
168
|
)
|
|
167
169
|
return 1
|
|
@@ -171,9 +173,11 @@ export async function runPlatformCommand(
|
|
|
171
173
|
// keep the user's own device when it already belongs to the platform they
|
|
172
174
|
// asked for, so `peach ios` after `peach device set iphone-16` does not
|
|
173
175
|
// silently snap back to the default model.
|
|
174
|
-
const current = settingsStore.get('deviceModel')
|
|
175
|
-
if (getRuntimePlatform(current) !== platform) {
|
|
176
|
-
settingsStore.apply({
|
|
176
|
+
const current = getCliRuntime().settings_store.settingsStore.get('deviceModel')
|
|
177
|
+
if (getCliRuntime().settings_devices.getRuntimePlatform(current) !== platform) {
|
|
178
|
+
getCliRuntime().settings_store.settingsStore.apply({
|
|
179
|
+
deviceModel: DEFAULT_DEVICE_BY_PLATFORM[platform],
|
|
180
|
+
})
|
|
177
181
|
selectedDevice = DEFAULT_DEVICE_BY_PLATFORM[platform]
|
|
178
182
|
} else {
|
|
179
183
|
selectedDevice = current
|
|
@@ -235,8 +239,13 @@ export async function runPlatformCommand(
|
|
|
235
239
|
return 1
|
|
236
240
|
}
|
|
237
241
|
|
|
242
|
+
// the open path derives the bundle platform from --device alone, so the
|
|
243
|
+
// resolved device always travels with it, including the kept or default one.
|
|
244
|
+
const openArgs = args.includes('--device')
|
|
245
|
+
? args
|
|
246
|
+
: [...args.filter((arg) => arg !== assignedDevice), '--device', selectedDevice]
|
|
238
247
|
const { runOpenCommand } = await import('./control')
|
|
239
|
-
await runOpenCommand(
|
|
248
|
+
await runOpenCommand(openArgs, { port: opts.port })
|
|
240
249
|
return 0
|
|
241
250
|
}
|
|
242
251
|
|
package/cli/commands/preview.ts
CHANGED
|
@@ -5,16 +5,12 @@ import { createRequire } from 'node:module'
|
|
|
5
5
|
import { createServer } from 'node:net'
|
|
6
6
|
import { tmpdir } from 'node:os'
|
|
7
7
|
import { dirname, join, resolve } from 'node:path'
|
|
8
|
-
import { brotliBundle } from 'peach-engine/preview/compress-node'
|
|
9
|
-
import {
|
|
10
|
-
runPresignedUpload,
|
|
11
|
-
type InitRequestBody,
|
|
12
|
-
} from 'peach-engine/preview/presigned-upload'
|
|
13
8
|
import { warmNativeBundle } from '../../../contrast-runner/src/bundleWarm'
|
|
14
9
|
import {
|
|
15
10
|
readPreviewBuildReceipt,
|
|
16
11
|
type PreviewBuildReceipt,
|
|
17
12
|
} from '../../../contrast-runner/src/previewBuildContract'
|
|
13
|
+
import { getCliRuntime } from '../../src/cli-runtime.ts'
|
|
18
14
|
import { isRecord } from '../../src/is-record'
|
|
19
15
|
import { terminateProcessGroup } from '../../src/process-group'
|
|
20
16
|
import { authHeaderValue, cloudAccountIdOrExit, resolveCliAuth } from '../auth'
|
|
@@ -23,6 +19,7 @@ import { publishLiveDevStack, type PublishedLiveDevStack } from '../cloud-test-t
|
|
|
23
19
|
import { openUrl } from '../open-url'
|
|
24
20
|
import { detectProject } from './detect'
|
|
25
21
|
import { resolveDefaultUploadOrigin, resolvePublicPreviewOrigin } from './upload'
|
|
22
|
+
import type { InitRequestBody } from '#peach-cli-contract/preview/presigned-upload'
|
|
26
23
|
|
|
27
24
|
function takeValue(args: string[], flag: string): string | null {
|
|
28
25
|
const index = args.indexOf(flag)
|
|
@@ -80,7 +77,7 @@ export async function runPreview(args: string[]): Promise<number> {
|
|
|
80
77
|
return 0
|
|
81
78
|
}
|
|
82
79
|
const artifact = await producePreviewArtifact(target)
|
|
83
|
-
const bundle = brotliBundle(artifact.bytes)
|
|
80
|
+
const bundle = getCliRuntime().preview_compress_node.brotliBundle(artifact.bytes)
|
|
84
81
|
const initBody: InitRequestBody = {
|
|
85
82
|
kind: 'build',
|
|
86
83
|
buildPlatform: platform,
|
|
@@ -98,18 +95,19 @@ export async function runPreview(args: string[]): Promise<number> {
|
|
|
98
95
|
: { model: 'iphone-16', width: 402, height: 874 },
|
|
99
96
|
files: [],
|
|
100
97
|
}
|
|
101
|
-
const { finalize } =
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
98
|
+
const { finalize } =
|
|
99
|
+
await getCliRuntime().preview_presigned_upload.runPresignedUpload({
|
|
100
|
+
originBase: origin,
|
|
101
|
+
endpoints: {
|
|
102
|
+
init: '/api/v1/previews',
|
|
103
|
+
finalize: '/api/v1/previews/finalize',
|
|
104
|
+
},
|
|
105
|
+
initBody,
|
|
106
|
+
bundleBytes: bundle,
|
|
107
|
+
filesByHash: new Map(),
|
|
108
|
+
authHeader: authHeaderValue(auth),
|
|
109
|
+
accountId,
|
|
110
|
+
})
|
|
113
111
|
const url = finalize.url.startsWith('http')
|
|
114
112
|
? finalize.url
|
|
115
113
|
: `${publicOrigin}${finalize.url}`
|
package/cli/commands/runtime.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import fs from 'fs'
|
|
1
2
|
// peach runtime — manage engine runtimes under ~/.peach/runtimes/.
|
|
2
3
|
//
|
|
3
4
|
// runtimes are versioned tarballs hosted behind the configured CDN origin
|
|
@@ -10,10 +11,9 @@
|
|
|
10
11
|
//
|
|
11
12
|
// the daemon-side state (active runtime) is mirrored in ~/.peach/runtimes/active
|
|
12
13
|
// so the CLI can change it even when the daemon isn't running.
|
|
13
|
-
|
|
14
|
-
import fs from 'fs'
|
|
15
14
|
import { compareSemver } from '@contrast/runtime-delivery'
|
|
16
15
|
import { WebSocket } from 'ws'
|
|
16
|
+
import { verifyCliCompanion } from '../../src/cli-runtime'
|
|
17
17
|
import {
|
|
18
18
|
ensureRnxHome,
|
|
19
19
|
readActiveRuntime,
|
|
@@ -125,6 +125,7 @@ async function runtimeInstall(args: string[], opts: RuntimeOptions) {
|
|
|
125
125
|
}
|
|
126
126
|
|
|
127
127
|
async function activateVersion(version: string) {
|
|
128
|
+
verifyCliCompanion(runtimeDir(version))
|
|
128
129
|
writeActiveRuntime(version)
|
|
129
130
|
console.log(` active: ${version}`)
|
|
130
131
|
// a running daemon reads the active file on every new sim and lockfile
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
|
|
10
10
|
import { mkdirSync, writeFileSync } from 'fs'
|
|
11
11
|
import { resolve } from 'path'
|
|
12
|
-
import { devices } from '
|
|
12
|
+
import { devices } from '../../src/device-catalog.ts'
|
|
13
13
|
import { buildResolveRectEval, type SampleRect } from '../browser-evals'
|
|
14
14
|
import { peachExit } from '../run-rnx'
|
|
15
15
|
import { callInBridge, createBridgeFromParsed, parseBridgeCliArgs } from '../ws-bridge'
|
|
@@ -8,9 +8,9 @@
|
|
|
8
8
|
|
|
9
9
|
import { mkdirSync } from 'fs'
|
|
10
10
|
import { dirname, resolve } from 'path'
|
|
11
|
-
import { devices, type DeviceModel } from 'peach-engine/settings/devices'
|
|
12
11
|
import { launchReapedChrome } from '../../../../scripts/lib/reap-browser'
|
|
13
12
|
import { DEFAULT_SOOTSIM_BRIDGE_PORT } from '../../src/bridge-constants'
|
|
13
|
+
import { devices, type DeviceModel } from '../../src/device-catalog.ts'
|
|
14
14
|
import { composeFramedScreenshot } from '../../src/screenshots/frame-compose'
|
|
15
15
|
import { buildResolveRectEval, type SampleRect } from '../browser-evals'
|
|
16
16
|
import { createCloudBridgeForParsed } from '../cloud-client'
|
package/cli/commands/serve.ts
CHANGED
|
@@ -16,6 +16,7 @@ import {
|
|
|
16
16
|
ensureRnxHome,
|
|
17
17
|
isDaemonLockfileFresh,
|
|
18
18
|
readDaemonLockfile,
|
|
19
|
+
rnxHomeDir,
|
|
19
20
|
} from '../../src/home-paths'
|
|
20
21
|
import { SootSimBridgeHost } from '../../src/host/bridge-host'
|
|
21
22
|
import { findMonorepoRoot, resolveDevCheckoutRuntimeRoot } from '../../src/runtime-assets'
|
|
@@ -88,7 +89,10 @@ examples:
|
|
|
88
89
|
console.error(
|
|
89
90
|
` a peach bridge is already running (pid ${existingLock.pid}, port ${existingLock.bridgePort})`,
|
|
90
91
|
)
|
|
91
|
-
console.error(
|
|
92
|
+
console.error(
|
|
93
|
+
` it owns the peach home ${rnxHomeDir()}. use that bridge on port ${existingLock.bridgePort}, or set PEACH_HOME to a separate directory to run your own.`,
|
|
94
|
+
)
|
|
95
|
+
console.error(` stop it with 'peach daemon stop' only if you own it`)
|
|
92
96
|
peachExit(1)
|
|
93
97
|
}
|
|
94
98
|
|
package/cli/commands/support.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { resolve } from 'node:path'
|
|
1
2
|
// peach support — ask for help, report a problem, and read our replies
|
|
2
3
|
// (plans/peach-cloud/partner-support.md). every item belongs to the account the
|
|
3
4
|
// CLI login names, so `status` lists them without the caller keeping ids.
|
|
@@ -6,13 +7,11 @@
|
|
|
6
7
|
// peach support report [--app <dir>] [--dry-run] [--yes] "<description>"
|
|
7
8
|
// peach support status [--id <id>] [--new] [--json]
|
|
8
9
|
// peach support fund [--amount <usd>]
|
|
9
|
-
|
|
10
|
-
import { resolve } from 'node:path'
|
|
11
|
-
import { TOPUP_DEFAULT_USD } from 'peach-engine/billing/plans'
|
|
12
10
|
import {
|
|
13
11
|
readSharedDesktopAuthSession,
|
|
14
12
|
writeSharedDesktopAuthSession,
|
|
15
13
|
} from '../../src/auth/shared-session'
|
|
14
|
+
import { getCliRuntime } from '../../src/cli-runtime.ts'
|
|
16
15
|
import { readSharedConfig, writeSharedConfig } from '../../src/home-paths'
|
|
17
16
|
import { openUrl } from '../open-url'
|
|
18
17
|
import { runReportIssue, supportEndpoint, toolchainContext } from './report-issue'
|
|
@@ -273,7 +272,8 @@ async function runAsk(args: string[]): Promise<number> {
|
|
|
273
272
|
// paid, and binds the funded account to this login
|
|
274
273
|
async function runFund(args: string[]): Promise<number> {
|
|
275
274
|
const at = args.indexOf('--amount')
|
|
276
|
-
const amountUsd =
|
|
275
|
+
const amountUsd =
|
|
276
|
+
at >= 0 ? Number(args[at + 1]) : getCliRuntime().billing_plans.TOPUP_DEFAULT_USD
|
|
277
277
|
if (!Number.isFinite(amountUsd) || amountUsd <= 0) {
|
|
278
278
|
process.stderr.write(` --amount takes dollars\n${USAGE}`)
|
|
279
279
|
return 1
|
|
@@ -1,20 +1,16 @@
|
|
|
1
|
+
import { createHash } from 'node:crypto'
|
|
1
2
|
// peach mode three — toggle the live browser 3d device stage.
|
|
2
3
|
//
|
|
3
4
|
// wraps the existing `toggle-three-mode` shell action so CLI, rail, and
|
|
4
5
|
// menu all use the same plugin-owned state path.
|
|
5
|
-
|
|
6
|
-
import { createHash } from 'node:crypto'
|
|
7
6
|
import { mkdirSync, readFileSync, readdirSync, unlinkSync, writeFileSync } from 'node:fs'
|
|
8
7
|
import { dirname, extname, resolve } from 'node:path'
|
|
9
|
-
import {
|
|
10
|
-
|
|
11
|
-
timelineAssetRefOf,
|
|
12
|
-
} from 'peach-engine/screenshots/timeline-assets'
|
|
8
|
+
import { getCliRuntime } from '../../src/cli-runtime.ts'
|
|
9
|
+
import { isRecord } from '../../src/is-record'
|
|
13
10
|
import {
|
|
14
11
|
isThreeModeSetting,
|
|
15
12
|
THREE_MODE_SETTING_IDS,
|
|
16
|
-
} from '
|
|
17
|
-
import { isRecord } from '../../src/is-record'
|
|
13
|
+
} from '../../src/screenshots/screenshotContract.ts'
|
|
18
14
|
import { peachExit } from '../run-rnx'
|
|
19
15
|
import {
|
|
20
16
|
callInBridgeWrite,
|
|
@@ -369,7 +365,9 @@ function readDistinctTimelineAssets(
|
|
|
369
365
|
baseDirectory: string,
|
|
370
366
|
): DistinctTimelineAsset[] {
|
|
371
367
|
const byHash = new Map<string, DistinctTimelineAsset>()
|
|
372
|
-
for (const ref of collectTimelineAssetRefs(
|
|
368
|
+
for (const ref of getCliRuntime().screenshots_timeline_assets.collectTimelineAssetRefs(
|
|
369
|
+
value,
|
|
370
|
+
)) {
|
|
373
371
|
const assetPath = resolve(baseDirectory, ref.src)
|
|
374
372
|
const bytes = readFileSync(assetPath)
|
|
375
373
|
const hash = createHash('sha256').update(bytes).digest('hex')
|
|
@@ -391,20 +389,29 @@ function readDistinctTimelineAssets(
|
|
|
391
389
|
function rewriteTimelineAssetSrcs(
|
|
392
390
|
value: unknown,
|
|
393
391
|
urlBySrc: Map<string, string>,
|
|
392
|
+
inWallpaper = false,
|
|
394
393
|
): unknown {
|
|
395
394
|
if (Array.isArray(value)) {
|
|
396
|
-
return value.map((entry) => rewriteTimelineAssetSrcs(entry, urlBySrc))
|
|
395
|
+
return value.map((entry) => rewriteTimelineAssetSrcs(entry, urlBySrc, inWallpaper))
|
|
397
396
|
}
|
|
398
397
|
if (!isRecord(value)) return value
|
|
399
398
|
|
|
400
399
|
const result: Record<string, unknown> = {}
|
|
401
400
|
for (const [key, entry] of Object.entries(value)) {
|
|
402
|
-
result[key] = rewriteTimelineAssetSrcs(
|
|
401
|
+
result[key] = rewriteTimelineAssetSrcs(
|
|
402
|
+
entry,
|
|
403
|
+
urlBySrc,
|
|
404
|
+
getCliRuntime().screenshots_timeline_assets.isWallpaperChild(key, inWallpaper),
|
|
405
|
+
)
|
|
403
406
|
}
|
|
404
|
-
const
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
407
|
+
for (const {
|
|
408
|
+
field,
|
|
409
|
+
} of getCliRuntime().screenshots_timeline_assets.timelineAssetFieldsOf(
|
|
410
|
+
result,
|
|
411
|
+
inWallpaper,
|
|
412
|
+
)) {
|
|
413
|
+
const url = urlBySrc.get(String(result[field]))
|
|
414
|
+
if (url) result[field] = url
|
|
408
415
|
}
|
|
409
416
|
return result
|
|
410
417
|
}
|