@wix/himalaya-cli 0.1529.0 → 0.1530.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 (70) hide show
  1. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/stdlib/wix-sdk/bookings-v2/src/index.d.ts +24 -0
  2. package/dist/cli.mjs +717 -484
  3. package/dist/preview-assets.generated.bin +0 -0
  4. package/guides/release-notes.md +17 -0
  5. package/guides/templates.md +11 -1
  6. package/guides/tier-5-add-a-screen.md +4 -0
  7. package/package.json +2 -2
  8. package/templates/beauty-salon/dev/index.ts +1767 -2698
  9. package/templates/beauty-salon/tier5-src/_shared/collection-service.ts +23 -5
  10. package/templates/beauty-salon/tier5-src/_shared/engine-intl.ts +18 -0
  11. package/templates/beauty-salon/tier5-src/_shared/member-bookings.ts +50 -7
  12. package/templates/beauty-salon/tier5-src/himi-booking-bookings/index.ts +385 -74
  13. package/templates/beauty-salon-owner/tier5-src/_shared/collection-service.ts +23 -5
  14. package/templates/beauty-salon-owner/tier5-src/_shared/engine-intl.ts +18 -0
  15. package/templates/branded-lite/dev/index.ts +1753 -2697
  16. package/templates/branded-lite/tier5-src/_shared/collection-service.ts +23 -5
  17. package/templates/branded-lite/tier5-src/_shared/engine-intl.ts +18 -0
  18. package/templates/branded-lite/tier5-src/_shared/member-bookings.ts +50 -7
  19. package/templates/branded-lite/tier5-src/himi-booking-bookings/index.ts +385 -74
  20. package/templates/community-club/tier5-src/_shared/collection-service.ts +23 -5
  21. package/templates/community-club/tier5-src/_shared/engine-intl.ts +18 -0
  22. package/templates/community-club/tier5-src/_shared/member-bookings.ts +50 -7
  23. package/templates/community-club-owner/tier5-src/_shared/collection-service.ts +23 -5
  24. package/templates/community-club-owner/tier5-src/_shared/engine-intl.ts +18 -0
  25. package/templates/events-meetups/tier5-src/_shared/collection-service.ts +23 -5
  26. package/templates/events-meetups/tier5-src/_shared/engine-intl.ts +18 -0
  27. package/templates/events-meetups/tier5-src/_shared/member-bookings.ts +50 -7
  28. package/templates/events-meetups-owner/tier5-src/_shared/collection-service.ts +23 -5
  29. package/templates/events-meetups-owner/tier5-src/_shared/engine-intl.ts +18 -0
  30. package/templates/gym-fitness/dev/index.ts +1753 -2697
  31. package/templates/gym-fitness/tier5-src/_shared/collection-service.ts +23 -5
  32. package/templates/gym-fitness/tier5-src/_shared/engine-intl.ts +18 -0
  33. package/templates/gym-fitness/tier5-src/_shared/member-bookings.ts +50 -7
  34. package/templates/gym-fitness/tier5-src/himi-booking-bookings/index.ts +385 -74
  35. package/templates/gym-fitness-owner/tier5-src/_shared/collection-service.ts +23 -5
  36. package/templates/gym-fitness-owner/tier5-src/_shared/engine-intl.ts +18 -0
  37. package/templates/nonprofit-cause/tier5-src/_shared/collection-service.ts +23 -5
  38. package/templates/nonprofit-cause/tier5-src/_shared/engine-intl.ts +18 -0
  39. package/templates/nonprofit-cause/tier5-src/_shared/member-bookings.ts +50 -7
  40. package/templates/nonprofit-cause-owner/tier5-src/_shared/collection-service.ts +23 -5
  41. package/templates/nonprofit-cause-owner/tier5-src/_shared/engine-intl.ts +18 -0
  42. package/templates/owner-lite/tier5-src/_shared/collection-service.ts +23 -5
  43. package/templates/owner-lite/tier5-src/_shared/engine-intl.ts +18 -0
  44. package/templates/podcast-creator/tier5-src/_shared/collection-service.ts +23 -5
  45. package/templates/podcast-creator/tier5-src/_shared/engine-intl.ts +18 -0
  46. package/templates/podcast-creator/tier5-src/_shared/member-bookings.ts +50 -7
  47. package/templates/podcast-creator-owner/tier5-src/_shared/collection-service.ts +23 -5
  48. package/templates/podcast-creator-owner/tier5-src/_shared/engine-intl.ts +18 -0
  49. package/templates/portfolio-creative/tier5-src/_shared/collection-service.ts +23 -5
  50. package/templates/portfolio-creative/tier5-src/_shared/engine-intl.ts +18 -0
  51. package/templates/portfolio-creative/tier5-src/_shared/member-bookings.ts +50 -7
  52. package/templates/portfolio-creative-owner/tier5-src/_shared/collection-service.ts +23 -5
  53. package/templates/portfolio-creative-owner/tier5-src/_shared/engine-intl.ts +18 -0
  54. package/templates/restaurant/tier5-src/_shared/collection-service.ts +23 -5
  55. package/templates/restaurant/tier5-src/_shared/engine-intl.ts +18 -0
  56. package/templates/restaurant/tier5-src/_shared/member-bookings.ts +50 -7
  57. package/templates/restaurant-owner/tier5-src/_shared/collection-service.ts +23 -5
  58. package/templates/restaurant-owner/tier5-src/_shared/engine-intl.ts +18 -0
  59. package/templates/retail-store/tier5-src/_shared/collection-service.ts +23 -5
  60. package/templates/retail-store/tier5-src/_shared/engine-intl.ts +18 -0
  61. package/templates/retail-store/tier5-src/_shared/member-bookings.ts +50 -7
  62. package/templates/retail-store-owner/tier5-src/_shared/collection-service.ts +23 -5
  63. package/templates/retail-store-owner/tier5-src/_shared/engine-intl.ts +18 -0
  64. package/templates/yoga-studio/dev/index.ts +1755 -2699
  65. package/templates/yoga-studio/tier5-src/_shared/collection-service.ts +23 -5
  66. package/templates/yoga-studio/tier5-src/_shared/engine-intl.ts +18 -0
  67. package/templates/yoga-studio/tier5-src/_shared/member-bookings.ts +50 -7
  68. package/templates/yoga-studio/tier5-src/himi-booking-bookings/index.ts +385 -74
  69. package/templates/yoga-studio-owner/tier5-src/_shared/collection-service.ts +23 -5
  70. package/templates/yoga-studio-owner/tier5-src/_shared/engine-intl.ts +18 -0
package/dist/cli.mjs CHANGED
@@ -357,9 +357,9 @@ function isComponentAllowed(surface, componentType) {
357
357
  reason: `no ${gate.platform} template expresses ${componentType} (templates: ${gate.templates.join(", ")})`
358
358
  };
359
359
  }
360
- const row = WIDGET_VOCABULARY[componentType];
361
- if (!row) return { allowed: true };
362
- return row[gate.family] ? { allowed: true } : { allowed: false, reason: `not in the ${gate.family} allowlist` };
360
+ const row2 = WIDGET_VOCABULARY[componentType];
361
+ if (!row2) return { allowed: true };
362
+ return row2[gate.family] ? { allowed: true } : { allowed: false, reason: `not in the ${gate.family} allowlist` };
363
363
  }
364
364
  var PREVIEW_EXEMPT_PLATFORM_KEYS, WATCH_UNAVAILABLE, CAR_TEMPLATES, PROJECTION_SNAPSHOT_SIZE, widgetSurface, PREVIEW_SURFACES, SURFACE_GROUPS, SURFACE_VIEW_LADDER;
365
365
  var init_preview_surfaces = __esm({
@@ -635,7 +635,14 @@ var init_source_deny = __esm({
635
635
  // a template publish would serve it unauthenticated and `himi init --template` would copy one
636
636
  // author's hooks into every new app. Nothing is lost: the skill copies are regenerated by
637
637
  // `himi agent-init`, which a restored or template-made app runs (or `himi init` already did).
638
- ...AGENT_TOOLING_DIRS
638
+ ...AGENT_TOOLING_DIRS,
639
+ // Host and Wix CLI local state, never OTA content. AppSmith pods run the app at /user-code and
640
+ // keep their worker state under it (`.wix/app-smith-remote-machine/logs/*.log`,
641
+ // `bootstrap.complete.json`). Archived, a log line holding a signed S3 URL made `himi push`
642
+ // refuse the source as a leaked AWS key id; the agent may not edit `.wix/`, so it pushed with
643
+ // `--no-source`, and every later `himi pull` of that release failed `app_source_not_found`.
644
+ // The logs also landed in the owner-downloadable archive.
645
+ ".wix"
639
646
  ]);
640
647
  DENY_ROOT_DIRS = /* @__PURE__ */ new Set(["shots", "evidence"]);
641
648
  DENY_FILES = [
@@ -735,14 +742,14 @@ function primaryCtaStructureGap(text11) {
735
742
  if (!tables.length) return "Its acceptance table has no rows.";
736
743
  const ctaTables = tables.map((table) => ({ table, cta: table.header.findIndex((cell2) => /primary\s*(?:cta|call[- ]?to[- ]?action|action)/i.test(cell2)) })).filter((entry) => entry.cta >= 0);
737
744
  if (!ctaTables.length) return "Its acceptance table has no `Primary CTA` column.";
738
- const unanswered = ctaTables.flatMap(({ table, cta }) => table.data.filter((row) => !namesOneCta(row[cta] ?? "")));
745
+ const unanswered = ctaTables.flatMap(({ table, cta }) => table.data.filter((row2) => !namesOneCta(row2[cta] ?? "")));
739
746
  if (unanswered.length) {
740
747
  return `${unanswered.length} acceptance row(s) do not name exactly one primary CTA (first: ${JSON.stringify(unanswered[0][0] ?? "")}).`;
741
748
  }
742
749
  const data = ctaTables.flatMap(({ table }) => table.data);
743
750
  const flat = (value2) => value2.toLowerCase().replace(/[^a-z0-9]+/g, " ").trim();
744
- const rowText = data.map((row) => flat(row.join(" ")));
745
- const missing3 = declaredStates(text11).filter((state) => !rowText.some((row) => row.includes(flat(state))));
751
+ const rowText = data.map((row2) => flat(row2.join(" ")));
752
+ const missing3 = declaredStates(text11).filter((state) => !rowText.some((row2) => row2.includes(flat(state))));
746
753
  if (missing3.length) return `The acceptance table has no row for the declared state(s): ${missing3.join(", ")}.`;
747
754
  return null;
748
755
  }
@@ -1225,12 +1232,18 @@ function sentinelizeArchive(raw, fallbackName) {
1225
1232
  const name = contentName ?? config.match(/\bname\s*:\s*["']([^"'\n]+)["']/)?.[1] ?? fallbackName;
1226
1233
  const packageSlug = new RegExp(`\\b(const PACKAGE_SLUG = )"${escapeRe(name)}"`, "g");
1227
1234
  return Object.fromEntries(
1228
- entries.map(([rel, body]) => [
1229
- rel,
1230
- sentinelizeIdentity(body, { name: IDENTITY_FILES.has(rel) ? name : void 0, ids }).replace(packageSlug, '$1"__HIMI_APP_SLUG__"')
1231
- ])
1235
+ entries.map(([rel, body]) => {
1236
+ const out2 = sentinelizeIdentity(body, { name: IDENTITY_FILES.has(rel) ? name : void 0, ids }).replace(packageSlug, '$1"__HIMI_APP_SLUG__"');
1237
+ return [rel, rel === "config.ts" ? sentinelizeScheme(out2, name) : out2];
1238
+ })
1232
1239
  );
1233
1240
  }
1241
+ function sentinelizeScheme(config, appName2) {
1242
+ const slug = appName2.replace(/[^a-z0-9+.-]/gi, "-").toLowerCase();
1243
+ if (!slug) return config;
1244
+ const scheme = escapeRe(`himalaya-${slug}`);
1245
+ return config.replace(new RegExp(`(["'\`])${scheme}\\1`, "g"), "$1himalaya-__HIMI_APP_SLUG__$1").replace(new RegExp(`(["'\`])${scheme}://`, "g"), "$1himalaya-__HIMI_APP_SLUG__://");
1246
+ }
1234
1247
  function materializeSource(files, name, destDir, slug = name) {
1235
1248
  const written = [];
1236
1249
  const kept = [];
@@ -1616,8 +1629,8 @@ function userScoped(rule) {
1616
1629
  function validateBase44Entities(cfg, app) {
1617
1630
  if (!cfg) return [];
1618
1631
  const issues = [];
1619
- const add = (severity, ruleCode, entity, message) => issues.push({ severity, ruleCode, message, ...entity !== void 0 ? { entity } : {} });
1620
- const err = (ruleCode, entity, message) => add("error", ruleCode, entity, message);
1632
+ const add = (severity, ruleCode, entity, message2) => issues.push({ severity, ruleCode, message: message2, ...entity !== void 0 ? { entity } : {} });
1633
+ const err = (ruleCode, entity, message2) => add("error", ruleCode, entity, message2);
1621
1634
  const prefix = base44Prefix(app);
1622
1635
  const types = new Set(BASE44_FIELD_TYPES);
1623
1636
  const formats = new Set(BASE44_STRING_FORMATS);
@@ -1697,12 +1710,12 @@ function validateBase44Entities(cfg, app) {
1697
1710
  } else if (!Array.isArray(spec.seed)) {
1698
1711
  err("shape-invalid", name, "seed must be an array of row objects");
1699
1712
  } else {
1700
- spec.seed.forEach((row, index) => {
1701
- if (!row || typeof row !== "object" || Array.isArray(row)) {
1713
+ spec.seed.forEach((row2, index) => {
1714
+ if (!row2 || typeof row2 !== "object" || Array.isArray(row2)) {
1702
1715
  err("shape-invalid", name, `seed row ${index} must be an object`);
1703
1716
  return;
1704
1717
  }
1705
- for (const key3 of Object.keys(row)) {
1718
+ for (const key3 of Object.keys(row2)) {
1706
1719
  if (!keys.has(key3)) err("seed-key-unknown", name, `seed row ${index} sets undeclared field "${key3}"`);
1707
1720
  }
1708
1721
  });
@@ -1855,7 +1868,7 @@ function validateCmsConfig(cms, app, opts = {}) {
1855
1868
  const prefix = namespacePrefix(app);
1856
1869
  const types = new Set(WIX_FIELD_TYPES);
1857
1870
  const seenIds = /* @__PURE__ */ new Set();
1858
- const err = (collection, message) => issues.push({ collection, severity: "error", message });
1871
+ const err = (collection, message2) => issues.push({ collection, severity: "error", message: message2 });
1859
1872
  if (!Array.isArray(cms.collections)) {
1860
1873
  err(null, "cms.collections must be an array");
1861
1874
  return issues;
@@ -1937,12 +1950,12 @@ function validateCmsConfig(cms, app, opts = {}) {
1937
1950
  err(name, "seed must be an array of row objects");
1938
1951
  } else if (spec.seed) {
1939
1952
  if (!spec.id) err(name, "an adopted collection cannot declare `seed` \u2014 himi never writes to collections it does not own");
1940
- else spec.seed.forEach((row, index) => {
1941
- if (!row || typeof row !== "object" || Array.isArray(row)) {
1953
+ else spec.seed.forEach((row2, index) => {
1954
+ if (!row2 || typeof row2 !== "object" || Array.isArray(row2)) {
1942
1955
  err(name, `seed row ${index} must be an object`);
1943
1956
  return;
1944
1957
  }
1945
- Object.keys(row).forEach((key3) => {
1958
+ Object.keys(row2).forEach((key3) => {
1946
1959
  if (!keys.has(key3)) err(name, `seed row ${index} sets undeclared field "${key3}"`);
1947
1960
  });
1948
1961
  });
@@ -1975,7 +1988,7 @@ function validateDataResources(data, app) {
1975
1988
  data.collections ? { collections: data.collections, ...data.memberGated ? { memberGated: true } : {} } : void 0,
1976
1989
  app
1977
1990
  ).map((issue2) => ({ resource: issue2.collection, severity: issue2.severity, message: issue2.message }));
1978
- const err = (resource, message) => issues.push({ resource, severity: "error", message });
1991
+ const err = (resource, message2) => issues.push({ resource, severity: "error", message: message2 });
1979
1992
  if ((data.kv?.length ?? 0) > 0 && !appIdIsNamespaceSafe(app)) err(null, `app id "${app}" must be lowercase kebab-case for isolated data ownership`);
1980
1993
  if (data.kv !== void 0 && !Array.isArray(data.kv)) {
1981
1994
  err(null, "data.kv must be an array");
@@ -3093,7 +3106,7 @@ function summarizeLint(app, bres, outcome, strict, extraIssues = []) {
3093
3106
  };
3094
3107
  const record2 = (value2) => value2 && typeof value2 === "object" && !Array.isArray(value2) ? value2 : {};
3095
3108
  const text11 = (value2) => typeof value2 === "string" && value2 ? value2 : void 0;
3096
- const message = (value2) => {
3109
+ const message2 = (value2) => {
3097
3110
  const item = record2(value2);
3098
3111
  if (text11(item.message)) return text11(item.message);
3099
3112
  if (text11(item.error)) return text11(item.error);
@@ -3116,14 +3129,14 @@ function summarizeLint(app, bres, outcome, strict, extraIssues = []) {
3116
3129
  path: text11(record2(value2).bundle),
3117
3130
  ruleCode: "compile-error",
3118
3131
  severity: "error",
3119
- message: message(value2)
3132
+ message: message2(value2)
3120
3133
  })),
3121
3134
  ...outcome.failedToBuild.map((value2) => ({
3122
3135
  pass: "build",
3123
3136
  screen: text11(record2(value2).screenId),
3124
3137
  ruleCode: "failed-to-build",
3125
3138
  severity: "error",
3126
- message: message(value2)
3139
+ message: message2(value2)
3127
3140
  })),
3128
3141
  ...outcome.missingBundles.map((value2) => ({
3129
3142
  pass: "build",
@@ -3131,14 +3144,14 @@ function summarizeLint(app, bres, outcome, strict, extraIssues = []) {
3131
3144
  path: text11(record2(value2).bundle),
3132
3145
  ruleCode: "missing-bundle",
3133
3146
  severity: "error",
3134
- message: message(value2)
3147
+ message: message2(value2)
3135
3148
  })),
3136
3149
  ...workerThrows.map((value2) => ({
3137
3150
  pass: "worker",
3138
3151
  path: text11(record2(value2).bundle),
3139
3152
  ruleCode: "worker-threw",
3140
3153
  severity: "error",
3141
- message: message(value2.threw)
3154
+ message: message2(value2.threw)
3142
3155
  }))
3143
3156
  ]
3144
3157
  });
@@ -3382,8 +3395,8 @@ function catalogManifestDigest(manifest2) {
3382
3395
  } = manifest2;
3383
3396
  return hash(canonical(body));
3384
3397
  }
3385
- function fail(code, message) {
3386
- throw new CatalogError(code, message);
3398
+ function fail(code, message2) {
3399
+ throw new CatalogError(code, message2);
3387
3400
  }
3388
3401
  function safePath(path2) {
3389
3402
  if (typeof path2 !== "string" || !path2 || path2.length > 512 || path2.includes("\\") || path2.startsWith("/") || path2.split("/").some(
@@ -3444,8 +3457,8 @@ var init_catalog_cache = __esm({
3444
3457
  MAX_PACK = 16 * 1024 * 1024;
3445
3458
  MAX_EXPANDED = 64 * 1024 * 1024;
3446
3459
  CatalogError = class extends Error {
3447
- constructor(code, message) {
3448
- super(message);
3460
+ constructor(code, message2) {
3461
+ super(message2);
3449
3462
  this.code = code;
3450
3463
  this.name = "CatalogError";
3451
3464
  }
@@ -4300,8 +4313,8 @@ var init_catalog_v2 = __esm({
4300
4313
  "../html-to-t5/catalog.v2.json"() {
4301
4314
  catalog_v2_default = {
4302
4315
  encoding: "gzip-base64",
4303
- sha256: "db532afe419fe71cca2c79d444c8cdc93fd40662dfe53d761bdb458a6f52959a",
4304
- data: "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"
4316
+ sha256: "da9148b1f5ea7fb20a46b896858ffdca7453c53edc833686eff49d77122e192f",
4317
+ data: "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"
4305
4318
  };
4306
4319
  }
4307
4320
  });
@@ -4594,9 +4607,9 @@ function inspectModule(source, file2, profile, diagnostics) {
4594
4607
  function analyzeController(source, file2, profile, diagnostics) {
4595
4608
  inspectModule(source, file2, profile, diagnostics);
4596
4609
  const sf2 = ts2.createSourceFile(file2, source, ts2.ScriptTarget.Latest, true);
4597
- const error = (node, message) => {
4610
+ const error = (node, message2) => {
4598
4611
  const p2 = sf2.getLineAndCharacterOfPosition(node.getStart(sf2));
4599
- diagnostics.push({ code: "HHP-CONTROLLER", severity: "error", file: file2, line: p2.line + 1, column: p2.character + 1, message });
4612
+ diagnostics.push({ code: "HHP-CONTROLLER", severity: "error", file: file2, line: p2.line + 1, column: p2.character + 1, message: message2 });
4600
4613
  };
4601
4614
  const declaration = sf2.statements.find((n2) => ts2.isExportAssignment(n2) && !n2.isExportEquals);
4602
4615
  if (!declaration || !ts2.isCallExpression(declaration.expression) || declaration.expression.expression.getText(sf2) !== "defineController") {
@@ -5367,7 +5380,7 @@ function compileV2(html, profile, options) {
5367
5380
  const requiredCapabilities2 = /* @__PURE__ */ new Set();
5368
5381
  const $2 = cheerio2.load(html, { sourceCodeLocationInfo: true });
5369
5382
  const loc = (el2) => ({ file: options.file, line: el2?.sourceCodeLocation?.startLine ?? 1, column: el2?.sourceCodeLocation?.startCol ?? 1 });
5370
- const error = (el2, code, message, hint) => diagnostics.push({ ...loc(el2), code, severity: "error", message, ...hint ? { hint } : {} });
5383
+ const error = (el2, code, message2, hint) => diagnostics.push({ ...loc(el2), code, severity: "error", message: message2, ...hint ? { hint } : {} });
5371
5384
  const meta = (name) => $2(`meta[name="${name}"]`).attr("content");
5372
5385
  const screenId = options.screenId ?? meta("himalaya-screen-id");
5373
5386
  if (!screenId || !/^[a-z][a-z0-9_.]*$/.test(screenId)) error(null, "HHP-SCREEN-ID", "Provide a stable lowercase screen id.");
@@ -5430,7 +5443,7 @@ function compileV2(html, profile, options) {
5430
5443
  });
5431
5444
  for (const rule of rules) {
5432
5445
  const type = rule.declarations.display === "grid" || rule.declarations["grid-template-columns"] ? "Grid" : "VStack";
5433
- translateStyle(rule.declarations, profile, type, {}, {}, (message, hint, property2) => diagnostics.push({ code: "HHP-CSS-VALUE", severity: "error", ...rule.locations[property2 ?? ""] ?? { file: rule.file, line: rule.line, column: 1 }, message, ...hint ? { hint } : {} }));
5446
+ translateStyle(rule.declarations, profile, type, {}, {}, (message2, hint, property2) => diagnostics.push({ code: "HHP-CSS-VALUE", severity: "error", ...rule.locations[property2 ?? ""] ?? { file: rule.file, line: rule.line, column: 1 }, message: message2, ...hint ? { hint } : {} }));
5434
5447
  }
5435
5448
  rules.sort((a2, b2) => a2.specificity - b2.specificity);
5436
5449
  const tags = new Map(Object.entries(profile.components).map(([name, spec]) => [spec.tag, name]));
@@ -5488,9 +5501,9 @@ function compileV2(html, profile, options) {
5488
5501
  if (!profile.surfaces.every((s2) => field.surfaces.includes(s2))) error(el2, "HHP-FIELD-SURFACE", `${name} is unsupported on an enabled surface.`);
5489
5502
  }
5490
5503
  const statePath = (raw) => raw.startsWith(`${serviceName}.`) ? raw.slice(serviceName.length + 1) : raw;
5491
- function path2(el2, raw, row) {
5504
+ function path2(el2, raw, row2) {
5492
5505
  if (raw.startsWith("$item.")) {
5493
- if (!row) error(el2, "HHP-BINDING-SCOPE", "Item bindings require a keyed list template.");
5506
+ if (!row2) error(el2, "HHP-BINDING-SCOPE", "Item bindings require a keyed list template.");
5494
5507
  return raw;
5495
5508
  }
5496
5509
  const relative20 = statePath(raw);
@@ -5498,9 +5511,9 @@ function compileV2(html, profile, options) {
5498
5511
  return `$service:${serviceName}.${relative20}`;
5499
5512
  }
5500
5513
  const read = (value2, dotted) => dotted.split(".").reduce((current, key3) => current && typeof current === "object" && Object.hasOwn(current, key3) ? current[key3] : void 0, value2);
5501
- function rowValues(row, raw) {
5502
- if (!row) return [];
5503
- const [root, ...nested] = row.split(".$item.");
5514
+ function rowValues(row2, raw) {
5515
+ if (!row2) return [];
5516
+ const [root, ...nested] = row2.split(".$item.");
5504
5517
  let rows = info4?.paths.get(root);
5505
5518
  for (const key3 of nested) rows = Array.isArray(rows) ? rows.flatMap((item) => {
5506
5519
  const value2 = read(item, key3);
@@ -5521,7 +5534,7 @@ function compileV2(html, profile, options) {
5521
5534
  }
5522
5535
  return raw;
5523
5536
  }
5524
- function compile(el2, treePath, row = false) {
5537
+ function compile(el2, treePath, row2 = false) {
5525
5538
  const element = $2(el2), attrs = el2.attribs, tag = el2.tagName;
5526
5539
  let type = attrs["data-component"] ?? tags.get(tag) ?? semantic[tag];
5527
5540
  if (tag === "input" && attrs.type === "checkbox") type = "Toggle";
@@ -5544,10 +5557,10 @@ function compileV2(html, profile, options) {
5544
5557
  }
5545
5558
  if (style.display && !["main", "div", "header", "footer", "nav", "himi-v-stack", "himi-h-stack", "himi-grid"].includes(tag))
5546
5559
  error(el2, "HHP-CSS-COMPONENT", "display layout rules require a stack or grid container.");
5547
- type = translateStyle(style, profile, type, props, mods, (message, hint, property2) => diagnostics.push({ code: "HHP-CSS-VALUE", severity: "error", ...styleLocations[property2 ?? ""] ?? loc(el2), message, ...hint ? { hint } : {} }));
5560
+ type = translateStyle(style, profile, type, props, mods, (message2, hint, property2) => diagnostics.push({ code: "HHP-CSS-VALUE", severity: "error", ...styleLocations[property2 ?? ""] ?? loc(el2), message: message2, ...hint ? { hint } : {} }));
5548
5561
  const spec = Object.hasOwn(profile.components, type) ? profile.components[type] : void 0;
5549
5562
  let id = attrs["data-id"] ?? attrs.id ?? `hhp.${screenId}.${treePath}`;
5550
- if (row && !id.includes("$item.")) id += ".$item.id";
5563
+ if (row2 && !id.includes("$item.")) id += ".$item.id";
5551
5564
  if (ids.has(id)) error(el2, "HHP-DUPLICATE-ID", `Duplicate component id ${id}.`);
5552
5565
  if (!/^[a-zA-Z_][\w.$-]*$/.test(id)) error(el2, "HHP-COMPONENT-ID", `Invalid component id ${id}.`);
5553
5566
  ids.add(id);
@@ -5564,20 +5577,20 @@ function compileV2(html, profile, options) {
5564
5577
  if (/{{|}}/.test(text11.replace(/{{\s*[\w.$]+\s*}}/g, ""))) error(el2, "HHP-TEXT-EXPRESSION", "Text interpolation accepts state/item paths; compute expressions in the controller.");
5565
5578
  if (matches.length) {
5566
5579
  if (matches.length === 1 && matches[0][0] === text11 && type === "Text") {
5567
- props.text = path2(el2, matches[0][1], row);
5580
+ props.text = path2(el2, matches[0][1], row2);
5568
5581
  } else if (controller && type === "Text") {
5569
- for (const match of matches) path2(el2, match[1], row);
5582
+ for (const match of matches) path2(el2, match[1], row2);
5570
5583
  const key3 = `t${textProjections.length}`;
5571
5584
  const normalized = text11.replace(/{{\s*([\w.$]+)\s*}}/g, (_match, raw) => `{{${raw.startsWith("$item.") ? raw : statePath(raw)}}}`);
5572
- textProjections.push({ key: key3, text: normalized, ...row ? { collection: row } : {} });
5573
- props.text = row ? `$item.__hhpText_${key3}` : `$service:${serviceName}.__hhpText.${key3}`;
5585
+ textProjections.push({ key: key3, text: normalized, ...row2 ? { collection: row2 } : {} });
5586
+ props.text = row2 ? `$item.__hhpText_${key3}` : `$service:${serviceName}.__hhpText.${key3}`;
5574
5587
  } else {
5575
5588
  if (profile.surfaces.some((surface) => surface === "ios" || surface === "android" || surface === "macos"))
5576
5589
  error(el2, "HHP-TEXT-TEMPLATE-SURFACE", "Text templates are not implemented by the enabled native renderers.", "Compute the complete string in controller state and bind it on a Text component with {{path}} or bind:content.");
5577
5590
  const params = {};
5578
5591
  let template = text11;
5579
5592
  matches.forEach((m2, i2) => {
5580
- params[`v${i2}`] = path2(el2, m2[1], row);
5593
+ params[`v${i2}`] = path2(el2, m2[1], row2);
5581
5594
  template = template.replace(m2[0], `{v${i2}}`);
5582
5595
  });
5583
5596
  props.template = { template, params };
@@ -5672,8 +5685,8 @@ function compileV2(html, profile, options) {
5672
5685
  continue;
5673
5686
  }
5674
5687
  if (attr3 === "bind:hidden") {
5675
- mods.hiddenPath = path2(el2, raw, row);
5676
- const values = raw.startsWith("$item.") ? rowValues(row, raw) : [info4?.paths.get(statePath(raw))];
5688
+ mods.hiddenPath = path2(el2, raw, row2);
5689
+ const values = raw.startsWith("$item.") ? rowValues(row2, raw) : [info4?.paths.get(statePath(raw))];
5677
5690
  if (values.some((value2) => typeof value2 !== "boolean")) error(el2, "HHP-BINDING-TYPE", "bind:hidden requires boolean state.");
5678
5691
  continue;
5679
5692
  }
@@ -5697,10 +5710,10 @@ function compileV2(html, profile, options) {
5697
5710
  error(el2, "HHP-BINDING-SCOPE", `${type}.${name2} binds only controller state, not a row field.`);
5698
5711
  continue;
5699
5712
  }
5700
- props[field2.binding.field] = path2(el2, raw, row);
5713
+ props[field2.binding.field] = path2(el2, raw, row2);
5701
5714
  const expected = field2.binding.state;
5702
5715
  if (expected) {
5703
- const values = raw.startsWith("$item.") ? rowValues(row, raw) : info4?.paths.has(statePath(raw)) ? [info4.paths.get(statePath(raw))] : [];
5716
+ const values = raw.startsWith("$item.") ? rowValues(row2, raw) : info4?.paths.has(statePath(raw)) ? [info4.paths.get(statePath(raw))] : [];
5704
5717
  if (values.some((value2) => typeof value2 !== expected)) error(el2, "HHP-BINDING-TYPE", `${attr3} requires ${expected} state (${field2.binding.note ?? `native ${field2.binding.field}`}).`);
5705
5718
  } else if (field2.binding.mechanism === "path" && props[name2] === void 0) {
5706
5719
  if (raw.startsWith("$item.")) {
@@ -5732,7 +5745,7 @@ function compileV2(html, profile, options) {
5732
5745
  if (attr3.startsWith("data-mod-") || attr3.startsWith("himi-mod-")) {
5733
5746
  const name2 = camel(attr3.slice(9)), field2 = own6(profile.modifiers, name2);
5734
5747
  if (!field2) error(el2, "HHP-MODIFIER", `Unknown or unsupported modifier ${name2}.`);
5735
- else if (name2.endsWith("Path") && field2.schema.type === "string") mods[name2] = raw.startsWith("$") && !raw.startsWith("$item.") ? raw : path2(el2, raw, row);
5748
+ else if (name2.endsWith("Path") && field2.schema.type === "string") mods[name2] = raw.startsWith("$") && !raw.startsWith("$item.") ? raw : path2(el2, raw, row2);
5736
5749
  else {
5737
5750
  mods[name2] = coerce(raw, field2);
5738
5751
  structured(el2, mods[name2]);
@@ -5769,7 +5782,7 @@ function compileV2(html, profile, options) {
5769
5782
  }
5770
5783
  for (const rule of matching.filter((r3) => r3.breakpoint)) {
5771
5784
  const responsiveProps = {};
5772
- translateStyle(rule.declarations, profile, type, responsiveProps, {}, (message, hint, property2) => diagnostics.push({ code: "HHP-CSS-VALUE", severity: "error", ...rule.locations[property2 ?? ""] ?? { file: rule.file, line: rule.line, column: 1 }, message, ...hint ? { hint } : {} }));
5785
+ translateStyle(rule.declarations, profile, type, responsiveProps, {}, (message2, hint, property2) => diagnostics.push({ code: "HHP-CSS-VALUE", severity: "error", ...rule.locations[property2 ?? ""] ?? { file: rule.file, line: rule.line, column: 1 }, message: message2, ...hint ? { hint } : {} }));
5773
5786
  if (type !== "Grid") error(el2, "HHP-CSS-RESPONSIVE", "Container column overrides require a Grid.");
5774
5787
  }
5775
5788
  for (const breakpoint of [600, 840]) {
@@ -5819,7 +5832,7 @@ function compileV2(html, profile, options) {
5819
5832
  const submit = type === "Form" && child.tagName === "button" && $2(child).attr("type") === "submit";
5820
5833
  if (submit && attrs["on:submit"] && !$2(child).attr("on:click")) $2(child).attr("on:click", attrs["on:submit"]);
5821
5834
  const slot = submit ? "submitButton" : $2(child).attr("slot") ?? $2(child).attr("data-slot");
5822
- const childRow = each ? each.startsWith("$item.") && row ? `${row}.$item.${each.slice(6)}` : statePath(each) : row;
5835
+ const childRow = each ? each.startsWith("$item.") && row2 ? `${row2}.$item.${each.slice(6)}` : statePath(each) : row2;
5823
5836
  const built = compile(child, `${treePath}.${index}`, childRow);
5824
5837
  if (slot) {
5825
5838
  const field = spec.fields[camel(slot)];
@@ -5839,7 +5852,7 @@ function compileV2(html, profile, options) {
5839
5852
  if (++subtreeCount > 1) error(el2, "HHP-COMPOSITION-POLICY", "Only one WorkerSubtree slot is permitted per screen.");
5840
5853
  if (props.policy && typeof props.policy === "object") {
5841
5854
  try {
5842
- for (const message of workerSubtreePolicyErrors(props.policy)) error(el2, "HHP-COMPOSITION-POLICY", message);
5855
+ for (const message2 of workerSubtreePolicyErrors(props.policy)) error(el2, "HHP-COMPOSITION-POLICY", message2);
5843
5856
  } catch {
5844
5857
  error(el2, "HHP-COMPOSITION-POLICY", "Invalid WorkerSubtree policy.");
5845
5858
  }
@@ -6226,18 +6239,18 @@ function archiveBytes(dir, bytes2) {
6226
6239
  return { sha256: sha2567, ext, file: toPosix(rel) };
6227
6240
  }
6228
6241
  function appendProgress(dir, input) {
6229
- const message = input.message.trim();
6230
- if (!message) throw new ProgressError("message_required", "a progress entry needs a message");
6231
- if (message.length > MAX_MESSAGE_CHARS) {
6242
+ const message2 = input.message.trim();
6243
+ if (!message2) throw new ProgressError("message_required", "a progress entry needs a message");
6244
+ if (message2.length > MAX_MESSAGE_CHARS) {
6232
6245
  throw new ProgressError(
6233
6246
  "message_too_long",
6234
- `a postcard is a line or two (${message.length} chars; the cap is ${MAX_MESSAGE_CHARS}) \u2014 put the detail in your reply and journal the headline`
6247
+ `a postcard is a line or two (${message2.length} chars; the cap is ${MAX_MESSAGE_CHARS}) \u2014 put the detail in your reply and journal the headline`
6235
6248
  );
6236
6249
  }
6237
6250
  const images = (input.images ?? []).map((src) => archiveImage(dir, src));
6238
6251
  const entry = {
6239
6252
  ts: (input.now ?? /* @__PURE__ */ new Date()).toISOString(),
6240
- message,
6253
+ message: message2,
6241
6254
  ...input.step ? { step: input.step, stepNumber: JOURNEY_STEPS.indexOf(input.step) + 1 } : {},
6242
6255
  ...images.length ? { images } : {},
6243
6256
  ...input.auto ? { by: CLI_AUTHOR, milestone: input.auto.milestone, ...input.auto.ref ? { ref: input.auto.ref } : {} } : {}
@@ -6302,7 +6315,7 @@ function journalMilestone(dir, input) {
6302
6315
  const step = MILESTONE_STEP[input.milestone];
6303
6316
  const abs = input.image ? locateImage(dir, input.image) : null;
6304
6317
  const images = abs ? [{ sha256: createHash4("sha256").update(readFileSync7(abs)).digest("hex") }] : [];
6305
- let message = input.message;
6318
+ let message2 = input.message;
6306
6319
  if (input.unlessUnchanged) {
6307
6320
  const latest = [...entries].reverse().find((e2) => isCliEntry(e2) && e2.milestone === input.milestone);
6308
6321
  const shas = (list2) => [...new Set((list2 ?? []).map((i2) => i2.sha256))].sort().join(",");
@@ -6311,12 +6324,12 @@ function journalMilestone(dir, input) {
6311
6324
  const samePicture = !!latest && shas(latest.images) === shas(images);
6312
6325
  if (latest && sameHeadline && samePicture) return { journaled: false, reason: "unchanged" };
6313
6326
  const note = latest && input.changeNote ? input.changeNote({ previous: latest.message, pictureChanged: !samePicture, hadPicture: shas(latest.images) !== "", hasPicture: images.length > 0 }) : void 0;
6314
- if (note) message = `${headline2} ${note}`;
6327
+ if (note) message2 = `${headline2} ${note}`;
6315
6328
  }
6316
6329
  if (entries.some((e2) => agentCovers(e2, { ts: now.toISOString(), step, images }))) return { journaled: false, reason: "agent-journaled" };
6317
- if (looksSecret(message)) return { journaled: false, reason: "unsafe" };
6330
+ if (looksSecret(message2)) return { journaled: false, reason: "unsafe" };
6318
6331
  const entry = appendProgress(dir, {
6319
- message,
6332
+ message: message2,
6320
6333
  step,
6321
6334
  ...abs ? { images: [abs] } : {},
6322
6335
  now,
@@ -6556,8 +6569,8 @@ var init_progress = __esm({
6556
6569
  MAX_MESSAGE_CHARS = 500;
6557
6570
  MAX_IMAGE_BYTES = 10 * 1024 * 1024;
6558
6571
  ProgressError = class extends Error {
6559
- constructor(code, message) {
6560
- super(message);
6572
+ constructor(code, message2) {
6573
+ super(message2);
6561
6574
  this.code = code;
6562
6575
  }
6563
6576
  };
@@ -7452,8 +7465,8 @@ var init_preview = __esm({
7452
7465
  plainRunReason = (r3) => `a plain \`himi run\` (not --watch, pid ${r3.pid}) is serving ${r3.url}; it is not this tool's live preview, so it was left alone \u2014 stop it where it runs to start a live one`;
7453
7466
  legacyReason = (r3) => `a preview from an older himi CLI (pid ${r3.pid}) is serving ${r3.url} and cannot prove it is this app's, so it was left alone \u2014 stop it where it runs (Ctrl-C, or \`kill ${r3.pid}\`), then retry`;
7454
7467
  PreviewStartError = class extends Error {
7455
- constructor(message, log) {
7456
- super(message);
7468
+ constructor(message2, log) {
7469
+ super(message2);
7457
7470
  this.log = log;
7458
7471
  }
7459
7472
  };
@@ -11305,9 +11318,9 @@ function renderedTableName(props) {
11305
11318
  const columns = own2(props, "columns");
11306
11319
  if (Array.isArray(columns) && columns.some(nonempty)) return true;
11307
11320
  const rows = own2(props, "rows");
11308
- return Array.isArray(rows) && rows.some((row) => {
11309
- if (!row || typeof row !== "object" || Array.isArray(row)) return false;
11310
- const cells = own2(row, "cells");
11321
+ return Array.isArray(rows) && rows.some((row2) => {
11322
+ if (!row2 || typeof row2 !== "object" || Array.isArray(row2)) return false;
11323
+ const cells = own2(row2, "cells");
11311
11324
  return Array.isArray(cells) && cells.some(nonempty);
11312
11325
  });
11313
11326
  }
@@ -11401,12 +11414,12 @@ function accessibleNameGaps(descriptor, options = {}) {
11401
11414
  if (exposure !== "decorative") {
11402
11415
  const tappable = isInteractive(n2) || propHandlers && hasPropHandler(n2);
11403
11416
  const type = componentTypeOf(n2);
11404
- const row = type ? own2(A11Y_CONTRACT, type) : void 0;
11405
- const contractual = !interactiveOnly && row?.name === "required";
11417
+ const row2 = type ? own2(A11Y_CONTRACT, type) : void 0;
11418
+ const contractual = !interactiveOnly && row2?.name === "required";
11406
11419
  if ((tappable || contractual) && !hasAccessibleName(n2, options.renderedNamesOnly === true)) {
11407
11420
  const body = n2.body && typeof n2.body === "object" && !Array.isArray(n2.body) ? n2.body : void 0;
11408
11421
  const props = n2.props && typeof n2.props === "object" && !Array.isArray(n2.props) ? n2.props : body?.props && typeof body.props === "object" && !Array.isArray(body.props) ? body.props : void 0;
11409
- const inferred = type === "BottomSheet" && props?.modal === false ? "region" : row?.role ?? "unspecified";
11422
+ const inferred = type === "BottomSheet" && props?.modal === false ? "region" : row2?.role ?? "unspecified";
11410
11423
  out2.push({
11411
11424
  at: path2 || "root",
11412
11425
  type: type ?? (n2.icon ? "icon" : "node"),
@@ -11916,7 +11929,7 @@ function appBindingIssues(root, ctx, appActions, isNavItemHidden = (at2) => /^to
11916
11929
  const verdict = appServicesVerdictOf(ctx);
11917
11930
  const issues = [];
11918
11931
  for (const ref of refs) {
11919
- const issue2 = (message) => ({ severity: "error", pass: "bindings", path: ref.at, message });
11932
+ const issue2 = (message2) => ({ severity: "error", pass: "bindings", path: ref.at, message: message2 });
11920
11933
  if (ref.unresolved) {
11921
11934
  issues.push(issue2(
11922
11935
  `"${ref.value}" can never resolve here: the runtimes resolve bindings only in the TOP-LEVEL values of a non-worker action's params / args, so this string would reach the handler or worker as-is. Move it to a top-level param, or read it in the worker with app.read.`
@@ -11973,7 +11986,7 @@ function appBindingIssues(root, ctx, appActions, isNavItemHidden = (at2) => /^to
11973
11986
  function appActionIssue(actionId, at2, ctx, appActions, registeredNative) {
11974
11987
  const parsed = parseAppActionId(actionId);
11975
11988
  if (!parsed) return null;
11976
- const issue2 = (message) => ({ severity: "error", pass: "actions", path: at2, message });
11989
+ const issue2 = (message2) => ({ severity: "error", pass: "actions", path: at2, message: message2 });
11977
11990
  if (registeredNative?.has(actionId)) {
11978
11991
  return issue2(
11979
11992
  `"${actionId}" is registered as a flat native handler, but app.<service>.<action> is reserved for app services (RFC 0074 \xA75) \u2014 rename the handler`
@@ -12206,7 +12219,6 @@ function webViewOriginAllowed(url, origins) {
12206
12219
  }
12207
12220
  var init_webview_origin = __esm({
12208
12221
  "../../core/ts/src/webview-origin.ts"() {
12209
- "use strict";
12210
12222
  }
12211
12223
  });
12212
12224
 
@@ -13172,9 +13184,9 @@ function buildSweepSource(allow) {
13172
13184
  }
13173
13185
  })(${JSON.stringify(allow)});`;
13174
13186
  }
13175
- function explainWithheldError(message, deviceParity) {
13176
- if (!deviceParity || message.includes(FETCH_ADVICE)) return message;
13177
- return BARE_FETCH_UNDEFINED.test(message) ? `${message} \u2014 ${FETCH_ADVICE}` : message;
13187
+ function explainWithheldError(message2, deviceParity) {
13188
+ if (!deviceParity || message2.includes(FETCH_ADVICE)) return message2;
13189
+ return BARE_FETCH_UNDEFINED.test(message2) ? `${message2} \u2014 ${FETCH_ADVICE}` : message2;
13178
13190
  }
13179
13191
  function realmInstallsIntl(intl, hide) {
13180
13192
  return intl === true && !(hide ?? []).includes("Intl");
@@ -13365,8 +13377,8 @@ function runBundleSandbox(bundleJs, opts) {
13365
13377
  get: (t2, prop2) => prop2 in t2 ? t2[prop2] : inert
13366
13378
  });
13367
13379
  const mkConsole = () => {
13368
- const sink = (level) => (message) => {
13369
- consoleLines.push({ level, message: String(message) });
13380
+ const sink = (level) => (message2) => {
13381
+ consoleLines.push({ level, message: String(message2) });
13370
13382
  };
13371
13383
  return { log: sink("log"), warn: sink("warn"), error: sink("error"), info: sink("info"), debug: sink("debug") };
13372
13384
  };
@@ -13562,11 +13574,11 @@ async function bootBundleWorker(bundleJs, opts) {
13562
13574
  const pollDirectives = [];
13563
13575
  const oversizeWixResponses = [];
13564
13576
  const seenOversize = /* @__PURE__ */ new Set();
13565
- const diagnose = (message) => {
13566
- if (seenOversize.has(message)) return;
13567
- seenOversize.add(message);
13577
+ const diagnose = (message2) => {
13578
+ if (seenOversize.has(message2)) return;
13579
+ seenOversize.add(message2);
13568
13580
  try {
13569
- (opts.onDiagnostic ?? ((m2) => console.warn(m2)))(message);
13581
+ (opts.onDiagnostic ?? ((m2) => console.warn(m2)))(message2);
13570
13582
  } catch {
13571
13583
  }
13572
13584
  };
@@ -13832,8 +13844,8 @@ async function bootBundleWorker(bundleJs, opts) {
13832
13844
  const prev = def.state;
13833
13845
  if (!prev || typeof prev !== "object" || Array.isArray(prev)) return;
13834
13846
  const raw = err?.message ?? err;
13835
- let message;
13836
- if (raw === null || raw === void 0) message = "action failed";
13847
+ let message2;
13848
+ if (raw === null || raw === void 0) message2 = "action failed";
13837
13849
  else if (typeof raw === "object") {
13838
13850
  let asJson;
13839
13851
  try {
@@ -13841,12 +13853,12 @@ async function bootBundleWorker(bundleJs, opts) {
13841
13853
  } catch {
13842
13854
  asJson = void 0;
13843
13855
  }
13844
- message = typeof asJson === "string" ? asJson : String(raw);
13845
- } else message = String(raw);
13846
- const failed3 = { ...prev, _error: message };
13856
+ message2 = typeof asJson === "string" ? asJson : String(raw);
13857
+ } else message2 = String(raw);
13858
+ const failed3 = { ...prev, _error: message2 };
13847
13859
  if (prev.status === "loading") failed3.status = "error";
13848
13860
  if (prev.loading === true) failed3.loading = false;
13849
- if (typeof prev.error === "string") failed3.error = message;
13861
+ if (typeof prev.error === "string") failed3.error = message2;
13850
13862
  def.state = failed3;
13851
13863
  };
13852
13864
  const runAction = async (def, label3, fn2, args) => {
@@ -13991,8 +14003,8 @@ function parseDescriptorWorkerAction(actionId) {
13991
14003
  const match = /^tier5\.([A-Za-z0-9_-]+)\.([A-Za-z0-9_-]+)$/.exec(actionId);
13992
14004
  return match ? { service: match[1], action: match[2] } : null;
13993
14005
  }
13994
- function actionIssue(action, severity, message) {
13995
- return { severity, pass: "actions", path: action.at, message };
14006
+ function actionIssue(action, severity, message2) {
14007
+ return { severity, pass: "actions", path: action.at, message: message2 };
13996
14008
  }
13997
14009
  function appWorkerExports(context, service, action) {
13998
14010
  return Boolean(context.appWorkerActions?.[service]?.includes(action));
@@ -14009,8 +14021,8 @@ function validateWorkerAction(action, context) {
14009
14021
  if (exported?.includes(parsed.action)) return null;
14010
14022
  if (exported === void 0 && appWorkerExports(context, parsed.service, parsed.action)) return null;
14011
14023
  const appExports = exported === void 0 ? context.appWorkerActions?.[parsed.service] : void 0;
14012
- const message = exported ? `worker actionId "${action.actionId}" is not exported by service "${parsed.service}" (exports: ${exported.join(", ") || "none"})` : appExports ? `worker actionId "${action.actionId}" targets service "${parsed.service}", which this screen's bundle does not define (defines: ${Object.keys(context.bundleActions).join(", ") || "none"}) and the app-level worker does not export "${parsed.action}" from (exports: ${appExports.join(", ") || "none"})` : `worker actionId "${action.actionId}" targets service "${parsed.service}" which the bound bundle does not define (defines: ${Object.keys(context.bundleActions).join(", ") || "none"})`;
14013
- return actionIssue(action, "error", message);
14024
+ const message2 = exported ? `worker actionId "${action.actionId}" is not exported by service "${parsed.service}" (exports: ${exported.join(", ") || "none"})` : appExports ? `worker actionId "${action.actionId}" targets service "${parsed.service}", which this screen's bundle does not define (defines: ${Object.keys(context.bundleActions).join(", ") || "none"}) and the app-level worker does not export "${parsed.action}" from (exports: ${appExports.join(", ") || "none"})` : `worker actionId "${action.actionId}" targets service "${parsed.service}" which the bound bundle does not define (defines: ${Object.keys(context.bundleActions).join(", ") || "none"})`;
14025
+ return actionIssue(action, "error", message2);
14014
14026
  }
14015
14027
  if (appWorkerMayAnswer(context, parsed.service)) {
14016
14028
  if (appWorkerExports(context, parsed.service, parsed.action)) return null;
@@ -15752,9 +15764,9 @@ function validateScreenDescriptor(screenId, descriptor, opts = {}) {
15752
15764
  const gaps = accessibleNameGaps(descriptor);
15753
15765
  const CAP5 = 20;
15754
15766
  for (const gap of gaps.slice(0, CAP5)) {
15755
- const row = Object.prototype.hasOwnProperty.call(A11Y_CONTRACT, gap.type) ? A11Y_CONTRACT[gap.type] : void 0;
15767
+ const row2 = Object.prototype.hasOwnProperty.call(A11Y_CONTRACT, gap.type) ? A11Y_CONTRACT[gap.type] : void 0;
15756
15768
  const why = gap.reason === "interactive" ? `it carries an \`onTap\`/\`onLongPress\`/\`onDoubleTap\`, which promotes ANY node to a control that owes a name (RFC 0058 \xA73.4)` : `RFC 0058 \xA73.3 requires a name for \`${gap.type}\` (announced as \`${gap.role}\`)`;
15757
- const fix = gap.reason === "contract" ? `Give it \`modifiers.accessibilityLabel\`, or copy on a descendant \u2014 or, if it really is presentational, say so with \`modifiers.accessibilityRole: "decorative"\` (node-local) or \`modifiers.accessibilityHidden: true\` (whole subtree).` : `Give it \`modifiers.accessibilityLabel\`, or put readable copy on a descendant. An icon-only control names itself with \`Icon.contentDescription\`. \`decorative\` does not silence a control${row?.decorative ? ` \u2014 a tappable \`${gap.type}\` is one` : ""}.`;
15769
+ const fix = gap.reason === "contract" ? `Give it \`modifiers.accessibilityLabel\`, or copy on a descendant \u2014 or, if it really is presentational, say so with \`modifiers.accessibilityRole: "decorative"\` (node-local) or \`modifiers.accessibilityHidden: true\` (whole subtree).` : `Give it \`modifiers.accessibilityLabel\`, or put readable copy on a descendant. An icon-only control names itself with \`Icon.contentDescription\`. \`decorative\` does not silence a control${row2?.decorative ? ` \u2014 a tappable \`${gap.type}\` is one` : ""}.`;
15758
15770
  issues.push({
15759
15771
  severity,
15760
15772
  pass: "a11y",
@@ -17167,8 +17179,8 @@ var init_contained_dev_module = __esm({
17167
17179
  };
17168
17180
  ContainedDevModuleUnloadable = class extends Error {
17169
17181
  himiContainedDevModuleUnloadable = true;
17170
- constructor(message) {
17171
- super(message);
17182
+ constructor(message2) {
17183
+ super(message2);
17172
17184
  this.name = "ContainedDevModuleUnloadable";
17173
17185
  }
17174
17186
  };
@@ -17178,6 +17190,18 @@ var init_contained_dev_module = __esm({
17178
17190
  });
17179
17191
 
17180
17192
  // ../../core/dev-server/src/loader.ts
17193
+ var loader_exports = {};
17194
+ __export(loader_exports, {
17195
+ hasDevModule: () => hasDevModule,
17196
+ listAvailableApps: () => listAvailableApps,
17197
+ loadApp: () => loadApp,
17198
+ loadContent: () => loadContent,
17199
+ readPlatformsJson: () => readPlatformsJson,
17200
+ resolveWixClientId: () => resolveWixClientId,
17201
+ resolveWixWebAuthConfig: () => resolveWixWebAuthConfig,
17202
+ resolveWixWebAuthPair: () => resolveWixWebAuthPair,
17203
+ tryLoadApp: () => tryLoadApp
17204
+ });
17181
17205
  import { resolve as resolve14, basename as basename5, dirname as dirname10 } from "node:path";
17182
17206
  import { existsSync as existsSync13, readdirSync as readdirSync10, readFileSync as readFileSync14, mkdirSync as mkdirSync8, rmSync as rmSync4 } from "node:fs";
17183
17207
  import { pathToFileURL as pathToFileURL3, fileURLToPath as fileURLToPath7 } from "node:url";
@@ -17214,6 +17238,9 @@ function resolveDevEntry(name) {
17214
17238
  }
17215
17239
  return null;
17216
17240
  }
17241
+ function hasDevModule(name) {
17242
+ return resolveDevEntry(name) !== null;
17243
+ }
17217
17244
  async function devModuleUrl(entry, dir, fresh = false) {
17218
17245
  const hasTypeScriptLoader = process.execArgv.some((arg) => arg.includes("tsx"));
17219
17246
  const direct = !isOffRepo() && hasTypeScriptLoader;
@@ -17699,8 +17726,8 @@ var init_errors = __esm({
17699
17726
  status;
17700
17727
  /** Stable machine-readable code for the `error` field; callers branch on this, not on prose. */
17701
17728
  code;
17702
- constructor(message, opts = {}) {
17703
- super(message);
17729
+ constructor(message2, opts = {}) {
17730
+ super(message2);
17704
17731
  this.name = "ControlInputError";
17705
17732
  this.status = opts.status ?? 400;
17706
17733
  this.code = opts.code ?? "invalid_request";
@@ -21064,8 +21091,8 @@ var init_screen_views = __esm({
21064
21091
  "../../core/serve-storage/src/screen-views.ts"() {
21065
21092
  init_unicode_case_folding();
21066
21093
  ScreenViewValidationError = class extends Error {
21067
- constructor(message) {
21068
- super(message);
21094
+ constructor(message2) {
21095
+ super(message2);
21069
21096
  this.name = "ScreenViewValidationError";
21070
21097
  }
21071
21098
  };
@@ -22572,7 +22599,6 @@ function resolveIdiom(tokens2, ctx = {}) {
22572
22599
  var IDIOM_CONTEXTS, UNSAFE_KEYS;
22573
22600
  var init_idiom = __esm({
22574
22601
  "../../core/ts/src/idiom.ts"() {
22575
- "use strict";
22576
22602
  IDIOM_CONTEXTS = {
22577
22603
  ios: { native: ["ios"] },
22578
22604
  android: { native: ["material"] },
@@ -22776,9 +22802,9 @@ function springCurve(spring, durationMs) {
22776
22802
  const x2 = springStep(response, zeta);
22777
22803
  const step = response / 64;
22778
22804
  const envelope = springEnvelope(response, zeta, x2);
22779
- let settle = 0;
22780
- for (let t2 = 0; t2 <= SPRING_MAX_SECS && envelope(t2) > SPRING_SETTLE_TOLERANCE; t2 += step) if (Math.abs(1 - x2(t2)) > SPRING_SETTLE_TOLERANCE) settle = t2;
22781
- const secs = Math.min(settle + step, SPRING_MAX_SECS);
22805
+ let settle2 = 0;
22806
+ for (let t2 = 0; t2 <= SPRING_MAX_SECS && envelope(t2) > SPRING_SETTLE_TOLERANCE; t2 += step) if (Math.abs(1 - x2(t2)) > SPRING_SETTLE_TOLERANCE) settle2 = t2;
22807
+ const secs = Math.min(settle2 + step, SPRING_MAX_SECS);
22782
22808
  const samples = Math.min(200, Math.max(24, Math.ceil(12 * secs / response)));
22783
22809
  const points = [];
22784
22810
  for (let i2 = 0; i2 <= samples; i2++) points.push(i2 === 0 ? 0 : i2 === samples ? 1 : Number(x2(secs * i2 / samples).toFixed(3)));
@@ -23749,8 +23775,8 @@ var init_base44_entities = __esm({
23749
23775
  });
23750
23776
 
23751
23777
  // ../../core/sdk/functions/src/index.ts
23752
- function fail2(message) {
23753
- throw new Error(`defineFunction: ${message}`);
23778
+ function fail2(message2) {
23779
+ throw new Error(`defineFunction: ${message2}`);
23754
23780
  }
23755
23781
  function validateName(name) {
23756
23782
  if (typeof name !== "string") fail2("name must be a string");
@@ -29765,7 +29791,7 @@ var init_preview2 = __esm({
29765
29791
  const out2 = [];
29766
29792
  const err = [];
29767
29793
  let settled = false;
29768
- const settle = (fn2, v2) => {
29794
+ const settle2 = (fn2, v2) => {
29769
29795
  if (settled) return;
29770
29796
  settled = true;
29771
29797
  clearTimeout(timer);
@@ -29776,14 +29802,14 @@ var init_preview2 = __esm({
29776
29802
  child.kill("SIGKILL");
29777
29803
  } catch {
29778
29804
  }
29779
- settle(reject, new Error(`${cmd} ${args[0] ?? ""} timed out after ${timeoutMs}ms`));
29805
+ settle2(reject, new Error(`${cmd} ${args[0] ?? ""} timed out after ${timeoutMs}ms`));
29780
29806
  }, timeoutMs);
29781
29807
  child.stdout.on("data", (b2) => out2.push(b2));
29782
29808
  child.stderr.on("data", (b2) => err.push(b2));
29783
- child.on("error", (e2) => settle(reject, e2));
29809
+ child.on("error", (e2) => settle2(reject, e2));
29784
29810
  child.on("close", (code) => {
29785
- if (code === 0) settle(resolve83, Buffer.concat(out2));
29786
- else settle(reject, new Error(`${cmd} exited ${code}: ${Buffer.concat(err).toString("utf8")}`));
29811
+ if (code === 0) settle2(resolve83, Buffer.concat(out2));
29812
+ else settle2(reject, new Error(`${cmd} exited ${code}: ${Buffer.concat(err).toString("utf8")}`));
29787
29813
  });
29788
29814
  });
29789
29815
  },
@@ -31424,7 +31450,31 @@ function useBoundValues(ctx, bindings) {
31424
31450
  }, [ctx.provider, key3]);
31425
31451
  return values.length === paths2.length ? values : paths2.map(() => void 0);
31426
31452
  }
31427
- var resolveScalarStatic, Bound, BoundList;
31453
+ function templateReadsService(template) {
31454
+ let reads2 = readsService.get(template);
31455
+ if (reads2 === void 0) {
31456
+ reads2 = JSON.stringify(template).indexOf("$service:") >= 0;
31457
+ readsService.set(template, reads2);
31458
+ }
31459
+ return reads2;
31460
+ }
31461
+ function sameJson(a2, b2) {
31462
+ if (a2 === b2) return true;
31463
+ if (a2 === null || b2 === null || typeof a2 !== "object" || typeof b2 !== "object") return false;
31464
+ if (Array.isArray(a2)) {
31465
+ if (!Array.isArray(b2) || a2.length !== b2.length) return false;
31466
+ for (let i2 = 0; i2 < a2.length; i2++) if (!sameJson(a2[i2], b2[i2])) return false;
31467
+ return true;
31468
+ }
31469
+ if (Array.isArray(b2)) return false;
31470
+ const ka2 = Object.keys(a2);
31471
+ if (ka2.length !== Object.keys(b2).length) return false;
31472
+ for (const k2 of ka2) {
31473
+ if (!Object.prototype.hasOwnProperty.call(b2, k2) || !sameJson(a2[k2], b2[k2])) return false;
31474
+ }
31475
+ return true;
31476
+ }
31477
+ var resolveScalarStatic, Bound, BoundList, readsService, BoundRow;
31428
31478
  var init_bindings2 = __esm({
31429
31479
  "../../core/web-renderer/src/bindings.tsx"() {
31430
31480
  "use strict";
@@ -31451,12 +31501,18 @@ var init_bindings2 = __esm({
31451
31501
  const arr2 = local ? ctx.itemScope?.[itemsPath.slice("$item.".length)] : bound2;
31452
31502
  const items = Array.isArray(arr2) ? arr2 : [];
31453
31503
  return /* @__PURE__ */ jsx3(Fragment, { children: items.map((item, i2) => {
31454
- const scope2 = item && typeof item === "object" ? { ...item, __index: i2 } : { value: item, __index: i2 };
31455
- const itemCtx = { ...ctx, itemScope: scope2 };
31456
31504
  const key3 = item?.id ?? i2;
31457
- return /* @__PURE__ */ jsx3(React2.Fragment, { children: renderRow(template, itemCtx) }, String(key3));
31505
+ return /* @__PURE__ */ jsx3(BoundRow, { ctx, template, item, index: i2, renderRow }, String(key3));
31458
31506
  }) });
31459
31507
  };
31508
+ readsService = /* @__PURE__ */ new WeakMap();
31509
+ BoundRow = React2.memo(
31510
+ ({ ctx, template, item, index, renderRow }) => {
31511
+ const scope2 = item && typeof item === "object" ? { ...item, __index: index } : { value: item, __index: index };
31512
+ return /* @__PURE__ */ jsx3(Fragment, { children: renderRow(template, { ...ctx, itemScope: scope2 }) });
31513
+ },
31514
+ (prev, next) => prev.ctx === next.ctx && prev.template === next.template && prev.renderRow === next.renderRow && prev.index === next.index && !templateReadsService(next.template) && sameJson(prev.item, next.item)
31515
+ );
31460
31516
  }
31461
31517
  });
31462
31518
 
@@ -33713,17 +33769,17 @@ var init_controls = __esm({
33713
33769
  if (ni2 !== selIdx) select2(ni2);
33714
33770
  };
33715
33771
  const pagerRef = React7.useRef(null);
33716
- const settle = React7.useRef(void 0);
33772
+ const settle2 = React7.useRef(void 0);
33717
33773
  React7.useEffect(() => {
33718
33774
  const el2 = pagerRef.current;
33719
33775
  if (!el2 || !el2.clientWidth) return;
33720
33776
  const x2 = selIdx * el2.clientWidth;
33721
33777
  if (Math.abs(el2.scrollLeft - x2) > 1) el2.scrollTo?.({ left: x2, behavior: "smooth" });
33722
33778
  }, [selIdx, pages2]);
33723
- React7.useEffect(() => () => clearTimeout(settle.current), []);
33779
+ React7.useEffect(() => () => clearTimeout(settle2.current), []);
33724
33780
  const onPagerScroll = () => {
33725
- clearTimeout(settle.current);
33726
- settle.current = setTimeout(() => {
33781
+ clearTimeout(settle2.current);
33782
+ settle2.current = setTimeout(() => {
33727
33783
  const el2 = pagerRef.current;
33728
33784
  if (!el2 || !el2.clientWidth) return;
33729
33785
  const i2 = Math.round(el2.scrollLeft / el2.clientWidth);
@@ -35124,7 +35180,7 @@ function Block({ b: b2, env, depth }) {
35124
35180
  case "button":
35125
35181
  return /* @__PURE__ */ jsx9(LinkButton, { label: b2.label, url: b2.url, env, testId: `${env.componentId}/${b2.id}` });
35126
35182
  case "table":
35127
- return /* @__PURE__ */ jsx9("table", { ...tid(env, b2.id, b2.kind), style: { width: "100%", borderCollapse: "collapse", ...textStyle(ctx, "body", text11) }, children: /* @__PURE__ */ jsx9("tbody", { children: b2.rows.map((row, r3) => /* @__PURE__ */ jsx9("tr", { children: row.map((cell2, c2) => /* @__PURE__ */ jsx9("td", { style: { border: `1px solid ${border}`, padding: 6, whiteSpace: "pre-wrap", verticalAlign: "top" }, children: cell2 }, c2)) }, r3)) }) });
35183
+ return /* @__PURE__ */ jsx9("table", { ...tid(env, b2.id, b2.kind), style: { width: "100%", borderCollapse: "collapse", ...textStyle(ctx, "body", text11) }, children: /* @__PURE__ */ jsx9("tbody", { children: b2.rows.map((row2, r3) => /* @__PURE__ */ jsx9("tr", { children: row2.map((cell2, c2) => /* @__PURE__ */ jsx9("td", { style: { border: `1px solid ${border}`, padding: 6, whiteSpace: "pre-wrap", verticalAlign: "top" }, children: cell2 }, c2)) }, r3)) }) });
35128
35184
  case "card": {
35129
35185
  const title = richContentCardTitle(b2);
35130
35186
  return /* @__PURE__ */ jsxs6("div", { ...tid(env, b2.id, b2.kind), role: "group", "aria-label": title, style: { border: `1px solid ${border}`, borderRadius: 8, padding: 12, display: "flex", flexDirection: "column", gap: 6 }, children: [
@@ -41693,10 +41749,10 @@ var init_pdf = __esm({
41693
41749
  var $DOMException = function DOMException() {
41694
41750
  anInstance(this, DOMExceptionPrototype);
41695
41751
  var argumentsLength = arguments.length;
41696
- var message = normalizeStringArgument(argumentsLength < 1 ? void 0 : arguments[0]);
41752
+ var message2 = normalizeStringArgument(argumentsLength < 1 ? void 0 : arguments[0]);
41697
41753
  var name = normalizeStringArgument(argumentsLength < 2 ? void 0 : arguments[1], "Error");
41698
- var that = new NativeDOMException(message, name);
41699
- var error = new Error2(message);
41754
+ var that = new NativeDOMException(message2, name);
41755
+ var error = new Error2(message2);
41700
41756
  error.name = DOM_EXCEPTION;
41701
41757
  defineProperty(that, "stack", createPropertyDescriptor(1, clearErrorStack(error.stack, 1)));
41702
41758
  inheritIfRequired(that, this, $DOMException);
@@ -42024,8 +42080,8 @@ var init_pdf = __esm({
42024
42080
  };
42025
42081
  verbosity = VerbosityLevel.WARNINGS;
42026
42082
  BaseException = (function BaseExceptionClosure() {
42027
- function BaseException2(message, name) {
42028
- this.message = message;
42083
+ function BaseException2(message2, name) {
42084
+ this.message = message2;
42029
42085
  this.name = name;
42030
42086
  }
42031
42087
  BaseException2.prototype = new Error();
@@ -116575,9 +116631,9 @@ function ensurePressStyles() {
116575
116631
  }
116576
116632
  function idiomPressRules() {
116577
116633
  let css = "";
116578
- for (const [name, row] of Object.entries(IDIOM_CONTROLS)) {
116579
- const layer = `color-mix(in srgb,currentColor ${Math.round(row.press.stateLayerOpacity * 100)}%,transparent)`;
116580
- css += `[data-himalaya-idiom-press="${name}-highlight"]:active{opacity:${row.press.highlightOpacity}!important}`;
116634
+ for (const [name, row2] of Object.entries(IDIOM_CONTROLS)) {
116635
+ const layer = `color-mix(in srgb,currentColor ${Math.round(row2.press.stateLayerOpacity * 100)}%,transparent)`;
116636
+ css += `[data-himalaya-idiom-press="${name}-highlight"]:active{opacity:${row2.press.highlightOpacity}!important}`;
116581
116637
  css += `[data-himalaya-idiom-press="${name}-ripple"]:active{background-image:linear-gradient(${layer},${layer})!important}`;
116582
116638
  }
116583
116639
  return css;
@@ -117037,7 +117093,7 @@ function lottieRuntime(lib) {
117037
117093
  } catch {
117038
117094
  }
117039
117095
  };
117040
- const settle = (el2) => {
117096
+ const settle2 = (el2) => {
117041
117097
  const anim = lottieAnims.get(el2);
117042
117098
  const host = el2;
117043
117099
  const played = host.dataset.himalayaLottiePlayed;
@@ -117106,7 +117162,7 @@ function lottieRuntime(lib) {
117106
117162
  const stamp = host.getAttribute("data-himalaya-lottie-play");
117107
117163
  if (!anim) return;
117108
117164
  if (!stamp) {
117109
- settle(el2);
117165
+ settle2(el2);
117110
117166
  return;
117111
117167
  }
117112
117168
  if (host.dataset.himalayaLottiePlayed === stamp) return;
@@ -117123,7 +117179,7 @@ function lottieRuntime(lib) {
117123
117179
  if (r3.type !== "attributes" || !(r3.target instanceof Element)) continue;
117124
117180
  if (r3.attributeName === "data-himalaya-lottie") remount(r3.target);
117125
117181
  else if (r3.attributeName === "data-himalaya-lottie-reduce") applyReduce(r3.target);
117126
- else if (r3.attributeName === "data-himalaya-lottie-gen") settle(r3.target);
117182
+ else if (r3.attributeName === "data-himalaya-lottie-gen") settle2(r3.target);
117127
117183
  else if (r3.attributeName === "data-himalaya-lottie-loop") applyLoop(r3.target);
117128
117184
  else replay(r3.target);
117129
117185
  }
@@ -118082,10 +118138,10 @@ function tableColumns(raw) {
118082
118138
  };
118083
118139
  });
118084
118140
  }
118085
- function dataTableCells(row, columns) {
118086
- if (row == null) return columns.map(() => "");
118087
- if (Array.isArray(row)) return columns.map((_2, i2) => row[i2] == null ? "" : String(row[i2]));
118088
- const o2 = row;
118141
+ function dataTableCells(row2, columns) {
118142
+ if (row2 == null) return columns.map(() => "");
118143
+ if (Array.isArray(row2)) return columns.map((_2, i2) => row2[i2] == null ? "" : String(row2[i2]));
118144
+ const o2 = row2;
118089
118145
  if (Array.isArray(o2.cells)) return columns.map((_2, i2) => o2.cells[i2] == null ? "" : String(o2.cells[i2]));
118090
118146
  return columns.map((c2) => c2.key && o2[c2.key] != null ? String(o2[c2.key]) : "");
118091
118147
  }
@@ -119116,11 +119172,11 @@ function renderInner(node, ctx) {
119116
119172
  itemsPath,
119117
119173
  template: items[0],
119118
119174
  renderRow: (t2, ic) => {
119119
- let row = renderNode(t2, asItem(ic));
119120
- if (boundStagger > 0 && React12.isValidElement(row)) {
119175
+ let row2 = renderNode(t2, asItem(ic));
119176
+ if (boundStagger > 0 && React12.isValidElement(row2)) {
119121
119177
  const i2 = Number(ic.itemScope?.__index ?? 0);
119122
- const prev = row.props.style ?? {};
119123
- row = React12.cloneElement(row, { style: { ...prev, animationDelay: `${i2 * boundStagger}ms` } });
119178
+ const prev = row2.props.style ?? {};
119179
+ row2 = React12.cloneElement(row2, { style: { ...prev, animationDelay: `${i2 * boundStagger}ms` } });
119124
119180
  }
119125
119181
  if (boundSwipe && ctx.onAction && !props.horizontal) {
119126
119182
  const leading = resolveSwipeActions(boundSwipe.leading, ic);
@@ -119136,12 +119192,12 @@ function renderInner(node, ctx) {
119136
119192
  accent: C2("accentPrimary", "#116DFF"),
119137
119193
  fg: C2("textPrimary", "#13171e"),
119138
119194
  fontFamily: bodyFont(ctx),
119139
- children: row
119195
+ children: row2
119140
119196
  }
119141
119197
  );
119142
119198
  }
119143
119199
  }
119144
- return row;
119200
+ return row2;
119145
119201
  }
119146
119202
  }
119147
119203
  );
@@ -120534,9 +120590,9 @@ var init_renderNode = __esm({
120534
120590
  const rawMessage = errorMessageFor({ rule: effectiveRule, value: local, workerError, catalog: validationCatalog });
120535
120591
  const hasWorkerError = Boolean(workerError && workerError.trim());
120536
120592
  const painted2 = rawMessage === null ? "" : translateOnly(rawMessage);
120537
- const message = !painted2.trim() || ruleMessagePending && !hasWorkerError ? null : painted2;
120593
+ const message2 = !painted2.trim() || ruleMessagePending && !hasWorkerError ? null : painted2;
120538
120594
  const [feedbackShown, setFeedbackShown] = React12.useState(false);
120539
- const revealed = message !== null && shouldRevealError({
120595
+ const revealed = message2 !== null && shouldRevealError({
120540
120596
  rule,
120541
120597
  feedbackShown,
120542
120598
  hasWorkerError,
@@ -120687,7 +120743,7 @@ var init_renderNode = __esm({
120687
120743
  ),
120688
120744
  props.trailingIcon && accIcon(props.trailingIcon)
120689
120745
  ] }),
120690
- revealed ? /* @__PURE__ */ jsx11("span", { id: errorId, role: "alert", style: { fontFamily: bodyFont(ctx), fontSize: pxToRem(12), color: C2("danger", "#E62214"), paddingLeft: 2 }, children: message }) : (props.helperText ?? cfg.helperText) != null ? /* @__PURE__ */ jsx11("span", { style: { fontFamily: bodyFont(ctx), fontSize: pxToRem(12), color: errored ? C2("danger", "#E62214") : muted, paddingLeft: 2 }, children: txt(props.helperText ?? cfg.helperText, ctx) }) : null
120746
+ revealed ? /* @__PURE__ */ jsx11("span", { id: errorId, role: "alert", style: { fontFamily: bodyFont(ctx), fontSize: pxToRem(12), color: C2("danger", "#E62214"), paddingLeft: 2 }, children: message2 }) : (props.helperText ?? cfg.helperText) != null ? /* @__PURE__ */ jsx11("span", { style: { fontFamily: bodyFont(ctx), fontSize: pxToRem(12), color: errored ? C2("danger", "#E62214") : muted, paddingLeft: 2 }, children: txt(props.helperText ?? cfg.helperText, ctx) }) : null
120691
120747
  ] });
120692
120748
  };
120693
120749
  MENU_ANCHOR_CONTROL = 'a[href], button, input, select, textarea, [tabindex]:not([tabindex="-1"]), [role="button"], [role="link"]';
@@ -121225,10 +121281,10 @@ var init_renderNode = __esm({
121225
121281
  setStatus("playing");
121226
121282
  setError("");
121227
121283
  } catch (cause) {
121228
- const message = cause instanceof Error ? cause.message : "Autoplay blocked";
121284
+ const message2 = cause instanceof Error ? cause.message : "Autoplay blocked";
121229
121285
  setStatus("blocked");
121230
- setError(message);
121231
- emit(props.onError, { state: "blocked", status: "blocked", error: message, code: "playback_blocked" });
121286
+ setError(message2);
121287
+ emit(props.onError, { state: "blocked", status: "blocked", error: message2, code: "playback_blocked" });
121232
121288
  }
121233
121289
  }, [isYouTube, isUnsupportedProvider, emit, props.onError]);
121234
121290
  const pause = React12.useCallback(() => {
@@ -121478,10 +121534,10 @@ var init_renderNode = __esm({
121478
121534
  emit(props.onEnd, { state: "ended", status: "ended" });
121479
121535
  },
121480
121536
  onError: () => {
121481
- const message = "Unable to play this media source";
121537
+ const message2 = "Unable to play this media source";
121482
121538
  setStatus("error");
121483
- setError(message);
121484
- emit(props.onError, { state: "error", status: "error", error: message, code: "source_error" });
121539
+ setError(message2);
121540
+ emit(props.onError, { state: "error", status: "error", error: message2, code: "source_error" });
121485
121541
  }
121486
121542
  };
121487
121543
  if (items.length === 0) return /* @__PURE__ */ jsx11("div", { "data-media-player": sessionId, style: { minHeight: props.height ?? 120, display: "grid", placeItems: "center", ...wrap }, children: slot("empty") ?? "No media" });
@@ -121551,7 +121607,7 @@ var init_renderNode = __esm({
121551
121607
  if (!retypeSrc) return;
121552
121608
  let live3 = true;
121553
121609
  let made = null;
121554
- const settle = (r3) => {
121610
+ const settle2 = (r3) => {
121555
121611
  const u2 = r3?.url ?? null;
121556
121612
  made = u2;
121557
121613
  if (!live3) {
@@ -121560,7 +121616,7 @@ var init_renderNode = __esm({
121560
121616
  }
121561
121617
  setRetyped({ from: retypeSrc, url: u2, pageCount: r3?.pageCount ?? null });
121562
121618
  };
121563
- loadPdfFetch().then((m2) => m2.retypeAsPdfCounted(retypeSrc)).then(settle, () => settle(null));
121619
+ loadPdfFetch().then((m2) => m2.retypeAsPdfCounted(retypeSrc)).then(settle2, () => settle2(null));
121564
121620
  return () => {
121565
121621
  live3 = false;
121566
121622
  if (made) URL.revokeObjectURL(made);
@@ -124475,7 +124531,7 @@ var init_renderNode = __esm({
124475
124531
  const selectedId = isBinding(props.selectedId) ? boundSel : props.selectedId;
124476
124532
  const selIdx = Math.max(0, opts.findIndex((o2) => o2?.id === selectedId));
124477
124533
  const viewport = React12.useRef(null);
124478
- const settle = React12.useRef(void 0);
124534
+ const settle2 = React12.useRef(void 0);
124479
124535
  const pickerId = React12.useId();
124480
124536
  const interactive = !!ctx.onAction && !!props.onChange;
124481
124537
  const emit = (index) => {
@@ -124486,7 +124542,7 @@ var init_renderNode = __esm({
124486
124542
  React12.useEffect(() => {
124487
124543
  if (viewport.current) viewport.current.scrollTop = selIdx * 32;
124488
124544
  }, [selIdx, opts.length]);
124489
- React12.useEffect(() => () => clearTimeout(settle.current), []);
124545
+ React12.useEffect(() => () => clearTimeout(settle2.current), []);
124490
124546
  return /* @__PURE__ */ jsxs8("div", { style: { position: "relative", width: "100%", maxWidth: 220, height: 160, overflow: "hidden", background: C2("surfaceSecondary", "#f5f7fa"), borderRadius: 12, ...wrap }, children: [
124491
124547
  /* @__PURE__ */ jsx11("div", { "aria-hidden": "true", style: { position: "absolute", top: 64, left: 8, right: 8, height: 32, background: C2("surfacePrimary", "#fff"), borderRadius: 8, boxShadow: "inset 0 0 0 1px rgba(0,0,0,.06)" } }),
124492
124548
  /* @__PURE__ */ jsx11(
@@ -124506,8 +124562,8 @@ var init_renderNode = __esm({
124506
124562
  }
124507
124563
  },
124508
124564
  onScroll: () => {
124509
- clearTimeout(settle.current);
124510
- settle.current = setTimeout(() => emit(Math.max(0, Math.min(opts.length - 1, Math.round((viewport.current?.scrollTop ?? 0) / 32)))), 120);
124565
+ clearTimeout(settle2.current);
124566
+ settle2.current = setTimeout(() => emit(Math.max(0, Math.min(opts.length - 1, Math.round((viewport.current?.scrollTop ?? 0) / 32)))), 120);
124511
124567
  },
124512
124568
  style: { position: "relative", height: "100%", overflowY: "auto", scrollbarWidth: "none", scrollSnapType: "y mandatory", padding: "64px 0", boxSizing: "border-box" },
124513
124569
  children: opts.map((o2, index) => /* @__PURE__ */ jsx11(
@@ -125289,7 +125345,7 @@ var init_renderNode = __esm({
125289
125345
  ] }),
125290
125346
  /* @__PURE__ */ jsx11("div", { style: { display: "grid", gridTemplateColumns: "repeat(7, minmax(0, 1fr))", gap: 2, marginBottom: 4 }, children: heads.map((h2, i2) => /* @__PURE__ */ jsx11("div", { style: { textAlign: "center", fontFamily: bodyFont(ctx), fontSize: pxToRem(11), fontWeight: 600, color: C2("textSecondary", "#888"), textTransform: "uppercase" }, children: h2 }, i2)) }),
125291
125347
  /* @__PURE__ */ jsx11("div", { ref: gridRef, role: "grid", "aria-label": monthLabel, style: { display: "grid", gridTemplateColumns: "repeat(7, minmax(0, 1fr))", gap: 2, width: "100%" }, children: rows.flatMap(
125292
- (row, ri2) => row.map((cell2, ci2) => {
125348
+ (row2, ri2) => row2.map((cell2, ci2) => {
125293
125349
  if (!cell2.inMonth && !showAdjacent) return /* @__PURE__ */ jsx11("div", { "aria-hidden": "true" }, `${ri2}-${ci2}`);
125294
125350
  const dec = decByDate.get(cell2.date);
125295
125351
  const disabled = dec?.disabled === true || !calWithinWindow(cell2.date, minDate, maxDate);
@@ -126347,8 +126403,8 @@ async function pngPageHtml(item) {
126347
126403
  return `<!doctype html><html${item.isRTL ? ' dir="rtl"' : ""}><head><meta charset="utf-8"><style>${faces}${fill}body{font-family:${HOST_PAGE_FONT}}</style></head><body style="margin:0">${item.html}</body></html>`;
126348
126404
  }
126349
126405
  function isMissingPlaywrightExecutable(error) {
126350
- const message = error?.message ?? "";
126351
- return /Executable doesn't exist at/.test(message) && /playwright install/.test(message);
126406
+ const message2 = error?.message ?? "";
126407
+ return /Executable doesn't exist at/.test(message2) && /playwright install/.test(message2);
126352
126408
  }
126353
126409
  async function pngAvailable() {
126354
126410
  let chromium;
@@ -127741,11 +127797,11 @@ function deepMerge3(base, patch) {
127741
127797
  return out2;
127742
127798
  }
127743
127799
  function recordOverrideHistory(state, screenId, op, descriptor, notes) {
127744
- const row = { id: ++overrideHistorySeq, op, descriptor, notes, updatedAt: Math.floor(Date.now() / 1e3) };
127800
+ const row2 = { id: ++overrideHistorySeq, op, descriptor, notes, updatedAt: Math.floor(Date.now() / 1e3) };
127745
127801
  const list2 = state.localOverrideHistory.get(screenId) ?? [];
127746
- list2.unshift(row);
127802
+ list2.unshift(row2);
127747
127803
  state.localOverrideHistory.set(screenId, list2);
127748
- return row;
127804
+ return row2;
127749
127805
  }
127750
127806
  function send(res, status, body, headers2 = {}) {
127751
127807
  res.statusCode = status;
@@ -128167,21 +128223,21 @@ async function handleOrionChatRequest(req, res) {
128167
128223
  const { detectAgentHire, sendOrionChatMessage, extractAgentFromReply, localMaestroReply } = await import("./apps/orion-clone-live.js");
128168
128224
  let body = "";
128169
128225
  for await (const chunk of req) body += chunk;
128170
- let message = "";
128226
+ let message2 = "";
128171
128227
  let conversationId;
128172
128228
  let attachment;
128173
128229
  try {
128174
128230
  const j2 = JSON.parse(body || "{}");
128175
- message = String(j2.message ?? "");
128231
+ message2 = String(j2.message ?? "");
128176
128232
  conversationId = j2.conversationId ? String(j2.conversationId) : void 0;
128177
128233
  if (j2.attachment && typeof j2.attachment.dataUri === "string" && j2.attachment.dataUri) {
128178
128234
  attachment = { dataUri: String(j2.attachment.dataUri), fileName: j2.attachment.fileName ? String(j2.attachment.fileName) : void 0, mime: j2.attachment.mime ? String(j2.attachment.mime) : void 0 };
128179
128235
  }
128180
128236
  } catch {
128181
128237
  }
128182
- if (!message.trim()) return sendJson(res, 400, { error: "message_required" }, cors);
128183
- const hireIntent = detectAgentHire(message);
128184
- const result = await sendOrionChatMessage(message, conversationId, attachment);
128238
+ if (!message2.trim()) return sendJson(res, 400, { error: "message_required" }, cors);
128239
+ const hireIntent = detectAgentHire(message2);
128240
+ const result = await sendOrionChatMessage(message2, conversationId, attachment);
128185
128241
  let agentCard;
128186
128242
  let hireReply;
128187
128243
  if (hireIntent) {
@@ -128194,7 +128250,7 @@ async function handleOrionChatRequest(req, res) {
128194
128250
  }
128195
128251
  }
128196
128252
  if (!result || !result.reply || !result.reply.trim()) {
128197
- const reply = hireReply ?? localMaestroReply(message);
128253
+ const reply = hireReply ?? localMaestroReply(message2);
128198
128254
  return sendJson(res, 200, { conversationId: result?.conversationId ?? conversationId ?? "local-dev", reply, ...agentCard ? { agentCard } : {} }, { ...cors, "cache-control": "no-store" });
128199
128255
  }
128200
128256
  return sendJson(res, 200, { ...result, reply: hireReply ?? result.reply, ...agentCard ? { agentCard } : {} }, { ...cors, "cache-control": "no-store" });
@@ -128210,11 +128266,11 @@ async function handleOrionConversationRequest(req, res) {
128210
128266
  async function handleOrionChatStreamRequest(req, res) {
128211
128267
  let body = "";
128212
128268
  for await (const chunk of req) body += chunk;
128213
- let message = "";
128269
+ let message2 = "";
128214
128270
  let conversationId;
128215
128271
  try {
128216
128272
  const j2 = JSON.parse(body || "{}");
128217
- message = String(j2.message ?? "");
128273
+ message2 = String(j2.message ?? "");
128218
128274
  conversationId = j2.conversationId ? String(j2.conversationId) : void 0;
128219
128275
  } catch {
128220
128276
  }
@@ -128225,7 +128281,7 @@ async function handleOrionChatStreamRequest(req, res) {
128225
128281
  "access-control-allow-origin": "*"
128226
128282
  });
128227
128283
  const { openOrionChatStream } = await import("./apps/orion-clone-live.js");
128228
- await openOrionChatStream(message, conversationId, (sse) => {
128284
+ await openOrionChatStream(message2, conversationId, (sse) => {
128229
128285
  try {
128230
128286
  res.write(sse);
128231
128287
  } catch {
@@ -129463,9 +129519,9 @@ async function handleWebWix(req, res, state) {
129463
129519
  record2("proxy", r3.status, r3.body);
129464
129520
  return reply(200, { status: r3.status, body: r3.body });
129465
129521
  } catch (e2) {
129466
- const message = JSON.stringify({ error: String(e2?.message ?? e2) });
129467
- record2("proxy", 0, message);
129468
- return reply(200, { status: 0, body: message });
129522
+ const message2 = JSON.stringify({ error: String(e2?.message ?? e2) });
129523
+ record2("proxy", 0, message2);
129524
+ return reply(200, { status: 0, body: message2 });
129469
129525
  }
129470
129526
  }
129471
129527
  if (path2 === "/v1/__webwix/logout" && req.method === "POST") {
@@ -129856,9 +129912,9 @@ async function handleDev(req, res, state) {
129856
129912
  state.serverCache.clear();
129857
129913
  return sendJson(res, 200, { status: "ok", bundle: name });
129858
129914
  } catch (err) {
129859
- const message = err.message;
129860
- const status = /unknown bundle source/.test(message) ? 404 : 500;
129861
- return sendJson(res, status, { error: "rebuild_failed", bundle: name, message });
129915
+ const message2 = err.message;
129916
+ const status = /unknown bundle source/.test(message2) ? 404 : 500;
129917
+ return sendJson(res, status, { error: "rebuild_failed", bundle: name, message: message2 });
129862
129918
  }
129863
129919
  }
129864
129920
  if (url === "/__dev/actions/log") {
@@ -130021,14 +130077,14 @@ async function handleAdminPlayground(req, res, state) {
130021
130077
  if (revertMatch && req.method === "POST") {
130022
130078
  const screenId = decodeURIComponent(revertMatch[1]);
130023
130079
  const historyId = Number(new URLSearchParams(url.split("?")[1] ?? "").get("historyId"));
130024
- const row = (state.localOverrideHistory.get(screenId) ?? []).find((r3) => r3.id === historyId);
130025
- if (!row) return sendJson(res, 404, { error: "history_row_not_found", screenId, historyId });
130026
- if (row.op === "delete" || row.descriptor == null) {
130080
+ const row2 = (state.localOverrideHistory.get(screenId) ?? []).find((r3) => r3.id === historyId);
130081
+ if (!row2) return sendJson(res, 404, { error: "history_row_not_found", screenId, historyId });
130082
+ if (row2.op === "delete" || row2.descriptor == null) {
130027
130083
  state.localOverrides.delete(screenId);
130028
130084
  recordOverrideHistory(state, screenId, "revert", null, `revert to #${historyId} (deleted)`);
130029
130085
  } else {
130030
- state.localOverrides.set(screenId, row.descriptor);
130031
- recordOverrideHistory(state, screenId, "revert", row.descriptor, `revert to #${historyId}`);
130086
+ state.localOverrides.set(screenId, row2.descriptor);
130087
+ recordOverrideHistory(state, screenId, "revert", row2.descriptor, `revert to #${historyId}`);
130032
130088
  }
130033
130089
  invalidate(state, screenId);
130034
130090
  return sendJson(res, 200, { status: "ok", screenId, revertedTo: historyId });
@@ -133124,8 +133180,8 @@ function emptiedBase44(data) {
133124
133180
  const drain = (m2) => Object.fromEntries(Object.keys(m2).map((k2) => [k2, []]));
133125
133181
  return { seed: drain(data.seed), sample: drain(data.sample) };
133126
133182
  }
133127
- function fail3(status, code, message) {
133128
- return { ok: false, error: { status, code, message } };
133183
+ function fail3(status, code, message2) {
133184
+ return { ok: false, error: { status, code, message: message2 } };
133129
133185
  }
133130
133186
  function parseObject2(raw) {
133131
133187
  if (raw && typeof raw === "object" && !Array.isArray(raw)) return raw;
@@ -133215,11 +133271,11 @@ function compareScalar(a2, b2) {
133215
133271
  function scalarEqual(a2, b2) {
133216
133272
  return isScalar(a2) && isScalar(b2) && a2 === b2;
133217
133273
  }
133218
- function evalCondition(row, c2) {
133219
- if ("and" in c2) return c2.and.every((s2) => evalCondition(row, s2));
133220
- if ("or" in c2) return c2.or.some((s2) => evalCondition(row, s2));
133221
- if ("not" in c2) return !evalCondition(row, c2.not);
133222
- const rv = row[c2.field];
133274
+ function evalCondition(row2, c2) {
133275
+ if ("and" in c2) return c2.and.every((s2) => evalCondition(row2, s2));
133276
+ if ("or" in c2) return c2.or.some((s2) => evalCondition(row2, s2));
133277
+ if ("not" in c2) return !evalCondition(row2, c2.not);
133278
+ const rv = row2[c2.field];
133223
133279
  switch (c2.op) {
133224
133280
  case "eq":
133225
133281
  return scalarEqual(rv, c2.value);
@@ -133367,26 +133423,26 @@ function seedTokens(state, limit = 48) {
133367
133423
  }
133368
133424
  function synthesizeInput(control, resolve83, tokens2) {
133369
133425
  const id = `${control.type}.${control.callback}`;
133370
- const row = SYNTHESIZED_CONTROLS[id];
133371
- if (!row) return null;
133426
+ const row2 = SYNTHESIZED_CONTROLS[id];
133427
+ if (!row2) return null;
133372
133428
  const props = control.props;
133373
133429
  if (hasRowBinding(props)) return null;
133374
- if (row.from === "declared-options") {
133430
+ if (row2.from === "declared-options") {
133375
133431
  const ids = declaredOptionIds(props, resolve83);
133376
133432
  if (!ids.length) return null;
133377
- if (row.encoding === "string-array") {
133433
+ if (row2.encoding === "string-array") {
133378
133434
  const currentRaw2 = resolved(props.selectedIds, resolve83);
133379
133435
  const current3 = (Array.isArray(currentRaw2) ? currentRaw2 : []).filter((x2) => typeof x2 === "string");
133380
133436
  const pick5 = ids.find((o2) => !current3.includes(o2));
133381
133437
  if (pick5 === void 0) return null;
133382
133438
  const value2 = props.multiSelect === true ? [...current3, pick5] : [pick5];
133383
- return { key: row.key, value: value2, from: row.from, current: current3, control: id };
133439
+ return { key: row2.key, value: value2, from: row2.from, current: current3, control: id };
133384
133440
  }
133385
133441
  const currentRaw = resolved(props.selectedId, resolve83);
133386
133442
  const current2 = typeof currentRaw === "string" ? currentRaw : void 0;
133387
133443
  const pick4 = ids.find((o2) => o2 !== current2);
133388
133444
  if (pick4 === void 0) return null;
133389
- return { key: row.key, value: pick4, from: row.from, current: current2, control: id };
133445
+ return { key: row2.key, value: pick4, from: row2.from, current: current2, control: id };
133390
133446
  }
133391
133447
  if (!acceptsWords(props) || !acceptsWords(control.wrapper ?? {})) return null;
133392
133448
  const binding2 = typeof props.valuePath === "string" ? props.valuePath : typeof props.value === "string" && props.value.startsWith("$service:") ? props.value : void 0;
@@ -133396,7 +133452,7 @@ function synthesizeInput(control, resolve83, tokens2) {
133396
133452
  const max = typeof props.maxLength === "number" && props.maxLength > 0 ? props.maxLength : void 0;
133397
133453
  const pick3 = tokens2().find((t2) => t2 !== current && (max === void 0 || t2.length <= max));
133398
133454
  if (pick3 === void 0) return null;
133399
- return { key: row.key, value: pick3, from: row.from, current, control: id };
133455
+ return { key: row2.key, value: pick3, from: row2.from, current, control: id };
133400
133456
  }
133401
133457
  function acceptsWords(props) {
133402
133458
  if (props.secure === true) return false;
@@ -133678,8 +133734,8 @@ function onAppearOf(payload) {
133678
133734
  function rootOnAppear(descriptor) {
133679
133735
  return onAppearOf(descriptor?.payload);
133680
133736
  }
133681
- function isTransportReject(message) {
133682
- return message === REJECT_ALL_MESSAGE || message.startsWith("no data layer served ");
133737
+ function isTransportReject(message2) {
133738
+ return message2 === REJECT_ALL_MESSAGE || message2.startsWith("no data layer served ");
133683
133739
  }
133684
133740
  function isUnservedRequest(e2) {
133685
133741
  const m2 = e2 instanceof Error ? e2.message : typeof e2 === "string" ? e2 : "";
@@ -133895,11 +133951,11 @@ function localDatabaseAnswer(schema, store, queue, method, params) {
133895
133951
  if (!obj5 || typeof obj5.id !== "string") {
133896
133952
  throw new Error("local_database.upsert: object with string id required");
133897
133953
  }
133898
- const row = detached(obj5);
133899
- const at2 = rows.findIndex((r3) => r3.id === row.id);
133954
+ const row2 = detached(obj5);
133955
+ const at2 = rows.findIndex((r3) => r3.id === row2.id);
133900
133956
  const next = [...rows];
133901
- if (at2 >= 0) next[at2] = row;
133902
- else next.push(row);
133957
+ if (at2 >= 0) next[at2] = row2;
133958
+ else next.push(row2);
133903
133959
  store.set(entity, next);
133904
133960
  return {};
133905
133961
  }
@@ -134478,13 +134534,13 @@ async function crawlScreen(opts) {
134478
134534
  async function crawlScreenJourney(opts) {
134479
134535
  return withSwallowedRejections(async () => {
134480
134536
  const findings = [];
134481
- const fail6 = (message, step) => {
134537
+ const fail6 = (message2, step) => {
134482
134538
  findings.push({
134483
134539
  screen: opts.screenId,
134484
134540
  trigger: step ? { tap: step.component ?? null, key: "journey", action: step.action } : "boot",
134485
134541
  invariant: "journey-failed",
134486
134542
  severity: "error",
134487
- message,
134543
+ message: message2,
134488
134544
  hint: "Keep a journey screen-local. Use an exact descriptor action id, pass the typed params it receives on device, and assert visible completion text."
134489
134545
  });
134490
134546
  };
@@ -135405,11 +135461,11 @@ async function crawlScreenDeep(opts, deep) {
135405
135461
  return { findings: dedupe(findings), nodesVisited: visited.size, dispatches, capped, ...effects.length ? { effects } : {} };
135406
135462
  });
135407
135463
  }
135408
- function effectiveSiteForRow(site, row) {
135464
+ function effectiveSiteForRow(site, row2) {
135409
135465
  const merged = { ...site.params ?? {}, ...site.args ?? {} };
135410
135466
  const substituted = {};
135411
135467
  for (const [k2, v2] of Object.entries(merged)) {
135412
- substituted[k2] = typeof v2 === "string" && v2.startsWith("$item.") ? pathValue(row, v2.slice("$item.".length)) : v2 === "$item" ? row : v2;
135468
+ substituted[k2] = typeof v2 === "string" && v2.startsWith("$item.") ? pathValue(row2, v2.slice("$item.".length)) : v2 === "$item" ? row2 : v2;
135413
135469
  }
135414
135470
  return { ...site, params: substituted, args: void 0 };
135415
135471
  }
@@ -135603,8 +135659,8 @@ async function crawlScreenRelations(opts) {
135603
135659
  const undoIsRowBound = isRowBound(b2);
135604
135660
  const after = await replay([a2, b2], (i2, bootState, prev) => {
135605
135661
  if (i2 !== 1) return null;
135606
- const row = newlyAddedRow(bootState, prev, b2.itemsPath);
135607
- if (row) return row;
135662
+ const row2 = newlyAddedRow(bootState, prev, b2.itemsPath);
135663
+ if (row2) return row2;
135608
135664
  return undoIsRowBound ? UNBINDABLE_ROW : null;
135609
135665
  });
135610
135666
  if (!after) continue;
@@ -135663,7 +135719,7 @@ var init_screen_crawl = __esm({
135663
135719
  WIX_DATA_QUERY = /\/wix-data\/v2\/items\/query$/;
135664
135720
  WIX_DATA_ANY = /\/wix-data\//;
135665
135721
  CAPABILITY_ACTION = /^capability\.([a-z0-9_]+)\.([A-Za-z0-9_]+)$/;
135666
- detached = (row) => JSON.parse(JSON.stringify(row));
135722
+ detached = (row2) => JSON.parse(JSON.stringify(row2));
135667
135723
  CRAWL_CLOCK = Date.parse("2026-01-01T00:00:00.000Z");
135668
135724
  MEMBER_IDENTITY_ACTION = /memberIdentity|member\.identity|currentMember/i;
135669
135725
  BLANK_WHEN_BOUND = {
@@ -138424,7 +138480,7 @@ function penalty(m2, size) {
138424
138480
  if (c2 === m2[y2][x2 + 1] && c2 === m2[y2 + 1][x2] && c2 === m2[y2 + 1][x2 + 1]) score += 3;
138425
138481
  }
138426
138482
  let dark = 0;
138427
- for (const row of m2) for (const c2 of row) if (c2) dark++;
138483
+ for (const row2 of m2) for (const c2 of row2) if (c2) dark++;
138428
138484
  const total = size * size;
138429
138485
  score += Math.floor(Math.abs(dark * 20 - total * 10) / total) * 10;
138430
138486
  return score;
@@ -138497,7 +138553,7 @@ function encodeQr(text11) {
138497
138553
  }
138498
138554
  let best = null, bestMask = 0, bestScore = Infinity;
138499
138555
  for (let mask = 0; mask < 8; mask++) {
138500
- const cand = modules.map((row) => [...row]);
138556
+ const cand = modules.map((row2) => [...row2]);
138501
138557
  for (let y2 = 0; y2 < size; y2++)
138502
138558
  for (let x2 = 0; x2 < size; x2++) if (!reserved[y2][x2] && MASKS[mask](x2, y2)) cand[y2][x2] = !cand[y2][x2];
138503
138559
  applyFormat(cand, size, mask);
@@ -139109,7 +139165,7 @@ function lanOf(value2) {
139109
139165
  return null;
139110
139166
  }
139111
139167
  try {
139112
- return { url, qr: encodeQr(url).modules.map((row) => row.map((m2) => m2 ? "1" : "0").join("")) };
139168
+ return { url, qr: encodeQr(url).modules.map((row2) => row2.map((m2) => m2 ? "1" : "0").join("")) };
139113
139169
  } catch {
139114
139170
  return { url, qr: null };
139115
139171
  }
@@ -140620,11 +140676,11 @@ function validateAmpersand(xmlData, i2) {
140620
140676
  }
140621
140677
  return i2;
140622
140678
  }
140623
- function getErrorObject(code, message, lineNumber) {
140679
+ function getErrorObject(code, message2, lineNumber) {
140624
140680
  return {
140625
140681
  err: {
140626
140682
  code,
140627
- msg: message,
140683
+ msg: message2,
140628
140684
  line: lineNumber.line || lineNumber,
140629
140685
  col: lineNumber.col
140630
140686
  }
@@ -147832,6 +147888,7 @@ var init_home_descriptor = __esm({
147832
147888
  var template_trim_exports = {};
147833
147889
  __export(template_trim_exports, {
147834
147890
  TrimRefusal: () => TrimRefusal,
147891
+ bundlesOf: () => bundlesOf,
147835
147892
  comparable: () => comparable,
147836
147893
  compareErrors: () => compareErrors,
147837
147894
  leftoverNavRefs: () => leftoverNavRefs,
@@ -148058,8 +148115,8 @@ function rowTemplateTarget(entry, removed) {
148058
148115
  if (!isNode3(entry)) return void 0;
148059
148116
  const props = entry.body.props;
148060
148117
  if (!props?.itemsPath || !Array.isArray(props.items)) return void 0;
148061
- for (const row of props.items) {
148062
- const to2 = tapTarget(row);
148118
+ for (const row2 of props.items) {
148119
+ const to2 = tapTarget(row2);
148063
148120
  if (to2 && removed(to2)) return to2;
148064
148121
  }
148065
148122
  return void 0;
@@ -148713,17 +148770,17 @@ async function runTemplateTrim(req, deps) {
148713
148770
  validate: validate6 ? { counts: validate6.counts ?? null, ...validate6.tail ? { tail: validate6.tail } : {} } : null
148714
148771
  });
148715
148772
  const abort = (error, cause, validate6) => {
148716
- const message = cause?.message ?? String(cause);
148773
+ const message2 = cause?.message ?? String(cause);
148717
148774
  try {
148718
148775
  restore();
148719
148776
  } catch (e2) {
148720
148777
  return {
148721
148778
  code: 1,
148722
- result: { ok: false, error: `${error} (${message}), and restoring the originals failed too (${e2.message})`, rolledBack: false, backup: backupRel, hint: `the originals are in ${backupRel} \u2014 copy dev/index.ts, config.ts and tier5-src/* back by hand`, ...base(validate6) }
148779
+ result: { ok: false, error: `${error} (${message2}), and restoring the originals failed too (${e2.message})`, rolledBack: false, backup: backupRel, hint: `the originals are in ${backupRel} \u2014 copy dev/index.ts, config.ts and tier5-src/* back by hand`, ...base(validate6) }
148723
148780
  };
148724
148781
  }
148725
148782
  dropBackup();
148726
- return { code: 1, result: { ok: false, error: `${error} (${message}); every file was restored`, rolledBack: true, ...base(validate6) } };
148783
+ return { code: 1, result: { ok: false, error: `${error} (${message2}); every file was restored`, rolledBack: true, ...base(validate6) } };
148727
148784
  };
148728
148785
  try {
148729
148786
  mkdirSync20(join34(backup, "dev"), { recursive: true });
@@ -148855,8 +148912,8 @@ var init_template_trim = __esm({
148855
148912
  init_home_descriptor();
148856
148913
  TrimRefusal = class extends Error {
148857
148914
  detail;
148858
- constructor(message, detail = {}) {
148859
- super(message);
148915
+ constructor(message2, detail = {}) {
148916
+ super(message2);
148860
148917
  this.detail = detail;
148861
148918
  }
148862
148919
  };
@@ -148887,6 +148944,129 @@ var init_template_trim = __esm({
148887
148944
  }
148888
148945
  });
148889
148946
 
148947
+ // src/template-evaluate.ts
148948
+ var template_evaluate_exports = {};
148949
+ __export(template_evaluate_exports, {
148950
+ evaluatedView: () => evaluatedView,
148951
+ templatedLabel: () => templatedLabel
148952
+ });
148953
+ async function settle(work, what) {
148954
+ let timer;
148955
+ try {
148956
+ return await Promise.race([
148957
+ Promise.resolve().then(work),
148958
+ new Promise((_2, reject) => {
148959
+ timer = setTimeout(() => reject(new Error(`${what} did not finish within ${BUILD_TIMEOUT_MS / 1e3}s`)), BUILD_TIMEOUT_MS);
148960
+ })
148961
+ ]);
148962
+ } finally {
148963
+ clearTimeout(timer);
148964
+ }
148965
+ }
148966
+ function captureCount(pattern) {
148967
+ try {
148968
+ return (new RegExp(`${pattern.source}|`).exec("")?.length ?? 1) - 1;
148969
+ } catch {
148970
+ return 1;
148971
+ }
148972
+ }
148973
+ function buildContext(module, name) {
148974
+ let store = {};
148975
+ try {
148976
+ store = module.createStore?.(name) ?? {};
148977
+ } catch {
148978
+ store = {};
148979
+ }
148980
+ return {
148981
+ store,
148982
+ toggles: {},
148983
+ query: new URLSearchParams(),
148984
+ caller: { entitled: false },
148985
+ serverBaseUrl: "http://localhost",
148986
+ bundleIntegrity: () => "sha256-unpinned",
148987
+ asset: () => null
148988
+ };
148989
+ }
148990
+ function row(label3, kind, built, buildError) {
148991
+ const block = built && typeof built === "object" && !Array.isArray(built) ? built : {};
148992
+ const json8 = JSON.stringify(block, null, 2) ?? "{}";
148993
+ return {
148994
+ label: label3,
148995
+ kind,
148996
+ block,
148997
+ bundles: buildError ? [] : bundlesOf(block),
148998
+ lines: json8.split("\n").length,
148999
+ bytes: Buffer.byteLength(json8),
149000
+ ...buildError ? { buildError } : {}
149001
+ };
149002
+ }
149003
+ async function buildTemplated(t2, ctx) {
149004
+ const placeholder3 = Array.from({ length: Math.max(1, captureCount(t2.pattern)) }, () => ID_PLACEHOLDER);
149005
+ let error;
149006
+ try {
149007
+ const built = await settle(() => t2.build(ctx, placeholder3), `the templated route ${t2.display}`);
149008
+ if (built) return { built };
149009
+ } catch (e2) {
149010
+ error = message(e2);
149011
+ }
149012
+ if (typeof t2.seedIds === "function") {
149013
+ try {
149014
+ const ids = await settle(() => t2.seedIds(ctx), `seedIds of ${t2.display}`);
149015
+ for (const id of Array.isArray(ids) ? ids.slice(0, 20) : []) {
149016
+ const m2 = typeof id === "string" ? t2.pattern.exec(id) : null;
149017
+ if (!m2) continue;
149018
+ const built = await settle(() => t2.build(ctx, m2.slice(1)), `the templated route ${t2.display}`);
149019
+ if (built) return { built };
149020
+ }
149021
+ } catch (e2) {
149022
+ error ??= message(e2);
149023
+ }
149024
+ }
149025
+ return { error: error ?? "the builder returned no descriptor" };
149026
+ }
149027
+ async function evaluatedView(dir) {
149028
+ const { loadContent: loadContent2 } = await Promise.resolve().then(() => (init_loader(), loader_exports));
149029
+ (await Promise.resolve().then(() => (init_build(), build_exports))).bundledRuntimeDir();
149030
+ let loaded;
149031
+ try {
149032
+ loaded = await loadContent2(dir);
149033
+ } catch (e2) {
149034
+ throw new TrimRefusal(`dev/index.ts could not be loaded to read its screens: ${message(e2)}`);
149035
+ }
149036
+ const m2 = loaded.module;
149037
+ const ctx = buildContext(m2, loaded.name);
149038
+ const routes = [];
149039
+ for (const [id, build3] of Object.entries(m2.screens?.exact ?? {})) {
149040
+ try {
149041
+ const built = await settle(() => build3(ctx), `the screen ${id}`);
149042
+ routes.push(built ? row(id, "screen", built) : row(id, "screen", void 0, "the builder returned no descriptor"));
149043
+ } catch (e2) {
149044
+ routes.push(row(id, "screen", void 0, message(e2)));
149045
+ }
149046
+ }
149047
+ for (const t2 of m2.screens?.templated ?? []) {
149048
+ const { built, error } = await buildTemplated(t2, ctx);
149049
+ routes.push(row(templatedLabel(String(t2.display)), "templated", built, built ? void 0 : error));
149050
+ }
149051
+ const nav = m2.config?.navigation;
149052
+ return {
149053
+ layout: "evaluated",
149054
+ home: String(m2.homeScreenId ?? ""),
149055
+ routes,
149056
+ nav: nav && typeof nav === "object" && !Array.isArray(nav) ? nav : {}
149057
+ };
149058
+ }
149059
+ var BUILD_TIMEOUT_MS, ID_PLACEHOLDER, templatedLabel, message;
149060
+ var init_template_evaluate = __esm({
149061
+ "src/template-evaluate.ts"() {
149062
+ init_template_trim();
149063
+ BUILD_TIMEOUT_MS = 1e4;
149064
+ ID_PLACEHOLDER = "__HIMI_ID__";
149065
+ templatedLabel = (display) => display.replace(/[[{].*$/, "").replace(/[_/]+$/, "") || display;
149066
+ message = (e2) => e2 instanceof Error ? e2.message : String(e2);
149067
+ }
149068
+ });
149069
+
148890
149070
  // src/template-adopt.ts
148891
149071
  var template_adopt_exports = {};
148892
149072
  __export(template_adopt_exports, {
@@ -148899,6 +149079,7 @@ __export(template_adopt_exports, {
148899
149079
  copyHits: () => copyHits,
148900
149080
  droppedPrimaryTaps: () => droppedPrimaryTaps,
148901
149081
  findRoute: () => findRoute,
149082
+ inspectAnyLayout: () => inspectAnyLayout,
148902
149083
  inspectApp: () => inspectApp,
148903
149084
  inventorySummary: () => inventorySummary,
148904
149085
  keepFromSpec: () => keepFromSpec,
@@ -149051,8 +149232,8 @@ function copyHits(dir, re2, limit = 200) {
149051
149232
  }
149052
149233
  return { hits, total };
149053
149234
  }
149054
- function navigationOf(app) {
149055
- const nav = app.nav.value;
149235
+ function navigationOf(navValue) {
149236
+ const nav = navValue ?? {};
149056
149237
  const tabs = (nav.tabBar?.items ?? []).map((t2) => t2.screenId).filter((s2) => typeof s2 === "string");
149057
149238
  return { tabs, linkable: Array.isArray(nav.linkableScreens) ? nav.linkableScreens.length : 0 };
149058
149239
  }
@@ -149070,9 +149251,40 @@ function journeysFor(screen, actions) {
149070
149251
  expectText: ["<FILL: text the screen shows once the submit succeeds>"]
149071
149252
  }));
149072
149253
  }
149254
+ function parsedView(src) {
149255
+ const app = parseApp(src.dev, src.config);
149256
+ return {
149257
+ layout: "generated",
149258
+ home: app.home.label,
149259
+ routes: app.routes.map((r3) => ({
149260
+ label: r3.label,
149261
+ kind: r3.kind,
149262
+ block: r3.block,
149263
+ bundles: r3.bundles,
149264
+ lines: src.dev.slice(r3.lineStart, r3.end).split("\n").length - 1,
149265
+ bytes: r3.end - r3.lineStart
149266
+ })),
149267
+ nav: app.nav.value
149268
+ };
149269
+ }
149073
149270
  function inspectApp(dir) {
149074
149271
  const src = readAppSources(dir);
149075
- const app = parseApp(src.dev, src.config);
149272
+ return inventoryOf(dir, src, parsedView(src));
149273
+ }
149274
+ async function inspectAnyLayout(dir) {
149275
+ const src = readAppSources(dir);
149276
+ let view;
149277
+ try {
149278
+ view = parsedView(src);
149279
+ } catch (e2) {
149280
+ if (!(e2 instanceof TrimRefusal)) throw e2;
149281
+ const { evaluatedView: evaluatedView2 } = await Promise.resolve().then(() => (init_template_evaluate(), template_evaluate_exports));
149282
+ view = await evaluatedView2(dir);
149283
+ return { ...inventoryOf(dir, src, view), layoutNote: e2.message };
149284
+ }
149285
+ return inventoryOf(dir, src, view);
149286
+ }
149287
+ function inventoryOf(dir, src, app) {
149076
149288
  const reach = workerReach(src);
149077
149289
  const bootRequests = [];
149078
149290
  const matrix = [];
@@ -149084,10 +149296,11 @@ function inspectApp(dir) {
149084
149296
  screens.push({
149085
149297
  id: r3.label,
149086
149298
  kind: r3.kind,
149087
- lines: src.dev.slice(r3.lineStart, r3.end).split("\n").length - 1,
149088
- bytes: r3.end - r3.lineStart,
149299
+ lines: r3.lines,
149300
+ bytes: r3.bytes,
149089
149301
  workers: r3.bundles,
149090
- onAppear: [...new Set(appear.map((a2) => a2.actionId))]
149302
+ onAppear: [...new Set(appear.map((a2) => a2.actionId))],
149303
+ ...r3.buildError ? { buildError: r3.buildError } : {}
149091
149304
  });
149092
149305
  for (const a2 of appear) {
149093
149306
  for (const w2 of r3.bundles) {
@@ -149095,33 +149308,37 @@ function inspectApp(dir) {
149095
149308
  if (!reaches(wr2)) continue;
149096
149309
  const via = [...wr2.wixModules, ...wr2.rawWixApi ? ["wixApi"] : [], ...wr2.fetch ? ["fetch"] : []];
149097
149310
  if (!bootRequests.some((b2) => b2.screen === r3.label && b2.actionId === a2.actionId && b2.worker === w2)) {
149098
- bootRequests.push({ screen: r3.label, actionId: a2.actionId, worker: w2, via, home: r3.label === app.home.label });
149311
+ bootRequests.push({ screen: r3.label, actionId: a2.actionId, worker: w2, via, home: r3.label === app.home });
149099
149312
  }
149100
149313
  }
149101
149314
  }
149102
149315
  const pick3 = (k2) => [...new Set(actions.filter((a2) => a2.kind === k2).map((a2) => a2.action))].sort();
149103
- const row = {
149316
+ const row2 = {
149104
149317
  screen: r3.label,
149105
149318
  reads: [...new Set(r3.bundles.flatMap((w2) => reach.get(w2)?.wixModules ?? []))].sort(),
149106
149319
  writes: pick3("write"),
149107
149320
  destructive: pick3("destructive"),
149108
149321
  payment: pick3("payment")
149109
149322
  };
149110
- const prior = matrix.find((m2) => m2.screen === row.screen);
149323
+ const prior = matrix.find((m2) => m2.screen === row2.screen);
149111
149324
  if (prior) {
149112
- for (const k2 of ["reads", "writes", "destructive", "payment"]) prior[k2] = [.../* @__PURE__ */ new Set([...prior[k2], ...row[k2]])].sort();
149113
- } else if (row.writes.length || row.destructive.length || row.payment.length) matrix.push(row);
149325
+ for (const k2 of ["reads", "writes", "destructive", "payment"]) prior[k2] = [.../* @__PURE__ */ new Set([...prior[k2], ...row2[k2]])].sort();
149326
+ } else if (row2.writes.length || row2.destructive.length || row2.payment.length) matrix.push(row2);
149114
149327
  journeys.push(...journeysFor(r3.label, actions));
149115
149328
  }
149329
+ const unreadScreens = screens.filter((s2) => s2.buildError).map((s2) => s2.id);
149116
149330
  return {
149117
149331
  ok: true,
149118
149332
  dir,
149119
- home: app.home.label,
149333
+ layout: app.layout,
149334
+ home: app.home,
149120
149335
  screens,
149121
149336
  workers: [...reach.values()],
149122
- navigation: navigationOf(app),
149337
+ navigation: navigationOf(app.nav),
149123
149338
  bootRequests,
149124
- bootsOffline: bootRequests.length === 0,
149339
+ // The preflight errs to "may request": a screen it could not read is not proof of offline.
149340
+ bootsOffline: bootRequests.length === 0 && unreadScreens.length === 0,
149341
+ ...unreadScreens.length ? { unreadScreens } : {},
149125
149342
  placeholders: copyHits(dir, PLACEHOLDER),
149126
149343
  sampleCopy: copyHits(dir, SAMPLE_COPY, 50),
149127
149344
  matrix,
@@ -149151,11 +149368,12 @@ function inventorySummary(inv) {
149151
149368
  bootsOffline: inv.bootsOffline,
149152
149369
  bootRequests: inv.bootRequests.length,
149153
149370
  ...inv.bootRequests.some((b2) => b2.home) ? { homeRequestsAtBoot: true } : {},
149371
+ ...inv.unreadScreens?.length ? { unreadScreens: inv.unreadScreens.length } : {},
149154
149372
  placeholders: inv.placeholders.total,
149155
149373
  sampleCopy: inv.sampleCopy.total,
149156
149374
  riskyScreens: inv.matrix.length,
149157
149375
  journeyStubs: inv.journeys.length,
149158
- next: inv.bootsOffline ? "Nothing requests at boot \u2014 the local preview needs no data consent. `himi template inspect` for the full inventory." : `${inv.bootRequests.length} screen action(s) can call Wix/network on appear \u2014 get data consent (or mock them in dev/net-mocks.json) before booting the preview. Details: ${ADOPT_FILE}.`
149376
+ next: inv.bootsOffline ? "Nothing requests at boot \u2014 the local preview needs no data consent. `himi template inspect` for the full inventory." : inv.bootRequests.length === 0 ? `${inv.unreadScreens?.length ?? 0} screen(s) could not be built to read (see buildError), so whether they request on appear is unknown \u2014 treat the preview as needing data consent until they build. Details: ${ADOPT_FILE}.` : `${inv.bootRequests.length} screen action(s) can call Wix/network on appear \u2014 get data consent (or mock them in dev/net-mocks.json) before booting the preview. Details: ${ADOPT_FILE}.`
149159
149377
  };
149160
149378
  }
149161
149379
  function writeNoFollow(dir, rel, body) {
@@ -150770,7 +150988,7 @@ function ignoredChange(relPath, isDirectory = () => false, rasterDir = "assets/h
150770
150988
  }
150771
150989
  if (!parts.length) return true;
150772
150990
  const [top] = parts;
150773
- if ([".himi", "dist", "node_modules", ".git", ".build", ...AGENT_TOOLING_DIRS].includes(top)) return true;
150991
+ if ([".himi", ".wix", "dist", "node_modules", ".git", ".build", ...AGENT_TOOLING_DIRS].includes(top)) return true;
150774
150992
  if (parts.length === 1 && AGENT_TOOLING_ROOT_FILES.includes(top)) return true;
150775
150993
  if ((top === "shots" || top === "evidence") && (parts.length > 1 || isDirectory(top))) return true;
150776
150994
  const name = parts[parts.length - 1];
@@ -151094,10 +151312,10 @@ function screenStateOf(services, html, opts = {}) {
151094
151312
  let empty2;
151095
151313
  for (const top of states) for (const s2 of layers2(top)) {
151096
151314
  const status = typeof s2.status === "string" ? s2.status.toLowerCase() : typeof s2.phase === "string" ? s2.phase.toLowerCase() : void 0;
151097
- const message = errorMessageOf(s2);
151315
+ const message2 = errorMessageOf(s2);
151098
151316
  const flagged = status === "error" || status === "failed" || s2.hasError === true || s2.isError === true || s2.isErrored === true || s2.errored === true || s2.noError === false || s2.notErrored === false;
151099
- if (flagged && !(message && page !== void 0 && !painted(message, page)) || message && page !== void 0 && painted(message, page)) {
151100
- const line = message && painted(message, page) ? quotableLine(message) : void 0;
151317
+ if (flagged && !(message2 && page !== void 0 && !painted(message2, page)) || message2 && page !== void 0 && painted(message2, page)) {
151318
+ const line = message2 && painted(message2, page) ? quotableLine(message2) : void 0;
151101
151319
  return { state: "error", ...line ? { line } : {}, ...opts.offline ? { offline: true } : {} };
151102
151320
  }
151103
151321
  if (status === "loading" || s2.isLoading === true || s2.noLoading === false) loading = true;
@@ -151161,9 +151379,9 @@ function homeStateCaveat(state) {
151161
151379
  if (state.state === "loading") return "the home screen is still on its loading state (its data never finished loading)";
151162
151380
  return `the home screen shows its empty state${quote}`;
151163
151381
  }
151164
- function withHomeCaveat(message, caveat) {
151165
- if (!caveat) return message;
151166
- const body = message.endsWith(".") ? message.slice(0, -1) : message;
151382
+ function withHomeCaveat(message2, caveat) {
151383
+ if (!caveat) return message2;
151384
+ const body = message2.endsWith(".") ? message2.slice(0, -1) : message2;
151167
151385
  return `${body} \u2014 but ${caveat}.`;
151168
151386
  }
151169
151387
  var SHOT_STATES_FILE, KEEP, LINE_MAX, str4, sha256Of;
@@ -151665,8 +151883,8 @@ async function openBoardForSession(dir, cwd = process.cwd()) {
151665
151883
  return { opened: false, error: `the build board was not created: ${e2.message} \u2014 \`himi studio --no-open\` in the app retries it` };
151666
151884
  }
151667
151885
  }
151668
- function journal(dir, milestone, message, extra) {
151669
- const r3 = journalMilestone(dir, { milestone, message, ...extra });
151886
+ function journal(dir, milestone, message2, extra) {
151887
+ const r3 = journalMilestone(dir, { milestone, message: message2, ...extra });
151670
151888
  return r3.journaled ? { journaled: true, milestone, message: r3.entry.message } : void 0;
151671
151889
  }
151672
151890
  function stillBuilding(dir, image, now) {
@@ -151693,7 +151911,7 @@ function afterRenderPng(dir, input) {
151693
151911
  let postcard;
151694
151912
  if (isHome) {
151695
151913
  const d2 = initDivergence(dir);
151696
- const said = (message) => withHomeCaveat(message, homeCaveat(dir, input.pngFile));
151914
+ const said = (message2) => withHomeCaveat(message2, homeCaveat(dir, input.pngFile));
151697
151915
  postcard = d2.state === "unchanged" ? journal(dir, "first-look", said(startingPointMessage(d2.template)), { ref: STARTING_POINT_REF, image: input.pngFile, ...at2 }) : d2.state === "diverged" ? journal(dir, "first-look", said(yourFirstLookMessage(dir)), { image: input.pngFile, ...at2 }) : journal(dir, "first-look", said(`First look at ${appName(dir)}: the home screen, where the build starts.`), { image: input.pngFile, ...at2 });
151698
151916
  postcard ??= stillBuilding(dir, input.pngFile, input.now ?? /* @__PURE__ */ new Date());
151699
151917
  }
@@ -151711,8 +151929,8 @@ function testPostcardMessage(s2) {
151711
151929
  const unreached = s2.unreached ? `, ${plural2(s2.unreached, "screen")} nothing links to` : "";
151712
151930
  return `Test crawl: ${plural2(s2.screens, "screen")} and ${plural2(s2.actions ?? 0, "action")} exercised${links}${unreached} \u2014 ${s2.errors ? `${plural2(s2.errors, "error")} to fix` : "no errors"}.`;
151713
151931
  }
151714
- function testPostcardCounts(message) {
151715
- const head = message.split(". ")[0];
151932
+ function testPostcardCounts(message2) {
151933
+ const head = message2.split(". ")[0];
151716
151934
  const counts = /* @__PURE__ */ new Map();
151717
151935
  const num4 = (re2, label3) => {
151718
151936
  const m2 = re2.exec(head);
@@ -152770,8 +152988,8 @@ function tokenNumericIssuesFor(dir) {
152770
152988
  }
152771
152989
  function tokenColorIssues(dir, tokensPathOverride) {
152772
152990
  const issues = [];
152773
- const error = (message) => issues.push({ screen: null, pass: "tokens", severity: "error", message });
152774
- const warn3 = (message) => issues.push({ screen: null, pass: "tokens", severity: "warning", message });
152991
+ const error = (message2) => issues.push({ screen: null, pass: "tokens", severity: "error", message: message2 });
152992
+ const warn3 = (message2) => issues.push({ screen: null, pass: "tokens", severity: "warning", message: message2 });
152775
152993
  const configured = tokensPathOverride ? { path: tokensPathOverride } : configuredTokensPath(dir);
152776
152994
  if (configured.computed) {
152777
152995
  warn3(
@@ -153324,6 +153542,15 @@ function syntaxErrors(file2, text11) {
153324
153542
  const out2 = ts7.transpileModule(text11, { fileName: file2, reportDiagnostics: true, compilerOptions: { target: ts7.ScriptTarget.ES2022 } });
153325
153543
  return (out2.diagnostics ?? []).map((d2) => ts7.flattenDiagnosticMessageText(d2.messageText, "\n"));
153326
153544
  }
153545
+ function parses(dev, config) {
153546
+ try {
153547
+ parseApp(dev, config);
153548
+ return true;
153549
+ } catch (e2) {
153550
+ if (e2 instanceof TrimRefusal) return false;
153551
+ throw e2;
153552
+ }
153553
+ }
153327
153554
  function sweepCopy(dir, pairs, dryRun) {
153328
153555
  for (const [from] of pairs) {
153329
153556
  if (from.trim().length < 3) throw new TrimRefusal(`refusing to sweep "${from}": a replacement source must be at least 3 characters`);
@@ -153362,12 +153589,14 @@ function sweepCopy(dir, pairs, dryRun) {
153362
153589
  if (errors.length) throw new TrimRefusal(`the sweep would break ${f2} \u2014 nothing written: ${errors[0]}`);
153363
153590
  next.set(f2, out2);
153364
153591
  }
153365
- const dev = next.get("dev/index.ts") ?? readFileSync59(join49(dir, "dev", "index.ts"), "utf8");
153366
- const config = next.get("config.ts") ?? readFileSync59(join49(dir, "config.ts"), "utf8");
153367
- try {
153368
- parseApp(dev, config);
153369
- } catch (e2) {
153370
- throw new TrimRefusal(`the sweep would leave dev/index.ts or config.ts unparseable \u2014 nothing written: ${e2.message}`);
153592
+ const devBefore = readFileSync59(join49(dir, "dev", "index.ts"), "utf8");
153593
+ const configBefore = readFileSync59(join49(dir, "config.ts"), "utf8");
153594
+ if (parses(devBefore, configBefore)) {
153595
+ try {
153596
+ parseApp(next.get("dev/index.ts") ?? devBefore, next.get("config.ts") ?? configBefore);
153597
+ } catch (e2) {
153598
+ throw new TrimRefusal(`the sweep would leave dev/index.ts or config.ts unparseable \u2014 nothing written: ${e2.message}`);
153599
+ }
153371
153600
  }
153372
153601
  if (!dryRun) for (const [f2, t2] of next) writeFileSync20(join49(dir, f2), t2);
153373
153602
  const g2 = new RegExp(PLACEHOLDER.source, `${PLACEHOLDER.flags.replace("g", "")}g`);
@@ -153654,12 +153883,12 @@ function recommendTemplates(input) {
153654
153883
  const owner = OWNER_WORDS.test(text11);
153655
153884
  const want = new Set(tokens(text11));
153656
153885
  const byName3 = /* @__PURE__ */ new Map();
153657
- for (const row of input.catalog) {
153886
+ for (const row2 of input.catalog) {
153658
153887
  const reasons = [];
153659
153888
  let score = 0;
153660
- const isOwner = /owner/.test(row.name);
153889
+ const isOwner = /owner/.test(row2.name);
153661
153890
  if (want.size) {
153662
- const hay = new Set(tokens([row.name, row.title ?? "", row.description ?? "", ...row.tags ?? [], row.category ?? ""].join(" ")));
153891
+ const hay = new Set(tokens([row2.name, row2.title ?? "", row2.description ?? "", ...row2.tags ?? [], row2.category ?? ""].join(" ")));
153663
153892
  const hit = [...want].filter((t2) => hay.has(t2));
153664
153893
  if (hit.length) {
153665
153894
  score += hit.length / want.size;
@@ -153674,7 +153903,7 @@ function recommendTemplates(input) {
153674
153903
  score -= 0.3;
153675
153904
  }
153676
153905
  }
153677
- byName3.set(row.name, { name: row.name, score, reasons, ...row.source ? { source: row.source } : {} });
153906
+ byName3.set(row2.name, { name: row2.name, score, reasons, ...row2.source ? { source: row2.source } : {} });
153678
153907
  }
153679
153908
  if (input.verticals?.length) {
153680
153909
  for (const c2 of scoreOverlays(input.verticals, "")) {
@@ -156453,8 +156682,8 @@ function navConfigPathErrors(config) {
156453
156682
  if (!tabs && !rail) {
156454
156683
  const home = typeof config.homeScreenId === "string" && config.homeScreenId.length > 0 ? config.homeScreenId : void 0;
156455
156684
  const rows = list2(obj5(config.drawer)?.items);
156456
- const row = home !== void 0 ? rows.find(([it2]) => it2.screenId === home) : firstOf(obj5(config.drawer)?.items, true);
156457
- homes.push(["drawer.items", row]);
156685
+ const row2 = home !== void 0 ? rows.find(([it2]) => it2.screenId === home) : firstOf(obj5(config.drawer)?.items, true);
156686
+ homes.push(["drawer.items", row2]);
156458
156687
  }
156459
156688
  for (const [where, first] of homes) {
156460
156689
  if (first && first[0].hiddenUntilResolved) {
@@ -156483,9 +156712,9 @@ __export(nav_lint_exports, {
156483
156712
  });
156484
156713
  async function navIssues(dir, strict) {
156485
156714
  const issues = [];
156486
- const push = (severity, ruleCode, message) => issues.push({ screen: null, pass: "nav", severity, message, ruleCode });
156487
- const error = (ruleCode, message) => push("error", ruleCode, message);
156488
- const warn3 = (ruleCode, message) => push(strict ? "error" : "warning", ruleCode, message);
156715
+ const push = (severity, ruleCode, message2) => issues.push({ screen: null, pass: "nav", severity, message: message2, ruleCode });
156716
+ const error = (ruleCode, message2) => push("error", ruleCode, message2);
156717
+ const warn3 = (ruleCode, message2) => push(strict ? "error" : "warning", ruleCode, message2);
156489
156718
  let cfg;
156490
156719
  try {
156491
156720
  cfg = await loadAppConfigModule(dir);
@@ -156552,10 +156781,10 @@ async function navIssues(dir, strict) {
156552
156781
  );
156553
156782
  }
156554
156783
  const servedHome = homeScreenIdOf(dir) ?? void 0;
156555
- for (const message of navConfigPathErrors({ ...nav, homeScreenId: servedHome })) {
156556
- error("nav-path-malformed", `navigation.${message}`);
156784
+ for (const message2 of navConfigPathErrors({ ...nav, homeScreenId: servedHome })) {
156785
+ error("nav-path-malformed", `navigation.${message2}`);
156557
156786
  }
156558
- for (const message of navSharedIdErrors(nav)) error("nav-row-id-shadows-tab", `navigation.${message}`);
156787
+ for (const message2 of navSharedIdErrors(nav)) error("nav-row-id-shadows-tab", `navigation.${message2}`);
156559
156788
  const topBarDefault = nav.topBarDefault;
156560
156789
  if (isPlainObject2(topBarDefault)) {
156561
156790
  for (const key3 of SCREEN_ONLY_TOP_BAR_KEYS) {
@@ -156685,14 +156914,14 @@ function navSharedIdErrors(nav) {
156685
156914
  for (const [tab] of items("tabBar")) if (typeof tab.id === "string" && !tabScreens.has(tab.id)) tabScreens.set(tab.id, tab.screenId);
156686
156915
  const out2 = [];
156687
156916
  for (const key3 of ["drawer", "sidebar"]) {
156688
- for (const [row, i2] of items(key3)) {
156689
- if (typeof row.id !== "string" || !tabScreens.has(row.id)) continue;
156690
- const tabScreen = tabScreens.get(row.id);
156917
+ for (const [row2, i2] of items(key3)) {
156918
+ if (typeof row2.id !== "string" || !tabScreens.has(row2.id)) continue;
156919
+ const tabScreen = tabScreens.get(row2.id);
156691
156920
  if (typeof tabScreen !== "string") continue;
156692
- if (key3 === "drawer" && (row.role === "section" || row.role === "note")) continue;
156693
- if (typeof row.screenId !== "string" || row.screenId === "" || row.screenId === tabScreen) continue;
156921
+ if (key3 === "drawer" && (row2.role === "section" || row2.role === "note")) continue;
156922
+ if (typeof row2.screenId !== "string" || row2.screenId === "" || row2.screenId === tabScreen) continue;
156694
156923
  out2.push(
156695
- `${key3}.items[${i2}] "${row.id}": a tab has this id but opens ${JSON.stringify(tabScreen)}, not "${row.screenId}" \u2014 every shell hands its host one id and the host resolves tabs first, so this row would open the tab's screen. Give the row its own id.`
156924
+ `${key3}.items[${i2}] "${row2.id}": a tab has this id but opens ${JSON.stringify(tabScreen)}, not "${row2.screenId}" \u2014 every shell hands its host one id and the host resolves tabs first, so this row would open the tab's screen. Give the row its own id.`
156696
156925
  );
156697
156926
  }
156698
156927
  }
@@ -156964,8 +157193,8 @@ var init_base44_types = __esm({
156964
157193
  SCALAR = { string: "string", number: "number", integer: "number", boolean: "boolean" };
156965
157194
  key2 = (k2) => /^[A-Za-z_$][A-Za-z0-9_$]*$/.test(k2) ? k2 : JSON.stringify(k2);
156966
157195
  Base44TypesError = class extends Error {
156967
- constructor(code, message) {
156968
- super(message);
157196
+ constructor(code, message2) {
157197
+ super(message2);
156969
157198
  this.code = code;
156970
157199
  }
156971
157200
  };
@@ -157853,10 +158082,10 @@ function parseDataAccess(text11, from) {
157853
158082
  const rows = [];
157854
158083
  for (const line of lines.slice(1)) {
157855
158084
  if (/^\|?\s*:?-+:?\s*(\|\s*:?-+:?\s*)*\|?$/.test(line)) continue;
157856
- const row = cells(line);
157857
- const screen = unquote(row[screenCol] ?? "");
158085
+ const row2 = cells(line);
158086
+ const screen = unquote(row2[screenCol] ?? "");
157858
158087
  if (!screen) continue;
157859
- const cell2 = unquote(row[writesCol] ?? "");
158088
+ const cell2 = unquote(row2[writesCol] ?? "");
157860
158089
  const entries = splitEntries(cell2).filter((e2) => !isNoneEntry(e2));
157861
158090
  rows.push({ screen, allowed: NONE.test(cell2) || !entries.length ? null : entries });
157862
158091
  }
@@ -157905,10 +158134,10 @@ function pathPattern(p2) {
157905
158134
  function unapprovedWriteFindings(writes, plan) {
157906
158135
  if (!plan) return [];
157907
158136
  const byScreen = /* @__PURE__ */ new Map();
157908
- for (const row of plan.rows) {
157909
- const list2 = byScreen.get(row.screen) ?? [];
157910
- list2.push(row);
157911
- byScreen.set(row.screen, list2);
158137
+ for (const row2 of plan.rows) {
158138
+ const list2 = byScreen.get(row2.screen) ?? [];
158139
+ list2.push(row2);
158140
+ byScreen.set(row2.screen, list2);
157912
158141
  }
157913
158142
  const findings = [];
157914
158143
  for (const w2 of writes) {
@@ -160374,25 +160603,25 @@ function createLocalTestSandbox() {
160374
160603
  hasData: Boolean(context.dataApi && context.capabilities?.includes("data")),
160375
160604
  hasResourceAdmin: Boolean(context.dataApi && context.capabilities?.includes("resource_admin"))
160376
160605
  };
160377
- port1.on("message", async (message) => {
160606
+ port1.on("message", async (message2) => {
160378
160607
  try {
160379
160608
  let value2;
160380
- if (message.capability === "wixApi" && context.wixApi) value2 = await context.wixApi.call(...message.args);
160381
- else if (message.capability === "secrets" && (context.secrets || context.secretsApi)) value2 = await (context.secrets || context.secretsApi).get(String(message.args[0]));
160382
- else if (message.capability === "http" && (context.http || context.httpApi)) {
160383
- const response = await (context.http || context.httpApi).fetch(String(message.args[0]), message.args[1]);
160609
+ if (message2.capability === "wixApi" && context.wixApi) value2 = await context.wixApi.call(...message2.args);
160610
+ else if (message2.capability === "secrets" && (context.secrets || context.secretsApi)) value2 = await (context.secrets || context.secretsApi).get(String(message2.args[0]));
160611
+ else if (message2.capability === "http" && (context.http || context.httpApi)) {
160612
+ const response = await (context.http || context.httpApi).fetch(String(message2.args[0]), message2.args[1]);
160384
160613
  value2 = { status: response.status, statusText: response.statusText, headers: [...response.headers.entries()], body: new Uint8Array(await response.arrayBuffer()) };
160385
- } else if (message.capability === "functions.call" && context.functionsApi) {
160386
- value2 = await context.functionsApi.call(String(message.args[0]), message.args[1], message.args[2]);
160387
- } else if (message.capability === "functions.enqueue" && context.functionsApi?.enqueue) {
160388
- value2 = await context.functionsApi.enqueue(String(message.args[0]), message.args[1], message.args[2]);
160389
- } else if (message.capability === "data" && context.dataApi) {
160390
- value2 = await context.dataApi.call(message.args[0], String(message.args[1]), message.args[2]);
160391
- } else throw new Error(`${message.capability} capability is not configured`);
160392
- port1.postMessage({ id: message.id, ok: true, value: value2 });
160614
+ } else if (message2.capability === "functions.call" && context.functionsApi) {
160615
+ value2 = await context.functionsApi.call(String(message2.args[0]), message2.args[1], message2.args[2]);
160616
+ } else if (message2.capability === "functions.enqueue" && context.functionsApi?.enqueue) {
160617
+ value2 = await context.functionsApi.enqueue(String(message2.args[0]), message2.args[1], message2.args[2]);
160618
+ } else if (message2.capability === "data" && context.dataApi) {
160619
+ value2 = await context.dataApi.call(message2.args[0], String(message2.args[1]), message2.args[2]);
160620
+ } else throw new Error(`${message2.capability} capability is not configured`);
160621
+ port1.postMessage({ id: message2.id, ok: true, value: value2 });
160393
160622
  } catch (error) {
160394
160623
  port1.postMessage({
160395
- id: message.id,
160624
+ id: message2.id,
160396
160625
  ok: false,
160397
160626
  error: error instanceof Error ? { message: error.message, name: error.name, code: error.code } : { message: String(error) }
160398
160627
  });
@@ -160427,14 +160656,14 @@ function createLocalTestSandbox() {
160427
160656
  return;
160428
160657
  }
160429
160658
  signal?.addEventListener("abort", abortHandler, { once: true });
160430
- worker.on("message", (message) => {
160431
- if (message.ready) {
160659
+ worker.on("message", (message2) => {
160660
+ if (message2.ready) {
160432
160661
  clearTimeout(timer);
160433
160662
  timer = setTimeout(() => finish2(() => reject(new SandboxError("timeout", `execution exceeded ${limits.timeoutMs}ms`))), Math.max(1, limits.timeoutMs));
160434
160663
  return;
160435
160664
  }
160436
- if (message.ok) finish2(() => resolve83({ value: message.value, durationMs: Date.now() - started }));
160437
- else finish2(() => reject(new SandboxError("execution_failed", message.message ?? "handler failed")));
160665
+ if (message2.ok) finish2(() => resolve83({ value: message2.value, durationMs: Date.now() - started }));
160666
+ else finish2(() => reject(new SandboxError("execution_failed", message2.message ?? "handler failed")));
160438
160667
  });
160439
160668
  worker.once("error", (error) => finish2(() => reject(new SandboxError("execution_failed", error.message))));
160440
160669
  worker.once("exit", (code) => {
@@ -160449,8 +160678,8 @@ var init_sandbox = __esm({
160449
160678
  "../../core/functions-runtime/src/sandbox.ts"() {
160450
160679
  SandboxError = class extends Error {
160451
160680
  code;
160452
- constructor(code, message) {
160453
- super(`${code}: ${message}`);
160681
+ constructor(code, message2) {
160682
+ super(`${code}: ${message2}`);
160454
160683
  this.name = "SandboxError";
160455
160684
  this.code = code;
160456
160685
  }
@@ -160559,8 +160788,8 @@ var FunctionCallError, NAME;
160559
160788
  var init_calls = __esm({
160560
160789
  "../../core/functions-runtime/src/calls.ts"() {
160561
160790
  FunctionCallError = class extends Error {
160562
- constructor(code, message) {
160563
- super(`${code}: ${message}`);
160791
+ constructor(code, message2) {
160792
+ super(`${code}: ${message2}`);
160564
160793
  this.code = code;
160565
160794
  this.name = "FunctionCallError";
160566
160795
  }
@@ -160629,8 +160858,8 @@ var FunctionQueueError;
160629
160858
  var init_queue = __esm({
160630
160859
  "../../core/functions-runtime/src/queue.ts"() {
160631
160860
  FunctionQueueError = class extends Error {
160632
- constructor(code, message) {
160633
- super(`${code}: ${message}`);
160861
+ constructor(code, message2) {
160862
+ super(`${code}: ${message2}`);
160634
160863
  this.code = code;
160635
160864
  this.name = "FunctionQueueError";
160636
160865
  }
@@ -160759,8 +160988,8 @@ function verifyPlan(scope2, plan) {
160759
160988
  const { hash: hash2, ...unsigned } = plan;
160760
160989
  if (!equalScope(scope2, plan.scope) || hashResourcePlan(unsigned) !== hash2) throw new ResourceApplyError("invalid_plan", "plan hash or app/site/environment scope does not match");
160761
160990
  if (plan.operations.length > 100) throw new ResourceApplyError("invalid_plan", "a resource plan may contain at most 100 operations");
160762
- const invalid = (message) => {
160763
- throw new ResourceApplyError("invalid_plan", message);
160991
+ const invalid = (message2) => {
160992
+ throw new ResourceApplyError("invalid_plan", message2);
160764
160993
  };
160765
160994
  for (const operation of plan.operations) {
160766
160995
  if (operation.kind === "create-kv" || operation.kind === "update-kv") {
@@ -160829,8 +161058,8 @@ var init_apply = __esm({
160829
161058
  init_schema2();
160830
161059
  init_tombstones();
160831
161060
  ResourceApplyError = class extends Error {
160832
- constructor(code, message) {
160833
- super(`${code}: ${message}`);
161061
+ constructor(code, message2) {
161062
+ super(`${code}: ${message2}`);
160834
161063
  this.code = code;
160835
161064
  this.name = "ResourceApplyError";
160836
161065
  }
@@ -161057,8 +161286,8 @@ function json2(status, body, requestId2, extra = {}) {
161057
161286
  headers: { "content-type": "application/json; charset=utf-8", "cache-control": "no-store", "x-request-id": requestId2, ...extra }
161058
161287
  });
161059
161288
  }
161060
- function errorResponse(status, code, message, requestId2) {
161061
- return json2(status, { error: { code, message: message.slice(0, MAX_LOG_MESSAGE), requestId: requestId2 }, requestId: requestId2 }, requestId2, { "access-control-allow-origin": "*" });
161289
+ function errorResponse(status, code, message2, requestId2) {
161290
+ return json2(status, { error: { code, message: message2.slice(0, MAX_LOG_MESSAGE), requestId: requestId2 }, requestId: requestId2 }, requestId2, { "access-control-allow-origin": "*" });
161062
161291
  }
161063
161292
  function routeMatch(template, actual) {
161064
161293
  const expected = template.split("/").filter(Boolean);
@@ -161355,11 +161584,11 @@ function makeFunctionsHandler(options) {
161355
161584
  return json2(200, value2, id, { "access-control-allow-origin": "*" });
161356
161585
  } catch (error) {
161357
161586
  finish2("error");
161358
- const message = error instanceof Error ? error.message : String(error);
161587
+ const message2 = error instanceof Error ? error.message : String(error);
161359
161588
  const code = error instanceof SandboxError || error instanceof FunctionCallError ? error.code : "execution_failed";
161360
161589
  const status = code === "canceled" || code === "function_call_canceled" ? 499 : code === "timeout" || code === "memory_limit" || code === "function_call_deadline_exceeded" ? 504 : code === "capability_not_implemented" ? 501 : code === "function_input_invalid" ? 422 : code === "function_bundle_invalid" || code === "function_output_invalid" ? 502 : code === "function_not_found" ? 404 : code === "function_call_forbidden" ? 403 : 500;
161361
161590
  const responseCode = code === "function_input_invalid" ? "invalid_request" : code === "function_bundle_invalid" ? "bundle_integrity_failed" : code === "function_output_invalid" ? "invalid_response" : code;
161362
- return errorResponse(status, responseCode, message, id);
161591
+ return errorResponse(status, responseCode, message2, id);
161363
161592
  }
161364
161593
  };
161365
161594
  }
@@ -161864,7 +162093,7 @@ var init_file_tools = __esm({
161864
162093
  MAX_LISTED = 2e3;
161865
162094
  CONTENT_MARKER = "himalaya.content.json";
161866
162095
  ok = (o2) => ({ content: [{ type: "text", text: JSON.stringify(o2, null, 2) }] });
161867
- refuse5 = (error, message) => ({ content: [{ type: "text", text: JSON.stringify({ ok: false, error, message }, null, 2) }], isError: true });
162096
+ refuse5 = (error, message2) => ({ content: [{ type: "text", text: JSON.stringify({ ok: false, error, message: message2 }, null, 2) }], isError: true });
161868
162097
  DIR = z2.string().optional().describe("The app folder, relative to the workspace folder. Default: the workspace folder itself.");
161869
162098
  WRITE_ANN = { readOnlyHint: false, destructiveHint: true, idempotentHint: true, openWorldHint: false };
161870
162099
  }
@@ -162638,8 +162867,8 @@ var init_open_url = __esm({
162638
162867
  // src/ux-audit.ts
162639
162868
  import { existsSync as existsSync72, readFileSync as readFileSync83, readdirSync as readdirSync32 } from "node:fs";
162640
162869
  import { join as join76, relative as relative15, resolve as resolve61 } from "node:path";
162641
- function issue(issues, strict, code, message, path2) {
162642
- issues.push({ code, message, ...path2 ? { path: path2 } : {}, severity: strict ? "error" : "warning" });
162870
+ function issue(issues, strict, code, message2, path2) {
162871
+ issues.push({ code, message: message2, ...path2 ? { path: path2 } : {}, severity: strict ? "error" : "warning" });
162643
162872
  }
162644
162873
  function readText2(path2) {
162645
162874
  try {
@@ -162702,8 +162931,8 @@ function auditUx(content, strict = false) {
162702
162931
  }
162703
162932
  const malformedChecks = record2.checks !== void 0 && !Array.isArray(record2.checks);
162704
162933
  if (malformedChecks || record2.status !== "unavailable" && (record2.checks ?? []).length === 0) {
162705
- const message = malformedChecks ? `${platform} audit has a malformed checks list; it must be an array.` : `${platform} audit needs the checks that were driven.`;
162706
- issues.push({ code: `missing-${platform}-checks`, message, path: UX_EVIDENCE_PATH, severity: "error" });
162934
+ const message2 = malformedChecks ? `${platform} audit has a malformed checks list; it must be an array.` : `${platform} audit needs the checks that were driven.`;
162935
+ issues.push({ code: `missing-${platform}-checks`, message: message2, path: UX_EVIDENCE_PATH, severity: "error" });
162707
162936
  }
162708
162937
  if (record2.status === "unavailable" && !record2.reason?.trim()) {
162709
162938
  issues.push({ code: `missing-${platform}-reason`, message: `${platform} is unavailable but has no reason.`, path: UX_EVIDENCE_PATH, severity: "error" });
@@ -164601,23 +164830,23 @@ function syncCoverage(evidenceDir, contentDir2, write2 = true) {
164601
164830
  const old = existed ? obj3(JSON.parse(readFileSync90(path2, "utf8"))) : {};
164602
164831
  const hashesChanged = existed && JSON.stringify(old.sourceHashes) !== JSON.stringify(current.sourceHashes);
164603
164832
  const prior = Array.isArray(old.requirements) ? old.requirements : [];
164604
- const byId = new Map(prior.map((row) => [row.id, row]));
164605
- const known = new Set(current.requirements.map((row) => row.id));
164606
- const removed = prior.filter((row) => !known.has(row.id)).map((row) => row.id);
164607
- const added = current.requirements.filter((row) => !byId.has(row.id)).length;
164608
- const changed = current.requirements.filter((row) => {
164609
- const previous = byId.get(row.id);
164610
- return previous && (previous.kind !== row.kind || previous.source !== row.source || previous.description !== row.description || previous.platform !== row.platform);
164611
- }).map((row) => row.id);
164612
- current.requirements = current.requirements.map((row) => {
164613
- const previous = byId.get(row.id);
164833
+ const byId = new Map(prior.map((row2) => [row2.id, row2]));
164834
+ const known = new Set(current.requirements.map((row2) => row2.id));
164835
+ const removed = prior.filter((row2) => !known.has(row2.id)).map((row2) => row2.id);
164836
+ const added = current.requirements.filter((row2) => !byId.has(row2.id)).length;
164837
+ const changed = current.requirements.filter((row2) => {
164838
+ const previous = byId.get(row2.id);
164839
+ return previous && (previous.kind !== row2.kind || previous.source !== row2.source || previous.description !== row2.description || previous.platform !== row2.platform);
164840
+ }).map((row2) => row2.id);
164841
+ current.requirements = current.requirements.map((row2) => {
164842
+ const previous = byId.get(row2.id);
164614
164843
  return previous ? {
164615
- ...row,
164844
+ ...row2,
164616
164845
  ...previous.target ? { target: previous.target } : {},
164617
164846
  ...!hashesChanged && previous.status ? { status: previous.status } : {},
164618
164847
  ...!hashesChanged && previous.verification ? { verification: previous.verification } : {},
164619
164848
  ...previous.adaptation ? { adaptation: previous.adaptation } : {}
164620
- } : row;
164849
+ } : row2;
164621
164850
  });
164622
164851
  if (write2 && removed.length === 0) writeFileSync33(path2, JSON.stringify(current, null, 2) + "\n");
164623
164852
  return { coverage: current, added, removed, changed, hashesChanged, existed };
@@ -164640,31 +164869,31 @@ function verifyCoverage(evidenceDir, contentDir2, releaseHash, builtScreenIds) {
164640
164869
  const contentManifest = join85(resolve64(contentDir2), "himalaya.content.json");
164641
164870
  const declaredScreens = existsSync79(contentManifest) ? obj3(obj3(JSON.parse(readFileSync90(contentManifest, "utf8"))).screens) : void 0;
164642
164871
  const availableScreens = builtScreenIds ? new Set(builtScreenIds) : declaredScreens && Object.keys(declaredScreens).length ? new Set(Object.keys(declaredScreens)) : void 0;
164643
- for (const row of rows) {
164644
- const id = typeof row.id === "string" ? row.id : void 0;
164645
- const kind = row.kind;
164872
+ for (const row2 of rows) {
164873
+ const id = typeof row2.id === "string" ? row2.id : void 0;
164874
+ const kind = row2.kind;
164646
164875
  if (!id || !Object.hasOwn(REQUIRED_CHECK, kind)) {
164647
164876
  issues.push({ id, message: "Invalid requirement identity or kind." });
164648
164877
  continue;
164649
164878
  }
164650
- const status = row.status;
164879
+ const status = row2.status;
164651
164880
  if (status !== "supported" && status !== "adapted" && status !== "conditional") {
164652
164881
  issues.push({ id, message: "Requirement is unresolved or has no status." });
164653
164882
  continue;
164654
164883
  }
164655
- const target = obj3(row.target);
164884
+ const target = obj3(row2.target);
164656
164885
  if (typeof target.screenId !== "string" || !target.screenId.trim()) issues.push({ id, message: "Target screen mapping is absent." });
164657
164886
  else if (!availableScreens) issues.push({ id, message: "Target screens are unavailable for verification; supply a built release or a declared screen map." });
164658
164887
  else if (!availableScreens.has(target.screenId)) issues.push({ id, message: `Target screen ${target.screenId} is absent from the built release or app declaration.` });
164659
164888
  if ((kind === "interaction" || kind === "top-bar") && (typeof target.controlId !== "string" || !target.controlId.trim())) {
164660
164889
  issues.push({ id, message: "Target control mapping is absent." });
164661
164890
  }
164662
- const adaptation = obj3(row.adaptation);
164891
+ const adaptation = obj3(row2.adaptation);
164663
164892
  if (status === "adapted" && (!String(adaptation.instruction ?? "").trim() || !String(adaptation.explanation ?? "").trim())) {
164664
164893
  issues.push({ id, message: "Adaptation must cite the user instruction and explain the change." });
164665
164894
  }
164666
164895
  const required3 = REQUIRED_CHECK[kind];
164667
- const checks = Array.isArray(row.verification) ? row.verification.map(obj3) : [];
164896
+ const checks = Array.isArray(row2.verification) ? row2.verification.map(obj3) : [];
164668
164897
  const matching = checks.filter((check) => check.check === required3);
164669
164898
  if (!matching.length) {
164670
164899
  issues.push({ id, message: `Required check ${required3} has no evidence.` });
@@ -164698,7 +164927,7 @@ function verifyCoverage(evidenceDir, contentDir2, releaseHash, builtScreenIds) {
164698
164927
  }
164699
164928
  }
164700
164929
  }
164701
- return { ok: issues.length === 0, count: rows.length, requirementIds: rows.map((row) => String(row.id ?? "")), issues };
164930
+ return { ok: issues.length === 0, count: rows.length, requirementIds: rows.map((row2) => String(row2.id ?? "")), issues };
164702
164931
  }
164703
164932
  var obj3, sha, REQUIRED_CHECK, COVERAGE_FILE, NATIVE_PROOF_FILE;
164704
164933
  var init_coverage2 = __esm({
@@ -165038,8 +165267,8 @@ function validate3(evidenceDir, contentDir2) {
165038
165267
  if (existsSync80(coveragePath)) {
165039
165268
  try {
165040
165269
  const coverage = readJson7(coveragePath);
165041
- for (const row of Array.isArray(coverage.requirements) ? coverage.requirements : []) {
165042
- const entry = object7(row) ?? {};
165270
+ for (const row2 of Array.isArray(coverage.requirements) ? coverage.requirements : []) {
165271
+ const entry = object7(row2) ?? {};
165043
165272
  if (entry.kind !== "route" || typeof entry.source !== "string" || !/^\/screens\/[^/]+$/.test(entry.source)) continue;
165044
165273
  const screenId = entry.source.slice(9).replaceAll("~1", "/").replaceAll("~0", "~");
165045
165274
  const targetScreen = object7(entry.target)?.screenId;
@@ -165518,7 +165747,7 @@ function patchHonesty(opts) {
165518
165747
  return { attestation, source };
165519
165748
  }
165520
165749
  function partialPublishAllowed(rows, acceptPartial) {
165521
- return !rows.some((row) => row.slice === "screenMetadata") && (rows.length === 0 || acceptPartial);
165750
+ return !rows.some((row2) => row2.slice === "screenMetadata") && (rows.length === 0 || acceptPartial);
165522
165751
  }
165523
165752
  var SELECTOR_KINDS;
165524
165753
  var init_release_patch2 = __esm({
@@ -167814,37 +168043,37 @@ var init_preview_assets_generated = __esm({
167814
168043
  "../../packages/serve/src/preview-assets.generated.ts"() {
167815
168044
  init_preview_assets_format();
167816
168045
  PREVIEW_ASSET_MANIFEST = [
167817
- { key: "assets/DashboardHost-BIyhHj7v.js", contentType: "application/javascript; charset=utf-8", offset: 8, length: 2916, sha256: "9792b0a5f6a38d0712161c22f09c21063f862dd5620054bd308f91c3c83d8a24" },
167818
- { key: "assets/DevDrawer-y-MCEmgm.js", contentType: "application/javascript; charset=utf-8", offset: 2924, length: 16744, sha256: "d58c2d8f95931ddd88f5676cf11416a176e0e93aaf81da0dc654d4560be99b27" },
167819
- { key: "assets/IdiomCompare-CCiQ8Fm2.js", contentType: "application/javascript; charset=utf-8", offset: 19668, length: 1892, sha256: "09f77351497e02cb2d24ce59f2497ed9a88d9e880d722ccce239c82848c110b0" },
167820
- { key: "assets/LightboxViewer-DWd06nCs.js", contentType: "application/javascript; charset=utf-8", offset: 21560, length: 8132, sha256: "e9494f03f921c03186c414b69baba4038b81e1feed16a70257c56ef3d5009900" },
167821
- { key: "assets/PhonePreviewControl-C8gvvCSU.js", contentType: "application/javascript; charset=utf-8", offset: 29692, length: 37729, sha256: "7fde6085308257560ab3fe9019c2235ec303069fd0728ca3adc87d3eb27b4e17" },
167822
- { key: "assets/SchemeCompare-D5P-smqQ.js", contentType: "application/javascript; charset=utf-8", offset: 67421, length: 1824, sha256: "689e0ae9747ea4fdc89c579b5a329cabb352d3535c6cf9437cef83fe7817c669" },
168046
+ { key: "assets/DashboardHost-D0AIh2Fi.js", contentType: "application/javascript; charset=utf-8", offset: 8, length: 2916, sha256: "eca2f8260addf4ead475e304f4bdb9aa3a5655aa9b9042a0107c73d3c5d8147f" },
168047
+ { key: "assets/DevDrawer-Sm3GT4me.js", contentType: "application/javascript; charset=utf-8", offset: 2924, length: 16744, sha256: "1764380f2536a2da8715514073c657a2e7c1bcb8f299e5e8e273acae3bdc3164" },
168048
+ { key: "assets/IdiomCompare-d9cqrgVi.js", contentType: "application/javascript; charset=utf-8", offset: 19668, length: 1892, sha256: "ea482691eaa9cda3d3239568d177e9332b94a0a59e9e9e5d269d059fe07ddd58" },
168049
+ { key: "assets/LightboxViewer-NWgAZkvo.js", contentType: "application/javascript; charset=utf-8", offset: 21560, length: 8132, sha256: "21f6c5678752b22d095626e89c039bf1ab1cf566e9b0a880ddc7c64de2635f6a" },
168050
+ { key: "assets/PhonePreviewControl-DmWDJR7y.js", contentType: "application/javascript; charset=utf-8", offset: 29692, length: 37729, sha256: "c528ff6a6503b5cecddcb95d98e7b10e71b38718513a992c95c3e61aac178c9a" },
168051
+ { key: "assets/SchemeCompare-DAe05rjM.js", contentType: "application/javascript; charset=utf-8", offset: 67421, length: 1824, sha256: "ed47f5a463367279abfa343aaabb348b2cf419a48072a265442f84ba585976da" },
167823
168052
  { key: "assets/glassPreviewBrowser-Bt5ZFmG4.js", contentType: "application/javascript; charset=utf-8", offset: 69245, length: 342, sha256: "20d73f97d38f6d9a0b79e68e24954cd6bbfe66833a6e6aecae00a9102e64cab3" },
167824
- { key: "assets/index-Dfez-EUn.js", contentType: "application/javascript; charset=utf-8", offset: 69587, length: 1335320, sha256: "66af7c9916357e3c7d86e4750af5eaa0700a0d6701abf393bb07344d2b07cdec" },
167825
- { key: "assets/pdf-WP8Zuwbo.js", contentType: "application/javascript; charset=utf-8", offset: 1404907, length: 488199, sha256: "453bb7bd7d0c212981eb6f82794cde2d8d7146f43db0bcb8f045bac814b6e531" },
167826
- { key: "assets/pdf.worker.min-BQa_JDET.js", contentType: "application/javascript; charset=utf-8", offset: 1893106, length: 73, sha256: "41bcfda4f3c8c0a81c785ea87c69afc8e7d0ed8c333324aee94c273d881bb6aa" },
167827
- { key: "assets/pdf.worker.min-BmVo14Nb.mjs", contentType: "application/javascript; charset=utf-8", offset: 1893179, length: 1317034, sha256: "a33cfe728c584fdba4fcc1fd54bcdc2f9f2f13889ddbb5b2bd1d0f8cbe49b84e" },
167828
- { key: "assets/pdfDocument-DTiu8igo.js", contentType: "application/javascript; charset=utf-8", offset: 3210213, length: 3379, sha256: "67c0c890b87567316917d252b7d62fe5a323a11f75ee9284d90793862091cf6f" },
167829
- { key: "assets/pdfFetch-Cc8i1I1h.js", contentType: "application/javascript; charset=utf-8", offset: 3213592, length: 2266, sha256: "1d21ad008921942217c9eac0c35b1713773b9d89c71e3ab4412781f7bb88f463" },
167830
- { key: "assets/webviewBridgeHost-BDSuekqu.js", contentType: "application/javascript; charset=utf-8", offset: 3215858, length: 9781, sha256: "cd0719044c842adb619469ec7c327cbf52ebb1a09707df3d301f04f7dd3962e4" },
167831
- { key: "fonts/Roboto-LICENSE.txt", contentType: "application/octet-stream", offset: 3225639, length: 4610, sha256: "994062dd7af4186a739de55dd9e151c63b6301f8e2cbafc608d35c2e87da0cd2" },
167832
- { key: "fonts/Roboto-Variable.ttf", contentType: "font/ttf", offset: 3230249, length: 488584, sha256: "d7598e12c5dbef095ff8272cfc55da0250bd07fbdecbac8a530b9b277872a134" },
167833
- { key: "fonts/WixMadeforDisplay-Bold.ttf", contentType: "font/ttf", offset: 3718833, length: 90924, sha256: "ec4c7d63772d980d6e147b2df6215fd2737e4b04cebe0cf7e11dc695fb63cdcf" },
167834
- { key: "fonts/WixMadeforDisplay-ExtraBold.ttf", contentType: "font/ttf", offset: 3809757, length: 90984, sha256: "bf4c16a2774edd38a921edf3099469866cd74c094fd596f3fa4e81f54a04dfaa" },
167835
- { key: "fonts/WixMadeforDisplay-Medium.ttf", contentType: "font/ttf", offset: 3900741, length: 90980, sha256: "368faca44fb9f7207e4af784e94750b1ee59c1098b8689e0f4a918926f244fb5" },
167836
- { key: "fonts/WixMadeforDisplay-Regular.ttf", contentType: "font/ttf", offset: 3991721, length: 90872, sha256: "97ed8f1a6772abe26e3d8af5cecfc4b02faa94497d585b0398b5053b739a70c1" },
167837
- { key: "fonts/WixMadeforDisplay-SemiBold.ttf", contentType: "font/ttf", offset: 4082593, length: 90980, sha256: "642feab8a48ddf6c7a89d7c2a7c0edfa0e6e773f671287e460e222703563191e" },
167838
- { key: "fonts/WixMadeforText-Bold.ttf", contentType: "font/ttf", offset: 4173573, length: 108636, sha256: "37c179b4fefb63ea9637322b84583a2df53aa226c150294eea1675c14b1b8e29" },
167839
- { key: "fonts/WixMadeforText-ExtraBold.ttf", contentType: "font/ttf", offset: 4282209, length: 109084, sha256: "62e2fe4718129f36ecdb0ae4de385bd6b81ecc876146447167c6c140fad699a9" },
167840
- { key: "fonts/WixMadeforText-Medium.ttf", contentType: "font/ttf", offset: 4391293, length: 109048, sha256: "4ecf270136af928612c76fe4ebade91d8156975e5ea4c0cf9225501dd1788e02" },
167841
- { key: "fonts/WixMadeforText-Regular.ttf", contentType: "font/ttf", offset: 4500341, length: 107700, sha256: "dee56f09fd3efc127c1ea95557edc74110c1460a46287da36e0af25efd341ef5" },
167842
- { key: "fonts/WixMadeforText-SemiBold.ttf", contentType: "font/ttf", offset: 4608041, length: 88108, sha256: "dced97a77624bc5f8b1ae65850360908297f4588e09feb6f22792d29dc7e765b" },
167843
- { key: "himi-sw.js", contentType: "application/javascript; charset=utf-8", offset: 4696149, length: 6748, sha256: "4a92459977d7cefa1a6a7e020c3a63509737f083b3f2773557c1a5771665811a" },
167844
- { key: "index.html", contentType: "text/html; charset=utf-8", offset: 4702897, length: 4947, sha256: "63b685b7dd88c13c842d10b7213c207a478e944448cf96a0c87871c5ea633d08" },
167845
- { key: "ios-glass-preview.css", contentType: "text/css; charset=utf-8", offset: 4707844, length: 7193, sha256: "a482f4796147c2a3893942e10ab225bd3b6f749f7125fe0330680d4c20ea0212" },
167846
- { key: "ios-glass-preview.svg", contentType: "image/svg+xml", offset: 4715037, length: 423, sha256: "b9cd5989d31464a0422f260a332af6be5add0b04de2148944de35158f3b75efc" },
167847
- { key: "t5-frame.html", contentType: "text/html; charset=utf-8", offset: 4715460, length: 18778, sha256: "ba734d58c88281c71c01d9a2842a991d06f3ed91bf03449427ef11c7f6d1605d" }
168053
+ { key: "assets/index-DZLNpgeb.js", contentType: "application/javascript; charset=utf-8", offset: 69587, length: 1337208, sha256: "89aa5fffddb672994a2a13f4a209b5694ff41f2055b01d9d5837829682b7be6f" },
168054
+ { key: "assets/pdf-DkBJdVwB.js", contentType: "application/javascript; charset=utf-8", offset: 1406795, length: 488199, sha256: "8d77ca7222c2580c60a06abe6c78163894a40593fae3a071e664a3a05110dbec" },
168055
+ { key: "assets/pdf.worker.min-BQa_JDET.js", contentType: "application/javascript; charset=utf-8", offset: 1894994, length: 73, sha256: "41bcfda4f3c8c0a81c785ea87c69afc8e7d0ed8c333324aee94c273d881bb6aa" },
168056
+ { key: "assets/pdf.worker.min-BmVo14Nb.mjs", contentType: "application/javascript; charset=utf-8", offset: 1895067, length: 1317034, sha256: "a33cfe728c584fdba4fcc1fd54bcdc2f9f2f13889ddbb5b2bd1d0f8cbe49b84e" },
168057
+ { key: "assets/pdfDocument-DKE-Ra33.js", contentType: "application/javascript; charset=utf-8", offset: 3212101, length: 3379, sha256: "675e5f6d7a6d04607c86b32573e1d28aa126a049f6df26e39d407a9cb3059fc9" },
168058
+ { key: "assets/pdfFetch-Cc8i1I1h.js", contentType: "application/javascript; charset=utf-8", offset: 3215480, length: 2266, sha256: "1d21ad008921942217c9eac0c35b1713773b9d89c71e3ab4412781f7bb88f463" },
168059
+ { key: "assets/webviewBridgeHost-Tij-rBHM.js", contentType: "application/javascript; charset=utf-8", offset: 3217746, length: 9781, sha256: "9ac08d6b6839d3927c9cd364e53a5b01992e534bf77247568e24b18b3e4d2bb7" },
168060
+ { key: "fonts/Roboto-LICENSE.txt", contentType: "application/octet-stream", offset: 3227527, length: 4610, sha256: "994062dd7af4186a739de55dd9e151c63b6301f8e2cbafc608d35c2e87da0cd2" },
168061
+ { key: "fonts/Roboto-Variable.ttf", contentType: "font/ttf", offset: 3232137, length: 488584, sha256: "d7598e12c5dbef095ff8272cfc55da0250bd07fbdecbac8a530b9b277872a134" },
168062
+ { key: "fonts/WixMadeforDisplay-Bold.ttf", contentType: "font/ttf", offset: 3720721, length: 90924, sha256: "ec4c7d63772d980d6e147b2df6215fd2737e4b04cebe0cf7e11dc695fb63cdcf" },
168063
+ { key: "fonts/WixMadeforDisplay-ExtraBold.ttf", contentType: "font/ttf", offset: 3811645, length: 90984, sha256: "bf4c16a2774edd38a921edf3099469866cd74c094fd596f3fa4e81f54a04dfaa" },
168064
+ { key: "fonts/WixMadeforDisplay-Medium.ttf", contentType: "font/ttf", offset: 3902629, length: 90980, sha256: "368faca44fb9f7207e4af784e94750b1ee59c1098b8689e0f4a918926f244fb5" },
168065
+ { key: "fonts/WixMadeforDisplay-Regular.ttf", contentType: "font/ttf", offset: 3993609, length: 90872, sha256: "97ed8f1a6772abe26e3d8af5cecfc4b02faa94497d585b0398b5053b739a70c1" },
168066
+ { key: "fonts/WixMadeforDisplay-SemiBold.ttf", contentType: "font/ttf", offset: 4084481, length: 90980, sha256: "642feab8a48ddf6c7a89d7c2a7c0edfa0e6e773f671287e460e222703563191e" },
168067
+ { key: "fonts/WixMadeforText-Bold.ttf", contentType: "font/ttf", offset: 4175461, length: 108636, sha256: "37c179b4fefb63ea9637322b84583a2df53aa226c150294eea1675c14b1b8e29" },
168068
+ { key: "fonts/WixMadeforText-ExtraBold.ttf", contentType: "font/ttf", offset: 4284097, length: 109084, sha256: "62e2fe4718129f36ecdb0ae4de385bd6b81ecc876146447167c6c140fad699a9" },
168069
+ { key: "fonts/WixMadeforText-Medium.ttf", contentType: "font/ttf", offset: 4393181, length: 109048, sha256: "4ecf270136af928612c76fe4ebade91d8156975e5ea4c0cf9225501dd1788e02" },
168070
+ { key: "fonts/WixMadeforText-Regular.ttf", contentType: "font/ttf", offset: 4502229, length: 107700, sha256: "dee56f09fd3efc127c1ea95557edc74110c1460a46287da36e0af25efd341ef5" },
168071
+ { key: "fonts/WixMadeforText-SemiBold.ttf", contentType: "font/ttf", offset: 4609929, length: 88108, sha256: "dced97a77624bc5f8b1ae65850360908297f4588e09feb6f22792d29dc7e765b" },
168072
+ { key: "himi-sw.js", contentType: "application/javascript; charset=utf-8", offset: 4698037, length: 6748, sha256: "4a92459977d7cefa1a6a7e020c3a63509737f083b3f2773557c1a5771665811a" },
168073
+ { key: "index.html", contentType: "text/html; charset=utf-8", offset: 4704785, length: 4947, sha256: "ce6250b8f09a5c349489f0db1b7410dbac5627087c11b4dddc7958fbde5641db" },
168074
+ { key: "ios-glass-preview.css", contentType: "text/css; charset=utf-8", offset: 4709732, length: 7193, sha256: "a482f4796147c2a3893942e10ab225bd3b6f749f7125fe0330680d4c20ea0212" },
168075
+ { key: "ios-glass-preview.svg", contentType: "image/svg+xml", offset: 4716925, length: 423, sha256: "b9cd5989d31464a0422f260a332af6be5add0b04de2148944de35158f3b75efc" },
168076
+ { key: "t5-frame.html", contentType: "text/html; charset=utf-8", offset: 4717348, length: 18778, sha256: "ba734d58c88281c71c01d9a2842a991d06f3ed91bf03449427ef11c7f6d1605d" }
167848
168077
  ];
167849
168078
  }
167850
168079
  });
@@ -168303,8 +168532,8 @@ function defaultGitOps(cwd = process.cwd()) {
168303
168532
  return false;
168304
168533
  }
168305
168534
  },
168306
- createTag(tag, message) {
168307
- run2(["tag", "-a", tag, "-m", message]);
168535
+ createTag(tag, message2) {
168536
+ run2(["tag", "-a", tag, "-m", message2]);
168308
168537
  },
168309
168538
  pushTag(tag) {
168310
168539
  run2(["push", "origin", tag]);
@@ -168541,8 +168770,8 @@ var init_iap_catalog_client = __esm({
168541
168770
  }
168542
168771
  };
168543
168772
  IapCatalogError = class extends Error {
168544
- constructor(code, message, endpoint) {
168545
- super(message);
168773
+ constructor(code, message2, endpoint) {
168774
+ super(message2);
168546
168775
  this.code = code;
168547
168776
  this.endpoint = endpoint;
168548
168777
  this.name = "IapCatalogError";
@@ -168796,8 +169025,8 @@ var init_iap_client = __esm({
168796
169025
  TOKEN_LIFETIME_S = 1200;
168797
169026
  TOKEN_REFRESH_MARGIN_S = 60;
168798
169027
  AscError = class extends Error {
168799
- constructor(kind, message, status, codes = [], detail = "", retryAfterMs2) {
168800
- super(message);
169028
+ constructor(kind, message2, status, codes = [], detail = "", retryAfterMs2) {
169029
+ super(message2);
168801
169030
  this.kind = kind;
168802
169031
  this.status = status;
168803
169032
  this.codes = codes;
@@ -170496,8 +170725,8 @@ var init_iap_plan = __esm({
170496
170725
  init_iap_price_status();
170497
170726
  init_iap_review_screenshot();
170498
170727
  IapProvisionError = class extends Error {
170499
- constructor(reason, message) {
170500
- super(message);
170728
+ constructor(reason, message2) {
170729
+ super(message2);
170501
170730
  this.reason = reason;
170502
170731
  this.name = "IapProvisionError";
170503
170732
  }
@@ -170514,7 +170743,7 @@ var init_iap_plan = __esm({
170514
170743
  isoDay = (date) => date.toISOString().slice(0, 10);
170515
170744
  exactTarget = (price) => price.rule === "atLeast" ? void 0 : price.amount;
170516
170745
  LEFTOVER_SCREENSHOT_STATES = /* @__PURE__ */ new Set(["AWAITING_UPLOAD", "FAILED"]);
170517
- planError = (message) => new IapProvisionError("plan", message);
170746
+ planError = (message2) => new IapProvisionError("plan", message2);
170518
170747
  }
170519
170748
  });
170520
170749
 
@@ -171363,9 +171592,9 @@ function redactValue(v2) {
171363
171592
  if (v2 && typeof v2 === "object") return redactRow(v2);
171364
171593
  return v2;
171365
171594
  }
171366
- function redactRow(row) {
171595
+ function redactRow(row2) {
171367
171596
  const out2 = {};
171368
- for (const [k2, v2] of Object.entries(row)) {
171597
+ for (const [k2, v2] of Object.entries(row2)) {
171369
171598
  out2[k2] = isSecretKey(k2) && v2 !== null && v2 !== void 0 && v2 !== "" ? "[redacted]" : redactValue(v2);
171370
171599
  }
171371
171600
  return out2;
@@ -172311,7 +172540,7 @@ function isItemRow(fields, entityId, price) {
172311
172540
  return values.some((v2) => v2.toLowerCase() === entityId.toLowerCase()) && values.some((v2) => visibleText2(v2).includes(price));
172312
172541
  }
172313
172542
  function rowOffersPurchase(value2, entityId, price) {
172314
- if (Array.isArray(value2)) return value2.some((row) => rowOffersPurchase(row, entityId, price));
172543
+ if (Array.isArray(value2)) return value2.some((row2) => rowOffersPurchase(row2, entityId, price));
172315
172544
  if (!value2 || typeof value2 !== "object") return false;
172316
172545
  const fields = value2;
172317
172546
  if (isItemRow(fields, entityId, price)) return offersPurchase(fields);
@@ -173123,11 +173352,11 @@ function firstProblem(report3) {
173123
173352
  function printConnect(out2, report3, heading) {
173124
173353
  out2.line(`himi store iap connect \u2014 ${heading}`);
173125
173354
  out2.line(` ${pad("site")}${report3.site} \xB7 bundle ${report3.bundleId}`);
173126
- const row = (label3, step) => out2.line(` ${pad(label3)}${step.state.padEnd(9)}${step.detail}`);
173127
- row("app", report3.app);
173128
- row("key", report3.credentials);
173129
- row("provider", report3.provider);
173130
- for (const mapping of report3.mappings) row("mapping", mapping);
173355
+ const row2 = (label3, step) => out2.line(` ${pad(label3)}${step.state.padEnd(9)}${step.detail}`);
173356
+ row2("app", report3.app);
173357
+ row2("key", report3.credentials);
173358
+ row2("provider", report3.provider);
173359
+ for (const mapping of report3.mappings) row2("mapping", mapping);
173131
173360
  if (report3.purchasesAppId) out2.line(` ${pad("binding")}wixIap: { purchasesAppId: "${report3.purchasesAppId}" }`);
173132
173361
  }
173133
173362
  function printConfig(out2, config, note) {
@@ -175888,8 +176117,8 @@ var init_base44_adopt = __esm({
175888
176117
  BUILTINS = new Set(BASE44_BUILTIN_FIELDS);
175889
176118
  ENTITY_NAME2 = /^[A-Za-z][A-Za-z0-9]*$/;
175890
176119
  AdoptError = class extends Error {
175891
- constructor(code, message, exit = 1, extra = {}) {
175892
- super(message);
176120
+ constructor(code, message2, exit = 1, extra = {}) {
176121
+ super(message2);
175893
176122
  this.code = code;
175894
176123
  this.exit = exit;
175895
176124
  this.extra = extra;
@@ -176078,8 +176307,8 @@ var init_plan4 = __esm({
176078
176307
  "src/base44-screens/plan.ts"() {
176079
176308
  init_base44_schema();
176080
176309
  PlanError = class extends Error {
176081
- constructor(code, message, extra = {}) {
176082
- super(message);
176310
+ constructor(code, message2, extra = {}) {
176311
+ super(message2);
176083
176312
  this.code = code;
176084
176313
  this.extra = extra;
176085
176314
  this.name = "PlanError";
@@ -176622,7 +176851,7 @@ async function seedBase44Entities(opts) {
176622
176851
  continue;
176623
176852
  }
176624
176853
  const declared = new Set((spec.fields ?? []).map((f2) => f2.key));
176625
- const clean2 = rows.map((row) => Object.fromEntries(Object.entries(row).filter(([k2]) => declared.has(k2))));
176854
+ const clean2 = rows.map((row2) => Object.fromEntries(Object.entries(row2).filter(([k2]) => declared.has(k2))));
176626
176855
  const dropped = [...new Set(rows.flatMap((r3) => Object.keys(r3).filter((k2) => !declared.has(k2))))];
176627
176856
  if (dropped.length) (report3.droppedKeys ??= {})[name] = dropped;
176628
176857
  if (clean2.some((r3) => Object.keys(r3).length === 0)) {
@@ -177182,8 +177411,8 @@ var init_functions2 = __esm({
177182
177411
  MAX_FILES = 200;
177183
177412
  MAX_BYTES = 5 * 1024 * 1024;
177184
177413
  FunctionSourceError = class extends Error {
177185
- constructor(code, message) {
177186
- super(message);
177414
+ constructor(code, message2) {
177415
+ super(message2);
177187
177416
  this.code = code;
177188
177417
  }
177189
177418
  };
@@ -178572,10 +178801,10 @@ async function readCms(call, opts = {}) {
178572
178801
  query: { paging: { limit: 5 } }
178573
178802
  });
178574
178803
  const items = asArr(q2.data?.dataItems);
178575
- const samples = items.slice(0, 5).map((row, i2) => {
178576
- const dataObj2 = row.data && typeof row.data === "object" ? row.data : row;
178804
+ const samples = items.slice(0, 5).map((row2, i2) => {
178805
+ const dataObj2 = row2.data && typeof row2.data === "object" ? row2.data : row2;
178577
178806
  const title = sampleTitle(dataObj2);
178578
- return { id: str8(row.id ?? dataObj2._id) || `row-${i2}`, ...title ? { title } : {} };
178807
+ return { id: str8(row2.id ?? dataObj2._id) || `row-${i2}`, ...title ? { title } : {} };
178579
178808
  });
178580
178809
  out2.push({
178581
178810
  id,
@@ -181493,10 +181722,10 @@ function isString(data) {
181493
181722
  function isObject(data) {
181494
181723
  return objectToString(data) === "[object Object]";
181495
181724
  }
181496
- function validate4(bool2, cbOrMessage, message) {
181725
+ function validate4(bool2, cbOrMessage, message2) {
181497
181726
  if (bool2) return;
181498
181727
  const cb = typeof cbOrMessage === "function" ? cbOrMessage : void 0;
181499
- let options = typeof cbOrMessage === "function" ? message : cbOrMessage;
181728
+ let options = typeof cbOrMessage === "function" ? message2 : cbOrMessage;
181500
181729
  if (!isObject(options)) options = "[object Object]";
181501
181730
  const err = new ParameterError(safeToString(options));
181502
181731
  if (cb) cb(err);
@@ -184286,7 +184515,7 @@ async function queryBase44Entities(opts) {
184286
184515
  const declared = [];
184287
184516
  for (const spec of specs) {
184288
184517
  const physical = physicalEntityName(spec, app);
184289
- const row = {
184518
+ const row2 = {
184290
184519
  entity: isAdoptedEntity(spec) ? spec.base44Name : spec.name,
184291
184520
  physical,
184292
184521
  ownership: isAdoptedEntity(spec) ? "adopted" : "owned",
@@ -184295,18 +184524,18 @@ async function queryBase44Entities(opts) {
184295
184524
  };
184296
184525
  const remote = live3?.get(physical);
184297
184526
  if (live3 && !remote) {
184298
- row.drift.push({ entity: physical, kind: "missing", detail: `entity "${physical}" is declared but the live app does not have it` });
184527
+ row2.drift.push({ entity: physical, kind: "missing", detail: `entity "${physical}" is declared but the live app does not have it` });
184299
184528
  } else {
184300
- if (remote) row.drift = diffEntityFields(spec, remote);
184529
+ if (remote) row2.drift = diffEntityFields(spec, remote);
184301
184530
  try {
184302
184531
  const c2 = await countRows(ports, appId2, physical, cap);
184303
- row.rows = c2.rows;
184304
- if (c2.capped) row.capped = true;
184532
+ row2.rows = c2.rows;
184533
+ if (c2.capped) row2.capped = true;
184305
184534
  } catch (e2) {
184306
- row.countError = e2.message;
184535
+ row2.countError = e2.message;
184307
184536
  }
184308
184537
  }
184309
- declared.push(row);
184538
+ declared.push(row2);
184310
184539
  }
184311
184540
  const known = new Set(declared.map((d2) => d2.physical));
184312
184541
  const foreignNames = live3 ? [...live3.keys()].filter((n2) => !known.has(n2)).sort() : [];
@@ -184340,8 +184569,8 @@ var OneAppError;
184340
184569
  var init_errors2 = __esm({
184341
184570
  "src/one-app/errors.ts"() {
184342
184571
  OneAppError = class extends Error {
184343
- constructor(code, message, details) {
184344
- super(message);
184572
+ constructor(code, message2, details) {
184573
+ super(message2);
184345
184574
  this.code = code;
184346
184575
  this.details = details;
184347
184576
  this.name = "OneAppError";
@@ -184490,8 +184719,8 @@ async function collectOneApp(input, deps = {}) {
184490
184719
  if (!response.ok) {
184491
184720
  controller.abort();
184492
184721
  const code = response.status === 401 ? "source_unauthorized" : response.status === 403 ? "source_forbidden" : response.status === 404 ? "source_not_found" : "source_request_failed";
184493
- const message = response.status === 401 || response.status === 403 ? "The signed-in Wix user cannot read this source app. Check site access and sign in again." : response.status === 404 ? "The source app was not found. Check the metasite ID." : "The source could not be read. Try again later.";
184494
- throw new OneAppError(code, message, { stage, httpStatus: response.status });
184722
+ const message2 = response.status === 401 || response.status === 403 ? "The signed-in Wix user cannot read this source app. Check site access and sign in again." : response.status === 404 ? "The source app was not found. Check the metasite ID." : "The source could not be read. Try again later.";
184723
+ throw new OneAppError(code, message2, { stage, httpStatus: response.status });
184495
184724
  }
184496
184725
  const length = Number(response.headers.get("content-length"));
184497
184726
  if (Number.isFinite(length) && length > maxBytes) {
@@ -185334,8 +185563,8 @@ function siteAppRequirementsFrom(appId2, entry) {
185334
185563
  };
185335
185564
  }
185336
185565
  function messageOf2(err) {
185337
- const message = err?.message;
185338
- return typeof message === "string" && message ? message : String(err);
185566
+ const message2 = err?.message;
185567
+ return typeof message2 === "string" && message2 ? message2 : String(err);
185339
185568
  }
185340
185569
  function decideSiteApp(input) {
185341
185570
  const fallback = (pickedAppId, reason) => ({ appId: DEFAULT_SITE_APP, source: "fallback", pickedAppId, reason });
@@ -186181,9 +186410,9 @@ function textFields(look) {
186181
186410
  return out2;
186182
186411
  }
186183
186412
  function pushWhere(map, key3, value2, where) {
186184
- const row = map.get(key3) ?? { value: value2, where: [] };
186185
- if (!row.where.includes(where) && row.where.length < CAP4.where) row.where.push(where);
186186
- map.set(key3, row);
186413
+ const row2 = map.get(key3) ?? { value: value2, where: [] };
186414
+ if (!row2.where.includes(where) && row2.where.length < CAP4.where) row2.where.push(where);
186415
+ map.set(key3, row2);
186187
186416
  }
186188
186417
  function templateContacts(identity, fields) {
186189
186418
  const hits = /* @__PURE__ */ new Map();
@@ -190188,21 +190417,21 @@ import { basename as basename26, join as join120 } from "node:path";
190188
190417
  function runId(now = /* @__PURE__ */ new Date()) {
190189
190418
  return now.toISOString().replace(/[-:]/g, "").replace(/\..*/, "").replace("T", "-");
190190
190419
  }
190191
- function rowStatus(row, thresholds) {
190420
+ function rowStatus(row2, thresholds) {
190192
190421
  const fail6 = [], warn3 = [];
190193
- if (row.error) warn3.push(`${row.error.code}: ${row.error.message}`);
190194
- const parityExpected = row.frames.some((f2) => (f2.surface === "ios" || f2.surface === "android") && f2.file);
190195
- const questions = [["design (web vs mockup)", row.judge.design], ...parityExpected ? [["parity (native vs web)", row.judge.parity]] : []];
190422
+ if (row2.error) warn3.push(`${row2.error.code}: ${row2.error.message}`);
190423
+ const parityExpected = row2.frames.some((f2) => (f2.surface === "ios" || f2.surface === "android") && f2.file);
190424
+ const questions = [["design (web vs mockup)", row2.judge.design], ...parityExpected ? [["parity (native vs web)", row2.judge.parity]] : []];
190196
190425
  for (const [question, v2] of questions) {
190197
190426
  if (v2 === "mismatch") fail6.push(`judge: ${question} mismatch`);
190198
190427
  else if (v2 === "partial") warn3.push(`judge: ${question} partial`);
190199
190428
  }
190200
- if (row.judge.design === "cannot_tell" || row.judge.parity === "cannot_tell" && parityExpected) {
190201
- warn3.push(`judge: cannot tell${row.judge.reason ? ` (${row.judge.reason})` : ""}`);
190429
+ if (row2.judge.design === "cannot_tell" || row2.judge.parity === "cannot_tell" && parityExpected) {
190430
+ warn3.push(`judge: cannot tell${row2.judge.reason ? ` (${row2.judge.reason})` : ""}`);
190202
190431
  }
190203
- for (const f2 of row.frames) if (f2.skipped) warn3.push(`${f2.surface} skipped: ${f2.skipped.reason}`);
190204
- if (row.frames.some((f2) => f2.noReference)) warn3.push("no_reference: the mockup does not style this variant");
190205
- const design = row.scores.find((s2) => s2.a === "mockup" && s2.b === "web");
190432
+ for (const f2 of row2.frames) if (f2.skipped) warn3.push(`${f2.surface} skipped: ${f2.skipped.reason}`);
190433
+ if (row2.frames.some((f2) => f2.noReference)) warn3.push("no_reference: the mockup does not style this variant");
190434
+ const design = row2.scores.find((s2) => s2.a === "mockup" && s2.b === "web");
190206
190435
  if (!thresholds || !design) {
190207
190436
  } else if (design.global < thresholds.fail) fail6.push(`score: mockup\u2194web ${design.global} < fail ${thresholds.fail}`);
190208
190437
  else if (design.global < thresholds.warn) warn3.push(`score: mockup\u2194web ${design.global} < warn ${thresholds.warn}`);
@@ -190269,11 +190498,11 @@ async function runFidelity(root, opts = {}) {
190269
190498
  const parity = captured.has("ios") || captured.has("android") ? verdict.parity : "cannot_tell";
190270
190499
  verdict = { ...verdict, parity, verdict: worse(verdict.design, parity), findings: verdict.findings.filter((f2) => captured.has(f2.surface)) };
190271
190500
  }
190272
- const row = { screen, variant, frames, scores, judge: verdict, ...stripFile ? { strip: stripFile } : {}, ...error ? { error } : {} };
190273
- rows.push({ ...row, ...rowStatus(row, fidelityThresholds(manifest2, screen)) });
190501
+ const row2 = { screen, variant, frames, scores, judge: verdict, ...stripFile ? { strip: stripFile } : {}, ...error ? { error } : {} };
190502
+ rows.push({ ...row2, ...rowStatus(row2, fidelityThresholds(manifest2, screen)) });
190274
190503
  } catch (e2) {
190275
- const row = { screen, variant, frames, scores: [], judge: skippedJudge("the row did not finish"), error: { code: "fidelity_row_failed", message: e2.message } };
190276
- rows.push({ ...row, ...rowStatus(row, fidelityThresholds(manifest2, screen)) });
190504
+ const row2 = { screen, variant, frames, scores: [], judge: skippedJudge("the row did not finish"), error: { code: "fidelity_row_failed", message: e2.message } };
190505
+ rows.push({ ...row2, ...rowStatus(row2, fidelityThresholds(manifest2, screen)) });
190277
190506
  }
190278
190507
  }
190279
190508
  }
@@ -190635,7 +190864,7 @@ var ServeCliClient = class {
190635
190864
  * One probe costs one extra request only for files that were already going to fail. */
190636
190865
  async telemetrySend(events) {
190637
190866
  const post = (batch) => this.request("telemetry", "POST", "/v1/telemetry/ingest", { body: batch, headers: this.telHeaders() });
190638
- const settle = (r3, posted) => {
190867
+ const settle2 = (r3, posted) => {
190639
190868
  const j2 = r3.json && typeof r3.json === "object" ? r3.json : null;
190640
190869
  const n2 = (k2) => typeof j2?.[k2] === "number" ? j2[k2] : 0;
190641
190870
  const counted = typeof j2?.accepted === "number";
@@ -190645,11 +190874,11 @@ var ServeCliClient = class {
190645
190874
  return { ...r3, ok: false, json: { ...j2 ?? {}, ok: false } };
190646
190875
  };
190647
190876
  const first = await post(events);
190648
- if (first.status !== 413 || events.length <= 1) return settle(first, events.length);
190877
+ if (first.status !== 413 || events.length <= 1) return settle2(first, events.length);
190649
190878
  const body = first.json;
190650
- if (!body || body.error !== "batch_too_large") return settle(first, events.length);
190879
+ if (!body || body.error !== "batch_too_large") return settle2(first, events.length);
190651
190880
  const limit = typeof body.limit === "number" && Number.isInteger(body.limit) && body.limit > 0 ? body.limit : null;
190652
- if (limit === null || limit >= events.length) return settle(first, events.length);
190881
+ if (limit === null || limit >= events.length) return settle2(first, events.length);
190653
190882
  const totals = { accepted: 0, dropped: 0, failed: 0 };
190654
190883
  const add = (r3) => {
190655
190884
  const j2 = r3.json;
@@ -190665,14 +190894,14 @@ var ServeCliClient = class {
190665
190894
  last = await post(chunk);
190666
190895
  add(last);
190667
190896
  if (!last.ok) {
190668
- return settle(
190897
+ return settle2(
190669
190898
  { ...last, json: { ...last.json ?? {}, ...totals, batched: { limit, sent, ...totals, failedAt: i2 } } },
190670
190899
  events.length
190671
190900
  );
190672
190901
  }
190673
190902
  sent += chunk.length;
190674
190903
  }
190675
- return settle(
190904
+ return settle2(
190676
190905
  { ...last, json: { ...last.json ?? {}, ...totals, batched: { limit, sent, ...totals } } },
190677
190906
  events.length
190678
190907
  );
@@ -191205,14 +191434,16 @@ var USAGE = `himi \u2014 the Himalaya authoring CLI (remote dev loop)
191205
191434
  and typed-journey stubs. Writes .himi/adopt.json, .himi/adopt-matrix.md and
191206
191435
  .himi/himi-test.stub.json (--dry-run writes nothing)
191207
191436
  himi template screens [--show <id>] [--write <id> --from <file>] [--add <id> --from <file> [--parent <id>] [--tab <id>] [--display-name <name>]] [--content <dir>]
191208
- list dev/index.ts screens (size, workers, onAppear); --show prints ONE entry so
191437
+ list dev/index.ts screens (size, workers, onAppear) in any layout \u2014 a hand-written
191438
+ dev/index.ts is read by evaluating it, as validate does; --show prints ONE entry so
191209
191439
  nobody reads the whole file; --write puts an edited entry back (re-parsed, refused
191210
191440
  if it breaks the file or changes the screen count)
191211
191441
  --add appends a NEW screen entry and registers it in linkableScreens (--parent/--tab)
191212
191442
  himi template sweep --set "Old=>New" [--set \u2026] | --map <file.json> [--content <dir>] [--dry-run]
191213
191443
  replace the template's sample identity/copy inside string literals only (never
191214
- identifiers) across dev/index.ts, config.ts, tokens.json and tier5-src; re-parses
191215
- before writing and reports placeholdersLeft
191444
+ identifiers) across dev/index.ts, config.ts, tokens.json and tier5-src; syntax-checks
191445
+ every changed file (and re-parses a generated SCREENS map) before writing, and
191446
+ reports placeholdersLeft
191216
191447
  himi template recommend [--text <description>] [--verticals a,b] [--book <site analyze dir>] [--remote]
191217
191448
  rank the catalog for one business: description words + owner-vs-customer, and the
191218
191449
  site's installed verticals (the same scoring site analyze uses)
@@ -192619,7 +192850,7 @@ async function adoptAtInit(dir) {
192619
192850
  const layout = /SCREENS = runtimeSetting/.test(msg);
192620
192851
  return {
192621
192852
  adopt: {
192622
- skipped: layout ? "no adoption inventory for this template: its dev/index.ts is not in the generated SCREENS layout, so `himi template inspect | screens | trim` do not apply to it \u2014 edit its source directly" : `no adoption inventory: ${msg}`
192853
+ skipped: layout ? "no adoption inventory for this template: its dev/index.ts is not in the generated SCREENS layout, and init reads a template statically, never running its code. `himi template screens` and `himi template inspect` read it by evaluating dev/index.ts (as `himi validate` does); `himi template trim` and `screens --show/--write/--add` need the generated layout, so edit its source directly" : `no adoption inventory: ${msg}`
192623
192854
  }
192624
192855
  };
192625
192856
  }
@@ -192850,8 +193081,8 @@ var VALID_PLATFORM_KEYS2 = /* @__PURE__ */ new Set([
192850
193081
  ]);
192851
193082
  function surfaceIssues(dir, surfaceNav, strict) {
192852
193083
  const issues = [];
192853
- const warn3 = (message) => issues.push({ screen: null, pass: "surfaces", severity: strict ? "error" : "warning", message });
192854
- const error = (message) => issues.push({ screen: null, pass: "surfaces", severity: "error", message });
193084
+ const warn3 = (message2) => issues.push({ screen: null, pass: "surfaces", severity: strict ? "error" : "warning", message: message2 });
193085
+ const error = (message2) => issues.push({ screen: null, pass: "surfaces", severity: "error", message: message2 });
192855
193086
  let platforms = {};
192856
193087
  let envelopeUnreadable = false;
192857
193088
  const p2 = join45(dir, "platforms.json");
@@ -193077,16 +193308,14 @@ async function templateCommand(ctx) {
193077
193308
  const dir = contentDir(flags);
193078
193309
  try {
193079
193310
  if (sub === "inspect") {
193080
- const inv = adopt.inspectApp(dir);
193311
+ const { layoutNote: _n2, ...inv } = await adopt.inspectAnyLayout(dir);
193081
193312
  const written = flags["dry-run"] === true ? [] : adopt.writeInventory(dir, inv);
193082
193313
  const { dir: _d, ...rest } = inv;
193083
193314
  print({ ...rest, written, summary: adopt.inventorySummary(inv) });
193084
193315
  return 0;
193085
193316
  }
193086
193317
  if (sub === "screens") {
193087
- const src = adopt.readAppSources(dir);
193088
193318
  const { parseApp: parseApp2 } = await Promise.resolve().then(() => (init_template_trim(), template_trim_exports));
193089
- const app = parseApp2(src.dev, src.config);
193090
193319
  const show = str3(flags.show);
193091
193320
  const target = str3(flags.write);
193092
193321
  const adding = str3(flags.add);
@@ -193103,18 +193332,22 @@ async function templateCommand(ctx) {
193103
193332
  return 0;
193104
193333
  }
193105
193334
  if (show) {
193335
+ const src = adopt.readAppSources(dir);
193336
+ const app = parseApp2(src.dev, src.config);
193106
193337
  const r3 = adopt.findRoute(app, show);
193107
193338
  if (!r3) throw new TrimRefusal2(`no screen "${show}" in dev/index.ts \u2014 \`himi template screens\` lists the ids`);
193108
193339
  io2.log(src.dev.slice(r3.lineStart, r3.end).replace(/\n$/, ""));
193109
193340
  return 0;
193110
193341
  }
193111
- const inv = adopt.inspectApp(dir);
193342
+ const inv = await adopt.inspectAnyLayout(dir);
193112
193343
  print({
193113
193344
  ok: true,
193345
+ layout: inv.layout,
193114
193346
  home: inv.home,
193115
193347
  count: inv.screens.length,
193116
193348
  screens: inv.screens,
193117
- hint: "`--show <id>` prints one screen's entry; edit it and `--write <id> --from <file>` puts it back (re-parsed, refused if it breaks the file)"
193349
+ hint: inv.layout === "generated" ? "`--show <id>` prints one screen's entry; edit it and `--write <id> --from <file>` puts it back (re-parsed, refused if it breaks the file)" : "dev/index.ts is hand-written (not the generated SCREENS map), so these screens were read by evaluating it, as `himi validate` does. Edit its source directly: `--show`/`--write`/`--add` and `himi template trim` need the generated layout",
193350
+ ...inv.layoutNote ? { layoutNote: inv.layoutNote } : {}
193118
193351
  });
193119
193352
  return 0;
193120
193353
  }
@@ -193618,14 +193851,14 @@ import { join as join60 } from "node:path";
193618
193851
  async function iconIssues(dir, strict, opts = {}) {
193619
193852
  if (!existsSync60(join60(dir, "himalaya.content.json"))) return [];
193620
193853
  const status = await iconStatus(dir);
193621
- const issue2 = (severity, message) => ({
193854
+ const issue2 = (severity, message2) => ({
193622
193855
  screen: null,
193623
193856
  pass: "icon",
193624
193857
  severity,
193625
- message
193858
+ message: message2
193626
193859
  });
193627
193860
  const playIssues = (status.play?.issues ?? []).map(
193628
- (message) => issue2("error", `Play listing icon (${PLAY_LISTING_ICON}) ${message}. Re-derive it with \`himi icon set <file.png>\`.`)
193861
+ (message2) => issue2("error", `Play listing icon (${PLAY_LISTING_ICON}) ${message2}. Re-derive it with \`himi icon set <file.png>\`.`)
193629
193862
  );
193630
193863
  if (status.verdict === "missing") {
193631
193864
  if (status.declared) {
@@ -193646,8 +193879,8 @@ async function iconIssues(dir, strict, opts = {}) {
193646
193879
  `launcher icon is still the "${status.templateIcon}" template's artwork, byte for byte. It passes every store rule and is not this customer's mark. Replace it with \`himi icon set <file.png>\`, \`himi icon from-site\`, or \`himi icon generate\`.`
193647
193880
  ));
193648
193881
  }
193649
- for (const message of status.byteIssues) {
193650
- out2.push(issue2("error", `launcher icon ${message}. Fix it with \`himi icon set <file.png>\`.`));
193882
+ for (const message2 of status.byteIssues) {
193883
+ out2.push(issue2("error", `launcher icon ${message2}. Fix it with \`himi icon set <file.png>\`.`));
193651
193884
  }
193652
193885
  for (const f2 of status.pixelFindings) {
193653
193886
  out2.push(issue2(f2.level === "error" ? "error" : strict ? "error" : "warning", f2.message));
@@ -194124,13 +194357,13 @@ async function progressCommand2(ctx) {
194124
194357
  const journal2 = journalPath2(dir);
194125
194358
  const isContentPackage = existsSync71(join75(dir, "himalaya.content.json"));
194126
194359
  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" };
194127
- const message = pos.slice(1).join(" ").trim();
194360
+ const message2 = pos.slice(1).join(" ").trim();
194128
194361
  const approvalFlags = ["approve", "done", "drop"].filter((f2) => flags[f2] !== void 0);
194129
194362
  if (approvalFlags.length > 1) {
194130
194363
  io2.error(JSON.stringify({ ok: false, error: "one_approval_action", hint: "pass one of --approve, --done or --drop per call" }));
194131
194364
  return 2;
194132
194365
  }
194133
- if ((approvalFlags.length === 1 || flags.brief === true) && (flags.step !== void 0 || flags.image !== void 0 || flags.notify === true || flags["no-image"] === true || flags.brief === true && (message || approvalFlags.length))) {
194366
+ if ((approvalFlags.length === 1 || flags.brief === true) && (flags.step !== void 0 || flags.image !== void 0 || flags.notify === true || flags["no-image"] === true || flags.brief === true && (message2 || approvalFlags.length))) {
194134
194367
  io2.error(JSON.stringify({
194135
194368
  ok: false,
194136
194369
  error: flags.brief === true ? "brief_is_read_only" : "approval_is_its_own_call",
@@ -194148,7 +194381,7 @@ async function progressCommand2(ctx) {
194148
194381
  }
194149
194382
  const action = flag === "approve" ? "approved" : flag === "done" ? "done" : "dropped";
194150
194383
  try {
194151
- const { event, open } = appendApproval2(dir, { gate: ref.gate, ..."id" in ref && ref.id ? { id: ref.id } : {}, action, ...message ? { note: message } : {} });
194384
+ const { event, open } = appendApproval2(dir, { gate: ref.gate, ..."id" in ref && ref.id ? { id: ref.id } : {}, action, ...message2 ? { note: message2 } : {} });
194152
194385
  print({ ok: true, approval: event, open, ...hint });
194153
194386
  return 0;
194154
194387
  } catch (e2) {
@@ -194167,7 +194400,7 @@ async function progressCommand2(ctx) {
194167
194400
  io2.log(formatBrief2({ appName: appLabel2(dir), isContentPackage, summary: summary2, open, ...note ? { agentContextNote: note } : {} }));
194168
194401
  return 0;
194169
194402
  }
194170
- if (!message) {
194403
+ if (!message2) {
194171
194404
  if (flags.step !== void 0 || flags.image !== void 0 || flags.notify === true || flags["no-image"] === true) {
194172
194405
  io2.error(JSON.stringify({ ok: false, error: "message_required", hint: 'progress "<what changed>" --step <n> --image <png>' }));
194173
194406
  return 2;
@@ -194205,8 +194438,8 @@ async function progressCommand2(ctx) {
194205
194438
  } else imageNote = `no picture attached: ${auto.skipped}`;
194206
194439
  }
194207
194440
  try {
194208
- const entry = appendProgress2(dir, { message, ...step ? { step } : {}, images });
194209
- const notified = flags.notify === true ? await notifyDesktop2(`himi \xB7 ${appLabel2(dir) ?? "your app"}`, message) : void 0;
194441
+ const entry = appendProgress2(dir, { message: message2, ...step ? { step } : {}, images });
194442
+ const notified = flags.notify === true ? await notifyDesktop2(`himi \xB7 ${appLabel2(dir) ?? "your app"}`, message2) : void 0;
194210
194443
  const { count: count2 } = summarizeProgress2(readProgress2(dir).entries);
194211
194444
  const imageAttached = (entry.images?.length ?? 0) > 0;
194212
194445
  const handed = handover && isContentPackage ? (await Promise.resolve().then(() => (init_milestones(), milestones_exports))).afterHandoverPostcard(dir, { content: str3(flags.content) }) : null;
@@ -194627,7 +194860,7 @@ async function testCommand(ctx) {
194627
194860
  continue;
194628
194861
  }
194629
194862
  try {
194630
- const progress = (message) => io2.error(`[native ${availability.platform} ${(/* @__PURE__ */ new Date()).toISOString()}] ${message}`);
194863
+ const progress = (message2) => io2.error(`[native ${availability.platform} ${(/* @__PURE__ */ new Date()).toISOString()}] ${message2}`);
194631
194864
  const nativeRun = availability.platform === "ios" ? runNativeDecode2({ descriptors, tokensJson, packageDir: availability.packageDir, progress }) : runAndroidNativeDecode2({ descriptors, tokensJson, harnessDir: availability.harnessDir, gradlew: availability.gradlew, sdkDir: availability.sdkDir, progress });
194632
194865
  result = mergeNativeDecode2(result, nativeRun);
194633
194866
  } catch (error) {
@@ -194811,13 +195044,13 @@ async function iconCommand(ctx) {
194811
195044
  level: requireVerified ? "error" : "warn",
194812
195045
  message: `still the "${status.templateIcon}" template's artwork, byte for byte \u2014 not this customer's mark. \`himi icon set <file.png>\` / \`from-site\` / \`generate\` replaces it.`
194813
195046
  }] : [],
194814
- ...status.byteIssues.map((message) => ({ level: "error", message })),
195047
+ ...status.byteIssues.map((message2) => ({ level: "error", message: message2 })),
194815
195048
  ...status.pixelFindings,
194816
195049
  // Play's rules, on the derived 512 — the other half of what `check` claims to
194817
195050
  // validate. Kept distinct in the text so nobody applies Apple's answer to it.
194818
- ...(status.play?.issues ?? []).map((message) => ({
195051
+ ...(status.play?.issues ?? []).map((message2) => ({
194819
195052
  level: "error",
194820
- message: `Play listing icon (${status.play?.path.split("/").pop()}) ${message}`
195053
+ message: `Play listing icon (${status.play?.path.split("/").pop()}) ${message2}`
194821
195054
  }))
194822
195055
  ];
194823
195056
  if (flags.json === true) {
@@ -196355,12 +196588,12 @@ async function runPackageCommand(ctx) {
196355
196588
  const live3 = join91(running.releaseRoot, running.app);
196356
196589
  const manifestOf = (tree) => JSON.parse(readFileSync96(join91(tree, "release-manifest.json"), "utf8"));
196357
196590
  let current = manifestOf(live3);
196358
- const failed3 = async (message) => {
196591
+ const failed3 = async (message2) => {
196359
196592
  if (stopping) return;
196360
- bus.publish("build.failed", { message });
196361
- record2(running, { ok: false, at: (/* @__PURE__ */ new Date()).toISOString(), error: message });
196593
+ bus.publish("build.failed", { message: message2 });
196594
+ record2(running, { ok: false, at: (/* @__PURE__ */ new Date()).toISOString(), error: message2 });
196362
196595
  await refreshBoard();
196363
- io2.error(JSON.stringify({ watch: "build_failed", keptLastGood: true, message }));
196596
+ io2.error(JSON.stringify({ watch: "build_failed", keptLastGood: true, message: message2 }));
196364
196597
  };
196365
196598
  rebuild = watchKit.serialize(async () => {
196366
196599
  const t0 = Date.now();
@@ -196911,13 +197144,13 @@ function diagnoseBody(body) {
196911
197144
  const findings = body.findings;
196912
197145
  if (!Array.isArray(findings)) return body;
196913
197146
  const messageOf3 = (entry) => {
196914
- const message = entry && typeof entry === "object" ? entry.message : void 0;
196915
- return typeof message === "string" ? message : void 0;
197147
+ const message2 = entry && typeof entry === "object" ? entry.message : void 0;
197148
+ return typeof message2 === "string" ? message2 : void 0;
196916
197149
  };
196917
- const shown2 = new Set(findings.map(messageOf3).filter((message) => message !== void 0));
197150
+ const shown2 = new Set(findings.map(messageOf3).filter((message2) => message2 !== void 0));
196918
197151
  const folded = (value2) => Array.isArray(value2) && value2.length > 0 && value2.every((entry) => {
196919
- const message = messageOf3(entry);
196920
- return message !== void 0 && shown2.has(message);
197152
+ const message2 = messageOf3(entry);
197153
+ return message2 !== void 0 && shown2.has(message2);
196921
197154
  });
196922
197155
  const out2 = {};
196923
197156
  const emptied = [];
@@ -199772,9 +200005,9 @@ async function seedCms(opts) {
199772
200005
  }
199773
200006
  if (!dryRun) {
199774
200007
  const declaredKeys = new Set(spec.fields.map((f2) => f2.key));
199775
- const clean2 = rows.map((row) => {
200008
+ const clean2 = rows.map((row2) => {
199776
200009
  const out2 = {};
199777
- for (const [k2, v2] of Object.entries(row)) if (declaredKeys.has(k2)) out2[k2] = v2;
200010
+ for (const [k2, v2] of Object.entries(row2)) if (declaredKeys.has(k2)) out2[k2] = v2;
199778
200011
  return out2;
199779
200012
  });
199780
200013
  const droppedKeys = [...new Set(rows.flatMap((r3) => Object.keys(r3).filter((k2) => !declaredKeys.has(k2))))];
@@ -199787,11 +200020,11 @@ async function seedCms(opts) {
199787
200020
  await mapLimit(
199788
200021
  clean2,
199789
200022
  4,
199790
- (row, i2) => (
200023
+ (row2, i2) => (
199791
200024
  // Sent EXACTLY ONCE. An insert carries no idempotency key, so retrying a request
199792
200025
  // that landed but whose response was lost silently duplicates the row — and a
199793
200026
  // duplicate is worse than a reported failure the author can re-run deliberately.
199794
- call("POST", "/wix-data/v2/items", { dataCollectionId: id, dataItem: { data: row } })
200027
+ call("POST", "/wix-data/v2/items", { dataCollectionId: id, dataItem: { data: row2 } })
199795
200028
  )
199796
200029
  );
199797
200030
  }
@@ -199937,7 +200170,7 @@ async function planData(options) {
199937
200170
  kv.push({ name: spec.name, status: !remote.exists ? "missing" : drift ? "drift" : "ready", ...drift ? { detail: "declaration differs from provisioned KV metadata" } : {} });
199938
200171
  }
199939
200172
  const collections = await queryCms({ app: options.scope.app, cms: { collections: options.data?.collections ?? [] }, call: options.call });
199940
- return { ok: kv.every((row) => row.status === "ready") && collections.ok, scope: { ...options.scope }, kv, collections, writes: 0 };
200173
+ return { ok: kv.every((row2) => row2.status === "ready") && collections.ok, scope: { ...options.scope }, kv, collections, writes: 0 };
199941
200174
  }
199942
200175
  async function createData(options) {
199943
200176
  const created = [];
@@ -200981,7 +201214,7 @@ himi v${cliVersion()} \u2014 run \`himi --version\`. If authoring commands fail
200981
201214
  message: "this package changed things a per-item patch cannot move, so publishing only the selected items would ship bytes whose dependencies are missing on the plane.",
200982
201215
  notCarried,
200983
201216
  carriedByPatch: ["screens", "bundles", "tokens", "appConfig"],
200984
- hint: notCarried.some((row) => row.slice === "screenMetadata") ? "run a full `himi push` to publish screen names/grouping. --accept-partial cannot bypass this requirement." : "run a full `himi push` \u2014 it publishes assets, the icon, the surface envelope and minBinaryVersion. Re-run with --accept-partial only if you know those devices are already covered."
201217
+ hint: notCarried.some((row2) => row2.slice === "screenMetadata") ? "run a full `himi push` to publish screen names/grouping. --accept-partial cannot bypass this requirement." : "run a full `himi push` \u2014 it publishes assets, the icon, the surface envelope and minBinaryVersion. Re-run with --accept-partial only if you know those devices are already covered."
200985
201218
  }), null, 2));
200986
201219
  return 1;
200987
201220
  }