peachsim 0.1.2194 → 0.1.2197

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 (98) hide show
  1. package/README.md +4 -1
  2. package/cli/commands/control.ts +2 -0
  3. package/cli/commands/kotlin.ts +10 -3
  4. package/cli/commands/package.ts +2 -0
  5. package/cli/native-input.ts +2 -0
  6. package/cli/outbound-endpoints.ts +1 -1
  7. package/dist-lib/agent-daemon-client.cjs +1 -1
  8. package/dist-lib/agent-events.cjs +1 -1
  9. package/dist-lib/attached-projects.cjs +1 -1
  10. package/dist-lib/auth/shared-session.cjs +1 -1
  11. package/dist-lib/backend-origin.cjs +1 -1
  12. package/dist-lib/beta.cjs +1 -1
  13. package/dist-lib/beta.mjs +1 -1
  14. package/dist-lib/bridge-constants.cjs +1 -1
  15. package/dist-lib/bridge-contract-input.cjs +1 -1
  16. package/dist-lib/bridge-contract-input.mjs +1 -1
  17. package/dist-lib/bridge-contract.cjs +1 -1
  18. package/dist-lib/bridge-contract.mjs +1 -1
  19. package/dist-lib/bundle-channel.cjs +986 -785
  20. package/dist-lib/capture-contract.cjs +1 -1
  21. package/dist-lib/capture-contract.mjs +1 -1
  22. package/dist-lib/cloud-contract.cjs +1 -1
  23. package/dist-lib/cloud-contract.mjs +1 -1
  24. package/dist-lib/cloud-test-args.cjs +1 -1
  25. package/dist-lib/cloud-test-args.mjs +1 -1
  26. package/dist-lib/cloud.cjs +1 -1
  27. package/dist-lib/cloud.mjs +1 -1
  28. package/dist-lib/config.cjs +1 -1
  29. package/dist-lib/config.mjs +1 -1
  30. package/dist-lib/detox/index.cjs +1 -1
  31. package/dist-lib/dev-bundle-resolution.cjs +1 -1
  32. package/dist-lib/expo-swift-bundle.cjs +3 -3
  33. package/dist-lib/expo-swift-metadata.cjs +1 -1
  34. package/dist-lib/expo-swift-metadata.mjs +1 -1
  35. package/dist-lib/home-paths.cjs +1 -1
  36. package/dist-lib/host/bridge-host.cjs +991 -790
  37. package/dist-lib/host/fetch-proxy-handler.cjs +2 -2
  38. package/dist-lib/host/fetch-proxy-overrides.cjs +1 -1
  39. package/dist-lib/host/fetch-proxy-overrides.mjs +1 -1
  40. package/dist-lib/host/replacement-module-handler.cjs +1 -1
  41. package/dist-lib/host/websocket-proxy.cjs +1 -1
  42. package/dist-lib/index.cjs +2 -2
  43. package/dist-lib/jump-to-source-babel.cjs +1 -1
  44. package/dist-lib/jump-to-source-native.cjs +1 -1
  45. package/dist-lib/kotlin-host.cjs +82 -13
  46. package/dist-lib/menu.cjs +1 -1
  47. package/dist-lib/menu.mjs +1 -1
  48. package/dist-lib/metro-fingerprint-registry.cjs +1 -1
  49. package/dist-lib/metro-fingerprint-registry.mjs +1 -1
  50. package/dist-lib/metro-production-bundle.cjs +1 -1
  51. package/dist-lib/metro-production-bundle.mjs +1 -1
  52. package/dist-lib/metro.cjs +2 -2
  53. package/dist-lib/native-app-identity-project.cjs +1 -1
  54. package/dist-lib/native-app-identity-project.mjs +1 -1
  55. package/dist-lib/native-app-identity.cjs +1 -1
  56. package/dist-lib/native-app-identity.mjs +1 -1
  57. package/dist-lib/native-firebase-metadata.cjs +1 -1
  58. package/dist-lib/native-firebase-metadata.mjs +1 -1
  59. package/dist-lib/pdfium-raster.cjs +1 -1
  60. package/dist-lib/pdfium-raster.mjs +1 -1
  61. package/dist-lib/plist.cjs +1 -1
  62. package/dist-lib/plist.mjs +1 -1
  63. package/dist-lib/profiles.cjs +1 -1
  64. package/dist-lib/public-brand.cjs +1 -1
  65. package/dist-lib/public-origins-lib-esm.json +24 -24
  66. package/dist-lib/public-origins-lib.json +65 -62
  67. package/dist-lib/react-native-host-modules.cjs +1 -1
  68. package/dist-lib/react-native-host-modules.mjs +1 -1
  69. package/dist-lib/reap-browser.cjs +1 -1
  70. package/dist-lib/scripts/dev-server-scanner.cjs +1 -1
  71. package/dist-lib/sdk.cjs +1 -1
  72. package/dist-lib/sdk.mjs +1 -1
  73. package/dist-lib/skills.cjs +1513 -1264
  74. package/dist-lib/swift-compile.cjs +1 -1
  75. package/dist-lib/swift-compile.mjs +1 -1
  76. package/dist-lib/swift-package.cjs +1 -1
  77. package/dist-lib/swift-package.mjs +1 -1
  78. package/dist-lib/swift-submit.cjs +1 -1
  79. package/dist-lib/swift-submit.mjs +1 -1
  80. package/dist-lib/swift-toolchain.cjs +1 -1
  81. package/dist-lib/swift.cjs +1 -1
  82. package/dist-lib/vite-swift.cjs +2 -2
  83. package/dist-lib/vite.cjs +2 -2
  84. package/dist-lib/worklet-executable.cjs +1 -1
  85. package/dist-lib/worklet-executable.mjs +1 -1
  86. package/dist-types/packages/peach-engine/src/engine/types.d.ts +1 -0
  87. package/kotlin/sdk.tar.gz +0 -0
  88. package/package.json +1 -1
  89. package/src/android-bridge-dependencies.ts +93 -0
  90. package/src/android-bridge-packages.ts +1 -0
  91. package/src/android-gradle-sources.ts +76 -9
  92. package/src/androidGradleContract.ts +8 -0
  93. package/src/expo-kotlin-host.ts +20 -7
  94. package/src/expoKotlinContract.ts +1 -1
  95. package/src/java-module-abi.ts +7 -1
  96. package/src/kotlin-app.ts +120 -63
  97. package/src/kotlin-host.ts +1 -0
  98. package/src/kotlinSdkContract.ts +8 -1
package/README.md CHANGED
@@ -200,7 +200,10 @@ and opens it through the Swift guest host. SwiftPM directories (or their
200
200
  resource discovery and watcher. Select an Xcode application
201
201
  with `--scheme <name>` or `--target <name>`. Android app module directories
202
202
  containing `src/main/AndroidManifest.xml` use the existing Kotlin compiler and
203
- guest host; `--activity <name>` selects the activity. These native commands stay
203
+ guest host; `--activity <name>` selects the activity. `--variant <name>` uses
204
+ the native Gradle variant's generated sources and application metadata, including
205
+ KSP outputs. Dependencies still need the supported Kotlin closure, and Java
206
+ declarations retain the compiler's supported syntax. These native commands stay
204
207
  running to watch sources and stop their owned preview on exit.
205
208
 
206
209
  For apps using `react-native-config`, open with `peach open <app-port> --load-env`.
@@ -1449,6 +1449,7 @@ async function openSim(
1449
1449
  '--target',
1450
1450
  '--scheme',
1451
1451
  '--activity',
1452
+ '--variant',
1452
1453
  '--host-port',
1453
1454
  '--swift-sdks-path',
1454
1455
  '--viewport',
@@ -1576,6 +1577,7 @@ async function openSim(
1576
1577
  '--target',
1577
1578
  '--scheme',
1578
1579
  '--activity',
1580
+ '--variant',
1579
1581
  '--host-port',
1580
1582
  '--swift-sdks-path',
1581
1583
  ])
@@ -43,6 +43,7 @@ export async function runKotlin(
43
43
  let hostPort = 0
44
44
  let openPreview = true
45
45
  let activity: string | undefined
46
+ let variant: string | undefined
46
47
  const valueFlags = new Set(['--driver', '--profile', '--cdp-port', '--base-url'])
47
48
  const booleanFlags = new Set([
48
49
  '--headless',
@@ -58,6 +59,7 @@ export async function runKotlin(
58
59
  else if (
59
60
  arg === '--host-port' ||
60
61
  arg === '--activity' ||
62
+ arg === '--variant' ||
61
63
  arg === '--device' ||
62
64
  valueFlags.has(arg)
63
65
  ) {
@@ -68,6 +70,7 @@ export async function runKotlin(
68
70
  if (!Number.isInteger(hostPort) || hostPort < 1 || hostPort > 65535)
69
71
  throw new Error('--host-port must be a port from 1 to 65535')
70
72
  } else if (arg === '--activity') activity = value
73
+ else if (arg === '--variant') variant = value
71
74
  else if (arg === '--device') opts.device = value
72
75
  else openArgs.push(arg, value)
73
76
  } else if (booleanFlags.has(arg)) openArgs.push(arg)
@@ -89,7 +92,11 @@ export async function runKotlin(
89
92
  )
90
93
  const moduleRoot = peachKotlinModuleRoot()
91
94
  const pins = readAndroidPins(moduleRoot)
92
- let project: KotlinAppProject = await readKotlinApp(modulePath, { activity, pins })
95
+ let project: KotlinAppProject = await readKotlinApp(modulePath, {
96
+ activity,
97
+ variant,
98
+ pins,
99
+ })
93
100
  const host = await import('../../src/kotlin-host')
94
101
  const controller = new AbortController()
95
102
  const resources: OpenCommandResources = {}
@@ -173,7 +180,7 @@ export async function runKotlin(
173
180
  while (pending && !controller.signal.aborted) {
174
181
  pending = false
175
182
  try {
176
- const nextProject = await readKotlinApp(modulePath, { activity, pins })
183
+ const nextProject = await readKotlinApp(modulePath, { activity, variant, pins })
177
184
  const nextArtifact = await host.kotlinAppArtifact(
178
185
  nextProject,
179
186
  moduleRoot,
@@ -224,7 +231,7 @@ export async function runKotlin(
224
231
  })
225
232
  console.log(` Kotlin app: ${project.launcher.name} in ${project.moduleDir}`)
226
233
  console.log(` Kotlin preview host: ${origin}`)
227
- watcher = fs.watch(project.moduleDir, { recursive: true }, (_event, file) => {
234
+ watcher = fs.watch(project.projectDir, { recursive: true }, (_event, file) => {
228
235
  if (
229
236
  file &&
230
237
  file
@@ -215,6 +215,7 @@ export async function runPackage(args: string[]): Promise<void> {
215
215
  '--target',
216
216
  '--scheme',
217
217
  '--activity',
218
+ '--variant',
218
219
  '--package-versions',
219
220
  '--project-root',
220
221
  '--sign',
@@ -406,6 +407,7 @@ export async function runPackage(args: string[]): Promise<void> {
406
407
  target: values.get('--target'),
407
408
  scheme: values.get('--scheme'),
408
409
  activity: values.get('--activity'),
410
+ variant: values.get('--variant'),
409
411
  })
410
412
  try {
411
413
  for (const [pathname, asset] of app.assets)
@@ -143,6 +143,7 @@ export async function prepareNativeInput(
143
143
  target?: string
144
144
  scheme?: string
145
145
  activity?: string
146
+ variant?: string
146
147
  signal?: AbortSignal
147
148
  },
148
149
  ) {
@@ -152,6 +153,7 @@ export async function prepareNativeInput(
152
153
  const moduleRoot = host.peachKotlinModuleRoot()
153
154
  const project = await readKotlinApp(input.path, {
154
155
  activity: opts.activity,
156
+ variant: opts.variant,
155
157
  pins: readAndroidPins(moduleRoot),
156
158
  })
157
159
  const metadata = await host.kotlinAppArtifact(project, moduleRoot, opts.origin)
@@ -673,7 +673,7 @@ export const DECLARED_OUTBOUND_CALLS: Record<string, OutboundCallDeclaration> =
673
673
  category: 'local_development',
674
674
  count: 1,
675
675
  },
676
- 'packages/peach-engine/src/mcp/ws-bridge.ts :: websocket :: resolveSootsimBridgeWebSocketUrl({ bridgePort, href: window.location.href, })':
676
+ 'packages/peach-engine/src/mcp/ws-bridge.ts :: websocket :: resolveSootsimBridgeWebSocketUrl({ bridgePort, href: host.href(), })':
677
677
  { category: 'local_development', count: 1 },
678
678
  'packages/peach-engine/src/capture/browser-execution-observer.ts :: websocket :: options.webSocketUrl':
679
679
  { category: 'local_development', count: 1 },
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2194 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2197 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = '', __sootsim_import_meta_filename = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; __sootsim_import_meta_filename = __filename; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2194 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2197 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = '', __sootsim_import_meta_filename = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; __sootsim_import_meta_filename = __filename; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2194 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2197 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = '', __sootsim_import_meta_filename = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; __sootsim_import_meta_filename = __filename; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2194 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2197 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = '', __sootsim_import_meta_filename = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; __sootsim_import_meta_filename = __filename; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2194 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2197 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = '', __sootsim_import_meta_filename = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; __sootsim_import_meta_filename = __filename; } 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.2194 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2197 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = '', __sootsim_import_meta_filename = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; __sootsim_import_meta_filename = __filename; } 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.2194 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2197 | (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.2194 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2197 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = '', __sootsim_import_meta_filename = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; __sootsim_import_meta_filename = __filename; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2194 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2197 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = '', __sootsim_import_meta_filename = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; __sootsim_import_meta_filename = __filename; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2194 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2197 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
 
3
3
  // src/bridge-contract.ts
4
4
  var SIM_LONG_PRESS_MAX_MS = 5e3;
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2194 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2197 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
  let __sootsim_import_meta_url = '', __sootsim_import_meta_dirname = '', __sootsim_import_meta_filename = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; __sootsim_import_meta_dirname = __dirname; __sootsim_import_meta_filename = __filename; } catch {}
3
3
  "use strict";
4
4
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- /*! peach v0.1.2194 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
1
+ /*! peach v0.1.2197 | (c) 2026 Tamagui LLC | Proprietary; see LICENSE */
2
2
 
3
3
  // src/bridge-contract.ts
4
4
  var REFUSED_PERFORM_STEP_TYPES = [