@wix/himalaya-cli 0.1317.0 → 0.1319.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 (80) hide show
  1. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/core/sdk/sdk-types/src/capabilities.generated.d.ts +2 -1
  2. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/core/sdk/theme/src/index.d.ts +21 -0
  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/brand-color-math.d.ts +98 -0
  5. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/core/ts/src/define-app.d.ts +1 -1
  6. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/core/ts/src/schema.d.ts +9 -0
  7. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/audio-record.mjs +1 -0
  8. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/calendar.mjs +1 -0
  9. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/calls.mjs +1 -0
  10. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/contacts.mjs +1 -0
  11. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/core/brand-color-math.mjs +183 -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/dist/theme.mjs +189 -0
  18. package/dist/authoring-runtime/node_modules/@wix/himalaya/package.json +8 -0
  19. package/dist/cli.mjs +475 -372
  20. package/dist/preview-assets.generated.bin +0 -0
  21. package/guides/app-config.md +1 -1
  22. package/guides/importable-sdks.md +1 -0
  23. package/guides/sdk-reference.json +39 -2
  24. package/guides/web-page-sdk-reference.md +1 -0
  25. package/package.json +2 -2
  26. package/templates/beauty-salon-owner/config.ts +1 -1
  27. package/templates/beauty-salon-owner/dev/index.ts +125 -24
  28. package/templates/beauty-salon-owner/tier5-src/_shared/aria-attachments.ts +41 -2
  29. package/templates/beauty-salon-owner/tier5-src/_shared/aria-chat.ts +59 -31
  30. package/templates/beauty-salon-owner/tier5-src/himi-owner-lite-aria/index.ts +154 -13
  31. package/templates/community-club-owner/config.ts +1 -1
  32. package/templates/community-club-owner/dev/index.ts +125 -24
  33. package/templates/community-club-owner/tier5-src/_shared/aria-attachments.ts +41 -2
  34. package/templates/community-club-owner/tier5-src/_shared/aria-chat.ts +59 -31
  35. package/templates/community-club-owner/tier5-src/himi-owner-lite-aria/index.ts +154 -13
  36. package/templates/events-meetups-owner/config.ts +1 -1
  37. package/templates/events-meetups-owner/dev/index.ts +125 -24
  38. package/templates/events-meetups-owner/tier5-src/_shared/aria-attachments.ts +41 -2
  39. package/templates/events-meetups-owner/tier5-src/_shared/aria-chat.ts +59 -31
  40. package/templates/events-meetups-owner/tier5-src/himi-owner-lite-aria/index.ts +154 -13
  41. package/templates/gym-fitness-owner/config.ts +1 -1
  42. package/templates/gym-fitness-owner/dev/index.ts +125 -24
  43. package/templates/gym-fitness-owner/tier5-src/_shared/aria-attachments.ts +41 -2
  44. package/templates/gym-fitness-owner/tier5-src/_shared/aria-chat.ts +59 -31
  45. package/templates/gym-fitness-owner/tier5-src/himi-owner-lite-aria/index.ts +154 -13
  46. package/templates/nonprofit-cause-owner/config.ts +1 -1
  47. package/templates/nonprofit-cause-owner/dev/index.ts +125 -24
  48. package/templates/nonprofit-cause-owner/tier5-src/_shared/aria-attachments.ts +41 -2
  49. package/templates/nonprofit-cause-owner/tier5-src/_shared/aria-chat.ts +59 -31
  50. package/templates/nonprofit-cause-owner/tier5-src/himi-owner-lite-aria/index.ts +154 -13
  51. package/templates/owner-lite/config.ts +1 -1
  52. package/templates/owner-lite/dev/index.ts +125 -24
  53. package/templates/owner-lite/tier5-src/_shared/aria-attachments.ts +41 -2
  54. package/templates/owner-lite/tier5-src/_shared/aria-chat.ts +59 -31
  55. package/templates/owner-lite/tier5-src/himi-owner-lite-aria/index.ts +154 -13
  56. package/templates/podcast-creator-owner/config.ts +1 -1
  57. package/templates/podcast-creator-owner/dev/index.ts +125 -24
  58. package/templates/podcast-creator-owner/tier5-src/_shared/aria-attachments.ts +41 -2
  59. package/templates/podcast-creator-owner/tier5-src/_shared/aria-chat.ts +59 -31
  60. package/templates/podcast-creator-owner/tier5-src/himi-owner-lite-aria/index.ts +154 -13
  61. package/templates/portfolio-creative-owner/config.ts +1 -1
  62. package/templates/portfolio-creative-owner/dev/index.ts +125 -24
  63. package/templates/portfolio-creative-owner/tier5-src/_shared/aria-attachments.ts +41 -2
  64. package/templates/portfolio-creative-owner/tier5-src/_shared/aria-chat.ts +59 -31
  65. package/templates/portfolio-creative-owner/tier5-src/himi-owner-lite-aria/index.ts +154 -13
  66. package/templates/restaurant-owner/config.ts +1 -1
  67. package/templates/restaurant-owner/dev/index.ts +125 -24
  68. package/templates/restaurant-owner/tier5-src/_shared/aria-attachments.ts +41 -2
  69. package/templates/restaurant-owner/tier5-src/_shared/aria-chat.ts +59 -31
  70. package/templates/restaurant-owner/tier5-src/himi-owner-lite-aria/index.ts +154 -13
  71. package/templates/retail-store-owner/config.ts +1 -1
  72. package/templates/retail-store-owner/dev/index.ts +125 -24
  73. package/templates/retail-store-owner/tier5-src/_shared/aria-attachments.ts +41 -2
  74. package/templates/retail-store-owner/tier5-src/_shared/aria-chat.ts +59 -31
  75. package/templates/retail-store-owner/tier5-src/himi-owner-lite-aria/index.ts +154 -13
  76. package/templates/yoga-studio-owner/config.ts +1 -1
  77. package/templates/yoga-studio-owner/dev/index.ts +125 -24
  78. package/templates/yoga-studio-owner/tier5-src/_shared/aria-attachments.ts +41 -2
  79. package/templates/yoga-studio-owner/tier5-src/_shared/aria-chat.ts +59 -31
  80. package/templates/yoga-studio-owner/tier5-src/himi-owner-lite-aria/index.ts +154 -13
package/dist/cli.mjs CHANGED
@@ -5031,6 +5031,10 @@ var init_build_lib = __esm({
5031
5031
  "@himalaya/share": resolve8(REPO_ROOT4, "core/sdk/share/src/index.ts"),
5032
5032
  "@himalaya/open-url": resolve8(REPO_ROOT4, "core/sdk/open-url/src/index.ts"),
5033
5033
  "@himalaya/clipboard": resolve8(REPO_ROOT4, "core/sdk/clipboard/src/index.ts"),
5034
+ // RFC 0070 §3 — runtime brand overlay; and the brand colour rules it derives with, so a worker
5035
+ // can import the ONE implementation (filesystem-free, pinned by a test).
5036
+ "@himalaya/theme": resolve8(REPO_ROOT4, "core/sdk/theme/src/index.ts"),
5037
+ "@himalaya/core/brand-color-math": resolve8(REPO_ROOT4, "core/ts/src/brand-color-math.ts"),
5034
5038
  "@himalaya/photos": resolve8(REPO_ROOT4, "core/sdk/photos/src/index.ts"),
5035
5039
  // Credential-free raw binary PUT to a pre-signed upload URL (RFC 0002 capability).
5036
5040
  "@himalaya/presigned-upload": resolve8(REPO_ROOT4, "core/sdk/presigned-upload/src/index.ts"),
@@ -5571,8 +5575,8 @@ var init_catalog_v2 = __esm({
5571
5575
  "../html-to-t5/catalog.v2.json"() {
5572
5576
  catalog_v2_default = {
5573
5577
  encoding: "gzip-base64",
5574
- sha256: "6a0d15071955c9294aa10c4341cd562bcdb168fb147bb4bf8c677f87f3bae63b",
5575
- data: "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"
5578
+ sha256: "5f2471098dd499be17cb0e1aea71e52ba7ea49200cad460cc862b7973e64f171",
5579
+ data: "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"
5576
5580
  };
5577
5581
  }
5578
5582
  });
@@ -7530,7 +7534,6 @@ function buttonVariant(style) {
7530
7534
  var SYSTEM_FONT_FAMILY, TONAL_ELEVATION_ALPHA, BUTTON_MIN_HIT_TARGET, nonNegative, nonEmpty, own, COLOR_TOKEN_PROPS, TYPOGRAPHY_TOKEN_PROPS, BUTTON_VARIANTS;
7531
7535
  var init_tokens = __esm({
7532
7536
  "../../core/ts/src/tokens.ts"() {
7533
- "use strict";
7534
7537
  SYSTEM_FONT_FAMILY = "$system";
7535
7538
  TONAL_ELEVATION_ALPHA = [0, 0.05, 0.08, 0.11, 0.12, 0.14];
7536
7539
  BUTTON_MIN_HIT_TARGET = 44;
@@ -7586,6 +7589,7 @@ function resolveTranslation(value, catalog3, sourceCatalog) {
7586
7589
  var BINDING_SIGILS, BINDING_SIGIL_RE, TRANSLATION_PREFIX, TRANSLATION_KEY_RE;
7587
7590
  var init_bindings = __esm({
7588
7591
  "../../core/ts/src/bindings.ts"() {
7592
+ "use strict";
7589
7593
  BINDING_SIGILS = ["service", "flag", "item", "t"];
7590
7594
  BINDING_SIGIL_RE = new RegExp(
7591
7595
  `^\\$(?:${BINDING_SIGILS.filter((s2) => s2 !== "t").join("|")})\\b|^\\$t:`
@@ -13417,6 +13421,7 @@ var init_player_host_manifest = __esm({
13417
13421
  "speaker_diarization",
13418
13422
  "speech",
13419
13423
  "stream",
13424
+ "theme",
13420
13425
  "ui",
13421
13426
  "wix_api",
13422
13427
  "wix_cashier",
@@ -20103,7 +20108,7 @@ var init_catalog_cache = __esm({
20103
20108
  this.save({ ...before, latestAvailable, latestCompatible });
20104
20109
  fail(
20105
20110
  "catalog_incompatible",
20106
- "requested kit is absent/incompatible; keep installed kit and inspect himi docs status"
20111
+ "requested kit is absent/incompatible; keep installed kit and inspect himi docs status, or refresh --unpin to follow the current catalog"
20107
20112
  );
20108
20113
  }
20109
20114
  const manifestBytes = await this.download(
@@ -20698,6 +20703,14 @@ var init_native_requirements = __esm({
20698
20703
  ]
20699
20704
  }
20700
20705
  },
20706
+ theme: {
20707
+ // RFC 0070 §3 — an in-memory token overlay in the shell. No OS permission, no framework.
20708
+ privacy: {
20709
+ reviewNotes: [
20710
+ "theme: recolours the app's accent tokens in memory for the hosted site \u2014 an on-device UI operation only. Nothing collected or transmitted; no usage string / required-reason API."
20711
+ ]
20712
+ }
20713
+ },
20701
20714
  presigned_upload: {
20702
20715
  // No OS permission and no new native dependency: an HTTPS request on a
20703
20716
  // credential-free URLSession / HttpURLConnection. INTERNET is already implied by
@@ -21461,6 +21474,7 @@ var init_builtins = __esm({
21461
21474
  "speech",
21462
21475
  "system_intents",
21463
21476
  "tasks",
21477
+ "theme",
21464
21478
  "wix_cashier",
21465
21479
  "wix_platform"
21466
21480
  ];
@@ -27289,6 +27303,7 @@ var init_capabilities_generated = __esm({
27289
27303
  "speech": ["availability", "recognizeOnce", "speak", "stop", "streamNext", "streamStart", "streamStop", "transcribeFile"],
27290
27304
  "system_intents": ["donate", "refreshShortcuts"],
27291
27305
  "tasks": ["backend", "create", "getPermissionStatus", "list", "remove", "requestPermission", "setCompleted"],
27306
+ "theme": ["applyOverlay", "clearOverlay", "surfaces"],
27292
27307
  "ui": ["alert", "snackbar"],
27293
27308
  "wix_cashier": ["isAvailable", "proceedToPayment"]
27294
27309
  };
@@ -27332,6 +27347,7 @@ var init_capabilities_generated = __esm({
27332
27347
  "speech": ["@himalaya/speech"],
27333
27348
  "system_intents": ["@himalaya/system-intents"],
27334
27349
  "tasks": ["@himalaya/tasks"],
27350
+ "theme": ["@himalaya/theme"],
27335
27351
  "ui": ["@himalaya/ui"],
27336
27352
  "webview": ["@himalaya/webview"],
27337
27353
  "wix_cashier": ["@himalaya/wix-cashier"],
@@ -27377,15 +27393,15 @@ var init_shell_capabilities_generated = __esm({
27377
27393
  appDir: "apps/himi-owner-lite",
27378
27394
  shared: false,
27379
27395
  extensible: true,
27380
- built: ["app_info", "biometrics", "camera", "clipboard", "live_activity", "local_database", "open_url", "presigned_upload", "push", "secure_storage", "share", "speech", "ui"],
27381
- serves: ["app_info", "biometrics", "camera", "clipboard", "live_activity", "local_database", "open_url", "presigned_upload", "push", "secure_storage", "share", "speech", "ui"]
27396
+ built: ["app_info", "biometrics", "camera", "clipboard", "live_activity", "local_database", "open_url", "presigned_upload", "push", "secure_storage", "share", "speech", "ui", "wix_platform"],
27397
+ serves: ["app_info", "biometrics", "camera", "clipboard", "live_activity", "local_database", "open_url", "presigned_upload", "push", "secure_storage", "share", "speech", "ui", "wix_platform"]
27382
27398
  },
27383
27399
  "player": {
27384
27400
  appDir: "apps/himi-player",
27385
27401
  shared: true,
27386
27402
  extensible: false,
27387
27403
  built: ["animation", "audio_record_background", "biometrics", "calendar", "calls", "camera", "clipboard", "contacts", "haptic", "iap", "location", "media_playback", "motion", "on_device_ai", "photos", "push", "speech"],
27388
- serves: ["animation", "app_info", "audio_record", "audio_record_background", "biometrics", "browser_auth", "calendar", "calls", "camera", "clipboard", "contacts", "file_picker", "files", "haptic", "himi_apps", "iap", "keyboard", "local_database", "location", "media_playback", "motion", "on_device_ai", "open_url", "pdf", "photos", "presigned_upload", "push", "release_control", "secure_storage", "share", "speaker_diarization", "speech", "stream", "ui", "wix_api", "wix_cashier", "wix_platform"]
27404
+ serves: ["animation", "app_info", "audio_record", "audio_record_background", "biometrics", "browser_auth", "calendar", "calls", "camera", "clipboard", "contacts", "file_picker", "files", "haptic", "himi_apps", "iap", "keyboard", "local_database", "location", "media_playback", "motion", "on_device_ai", "open_url", "pdf", "photos", "presigned_upload", "push", "release_control", "secure_storage", "share", "speaker_diarization", "speech", "stream", "theme", "ui", "wix_api", "wix_cashier", "wix_platform"]
27389
27405
  }
27390
27406
  };
27391
27407
  }
@@ -42291,7 +42307,7 @@ var init_pdf = __esm({
42291
42307
  var defineProperty = Object.defineProperty;
42292
42308
  var stringSlice = uncurryThis("".slice);
42293
42309
  var replace = uncurryThis("".replace);
42294
- var join82 = uncurryThis([].join);
42310
+ var join83 = uncurryThis([].join);
42295
42311
  var CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function() {
42296
42312
  return defineProperty(function() {
42297
42313
  }, "length", { value: 8 }).length !== 8;
@@ -42318,7 +42334,7 @@ var init_pdf = __esm({
42318
42334
  }
42319
42335
  var state = enforceInternalState(value);
42320
42336
  if (!hasOwn(state, "source")) {
42321
- state.source = join82(TEMPLATE, typeof name == "string" ? name : "");
42337
+ state.source = join83(TEMPLATE, typeof name == "string" ? name : "");
42322
42338
  }
42323
42339
  return value;
42324
42340
  };
@@ -44841,7 +44857,7 @@ var init_pdf = __esm({
44841
44857
  var charAt = uncurryThis("".charAt);
44842
44858
  var Uint8Array2 = globalThis2.Uint8Array;
44843
44859
  var $Array = globalThis2.Array;
44844
- var join82 = uncurryThis([].join);
44860
+ var join83 = uncurryThis([].join);
44845
44861
  var INCORRECT_BEHAVIOR_OR_DOESNT_EXISTS = !Uint8Array2 || !Uint8Array2.prototype.toBase64 || !(function() {
44846
44862
  try {
44847
44863
  var target = new Uint8Array2();
@@ -44887,7 +44903,7 @@ var init_pdf = __esm({
44887
44903
  result[written++] = "=";
44888
44904
  }
44889
44905
  }
44890
- return join82(result, "");
44906
+ return join83(result, "");
44891
44907
  }
44892
44908
  });
44893
44909
  },
@@ -44899,7 +44915,7 @@ var init_pdf = __esm({
44899
44915
  var anUint8Array = __webpack_require__3(4154);
44900
44916
  var notDetached = __webpack_require__3(5169);
44901
44917
  var numberToString2 = uncurryThis(1.1.toString);
44902
- var join82 = uncurryThis([].join);
44918
+ var join83 = uncurryThis([].join);
44903
44919
  var $Array = Array;
44904
44920
  var Uint8Array2 = globalThis2.Uint8Array;
44905
44921
  var INCORRECT_BEHAVIOR_OR_DOESNT_EXISTS = !Uint8Array2 || !Uint8Array2.prototype.toHex || !(function() {
@@ -44919,7 +44935,7 @@ var init_pdf = __esm({
44919
44935
  var hex2 = numberToString2(this[i2], 16);
44920
44936
  result[i2] = hex2.length === 1 ? "0" + hex2 : hex2;
44921
44937
  }
44922
- return join82(result, "");
44938
+ return join83(result, "");
44923
44939
  }
44924
44940
  });
44925
44941
  },
@@ -147707,6 +147723,25 @@ var init_studio_reel = __esm({
147707
147723
  }
147708
147724
  });
147709
147725
 
147726
+ // src/home-screen-id.ts
147727
+ import { readFileSync as readFileSync64 } from "node:fs";
147728
+ import { join as join56 } from "node:path";
147729
+ function homeScreenIdOf(dir) {
147730
+ let src;
147731
+ try {
147732
+ src = readFileSync64(join56(dir, "dev", "index.ts"), "utf8");
147733
+ } catch {
147734
+ return null;
147735
+ }
147736
+ const m2 = /^[ \t]*homeScreenId[ \t]*:[ \t]*(?:"((?:[^"\\\n]|\\.)*)"|'((?:[^'\\\n]|\\.)*)')/m.exec(src);
147737
+ const id = m2 ? m2[1] ?? m2[2] : void 0;
147738
+ return id && /^[A-Za-z0-9_.\-/{}]+$/.test(id) ? id : null;
147739
+ }
147740
+ var init_home_screen_id = __esm({
147741
+ "src/home-screen-id.ts"() {
147742
+ }
147743
+ });
147744
+
147710
147745
  // src/milestones.ts
147711
147746
  var milestones_exports = {};
147712
147747
  __export(milestones_exports, {
@@ -147762,20 +147797,9 @@ __export(milestones_exports, {
147762
147797
  });
147763
147798
  import { createHash as createHash32, randomUUID as randomUUID7 } from "node:crypto";
147764
147799
  import { spawn as spawn5 } from "node:child_process";
147765
- import { closeSync as closeSync5, existsSync as existsSync56, lstatSync as lstatSync19, readFileSync as readFileSync64, statSync as statSync15 } from "node:fs";
147800
+ import { closeSync as closeSync5, existsSync as existsSync56, lstatSync as lstatSync19, readFileSync as readFileSync65, statSync as statSync15 } from "node:fs";
147766
147801
  import { createServer as createServer4 } from "node:net";
147767
- import { basename as basename15, dirname as dirname32, isAbsolute as isAbsolute6, join as join56, relative as relative11, resolve as resolve48, sep as sep15 } from "node:path";
147768
- function homeScreenIdOf(dir) {
147769
- let src;
147770
- try {
147771
- src = readFileSync64(join56(dir, "dev", "index.ts"), "utf8");
147772
- } catch {
147773
- return null;
147774
- }
147775
- const m2 = /^[ \t]*homeScreenId[ \t]*:[ \t]*(?:"((?:[^"\\\n]|\\.)*)"|'((?:[^'\\\n]|\\.)*)')/m.exec(src);
147776
- const id = m2 ? m2[1] ?? m2[2] : void 0;
147777
- return id && /^[A-Za-z0-9_.\-/{}]+$/.test(id) ? id : null;
147778
- }
147802
+ import { basename as basename15, dirname as dirname32, isAbsolute as isAbsolute6, join as join57, relative as relative11, resolve as resolve48, sep as sep15 } from "node:path";
147779
147803
  function homeShotPath(dir, home) {
147780
147804
  const root = resolve48(dir);
147781
147805
  const base = resolve48(root, ".himi", "shots");
@@ -147886,7 +147910,7 @@ function autoPictureGate(dir) {
147886
147910
  }
147887
147911
  async function homePictureAtValidate(dir, opts) {
147888
147912
  if (!opts.ok) return { skipped: "validate found errors, so the picture was left as it is" };
147889
- if (!existsSync56(join56(dir, "himalaya.content.json"))) return { skipped: "not a content package" };
147913
+ if (!existsSync56(join57(dir, "himalaya.content.json"))) return { skipped: "not a content package" };
147890
147914
  const env = opts.env ?? process.env;
147891
147915
  if (ciSet(env)) return { skipped: "the CI environment variable is set" };
147892
147916
  if (env.NODE_TEST_CONTEXT) return { skipped: "running under `node --test`" };
@@ -148110,16 +148134,16 @@ function rememberDraft(dir, releaseId, m2) {
148110
148134
  ...m2.tokensHash ? { tokensHash: m2.tokensHash } : {},
148111
148135
  ...m2.appConfigHash ? { appConfigHash: m2.appConfigHash } : {}
148112
148136
  };
148113
- writeFileAtomic(join56(dir, LAST_DRAFT_FILE), `${JSON.stringify({ v: 1, releaseId, manifest })}
148137
+ writeFileAtomic(join57(dir, LAST_DRAFT_FILE), `${JSON.stringify({ v: 1, releaseId, manifest })}
148114
148138
  `);
148115
148139
  } catch {
148116
148140
  }
148117
148141
  }
148118
148142
  function lastDraft(dir) {
148119
148143
  try {
148120
- const file2 = join56(dir, LAST_DRAFT_FILE);
148144
+ const file2 = join57(dir, LAST_DRAFT_FILE);
148121
148145
  if (!lstatSync19(file2).isFile()) return null;
148122
- const r2 = JSON.parse(readFileSync64(file2, "utf8"));
148146
+ const r2 = JSON.parse(readFileSync65(file2, "utf8"));
148123
148147
  const m2 = r2.manifest;
148124
148148
  if (r2.v !== 1 || typeof r2.releaseId !== "string" || !m2 || typeof m2.screens !== "object" || !m2.screens || typeof m2.bundles !== "object" || !m2.bundles) return null;
148125
148149
  return { releaseId: r2.releaseId, manifest: m2 };
@@ -148170,7 +148194,7 @@ function recordInitSource(dir, opts = {}) {
148170
148194
  template: opts.template && TEMPLATE_NAME.test(opts.template) ? opts.template : null,
148171
148195
  ...opts.source ? { source: opts.source } : {}
148172
148196
  };
148173
- writeFileAtomic(join56(dir, INIT_SOURCE_FILE), `${JSON.stringify(record2, null, 2)}
148197
+ writeFileAtomic(join57(dir, INIT_SOURCE_FILE), `${JSON.stringify(record2, null, 2)}
148174
148198
  `);
148175
148199
  return true;
148176
148200
  } catch {
@@ -148178,10 +148202,10 @@ function recordInitSource(dir, opts = {}) {
148178
148202
  }
148179
148203
  }
148180
148204
  function readInitSource(dir) {
148181
- const file2 = join56(dir, INIT_SOURCE_FILE);
148205
+ const file2 = join57(dir, INIT_SOURCE_FILE);
148182
148206
  try {
148183
148207
  if (!lstatSync19(file2).isFile()) return null;
148184
- const r2 = JSON.parse(readFileSync64(file2, "utf8"));
148208
+ const r2 = JSON.parse(readFileSync65(file2, "utf8"));
148185
148209
  if (r2.v !== 1 || typeof r2.fingerprint !== "string" || !/^[0-9a-f]{64}$/.test(r2.fingerprint) || typeof r2.newestMs !== "number") return null;
148186
148210
  return {
148187
148211
  v: 1,
@@ -148250,10 +148274,10 @@ function homeShotForPostcard(dir, opts = {}) {
148250
148274
  function contentHomePictures(dir, home) {
148251
148275
  const out2 = [];
148252
148276
  const shot = homeShotPath(dir, home);
148253
- const hist = realDirIn(dir, HISTORY_DIR) ? join56(dir, HISTORY_DIR) : null;
148277
+ const hist = realDirIn(dir, HISTORY_DIR) ? join57(dir, HISTORY_DIR) : null;
148254
148278
  for (const r2 of recordedShots(dir, home)) {
148255
148279
  if (r2.state.state !== "content") continue;
148256
- for (const file2 of [shot, hist && join56(hist, `${r2.sha256}.png`)]) {
148280
+ for (const file2 of [shot, hist && join57(hist, `${r2.sha256}.png`)]) {
148257
148281
  try {
148258
148282
  if (!file2 || !lstatSync19(file2).isFile() || sha256Of2(file2) !== r2.sha256) continue;
148259
148283
  } catch {
@@ -148266,10 +148290,10 @@ function contentHomePictures(dir, home) {
148266
148290
  return out2;
148267
148291
  }
148268
148292
  function readInitWatch(dir) {
148269
- const file2 = join56(dir, INIT_WATCH_FILE);
148293
+ const file2 = join57(dir, INIT_WATCH_FILE);
148270
148294
  try {
148271
148295
  if (!lstatSync19(file2).isFile()) return null;
148272
- const r2 = JSON.parse(readFileSync64(file2, "utf8"));
148296
+ const r2 = JSON.parse(readFileSync65(file2, "utf8"));
148273
148297
  if (r2.v !== 1 || typeof r2.pid !== "number" || !Number.isInteger(r2.pid) || r2.pid < 1) return null;
148274
148298
  if (typeof r2.url !== "string" || !/^http:\/\/127\.0\.0\.1:\d+\//.test(r2.url) || typeof r2.board !== "string" || typeof r2.log !== "string" || typeof r2.startedAt !== "string") return null;
148275
148299
  if (r2.root !== runRootId(dir)) return null;
@@ -148294,14 +148318,14 @@ function liveWatchRunning(dir, isAlive = pidAlive, now) {
148294
148318
  }
148295
148319
  function watchReminder(dir, opts = {}) {
148296
148320
  try {
148297
- if (!existsSync56(join56(dir, "himalaya.content.json"))) return void 0;
148321
+ if (!existsSync56(join57(dir, "himalaya.content.json"))) return void 0;
148298
148322
  const nowDate = opts.now ?? /* @__PURE__ */ new Date();
148299
148323
  const live3 = liveWatch(dir, opts.isAlive, nowDate);
148300
148324
  const now = nowDate.getTime();
148301
- const file2 = join56(dir, REMINDERS_FILE);
148325
+ const file2 = join57(dir, REMINDERS_FILE);
148302
148326
  let last = Number.NaN;
148303
148327
  try {
148304
- if (lstatSync19(file2).isFile()) last = Date.parse(JSON.parse(readFileSync64(file2, "utf8")).watch ?? "");
148328
+ if (lstatSync19(file2).isFile()) last = Date.parse(JSON.parse(readFileSync65(file2, "utf8")).watch ?? "");
148305
148329
  } catch {
148306
148330
  }
148307
148331
  if (Number.isFinite(last) && now - last >= 0 && now - last < WATCH_REMINDER_EVERY_MS) return void 0;
@@ -148313,7 +148337,7 @@ function watchReminder(dir, opts = {}) {
148313
148337
  }
148314
148338
  const content = opts.content ?? displayPath(dir);
148315
148339
  const remote = readInitSource(dir)?.source === "remote" ? "init did not start it because this template came off the serve plane \u2014 once you have read its code, " : "";
148316
- return `${remote}start the live preview and leave it running: \`himi run --watch --content ${shellQuote(content)} &\` (the consent preflight first, if a worker or config calls Wix at boot) \u2014 it repaints on every save; the build board is ${shellQuote(join56(content, ".himi", "studio", "index.html"))}, or /__himi/studio/ on the preview`;
148340
+ return `${remote}start the live preview and leave it running: \`himi run --watch --content ${shellQuote(content)} &\` (the consent preflight first, if a worker or config calls Wix at boot) \u2014 it repaints on every save; the build board is ${shellQuote(join57(content, ".himi", "studio", "index.html"))}, or /__himi/studio/ on the preview`;
148317
148341
  } catch {
148318
148342
  return void 0;
148319
148343
  }
@@ -148379,7 +148403,7 @@ async function startWatchAtInit(dir, opts) {
148379
148403
  child.unref();
148380
148404
  if (!child.pid) return { skipped: "the live preview did not start (no process) \u2014 start it yourself: `himi run --watch --content <dir> &`", ...note };
148381
148405
  const record2 = { v: 1, pid: child.pid, root: runRootId(dir), url, board, log: WATCH_LOG, startedAt: now.toISOString() };
148382
- if (realDirIn(dir, ".himi")) writeFileAtomic(join56(dir, INIT_WATCH_FILE), `${JSON.stringify(record2, null, 2)}
148406
+ if (realDirIn(dir, ".himi")) writeFileAtomic(join57(dir, INIT_WATCH_FILE), `${JSON.stringify(record2, null, 2)}
148383
148407
  `);
148384
148408
  return { started: true, pid: child.pid, url, board, log: WATCH_LOG, ...note };
148385
148409
  } catch (e2) {
@@ -148394,7 +148418,7 @@ function watchRunning(w2) {
148394
148418
  function doNowBlock(opts) {
148395
148419
  const content = displayPath(opts.dir, opts.cwd);
148396
148420
  const home = opts.home ?? "<homeScreenId>";
148397
- const board = join56(content, ".himi", "studio", "index.html");
148421
+ const board = join57(content, ".himi", "studio", "index.html");
148398
148422
  const running = watchRunning(opts.watch);
148399
148423
  const who = running?.by === "init" ? "init started it" : "already running";
148400
148424
  const watch2 = running ? `${running.url} (${who}; the board: ${running.board}) \u2014 leave it running, and do not start another` : `\`himi run --watch${contentArg(content)} &\` and leave it running (the board: ${shellQuote(board)}, or /__himi/studio/ on the preview)`;
@@ -148413,7 +148437,7 @@ function writeHandoverReel(dir) {
148413
148437
  try {
148414
148438
  if (!realDirIn(dir, ".himi")) return { skipped: ".himi is not a real directory inside the package (a symlink?), so no making-of was written" };
148415
148439
  const { html } = buildReel(dir);
148416
- const file2 = join56(dir, ".himi", "making-of.html");
148440
+ const file2 = join57(dir, ".himi", "making-of.html");
148417
148441
  writeFileAtomic(file2, html);
148418
148442
  return { file: file2, hint: `hand ${basename15(file2)} to the owner at the handover \u2014 one self-contained page of their app taking shape; send it beside the preview link, never instead of it` };
148419
148443
  } catch (e2) {
@@ -148421,11 +148445,11 @@ function writeHandoverReel(dir) {
148421
148445
  }
148422
148446
  }
148423
148447
  function afterHandoverPostcard(dir, opts = {}) {
148424
- const file2 = join56(dir, ".himi", "making-of.html");
148448
+ const file2 = join57(dir, ".himi", "making-of.html");
148425
148449
  let fresh = false;
148426
148450
  try {
148427
148451
  const st2 = lstatSync19(file2);
148428
- fresh = st2.isFile() && !st2.isSymbolicLink() && st2.mtimeMs >= statSync15(join56(dir, ".himi", "progress.jsonl")).mtimeMs;
148452
+ fresh = st2.isFile() && !st2.isSymbolicLink() && st2.mtimeMs >= statSync15(join57(dir, ".himi", "progress.jsonl")).mtimeMs;
148429
148453
  } catch {
148430
148454
  fresh = false;
148431
148455
  }
@@ -148444,6 +148468,7 @@ var init_milestones = __esm({
148444
148468
  init_screen_state();
148445
148469
  init_shell_quote();
148446
148470
  init_studio_reel();
148471
+ init_home_screen_id();
148447
148472
  contentArg = (content) => content ? ` --content ${shellQuote(content)}` : "";
148448
148473
  CONSENT_PREFLIGHT = "Consent preflight before a template preview";
148449
148474
  CONSENT_PREFLIGHT_STEP = `consent preflight (skill: "${CONSENT_PREFLIGHT}"): if any worker or config can make Wix or external requests at boot, authorize or mock them first; if none can, go straight on`;
@@ -148456,13 +148481,13 @@ var init_milestones = __esm({
148456
148481
  STILL_BUILDING_MESSAGE = "Still building: here's the home screen now.";
148457
148482
  yourFirstLookMessage = (dir) => `First look at your app: ${appName(dir)}'s home screen, with your changes.`;
148458
148483
  homeCaveat = (dir, image) => homeStateCaveat(shotStateFor(dir, image));
148459
- LAST_DRAFT_FILE = join56(".himi", "last-draft.json");
148460
- INIT_SOURCE_FILE = join56(".himi", "init-source.json");
148484
+ LAST_DRAFT_FILE = join57(".himi", "last-draft.json");
148485
+ INIT_SOURCE_FILE = join57(".himi", "init-source.json");
148461
148486
  STARTING_POINT_REF = "starting-point";
148462
148487
  TEMPLATE_NAME = /^[A-Za-z0-9._-]{1,64}$/;
148463
- sha256Of2 = (file2) => createHash32("sha256").update(readFileSync64(file2)).digest("hex");
148488
+ sha256Of2 = (file2) => createHash32("sha256").update(readFileSync65(file2)).digest("hex");
148464
148489
  WATCH_REMINDER_EVERY_MS = 10 * 60 * 1e3;
148465
- REMINDERS_FILE = join56(".himi", "reminders.json");
148490
+ REMINDERS_FILE = join57(".himi", "reminders.json");
148466
148491
  pidAlive = (pid) => {
148467
148492
  try {
148468
148493
  process.kill(pid, 0);
@@ -148471,7 +148496,7 @@ var init_milestones = __esm({
148471
148496
  return e2.code === "EPERM";
148472
148497
  }
148473
148498
  };
148474
- INIT_WATCH_FILE = join56(".himi", "watch.json");
148499
+ INIT_WATCH_FILE = join57(".himi", "watch.json");
148475
148500
  INIT_WATCH_STARTING_MS = 5 * 60 * 1e3;
148476
148501
  INIT_WATCH_IDLE_MINUTES = 30;
148477
148502
  WATCH_LOG = ".himi/watch.log";
@@ -148507,8 +148532,8 @@ __export(template_sweep_exports, {
148507
148532
  sweepCopy: () => sweepCopy,
148508
148533
  sweepPairs: () => sweepPairs
148509
148534
  });
148510
- import { readFileSync as readFileSync65, writeFileSync as writeFileSync24 } from "node:fs";
148511
- import { join as join57 } from "node:path";
148535
+ import { readFileSync as readFileSync66, writeFileSync as writeFileSync24 } from "node:fs";
148536
+ import { join as join58 } from "node:path";
148512
148537
  import ts7 from "typescript";
148513
148538
  function isCopy(node, file2) {
148514
148539
  const parent = node.parent;
@@ -148549,7 +148574,7 @@ function sweepCopy(dir, pairs, dryRun) {
148549
148574
  const next = /* @__PURE__ */ new Map();
148550
148575
  const replaced = pairs.map(([from, to2]) => ({ from, to: to2, files: {} }));
148551
148576
  for (const f2 of files) {
148552
- const text9 = readFileSync65(join57(dir, f2), "utf8");
148577
+ const text9 = readFileSync66(join58(dir, f2), "utf8");
148553
148578
  if (!pairs.some(([from]) => text9.includes(from) || text9.includes(JSON.stringify(from).slice(1, -1)))) continue;
148554
148579
  const kind = f2.endsWith(".json") ? ts7.ScriptKind.JSON : f2.endsWith("x") ? ts7.ScriptKind.TSX : ts7.ScriptKind.TS;
148555
148580
  const sf2 = ts7.createSourceFile(f2, text9, ts7.ScriptTarget.Latest, true, kind);
@@ -148578,16 +148603,16 @@ function sweepCopy(dir, pairs, dryRun) {
148578
148603
  if (errors.length) throw new TrimRefusal(`the sweep would break ${f2} \u2014 nothing written: ${errors[0]}`);
148579
148604
  next.set(f2, out2);
148580
148605
  }
148581
- const dev = next.get("dev/index.ts") ?? readFileSync65(join57(dir, "dev", "index.ts"), "utf8");
148582
- const config = next.get("config.ts") ?? readFileSync65(join57(dir, "config.ts"), "utf8");
148606
+ const dev = next.get("dev/index.ts") ?? readFileSync66(join58(dir, "dev", "index.ts"), "utf8");
148607
+ const config = next.get("config.ts") ?? readFileSync66(join58(dir, "config.ts"), "utf8");
148583
148608
  try {
148584
148609
  parseApp(dev, config);
148585
148610
  } catch (e2) {
148586
148611
  throw new TrimRefusal(`the sweep would leave dev/index.ts or config.ts unparseable \u2014 nothing written: ${e2.message}`);
148587
148612
  }
148588
- if (!dryRun) for (const [f2, t2] of next) writeFileSync24(join57(dir, f2), t2);
148613
+ if (!dryRun) for (const [f2, t2] of next) writeFileSync24(join58(dir, f2), t2);
148589
148614
  const g2 = new RegExp(PLACEHOLDER.source, `${PLACEHOLDER.flags.replace("g", "")}g`);
148590
- const placeholdersLeft = all.reduce((n2, f2) => n2 + [...(next.get(f2) ?? readFileSync65(join57(dir, f2), "utf8")).matchAll(g2)].length, 0);
148615
+ const placeholdersLeft = all.reduce((n2, f2) => n2 + [...(next.get(f2) ?? readFileSync66(join58(dir, f2), "utf8")).matchAll(g2)].length, 0);
148591
148616
  return {
148592
148617
  ok: true,
148593
148618
  dryRun,
@@ -148604,7 +148629,7 @@ function sweepPairs(set, mapFile) {
148604
148629
  pairs.push([s2.slice(0, at2), s2.slice(at2 + 2)]);
148605
148630
  }
148606
148631
  if (mapFile) {
148607
- const map = JSON.parse(readFileSync65(mapFile, "utf8"));
148632
+ const map = JSON.parse(readFileSync66(mapFile, "utf8"));
148608
148633
  for (const [k2, v2] of Object.entries(map)) {
148609
148634
  if (typeof v2 !== "string") throw new TrimRefusal(`--map ${mapFile}: "${k2}" must map to a string`);
148610
148635
  pairs.push([k2, v2]);
@@ -148849,18 +148874,18 @@ __export(template_recommend_exports, {
148849
148874
  recommendTemplates: () => recommendTemplates,
148850
148875
  verticalsFromBook: () => verticalsFromBook
148851
148876
  });
148852
- import { existsSync as existsSync57, readFileSync as readFileSync66 } from "node:fs";
148853
- import { join as join58 } from "node:path";
148877
+ import { existsSync as existsSync57, readFileSync as readFileSync67 } from "node:fs";
148878
+ import { join as join59 } from "node:path";
148854
148879
  function verticalsFromBook(path2) {
148855
- const dir = existsSync57(join58(path2, "book.json")) || existsSync57(join58(path2, "provisioning.overlay.json")) ? path2 : join58(path2, ".himi", "business-book");
148856
- const overlay = join58(dir, "provisioning.overlay.json");
148880
+ const dir = existsSync57(join59(path2, "book.json")) || existsSync57(join59(path2, "provisioning.overlay.json")) ? path2 : join59(path2, ".himi", "business-book");
148881
+ const overlay = join59(dir, "provisioning.overlay.json");
148857
148882
  if (existsSync57(overlay)) {
148858
- const v2 = JSON.parse(readFileSync66(overlay, "utf8")).installedVerticals;
148883
+ const v2 = JSON.parse(readFileSync67(overlay, "utf8")).installedVerticals;
148859
148884
  if (Array.isArray(v2) && v2.length) return v2.filter((x2) => typeof x2 === "string");
148860
148885
  }
148861
- const book = join58(dir, "book.json");
148886
+ const book = join59(dir, "book.json");
148862
148887
  if (existsSync57(book)) {
148863
- const probes = JSON.parse(readFileSync66(book, "utf8")).probes;
148888
+ const probes = JSON.parse(readFileSync67(book, "utf8")).probes;
148864
148889
  if (Array.isArray(probes)) return installedFromProbes(probes);
148865
148890
  }
148866
148891
  throw new Error(`no book.json / provisioning.overlay.json under ${path2} \u2014 run \`himi site analyze\` first, or pass --verticals`);
@@ -148920,6 +148945,78 @@ var init_template_recommend = __esm({
148920
148945
  }
148921
148946
  });
148922
148947
 
148948
+ // ../../core/ts/src/nav-slots.ts
148949
+ function navPathError(raw) {
148950
+ if (raw === void 0 || raw === null || raw === "") return null;
148951
+ if (typeof raw !== "string") return `${JSON.stringify(raw)} is not a $service: binding ($service:<service>.<path>)`;
148952
+ const t2 = raw.trim();
148953
+ if (t2.startsWith("$item.")) return `"${raw}": $item. means nothing outside a list row \u2014 nav chrome binds $service:<service>.<path>`;
148954
+ if (!t2.startsWith("$service:")) return `"${raw}" is not a $service: binding ($service:<service>.<path>)`;
148955
+ const path2 = t2.slice("$service:".length);
148956
+ if (path2.includes("/")) return `"${raw}": the separator is a dot, not a slash ($service:<service>.<path>)`;
148957
+ if (!/^[^.\s]+(\.[^.\s]+)+$/.test(path2)) return `"${raw}" must be $service:<service>.<dot.path>`;
148958
+ return null;
148959
+ }
148960
+ function navConfigPathErrors(config) {
148961
+ const errors = [];
148962
+ const list = (v2) => Array.isArray(v2) ? v2.flatMap((x2, i2) => x2 !== null && typeof x2 === "object" ? [[x2, i2]] : []) : [];
148963
+ const obj3 = (v2) => v2 !== null && typeof v2 === "object" && !Array.isArray(v2) ? v2 : void 0;
148964
+ const check = (where, raw) => {
148965
+ const e2 = navPathError(raw);
148966
+ if (e2) errors.push(`${where}: ${e2}`);
148967
+ };
148968
+ const item = (where, it2) => {
148969
+ check(`${where}.hiddenPath`, it2.hiddenPath);
148970
+ check(`${where}.labelPath`, it2.labelPath);
148971
+ check(`${where}.iconPath`, it2.iconPath);
148972
+ check(`${where}.badge.valuePath`, obj3(it2.badge)?.valuePath);
148973
+ if (it2.hiddenUntilResolved && !it2.hiddenPath) {
148974
+ errors.push(`${where}: hiddenUntilResolved without hiddenPath can never resolve, so the item would never show`);
148975
+ }
148976
+ };
148977
+ const header = (where, h2) => {
148978
+ if (!h2) return;
148979
+ check(`${where}.titlePath`, h2.titlePath);
148980
+ check(`${where}.subtitlePath`, h2.subtitlePath);
148981
+ check(`${where}.imageUrlPath`, h2.imageUrlPath);
148982
+ };
148983
+ for (const [it2, i2] of list(obj3(config.tabBar)?.items)) item(`tabBar.items[${i2}] "${it2.id}"`, it2);
148984
+ for (const [it2, i2] of list(obj3(config.sidebar)?.items)) item(`sidebar.items[${i2}] "${it2.id}"`, it2);
148985
+ for (const [it2, i2] of list(obj3(config.drawer)?.items)) item(`drawer.items[${i2}] "${it2.id}"`, it2);
148986
+ for (const [it2, i2] of list(obj3(config.topBarDefault)?.actions)) item(`topBarDefault.actions[${i2}] "${it2.id}"`, it2);
148987
+ header("drawer.header", obj3(obj3(config.drawer)?.header));
148988
+ const sidebarHeader = obj3(obj3(config.sidebar)?.header);
148989
+ header("sidebar.header", sidebarHeader);
148990
+ for (const key2 of ["titlePath", "subtitlePath", "imageUrlPath"]) {
148991
+ if (sidebarHeader?.[key2]) {
148992
+ errors.push(`sidebar.header.${key2}: sidebar header bindings are not rendered yet (#4116) \u2014 bind drawer.header, which the sidebar shows`);
148993
+ }
148994
+ }
148995
+ const firstOf = (v2, skip = false) => list(v2).find(([it2]) => !skip || it2.role !== "section" && it2.role !== "note");
148996
+ const tabs = firstOf(obj3(config.tabBar)?.items);
148997
+ const kind = typeof config.navKind === "string" ? config.navKind : "";
148998
+ const rail = kind === "drawer" ? void 0 : firstOf(obj3(config.sidebar)?.items);
148999
+ const homes = [];
149000
+ if (tabs && !(kind === "sidebar" && rail)) homes.push(["tabBar.items", tabs]);
149001
+ if (rail && (kind === "sidebar" || kind === "responsive" || !tabs)) homes.push(["sidebar.items", rail]);
149002
+ if (!tabs && !rail) {
149003
+ const home = typeof config.homeScreenId === "string" && config.homeScreenId.length > 0 ? config.homeScreenId : void 0;
149004
+ const rows = list(obj3(config.drawer)?.items);
149005
+ const row = home !== void 0 ? rows.find(([it2]) => it2.screenId === home) : firstOf(obj3(config.drawer)?.items, true);
149006
+ homes.push(["drawer.items", row]);
149007
+ }
149008
+ for (const [where, first] of homes) {
149009
+ if (first && first[0].hiddenUntilResolved) {
149010
+ errors.push(`${where}[${first[1]}] "${first[0].id}": the home destination cannot be hiddenUntilResolved \u2014 the boot route, deep links and push taps root on it; gate a later item instead`);
149011
+ }
149012
+ }
149013
+ return errors;
149014
+ }
149015
+ var init_nav_slots = __esm({
149016
+ "../../core/ts/src/nav-slots.ts"() {
149017
+ }
149018
+ });
149019
+
148923
149020
  // src/nav-lint.ts
148924
149021
  var nav_lint_exports = {};
148925
149022
  __export(nav_lint_exports, {
@@ -149000,6 +149097,10 @@ async function navIssues(dir, strict) {
149000
149097
  `navigation.navKind: unknown value ${JSON.stringify(nav.navKind)} \u2014 the client coalesces an unrecognized kind to "bottomTabs" (invariant 6) rather than failing, so this silently selects chrome you did not ask for. Valid kinds: ${[...NAV_KINDS].sort().join(", ")}.`
149001
149098
  );
149002
149099
  }
149100
+ const servedHome = homeScreenIdOf(dir) ?? void 0;
149101
+ for (const message of navConfigPathErrors({ ...nav, homeScreenId: servedHome })) {
149102
+ error("nav-path-malformed", `navigation.${message}`);
149103
+ }
149003
149104
  const navKind = nav.navKind;
149004
149105
  const effectiveBottomTabs = navKind === void 0 || navKind === "bottomTabs" || typeof navKind !== "string" || !NAV_KINDS.has(navKind);
149005
149106
  const declaresOtherChrome = itemCount(nav.drawer) > 0 || itemCount(nav.sidebar) > 0;
@@ -149112,6 +149213,8 @@ var init_nav_lint = __esm({
149112
149213
  "src/nav-lint.ts"() {
149113
149214
  init_app_config_loader();
149114
149215
  init_provisioning_facts();
149216
+ init_nav_slots();
149217
+ init_home_screen_id();
149115
149218
  init_wix_push_links();
149116
149219
  NAVIGATION_KEYS = /* @__PURE__ */ new Set([
149117
149220
  "tabBar",
@@ -149167,8 +149270,8 @@ __export(eject_exports, {
149167
149270
  EJECTABLE: () => EJECTABLE,
149168
149271
  ejectModule: () => ejectModule
149169
149272
  });
149170
- import { existsSync as existsSync58, mkdirSync as mkdirSync28, readFileSync as readFileSync67, writeFileSync as writeFileSync25 } from "node:fs";
149171
- import { dirname as dirname33, join as join59, relative as relative12, resolve as resolve49, sep as sep16 } from "node:path";
149273
+ import { existsSync as existsSync58, mkdirSync as mkdirSync28, readFileSync as readFileSync68, writeFileSync as writeFileSync25 } from "node:fs";
149274
+ import { dirname as dirname33, join as join60, relative as relative12, resolve as resolve49, sep as sep16 } from "node:path";
149172
149275
  function locate(repoRootOrCwd, mod) {
149173
149276
  const inRepo = resolve49(repoRootOrCwd, `stdlib/flows/${mod}/src/index.ts`);
149174
149277
  if (existsSync58(inRepo)) return { path: inRepo, form: "source" };
@@ -149197,7 +149300,7 @@ function ejectModule(opts) {
149197
149300
  };
149198
149301
  }
149199
149302
  const ext = found.form === "source" ? "ts" : "mjs";
149200
- const target = join59(contentDir2, "tier5-src", "_ejected", `${mod}.${ext}`);
149303
+ const target = join60(contentDir2, "tier5-src", "_ejected", `${mod}.${ext}`);
149201
149304
  mkdirSync28(dirname33(target), { recursive: true });
149202
149305
  const banner = `// EJECTED from @wix/himalaya/${mod}. This app owns this file now.
149203
149306
  //
@@ -149211,7 +149314,7 @@ function ejectModule(opts) {
149211
149314
  // gate still applies. Ejecting buys layout and flow, never the floor.
149212
149315
 
149213
149316
  `;
149214
- const normalized = readFileSync67(found.path, "utf8").replace(
149317
+ const normalized = readFileSync68(found.path, "utf8").replace(
149215
149318
  /(["'])@himalaya\/([a-z0-9-]+(?:\/[a-z0-9-]+)?)\1/g,
149216
149319
  (_m, q2, sub) => `${q2}@wix/himalaya/${sub}${q2}`
149217
149320
  );
@@ -149219,7 +149322,7 @@ function ejectModule(opts) {
149219
149322
  const rewired = [];
149220
149323
  for (const f2 of files) {
149221
149324
  if (!existsSync58(f2)) continue;
149222
- const before = readFileSync67(f2, "utf8");
149325
+ const before = readFileSync68(f2, "utf8");
149223
149326
  let after = before;
149224
149327
  let rel = relative12(dirname33(f2), target).split(sep16).join("/").replace(/\.tsx?$/, ".js");
149225
149328
  if (!rel.startsWith(".")) rel = `./${rel}`;
@@ -149339,8 +149442,8 @@ var init_app_map = __esm({
149339
149442
  });
149340
149443
 
149341
149444
  // src/wix-writes.ts
149342
- import { existsSync as existsSync59, readFileSync as readFileSync68 } from "node:fs";
149343
- import { join as join60 } from "node:path";
149445
+ import { existsSync as existsSync59, readFileSync as readFileSync69 } from "node:fs";
149446
+ import { join as join61 } from "node:path";
149344
149447
  function isProvenRead(method, path2) {
149345
149448
  if (/[#\x00-\x1F\x7F]/.test(path2)) return false;
149346
149449
  const verb = method.toUpperCase();
@@ -149458,11 +149561,11 @@ function parseDataAccess(text9, from) {
149458
149561
  }
149459
149562
  function readDataAccess(dir) {
149460
149563
  for (const name of ["SPEC.md", "MOBILE-UX.md"]) {
149461
- const p2 = join60(dir, name);
149564
+ const p2 = join61(dir, name);
149462
149565
  if (!existsSync59(p2)) continue;
149463
149566
  let text9;
149464
149567
  try {
149465
- text9 = readFileSync68(p2, "utf8");
149568
+ text9 = readFileSync69(p2, "utf8");
149466
149569
  } catch {
149467
149570
  continue;
149468
149571
  }
@@ -149576,14 +149679,14 @@ __export(test_exports, {
149576
149679
  scopeDescriptors: () => scopeDescriptors,
149577
149680
  writeRecordedMocks: () => writeRecordedMocks
149578
149681
  });
149579
- import { existsSync as existsSync60, mkdirSync as mkdirSync29, readFileSync as readFileSync69, writeFileSync as writeFileSync26 } from "node:fs";
149580
- import { join as join61, resolve as resolve50 } from "node:path";
149682
+ import { existsSync as existsSync60, mkdirSync as mkdirSync29, readFileSync as readFileSync70, writeFileSync as writeFileSync26 } from "node:fs";
149683
+ import { join as join62, resolve as resolve50 } from "node:path";
149581
149684
  function readTestConfig(dir) {
149582
149685
  const p2 = resolve50(dir, TEST_CONFIG_FILE);
149583
149686
  if (!existsSync60(p2)) return {};
149584
149687
  let parsed;
149585
149688
  try {
149586
- parsed = JSON.parse(readFileSync69(p2, "utf8"));
149689
+ parsed = JSON.parse(readFileSync70(p2, "utf8"));
149587
149690
  } catch (e2) {
149588
149691
  throw new Error(`${TEST_CONFIG_FILE} is not valid JSON \u2014 ${e2.message}`);
149589
149692
  }
@@ -149630,7 +149733,7 @@ function readTestConfig(dir) {
149630
149733
  function readNetRules(path2) {
149631
149734
  let parsed;
149632
149735
  try {
149633
- parsed = JSON.parse(readFileSync69(path2, "utf8"));
149736
+ parsed = JSON.parse(readFileSync70(path2, "utf8"));
149634
149737
  } catch (e2) {
149635
149738
  throw new Error(`--net ${path2} could not be read as JSON \u2014 ${e2.message}`);
149636
149739
  }
@@ -149667,7 +149770,7 @@ function readCannedResponses() {
149667
149770
  ];
149668
149771
  for (const url of candidates) {
149669
149772
  try {
149670
- const parsed = JSON.parse(readFileSync69(url, "utf8"));
149773
+ const parsed = JSON.parse(readFileSync70(url, "utf8"));
149671
149774
  const byKey = {};
149672
149775
  for (const [k2, v2] of Object.entries(parsed)) {
149673
149776
  if (!k2.startsWith("//")) byKey[k2] = v2;
@@ -149757,8 +149860,8 @@ function writeRecordedMocks(opts) {
149757
149860
  mkdir: (p2) => mkdirSync29(p2, { recursive: true }),
149758
149861
  write: (p2, s2) => writeFileSync26(p2, s2)
149759
149862
  };
149760
- fs2.mkdir(join61(opts.dir, "dev"));
149761
- fs2.write(join61(opts.dir, "dev", "net-mocks.json"), JSON.stringify(opts.mocks, null, 2) + "\n");
149863
+ fs2.mkdir(join62(opts.dir, "dev"));
149864
+ fs2.write(join62(opts.dir, "dev", "net-mocks.json"), JSON.stringify(opts.mocks, null, 2) + "\n");
149762
149865
  return { ok: true, rules, to: "dev/net-mocks.json" };
149763
149866
  }
149764
149867
  function scopeDescriptors(descriptors, requestedIds, invalidScreens) {
@@ -150304,14 +150407,14 @@ var mobile_ux_lint_exports = {};
150304
150407
  __export(mobile_ux_lint_exports, {
150305
150408
  mobileUxIssues: () => mobileUxIssues
150306
150409
  });
150307
- import { existsSync as existsSync61, readFileSync as readFileSync70 } from "node:fs";
150308
- import { join as join62 } from "node:path";
150410
+ import { existsSync as existsSync61, readFileSync as readFileSync71 } from "node:fs";
150411
+ import { join as join63 } from "node:path";
150309
150412
  function mobileUxIssues(dir, strict) {
150310
- const file2 = join62(dir, "MOBILE-UX.md");
150413
+ const file2 = join63(dir, "MOBILE-UX.md");
150311
150414
  if (!existsSync61(file2)) return [];
150312
150415
  let text9;
150313
150416
  try {
150314
- text9 = readFileSync70(file2, "utf8");
150417
+ text9 = readFileSync71(file2, "utf8");
150315
150418
  } catch {
150316
150419
  return [];
150317
150420
  }
@@ -151992,8 +152095,8 @@ __export(functions_exports, {
151992
152095
  resolveFunctionsTarget: () => resolveFunctionsTarget,
151993
152096
  runRemoteFunctionOperation: () => runRemoteFunctionOperation
151994
152097
  });
151995
- import { readFileSync as readFileSync71, existsSync as existsSync62 } from "node:fs";
151996
- import { join as join63, resolve as resolve51 } from "node:path";
152098
+ import { readFileSync as readFileSync72, existsSync as existsSync62 } from "node:fs";
152099
+ import { join as join64, resolve as resolve51 } from "node:path";
151997
152100
  function resolveFunctionsTarget(input) {
151998
152101
  const explicitUrl = input.functionsUrl?.trim();
151999
152102
  if (explicitUrl) return { mode: "remote", baseUrl: explicitUrl };
@@ -152012,9 +152115,9 @@ async function loadFunctionsApp(dir) {
152012
152115
  }
152013
152116
  const sources = {};
152014
152117
  for (const definition of config.functions.functions) {
152015
- const source = [".ts", ".js", ".mts", ".mjs"].map((extension) => join63(loaded.dir, "functions", `${definition.name}${extension}`)).find(existsSync62);
152118
+ const source = [".ts", ".js", ".mts", ".mjs"].map((extension) => join64(loaded.dir, "functions", `${definition.name}${extension}`)).find(existsSync62);
152016
152119
  if (!source) throw new Error(`missing source for function ${definition.name}; expected functions/${definition.name}.ts`);
152017
- sources[definition.name] = readFileSync71(source, "utf8");
152120
+ sources[definition.name] = readFileSync72(source, "utf8");
152018
152121
  }
152019
152122
  const data = config.cms || config.data ? mergeDataResources(config) : void 0;
152020
152123
  const dataErrors = validateDataResources(data, loaded.name).filter((issue2) => issue2.severity === "error");
@@ -152202,9 +152305,9 @@ var init_cli_bridge = __esm({
152202
152305
  });
152203
152306
 
152204
152307
  // src/mcp/file-tools.ts
152205
- import { closeSync as closeSync6, constants as constants3, lstatSync as lstatSync20, mkdirSync as mkdirSync30, openSync as openSync5, readdirSync as readdirSync30, readFileSync as readFileSync72, realpathSync as realpathSync10, renameSync as renameSync11, rmSync as rmSync15, statSync as statSync16, writeSync, existsSync as existsSync63 } from "node:fs";
152308
+ import { closeSync as closeSync6, constants as constants3, lstatSync as lstatSync20, mkdirSync as mkdirSync30, openSync as openSync5, readdirSync as readdirSync30, readFileSync as readFileSync73, realpathSync as realpathSync10, renameSync as renameSync11, rmSync as rmSync15, statSync as statSync16, writeSync, existsSync as existsSync63 } from "node:fs";
152206
152309
  import { randomBytes as randomBytes4 } from "node:crypto";
152207
- import { dirname as dirname34, isAbsolute as isAbsolute7, join as join64, relative as relative13, resolve as resolve52, sep as sep17 } from "node:path";
152310
+ import { dirname as dirname34, isAbsolute as isAbsolute7, join as join65, relative as relative13, resolve as resolve52, sep as sep17 } from "node:path";
152208
152311
  import * as z2 from "zod";
152209
152312
  function within(root, p2) {
152210
152313
  return p2 === root || p2.startsWith(root.endsWith(sep17) ? root : root + sep17);
@@ -152218,12 +152321,12 @@ function realish(p2) {
152218
152321
  tail.unshift(cur.slice(up.length + (up.endsWith(sep17) ? 0 : 1)));
152219
152322
  cur = up;
152220
152323
  }
152221
- return join64(realpathSync10(cur), ...tail);
152324
+ return join65(realpathSync10(cur), ...tail);
152222
152325
  }
152223
152326
  function symlinkComponent(base, abs) {
152224
152327
  let cur = base;
152225
152328
  for (const part of relative13(base, abs).split(sep17).filter(Boolean)) {
152226
- cur = join64(cur, part);
152329
+ cur = join65(cur, part);
152227
152330
  try {
152228
152331
  if (lstatSync20(cur).isSymbolicLink()) return relative13(base, cur);
152229
152332
  } catch {
@@ -152250,7 +152353,7 @@ async function confinedAppDir(args, deps) {
152250
152353
  if (link) return refuse5("outside_workspace", `"${link}" is a symlink \u2014 the app folder must be a real folder in the workspace`);
152251
152354
  const rel = relative13(root, dir);
152252
152355
  if (rel && (isDeniedSourcePath(`${rel}/x`) || isDeniedSourcePath(`${rel.toLowerCase()}/x`))) return refuse5("denied", `"${rel}" is a folder this tool does not touch`);
152253
- if (!existsSync63(join64(dir, CONTENT_MARKER))) {
152356
+ if (!existsSync63(join65(dir, CONTENT_MARKER))) {
152254
152357
  return refuse5("not_an_app", `"${rel || "."}" is not an app folder (no ${CONTENT_MARKER}) \u2014 see himi_list_apps, or create one with himi_init`);
152255
152358
  }
152256
152359
  return dir;
@@ -152264,7 +152367,7 @@ function onDiskSpelling(abs) {
152264
152367
  tail.unshift(cur.slice(up.length + (up.endsWith(sep17) ? 0 : 1)));
152265
152368
  cur = up;
152266
152369
  }
152267
- return join64(realpathSync10.native(cur), ...tail);
152370
+ return join65(realpathSync10.native(cur), ...tail);
152268
152371
  }
152269
152372
  function denied(appDir3, abs) {
152270
152373
  const rel = relative13(appDir3, abs);
@@ -152293,7 +152396,7 @@ function writeNoFollow2(appDir3, abs, content) {
152293
152396
  mkdirSync30(dirname34(abs), { recursive: true });
152294
152397
  const before = symlinkComponent(appDir3, abs);
152295
152398
  if (before) throw new Error(`"${before}" became a symlink`);
152296
- const tmp = join64(dirname34(abs), `.himi-write-${process.pid}-${randomBytes4(6).toString("hex")}.tmp`);
152399
+ const tmp = join65(dirname34(abs), `.himi-write-${process.pid}-${randomBytes4(6).toString("hex")}.tmp`);
152297
152400
  const fd = openSync5(tmp, constants3.O_WRONLY | constants3.O_CREAT | constants3.O_EXCL | (constants3.O_NOFOLLOW ?? 0), 420);
152298
152401
  try {
152299
152402
  writeSync(fd, content);
@@ -152313,7 +152416,7 @@ function listFiles(appDir3) {
152313
152416
  const parentRel = relative13(appDir3, d2);
152314
152417
  for (const e2 of readdirSync30(d2, { withFileTypes: true }).sort((a2, b2) => a2.name.localeCompare(b2.name))) {
152315
152418
  if (e2.isSymbolicLink()) continue;
152316
- const p2 = join64(d2, e2.name);
152419
+ const p2 = join65(d2, e2.name);
152317
152420
  if (e2.isDirectory()) {
152318
152421
  if (isDeniedSourceDir(e2.name, parentRel) || isDeniedSourceDir(e2.name.toLowerCase(), parentRel)) continue;
152319
152422
  if (!walk2(p2)) return false;
@@ -152341,9 +152444,9 @@ function fileTools() {
152341
152444
  const root = resolve52(await d2.defaultDir());
152342
152445
  if (!existsSync63(root)) return ok({ ok: true, workspace: root, apps: [] });
152343
152446
  const apps = [];
152344
- if (existsSync63(join64(root, CONTENT_MARKER))) apps.push(".");
152447
+ if (existsSync63(join65(root, CONTENT_MARKER))) apps.push(".");
152345
152448
  for (const e2 of readdirSync30(root, { withFileTypes: true })) {
152346
- if (e2.isDirectory() && !e2.name.startsWith(".") && existsSync63(join64(root, e2.name, CONTENT_MARKER))) apps.push(e2.name);
152449
+ if (e2.isDirectory() && !e2.name.startsWith(".") && existsSync63(join65(root, e2.name, CONTENT_MARKER))) apps.push(e2.name);
152347
152450
  }
152348
152451
  return ok({ ok: true, workspace: root, apps: apps.sort() });
152349
152452
  }
@@ -152375,7 +152478,7 @@ function fileTools() {
152375
152478
  if (!existsSync63(p2) || !lstatSync20(p2).isFile()) return refuse5("not_found", `no file "${String(a2.path)}"`);
152376
152479
  const size = statSync16(p2).size;
152377
152480
  if (size > MAX_FILE_BYTES) return refuse5("too_large", `"${String(a2.path)}" is ${size} bytes \u2014 over the ${MAX_FILE_BYTES}-byte read limit`);
152378
- return ok({ ok: true, path: a2.path, bytes: size, content: readFileSync72(p2, "utf8") });
152481
+ return ok({ ok: true, path: a2.path, bytes: size, content: readFileSync73(p2, "utf8") });
152379
152482
  }
152380
152483
  },
152381
152484
  {
@@ -152987,7 +153090,7 @@ __export(server_exports, {
152987
153090
  protectStdout: () => protectStdout,
152988
153091
  startMcpServer: () => startMcpServer
152989
153092
  });
152990
- import { mkdirSync as mkdirSync31, readFileSync as readFileSync73 } from "node:fs";
153093
+ import { mkdirSync as mkdirSync31, readFileSync as readFileSync74 } from "node:fs";
152991
153094
  import { fileURLToPath as fileURLToPath22 } from "node:url";
152992
153095
  import { McpServer } from "@modelcontextprotocol/server";
152993
153096
  import { serveStdio, StdioServerTransport } from "@modelcontextprotocol/server/stdio";
@@ -153047,7 +153150,7 @@ async function startMcpServer(opts) {
153047
153150
  status: (dir) => previewStatus(dir, previewDeps),
153048
153151
  stop: (dir) => stopPreview(dir, previewDeps)
153049
153152
  },
153050
- readFile: (p2) => readFileSync73(p2),
153153
+ readFile: (p2) => readFileSync74(p2),
153051
153154
  login: createLoginSession({ ...defaultLoginDeps, selfCommand: previewDeps.selfCommand, ...opts.login }),
153052
153155
  ...opts.workspace ? { workspaceBoundary: opts.workspace } : {}
153053
153156
  };
@@ -153091,9 +153194,9 @@ __export(native_decode_exports, {
153091
153194
  runNativeDecode: () => runNativeDecode
153092
153195
  });
153093
153196
  import { execFileSync as execFileSync5, spawnSync as spawnSync2 } from "node:child_process";
153094
- import { existsSync as existsSync64, mkdtempSync as mkdtempSync2, readFileSync as readFileSync74, rmSync as rmSync16, writeFileSync as writeFileSync27 } from "node:fs";
153197
+ import { existsSync as existsSync64, mkdtempSync as mkdtempSync2, readFileSync as readFileSync75, rmSync as rmSync16, writeFileSync as writeFileSync27 } from "node:fs";
153095
153198
  import { tmpdir as tmpdir3 } from "node:os";
153096
- import { join as join65 } from "node:path";
153199
+ import { join as join66 } from "node:path";
153097
153200
  import { fileURLToPath as fileURLToPath23 } from "node:url";
153098
153201
  function nativeDecodePackageDir() {
153099
153202
  return fileURLToPath23(new URL("../../../core/runtime/ios/HimalayaCore/", import.meta.url));
@@ -153103,8 +153206,8 @@ function nativeDecodeAndroidHarnessDir() {
153103
153206
  }
153104
153207
  function nativeOracleShipped() {
153105
153208
  return {
153106
- ios: existsSync64(join65(nativeDecodePackageDir(), "Package.swift")),
153107
- android: existsSync64(join65(nativeDecodeAndroidHarnessDir(), "gradlew"))
153209
+ ios: existsSync64(join66(nativeDecodePackageDir(), "Package.swift")),
153210
+ android: existsSync64(join66(nativeDecodeAndroidHarnessDir(), "gradlew"))
153108
153211
  };
153109
153212
  }
153110
153213
  function detectNativeDecode(options = {}) {
@@ -153115,7 +153218,7 @@ function detectNativeDecode(options = {}) {
153115
153218
  return { platform: "ios", available: false, reason: `the iOS decoder oracle requires macOS (darwin); this host is ${hostPlatform}` };
153116
153219
  }
153117
153220
  if (!swiftAvailable) return { platform: "ios", available: false, reason: "swift is not on PATH" };
153118
- const packageAvailable = options.packageAvailable ?? existsSync64(join65(packageDir, "Package.swift"));
153221
+ const packageAvailable = options.packageAvailable ?? existsSync64(join66(packageDir, "Package.swift"));
153119
153222
  if (!packageAvailable) {
153120
153223
  return {
153121
153224
  platform: "ios",
@@ -153127,7 +153230,7 @@ function detectNativeDecode(options = {}) {
153127
153230
  }
153128
153231
  function localPropertiesSdk(harnessDir) {
153129
153232
  try {
153130
- const match = readFileSync74(join65(harnessDir, "local.properties"), "utf8").match(/^sdk\.dir\s*=\s*(.+)$/m);
153233
+ const match = readFileSync75(join66(harnessDir, "local.properties"), "utf8").match(/^sdk\.dir\s*=\s*(.+)$/m);
153131
153234
  return match?.[1]?.trim().replace(/\\([ :\\])/g, "$1") ?? null;
153132
153235
  } catch {
153133
153236
  return null;
@@ -153135,7 +153238,7 @@ function localPropertiesSdk(harnessDir) {
153135
153238
  }
153136
153239
  function detectAndroidNativeDecode(options = {}) {
153137
153240
  const harnessDir = options.harnessDir ?? nativeDecodeAndroidHarnessDir();
153138
- const gradlew = join65(harnessDir, "gradlew");
153241
+ const gradlew = join66(harnessDir, "gradlew");
153139
153242
  const gradlewAvailable = options.gradlewAvailable ?? existsSync64(gradlew);
153140
153243
  if (!gradlewAvailable) {
153141
153244
  return {
@@ -153218,14 +153321,14 @@ function parseNativeDecodeOutput(stdout, expectedScreenIds, platform = "ios") {
153218
153321
  return verdicts;
153219
153322
  }
153220
153323
  function runNativeDecode(options) {
153221
- const descriptorDir = mkdtempSync2(join65(tmpdir3(), "himi-native-decode-"));
153324
+ const descriptorDir = mkdtempSync2(join66(tmpdir3(), "himi-native-decode-"));
153222
153325
  const startedAt = Date.now();
153223
153326
  try {
153224
153327
  for (const descriptor of options.descriptors) {
153225
153328
  if (typeof descriptor.descriptorJson !== "string") {
153226
153329
  throw new Error(`native decode cannot judge ${descriptor.screenId}: the release builder did not return its exact baked JSON bytes`);
153227
153330
  }
153228
- writeFileSync27(join65(descriptorDir, `${encodeURIComponent(descriptor.screenId)}.json`), descriptor.descriptorJson);
153331
+ writeFileSync27(join66(descriptorDir, `${encodeURIComponent(descriptor.screenId)}.json`), descriptor.descriptorJson);
153229
153332
  }
153230
153333
  options.progress?.("building cached Swift oracle");
153231
153334
  execFileSync5("swift", ["build", "--package-path", options.packageDir, "--product", "himi-decode-oracle"], {
@@ -153237,7 +153340,7 @@ function runNativeDecode(options) {
153237
153340
  encoding: "utf8"
153238
153341
  }).trim();
153239
153342
  options.progress?.(`running real Swift decoder over ${options.descriptors.length} screen${options.descriptors.length === 1 ? "" : "s"}`);
153240
- const stdout = execFileSync5(join65(binPath, "himi-decode-oracle"), ["--dir", descriptorDir], {
153343
+ const stdout = execFileSync5(join66(binPath, "himi-decode-oracle"), ["--dir", descriptorDir], {
153241
153344
  stdio: ["ignore", "pipe", "pipe"],
153242
153345
  encoding: "utf8"
153243
153346
  });
@@ -153255,15 +153358,15 @@ function runNativeDecode(options) {
153255
153358
  }
153256
153359
  }
153257
153360
  function runAndroidNativeDecode(options) {
153258
- const descriptorDir = mkdtempSync2(join65(tmpdir3(), "himi-native-decode-android-"));
153259
- const outputPath = join65(descriptorDir, "verdicts.ndjson");
153361
+ const descriptorDir = mkdtempSync2(join66(tmpdir3(), "himi-native-decode-android-"));
153362
+ const outputPath = join66(descriptorDir, "verdicts.ndjson");
153260
153363
  const startedAt = Date.now();
153261
153364
  try {
153262
153365
  for (const descriptor of options.descriptors) {
153263
153366
  if (typeof descriptor.descriptorJson !== "string") {
153264
153367
  throw new Error(`native decode cannot judge ${descriptor.screenId}: the release builder did not return its exact baked JSON bytes`);
153265
153368
  }
153266
- writeFileSync27(join65(descriptorDir, `${encodeURIComponent(descriptor.screenId)}.json`), descriptor.descriptorJson);
153369
+ writeFileSync27(join66(descriptorDir, `${encodeURIComponent(descriptor.screenId)}.json`), descriptor.descriptorJson);
153267
153370
  }
153268
153371
  options.progress?.(`running real Kotlin decoder over ${options.descriptors.length} screen${options.descriptors.length === 1 ? "" : "s"}`);
153269
153372
  execFileSync5(options.gradlew, [
@@ -153278,7 +153381,7 @@ function runAndroidNativeDecode(options) {
153278
153381
  stdio: ["ignore", "ignore", "pipe"],
153279
153382
  encoding: "utf8"
153280
153383
  });
153281
- const stdout = readFileSync74(outputPath, "utf8");
153384
+ const stdout = readFileSync75(outputPath, "utf8");
153282
153385
  return {
153283
153386
  platform: "android",
153284
153387
  verdicts: parseNativeDecodeOutput(stdout, options.descriptors.map((descriptor) => descriptor.screenId), "android"),
@@ -153348,13 +153451,13 @@ __export(browser_authoring_exports, {
153348
153451
  });
153349
153452
  import { createServer as createServer5 } from "node:http";
153350
153453
  import { createHash as createHash35, randomBytes as randomBytes5 } from "node:crypto";
153351
- import { existsSync as existsSync65, readdirSync as readdirSync31, readFileSync as readFileSync75, realpathSync as realpathSync11, statSync as statSync17 } from "node:fs";
153352
- import { join as join66, posix as posix3, relative as relative14, sep as sep18 } from "node:path";
153454
+ import { existsSync as existsSync65, readdirSync as readdirSync31, readFileSync as readFileSync76, realpathSync as realpathSync11, statSync as statSync17 } from "node:fs";
153455
+ import { join as join67, posix as posix3, relative as relative14, sep as sep18 } from "node:path";
153353
153456
  function humanMs(ms2) {
153354
153457
  return ms2 < 1e3 ? `${ms2}ms` : `${Math.round(ms2 / 1e3)}s`;
153355
153458
  }
153356
153459
  function collectWorkerSources(tier5SrcDir, bundleName) {
153357
- const root = join66(tier5SrcDir, bundleName);
153460
+ const root = join67(tier5SrcDir, bundleName);
153358
153461
  const files = {};
153359
153462
  const visitedDirs = /* @__PURE__ */ new Set();
153360
153463
  const walk2 = (abs, rel) => {
@@ -153362,12 +153465,12 @@ function collectWorkerSources(tier5SrcDir, bundleName) {
153362
153465
  if (visitedDirs.has(real)) return;
153363
153466
  visitedDirs.add(real);
153364
153467
  for (const name of readdirSync31(abs).sort()) {
153365
- const childAbs = join66(abs, name);
153468
+ const childAbs = join67(abs, name);
153366
153469
  const childRel = posix3.join(rel, name);
153367
153470
  if (statSync17(childAbs).isDirectory()) {
153368
153471
  walk2(childAbs, childRel);
153369
153472
  } else if (/\.(ts|tsx|js|mjs|json)$/.test(name)) {
153370
- files[childRel] = readFileSync75(childAbs, "utf8");
153473
+ files[childRel] = readFileSync76(childAbs, "utf8");
153371
153474
  }
153372
153475
  }
153373
153476
  };
@@ -153388,20 +153491,20 @@ function collectRelativeSiblings(files, tier5SrcDir) {
153388
153491
  const spec = m2[1];
153389
153492
  const virtual = posix3.normalize(posix3.join(dir, spec));
153390
153493
  if (!virtual.startsWith("/tier5-src/")) continue;
153391
- const onDisk = join66(tier5SrcDir, virtual.slice("/tier5-src/".length));
153494
+ const onDisk = join67(tier5SrcDir, virtual.slice("/tier5-src/".length));
153392
153495
  const candidates = [
153393
153496
  onDisk,
153394
153497
  `${onDisk}.ts`,
153395
153498
  `${onDisk}.js`,
153396
153499
  onDisk.replace(/\.js$/, ".ts"),
153397
- join66(onDisk, "index.ts"),
153398
- join66(onDisk, "index.js")
153500
+ join67(onDisk, "index.ts"),
153501
+ join67(onDisk, "index.js")
153399
153502
  ];
153400
153503
  for (const abs of candidates) {
153401
153504
  if (!existsSync65(abs) || statSync17(abs).isDirectory()) continue;
153402
153505
  const key2 = `/tier5-src/${relative14(tier5SrcDir, abs).split(sep18).join(posix3.sep)}`;
153403
153506
  if (key2 in files) break;
153404
- files[key2] = readFileSync75(abs, "utf8");
153507
+ files[key2] = readFileSync76(abs, "utf8");
153405
153508
  queue.push(key2);
153406
153509
  break;
153407
153510
  }
@@ -153436,7 +153539,7 @@ function collectSdkModules(files, resolveSubpath) {
153436
153539
  function sdkSubpathReader(resolve61) {
153437
153540
  return (sub) => {
153438
153541
  try {
153439
- return readFileSync75(resolve61(`@wix/himalaya/${sub}`), "utf8");
153542
+ return readFileSync76(resolve61(`@wix/himalaya/${sub}`), "utf8");
153440
153543
  } catch {
153441
153544
  return null;
153442
153545
  }
@@ -153608,8 +153711,8 @@ __export(coverage_exports, {
153608
153711
  suppressedNativeKeys: () => suppressedNativeKeys,
153609
153712
  trendAndStore: () => trendAndStore
153610
153713
  });
153611
- import { existsSync as existsSync66, mkdirSync as mkdirSync32, readFileSync as readFileSync76, writeFileSync as writeFileSync28 } from "node:fs";
153612
- import { dirname as dirname35, join as join67 } from "node:path";
153714
+ import { existsSync as existsSync66, mkdirSync as mkdirSync32, readFileSync as readFileSync77, writeFileSync as writeFileSync28 } from "node:fs";
153715
+ import { dirname as dirname35, join as join68 } from "node:path";
153613
153716
  function suppressedNativeKeys(oracle) {
153614
153717
  return [...oracle.ios ? [] : ["native-decode|ios"], ...oracle.android ? [] : ["native-decode|android"]];
153615
153718
  }
@@ -153789,11 +153892,11 @@ function assembleLedger(r2, options = {}) {
153789
153892
  return out2;
153790
153893
  }
153791
153894
  function trendAndStore(dir, entries, suppressed) {
153792
- const p2 = join67(dir, LEDGER_FILE);
153895
+ const p2 = join68(dir, LEDGER_FILE);
153793
153896
  let previous = null;
153794
153897
  try {
153795
153898
  if (existsSync66(p2)) {
153796
- const parsed = JSON.parse(readFileSync76(p2, "utf8"));
153899
+ const parsed = JSON.parse(readFileSync77(p2, "utf8"));
153797
153900
  if (Array.isArray(parsed.keys)) previous = parsed.keys.filter((k2) => typeof k2 === "string");
153798
153901
  }
153799
153902
  } catch {
@@ -153832,11 +153935,11 @@ function formatLedger(entries, trend) {
153832
153935
  return out2.join("\n");
153833
153936
  }
153834
153937
  function diffAndStoreObservations(dir, current) {
153835
- const p2 = join67(dir, OBS_FILE);
153938
+ const p2 = join68(dir, OBS_FILE);
153836
153939
  let previous = null;
153837
153940
  try {
153838
153941
  if (existsSync66(p2)) {
153839
- const parsed = JSON.parse(readFileSync76(p2, "utf8"));
153942
+ const parsed = JSON.parse(readFileSync77(p2, "utf8"));
153840
153943
  if (parsed.screens && typeof parsed.screens === "object" && !Array.isArray(parsed.screens) && Object.values(parsed.screens).every(
153841
153944
  (v2) => Array.isArray(v2) && v2.every((l2) => typeof l2 === "string")
153842
153945
  )) {
@@ -153885,8 +153988,8 @@ var LEDGER_FILE, OBS_FILE;
153885
153988
  var init_coverage = __esm({
153886
153989
  "src/coverage.ts"() {
153887
153990
  init_native_decode();
153888
- LEDGER_FILE = join67(".himi", "test-ledger.json");
153889
- OBS_FILE = join67(".himi", "test-observations.json");
153991
+ LEDGER_FILE = join68(".himi", "test-ledger.json");
153992
+ OBS_FILE = join68(".himi", "test-observations.json");
153890
153993
  }
153891
153994
  });
153892
153995
 
@@ -153897,8 +154000,8 @@ __export(design_kits_exports, {
153897
154000
  kitsDir: () => kitsDir,
153898
154001
  listKits: () => listKits2
153899
154002
  });
153900
- import { existsSync as existsSync67, readFileSync as readFileSync77, readdirSync as readdirSync32 } from "node:fs";
153901
- import { join as join68, basename as basename16 } from "node:path";
154003
+ import { existsSync as existsSync67, readFileSync as readFileSync78, readdirSync as readdirSync32 } from "node:fs";
154004
+ import { join as join69, basename as basename16 } from "node:path";
153902
154005
  import { fileURLToPath as fileURLToPath24 } from "node:url";
153903
154006
  function kitsDir() {
153904
154007
  return KIT_DIR_CANDIDATES.find((p2) => existsSync67(p2));
@@ -153925,7 +154028,7 @@ In a published @wix/himalaya-cli this is a packaging bug \u2014 the kits should
153925
154028
  if (!kits.includes(name)) {
153926
154029
  return { ok: false, kit: name, kits, problems: [`no design kit named "${name}". Available: ${kits.join(", ")}`] };
153927
154030
  }
153928
- const raw = readFileSync77(join68(dir, `${name}.json`), "utf8");
154031
+ const raw = readFileSync78(join69(dir, `${name}.json`), "utf8");
153929
154032
  let parsed;
153930
154033
  try {
153931
154034
  parsed = JSON.parse(raw);
@@ -153949,9 +154052,9 @@ var init_design_kits = __esm({
153949
154052
  "src/design-kits.ts"() {
153950
154053
  KIT_DIR_CANDIDATES = [
153951
154054
  // in-repo: tools/himi-cli/src/design-kits.ts → <repo>/stdlib/design-kits/
153952
- join68(fileURLToPath24(new URL("../../..", import.meta.url)), "stdlib", "design-kits"),
154055
+ join69(fileURLToPath24(new URL("../../..", import.meta.url)), "stdlib", "design-kits"),
153953
154056
  // published CLI: <pkg>/dist/cli.mjs → <pkg>/stdlib/design-kits/
153954
- join68(fileURLToPath24(new URL("..", import.meta.url)), "stdlib", "design-kits")
154057
+ join69(fileURLToPath24(new URL("..", import.meta.url)), "stdlib", "design-kits")
153955
154058
  ];
153956
154059
  }
153957
154060
  });
@@ -153965,11 +154068,11 @@ __export(assets_exports, {
153965
154068
  removeAssetPayload: () => removeAssetPayload,
153966
154069
  verifyReport: () => verifyReport
153967
154070
  });
153968
- import { readFileSync as readFileSync78 } from "node:fs";
154071
+ import { readFileSync as readFileSync79 } from "node:fs";
153969
154072
  import { basename as basename17 } from "node:path";
153970
154073
  function declaredAssets(dir) {
153971
154074
  return collectAssets(dir).map((a2) => {
153972
- const bytes2 = readFileSync78(a2.path);
154075
+ const bytes2 = readFileSync79(a2.path);
153973
154076
  return {
153974
154077
  name: a2.name,
153975
154078
  sha256: assetSha256(bytes2),
@@ -154046,7 +154149,7 @@ function verifyReport(dir, app, manifest) {
154046
154149
  };
154047
154150
  }
154048
154151
  function addAssetPayload(manifest, filePath, opts) {
154049
- const bytes2 = readFileSync78(filePath);
154152
+ const bytes2 = readFileSync79(filePath);
154050
154153
  const name = opts.name ?? basename17(filePath);
154051
154154
  const sha2566 = assetSha256(bytes2);
154052
154155
  const record2 = {
@@ -155801,25 +155904,25 @@ var init_preview_assets_generated = __esm({
155801
155904
  "../../packages/serve/src/preview-assets.generated.ts"() {
155802
155905
  init_preview_assets_format();
155803
155906
  PREVIEW_ASSET_MANIFEST = [
155804
- { key: "assets/index-BIlXpj1h.js", contentType: "application/javascript; charset=utf-8", offset: 8, length: 1257735, sha256: "6d808a71fd48dfe402d9cdace4e2a6ce1a8d686068d1812eb08ef418f2284533" },
155805
- { key: "assets/pdf-DKCzctsR.js", contentType: "application/javascript; charset=utf-8", offset: 1257743, length: 488199, sha256: "580e24333dcc9b041e8720577be50a8da5a50800f4d5e948e28edf9c8dd7d9e0" },
155806
- { key: "assets/pdf.worker.min-BQa_JDET.js", contentType: "application/javascript; charset=utf-8", offset: 1745942, length: 73, sha256: "41bcfda4f3c8c0a81c785ea87c69afc8e7d0ed8c333324aee94c273d881bb6aa" },
155807
- { key: "assets/pdf.worker.min-BmVo14Nb.mjs", contentType: "application/javascript; charset=utf-8", offset: 1746015, length: 1317034, sha256: "a33cfe728c584fdba4fcc1fd54bcdc2f9f2f13889ddbb5b2bd1d0f8cbe49b84e" },
155808
- { key: "assets/pdfDocument-DCdoA9nd.js", contentType: "application/javascript; charset=utf-8", offset: 3063049, length: 2858, sha256: "ea99eb8d79920cd5c7ca2c83faa495c5287ff04d1c96bbfe3d034b8925075ad2" },
155809
- { key: "fonts/Roboto-LICENSE.txt", contentType: "application/octet-stream", offset: 3065907, length: 4610, sha256: "994062dd7af4186a739de55dd9e151c63b6301f8e2cbafc608d35c2e87da0cd2" },
155810
- { key: "fonts/Roboto-Variable.ttf", contentType: "font/ttf", offset: 3070517, length: 488584, sha256: "d7598e12c5dbef095ff8272cfc55da0250bd07fbdecbac8a530b9b277872a134" },
155811
- { key: "fonts/WixMadeforDisplay-Bold.ttf", contentType: "font/ttf", offset: 3559101, length: 90924, sha256: "ec4c7d63772d980d6e147b2df6215fd2737e4b04cebe0cf7e11dc695fb63cdcf" },
155812
- { key: "fonts/WixMadeforDisplay-ExtraBold.ttf", contentType: "font/ttf", offset: 3650025, length: 90984, sha256: "bf4c16a2774edd38a921edf3099469866cd74c094fd596f3fa4e81f54a04dfaa" },
155813
- { key: "fonts/WixMadeforDisplay-Medium.ttf", contentType: "font/ttf", offset: 3741009, length: 90980, sha256: "368faca44fb9f7207e4af784e94750b1ee59c1098b8689e0f4a918926f244fb5" },
155814
- { key: "fonts/WixMadeforDisplay-Regular.ttf", contentType: "font/ttf", offset: 3831989, length: 90872, sha256: "97ed8f1a6772abe26e3d8af5cecfc4b02faa94497d585b0398b5053b739a70c1" },
155815
- { key: "fonts/WixMadeforDisplay-SemiBold.ttf", contentType: "font/ttf", offset: 3922861, length: 90980, sha256: "642feab8a48ddf6c7a89d7c2a7c0edfa0e6e773f671287e460e222703563191e" },
155816
- { key: "fonts/WixMadeforText-Bold.ttf", contentType: "font/ttf", offset: 4013841, length: 108636, sha256: "37c179b4fefb63ea9637322b84583a2df53aa226c150294eea1675c14b1b8e29" },
155817
- { key: "fonts/WixMadeforText-ExtraBold.ttf", contentType: "font/ttf", offset: 4122477, length: 109084, sha256: "62e2fe4718129f36ecdb0ae4de385bd6b81ecc876146447167c6c140fad699a9" },
155818
- { key: "fonts/WixMadeforText-Medium.ttf", contentType: "font/ttf", offset: 4231561, length: 109048, sha256: "4ecf270136af928612c76fe4ebade91d8156975e5ea4c0cf9225501dd1788e02" },
155819
- { key: "fonts/WixMadeforText-Regular.ttf", contentType: "font/ttf", offset: 4340609, length: 107700, sha256: "dee56f09fd3efc127c1ea95557edc74110c1460a46287da36e0af25efd341ef5" },
155820
- { key: "fonts/WixMadeforText-SemiBold.ttf", contentType: "font/ttf", offset: 4448309, length: 88108, sha256: "dced97a77624bc5f8b1ae65850360908297f4588e09feb6f22792d29dc7e765b" },
155821
- { key: "index.html", contentType: "text/html; charset=utf-8", offset: 4536417, length: 4947, sha256: "31a68c99003ad579052a0dccccfa5d861146fe209bbc6ea0c264162026d7b35f" },
155822
- { key: "t5-frame.html", contentType: "text/html; charset=utf-8", offset: 4541364, length: 17344, sha256: "d057298d75e7373e5e2c4d11b7d1bcbea88e03af555ba63d97641c78509c58e4" }
155907
+ { key: "assets/index-CoUR7qoz.js", contentType: "application/javascript; charset=utf-8", offset: 8, length: 1266053, sha256: "25b34055136947d515d6057238d0dafc333d6009da327f01b74e06c4e462dd95" },
155908
+ { key: "assets/pdf-BChnv3CJ.js", contentType: "application/javascript; charset=utf-8", offset: 1266061, length: 488199, sha256: "c6dab79264bcb608690696b385acfefd82a0e9734edd29763d1a0d12640f2487" },
155909
+ { key: "assets/pdf.worker.min-BQa_JDET.js", contentType: "application/javascript; charset=utf-8", offset: 1754260, length: 73, sha256: "41bcfda4f3c8c0a81c785ea87c69afc8e7d0ed8c333324aee94c273d881bb6aa" },
155910
+ { key: "assets/pdf.worker.min-BmVo14Nb.mjs", contentType: "application/javascript; charset=utf-8", offset: 1754333, length: 1317034, sha256: "a33cfe728c584fdba4fcc1fd54bcdc2f9f2f13889ddbb5b2bd1d0f8cbe49b84e" },
155911
+ { key: "assets/pdfDocument-BEWILVUm.js", contentType: "application/javascript; charset=utf-8", offset: 3071367, length: 2858, sha256: "e99ccba3f1701bb444031ce7b5797d5e5bd1fb3a8ff9cbdb89eca78eaadbdddd" },
155912
+ { key: "fonts/Roboto-LICENSE.txt", contentType: "application/octet-stream", offset: 3074225, length: 4610, sha256: "994062dd7af4186a739de55dd9e151c63b6301f8e2cbafc608d35c2e87da0cd2" },
155913
+ { key: "fonts/Roboto-Variable.ttf", contentType: "font/ttf", offset: 3078835, length: 488584, sha256: "d7598e12c5dbef095ff8272cfc55da0250bd07fbdecbac8a530b9b277872a134" },
155914
+ { key: "fonts/WixMadeforDisplay-Bold.ttf", contentType: "font/ttf", offset: 3567419, length: 90924, sha256: "ec4c7d63772d980d6e147b2df6215fd2737e4b04cebe0cf7e11dc695fb63cdcf" },
155915
+ { key: "fonts/WixMadeforDisplay-ExtraBold.ttf", contentType: "font/ttf", offset: 3658343, length: 90984, sha256: "bf4c16a2774edd38a921edf3099469866cd74c094fd596f3fa4e81f54a04dfaa" },
155916
+ { key: "fonts/WixMadeforDisplay-Medium.ttf", contentType: "font/ttf", offset: 3749327, length: 90980, sha256: "368faca44fb9f7207e4af784e94750b1ee59c1098b8689e0f4a918926f244fb5" },
155917
+ { key: "fonts/WixMadeforDisplay-Regular.ttf", contentType: "font/ttf", offset: 3840307, length: 90872, sha256: "97ed8f1a6772abe26e3d8af5cecfc4b02faa94497d585b0398b5053b739a70c1" },
155918
+ { key: "fonts/WixMadeforDisplay-SemiBold.ttf", contentType: "font/ttf", offset: 3931179, length: 90980, sha256: "642feab8a48ddf6c7a89d7c2a7c0edfa0e6e773f671287e460e222703563191e" },
155919
+ { key: "fonts/WixMadeforText-Bold.ttf", contentType: "font/ttf", offset: 4022159, length: 108636, sha256: "37c179b4fefb63ea9637322b84583a2df53aa226c150294eea1675c14b1b8e29" },
155920
+ { key: "fonts/WixMadeforText-ExtraBold.ttf", contentType: "font/ttf", offset: 4130795, length: 109084, sha256: "62e2fe4718129f36ecdb0ae4de385bd6b81ecc876146447167c6c140fad699a9" },
155921
+ { key: "fonts/WixMadeforText-Medium.ttf", contentType: "font/ttf", offset: 4239879, length: 109048, sha256: "4ecf270136af928612c76fe4ebade91d8156975e5ea4c0cf9225501dd1788e02" },
155922
+ { key: "fonts/WixMadeforText-Regular.ttf", contentType: "font/ttf", offset: 4348927, length: 107700, sha256: "dee56f09fd3efc127c1ea95557edc74110c1460a46287da36e0af25efd341ef5" },
155923
+ { key: "fonts/WixMadeforText-SemiBold.ttf", contentType: "font/ttf", offset: 4456627, length: 88108, sha256: "dced97a77624bc5f8b1ae65850360908297f4588e09feb6f22792d29dc7e765b" },
155924
+ { key: "index.html", contentType: "text/html; charset=utf-8", offset: 4544735, length: 4947, sha256: "2b60c2689097b5247dae440b6ad4d7816290fc6014b2d4000cf7c279e9fa2cd6" },
155925
+ { key: "t5-frame.html", contentType: "text/html; charset=utf-8", offset: 4549682, length: 17344, sha256: "d057298d75e7373e5e2c4d11b7d1bcbea88e03af555ba63d97641c78509c58e4" }
155823
155926
  ];
155824
155927
  }
155825
155928
  });
@@ -155837,9 +155940,9 @@ __export(run_exports, {
155837
155940
  runPackage: () => runPackage,
155838
155941
  withoutProdServe: () => withoutProdServe
155839
155942
  });
155840
- import { cpSync as cpSync2, existsSync as existsSync68, mkdirSync as mkdirSync33, mkdtempSync as mkdtempSync3, readFileSync as readFileSync79, rmSync as rmSync17, statSync as statSync18 } from "node:fs";
155943
+ import { cpSync as cpSync2, existsSync as existsSync68, mkdirSync as mkdirSync33, mkdtempSync as mkdtempSync3, readFileSync as readFileSync80, rmSync as rmSync17, statSync as statSync18 } from "node:fs";
155841
155944
  import { networkInterfaces as osNetworkInterfaces, tmpdir as tmpdir4 } from "node:os";
155842
- import { dirname as dirname36, join as join69 } from "node:path";
155945
+ import { dirname as dirname36, join as join70 } from "node:path";
155843
155946
  import { fileURLToPath as fileURLToPath25 } from "node:url";
155844
155947
  function makePackageRunHandler(opts) {
155845
155948
  const store = new FileReleaseStore(opts.releaseRoot);
@@ -155868,7 +155971,7 @@ async function fetchBytes(url) {
155868
155971
  async function resolvePackage(source, workDir) {
155869
155972
  const isUrl2 = /^https?:\/\//i.test(source);
155870
155973
  if (!isUrl2 && existsSync68(source) && statSync18(source).isDirectory()) {
155871
- const appDirManifest = join69(source, "release-manifest.json");
155974
+ const appDirManifest = join70(source, "release-manifest.json");
155872
155975
  if (existsSync68(appDirManifest)) {
155873
155976
  const opened2 = openPackageDir(source);
155874
155977
  if (!opened2.validation.ok) {
@@ -155878,9 +155981,9 @@ async function resolvePackage(source, workDir) {
155878
155981
  const app2 = opened2.header?.app ?? opened2.manifest?.app;
155879
155982
  if (!app2) throw new Error(`${source} has no app id (no himi-package.json and no manifest.app)`);
155880
155983
  if (!isSafeAppId(app2)) throw new Error(`${source} declares an unsafe app id ${JSON.stringify(app2)} \u2014 refusing to open it`);
155881
- const root2 = workDir ?? mkdtempSync3(join69(tmpdir4(), "himi-run-"));
155882
- const target = join69(root2, app2);
155883
- if (join69(source) !== target) {
155984
+ const root2 = workDir ?? mkdtempSync3(join70(tmpdir4(), "himi-run-"));
155985
+ const target = join70(root2, app2);
155986
+ if (join70(source) !== target) {
155884
155987
  mkdirSync33(root2, { recursive: true });
155885
155988
  rmSync17(target, { recursive: true, force: true });
155886
155989
  cpSync2(source, target, { recursive: true });
@@ -155897,8 +156000,8 @@ async function resolvePackage(source, workDir) {
155897
156000
  }
155898
156001
  throw new Error(`${source} is a directory but has no release-manifest.json \u2014 is it a package?`);
155899
156002
  }
155900
- const bytes2 = isUrl2 ? await fetchBytes(source) : readFileSync79(source);
155901
- const root = workDir ?? mkdtempSync3(join69(tmpdir4(), "himi-run-"));
156003
+ const bytes2 = isUrl2 ? await fetchBytes(source) : readFileSync80(source);
156004
+ const root = workDir ?? mkdtempSync3(join70(tmpdir4(), "himi-run-"));
155902
156005
  const { app, appDir: appDir3 } = unpackTo(bytes2, root);
155903
156006
  const opened = openPackageDir(appDir3);
155904
156007
  if (!opened.validation.ok) {
@@ -155921,14 +156024,14 @@ async function loadPreviewAssets() {
155921
156024
  const mod = await Promise.resolve().then(() => (init_preview_assets_generated(), preview_assets_generated_exports));
155922
156025
  const here = dirname36(fileURLToPath25(import.meta.url));
155923
156026
  const candidates = [
155924
- join69(here, "preview-assets.generated.bin"),
156027
+ join70(here, "preview-assets.generated.bin"),
155925
156028
  // published: copied next to the bundled CLI
155926
- join69(here, "../../../packages/serve/src/preview-assets.generated.bin")
156029
+ join70(here, "../../../packages/serve/src/preview-assets.generated.bin")
155927
156030
  // in-repo checkout
155928
156031
  ];
155929
156032
  for (const path2 of candidates) {
155930
156033
  if (!existsSync68(path2)) continue;
155931
- const blob = readFileSync79(path2);
156034
+ const blob = readFileSync80(path2);
155932
156035
  return mod.assemblePreviewAssetsFromBlob(new Uint8Array(blob.buffer, blob.byteOffset, blob.byteLength));
155933
156036
  }
155934
156037
  return /* @__PURE__ */ new Map();
@@ -156065,7 +156168,7 @@ __export(run_browser_exports, {
156065
156168
  runInBrowser: () => runInBrowser
156066
156169
  });
156067
156170
  import { createServer as createServer7 } from "node:http";
156068
- import { existsSync as existsSync69, readFileSync as readFileSync80 } from "node:fs";
156171
+ import { existsSync as existsSync69, readFileSync as readFileSync81 } from "node:fs";
156069
156172
  import { spawnSync as spawnSync3 } from "node:child_process";
156070
156173
  import { dirname as dirname37, resolve as resolve54 } from "node:path";
156071
156174
  import { fileURLToPath as fileURLToPath26 } from "node:url";
@@ -156173,7 +156276,7 @@ async function runInBrowser(releaseRoot, app, header, opts = {}) {
156173
156276
  }
156174
156277
  let bytes2;
156175
156278
  try {
156176
- bytes2 = readFileSync80(resolve54(stagedDir(), name));
156279
+ bytes2 = readFileSync81(resolve54(stagedDir(), name));
156177
156280
  } catch (e2) {
156178
156281
  res.writeHead(503, { "content-type": "application/json" });
156179
156282
  res.end(JSON.stringify({ error: "browser_plane_unstaged", file: name, detail: String(e2) }));
@@ -156226,14 +156329,14 @@ var hhp_preview_exports = {};
156226
156329
  __export(hhp_preview_exports, {
156227
156330
  hhpPreviewResponse: () => hhpPreviewResponse
156228
156331
  });
156229
- import { existsSync as existsSync70, readFileSync as readFileSync81 } from "node:fs";
156230
- import { join as join70 } from "node:path";
156332
+ import { existsSync as existsSync70, readFileSync as readFileSync82 } from "node:fs";
156333
+ import { join as join71 } from "node:path";
156231
156334
  function hhpPreviewResponse(root, request) {
156232
- if (new URL(request.url).pathname !== "/__himi/hhp-preview" || !existsSync70(join70(root, "hhp.json"))) return null;
156335
+ if (new URL(request.url).pathname !== "/__himi/hhp-preview" || !existsSync70(join71(root, "hhp.json"))) return null;
156233
156336
  if (request.method !== "GET") return new Response(null, { status: 405 });
156234
156337
  try {
156235
156338
  const file2 = localPath(root, ".himi/hhp-preview.json");
156236
- const authored2 = existsSync70(file2) ? JSON.parse(readFileSync81(file2, "utf8")) : {};
156339
+ const authored2 = existsSync70(file2) ? JSON.parse(readFileSync82(file2, "utf8")) : {};
156237
156340
  if (authored2.mockCapabilities && (!Array.isArray(authored2.mockCapabilities) || authored2.mockCapabilities.some((v2) => typeof v2 !== "string"))) throw new Error("mockCapabilities must be a string array.");
156238
156341
  const fixtures = authored2.fixtures ?? {};
156239
156342
  if (typeof fixtures !== "object" || Array.isArray(fixtures) || fixtures === null) throw new Error("fixtures must be an object.");
@@ -156383,7 +156486,7 @@ var init_embedded_bundles = __esm({
156383
156486
  });
156384
156487
 
156385
156488
  // ../store-release/register-bundle.ts
156386
- import { readFileSync as readFileSync82 } from "node:fs";
156489
+ import { readFileSync as readFileSync83 } from "node:fs";
156387
156490
  import { createPrivateKey as createPrivateKey4, sign as sign2 } from "node:crypto";
156388
156491
  function b64url2(b2) {
156389
156492
  return Buffer.from(b2).toString("base64").replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/, "");
@@ -156401,7 +156504,7 @@ function bundleIdBody(identifier, name, platform = "IOS") {
156401
156504
  async function registerBundleId(opts) {
156402
156505
  const env = requireEnv(["ASC_KEY_ID", "ASC_ISSUER_ID", "ASC_KEY_PATH"]);
156403
156506
  assertCredentialOutsideRepo("ASC_KEY_PATH", env.ASC_KEY_PATH);
156404
- const jwt = ascJwt(env.ASC_KEY_ID, env.ASC_ISSUER_ID, readFileSync82(env.ASC_KEY_PATH, "utf8"), Math.floor(Date.now() / 1e3));
156507
+ const jwt = ascJwt(env.ASC_KEY_ID, env.ASC_ISSUER_ID, readFileSync83(env.ASC_KEY_PATH, "utf8"), Math.floor(Date.now() / 1e3));
156405
156508
  const res = await fetch(`${ASC_API}/v1/bundleIds`, {
156406
156509
  method: "POST",
156407
156510
  headers: { Authorization: `Bearer ${jwt}`, "Content-Type": "application/json" },
@@ -156431,7 +156534,7 @@ async function main() {
156431
156534
  }
156432
156535
  const ni2 = rest.indexOf("--name");
156433
156536
  const name = ni2 >= 0 ? rest[ni2 + 1] : cfg.app ?? app;
156434
- const yml = readFileSync82(iosProjectYml(app), "utf8");
156537
+ const yml = readFileSync83(iosProjectYml(app), "utf8");
156435
156538
  for (const { id, label: label2 } of [{ id: identifier, label: name }, ...embeddedBundles(yml).map((b2) => ({
156436
156539
  id: embeddedBundleId(identifier, b2),
156437
156540
  label: `${name} ${embeddedAppIdLabel(b2)}`
@@ -157840,19 +157943,19 @@ __export(credential_profile_exports, {
157840
157943
  profilePath: () => profilePath,
157841
157944
  resolveStoreCredentials: () => resolveStoreCredentials
157842
157945
  });
157843
- import { existsSync as existsSync71, readFileSync as readFileSync83 } from "node:fs";
157946
+ import { existsSync as existsSync71, readFileSync as readFileSync84 } from "node:fs";
157844
157947
  import { homedir as homedir6 } from "node:os";
157845
- import { join as join71 } from "node:path";
157948
+ import { join as join72 } from "node:path";
157846
157949
  function credentialsDir(home = homedir6()) {
157847
- return join71(home, ".himalaya", "store-credentials");
157950
+ return join72(home, ".himalaya", "store-credentials");
157848
157951
  }
157849
157952
  function profilePath(name, home = homedir6()) {
157850
157953
  if (!PROFILE_NAME.test(name)) {
157851
157954
  throw new Error(
157852
- `credential profile ${JSON.stringify(name)} is not a profile name \u2014 use letters, digits, ".", "_" or "-" starting with a letter or digit. It names ${join71(credentialsDir(home), "<name>.json")}; it is never a path.`
157955
+ `credential profile ${JSON.stringify(name)} is not a profile name \u2014 use letters, digits, ".", "_" or "-" starting with a letter or digit. It names ${join72(credentialsDir(home), "<name>.json")}; it is never a path.`
157853
157956
  );
157854
157957
  }
157855
- return join71(credentialsDir(home), `${name}.json`);
157958
+ return join72(credentialsDir(home), `${name}.json`);
157856
157959
  }
157857
157960
  function parseProfile(text9, label2) {
157858
157961
  let doc;
@@ -157883,7 +157986,7 @@ function resolveStoreCredentials(opts) {
157883
157986
  const { app, cfg } = opts;
157884
157987
  const env = opts.env ?? process.env;
157885
157988
  const home = opts.home ?? homedir6();
157886
- const read = opts.readProfile ?? ((p2) => readFileSync83(p2, "utf8"));
157989
+ const read = opts.readProfile ?? ((p2) => readFileSync84(p2, "utf8"));
157887
157990
  const exists = opts.profileExists ?? existsSync71;
157888
157991
  const ios = cfg.ios ?? {};
157889
157992
  const flagName = opts.profileFlag?.trim();
@@ -157950,7 +158053,7 @@ var init_credential_profile = __esm({
157950
158053
 
157951
158054
  // ../store-release/iap-credentials.ts
157952
158055
  import { createHash as createHash37 } from "node:crypto";
157953
- import { existsSync as existsSync72, readFileSync as readFileSync84, realpathSync as realpathSync12 } from "node:fs";
158056
+ import { existsSync as existsSync72, readFileSync as readFileSync85, realpathSync as realpathSync12 } from "node:fs";
157954
158057
  import { homedir as homedir7 } from "node:os";
157955
158058
  function accountFingerprint(keyId, issuerId) {
157956
158059
  return `sha256:${createHash37("sha256").update(`${issuerId}:${keyId}`).digest("hex").slice(0, 16)}`;
@@ -157984,7 +158087,7 @@ function canonicalKeyPath(path2, profile, realpath) {
157984
158087
  function resolveIapCredentials(options) {
157985
158088
  const { target } = options;
157986
158089
  const home = options.home ?? homedir7();
157987
- const readFile3 = options.readFile ?? ((p2) => readFileSync84(p2, "utf8"));
158090
+ const readFile3 = options.readFile ?? ((p2) => readFileSync85(p2, "utf8"));
157988
158091
  const realpath = options.realpath ?? realpathSync12;
157989
158092
  const profile = requireExplicitProfile(options.profileFlag, target);
157990
158093
  const creds = resolveStoreCredentials({
@@ -158305,7 +158408,7 @@ __export(version_exports, {
158305
158408
  stampTargetVersion: () => stampTargetVersion,
158306
158409
  stampVersionKeys: () => stampVersionKeys
158307
158410
  });
158308
- import { readFileSync as readFileSync85, writeFileSync as writeFileSync29 } from "node:fs";
158411
+ import { readFileSync as readFileSync86, writeFileSync as writeFileSync29 } from "node:fs";
158309
158412
  function readIosVersion(projectYml) {
158310
158413
  const marketing = matchScalar(projectYml, "CFBundleShortVersionString");
158311
158414
  const build3 = matchScalar(projectYml, "CFBundleVersion");
@@ -158452,8 +158555,8 @@ function setAndroidVersion(gradle, v2) {
158452
158555
  function bumpVersion(app, opts) {
158453
158556
  const iosPath = iosProjectYml(app);
158454
158557
  const gradlePath = androidGradle(app);
158455
- const iosYml = readFileSync85(iosPath, "utf8");
158456
- const gradle = readFileSync85(gradlePath, "utf8");
158558
+ const iosYml = readFileSync86(iosPath, "utf8");
158559
+ const gradle = readFileSync86(gradlePath, "utf8");
158457
158560
  const current = readIosVersion(iosYml);
158458
158561
  const next = {
158459
158562
  marketing: opts.marketing ?? current.marketing,
@@ -158483,8 +158586,8 @@ var init_store_spec = __esm({
158483
158586
  });
158484
158587
 
158485
158588
  // src/iap-config-edit.ts
158486
- import { existsSync as existsSync73, readFileSync as readFileSync86 } from "node:fs";
158487
- import { basename as basename18, join as join72 } from "node:path";
158589
+ import { existsSync as existsSync73, readFileSync as readFileSync87 } from "node:fs";
158590
+ import { basename as basename18, join as join73 } from "node:path";
158488
158591
  import ts8 from "typescript";
158489
158592
  function bindPurchasesAppInConfig(source, options) {
158490
158593
  const fileName = options.fileName ?? "config.ts";
@@ -158563,16 +158666,16 @@ function capabilityFinding(app, fileName) {
158563
158666
  }
158564
158667
  function withStoreBundle(dir, options) {
158565
158668
  if (options.storeBundleId) return options;
158566
- const path2 = join72(dir, "store", "store.config.yaml");
158669
+ const path2 = join73(dir, "store", "store.config.yaml");
158567
158670
  if (!existsSync73(path2)) return options;
158568
- const storeBundleId = parseStoreConfig(readFileSync86(path2, "utf8")).ios?.bundleId;
158671
+ const storeBundleId = parseStoreConfig(readFileSync87(path2, "utf8")).ios?.bundleId;
158569
158672
  return storeBundleId ? { ...options, storeBundleId } : options;
158570
158673
  }
158571
158674
  function previewIapConfigEdit(dir, options) {
158572
158675
  const path2 = configEntry(dir);
158573
158676
  if (!path2) return void 0;
158574
158677
  if (isSymlink2(path2)) return { path: path2, changed: false, applied: [], conflicts: [], instructions: [`${basename18(path2)} is a symlink, so it would not be edited: add the purchases app in the file it points to.`] };
158575
- const { changed, applied, conflicts, instructions } = bindPurchasesAppInConfig(readFileSync86(path2, "utf8"), { ...withStoreBundle(dir, options), fileName: basename18(path2) });
158678
+ const { changed, applied, conflicts, instructions } = bindPurchasesAppInConfig(readFileSync87(path2, "utf8"), { ...withStoreBundle(dir, options), fileName: basename18(path2) });
158576
158679
  return { path: path2, changed, applied, conflicts, instructions };
158577
158680
  }
158578
158681
  async function applyIapConfigEdit(dir, options, validate4) {
@@ -158581,7 +158684,7 @@ async function applyIapConfigEdit(dir, options, validate4) {
158581
158684
  const fileName = basename18(path2);
158582
158685
  const refuse7 = (why) => ({ path: path2, changed: false, applied: [], conflicts: [], instructions: [why] });
158583
158686
  if (isSymlink2(path2)) return refuse7(`${fileName} is a symlink, so it was not edited: add the purchases app in the file it points to.`);
158584
- const original = readFileSync86(path2, "utf8");
158687
+ const original = readFileSync87(path2, "utf8");
158585
158688
  const edit = bindPurchasesAppInConfig(original, { ...withStoreBundle(dir, options), fileName });
158586
158689
  const { applied, conflicts, instructions } = edit;
158587
158690
  if (!edit.changed) return { path: path2, changed: false, applied, conflicts, instructions };
@@ -159054,9 +159157,9 @@ __export(store_iap_exports, {
159054
159157
  runStoreIap: () => runStoreIap
159055
159158
  });
159056
159159
  import { randomUUID as randomUUID8 } from "node:crypto";
159057
- import { appendFileSync as appendFileSync2, mkdirSync as mkdirSync34, readFileSync as readFileSync87, realpathSync as realpathSync13, rmSync as rmSync18, writeFileSync as writeFileSync30 } from "node:fs";
159160
+ import { appendFileSync as appendFileSync2, mkdirSync as mkdirSync34, readFileSync as readFileSync88, realpathSync as realpathSync13, rmSync as rmSync18, writeFileSync as writeFileSync30 } from "node:fs";
159058
159161
  import { homedir as homedir8, hostname } from "node:os";
159059
- import { join as join73 } from "node:path";
159162
+ import { join as join74 } from "node:path";
159060
159163
  function scrubDeep(value, scrub) {
159061
159164
  if (typeof value === "string") return scrub(value);
159062
159165
  if (Array.isArray(value)) return value.map((v2) => scrubDeep(v2, scrub));
@@ -159512,14 +159615,14 @@ function fileJournal(path2) {
159512
159615
  }
159513
159616
  function readLockSummary(path2) {
159514
159617
  try {
159515
- const { pid, host, at: at2 } = JSON.parse(readFileSync87(path2, "utf8"));
159618
+ const { pid, host, at: at2 } = JSON.parse(readFileSync88(path2, "utf8"));
159516
159619
  return `pid ${pid} on ${host} since ${at2}`;
159517
159620
  } catch {
159518
159621
  return "unreadable lock";
159519
159622
  }
159520
159623
  }
159521
159624
  function acquireApplyLock(dir, appleAppId) {
159522
- const path2 = join73(dir, "apply.lock");
159625
+ const path2 = join74(dir, "apply.lock");
159523
159626
  const stamp = JSON.stringify({ pid: process.pid, host: hostname(), at: (/* @__PURE__ */ new Date()).toISOString(), token: randomUUID8() });
159524
159627
  try {
159525
159628
  writeFileSync30(path2, stamp, { flag: "wx", mode: 384 });
@@ -159532,7 +159635,7 @@ function acquireApplyLock(dir, appleAppId) {
159532
159635
  return () => {
159533
159636
  let current = "";
159534
159637
  try {
159535
- current = readFileSync87(path2, "utf8");
159638
+ current = readFileSync88(path2, "utf8");
159536
159639
  } catch {
159537
159640
  return;
159538
159641
  }
@@ -159540,7 +159643,7 @@ function acquireApplyLock(dir, appleAppId) {
159540
159643
  };
159541
159644
  }
159542
159645
  function stateDir(appleAppId) {
159543
- const dir = join73(homedir8(), ".himalaya", "store-iap", appleAppId);
159646
+ const dir = join74(homedir8(), ".himalaya", "store-iap", appleAppId);
159544
159647
  mkdirSync34(dir, { recursive: true, mode: 448 });
159545
159648
  return dir;
159546
159649
  }
@@ -159556,11 +159659,11 @@ async function confirmOnTerminal(question) {
159556
159659
  }
159557
159660
  function defaultStoreIapDeps() {
159558
159661
  return {
159559
- readFile: (path2) => readFileSync87(path2, "utf8"),
159662
+ readFile: (path2) => readFileSync88(path2, "utf8"),
159560
159663
  writeFileAtomic,
159561
159664
  resolveCredentials: ({ profileFlag, target }) => resolveIapCredentials({ profileFlag, target }),
159562
159665
  createApi: (key2) => createIapApi(createAscClient({ key: key2 })),
159563
- openJournal: (appleAppId) => fileJournal(join73(stateDir(appleAppId), "journal.jsonl")),
159666
+ openJournal: (appleAppId) => fileJournal(join74(stateDir(appleAppId), "journal.jsonl")),
159564
159667
  acquireLock: (appleAppId) => acquireApplyLock(stateDir(appleAppId), appleAppId),
159565
159668
  canPrompt: () => process.stdin.isTTY === true,
159566
159669
  wixTransport: (siteId) => ownerTransport(siteId),
@@ -160038,9 +160141,9 @@ __export(preflight_app_exports, {
160038
160141
  preflightApp: () => preflightApp,
160039
160142
  profileAccount: () => profileAccount
160040
160143
  });
160041
- import { readFileSync as readFileSync88, existsSync as existsSync74, readdirSync as readdirSync33, statSync as statSync19 } from "node:fs";
160144
+ import { readFileSync as readFileSync89, existsSync as existsSync74, readdirSync as readdirSync33, statSync as statSync19 } from "node:fs";
160042
160145
  import { createHash as createHash39 } from "node:crypto";
160043
- import { join as join74 } from "node:path";
160146
+ import { join as join75 } from "node:path";
160044
160147
  function analyze(projectYml, storeConfig, icon, account) {
160045
160148
  const f2 = [];
160046
160149
  const has = (re2, s2) => re2.test(s2);
@@ -160104,13 +160207,13 @@ function profileAccount(app, storeConfig, opts = {}) {
160104
160207
  }
160105
160208
  }
160106
160209
  async function preflightApp(app, opts = {}) {
160107
- const projectYml = existsSync74(iosProjectYml(app)) ? readFileSync88(iosProjectYml(app), "utf8") : "";
160108
- const storeConfig = existsSync74(storeConfigPath(app)) ? readFileSync88(storeConfigPath(app), "utf8") : "";
160210
+ const projectYml = existsSync74(iosProjectYml(app)) ? readFileSync89(iosProjectYml(app), "utf8") : "";
160211
+ const storeConfig = existsSync74(storeConfigPath(app)) ? readFileSync89(storeConfigPath(app), "utf8") : "";
160109
160212
  if (!storeConfig) return [{ level: "error", message: `no apps/${app}/store/store.config.yaml \u2014 run /setup-store-signing first.` }];
160110
160213
  const findings = analyze(
160111
160214
  projectYml,
160112
160215
  storeConfig,
160113
- await appIconState(join74(appDir(app), "ios")),
160216
+ await appIconState(join75(appDir(app), "ios")),
160114
160217
  profileAccount(app, storeConfig, opts)
160115
160218
  );
160116
160219
  findings.push(...analyzeListing(metadataFilesPresent(app), listScreenshots(app)));
@@ -160139,16 +160242,16 @@ function analyzeSubmissionRecord(appLevel, review, opts) {
160139
160242
  return f2;
160140
160243
  }
160141
160244
  function appLevelMetadataFiles(app, locale = "en-US") {
160142
- const root = join74(storeDir(app), "metadata");
160245
+ const root = join75(storeDir(app), "metadata");
160143
160246
  const out2 = /* @__PURE__ */ new Set();
160144
160247
  if (existsSync74(root)) {
160145
160248
  for (const n2 of readdirSync33(root)) if (n2.endsWith(".txt")) out2.add(n2);
160146
160249
  }
160147
- if (existsSync74(join74(root, locale, "privacy_url.txt"))) out2.add("privacy_url.txt");
160250
+ if (existsSync74(join75(root, locale, "privacy_url.txt"))) out2.add("privacy_url.txt");
160148
160251
  return out2;
160149
160252
  }
160150
160253
  function reviewInfoFiles(app) {
160151
- const dir = join74(storeDir(app), "review_information");
160254
+ const dir = join75(storeDir(app), "review_information");
160152
160255
  if (!existsSync74(dir)) return /* @__PURE__ */ new Set();
160153
160256
  return new Set(readdirSync33(dir).filter((n2) => n2.endsWith(".txt")));
160154
160257
  }
@@ -160259,12 +160362,12 @@ function analyzePlayListing(assets) {
160259
160362
  return f2;
160260
160363
  }
160261
160364
  function playListingAssets(app, locale = "en-US") {
160262
- const dir = join74(storeDir(app), "play", locale, "images");
160365
+ const dir = join75(storeDir(app), "play", locale, "images");
160263
160366
  const read = (names) => {
160264
160367
  for (const name of names) {
160265
- const p2 = join74(dir, name);
160368
+ const p2 = join75(dir, name);
160266
160369
  try {
160267
- if (statSync19(p2).isFile()) return { name, bytes: readFileSync88(p2) };
160370
+ if (statSync19(p2).isFile()) return { name, bytes: readFileSync89(p2) };
160268
160371
  } catch {
160269
160372
  }
160270
160373
  }
@@ -160295,26 +160398,26 @@ function analyzeListing(metaFiles, shots) {
160295
160398
  return f2;
160296
160399
  }
160297
160400
  function metadataFilesPresent(app, locale = "en-US") {
160298
- const dir = join74(storeDir(app), "metadata", locale);
160401
+ const dir = join75(storeDir(app), "metadata", locale);
160299
160402
  if (!existsSync74(dir)) return /* @__PURE__ */ new Set();
160300
160403
  return new Set(readdirSync33(dir).filter((n2) => n2.endsWith(".txt")));
160301
160404
  }
160302
160405
  function listScreenshots(app, locale = "en-US") {
160303
160406
  const out2 = [];
160304
- const flat = join74(storeDir(app), "screenshots", locale);
160407
+ const flat = join75(storeDir(app), "screenshots", locale);
160305
160408
  if (existsSync74(flat)) {
160306
160409
  for (const png of readdirSync33(flat).filter((n2) => n2.endsWith(".png"))) {
160307
- const sz = pngSize(readFileSync88(join74(flat, png)));
160410
+ const sz = pngSize(readFileSync89(join75(flat, png)));
160308
160411
  if (sz) out2.push({ name: png, w: sz.w, h: sz.h });
160309
160412
  }
160310
160413
  }
160311
- const legacy = join74(storeDir(app), "metadata", locale, "screenshots");
160414
+ const legacy = join75(storeDir(app), "metadata", locale, "screenshots");
160312
160415
  if (existsSync74(legacy)) {
160313
160416
  for (const deviceDir of readdirSync33(legacy)) {
160314
- const d2 = join74(legacy, deviceDir);
160417
+ const d2 = join75(legacy, deviceDir);
160315
160418
  if (!statSync19(d2).isDirectory()) continue;
160316
160419
  for (const png of readdirSync33(d2).filter((n2) => n2.endsWith(".png"))) {
160317
- const sz = pngSize(readFileSync88(join74(d2, png)));
160420
+ const sz = pngSize(readFileSync89(join75(d2, png)));
160318
160421
  if (sz) out2.push({ name: `${deviceDir}/${png}`, w: sz.w, h: sz.h });
160319
160422
  }
160320
160423
  }
@@ -160322,13 +160425,13 @@ function listScreenshots(app, locale = "en-US") {
160322
160425
  return out2;
160323
160426
  }
160324
160427
  function placeholderHashes2() {
160325
- const templateIos = join74(appDir("_template"), "ios");
160428
+ const templateIos = join75(appDir("_template"), "ios");
160326
160429
  if (!existsSync74(templateIos)) return [LEGACY_PLACEHOLDER_SHA2562];
160327
160430
  for (const target of readdirSync33(templateIos)) {
160328
- const p2 = join74(templateIos, target, "Assets.xcassets", "AppIcon.appiconset", "icon_1024.png");
160431
+ const p2 = join75(templateIos, target, "Assets.xcassets", "AppIcon.appiconset", "icon_1024.png");
160329
160432
  try {
160330
160433
  if (!statSync19(p2).isFile()) continue;
160331
- return [LEGACY_PLACEHOLDER_SHA2562, createHash39("sha256").update(readFileSync88(p2)).digest("hex")];
160434
+ return [LEGACY_PLACEHOLDER_SHA2562, createHash39("sha256").update(readFileSync89(p2)).digest("hex")];
160332
160435
  } catch {
160333
160436
  }
160334
160437
  }
@@ -160361,10 +160464,10 @@ async function pixelIssues(bytes2) {
160361
160464
  async function appIconState(iosDir) {
160362
160465
  if (!existsSync74(iosDir)) return { exists: false, isPlaceholder: false, storeIssues: [] };
160363
160466
  for (const target of readdirSync33(iosDir)) {
160364
- const p2 = join74(iosDir, target, "Assets.xcassets", "AppIcon.appiconset", "icon_1024.png");
160467
+ const p2 = join75(iosDir, target, "Assets.xcassets", "AppIcon.appiconset", "icon_1024.png");
160365
160468
  try {
160366
160469
  if (!statSync19(p2).isFile()) continue;
160367
- const bytes2 = readFileSync88(p2);
160470
+ const bytes2 = readFileSync89(p2);
160368
160471
  const hash2 = createHash39("sha256").update(bytes2).digest("hex");
160369
160472
  const pixels = await pixelIssues(bytes2);
160370
160473
  return {
@@ -160431,7 +160534,7 @@ __export(asc_status_exports, {
160431
160534
  ascStatus: () => ascStatus,
160432
160535
  buildVerdict: () => buildVerdict
160433
160536
  });
160434
- import { readFileSync as readFileSync89 } from "node:fs";
160537
+ import { readFileSync as readFileSync90 } from "node:fs";
160435
160538
  function buildVerdict(builds) {
160436
160539
  if (!builds.length) {
160437
160540
  return "NO builds registered \u2014 if you uploaded recently and it's been >15 min, the binary was REJECTED IN PROCESSING (reason is email-only; run validate-binary.ts / scan-purpose-strings.ts to reproduce it).";
@@ -160445,7 +160548,7 @@ function buildVerdict(builds) {
160445
160548
  function client(creds) {
160446
160549
  const env = creds ?? requireEnv(["ASC_KEY_ID", "ASC_ISSUER_ID", "ASC_KEY_PATH"]);
160447
160550
  assertCredentialOutsideRepo("ASC_KEY_PATH", env.ASC_KEY_PATH);
160448
- const jwt = ascJwt(env.ASC_KEY_ID, env.ASC_ISSUER_ID, readFileSync89(env.ASC_KEY_PATH, "utf8"), Math.floor(Date.now() / 1e3));
160551
+ const jwt = ascJwt(env.ASC_KEY_ID, env.ASC_ISSUER_ID, readFileSync90(env.ASC_KEY_PATH, "utf8"), Math.floor(Date.now() / 1e3));
160449
160552
  return async (path2) => {
160450
160553
  const r2 = await fetch(`${ASC}${path2}`, { headers: { Authorization: `Bearer ${jwt}` } });
160451
160554
  return { status: r2.status, json: await r2.json().catch(() => ({})) };
@@ -160605,7 +160708,7 @@ __export(secrets_exports, {
160605
160708
  runRemoteSecretsCommand: () => runRemoteSecretsCommand,
160606
160709
  runSecretsCommand: () => runSecretsCommand
160607
160710
  });
160608
- import { readFileSync as readFileSync90 } from "node:fs";
160711
+ import { readFileSync as readFileSync91 } from "node:fs";
160609
160712
  function environment(value) {
160610
160713
  if (value === "preview" || value === "production") return value;
160611
160714
  throw new Error("--environment must be preview or production");
@@ -160636,7 +160739,7 @@ async function runSecretsCommand(operation, flags, io2, options = {}) {
160636
160739
  io2.log(JSON.stringify(await vault.list({ app, environment: env })));
160637
160740
  return 0;
160638
160741
  }
160639
- const value = options.readValue ? options.readValue() : readFileSync90(0, "utf8").replace(/\r?\n$/, "");
160742
+ const value = options.readValue ? options.readValue() : readFileSync91(0, "utf8").replace(/\r?\n$/, "");
160640
160743
  if (operation === "set") await vault.set({ app, environment: env, name, value });
160641
160744
  else if (operation === "rotate") await vault.rotate({ app, environment: env, name, value });
160642
160745
  else throw new Error(`unknown secrets operation ${operation}`);
@@ -160665,7 +160768,7 @@ async function runRemoteSecretsCommand(operation, flags, io2, options) {
160665
160768
  }
160666
160769
  let body;
160667
160770
  if (operation !== "list") {
160668
- const value = options.readValue ? options.readValue() : readFileSync90(0, "utf8").replace(/\r?\n$/, "");
160771
+ const value = options.readValue ? options.readValue() : readFileSync91(0, "utf8").replace(/\r?\n$/, "");
160669
160772
  body = JSON.stringify({ value });
160670
160773
  }
160671
160774
  const response = await (options.fetchImpl ?? fetch)(url, { method: operation === "list" ? "GET" : operation === "set" ? "PUT" : "POST", headers: headers2, body });
@@ -161163,15 +161266,15 @@ __export(notify_exports, {
161163
161266
  runNotify: () => runNotify,
161164
161267
  saveAdminSession: () => saveAdminSession
161165
161268
  });
161166
- import { chmodSync as chmodSync3, mkdirSync as mkdirSync35, readFileSync as readFileSync91, writeFileSync as writeFileSync31 } from "node:fs";
161269
+ import { chmodSync as chmodSync3, mkdirSync as mkdirSync35, readFileSync as readFileSync92, writeFileSync as writeFileSync31 } from "node:fs";
161167
161270
  import { homedir as homedir9 } from "node:os";
161168
- import { dirname as dirname39, join as join75 } from "node:path";
161271
+ import { dirname as dirname39, join as join76 } from "node:path";
161169
161272
  function defaultSessionsPath() {
161170
- return process.env.HIMI_ADMIN_SESSIONS_FILE ?? join75(homedir9(), ".himalaya", "admin-sessions.json");
161273
+ return process.env.HIMI_ADMIN_SESSIONS_FILE ?? join76(homedir9(), ".himalaya", "admin-sessions.json");
161171
161274
  }
161172
161275
  function loadSessionsFile(path2 = defaultSessionsPath()) {
161173
161276
  try {
161174
- return JSON.parse(readFileSync91(path2, "utf8"));
161277
+ return JSON.parse(readFileSync92(path2, "utf8"));
161175
161278
  } catch {
161176
161279
  return {};
161177
161280
  }
@@ -161548,20 +161651,20 @@ __export(base44_auth_exports, {
161548
161651
  usableBase44Auth: () => usableBase44Auth,
161549
161652
  writeBase44Session: () => writeBase44Session
161550
161653
  });
161551
- import { chmodSync as chmodSync4, existsSync as existsSync75, mkdirSync as mkdirSync36, readFileSync as readFileSync92, rmSync as rmSync19, writeFileSync as writeFileSync32 } from "node:fs";
161654
+ import { chmodSync as chmodSync4, existsSync as existsSync75, mkdirSync as mkdirSync36, readFileSync as readFileSync93, rmSync as rmSync19, writeFileSync as writeFileSync32 } from "node:fs";
161552
161655
  import { homedir as homedir10 } from "node:os";
161553
- import { dirname as dirname40, join as join76 } from "node:path";
161656
+ import { dirname as dirname40, join as join77 } from "node:path";
161554
161657
  function base44ApiBase(env = process.env) {
161555
161658
  return (env.BASE44_API_URL?.trim() || "https://app.base44.com").replace(/\/+$/, "");
161556
161659
  }
161557
161660
  function base44SessionPath(home = homedir10()) {
161558
- return join76(home, ".himi", "base44", "session.json");
161661
+ return join77(home, ".himi", "base44", "session.json");
161559
161662
  }
161560
161663
  function readBase44Session(home) {
161561
161664
  const p2 = base44SessionPath(home);
161562
161665
  if (!existsSync75(p2)) return void 0;
161563
161666
  try {
161564
- const s2 = JSON.parse(readFileSync92(p2, "utf8"));
161667
+ const s2 = JSON.parse(readFileSync93(p2, "utf8"));
161565
161668
  return typeof s2.accessToken === "string" && s2.accessToken ? s2 : void 0;
161566
161669
  } catch {
161567
161670
  return void 0;
@@ -161672,9 +161775,9 @@ async function base44DeviceLogin(opts) {
161672
161775
  throw new Error("the Base44 sign-in code expired before it was approved \u2014 run `himi base44 login` again");
161673
161776
  }
161674
161777
  function importBase44CliSession(home = homedir10(), env = process.env) {
161675
- const src = join76(home, ".base44", "auth", "auth.json");
161778
+ const src = join77(home, ".base44", "auth", "auth.json");
161676
161779
  if (!existsSync75(src)) throw new Error(`no Base44 CLI session at ${src} \u2014 run \`npx base44 login\` first, or use \`himi base44 login\``);
161677
- const a2 = JSON.parse(readFileSync92(src, "utf8"));
161780
+ const a2 = JSON.parse(readFileSync93(src, "utf8"));
161678
161781
  if (typeof a2.accessToken !== "string" || !a2.accessToken) throw new Error(`${src} holds no access token`);
161679
161782
  const session = {
161680
161783
  accessToken: a2.accessToken,
@@ -163809,7 +163912,7 @@ var init_brand_font = __esm({
163809
163912
 
163810
163913
  // src/site-analyze/write-artifacts.ts
163811
163914
  import { mkdirSync as mkdirSync37, writeFileSync as writeFileSync33 } from "node:fs";
163812
- import { join as join77 } from "node:path";
163915
+ import { join as join78 } from "node:path";
163813
163916
  function attachVeloSources(book, sources, put) {
163814
163917
  const byPath = new Map((sources ?? []).map((s2) => [s2.path, s2.text]));
163815
163918
  for (const f2 of book.velo.files) {
@@ -163964,12 +164067,12 @@ async function downloadMedia(book, fetchImpl, put) {
163964
164067
  }
163965
164068
  async function writeBusinessBook(result, opts) {
163966
164069
  const out2 = opts.outDir;
163967
- mkdirSync37(join77(out2, "evidence/pages"), { recursive: true });
163968
- mkdirSync37(join77(out2, "media/catalog"), { recursive: true });
164070
+ mkdirSync37(join78(out2, "evidence/pages"), { recursive: true });
164071
+ mkdirSync37(join78(out2, "media/catalog"), { recursive: true });
163969
164072
  const files = [];
163970
164073
  const put = (rel, body) => {
163971
- const p2 = join77(out2, rel);
163972
- mkdirSync37(join77(p2, ".."), { recursive: true });
164074
+ const p2 = join78(out2, rel);
164075
+ mkdirSync37(join78(p2, ".."), { recursive: true });
163973
164076
  writeFileSync33(p2, body);
163974
164077
  files.push(rel);
163975
164078
  };
@@ -164873,11 +164976,11 @@ var init_analyze = __esm({
164873
164976
  });
164874
164977
 
164875
164978
  // src/base44-analyze/write-artifacts.ts
164876
- import { existsSync as existsSync76, mkdirSync as mkdirSync38, readFileSync as readFileSync93, rmSync as rmSync20, writeFileSync as writeFileSync34 } from "node:fs";
164877
- import { dirname as dirname41, join as join78, resolve as resolve56, sep as sep19 } from "node:path";
164979
+ import { existsSync as existsSync76, mkdirSync as mkdirSync38, readFileSync as readFileSync94, rmSync as rmSync20, writeFileSync as writeFileSync34 } from "node:fs";
164980
+ import { dirname as dirname41, join as join79, resolve as resolve56, sep as sep19 } from "node:path";
164878
164981
  function isBookFolder(dir) {
164879
164982
  try {
164880
- return JSON.parse(readFileSync93(join78(dir, "book.json"), "utf8")).kind === "base44-app-book";
164983
+ return JSON.parse(readFileSync94(join79(dir, "book.json"), "utf8")).kind === "base44-app-book";
164881
164984
  } catch {
164882
164985
  return false;
164883
164986
  }
@@ -164964,24 +165067,24 @@ function writeBase44Book(result, outDir, opts = {}) {
164964
165067
  const md = renderBookMd(book);
164965
165068
  assertNoSecrets(json6);
164966
165069
  assertNoSecrets(md);
164967
- const owned = ["book.json", "BOOK.md", "source", "screenshots"].filter((n2) => existsSync76(join78(out2, n2)));
165070
+ const owned = ["book.json", "BOOK.md", "source", "screenshots"].filter((n2) => existsSync76(join79(out2, n2)));
164968
165071
  if (owned.length) {
164969
165072
  if (!isBookFolder(out2)) throw new Error(`refusing to write the app book into ${out2}: it already has ${owned.join(", ")} that ${owned.length === 1 ? "is" : "are"} not from an app book \u2014 pick an empty --out`);
164970
- for (const d2 of ["source", "screenshots"]) rmSync20(join78(out2, d2), { recursive: true, force: true });
165073
+ for (const d2 of ["source", "screenshots"]) rmSync20(join79(out2, d2), { recursive: true, force: true });
164971
165074
  }
164972
165075
  mkdirSync38(out2, { recursive: true });
164973
- writeFileSync34(join78(out2, "book.json"), json6);
164974
- writeFileSync34(join78(out2, "BOOK.md"), md);
165076
+ writeFileSync34(join79(out2, "book.json"), json6);
165077
+ writeFileSync34(join79(out2, "BOOK.md"), md);
164975
165078
  files.push("book.json", "BOOK.md");
164976
165079
  for (const s2 of shots) {
164977
- mkdirSync38(join78(out2, "screenshots"), { recursive: true });
164978
- writeFileSync34(join78(out2, "screenshots", s2.filename), s2.bytes);
165080
+ mkdirSync38(join79(out2, "screenshots"), { recursive: true });
165081
+ writeFileSync34(join79(out2, "screenshots", s2.filename), s2.bytes);
164979
165082
  files.push(`screenshots/${s2.filename}`);
164980
165083
  }
164981
- const sourceRoot = join78(out2, "source");
165084
+ const sourceRoot = join79(out2, "source");
164982
165085
  for (const f2 of result.sourceFiles) {
164983
165086
  if (!safeRel(f2.path)) continue;
164984
- const dest = join78(sourceRoot, ...f2.path.split("/"));
165087
+ const dest = join79(sourceRoot, ...f2.path.split("/"));
164985
165088
  if (!dest.startsWith(sourceRoot + sep19)) continue;
164986
165089
  mkdirSync38(dirname41(dest), { recursive: true });
164987
165090
  writeFileSync34(dest, f2.bytes);
@@ -168527,7 +168630,7 @@ __export(cli_exports, {
168527
168630
  import { execFile } from "node:child_process";
168528
168631
  import { mkdirSync as mkdirSync39, mkdtempSync as mkdtempSync4, rmSync as rmSync21, writeFileSync as writeFileSync35 } from "node:fs";
168529
168632
  import { tmpdir as tmpdir5 } from "node:os";
168530
- import { join as join79, resolve as resolve57 } from "node:path";
168633
+ import { join as join80, resolve as resolve57 } from "node:path";
168531
168634
  import { promisify } from "node:util";
168532
168635
  function projectDownloader(apiFetch, apiBase, token, extract = systemTar) {
168533
168636
  return async (appId2) => {
@@ -168540,11 +168643,11 @@ function projectDownloader(apiFetch, apiBase, token, extract = systemTar) {
168540
168643
  }
168541
168644
  const bytes2 = await readCapped(res, MAX_TARBALL_BYTES);
168542
168645
  if (!bytes2) throw new Error(`project download is over the ${MAX_TARBALL_BYTES}-byte cap`);
168543
- const root = mkdtempSync4(join79(tmpdir5(), "himi-base44-"));
168646
+ const root = mkdtempSync4(join80(tmpdir5(), "himi-base44-"));
168544
168647
  const cleanup = () => rmSync21(root, { recursive: true, force: true });
168545
168648
  try {
168546
- const archive = join79(root, "project.tar");
168547
- const dir = join79(root, "project");
168649
+ const archive = join80(root, "project.tar");
168650
+ const dir = join80(root, "project");
168548
168651
  writeFileSync35(archive, bytes2);
168549
168652
  mkdirSync39(dir);
168550
168653
  await extract(archive, dir);
@@ -169839,8 +169942,8 @@ var init_customer_build = __esm({
169839
169942
  });
169840
169943
 
169841
169944
  // src/site-analyze/apply.ts
169842
- import { existsSync as existsSync77, readFileSync as readFileSync94, writeFileSync as writeFileSync36, copyFileSync as copyFileSync2, mkdirSync as mkdirSync40, realpathSync as realpathSync14, statSync as statSync20 } from "node:fs";
169843
- import { dirname as dirname42, isAbsolute as isAbsolute8, join as join80, resolve as resolve58, sep as sep20 } from "node:path";
169945
+ import { existsSync as existsSync77, readFileSync as readFileSync95, writeFileSync as writeFileSync36, copyFileSync as copyFileSync2, mkdirSync as mkdirSync40, realpathSync as realpathSync14, statSync as statSync20 } from "node:fs";
169946
+ import { dirname as dirname42, isAbsolute as isAbsolute8, join as join81, resolve as resolve58, sep as sep20 } from "node:path";
169844
169947
  import { spawnSync as spawnSync4 } from "node:child_process";
169845
169948
  function unpairedRedirectNote(overlay) {
169846
169949
  if (!overlay.wix?.clientId || overlay.wix.redirectUri) return void 0;
@@ -169855,7 +169958,7 @@ function committedShellProvisioning(path2) {
169855
169958
  function findRepoRoot(cwd) {
169856
169959
  let dir = cwd;
169857
169960
  for (let i2 = 0; i2 < 8; i2++) {
169858
- if (SHELL_NAMES2.some((name) => existsSync77(join80(dir, shellAppDir(name), "package.json")))) return dir;
169961
+ if (SHELL_NAMES2.some((name) => existsSync77(join81(dir, shellAppDir(name), "package.json")))) return dir;
169859
169962
  const next = dirname42(dir);
169860
169963
  if (next === dir) break;
169861
169964
  dir = next;
@@ -169958,11 +170061,11 @@ function sameKnownSite(previous, next) {
169958
170061
  }
169959
170062
  function buildMergedContract(options) {
169960
170063
  const { appDir: appDir3, packageDir, overlay } = options;
169961
- const committedPath = join80(appDir3, "provisioning.json");
170064
+ const committedPath = join81(appDir3, "provisioning.json");
169962
170065
  if (!existsSync77(committedPath)) {
169963
170066
  throw new Error(`shell has no committed provisioning.json at ${committedPath} to build a contract from`);
169964
170067
  }
169965
- const committed = JSON.parse(readFileSync94(committedPath, "utf8"));
170068
+ const committed = JSON.parse(readFileSync95(committedPath, "utf8"));
169966
170069
  const merged = mergeCustomerOwned(committed, overlay);
169967
170070
  const overlayFontFamily = (overlay.branding ?? {}).fontFamily;
169968
170071
  const branding = merged.branding ?? {};
@@ -169974,7 +170077,7 @@ function buildMergedContract(options) {
169974
170077
  };
169975
170078
  const stage = (fromRel, toRel) => {
169976
170079
  const from = contained(packageDir, fromRel);
169977
- const to2 = contained(join80(appDir3, STAGED), toRel.slice(STAGED.length + 1));
170080
+ const to2 = contained(join81(appDir3, STAGED), toRel.slice(STAGED.length + 1));
169978
170081
  if (!from || !to2 || !existsSync77(from)) return void 0;
169979
170082
  let real;
169980
170083
  let realRoot;
@@ -169997,11 +170100,11 @@ function buildMergedContract(options) {
169997
170100
  };
169998
170101
  const icon = stage("media/icon.png", `${STAGED}/icon.png`);
169999
170102
  if (icon) branding.appIconPath = icon;
170000
- const facesPath = join80(packageDir, "media/fonts/faces.json");
170103
+ const facesPath = join81(packageDir, "media/fonts/faces.json");
170001
170104
  if (existsSync77(facesPath)) {
170002
170105
  let faces = [];
170003
170106
  try {
170004
- const parsed = JSON.parse(readFileSync94(facesPath, "utf8"));
170107
+ const parsed = JSON.parse(readFileSync95(facesPath, "utf8"));
170005
170108
  faces = Array.isArray(parsed) ? parsed : [];
170006
170109
  } catch {
170007
170110
  faces = [];
@@ -170022,9 +170125,9 @@ function buildMergedContract(options) {
170022
170125
  merged.branding = branding;
170023
170126
  const body = `${JSON.stringify(merged, null, 2)}
170024
170127
  `;
170025
- const path2 = join80(packageDir, "provisioning.contract.json");
170128
+ const path2 = join81(packageDir, "provisioning.contract.json");
170026
170129
  writeFileSync36(path2, body);
170027
- const localPath2 = join80(appDir3, LOCAL_CONTRACT_REL);
170130
+ const localPath2 = join81(appDir3, LOCAL_CONTRACT_REL);
170028
170131
  mkdirSync40(dirname42(localPath2), { recursive: true });
170029
170132
  writeFileSync36(localPath2, body);
170030
170133
  staged.push(localPath2);
@@ -170059,10 +170162,10 @@ function catalogTypography(overlay, template) {
170059
170162
  function staticFaqFor(overlay, overlayPath) {
170060
170163
  const own4 = overlay.faq;
170061
170164
  if (own4 !== void 0) return deriveStaticFaq(own4);
170062
- const bookPath = join80(dirname42(resolve58(overlayPath)), "book.json");
170165
+ const bookPath = join81(dirname42(resolve58(overlayPath)), "book.json");
170063
170166
  if (!existsSync77(bookPath)) return void 0;
170064
170167
  try {
170065
- const book = JSON.parse(readFileSync94(bookPath, "utf8"));
170168
+ const book = JSON.parse(readFileSync95(bookPath, "utf8"));
170066
170169
  const copy = book?.copy;
170067
170170
  if (!copy || typeof copy !== "object" || copy.unavailable) return void 0;
170068
170171
  const pairs = deriveStaticFaq(copy.faq);
@@ -170076,10 +170179,10 @@ function staticGalleriesFor(overlay, overlayPath) {
170076
170179
  if (overlay.galleries !== void 0) return deriveStaticGalleries(
170077
170180
  overlay.galleries.map((gallery) => ({ role: "gallery", title: gallery.title, galleryImageUrls: gallery.photos }))
170078
170181
  );
170079
- const bookPath = join80(dirname42(resolve58(overlayPath)), "book.json");
170182
+ const bookPath = join81(dirname42(resolve58(overlayPath)), "book.json");
170080
170183
  if (!existsSync77(bookPath)) return void 0;
170081
170184
  try {
170082
- const book = JSON.parse(readFileSync94(bookPath, "utf8"));
170185
+ const book = JSON.parse(readFileSync95(bookPath, "utf8"));
170083
170186
  if (!book.look || book.look.unavailable || !Array.isArray(book.look.pages)) return void 0;
170084
170187
  const galleries = deriveStaticGalleries(book.look.pages);
170085
170188
  return galleries.length || book.look.complete === true ? galleries : void 0;
@@ -170091,8 +170194,8 @@ async function applyOverlays(input) {
170091
170194
  const cwd = resolve58(input.cwd);
170092
170195
  const shell = input.shell ?? DEFAULT_BRANDABLE_SHELL;
170093
170196
  assertKnownShell(shell);
170094
- const overlay = JSON.parse(readFileSync94(input.overlayPath, "utf8"));
170095
- const tokens2 = JSON.parse(readFileSync94(input.tokensPath, "utf8"));
170197
+ const overlay = JSON.parse(readFileSync95(input.overlayPath, "utf8"));
170198
+ const tokens2 = JSON.parse(readFileSync95(input.tokensPath, "utf8"));
170096
170199
  const faq = staticFaqFor(overlay, input.overlayPath);
170097
170200
  if (faq !== void 0) overlay.faq = faq;
170098
170201
  const galleries = staticGalleriesFor(overlay, input.overlayPath);
@@ -170109,9 +170212,9 @@ async function applyOverlays(input) {
170109
170212
  `shell "${shell}" cannot bake a customer brand \u2014 it ships no prepare:customer script`
170110
170213
  );
170111
170214
  }
170112
- const appDir3 = join80(repoRoot2, shellAppDir(shell));
170113
- const committedPath = join80(appDir3, "provisioning.json");
170114
- const committedSite = existsSync77(committedPath) ? JSON.parse(readFileSync94(committedPath, "utf8")).site : void 0;
170215
+ const appDir3 = join81(repoRoot2, shellAppDir(shell));
170216
+ const committedPath = join81(appDir3, "provisioning.json");
170217
+ const committedSite = existsSync77(committedPath) ? JSON.parse(readFileSync95(committedPath, "utf8")).site : void 0;
170115
170218
  if (committedSite !== void 0 && overlay.site === void 0) {
170116
170219
  throw new Error(
170117
170220
  `shell "${shell}" is a site shell: its contract names the customer's website (a \`site\` block), and this overlay has none. Re-run \`himi site analyze --url <site> --shell ${shell}\` to derive the site's page map (edit \`site.pages\` in provisioning.overlay.json if needed), then --apply.`
@@ -170138,9 +170241,9 @@ async function applyOverlays(input) {
170138
170241
  note: `prepare:customer --contract with a merged contract (committed provisioning.json untouched)${unpairedInRepo ? ` \xB7 ${unpairedInRepo}` : ""}`
170139
170242
  };
170140
170243
  }
170141
- const pkgProv = join80(cwd, "provisioning.json");
170244
+ const pkgProv = join81(cwd, "provisioning.json");
170142
170245
  assertNotCommitted(pkgProv, input.forbiddenProvisioning);
170143
- const contentPath = join80(cwd, "himalaya.content.json");
170246
+ const contentPath = join81(cwd, "himalaya.content.json");
170144
170247
  const syncViewNames = (before, after) => {
170145
170248
  const content = readContentManifest(cwd);
170146
170249
  if (!content) return;
@@ -170153,7 +170256,7 @@ async function applyOverlays(input) {
170153
170256
  let packageFaq = faq;
170154
170257
  let packageGalleries = galleries;
170155
170258
  if (existsSync77(pkgProv)) {
170156
- const cur = JSON.parse(readFileSync94(pkgProv, "utf8"));
170259
+ const cur = JSON.parse(readFileSync95(pkgProv, "utf8"));
170157
170260
  if (galleries === void 0 && !sameKnownSite(cur, overlay)) overlay.galleries = [];
170158
170261
  const merged = deepMerge4(cur, overlay);
170159
170262
  packageFaq = merged.faq;
@@ -170169,9 +170272,9 @@ async function applyOverlays(input) {
170169
170272
  if (Array.isArray(packageGalleries) && packageGalleries.length && !overlay.installedVerticals.includes("galleries")) {
170170
170273
  overlay.installedVerticals.push("galleries");
170171
170274
  }
170172
- const pkgTokens = join80(cwd, "tokens.json");
170275
+ const pkgTokens = join81(cwd, "tokens.json");
170173
170276
  if (existsSync77(pkgTokens) && (tokens2.colors || tokens2.typography)) {
170174
- const cur = JSON.parse(readFileSync94(pkgTokens, "utf8"));
170277
+ const cur = JSON.parse(readFileSync95(pkgTokens, "utf8"));
170175
170278
  let tokensIn = tokens2;
170176
170279
  if (tokens2.typography) {
170177
170280
  const fonts = catalogTypography(tokens2.typography, cur.typography);
@@ -170196,9 +170299,9 @@ async function applyOverlays(input) {
170196
170299
  wrote.push(pkgTokens);
170197
170300
  }
170198
170301
  const homeAction = homeRefreshActionId(shell);
170199
- const homeSrc = join80(cwd, "dev/index.ts");
170302
+ const homeSrc = join81(cwd, "dev/index.ts");
170200
170303
  if (homeAction && existsSync77(homeSrc)) {
170201
- const prev = readFileSync94(homeSrc, "utf8");
170304
+ const prev = readFileSync95(homeSrc, "utf8");
170202
170305
  const patched = patchBrandParams(prev, overlay, homeAction);
170203
170306
  let next = patched.src;
170204
170307
  if (!patched.foreign && faq?.length && prev.includes('"tier5.himiBrandedFaq.load"') && !prev.includes('"staticFaq"')) {
@@ -171197,7 +171300,7 @@ __export(cli_exports2, {
171197
171300
  runSiteAnalyze: () => runSiteAnalyze,
171198
171301
  runSiteFunctionCli: () => runSiteFunctionCli
171199
171302
  });
171200
- import { existsSync as existsSync78, readFileSync as readFileSync95 } from "node:fs";
171303
+ import { existsSync as existsSync78, readFileSync as readFileSync96 } from "node:fs";
171201
171304
  import { resolve as resolve59 } from "node:path";
171202
171305
  function applyNeedsClient(shell) {
171203
171306
  if (shell === void 0 || !SHELL_NAMES2.includes(shell)) return true;
@@ -171256,7 +171359,7 @@ async function runSiteAnalyze(opts) {
171256
171359
  const prevOverlayPath = resolve59(outDir, "provisioning.overlay.json");
171257
171360
  const prevSite = existsSync78(prevOverlayPath) ? (() => {
171258
171361
  try {
171259
- return JSON.parse(readFileSync95(prevOverlayPath, "utf8")).site;
171362
+ return JSON.parse(readFileSync96(prevOverlayPath, "utf8")).site;
171260
171363
  } catch {
171261
171364
  return void 0;
171262
171365
  }
@@ -171275,7 +171378,7 @@ async function runSiteAnalyze(opts) {
171275
171378
  }
171276
171379
  const previousOverlay = resolve59(outDir, "provisioning.overlay.json");
171277
171380
  carryOverGoals(
171278
- existsSync78(previousOverlay) ? readFileSync95(previousOverlay, "utf8") : void 0,
171381
+ existsSync78(previousOverlay) ? readFileSync96(previousOverlay, "utf8") : void 0,
171279
171382
  result.provisioningOverlay
171280
171383
  );
171281
171384
  const ownerCall = ownerAuth ? ownerTransportFrom(fetchImpl, ownerAuth) : void 0;
@@ -171333,7 +171436,7 @@ async function runSiteFunctionCli(opts) {
171333
171436
  let source;
171334
171437
  if (opts.sourcePath) {
171335
171438
  const p2 = resolve59(opts.cwd ?? process.cwd(), opts.sourcePath);
171336
- source = readFileSync95(p2, "utf8");
171439
+ source = readFileSync96(p2, "utf8");
171337
171440
  }
171338
171441
  let body;
171339
171442
  if (opts.bodyRaw != null) {
@@ -171363,7 +171466,7 @@ async function runSiteFunctionCli(opts) {
171363
171466
  function base44BookRoutes(bookPath, siteUrl) {
171364
171467
  if (!existsSync78(bookPath)) return void 0;
171365
171468
  try {
171366
- const book = JSON.parse(readFileSync95(bookPath, "utf8"));
171469
+ const book = JSON.parse(readFileSync96(bookPath, "utf8"));
171367
171470
  if (book.kind !== "base44-app-book" || !Array.isArray(book.routes)) return void 0;
171368
171471
  const host = (u2) => {
171369
171472
  try {
@@ -171618,7 +171721,7 @@ __export(site_create_exports, {
171618
171721
  runSiteList: () => runSiteList,
171619
171722
  writeProvisioningBinding: () => writeProvisioningBinding
171620
171723
  });
171621
- import { existsSync as existsSync79, readFileSync as readFileSync96, writeFileSync as writeFileSync37 } from "node:fs";
171724
+ import { existsSync as existsSync79, readFileSync as readFileSync97, writeFileSync as writeFileSync37 } from "node:fs";
171622
171725
  import { resolve as resolvePath2 } from "node:path";
171623
171726
  function oauthClientName(projectName) {
171624
171727
  return `${projectName} client`;
@@ -171767,7 +171870,7 @@ async function runSiteCreate(opts) {
171767
171870
  if (!wantOauthApp) return { ...base, nextSteps: nextSteps(metaSiteId) };
171768
171871
  return { ...base, clientId, redirectUri, nextSteps: nextSteps(metaSiteId, clientId) };
171769
171872
  }
171770
- function writeProvisioningBinding(target, binding2, fs2 = { existsSync: existsSync79, readFileSync: readFileSync96, writeFileSync: writeFileSync37 }) {
171873
+ function writeProvisioningBinding(target, binding2, fs2 = { existsSync: existsSync79, readFileSync: readFileSync97, writeFileSync: writeFileSync37 }) {
171771
171874
  const msid = binding2.siteId;
171772
171875
  const path2 = resolvePath2(target);
171773
171876
  const committed = committedShellProvisioning(path2);
@@ -172443,12 +172546,12 @@ var init_context = __esm({
172443
172546
  });
172444
172547
 
172445
172548
  // src/cli.ts
172446
- import { mkdtempSync as mkdtempSync5, readFileSync as readFileSync97, mkdirSync as mkdirSync41, writeFileSync as writeFileSync38, existsSync as existsSync80, rmSync as rmSync22, readdirSync as readdirSync34, statSync as statSync21, lstatSync as lstatSync21, accessSync, constants as constants4, renameSync as renameSync12, cpSync as cpSync3 } from "node:fs";
172549
+ import { mkdtempSync as mkdtempSync5, readFileSync as readFileSync98, mkdirSync as mkdirSync41, writeFileSync as writeFileSync38, existsSync as existsSync80, rmSync as rmSync22, readdirSync as readdirSync34, statSync as statSync21, lstatSync as lstatSync21, accessSync, constants as constants4, renameSync as renameSync12, cpSync as cpSync3 } from "node:fs";
172447
172550
  import { execFile as execFile2, execFileSync as execFileSync7, spawnSync as spawnSync5, spawn as spawn7 } from "node:child_process";
172448
172551
  import { AsyncLocalStorage as AsyncLocalStorage2 } from "node:async_hooks";
172449
172552
  import { createHash as createHash41, randomUUID as randomUUID11 } from "node:crypto";
172450
172553
  import { tmpdir as tmpdir6, homedir as homedir11, hostname as hostname2 } from "node:os";
172451
- import { join as join81, resolve as resolve60, relative as relative15, basename as basename19, dirname as dirname43 } from "node:path";
172554
+ import { join as join82, resolve as resolve60, relative as relative15, basename as basename19, dirname as dirname43 } from "node:path";
172452
172555
  import { fileURLToPath as fileURLToPath27 } from "node:url";
172453
172556
 
172454
172557
  // ../serve-cli/src/client.ts
@@ -174602,8 +174705,8 @@ var str9 = (v2) => typeof v2 === "string" ? v2 : void 0;
174602
174705
  var num3 = (v2) => typeof v2 === "string" && v2 !== "" && Number.isFinite(Number(v2)) ? Number(v2) : void 0;
174603
174706
  function embeddedTemplateCatalog() {
174604
174707
  return availableTemplates().map((name) => {
174605
- const path2 = join81(templateSourceDir(name), TEMPLATE_META_FILE);
174606
- const meta = JSON.parse(readFileSync97(path2, "utf8"));
174708
+ const path2 = join82(templateSourceDir(name), TEMPLATE_META_FILE);
174709
+ const meta = JSON.parse(readFileSync98(path2, "utf8"));
174607
174710
  if (!meta || typeof meta.title !== "string" || typeof meta.description !== "string" || !Array.isArray(meta.tags)) {
174608
174711
  throw new Error(`${path2} must be { title: string, description: string, tags: string[], category?: string }`);
174609
174712
  }
@@ -175474,7 +175577,7 @@ var COMMANDS2 = [
175474
175577
  ];
175475
175578
  function cliVersion() {
175476
175579
  try {
175477
- return JSON.parse(readFileSync97(new URL("../package.json", import.meta.url), "utf8")).version ?? "unknown";
175580
+ return JSON.parse(readFileSync98(new URL("../package.json", import.meta.url), "utf8")).version ?? "unknown";
175478
175581
  } catch {
175479
175582
  return "unknown";
175480
175583
  }
@@ -175599,7 +175702,7 @@ function ageInDays(publishedAt, now = Date.now()) {
175599
175702
  }
175600
175703
  function packageVersion(path2) {
175601
175704
  try {
175602
- const version4 = JSON.parse(readFileSync97(path2, "utf8")).version;
175705
+ const version4 = JSON.parse(readFileSync98(path2, "utf8")).version;
175603
175706
  return typeof version4 === "string" && version4 ? version4 : void 0;
175604
175707
  } catch {
175605
175708
  return void 0;
@@ -175608,7 +175711,7 @@ function packageVersion(path2) {
175608
175711
  function resolvedSdkVersion(fromDir = process.cwd(), bundledManifest = new URL("./authoring-runtime/node_modules/@wix/himalaya/package.json", import.meta.url)) {
175609
175712
  let dir = resolve60(fromDir);
175610
175713
  for (; ; ) {
175611
- const version4 = packageVersion(join81(dir, "node_modules", "@wix", "himalaya", "package.json"));
175714
+ const version4 = packageVersion(join82(dir, "node_modules", "@wix", "himalaya", "package.json"));
175612
175715
  if (version4) return { version: version4, source: "local" };
175613
175716
  const parent = dirname43(dir);
175614
175717
  if (parent === dir) break;
@@ -175618,7 +175721,7 @@ function resolvedSdkVersion(fromDir = process.cwd(), bundledManifest = new URL("
175618
175721
  if (bundled) return { version: bundled, source: "bundled" };
175619
175722
  try {
175620
175723
  const root = execFileSync7("npm", ["root", "-g"], { stdio: ["ignore", "pipe", "ignore"] }).toString().trim();
175621
- const version4 = root ? packageVersion(join81(root, "@wix", "himalaya", "package.json")) : void 0;
175724
+ const version4 = root ? packageVersion(join82(root, "@wix", "himalaya", "package.json")) : void 0;
175622
175725
  return version4 ? { version: version4, source: "global" } : {};
175623
175726
  } catch {
175624
175727
  return {};
@@ -175665,11 +175768,11 @@ var UPDATE_RETRY_AFTER_FAILURE_MS = 60 * 60 * 1e3;
175665
175768
  var UPDATE_SNOOZE_MS = 24 * 60 * 60 * 1e3;
175666
175769
  var UPDATE_REEXEC_ENV = "HIMI_UPDATED_ONCE";
175667
175770
  function updateCachePath(env = process.env) {
175668
- return env.HIMI_UPDATE_CACHE_FILE ?? join81(homedir11(), ".himalaya", "update-check.json");
175771
+ return env.HIMI_UPDATE_CACHE_FILE ?? join82(homedir11(), ".himalaya", "update-check.json");
175669
175772
  }
175670
175773
  function readUpdateCache(path2) {
175671
175774
  try {
175672
- const parsed = JSON.parse(readFileSync97(path2, "utf8"));
175775
+ const parsed = JSON.parse(readFileSync98(path2, "utf8"));
175673
175776
  return parsed && typeof parsed === "object" ? parsed : {};
175674
175777
  } catch {
175675
175778
  return {};
@@ -175738,11 +175841,11 @@ function createUpdateRunner(spawn8 = spawnSync5) {
175738
175841
  },
175739
175842
  installedVersion: () => {
175740
175843
  const root = globalNodeModulesRoot();
175741
- return root ? packageVersion(join81(root, "@wix", "himalaya-cli", "package.json")) : void 0;
175844
+ return root ? packageVersion(join82(root, "@wix", "himalaya-cli", "package.json")) : void 0;
175742
175845
  },
175743
175846
  reexec: (argv) => {
175744
175847
  const root = globalNodeModulesRoot();
175745
- const entry = root ? join81(root, "@wix", "himalaya-cli", "dist", "cli.mjs") : void 0;
175848
+ const entry = root ? join82(root, "@wix", "himalaya-cli", "dist", "cli.mjs") : void 0;
175746
175849
  if (!entry || !existsSync80(entry)) return void 0;
175747
175850
  const result = spawnSync5(process.execPath, [entry, ...argv], {
175748
175851
  // inherit keeps PIPED STDIN working — commands that read stdin must survive a re-exec.
@@ -175790,7 +175893,7 @@ function staleUpdateLockFile(cachePath, now) {
175790
175893
  for (const path2 of [`${cachePath}.lock.break`, `${cachePath}.lock`]) {
175791
175894
  let content;
175792
175895
  try {
175793
- content = readFileSync97(path2, "utf8");
175896
+ content = readFileSync98(path2, "utf8");
175794
175897
  } catch {
175795
175898
  continue;
175796
175899
  }
@@ -175813,7 +175916,7 @@ function acquireUpdateLock(cachePath, now, hooks = {}) {
175813
175916
  const mine = lockStamp(now);
175814
175917
  const readLock = (path2) => {
175815
175918
  try {
175816
- return readFileSync97(path2, "utf8");
175919
+ return readFileSync98(path2, "utf8");
175817
175920
  } catch {
175818
175921
  return void 0;
175819
175922
  }
@@ -176405,7 +176508,7 @@ function executableOnPath(name, env = process.env) {
176405
176508
  const suffixes = process.platform === "win32" ? (env.PATHEXT ?? ".COM;.EXE;.BAT;.CMD").split(";").filter(Boolean) : [""];
176406
176509
  for (const dir of entries) {
176407
176510
  for (const suffix of suffixes) {
176408
- const candidate = join81(dir, `${name}${suffix}`);
176511
+ const candidate = join82(dir, `${name}${suffix}`);
176409
176512
  try {
176410
176513
  if (!statSync21(candidate).isFile()) continue;
176411
176514
  if (process.platform !== "win32") accessSync(candidate, constants4.X_OK);
@@ -176514,7 +176617,7 @@ async function nativeConfigAdvisories(app, configSource) {
176514
176617
  const { iosProjectYml: iosProjectYml2 } = await Promise.resolve().then(() => (init_paths2(), paths_exports));
176515
176618
  const { androidOptedIn: androidOptedIn3, LABEL_IOS_SPLASH: LABEL_IOS_SPLASH2 } = await Promise.resolve().then(() => (init_splash(), splash_exports));
176516
176619
  const iosYmlPath = iosProjectYml2(app);
176517
- const iosYml = existsSync80(iosYmlPath) ? readFileSync97(iosYmlPath, "utf8") : "";
176620
+ const iosYml = existsSync80(iosYmlPath) ? readFileSync98(iosYmlPath, "utf8") : "";
176518
176621
  let optedIn = iosYml.includes(LABEL_IOS_SPLASH2);
176519
176622
  if (!optedIn) {
176520
176623
  const { androidManifestPath: androidManifestPath3 } = await Promise.resolve().then(() => (init_gen_native_config(), gen_native_config_exports));
@@ -176528,7 +176631,7 @@ async function nativeConfigAdvisories(app, configSource) {
176528
176631
  }
176529
176632
  function readConfigSource(dir) {
176530
176633
  try {
176531
- return readFileSync97(join81(dir, "config.ts"), "utf8");
176634
+ return readFileSync98(join82(dir, "config.ts"), "utf8");
176532
176635
  } catch {
176533
176636
  return null;
176534
176637
  }
@@ -176582,7 +176685,7 @@ var NoBase44SlotError = class extends Error {
176582
176685
  };
176583
176686
  async function initFromRemoteTemplate(name, parentDir, template, c2, opts = {}) {
176584
176687
  const dir = resolve60(parentDir, name);
176585
- if (existsSync80(join81(dir, "himalaya.content.json"))) {
176688
+ if (existsSync80(join82(dir, "himalaya.content.json"))) {
176586
176689
  throw new Error(`content package already exists at ${dir}`);
176587
176690
  }
176588
176691
  const r2 = await c2.fetchTemplateSource(TEMPLATE_APP_PREFIX + template);
@@ -176643,7 +176746,7 @@ function restoreDestinationIssue(dest, force) {
176643
176746
  function isHimalayaMonorepoCheckout(start) {
176644
176747
  let dir = resolve60(start);
176645
176748
  for (; ; ) {
176646
- if (existsSync80(join81(dir, "tools", "himi-cli", "src", "cli.ts")) && existsSync80(join81(dir, "core", "serve", "src", "server.ts"))) return true;
176749
+ if (existsSync80(join82(dir, "tools", "himi-cli", "src", "cli.ts")) && existsSync80(join82(dir, "core", "serve", "src", "server.ts"))) return true;
176647
176750
  const parent = dirname43(dir);
176648
176751
  if (parent === dir) return false;
176649
176752
  dir = parent;
@@ -176704,7 +176807,7 @@ function materializeForPreview(appDir3, slug, displayName2) {
176704
176807
  Object.entries(files).map(([rel, body]) => [rel, rel === "himalaya.content.json" ? substituteIdentity(body, slug) : body])
176705
176808
  );
176706
176809
  const repoRoot2 = resolve60(fileURLToPath27(new URL("../../..", import.meta.url)));
176707
- const root = join81(repoRoot2, "node_modules", ".cache", "himi-template-preview");
176810
+ const root = join82(repoRoot2, "node_modules", ".cache", "himi-template-preview");
176708
176811
  const stillRunning = (pid) => {
176709
176812
  try {
176710
176813
  process.kill(pid, 0);
@@ -176718,12 +176821,12 @@ function materializeForPreview(appDir3, slug, displayName2) {
176718
176821
  if (!entry.isDirectory()) continue;
176719
176822
  const pid = Number(entry.name.startsWith(`${slug}-`) ? entry.name.slice(slug.length + 1) : NaN);
176720
176823
  if (Number.isInteger(pid) && pid > 0 && pid !== process.pid && !stillRunning(pid)) {
176721
- rmSync22(join81(root, entry.name), { recursive: true, force: true });
176824
+ rmSync22(join82(root, entry.name), { recursive: true, force: true });
176722
176825
  }
176723
176826
  }
176724
176827
  } catch {
176725
176828
  }
176726
- const dest = join81(root, `${slug}-${process.pid}`);
176829
+ const dest = join82(root, `${slug}-${process.pid}`);
176727
176830
  rmSync22(dest, { recursive: true, force: true });
176728
176831
  mkdirSync41(dest, { recursive: true });
176729
176832
  try {
@@ -176736,8 +176839,8 @@ function materializeForPreview(appDir3, slug, displayName2) {
176736
176839
  }
176737
176840
  async function appId(dir) {
176738
176841
  try {
176739
- const { readFileSync: readFileSync98 } = await import("node:fs");
176740
- const m2 = JSON.parse(readFileSync98(join81(dir, "himalaya.content.json"), "utf8"));
176842
+ const { readFileSync: readFileSync99 } = await import("node:fs");
176843
+ const m2 = JSON.parse(readFileSync99(join82(dir, "himalaya.content.json"), "utf8"));
176741
176844
  if (m2.name) return m2.name;
176742
176845
  } catch {
176743
176846
  }
@@ -176745,8 +176848,8 @@ async function appId(dir) {
176745
176848
  }
176746
176849
  async function contentVisibility(dir) {
176747
176850
  try {
176748
- const { readFileSync: readFileSync98 } = await import("node:fs");
176749
- const m2 = JSON.parse(readFileSync98(join81(dir, "himalaya.content.json"), "utf8"));
176851
+ const { readFileSync: readFileSync99 } = await import("node:fs");
176852
+ const m2 = JSON.parse(readFileSync99(join82(dir, "himalaya.content.json"), "utf8"));
176750
176853
  if (m2.visibility === "public" || m2.visibility === "unlisted") return m2.visibility;
176751
176854
  } catch {
176752
176855
  }
@@ -177035,7 +177138,7 @@ Seed your coding agent with \`himi agent-init\`. Guides: ${idx.portalUrl}`);
177035
177138
  ...res.removed.length ? { removed: res.removed, note: "older copies at the app root, moved to .himi/legacy-agent-files/ (a backup, in case one became app code) \u2014 the current ones live in .agents/skills/himalaya/" } : {},
177036
177139
  // In a git repo the refresh moves the diff identity an earlier `himi test` attested (that
177037
177140
  // hash is shared with the repo gates and deliberately exempts nothing but its own metadata).
177038
- ...existsSync80(join81(dir, ".himi", "attestations", "latest.json")) ? { next: "if `himi push` then refuses the attestation as stale, re-run `himi test` \u2014 in a git checkout this refresh changed the tree it covered" } : {},
177141
+ ...existsSync80(join82(dir, ".himi", "attestations", "latest.json")) ? { next: "if `himi push` then refuses the attestation as stale, re-run `himi test` \u2014 in a git checkout this refresh changed the tree it covered" } : {},
177039
177142
  ...res.skipped.length ? { skipped: res.skipped } : {},
177040
177143
  portalUrl: idx.portalUrl
177041
177144
  });
@@ -177058,7 +177161,7 @@ async function recordedReleaseForContentQuietly(dir, resolution, onDrift) {
177058
177161
  try {
177059
177162
  const { buildContentForValidation: buildContentForValidation2, buildReleaseFromContent: buildReleaseFromContent2, bundleOutDir: bundleOutDir2 } = await loadAuthoring();
177060
177163
  const bres = await buildContentForValidation2(dir, { resolution });
177061
- out2 = mkdtempSync5(join81(tmpdir6(), "himi-ux-record-"));
177164
+ out2 = mkdtempSync5(join82(tmpdir6(), "himi-ux-record-"));
177062
177165
  const hasWorkers = bres.built.length > 0 || bres.compileErrors.length > 0;
177063
177166
  const outcome = await buildReleaseFromContent2(dir, out2, { ...hasWorkers ? { tier5Dir: bundleOutDir2(dir) } : {}, collect: { lint: true } });
177064
177167
  const releaseId = outcome.manifest.releaseId;
@@ -177237,7 +177340,7 @@ async function producedWidgetFamilies(dir) {
177237
177340
  let js2;
177238
177341
  for (const candidate of [`${name}.bundle.js`, `${name}.js`, name]) {
177239
177342
  try {
177240
- js2 = readFileSync97(join81(outDir, candidate), "utf8");
177343
+ js2 = readFileSync98(join82(outDir, candidate), "utf8");
177241
177344
  break;
177242
177345
  } catch {
177243
177346
  }
@@ -177268,7 +177371,7 @@ async function producedWidgetFamilies(dir) {
177268
177371
  }
177269
177372
  return { families, source: "dist/bundles" };
177270
177373
  }
177271
- var boardOpen = (dir) => existsSync80(join81(dir, ".himi", "studio", "index.html"));
177374
+ var boardOpen = (dir) => existsSync80(join82(dir, ".himi", "studio", "index.html"));
177272
177375
  var BOARD_REFRESHERS = /* @__PURE__ */ new Set(["render", "test", "validate", "build", "push", "icon", "site", "ux", "progress"]);
177273
177376
  async function leaveForBoard(dir, record2, value) {
177274
177377
  if (!boardOpen(dir)) return;
@@ -177292,7 +177395,7 @@ async function liveMapFor(dir) {
177292
177395
  }
177293
177396
  var commandScratch = new AsyncLocalStorage2();
177294
177397
  function commandScratchDir(prefix) {
177295
- const dir = mkdtempSync5(join81(tmpdir6(), prefix));
177398
+ const dir = mkdtempSync5(join82(tmpdir6(), prefix));
177296
177399
  commandScratch.getStore()?.push(dir);
177297
177400
  return dir;
177298
177401
  }
@@ -177646,7 +177749,7 @@ himi v${cliVersion()} \u2014 run \`himi --version\`. If authoring commands fail
177646
177749
  const owed = openApprovals2(readApprovals2(dir).events).length;
177647
177750
  next.push(`carried the planning journal into the app (${carried.join(", ")}${owed ? `; ${owed} approval${owed === 1 ? "" : "s"} still owed` : ""}) \u2014 \`himi progress --brief\` there shows it`);
177648
177751
  }
177649
- const planInParent = ["SPEC.md", "MOBILE-UX.md"].filter((f2) => existsSync80(join81(parentDir, f2)));
177752
+ const planInParent = ["SPEC.md", "MOBILE-UX.md"].filter((f2) => existsSync80(join82(parentDir, f2)));
177650
177753
  if (planInParent.length) {
177651
177754
  next.push(`${planInParent.join(" and ")} in ${parentDir} ${planInParent.length > 1 ? "are" : "is"} not the app's \u2014 if that is the approved plan, move it over the template's boilerplate in ${dir}`);
177652
177755
  }
@@ -177807,13 +177910,13 @@ ${doNow.map((l2) => ` ${l2}`).join("\n")}`);
177807
177910
  if (adding) {
177808
177911
  const from = str9(flags.from);
177809
177912
  if (!from) throw new TrimRefusal2('--add <id> needs --from <file> holding the whole new SCREENS entry (` "<id>": { "screenId": "<id>", \u2026 },`)');
177810
- print(adopt.addScreen(dir, adding, readFileSync97(from, "utf8"), { parent: str9(flags.parent), tab: str9(flags.tab), displayName: str9(flags["display-name"]) }));
177913
+ print(adopt.addScreen(dir, adding, readFileSync98(from, "utf8"), { parent: str9(flags.parent), tab: str9(flags.tab), displayName: str9(flags["display-name"]) }));
177811
177914
  return 0;
177812
177915
  }
177813
177916
  if (target) {
177814
177917
  const from = str9(flags.from);
177815
177918
  if (!from) throw new TrimRefusal2("--write <id> needs --from <file> holding the whole entry, as --show prints it");
177816
- print(adopt.replaceScreen(dir, target, readFileSync97(from, "utf8")));
177919
+ print(adopt.replaceScreen(dir, target, readFileSync98(from, "utf8")));
177817
177920
  return 0;
177818
177921
  }
177819
177922
  if (show) {
@@ -177895,7 +177998,7 @@ ${doNow.map((l2) => ` ${l2}`).join("\n")}`);
177895
177998
  const { keepFromSpec: keepFromSpec2 } = await Promise.resolve().then(() => (init_template_adopt(), template_adopt_exports));
177896
177999
  const dir = contentDir(flags);
177897
178000
  try {
177898
- const spec = keepFromSpec2(dir, str9(flags["from-spec"]) ?? join81(dir, "SPEC.md"));
178001
+ const spec = keepFromSpec2(dir, str9(flags["from-spec"]) ?? join82(dir, "SPEC.md"));
177899
178002
  const own4 = typeof keep === "string" ? keep.split(",").map((k2) => k2.trim()).filter(Boolean) : [];
177900
178003
  keep = [.../* @__PURE__ */ new Set([...spec.keep, ...own4])].join(",");
177901
178004
  fromSpec = { fromSpec: {
@@ -177936,7 +178039,7 @@ ${doNow.map((l2) => ` ${l2}`).join("\n")}`);
177936
178039
  const result = { ...outcome.result, ...fromSpec };
177937
178040
  const adoptDir = contentDir(flags);
177938
178041
  const kept = flags["dry-run"] !== true && (outcome.code === 0 || outcome.result.forcedKeep === true);
177939
- if (kept && existsSync80(join81(adoptDir, adoptBits.ADOPT_FILE))) {
178042
+ if (kept && existsSync80(join82(adoptDir, adoptBits.ADOPT_FILE))) {
177940
178043
  try {
177941
178044
  const inv = adoptBits.inspectApp(adoptDir);
177942
178045
  adoptBits.writeInventory(adoptDir, inv, { companions: "if-missing" });
@@ -177965,7 +178068,7 @@ ${doNow.map((l2) => ` ${l2}`).join("\n")}`);
177965
178068
  const sourceDir = resolve60(str9(flags["source-dir"]) ?? appDir3);
177966
178069
  let meta;
177967
178070
  try {
177968
- meta = JSON.parse(readFileSync97(join81(sourceDir, TEMPLATE_META_FILE), "utf8"));
178071
+ meta = JSON.parse(readFileSync98(join82(sourceDir, TEMPLATE_META_FILE), "utf8"));
177969
178072
  } catch {
177970
178073
  io2.error(JSON.stringify({ error: `no ${TEMPLATE_META_FILE} in ${sourceDir} \u2014 a template must declare { title, description, tags } to be published`, hint: `add ${TEMPLATE_META_FILE} next to himalaya.content.json (or pass --source-dir <dir>)` }));
177971
178074
  return 2;
@@ -177975,7 +178078,7 @@ ${doNow.map((l2) => ` ${l2}`).join("\n")}`);
177975
178078
  return 2;
177976
178079
  }
177977
178080
  try {
177978
- const appearance = extractTemplateAppearance(JSON.parse(readFileSync97(join81(sourceDir, "tokens.json"), "utf8")));
178081
+ const appearance = extractTemplateAppearance(JSON.parse(readFileSync98(join82(sourceDir, "tokens.json"), "utf8")));
177979
178082
  meta = { ...appearance, ...meta };
177980
178083
  } catch {
177981
178084
  }
@@ -177997,7 +178100,7 @@ ${doNow.map((l2) => ` ${l2}`).join("\n")}`);
177997
178100
  const force = flags.force === true;
177998
178101
  const { buildContentForValidation: buildContentForValidation2, buildReleaseFromContent: buildReleaseFromContent2, bundleOutDir: bundleOutDir2 } = await loadAuthoring();
177999
178102
  const bres = await buildContentForValidation2(buildDir, { resolution: resolutionFlag(flags) });
178000
- const out2 = mkdtempSync5(join81(tmpdir6(), "himi-template-"));
178103
+ const out2 = mkdtempSync5(join82(tmpdir6(), "himi-template-"));
178001
178104
  publishScratch.push(out2);
178002
178105
  const hasWorkers = bres.built.length > 0 || bres.compileErrors.length > 0;
178003
178106
  const outcome = await buildReleaseFromContent2(buildDir, out2, {
@@ -178054,7 +178157,7 @@ ${doNow.map((l2) => ` ${l2}`).join("\n")}`);
178054
178157
  let iconHash;
178055
178158
  if (iconPath) {
178056
178159
  try {
178057
- const bytes2 = readFileSync97(iconPath);
178160
+ const bytes2 = readFileSync98(iconPath);
178058
178161
  payload.icon = bytes2.toString("base64");
178059
178162
  iconHash = createHash41("sha256").update(bytes2).digest("hex");
178060
178163
  } catch {
@@ -178353,7 +178456,7 @@ ${doNow.map((l2) => ` ${l2}`).join("\n")}`);
178353
178456
  const path2 = dpxSessionTokenPath();
178354
178457
  let raw;
178355
178458
  try {
178356
- raw = readFileSync97(path2, "utf8");
178459
+ raw = readFileSync98(path2, "utf8");
178357
178460
  } catch {
178358
178461
  throw new Error(`no DPX BO session at ${path2}; run dpx auth login, write dpx auth token to that path, then himi login --dpx --target bo`);
178359
178462
  }
@@ -178487,8 +178590,8 @@ ${doNow.map((l2) => ` ${l2}`).join("\n")}`);
178487
178590
  const dir = resolve60(out2);
178488
178591
  const files = himiPluginFiles2(skills.skillMd);
178489
178592
  for (const f2 of files) {
178490
- mkdirSync41(dirname43(join81(dir, f2.path)), { recursive: true });
178491
- writeFileSync38(join81(dir, f2.path), f2.text);
178593
+ mkdirSync41(dirname43(join82(dir, f2.path)), { recursive: true });
178594
+ writeFileSync38(join82(dir, f2.path), f2.text);
178492
178595
  }
178493
178596
  print({ ok: true, dir, files: files.map((f2) => f2.path), next: [`claude plugin validate ${dir}`, `claude --plugin-dir ${dir}`] });
178494
178597
  return 0;
@@ -178505,13 +178608,13 @@ ${doNow.map((l2) => ` ${l2}`).join("\n")}`);
178505
178608
  case "studio": {
178506
178609
  const { openStudio: openStudio2 } = await Promise.resolve().then(() => (init_studio(), studio_exports));
178507
178610
  const dir = contentDir(flags);
178508
- if (!existsSync80(join81(dir, "himalaya.content.json"))) {
178611
+ if (!existsSync80(join82(dir, "himalaya.content.json"))) {
178509
178612
  io2.error(JSON.stringify({ ok: false, error: "not_a_content_package", dir, hint: "run from the app directory (or pass --content <dir>) \u2014 the board reads that package's .himi/" }));
178510
178613
  return 2;
178511
178614
  }
178512
178615
  if (pos[1] === "reel") {
178513
178616
  const { buildReel: buildReel2 } = await Promise.resolve().then(() => (init_studio_reel(), studio_reel_exports));
178514
- const out2 = resolve60(str9(flags.out) ?? join81(dir, ".himi", "making-of.html"));
178617
+ const out2 = resolve60(str9(flags.out) ?? join82(dir, ".himi", "making-of.html"));
178515
178618
  const { html, plan } = buildReel2(dir);
178516
178619
  mkdirSync41(dirname43(out2), { recursive: true });
178517
178620
  writeFileSync38(out2, html);
@@ -178583,7 +178686,7 @@ ${handover.hint[0].toUpperCase()}${handover.hint.slice(1)}.`);
178583
178686
  } = await Promise.resolve().then(() => (init_progress(), progress_exports));
178584
178687
  const dir = contentDir(flags);
178585
178688
  const journal2 = journalPath2(dir);
178586
- const isContentPackage = existsSync80(join81(dir, "himalaya.content.json"));
178689
+ const isContentPackage = existsSync80(join82(dir, "himalaya.content.json"));
178587
178690
  const hint = isContentPackage ? {} : { hint: "no himalaya.content.json here \u2014 run from the app directory (or pass --content <dir>) so the build board finds this journal" };
178588
178691
  const message = pos.slice(1).join(" ").trim();
178589
178692
  const approvalFlags = ["approve", "done", "drop"].filter((f2) => flags[f2] !== void 0);
@@ -178735,7 +178838,7 @@ ${handover.hint[0].toUpperCase()}${handover.hint.slice(1)}.`);
178735
178838
  case "test": {
178736
178839
  const dir = contentDir(flags);
178737
178840
  const structuredOutput = flags.json === true || io2.isTTY !== true;
178738
- if (existsSync80(join81(dir, "functions"))) {
178841
+ if (existsSync80(join82(dir, "functions"))) {
178739
178842
  const { invokeLocalFunction: invokeLocalFunction2, loadFunctionsApp: loadFunctionsApp2 } = await Promise.resolve().then(() => (init_functions(), functions_exports));
178740
178843
  const loaded = await loadFunctionsApp2(dir);
178741
178844
  const results = [];
@@ -178867,7 +178970,7 @@ ${handover.hint[0].toUpperCase()}${handover.hint.slice(1)}.`);
178867
178970
  io2.error(JSON.stringify({ error: `screen "${screen.screenId}" has no Tier-5 worker, so there is nothing for the browser loop to build` }));
178868
178971
  return 2;
178869
178972
  }
178870
- const sources = collectWorkerSources2(join81(dir, "tier5-src"), screen.bundleName);
178973
+ const sources = collectWorkerSources2(join82(dir, "tier5-src"), screen.bundleName);
178871
178974
  if (!sources) {
178872
178975
  io2.error(JSON.stringify({ error: `no worker source found at tier5-src/${screen.bundleName} \u2014 the browser loop compiles SOURCE, not the built bundle` }));
178873
178976
  return 2;
@@ -179045,7 +179148,7 @@ ${handover.hint[0].toUpperCase()}${handover.hint.slice(1)}.`);
179045
179148
  const sp = await runShotsPass2({
179046
179149
  descriptors: scopeDescriptors2(outcome.descriptors ?? [], pos.slice(1), invalidScreens),
179047
179150
  tokens: outcome.tokens,
179048
- outDir: join81(dir, ".himi", "shots"),
179151
+ outDir: join82(dir, ".himi", "shots"),
179049
179152
  width: 390,
179050
179153
  layers: { rules: shotRules, ...cmsSeed ? { cmsSeed } : {}, ...canned ? { canned: canned.byKey } : {} },
179051
179154
  ...budgetMs ? { budgetMs } : {},
@@ -179085,7 +179188,7 @@ ${handover.hint[0].toUpperCase()}${handover.hint.slice(1)}.`);
179085
179188
  releaseId: result.releaseId,
179086
179189
  releasePayload: release2,
179087
179190
  descriptors: attestedDescriptors,
179088
- screenshots: Object.fromEntries(writtenShots.filter((name) => crawledScreens.has(name.replace(/\.png$/, ""))).map((name) => [name.replace(/\.png$/, ""), join81(dir, ".himi", "shots", name)])),
179191
+ screenshots: Object.fromEntries(writtenShots.filter((name) => crawledScreens.has(name.replace(/\.png$/, ""))).map((name) => [name.replace(/\.png$/, ""), join82(dir, ".himi", "shots", name)])),
179089
179192
  coverage: {
179090
179193
  screens: crawledScreens.size,
179091
179194
  actionsDispatched: result.actions.exercised,
@@ -179210,7 +179313,7 @@ ${[...afterRun.next, ...testReminder ? [testReminder] : []].join("\n")}`);
179210
179313
  return 2;
179211
179314
  }
179212
179315
  try {
179213
- const raw = stateArg.trim().startsWith("{") ? stateArg : readFileSync97(stateArg.replace(/^@/, ""), "utf8");
179316
+ const raw = stateArg.trim().startsWith("{") ? stateArg : readFileSync98(stateArg.replace(/^@/, ""), "utf8");
179214
179317
  injectedState = JSON.parse(raw);
179215
179318
  } catch (e2) {
179216
179319
  io2.error(JSON.stringify({ error: `--state must be inline JSON or a path to a .json file \u2014 ${e2.message}` }));
@@ -179225,7 +179328,7 @@ ${[...afterRun.next, ...testReminder ? [testReminder] : []].join("\n")}`);
179225
179328
  return 2;
179226
179329
  }
179227
179330
  try {
179228
- const raw = inputArg.trim().startsWith("{") ? inputArg : readFileSync97(inputArg.replace(/^@/, ""), "utf8");
179331
+ const raw = inputArg.trim().startsWith("{") ? inputArg : readFileSync98(inputArg.replace(/^@/, ""), "utf8");
179229
179332
  const parsed = JSON.parse(raw);
179230
179333
  if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) throw new Error("must be a JSON object");
179231
179334
  injectedInput = parsed;
@@ -179307,7 +179410,7 @@ ${[...afterRun.next, ...testReminder ? [testReminder] : []].join("\n")}`);
179307
179410
  const diagnostics = (outcome.lint ?? []).find((s2) => s2.screenId === screenId)?.issues ?? [];
179308
179411
  let pngFile;
179309
179412
  let attestationPngFile;
179310
- const shotPath = join81(dir, ".himi", "shots", `${screenId}.png`);
179413
+ const shotPath = join82(dir, ".himi", "shots", `${screenId}.png`);
179311
179414
  const pngTarget = typeof flags.png === "string" ? str9(flags.png) : flags.png === true ? shotPath : void 0;
179312
179415
  if (pngTarget && r2.pngBase64) {
179313
179416
  pngFile = writePngFile(pngTarget, r2.pngBase64);
@@ -179679,7 +179782,7 @@ default (no --glyph): ${DEFAULT_GLYPH2} \u2014 a mark that claims nothing, so th
179679
179782
  io2.error(JSON.stringify({ error: `${dest} already exists and is not empty`, hint: "pass --force to write into it anyway (merging, and naming what it keeps), --replace to restore exactly what was archived, or --out/--name to land somewhere else" }));
179680
179783
  return 1;
179681
179784
  }
179682
- if (replace && occupied && !existsSync80(join81(dest, "himalaya.content.json"))) {
179785
+ if (replace && occupied && !existsSync80(join82(dest, "himalaya.content.json"))) {
179683
179786
  io2.error(JSON.stringify({
179684
179787
  error: `${dest} is not a content package \u2014 refusing to --replace it`,
179685
179788
  hint: "--replace only clears a directory that holds himalaya.content.json. Check --out/--name, or pass --force to merge into it instead."
@@ -180387,7 +180490,7 @@ default (no --glyph): ${DEFAULT_GLYPH2} \u2014 a mark that claims nothing, so th
180387
180490
  }
180388
180491
  const { buildContentForValidation: buildContentForValidation2, buildReleaseFromContent: buildReleaseFromContent2, bundleOutDir: bundleOutDir2 } = await loadAuthoring();
180389
180492
  const bres = await buildContentForValidation2(dir, { resolution: resolutionFlag(flags) });
180390
- const built = mkdtempSync5(join81(tmpdir6(), "himi-pack-"));
180493
+ const built = mkdtempSync5(join82(tmpdir6(), "himi-pack-"));
180391
180494
  const hasWorkers = bres.built.length > 0 || bres.compileErrors.length > 0;
180392
180495
  const outcome = await buildReleaseFromContent2(dir, built, {
180393
180496
  ...hasWorkers ? { tier5Dir: bundleOutDir2(dir) } : {},
@@ -180594,7 +180697,7 @@ default (no --glyph): ${DEFAULT_GLYPH2} \u2014 a mark that claims nothing, so th
180594
180697
  }));
180595
180698
  return 1;
180596
180699
  }
180597
- const archive = readFileSync97(resolve60(file2));
180700
+ const archive = readFileSync98(resolve60(file2));
180598
180701
  const result = await client2().createPackageShare({
180599
180702
  app: opened.header.app,
180600
180703
  releaseId: opened.header.releaseId,
@@ -180691,11 +180794,11 @@ default (no --glyph): ${DEFAULT_GLYPH2} \u2014 a mark that claims nothing, so th
180691
180794
  const app = await appId(dir2);
180692
180795
  const { buildContentBundles: buildContentBundles2, buildReleaseFromContent: buildReleaseFromContent2, bundleOutDir: bundleOutDir2 } = await loadAuthoring();
180693
180796
  const bres = await buildContentBundles2(dir2, { resolution: resolutionFlag(flags) });
180694
- temp = mkdtempSync5(join81(tmpdir6(), "himi-run-build-"));
180797
+ temp = mkdtempSync5(join82(tmpdir6(), "himi-run-build-"));
180695
180798
  const hasWorkers = bres.built.length > 0 || bres.compileErrors.length > 0;
180696
180799
  const initial = await buildReleaseFromContent2(dir2, temp, { ...hasWorkers ? { tier5Dir: bundleOutDir2(dir2) } : {} });
180697
180800
  servedMissing = initial.missingBundles;
180698
- source = join81(temp, app);
180801
+ source = join82(temp, app);
180699
180802
  }
180700
180803
  const chromeArg = str9(flags.chrome) ?? "preview";
180701
180804
  if (chromeArg !== "preview" && chromeArg !== "app") {
@@ -180734,7 +180837,7 @@ default (no --glyph): ${DEFAULT_GLYPH2} \u2014 a mark that claims nothing, so th
180734
180837
  if (!recordKit) return;
180735
180838
  startedAt = (/* @__PURE__ */ new Date()).toISOString();
180736
180839
  const failure = record2(served2, { ok: true, at: startedAt });
180737
- if (!recorded) io2.error(JSON.stringify({ run: "run_record_skipped", message: `${failure ?? `${join81(dir, ".himi")} is not a real directory`}, so the build board will not frame this preview.` }));
180840
+ if (!recorded) io2.error(JSON.stringify({ run: "run_record_skipped", message: `${failure ?? `${join82(dir, ".himi")} is not a real directory`}, so the build board will not frame this preview.` }));
180738
180841
  await refreshBoard();
180739
180842
  };
180740
180843
  const retract = async () => {
@@ -180770,7 +180873,7 @@ default (no --glyph): ${DEFAULT_GLYPH2} \u2014 a mark that claims nothing, so th
180770
180873
  const watchKit = watch2 ? await Promise.resolve().then(() => (init_run_watch(), run_watch_exports)) : null;
180771
180874
  const hhpPreviewRoute = watch2 ? (await Promise.resolve().then(() => (init_hhp_preview(), hhp_preview_exports))).hhpPreviewResponse : null;
180772
180875
  const bus = watchKit ? new watchKit.ReloadBus() : void 0;
180773
- if (watch2) served = mkdtempSync5(join81(tmpdir6(), "himi-run-served-"));
180876
+ if (watch2) served = mkdtempSync5(join82(tmpdir6(), "himi-run-served-"));
180774
180877
  const running = await runPackage2(source, {
180775
180878
  port,
180776
180879
  chrome: chromeArg,
@@ -180799,8 +180902,8 @@ default (no --glyph): ${DEFAULT_GLYPH2} \u2014 a mark that claims nothing, so th
180799
180902
  await announce(running);
180800
180903
  if (watchKit && bus) {
180801
180904
  const { buildContentBundles: buildContentBundles2, buildReleaseFromContent: buildReleaseFromContent2, bundleOutDir: bundleOutDir2 } = await loadAuthoring();
180802
- const live3 = join81(running.releaseRoot, running.app);
180803
- const manifestOf = (tree) => JSON.parse(readFileSync97(join81(tree, "release-manifest.json"), "utf8"));
180905
+ const live3 = join82(running.releaseRoot, running.app);
180906
+ const manifestOf = (tree) => JSON.parse(readFileSync98(join82(tree, "release-manifest.json"), "utf8"));
180804
180907
  let current = manifestOf(live3);
180805
180908
  const failed3 = async (message) => {
180806
180909
  if (stopping) return;
@@ -180811,7 +180914,7 @@ default (no --glyph): ${DEFAULT_GLYPH2} \u2014 a mark that claims nothing, so th
180811
180914
  };
180812
180915
  rebuild = watchKit.serialize(async () => {
180813
180916
  const t0 = Date.now();
180814
- const next = mkdtempSync5(join81(tmpdir6(), "himi-run-build-"));
180917
+ const next = mkdtempSync5(join82(tmpdir6(), "himi-run-build-"));
180815
180918
  try {
180816
180919
  const bres = await buildContentBundles2(dir, { resolution: resolutionFlag(flags) });
180817
180920
  if (bres.compileErrors.length) {
@@ -180828,16 +180931,16 @@ default (no --glyph): ${DEFAULT_GLYPH2} \u2014 a mark that claims nothing, so th
180828
180931
  return;
180829
180932
  }
180830
180933
  if (stopping) return;
180831
- const fresh = manifestOf(join81(next, running.app));
180934
+ const fresh = manifestOf(join82(next, running.app));
180832
180935
  const diff = watchKit.diffReleases(current, fresh);
180833
180936
  const { describeChanges: describeChanges2, headline: headline2 } = await Promise.resolve().then(() => (init_build_changes(), build_changes_exports));
180834
- const changes = describeChanges2(live3, join81(next, running.app), diff);
180937
+ const changes = describeChanges2(live3, join82(next, running.app), diff);
180835
180938
  const retired = `${live3}.retired-${Date.now()}`;
180836
180939
  renameSync12(live3, retired);
180837
180940
  try {
180838
- renameSync12(join81(next, running.app), live3);
180941
+ renameSync12(join82(next, running.app), live3);
180839
180942
  } catch {
180840
- cpSync3(join81(next, running.app), live3, { recursive: true });
180943
+ cpSync3(join82(next, running.app), live3, { recursive: true });
180841
180944
  }
180842
180945
  rmSync22(retired, { recursive: true, force: true });
180843
180946
  current = fresh;
@@ -181520,7 +181623,7 @@ default (no --glyph): ${DEFAULT_GLYPH2} \u2014 a mark that claims nothing, so th
181520
181623
  lintNote: "`himi patch` sends a raw file. Nothing here built or linted your app \u2014 `himi push --only <selector>` is the same edit with the full lint gate in front of it."
181521
181624
  };
181522
181625
  if (kind === "tokens" || kind === "app-config") {
181523
- const body = readFileSync97(file2, "utf8");
181626
+ const body = readFileSync98(file2, "utf8");
181524
181627
  const patch2 = kind === "tokens" ? { tokens: body } : { appConfig: body };
181525
181628
  return runReleasePatch({
181526
181629
  ...common,
@@ -181535,7 +181638,7 @@ default (no --glyph): ${DEFAULT_GLYPH2} \u2014 a mark that claims nothing, so th
181535
181638
  io2.error(JSON.stringify({ error: "patch screen needs a <screenId>", usage: PATCH_USAGE }));
181536
181639
  return 2;
181537
181640
  }
181538
- const descriptor = readFileSync97(file2, "utf8");
181641
+ const descriptor = readFileSync98(file2, "utf8");
181539
181642
  try {
181540
181643
  JSON.parse(descriptor);
181541
181644
  } catch (e2) {
@@ -181575,7 +181678,7 @@ default (no --glyph): ${DEFAULT_GLYPH2} \u2014 a mark that claims nothing, so th
181575
181678
  extra: { kind, screen: id, file: { path: file2, bytes: Buffer.byteLength(descriptor, "utf8") } }
181576
181679
  });
181577
181680
  }
181578
- const bytes2 = readFileSync97(file2);
181681
+ const bytes2 = readFileSync98(file2);
181579
181682
  const sha2 = createHash41("sha256").update(bytes2).digest("hex");
181580
181683
  const forScreens = (str9(flags["for-screen"]) ?? "").split(",").map((s2) => s2.trim()).filter(Boolean);
181581
181684
  if (flags["no-rebind"] !== void 0 && flags["no-rebind"] !== true) {
@@ -181719,7 +181822,7 @@ default (no --glyph): ${DEFAULT_GLYPH2} \u2014 a mark that claims nothing, so th
181719
181822
  }
181720
181823
  let def;
181721
181824
  try {
181722
- const parsed = JSON.parse(arg.startsWith("@") ? readFileSync97(arg.slice(1), "utf8") : arg);
181825
+ const parsed = JSON.parse(arg.startsWith("@") ? readFileSync98(arg.slice(1), "utf8") : arg);
181723
181826
  if (parsed === null || typeof parsed !== "object" || Array.isArray(parsed)) {
181724
181827
  io2.error(JSON.stringify({ error: "invalid_definition", problems: [`--definition must be a JSON object, got ${Array.isArray(parsed) ? "an array" : parsed === null ? "null" : typeof parsed}`] }));
181725
181828
  return 2;
@@ -182001,7 +182104,7 @@ default (no --glyph): ${DEFAULT_GLYPH2} \u2014 a mark that claims nothing, so th
182001
182104
  const rememberLastDist = async (jobs2) => {
182002
182105
  try {
182003
182106
  const dir = contentDir(flags);
182004
- if (!existsSync80(join81(dir, "himalaya.content.json"))) return;
182107
+ if (!existsSync80(join82(dir, "himalaya.content.json"))) return;
182005
182108
  const { lastDistFromJob: lastDistFromJob2, writeLastDist: writeLastDist2 } = await Promise.resolve().then(() => (init_capabilities(), capabilities_exports));
182006
182109
  const own4 = await appId(dir);
182007
182110
  for (const job of jobs2) {
@@ -182239,7 +182342,7 @@ ${label2}`);
182239
182342
  const platform = str9(flags.platform)?.split(",").map((p2) => p2.trim()).filter(Boolean);
182240
182343
  {
182241
182344
  const distDir = contentDir(flags);
182242
- if (existsSync80(join81(distDir, "himalaya.content.json"))) {
182345
+ if (existsSync80(join82(distDir, "himalaya.content.json"))) {
182243
182346
  const issues = await iconIssues(distDir, flags.strict === true, { requireDeclared: true, requireVerified: true });
182244
182347
  const errors = issues.filter((i2) => i2.severity === "error");
182245
182348
  for (const i2 of issues.filter((i3) => i3.severity === "warning")) {
@@ -182578,7 +182681,7 @@ ${label2}`);
182578
182681
  const dpxPath = dpxSessionTokenPath();
182579
182682
  let dpx;
182580
182683
  try {
182581
- dpx = readFileSync97(dpxPath, "utf8").trim();
182684
+ dpx = readFileSync98(dpxPath, "utf8").trim();
182582
182685
  } catch {
182583
182686
  io2.error(JSON.stringify({ error: `no dpx session at ${dpxPath} \u2014 run \`dpx auth login\` then \`dpx auth token > ${dpxPath}\` (dpx 2.x keeps its own state in ~/.dpx/auth.json and does NOT write the legacy session file), or omit --dpx` }));
182584
182687
  return 1;
@@ -182999,7 +183102,7 @@ ${report3.ok ? "OK \u2014 data + serve plane reachable." : typeof report3.hint =
182999
183102
  const path2 = dpxSessionTokenPath();
183000
183103
  let raw;
183001
183104
  try {
183002
- raw = readFileSync97(path2, "utf8");
183105
+ raw = readFileSync98(path2, "utf8");
183003
183106
  } catch {
183004
183107
  io2.error(JSON.stringify({ error: `no DPX BO session at ${path2}` }));
183005
183108
  return 1;