@wix/himalaya-cli 0.1597.0 → 0.1599.0

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 (27) hide show
  1. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/core/sdk/legacy-import/src/index.d.ts +30 -0
  2. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/core/sdk/sdk-types/src/capabilities.generated.d.ts +2 -1
  3. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/core/sdk/webview-page/src/capabilities.generated.d.ts +2 -0
  4. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/core/ts/src/define-app.d.ts +12 -1
  5. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/core/ts/src/legacy-import.d.ts +134 -0
  6. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/audio-record.mjs +1 -0
  7. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/calendar.mjs +1 -0
  8. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/calls.mjs +1 -0
  9. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/contacts.mjs +1 -0
  10. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/core.mjs +184 -16
  11. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/legacy-import.mjs +40 -0
  12. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/location.mjs +1 -0
  13. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/motion.mjs +1 -0
  14. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/photos.mjs +1 -0
  15. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/sdk-types.mjs +1 -0
  16. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/tasks.mjs +1 -0
  17. package/dist/authoring-runtime/node_modules/@wix/himalaya/package.json +4 -0
  18. package/dist/cli.mjs +641 -510
  19. package/dist/preview-assets.generated.bin +0 -0
  20. package/guides/app-config.md +1 -1
  21. package/guides/capabilities.md +1 -0
  22. package/guides/importable-sdks.md +1 -0
  23. package/guides/qa-builds.md +43 -1
  24. package/guides/sdk-reference.json +43 -0
  25. package/guides/web-page-native-sdk.md +1 -1
  26. package/guides/web-page-sdk-reference.md +1 -0
  27. package/package.json +2 -2
Binary file
@@ -137,7 +137,7 @@ does not include answers `module_not_linked` on device. Some components need one
137
137
  and `himi validate` errors on a screen that uses one the app does not declare.
138
138
  `presigned_upload.putFile` also requires `files` on the calling screen.
139
139
 
140
- App-level capability vocabulary: `camera`, `barcode_scanner`, `biometrics`, `secure_storage`, `share`, `push`, `file_picker`, `files`, `open_url`, `pdf`, `clipboard`, `theme`, `l10n`, `photos`, `presigned_upload`, `ui`, `calendar`, `contacts`, `tasks`, `audio_record`, `audio_record_background`, `calls`, `location`, `location_background`, `motion`, `health`, `media_playback`, `webview`, `browser_auth`, `haptic`, `himi_apps`, `iap`, `keyboard`, `torch`, `network`, `wix_cashier`, `wix_chat`, `live_activity`, `local_database`, `speech`, `speaker_diarization`, `system_intents`, `on_device_ai`, `app_info`, `release_control`, `godot`, `base44`, `animation`.
140
+ App-level capability vocabulary: `camera`, `barcode_scanner`, `biometrics`, `secure_storage`, `share`, `push`, `file_picker`, `files`, `open_url`, `pdf`, `clipboard`, `theme`, `l10n`, `photos`, `presigned_upload`, `ui`, `calendar`, `contacts`, `tasks`, `audio_record`, `audio_record_background`, `calls`, `location`, `location_background`, `motion`, `health`, `media_playback`, `webview`, `browser_auth`, `haptic`, `himi_apps`, `iap`, `keyboard`, `torch`, `network`, `wix_cashier`, `wix_chat`, `live_activity`, `local_database`, `speech`, `speaker_diarization`, `system_intents`, `on_device_ai`, `app_info`, `release_control`, `legacy_import`, `godot`, `base44`, `animation`.
141
141
 
142
142
  ## What `himi validate` checks (7 passes)
143
143
 
@@ -278,6 +278,7 @@ prompt.
278
278
  | `app_info` | the shell's boot has to configure it with the app id it reports |
279
279
  | `system_intents` | the shell has to wire the system-intents host (app identity, deep-link routing, refresh) |
280
280
  | `release_control` | the shell's boot has to configure it with the app id whose releases it switches |
281
+ | `legacy_import` | the shell's boot has to run the legacy importer before auth and feed it the signed-in principal |
281
282
  | `base44` | the shell's boot has to bind the Base44 app it talks to; the module links, the binding is the shell's |
282
283
  | `godot` | needs the shell's game surface view and, on Android, the shell's pick of the engine's C++ runtime |
283
284
 
@@ -40,6 +40,7 @@ package in one greppable file) or `GET /v1/sdk/<name>` over HTTP; in the CLI,
40
40
  - `@himalaya/keyboard` — Tier-5 typed binding for the platform's keyboard capability.
41
41
  - `@himalaya/kyber-api` — narrow Tier-5 binding for Kyber BO HTTP calls.
42
42
  - `@himalaya/l10n` — synchronous app-catalog copy (SDK foundation; requires host integration).
43
+ - `@himalaya/legacy-import` — Tier-5 typed binding for the one-time legacy import report.
43
44
  - `@himalaya/live-activity` — Tier-5 typed binding to the platform's Live Activity capability.
44
45
  - `@himalaya/local-db` — Tier-5 typed binding to the platform's local-database capability: a per-entity on-device store (EntityStore) + an offline WriteQueue, so a worker bundle can persist and query real data on device.
45
46
  - `@himalaya/location` — Tier-5 typed binding for device location.
@@ -1136,7 +1136,7 @@ himi dist --app <app> --platform android --aab --wait --target bo
1136
1136
  any pool time is spent: `invalid_android_format` (anything but `apk` / `aab`),
1137
1137
  `android_format_requires_link` (any destination but `link`), `android_format_requires_android`
1138
1138
  (an iOS-only build, where the flag would be dropped in silence), and
1139
- `android_format_requires_wix_keystore` (any `--android-signing` other than `wix-keystore`), and
1139
+ `android_format_requires_wix_keystore` (any `--android-signing` other than `wix-keystore` or `owner`), and
1140
1140
  `android_format_shell_unsupported` (the `owner-lite` shell, whose gradle build refuses a store
1141
1141
  bundle without a real Firebase config and customer identity). A mixed `--platform ios,android`
1142
1142
  applies it to the Android leg only.
@@ -1283,6 +1283,48 @@ updates come from Wix builds too; leaving Wix needs an upload-key reset through
1283
1283
  support. A pool machine without the key fails the build, naming the paths it searched, rather than
1284
1284
  signing with another key.
1285
1285
 
1286
+ ### An unsigned bundle under the owner's own name — an owner bundle
1287
+
1288
+ **Off by default.** A plane answers `501 owner_bundles_unconfigured` until `HIMI_DIST_OWNER_BUNDLES=1`
1289
+ is on its databag. It's the first half of a path for an owner who publishes to their own Google Play
1290
+ account with no WixOne link. The bundle isn't usable until it's signed, and nothing here signs it yet.
1291
+
1292
+ ```sh
1293
+ himi dist --app <app> --platform android --aab --android-signing owner \
1294
+ --package-name com.acme.app --google-services ./google-services.json --version 1.0.0 --target wix
1295
+ ```
1296
+
1297
+ - **What you get:** an **unsigned** `.aab` as `artifact.downloadUrl`, with `androidSigning: "unsigned"`
1298
+ and `ownerBundle` (`packageName`, `firebaseProjectId`, `configSha256`) on the job. No APK comes with
1299
+ it, because that would be an installable file on a Wix link under any name the caller typed.
1300
+ - **Why unsigned, not QA-signed:** Google Play should refuse an unsigned file on upload, so forgetting
1301
+ to sign costs nothing. A QA signature would be accepted, and would tie the listing to a key committed
1302
+ to this repo.
1303
+ - **It runs on Linux.** It's the one brokered job that does: `linux:dist:android` runs
1304
+ `native-ci/scripts/run-android.mjs`, which sets up the Android SDK and JDK before `run-dist`.
1305
+ - **The inputs come from the request:** `androidPackageName` and `googleServicesJson`, with nothing read
1306
+ from Branded, the Firebase pool or mobile-apps-containers-builder. The package name can't be under
1307
+ Wix's namespaces, but ownership isn't checked: Google Play binds a name at upload. The Firebase file is
1308
+ stored apart from the job record, served by `GET /v1/dist/android-config` to that job's token, and
1309
+ blanked when the job succeeds or is canceled, since Job Service may retry a failed one.
1310
+ - **It uses the self-serve quota tier**, like any other self-serve build.
1311
+ - **The pool proves the result.** `jarsigner` must say the file is unsigned, and the bundle's manifest
1312
+ must carry the owner's package name. The name can't be changed once it reaches a Play listing.
1313
+ - **Version skew.** An older `run-dist` ignores the request and signs with WixOne, so two checks guard
1314
+ this. The commit must carry `ownerBundle: 1` in `signing-protocol.json` (else
1315
+ `409 release_predates_owner_bundles`), and the result callback fails anything not reported as
1316
+ `unsigned` and drops its link (`android_format_wrong_signer`).
1317
+ - **A site-bound app is refused** (`409 owner_bundle_site_bound`). Its Google Play file is a store
1318
+ build, whose plan check this path must not bypass.
1319
+
1320
+ Other refusals, each with `code` equal to `error`: `android_signing_unsigned_requires_aab`,
1321
+ `owner_bundle_fields_unexpected` (the two fields on any other build), `owner_bundle_android_only`,
1322
+ `owner_bundle_incompatible_options` (`--signing`), `owner_bundle_shell_unsupported` (any shell but
1323
+ `branded-lite`), `owner_bundle_version_invalid`, `owner_bundle_package_invalid`,
1324
+ `owner_bundle_package_reserved` (Wix namespaces and the `himi.` prefix), `owner_bundle_firebase_required`, `owner_bundle_firebase_invalid` and
1325
+ `owner_bundle_firebase_package_mismatch` 400, and `owner_bundle_unavailable` 503. Design:
1326
+ [the design note](superpowers/specs/2026-11-07-owner-signed-play-bundle-design.md).
1327
+
1286
1328
  ### The iOS lane lives in one shared place
1287
1329
 
1288
1330
  `fastlane dist` runs with `cwd = <app>/ios`, so it needs `<app>/ios/fastlane/Fastfile`. That file is
@@ -3198,6 +3198,49 @@
3198
3198
  }
3199
3199
  ]
3200
3200
  },
3201
+ {
3202
+ "name": "@himalaya/legacy-import",
3203
+ "source": "core/sdk/legacy-import/src/index.ts",
3204
+ "description": "Tier-5 typed binding for the one-time legacy import report.",
3205
+ "api": [
3206
+ {
3207
+ "name": "LegacyImportSourceReport",
3208
+ "kind": "interface",
3209
+ "jsdoc": "",
3210
+ "decl": "export interface LegacyImportSourceReport {\n id: string;\n /** `done` | `empty` | `incomplete` | `failed` | `unregistered_kind` | `invalid_options` */\n status: string;\n /** Item counts — `items`, plus one per sink the source's items went to. */\n counts: Record<string, number>;\n error?: string;\n}"
3211
+ },
3212
+ {
3213
+ "name": "LegacyImportReportItem",
3214
+ "kind": "interface",
3215
+ "jsdoc": "",
3216
+ "decl": "export interface LegacyImportReportItem {\n key: string;\n /** The item's value — UTF-8 text, or base64 when `meta.encoding === \"base64\"`. */\n value: string;\n meta?: Record<string, string>;\n}"
3217
+ },
3218
+ {
3219
+ "name": "LegacyImportReport",
3220
+ "kind": "interface",
3221
+ "jsdoc": "",
3222
+ "decl": "export interface LegacyImportReport {\n /** The `legacyImport.id` that produced it. */\n id: string;\n /** Epoch ms the import ran. */\n extractedAt: number;\n sources: LegacyImportSourceReport[];\n /** Only the `report` sink's items. */\n items: LegacyImportReportItem[];\n}"
3223
+ },
3224
+ {
3225
+ "name": "read",
3226
+ "kind": "function",
3227
+ "jsdoc": "/** The import report for the signed-in principal, or null — none ran, it was acknowledged, it\n * belongs to another account, or this host has nothing to import (web). */",
3228
+ "decl": "export async function read(): Promise<LegacyImportReport | null>;"
3229
+ },
3230
+ {
3231
+ "name": "ack",
3232
+ "kind": "function",
3233
+ "jsdoc": "/** Delete the report. Idempotent: acknowledging twice (or with nothing to acknowledge) is fine. */",
3234
+ "decl": "export async function ack(): Promise<void>;"
3235
+ },
3236
+ {
3237
+ "name": "version",
3238
+ "kind": "const",
3239
+ "jsdoc": "/** Capability version, for bundles that gate on min binary version. */",
3240
+ "decl": "export const version = 1;"
3241
+ }
3242
+ ]
3243
+ },
3201
3244
  {
3202
3245
  "name": "@himalaya/live-activity",
3203
3246
  "source": "core/sdk/live-activity/src/index.ts",
@@ -39,7 +39,7 @@ Your page can only use capabilities the **app owner** turned on for your site. I
39
39
  `capabilities`, allowing **every** method the capability's page lists — except
40
40
  `presigned_upload.putFile`, which reads a device file and is allowed only when `files` is enabled
41
41
  too. So enabling a capability is enough; the owner does not list methods.
42
- - **What a Brandy app cannot enable:** `app_info`, `godot`, `himi_apps`, `live_activity`,
42
+ - **What a Brandy app cannot enable:** `app_info`, `godot`, `himi_apps`, `legacy_import`, `live_activity`,
43
43
  `local_database`, `release_control`, `system_intents`, `ui` and `wix_platform` — most need wiring
44
44
  a website app's shell does not have, so plan your page without them. `base44` works only when the
45
45
  app also has a Base44 binding. Every other capability in the reference can be enabled; other Himi
@@ -32,6 +32,7 @@ the SDK sources, so it matches the shipped SDKs.
32
32
  - [`himi_apps`](https://apps.wix.com/_api/himi-serve/authoring/resource/web-sdk%2Fhimi_apps?format=md) — Cross-app open / host queries. 4 methods · not in Brandy.
33
33
  - [`iap`](https://apps.wix.com/_api/himi-serve/authoring/resource/web-sdk%2Fiap?format=md) — In-app-purchase capability. 9 methods.
34
34
  - [`keyboard`](https://apps.wix.com/_api/himi-serve/authoring/resource/web-sdk%2Fkeyboard?format=md) — Keyboard capability. 1 method.
35
+ - [`legacy_import`](https://apps.wix.com/_api/himi-serve/authoring/resource/web-sdk%2Flegacy_import?format=md) — One-time legacy import report. 2 methods · not in Brandy.
35
36
  - [`live_activity`](https://apps.wix.com/_api/himi-serve/authoring/resource/web-sdk%2Flive_activity?format=md) — Live Activity capability. 3 methods · not in Brandy.
36
37
  - [`local_database`](https://apps.wix.com/_api/himi-serve/authoring/resource/web-sdk%2Flocal_database?format=md) — Local-database capability: a per-entity on-device store (EntityStore) + an offline WriteQueue, so a worker bundle can persist and query real data on device. 11 methods · not in Brandy.
37
38
  - [`location`](https://apps.wix.com/_api/himi-serve/authoring/resource/web-sdk%2Flocation?format=md) — Device location. 10 methods.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wix/himalaya-cli",
3
- "version": "0.1597.0",
3
+ "version": "0.1599.0",
4
4
  "type": "module",
5
5
  "description": "himi — the Himalaya authoring CLI. Build a Tier-5 content package on your own machine, push it to the production serve as a draft, preview it on web + Himi Player, and read worker logs back — the remote dev loop. Wraps @himalaya/serve-cli for transport.",
6
6
  "keywords": [
@@ -72,5 +72,5 @@
72
72
  "artifactId": "himalaya-cli"
73
73
  }
74
74
  },
75
- "falconPackageHash": "fdefbbbafc15c579e39464ec6f448cd09b9e8439934b586fb9f3a6ac"
75
+ "falconPackageHash": "0492bb475381b374bdbf2ac75086d487a090cf829cbbf6f254c6ddd1"
76
76
  }