@tantawowa/hosanna-tools 3.15.0 → 3.15.2

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 (76) hide show
  1. package/dist/build-info.json +3 -3
  2. package/dist/cli.js +36 -7
  3. package/dist/cli.js.map +1 -1
  4. package/dist/lib/app-config-resolver.js +2 -2
  5. package/dist/lib/app-config-resolver.js.map +1 -1
  6. package/dist/native/native-project.d.ts +5 -2
  7. package/dist/native/native-project.js +216 -25
  8. package/dist/native/native-project.js.map +1 -1
  9. package/dist/native/templates/android/AndroidAutoManifest.xml +30 -0
  10. package/dist/native/templates/android/WearOsManifest.xml +31 -0
  11. package/dist/native/templates/android/app-build.gradle.kts +58 -12
  12. package/dist/native/templates/android/automotive_app_desc.xml +4 -0
  13. package/dist/native/templates/android/build.gradle.kts +3 -2
  14. package/dist/native/templates/android/gradle-wrapper.properties +1 -1
  15. package/dist/native/templates/android/gradle.properties +1 -0
  16. package/dist/native/templates/apple/HosannaCarPlay.entitlements +8 -0
  17. package/dist/native/templates/apple/HosannaIosApp.swift +7 -1
  18. package/dist/native/templates/apple/HosannaWatchApp.swift +10 -0
  19. package/dist/native/templates/apple/Info.carplay.plist +43 -0
  20. package/dist/native/templates/apple/Info.watchos.plist +26 -0
  21. package/dist/native/templates/apple/project.yml +8 -0
  22. package/dist/run/android-auto.d.ts +11 -0
  23. package/dist/run/android-auto.js +121 -0
  24. package/dist/run/android-auto.js.map +1 -0
  25. package/dist/run/android-emulator.d.ts +14 -1
  26. package/dist/run/android-emulator.js +303 -51
  27. package/dist/run/android-emulator.js.map +1 -1
  28. package/dist/run/apple-watch.d.ts +49 -0
  29. package/dist/run/apple-watch.js +389 -0
  30. package/dist/run/apple-watch.js.map +1 -0
  31. package/dist/run/carplay.d.ts +15 -0
  32. package/dist/run/carplay.js +68 -0
  33. package/dist/run/carplay.js.map +1 -0
  34. package/dist/run/destination-picker.js +25 -5
  35. package/dist/run/destination-picker.js.map +1 -1
  36. package/dist/run/executor.d.ts +2 -0
  37. package/dist/run/executor.js +27 -14
  38. package/dist/run/executor.js.map +1 -1
  39. package/dist/run/hsconfig-static-assets.d.ts +11 -0
  40. package/dist/run/hsconfig-static-assets.js +75 -0
  41. package/dist/run/hsconfig-static-assets.js.map +1 -1
  42. package/dist/run/ios-device.d.ts +1 -0
  43. package/dist/run/ios-device.js +2 -2
  44. package/dist/run/ios-device.js.map +1 -1
  45. package/dist/run/ios-simulator.d.ts +3 -1
  46. package/dist/run/ios-simulator.js +4 -4
  47. package/dist/run/ios-simulator.js.map +1 -1
  48. package/dist/run/native-build.d.ts +2 -2
  49. package/dist/run/native-build.js +15 -3
  50. package/dist/run/native-build.js.map +1 -1
  51. package/dist/run/planner.js +291 -13
  52. package/dist/run/planner.js.map +1 -1
  53. package/dist/run/run-controller.d.ts +10 -0
  54. package/dist/run/run-controller.js +458 -42
  55. package/dist/run/run-controller.js.map +1 -1
  56. package/dist/run/targets.d.ts +32 -0
  57. package/dist/run/targets.js +106 -6
  58. package/dist/run/targets.js.map +1 -1
  59. package/dist/run/types.d.ts +17 -2
  60. package/dist/run/types.js +24 -3
  61. package/dist/run/types.js.map +1 -1
  62. package/dist/support-tools/android-dev-server.d.ts +1 -1
  63. package/dist/support-tools/android-dev-server.js +8 -6
  64. package/dist/support-tools/android-dev-server.js.map +1 -1
  65. package/dist/support-tools/android-metro-build.d.ts +7 -0
  66. package/dist/support-tools/android-metro-build.js +36 -2
  67. package/dist/support-tools/android-metro-build.js.map +1 -1
  68. package/dist/support-tools/apple-bundler.js +62 -4
  69. package/dist/support-tools/apple-bundler.js.map +1 -1
  70. package/dist/support-tools/build-config-resolver.js +4 -2
  71. package/dist/support-tools/build-config-resolver.js.map +1 -1
  72. package/dist/updater/framework-installer.js +7 -0
  73. package/dist/updater/framework-installer.js.map +1 -1
  74. package/dist/updater/license-manager.js +7 -0
  75. package/dist/updater/license-manager.js.map +1 -1
  76. package/package.json +1 -1
@@ -1,6 +1,6 @@
1
1
  {
2
- "buildDate": "2026-08-06T14:12:59+00:00",
3
- "buildDateISO": "2026-08-06T14:12:59.273Z",
2
+ "buildDate": "2026-08-08T05:00:13+00:00",
3
+ "buildDateISO": "2026-08-08T05:00:13.957Z",
4
4
  "timeZone": "UTC",
5
- "gitHash": "8cbf870"
5
+ "gitHash": "b12280a"
6
6
  }
package/dist/cli.js CHANGED
@@ -234,7 +234,15 @@ function rememberedExplicitDestination(plan, hasExplicitDestination) {
234
234
  return undefined;
235
235
  return Object.assign({ platform: plan.resolved.platform, target }, (plan.resolved.deviceSelector ? { device: plan.resolved.deviceSelector } : {}));
236
236
  }
237
- const NATIVE_PLATFORM_CHOICES = ['apple', 'ios', 'apple-tv', 'android', 'android-tv', 'all'];
237
+ const NATIVE_PLATFORM_CHOICES = [
238
+ 'apple', 'ios', 'apple-tv', 'carplay', 'apple-watch', 'watchos',
239
+ 'android', 'android-tv', 'android-auto', 'wear-os', 'wearos', 'android-watch',
240
+ 'cars', 'watches', 'all',
241
+ ];
242
+ const RUN_PLATFORM_CHOICES = [
243
+ 'web', 'roku', 'ios', 'apple-tv', 'carplay', 'apple-watch', 'watchos',
244
+ 'android', 'android-tv', 'android-auto', 'wear-os', 'wearos', 'android-watch',
245
+ ];
238
246
  function nativeInputFromArgs(args) {
239
247
  return {
240
248
  cwd: process.cwd(),
@@ -244,8 +252,11 @@ function nativeInputFromArgs(args) {
244
252
  bundleId: stringArg(args['bundle-id']),
245
253
  iosBundleId: stringArg(args['ios-bundle-id']),
246
254
  appleTvBundleId: stringArg(args['apple-tv-bundle-id']),
255
+ appleWatchBundleId: stringArg(args['apple-watch-bundle-id']),
247
256
  androidPackage: stringArg(args['android-package']),
248
257
  androidTvPackage: stringArg(args['android-tv-package']),
258
+ androidAutoPackage: stringArg(args['android-auto-package']),
259
+ wearOsPackage: stringArg(args['wear-os-package']),
249
260
  teamId: stringArg(args['team-id']),
250
261
  versionName: stringArg(args['version-name']),
251
262
  versionCode: numberOrStringArg(args['version-code']),
@@ -656,8 +667,11 @@ catch (err) {
656
667
  .option('bundle-id', { type: 'string', describe: 'Base bundle/package identifier' })
657
668
  .option('ios-bundle-id', { type: 'string', describe: 'iOS bundle identifier' })
658
669
  .option('apple-tv-bundle-id', { type: 'string', describe: 'tvOS bundle identifier' })
670
+ .option('apple-watch-bundle-id', { type: 'string', describe: 'watchOS bundle identifier' })
659
671
  .option('android-package', { type: 'string', describe: 'Android namespace and phone package base' })
660
672
  .option('android-tv-package', { type: 'string', describe: 'Android TV application id' })
673
+ .option('android-auto-package', { type: 'string', describe: 'Android Auto application id' })
674
+ .option('wear-os-package', { type: 'string', describe: 'Wear OS application id' })
661
675
  .option('team-id', { type: 'string', describe: 'Apple development team id for generated xcconfig files' })
662
676
  .option('version-name', { type: 'string', describe: 'Native marketing/versionName value' })
663
677
  .option('version-code', { type: 'number', describe: 'Native build/versionCode value' })
@@ -667,6 +681,7 @@ catch (err) {
667
681
  .option('format', { type: 'string', choices: ['text', 'json'], default: 'text', describe: 'Output format' })
668
682
  .option('non-interactive', { type: 'boolean', default: false, describe: 'Fail instead of prompting when a decision is needed' })
669
683
  .example('$0 native:init all --display-name "Hope Stream"', 'Initialize Apple and Android app-owned native projects')
684
+ .example('$0 native:init watches --display-name "Hope Stream"', 'Initialize Apple Watch and Wear OS native targets')
670
685
  .example('$0 native:init android-tv --dry-run --format json', 'Preview Android TV native setup as JSON'), async (args) => {
671
686
  try {
672
687
  const mod = await Promise.resolve().then(() => __importStar(require('./native/native-project.js')));
@@ -700,8 +715,11 @@ catch (err) {
700
715
  .option('bundle-id', { type: 'string', describe: 'Base bundle/package identifier' })
701
716
  .option('ios-bundle-id', { type: 'string', describe: 'iOS bundle identifier' })
702
717
  .option('apple-tv-bundle-id', { type: 'string', describe: 'tvOS bundle identifier' })
718
+ .option('apple-watch-bundle-id', { type: 'string', describe: 'watchOS bundle identifier' })
703
719
  .option('android-package', { type: 'string', describe: 'Android namespace and phone package base' })
704
720
  .option('android-tv-package', { type: 'string', describe: 'Android TV application id' })
721
+ .option('android-auto-package', { type: 'string', describe: 'Android Auto application id' })
722
+ .option('wear-os-package', { type: 'string', describe: 'Wear OS application id' })
705
723
  .option('team-id', { type: 'string', describe: 'Apple development team id for generated xcconfig files' })
706
724
  .option('version-name', { type: 'string', describe: 'Native marketing/versionName value' })
707
725
  .option('version-code', { type: 'number', describe: 'Native build/versionCode value' })
@@ -731,8 +749,11 @@ catch (err) {
731
749
  .option('bundle-id', { type: 'string', describe: 'Base bundle/package identifier' })
732
750
  .option('ios-bundle-id', { type: 'string', describe: 'iOS bundle identifier' })
733
751
  .option('apple-tv-bundle-id', { type: 'string', describe: 'tvOS bundle identifier' })
752
+ .option('apple-watch-bundle-id', { type: 'string', describe: 'watchOS bundle identifier' })
734
753
  .option('android-package', { type: 'string', describe: 'Android namespace and phone package base' })
735
754
  .option('android-tv-package', { type: 'string', describe: 'Android TV application id' })
755
+ .option('android-auto-package', { type: 'string', describe: 'Android Auto application id' })
756
+ .option('wear-os-package', { type: 'string', describe: 'Wear OS application id' })
736
757
  .option('team-id', { type: 'string', describe: 'Apple development team id for generated xcconfig files' })
737
758
  .option('version-name', { type: 'string', describe: 'Native marketing/versionName value' })
738
759
  .option('version-code', { type: 'number', describe: 'Native build/versionCode value' })
@@ -1783,12 +1804,12 @@ catch (err) {
1783
1804
  .command('target:list [platform]', 'List run targets discovered by hst, including web emulators, sims, and physical devices', yargs => yargs
1784
1805
  .positional('platform', {
1785
1806
  type: 'string',
1786
- choices: ['web', 'roku', 'ios', 'apple-tv', 'android', 'android-tv'],
1807
+ choices: RUN_PLATFORM_CHOICES,
1787
1808
  describe: 'Filter by launch platform',
1788
1809
  })
1789
1810
  .option('platform', {
1790
1811
  type: 'string',
1791
- choices: ['web', 'roku', 'ios', 'apple-tv', 'android', 'android-tv'],
1812
+ choices: RUN_PLATFORM_CHOICES,
1792
1813
  describe: 'Filter by launch platform',
1793
1814
  })
1794
1815
  .option('target', {
@@ -1798,7 +1819,7 @@ catch (err) {
1798
1819
  })
1799
1820
  .option('form-factor', {
1800
1821
  type: 'string',
1801
- choices: ['desktop', 'mobile', 'tablet', 'tv'],
1822
+ choices: ['desktop', 'mobile', 'tablet', 'tv', 'car', 'watch'],
1802
1823
  describe: 'Filter by form factor for broad agent inventory queries',
1803
1824
  })
1804
1825
  .option('json', {
@@ -1820,6 +1841,8 @@ catch (err) {
1820
1841
  .example('$0 target:list --platform android --target device --json', 'List physical Android device targets as JSON')
1821
1842
  .example('$0 target:list --platform android-tv --target sim --json', 'List Android TV emulator targets as JSON')
1822
1843
  .example('$0 target:list --platform apple-tv --target sim --json', 'List Apple TV simulator targets as JSON')
1844
+ .example('$0 target:list --platform apple-watch --target sim --json', 'List Apple Watch simulator targets as JSON')
1845
+ .example('$0 target:list --platform wear-os --target sim --json', 'List Wear OS emulator targets as JSON')
1823
1846
  .example('$0 target:list --form-factor tv --json', 'List TV-class targets as JSON'), async (args) => {
1824
1847
  try {
1825
1848
  const mod = await Promise.resolve().then(() => __importStar(require('./run/targets.js')));
@@ -1863,7 +1886,7 @@ catch (err) {
1863
1886
  })
1864
1887
  .option('platform', {
1865
1888
  type: 'string',
1866
- choices: ['web', 'roku', 'ios', 'apple-tv', 'android', 'android-tv'],
1889
+ choices: RUN_PLATFORM_CHOICES,
1867
1890
  describe: 'Build platform.',
1868
1891
  })
1869
1892
  .option('env', {
@@ -1910,10 +1933,12 @@ catch (err) {
1910
1933
  .example('$0 build roku dev device', 'Build the dev Roku output without deploying or streaming logs')
1911
1934
  .example('$0 build roku prod device --hsc-project platforms/hsconfig-roku.prod.json', 'Build Roku with an explicit HSC project file')
1912
1935
  .example('$0 build ios dev sim --device "iPhone 17 Pro"', 'Build an iOS simulator target without install, launch, or logs')
1936
+ .example('$0 build apple-watch dev sim --device "Apple Watch Series 11 (46mm)"', 'Build the paired Apple Watch simulator target')
1937
+ .example('$0 build wear-os dev sim --device "Wear_OS_Large_Round"', 'Build the Wear OS emulator target')
1913
1938
  .example('$0 build web dev emulator', 'Resolve web runtime build config without opening a browser'), async (args) => {
1914
1939
  await runRunPlanCommand('build', args);
1915
1940
  })
1916
- .command('run [platform] [env] [target] [deviceSelector]', 'Launch a Hosanna app on a platform target (web, Roku, iOS, Apple TV, Android, and Android TV targets are supported)', yargs => yargs
1941
+ .command('run [platform] [env] [target] [deviceSelector]', 'Launch a Hosanna app on a platform target, including car and watch surfaces', yargs => yargs
1917
1942
  .parserConfiguration({ 'boolean-negation': false, 'populate--': true })
1918
1943
  .positional('platform', {
1919
1944
  type: 'string',
@@ -1933,7 +1958,7 @@ catch (err) {
1933
1958
  })
1934
1959
  .option('platform', {
1935
1960
  type: 'string',
1936
- choices: ['web', 'roku', 'ios', 'apple-tv', 'android', 'android-tv'],
1961
+ choices: RUN_PLATFORM_CHOICES,
1937
1962
  describe: 'Launch platform.',
1938
1963
  })
1939
1964
  .option('env', {
@@ -2007,6 +2032,10 @@ catch (err) {
2007
2032
  .example('$0 run --platform android --target device --device "RF8M62694QT" --no-logs', 'Build, install, and launch on a physical Android device')
2008
2033
  .example('$0 run --platform android-tv --target sim --device "Television_1080p" --no-logs', 'Build, install, and launch on an Android TV emulator')
2009
2034
  .example('$0 run --platform apple-tv --target sim --device "Apple TV 4K"', 'Build, install, and launch on an Apple TV simulator')
2035
+ .example('$0 run --platform carplay --target sim --device "iPhone 17 Pro"', 'Launch the iPhone host and open the CarPlay Simulator display')
2036
+ .example('$0 run --platform android-auto --target sim --device "Pixel_8"', 'Launch Android Auto through the Desktop Head Unit')
2037
+ .example('$0 run --platform apple-watch --target sim --device "Apple Watch Series 11 (46mm)"', 'Build and launch through the paired Apple Watch simulator')
2038
+ .example('$0 run --platform wear-os --target sim --device "Wear_OS_Large_Round"', 'Build, install, and launch on a Wear OS emulator')
2010
2039
  .example('$0 run --platform roku --target device --device "living room"', 'Build, deploy, launch, and stream logs on a Roku device')
2011
2040
  .example('$0 run roku dev device --app criterion', 'Run a configured monorepo app/flavor')
2012
2041
  .example('$0 run roku prod device --hsc-project platforms/hsconfig.criterion.prod.json', 'Override the Roku HSC project file'), async (args) => {