@wix/himalaya-cli 0.1529.0 → 0.1531.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 (74) 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 -481
  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 +3013 -3074
  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/tier5-src/himi-branded-lite-agenda/index.ts +240 -74
  14. package/templates/beauty-salon-owner/tier5-src/_shared/collection-service.ts +23 -5
  15. package/templates/beauty-salon-owner/tier5-src/_shared/engine-intl.ts +18 -0
  16. package/templates/branded-lite/dev/index.ts +3121 -3195
  17. package/templates/branded-lite/tier5-src/_shared/collection-service.ts +23 -5
  18. package/templates/branded-lite/tier5-src/_shared/engine-intl.ts +18 -0
  19. package/templates/branded-lite/tier5-src/_shared/member-bookings.ts +50 -7
  20. package/templates/branded-lite/tier5-src/himi-booking-bookings/index.ts +385 -74
  21. package/templates/branded-lite/tier5-src/himi-branded-lite-agenda/index.ts +240 -74
  22. package/templates/community-club/tier5-src/_shared/collection-service.ts +23 -5
  23. package/templates/community-club/tier5-src/_shared/engine-intl.ts +18 -0
  24. package/templates/community-club/tier5-src/_shared/member-bookings.ts +50 -7
  25. package/templates/community-club-owner/tier5-src/_shared/collection-service.ts +23 -5
  26. package/templates/community-club-owner/tier5-src/_shared/engine-intl.ts +18 -0
  27. package/templates/events-meetups/tier5-src/_shared/collection-service.ts +23 -5
  28. package/templates/events-meetups/tier5-src/_shared/engine-intl.ts +18 -0
  29. package/templates/events-meetups/tier5-src/_shared/member-bookings.ts +50 -7
  30. package/templates/events-meetups-owner/tier5-src/_shared/collection-service.ts +23 -5
  31. package/templates/events-meetups-owner/tier5-src/_shared/engine-intl.ts +18 -0
  32. package/templates/gym-fitness/dev/index.ts +3023 -3097
  33. package/templates/gym-fitness/tier5-src/_shared/collection-service.ts +23 -5
  34. package/templates/gym-fitness/tier5-src/_shared/engine-intl.ts +18 -0
  35. package/templates/gym-fitness/tier5-src/_shared/member-bookings.ts +50 -7
  36. package/templates/gym-fitness/tier5-src/himi-booking-bookings/index.ts +385 -74
  37. package/templates/gym-fitness/tier5-src/himi-branded-lite-agenda/index.ts +240 -74
  38. package/templates/gym-fitness-owner/tier5-src/_shared/collection-service.ts +23 -5
  39. package/templates/gym-fitness-owner/tier5-src/_shared/engine-intl.ts +18 -0
  40. package/templates/nonprofit-cause/tier5-src/_shared/collection-service.ts +23 -5
  41. package/templates/nonprofit-cause/tier5-src/_shared/engine-intl.ts +18 -0
  42. package/templates/nonprofit-cause/tier5-src/_shared/member-bookings.ts +50 -7
  43. package/templates/nonprofit-cause-owner/tier5-src/_shared/collection-service.ts +23 -5
  44. package/templates/nonprofit-cause-owner/tier5-src/_shared/engine-intl.ts +18 -0
  45. package/templates/owner-lite/tier5-src/_shared/collection-service.ts +23 -5
  46. package/templates/owner-lite/tier5-src/_shared/engine-intl.ts +18 -0
  47. package/templates/podcast-creator/tier5-src/_shared/collection-service.ts +23 -5
  48. package/templates/podcast-creator/tier5-src/_shared/engine-intl.ts +18 -0
  49. package/templates/podcast-creator/tier5-src/_shared/member-bookings.ts +50 -7
  50. package/templates/podcast-creator-owner/tier5-src/_shared/collection-service.ts +23 -5
  51. package/templates/podcast-creator-owner/tier5-src/_shared/engine-intl.ts +18 -0
  52. package/templates/portfolio-creative/tier5-src/_shared/collection-service.ts +23 -5
  53. package/templates/portfolio-creative/tier5-src/_shared/engine-intl.ts +18 -0
  54. package/templates/portfolio-creative/tier5-src/_shared/member-bookings.ts +50 -7
  55. package/templates/portfolio-creative-owner/tier5-src/_shared/collection-service.ts +23 -5
  56. package/templates/portfolio-creative-owner/tier5-src/_shared/engine-intl.ts +18 -0
  57. package/templates/restaurant/tier5-src/_shared/collection-service.ts +23 -5
  58. package/templates/restaurant/tier5-src/_shared/engine-intl.ts +18 -0
  59. package/templates/restaurant/tier5-src/_shared/member-bookings.ts +50 -7
  60. package/templates/restaurant-owner/tier5-src/_shared/collection-service.ts +23 -5
  61. package/templates/restaurant-owner/tier5-src/_shared/engine-intl.ts +18 -0
  62. package/templates/retail-store/tier5-src/_shared/collection-service.ts +23 -5
  63. package/templates/retail-store/tier5-src/_shared/engine-intl.ts +18 -0
  64. package/templates/retail-store/tier5-src/_shared/member-bookings.ts +50 -7
  65. package/templates/retail-store-owner/tier5-src/_shared/collection-service.ts +23 -5
  66. package/templates/retail-store-owner/tier5-src/_shared/engine-intl.ts +18 -0
  67. package/templates/yoga-studio/dev/index.ts +3018 -3092
  68. package/templates/yoga-studio/tier5-src/_shared/collection-service.ts +23 -5
  69. package/templates/yoga-studio/tier5-src/_shared/engine-intl.ts +18 -0
  70. package/templates/yoga-studio/tier5-src/_shared/member-bookings.ts +50 -7
  71. package/templates/yoga-studio/tier5-src/himi-booking-bookings/index.ts +385 -74
  72. package/templates/yoga-studio/tier5-src/himi-branded-lite-agenda/index.ts +240 -74
  73. package/templates/yoga-studio-owner/tier5-src/_shared/collection-service.ts +23 -5
  74. 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`
@@ -13172,9 +13185,9 @@ function buildSweepSource(allow) {
13172
13185
  }
13173
13186
  })(${JSON.stringify(allow)});`;
13174
13187
  }
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;
13188
+ function explainWithheldError(message2, deviceParity) {
13189
+ if (!deviceParity || message2.includes(FETCH_ADVICE)) return message2;
13190
+ return BARE_FETCH_UNDEFINED.test(message2) ? `${message2} \u2014 ${FETCH_ADVICE}` : message2;
13178
13191
  }
13179
13192
  function realmInstallsIntl(intl, hide) {
13180
13193
  return intl === true && !(hide ?? []).includes("Intl");
@@ -13365,8 +13378,8 @@ function runBundleSandbox(bundleJs, opts) {
13365
13378
  get: (t2, prop2) => prop2 in t2 ? t2[prop2] : inert
13366
13379
  });
13367
13380
  const mkConsole = () => {
13368
- const sink = (level) => (message) => {
13369
- consoleLines.push({ level, message: String(message) });
13381
+ const sink = (level) => (message2) => {
13382
+ consoleLines.push({ level, message: String(message2) });
13370
13383
  };
13371
13384
  return { log: sink("log"), warn: sink("warn"), error: sink("error"), info: sink("info"), debug: sink("debug") };
13372
13385
  };
@@ -13562,11 +13575,11 @@ async function bootBundleWorker(bundleJs, opts) {
13562
13575
  const pollDirectives = [];
13563
13576
  const oversizeWixResponses = [];
13564
13577
  const seenOversize = /* @__PURE__ */ new Set();
13565
- const diagnose = (message) => {
13566
- if (seenOversize.has(message)) return;
13567
- seenOversize.add(message);
13578
+ const diagnose = (message2) => {
13579
+ if (seenOversize.has(message2)) return;
13580
+ seenOversize.add(message2);
13568
13581
  try {
13569
- (opts.onDiagnostic ?? ((m2) => console.warn(m2)))(message);
13582
+ (opts.onDiagnostic ?? ((m2) => console.warn(m2)))(message2);
13570
13583
  } catch {
13571
13584
  }
13572
13585
  };
@@ -13832,8 +13845,8 @@ async function bootBundleWorker(bundleJs, opts) {
13832
13845
  const prev = def.state;
13833
13846
  if (!prev || typeof prev !== "object" || Array.isArray(prev)) return;
13834
13847
  const raw = err?.message ?? err;
13835
- let message;
13836
- if (raw === null || raw === void 0) message = "action failed";
13848
+ let message2;
13849
+ if (raw === null || raw === void 0) message2 = "action failed";
13837
13850
  else if (typeof raw === "object") {
13838
13851
  let asJson;
13839
13852
  try {
@@ -13841,12 +13854,12 @@ async function bootBundleWorker(bundleJs, opts) {
13841
13854
  } catch {
13842
13855
  asJson = void 0;
13843
13856
  }
13844
- message = typeof asJson === "string" ? asJson : String(raw);
13845
- } else message = String(raw);
13846
- const failed3 = { ...prev, _error: message };
13857
+ message2 = typeof asJson === "string" ? asJson : String(raw);
13858
+ } else message2 = String(raw);
13859
+ const failed3 = { ...prev, _error: message2 };
13847
13860
  if (prev.status === "loading") failed3.status = "error";
13848
13861
  if (prev.loading === true) failed3.loading = false;
13849
- if (typeof prev.error === "string") failed3.error = message;
13862
+ if (typeof prev.error === "string") failed3.error = message2;
13850
13863
  def.state = failed3;
13851
13864
  };
13852
13865
  const runAction = async (def, label3, fn2, args) => {
@@ -13991,8 +14004,8 @@ function parseDescriptorWorkerAction(actionId) {
13991
14004
  const match = /^tier5\.([A-Za-z0-9_-]+)\.([A-Za-z0-9_-]+)$/.exec(actionId);
13992
14005
  return match ? { service: match[1], action: match[2] } : null;
13993
14006
  }
13994
- function actionIssue(action, severity, message) {
13995
- return { severity, pass: "actions", path: action.at, message };
14007
+ function actionIssue(action, severity, message2) {
14008
+ return { severity, pass: "actions", path: action.at, message: message2 };
13996
14009
  }
13997
14010
  function appWorkerExports(context, service, action) {
13998
14011
  return Boolean(context.appWorkerActions?.[service]?.includes(action));
@@ -14009,8 +14022,8 @@ function validateWorkerAction(action, context) {
14009
14022
  if (exported?.includes(parsed.action)) return null;
14010
14023
  if (exported === void 0 && appWorkerExports(context, parsed.service, parsed.action)) return null;
14011
14024
  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);
14025
+ 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"})`;
14026
+ return actionIssue(action, "error", message2);
14014
14027
  }
14015
14028
  if (appWorkerMayAnswer(context, parsed.service)) {
14016
14029
  if (appWorkerExports(context, parsed.service, parsed.action)) return null;
@@ -15752,9 +15765,9 @@ function validateScreenDescriptor(screenId, descriptor, opts = {}) {
15752
15765
  const gaps = accessibleNameGaps(descriptor);
15753
15766
  const CAP5 = 20;
15754
15767
  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;
15768
+ const row2 = Object.prototype.hasOwnProperty.call(A11Y_CONTRACT, gap.type) ? A11Y_CONTRACT[gap.type] : void 0;
15756
15769
  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` : ""}.`;
15770
+ 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
15771
  issues.push({
15759
15772
  severity,
15760
15773
  pass: "a11y",
@@ -17167,8 +17180,8 @@ var init_contained_dev_module = __esm({
17167
17180
  };
17168
17181
  ContainedDevModuleUnloadable = class extends Error {
17169
17182
  himiContainedDevModuleUnloadable = true;
17170
- constructor(message) {
17171
- super(message);
17183
+ constructor(message2) {
17184
+ super(message2);
17172
17185
  this.name = "ContainedDevModuleUnloadable";
17173
17186
  }
17174
17187
  };
@@ -17178,6 +17191,18 @@ var init_contained_dev_module = __esm({
17178
17191
  });
17179
17192
 
17180
17193
  // ../../core/dev-server/src/loader.ts
17194
+ var loader_exports = {};
17195
+ __export(loader_exports, {
17196
+ hasDevModule: () => hasDevModule,
17197
+ listAvailableApps: () => listAvailableApps,
17198
+ loadApp: () => loadApp,
17199
+ loadContent: () => loadContent,
17200
+ readPlatformsJson: () => readPlatformsJson,
17201
+ resolveWixClientId: () => resolveWixClientId,
17202
+ resolveWixWebAuthConfig: () => resolveWixWebAuthConfig,
17203
+ resolveWixWebAuthPair: () => resolveWixWebAuthPair,
17204
+ tryLoadApp: () => tryLoadApp
17205
+ });
17181
17206
  import { resolve as resolve14, basename as basename5, dirname as dirname10 } from "node:path";
17182
17207
  import { existsSync as existsSync13, readdirSync as readdirSync10, readFileSync as readFileSync14, mkdirSync as mkdirSync8, rmSync as rmSync4 } from "node:fs";
17183
17208
  import { pathToFileURL as pathToFileURL3, fileURLToPath as fileURLToPath7 } from "node:url";
@@ -17214,6 +17239,9 @@ function resolveDevEntry(name) {
17214
17239
  }
17215
17240
  return null;
17216
17241
  }
17242
+ function hasDevModule(name) {
17243
+ return resolveDevEntry(name) !== null;
17244
+ }
17217
17245
  async function devModuleUrl(entry, dir, fresh = false) {
17218
17246
  const hasTypeScriptLoader = process.execArgv.some((arg) => arg.includes("tsx"));
17219
17247
  const direct = !isOffRepo() && hasTypeScriptLoader;
@@ -17699,8 +17727,8 @@ var init_errors = __esm({
17699
17727
  status;
17700
17728
  /** Stable machine-readable code for the `error` field; callers branch on this, not on prose. */
17701
17729
  code;
17702
- constructor(message, opts = {}) {
17703
- super(message);
17730
+ constructor(message2, opts = {}) {
17731
+ super(message2);
17704
17732
  this.name = "ControlInputError";
17705
17733
  this.status = opts.status ?? 400;
17706
17734
  this.code = opts.code ?? "invalid_request";
@@ -21064,8 +21092,8 @@ var init_screen_views = __esm({
21064
21092
  "../../core/serve-storage/src/screen-views.ts"() {
21065
21093
  init_unicode_case_folding();
21066
21094
  ScreenViewValidationError = class extends Error {
21067
- constructor(message) {
21068
- super(message);
21095
+ constructor(message2) {
21096
+ super(message2);
21069
21097
  this.name = "ScreenViewValidationError";
21070
21098
  }
21071
21099
  };
@@ -22776,9 +22804,9 @@ function springCurve(spring, durationMs) {
22776
22804
  const x2 = springStep(response, zeta);
22777
22805
  const step = response / 64;
22778
22806
  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);
22807
+ let settle2 = 0;
22808
+ 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;
22809
+ const secs = Math.min(settle2 + step, SPRING_MAX_SECS);
22782
22810
  const samples = Math.min(200, Math.max(24, Math.ceil(12 * secs / response)));
22783
22811
  const points = [];
22784
22812
  for (let i2 = 0; i2 <= samples; i2++) points.push(i2 === 0 ? 0 : i2 === samples ? 1 : Number(x2(secs * i2 / samples).toFixed(3)));
@@ -23749,8 +23777,8 @@ var init_base44_entities = __esm({
23749
23777
  });
23750
23778
 
23751
23779
  // ../../core/sdk/functions/src/index.ts
23752
- function fail2(message) {
23753
- throw new Error(`defineFunction: ${message}`);
23780
+ function fail2(message2) {
23781
+ throw new Error(`defineFunction: ${message2}`);
23754
23782
  }
23755
23783
  function validateName(name) {
23756
23784
  if (typeof name !== "string") fail2("name must be a string");
@@ -29765,7 +29793,7 @@ var init_preview2 = __esm({
29765
29793
  const out2 = [];
29766
29794
  const err = [];
29767
29795
  let settled = false;
29768
- const settle = (fn2, v2) => {
29796
+ const settle2 = (fn2, v2) => {
29769
29797
  if (settled) return;
29770
29798
  settled = true;
29771
29799
  clearTimeout(timer);
@@ -29776,14 +29804,14 @@ var init_preview2 = __esm({
29776
29804
  child.kill("SIGKILL");
29777
29805
  } catch {
29778
29806
  }
29779
- settle(reject, new Error(`${cmd} ${args[0] ?? ""} timed out after ${timeoutMs}ms`));
29807
+ settle2(reject, new Error(`${cmd} ${args[0] ?? ""} timed out after ${timeoutMs}ms`));
29780
29808
  }, timeoutMs);
29781
29809
  child.stdout.on("data", (b2) => out2.push(b2));
29782
29810
  child.stderr.on("data", (b2) => err.push(b2));
29783
- child.on("error", (e2) => settle(reject, e2));
29811
+ child.on("error", (e2) => settle2(reject, e2));
29784
29812
  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")}`));
29813
+ if (code === 0) settle2(resolve83, Buffer.concat(out2));
29814
+ else settle2(reject, new Error(`${cmd} exited ${code}: ${Buffer.concat(err).toString("utf8")}`));
29787
29815
  });
29788
29816
  });
29789
29817
  },
@@ -31424,7 +31452,31 @@ function useBoundValues(ctx, bindings) {
31424
31452
  }, [ctx.provider, key3]);
31425
31453
  return values.length === paths2.length ? values : paths2.map(() => void 0);
31426
31454
  }
31427
- var resolveScalarStatic, Bound, BoundList;
31455
+ function templateReadsService(template) {
31456
+ let reads2 = readsService.get(template);
31457
+ if (reads2 === void 0) {
31458
+ reads2 = JSON.stringify(template).indexOf("$service:") >= 0;
31459
+ readsService.set(template, reads2);
31460
+ }
31461
+ return reads2;
31462
+ }
31463
+ function sameJson(a2, b2) {
31464
+ if (a2 === b2) return true;
31465
+ if (a2 === null || b2 === null || typeof a2 !== "object" || typeof b2 !== "object") return false;
31466
+ if (Array.isArray(a2)) {
31467
+ if (!Array.isArray(b2) || a2.length !== b2.length) return false;
31468
+ for (let i2 = 0; i2 < a2.length; i2++) if (!sameJson(a2[i2], b2[i2])) return false;
31469
+ return true;
31470
+ }
31471
+ if (Array.isArray(b2)) return false;
31472
+ const ka2 = Object.keys(a2);
31473
+ if (ka2.length !== Object.keys(b2).length) return false;
31474
+ for (const k2 of ka2) {
31475
+ if (!Object.prototype.hasOwnProperty.call(b2, k2) || !sameJson(a2[k2], b2[k2])) return false;
31476
+ }
31477
+ return true;
31478
+ }
31479
+ var resolveScalarStatic, Bound, BoundList, readsService, BoundRow;
31428
31480
  var init_bindings2 = __esm({
31429
31481
  "../../core/web-renderer/src/bindings.tsx"() {
31430
31482
  "use strict";
@@ -31451,12 +31503,18 @@ var init_bindings2 = __esm({
31451
31503
  const arr2 = local ? ctx.itemScope?.[itemsPath.slice("$item.".length)] : bound2;
31452
31504
  const items = Array.isArray(arr2) ? arr2 : [];
31453
31505
  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
31506
  const key3 = item?.id ?? i2;
31457
- return /* @__PURE__ */ jsx3(React2.Fragment, { children: renderRow(template, itemCtx) }, String(key3));
31507
+ return /* @__PURE__ */ jsx3(BoundRow, { ctx, template, item, index: i2, renderRow }, String(key3));
31458
31508
  }) });
31459
31509
  };
31510
+ readsService = /* @__PURE__ */ new WeakMap();
31511
+ BoundRow = React2.memo(
31512
+ ({ ctx, template, item, index, renderRow }) => {
31513
+ const scope2 = item && typeof item === "object" ? { ...item, __index: index } : { value: item, __index: index };
31514
+ return /* @__PURE__ */ jsx3(Fragment, { children: renderRow(template, { ...ctx, itemScope: scope2 }) });
31515
+ },
31516
+ (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)
31517
+ );
31460
31518
  }
31461
31519
  });
31462
31520
 
@@ -33713,17 +33771,17 @@ var init_controls = __esm({
33713
33771
  if (ni2 !== selIdx) select2(ni2);
33714
33772
  };
33715
33773
  const pagerRef = React7.useRef(null);
33716
- const settle = React7.useRef(void 0);
33774
+ const settle2 = React7.useRef(void 0);
33717
33775
  React7.useEffect(() => {
33718
33776
  const el2 = pagerRef.current;
33719
33777
  if (!el2 || !el2.clientWidth) return;
33720
33778
  const x2 = selIdx * el2.clientWidth;
33721
33779
  if (Math.abs(el2.scrollLeft - x2) > 1) el2.scrollTo?.({ left: x2, behavior: "smooth" });
33722
33780
  }, [selIdx, pages2]);
33723
- React7.useEffect(() => () => clearTimeout(settle.current), []);
33781
+ React7.useEffect(() => () => clearTimeout(settle2.current), []);
33724
33782
  const onPagerScroll = () => {
33725
- clearTimeout(settle.current);
33726
- settle.current = setTimeout(() => {
33783
+ clearTimeout(settle2.current);
33784
+ settle2.current = setTimeout(() => {
33727
33785
  const el2 = pagerRef.current;
33728
33786
  if (!el2 || !el2.clientWidth) return;
33729
33787
  const i2 = Math.round(el2.scrollLeft / el2.clientWidth);
@@ -35124,7 +35182,7 @@ function Block({ b: b2, env, depth }) {
35124
35182
  case "button":
35125
35183
  return /* @__PURE__ */ jsx9(LinkButton, { label: b2.label, url: b2.url, env, testId: `${env.componentId}/${b2.id}` });
35126
35184
  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)) }) });
35185
+ 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
35186
  case "card": {
35129
35187
  const title = richContentCardTitle(b2);
35130
35188
  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 +41751,10 @@ var init_pdf = __esm({
41693
41751
  var $DOMException = function DOMException() {
41694
41752
  anInstance(this, DOMExceptionPrototype);
41695
41753
  var argumentsLength = arguments.length;
41696
- var message = normalizeStringArgument(argumentsLength < 1 ? void 0 : arguments[0]);
41754
+ var message2 = normalizeStringArgument(argumentsLength < 1 ? void 0 : arguments[0]);
41697
41755
  var name = normalizeStringArgument(argumentsLength < 2 ? void 0 : arguments[1], "Error");
41698
- var that = new NativeDOMException(message, name);
41699
- var error = new Error2(message);
41756
+ var that = new NativeDOMException(message2, name);
41757
+ var error = new Error2(message2);
41700
41758
  error.name = DOM_EXCEPTION;
41701
41759
  defineProperty(that, "stack", createPropertyDescriptor(1, clearErrorStack(error.stack, 1)));
41702
41760
  inheritIfRequired(that, this, $DOMException);
@@ -42024,8 +42082,8 @@ var init_pdf = __esm({
42024
42082
  };
42025
42083
  verbosity = VerbosityLevel.WARNINGS;
42026
42084
  BaseException = (function BaseExceptionClosure() {
42027
- function BaseException2(message, name) {
42028
- this.message = message;
42085
+ function BaseException2(message2, name) {
42086
+ this.message = message2;
42029
42087
  this.name = name;
42030
42088
  }
42031
42089
  BaseException2.prototype = new Error();
@@ -116575,9 +116633,9 @@ function ensurePressStyles() {
116575
116633
  }
116576
116634
  function idiomPressRules() {
116577
116635
  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}`;
116636
+ for (const [name, row2] of Object.entries(IDIOM_CONTROLS)) {
116637
+ const layer = `color-mix(in srgb,currentColor ${Math.round(row2.press.stateLayerOpacity * 100)}%,transparent)`;
116638
+ css += `[data-himalaya-idiom-press="${name}-highlight"]:active{opacity:${row2.press.highlightOpacity}!important}`;
116581
116639
  css += `[data-himalaya-idiom-press="${name}-ripple"]:active{background-image:linear-gradient(${layer},${layer})!important}`;
116582
116640
  }
116583
116641
  return css;
@@ -117037,7 +117095,7 @@ function lottieRuntime(lib) {
117037
117095
  } catch {
117038
117096
  }
117039
117097
  };
117040
- const settle = (el2) => {
117098
+ const settle2 = (el2) => {
117041
117099
  const anim = lottieAnims.get(el2);
117042
117100
  const host = el2;
117043
117101
  const played = host.dataset.himalayaLottiePlayed;
@@ -117106,7 +117164,7 @@ function lottieRuntime(lib) {
117106
117164
  const stamp = host.getAttribute("data-himalaya-lottie-play");
117107
117165
  if (!anim) return;
117108
117166
  if (!stamp) {
117109
- settle(el2);
117167
+ settle2(el2);
117110
117168
  return;
117111
117169
  }
117112
117170
  if (host.dataset.himalayaLottiePlayed === stamp) return;
@@ -117123,7 +117181,7 @@ function lottieRuntime(lib) {
117123
117181
  if (r3.type !== "attributes" || !(r3.target instanceof Element)) continue;
117124
117182
  if (r3.attributeName === "data-himalaya-lottie") remount(r3.target);
117125
117183
  else if (r3.attributeName === "data-himalaya-lottie-reduce") applyReduce(r3.target);
117126
- else if (r3.attributeName === "data-himalaya-lottie-gen") settle(r3.target);
117184
+ else if (r3.attributeName === "data-himalaya-lottie-gen") settle2(r3.target);
117127
117185
  else if (r3.attributeName === "data-himalaya-lottie-loop") applyLoop(r3.target);
117128
117186
  else replay(r3.target);
117129
117187
  }
@@ -118082,10 +118140,10 @@ function tableColumns(raw) {
118082
118140
  };
118083
118141
  });
118084
118142
  }
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;
118143
+ function dataTableCells(row2, columns) {
118144
+ if (row2 == null) return columns.map(() => "");
118145
+ if (Array.isArray(row2)) return columns.map((_2, i2) => row2[i2] == null ? "" : String(row2[i2]));
118146
+ const o2 = row2;
118089
118147
  if (Array.isArray(o2.cells)) return columns.map((_2, i2) => o2.cells[i2] == null ? "" : String(o2.cells[i2]));
118090
118148
  return columns.map((c2) => c2.key && o2[c2.key] != null ? String(o2[c2.key]) : "");
118091
118149
  }
@@ -119116,11 +119174,11 @@ function renderInner(node, ctx) {
119116
119174
  itemsPath,
119117
119175
  template: items[0],
119118
119176
  renderRow: (t2, ic) => {
119119
- let row = renderNode(t2, asItem(ic));
119120
- if (boundStagger > 0 && React12.isValidElement(row)) {
119177
+ let row2 = renderNode(t2, asItem(ic));
119178
+ if (boundStagger > 0 && React12.isValidElement(row2)) {
119121
119179
  const i2 = Number(ic.itemScope?.__index ?? 0);
119122
- const prev = row.props.style ?? {};
119123
- row = React12.cloneElement(row, { style: { ...prev, animationDelay: `${i2 * boundStagger}ms` } });
119180
+ const prev = row2.props.style ?? {};
119181
+ row2 = React12.cloneElement(row2, { style: { ...prev, animationDelay: `${i2 * boundStagger}ms` } });
119124
119182
  }
119125
119183
  if (boundSwipe && ctx.onAction && !props.horizontal) {
119126
119184
  const leading = resolveSwipeActions(boundSwipe.leading, ic);
@@ -119136,12 +119194,12 @@ function renderInner(node, ctx) {
119136
119194
  accent: C2("accentPrimary", "#116DFF"),
119137
119195
  fg: C2("textPrimary", "#13171e"),
119138
119196
  fontFamily: bodyFont(ctx),
119139
- children: row
119197
+ children: row2
119140
119198
  }
119141
119199
  );
119142
119200
  }
119143
119201
  }
119144
- return row;
119202
+ return row2;
119145
119203
  }
119146
119204
  }
119147
119205
  );
@@ -120534,9 +120592,9 @@ var init_renderNode = __esm({
120534
120592
  const rawMessage = errorMessageFor({ rule: effectiveRule, value: local, workerError, catalog: validationCatalog });
120535
120593
  const hasWorkerError = Boolean(workerError && workerError.trim());
120536
120594
  const painted2 = rawMessage === null ? "" : translateOnly(rawMessage);
120537
- const message = !painted2.trim() || ruleMessagePending && !hasWorkerError ? null : painted2;
120595
+ const message2 = !painted2.trim() || ruleMessagePending && !hasWorkerError ? null : painted2;
120538
120596
  const [feedbackShown, setFeedbackShown] = React12.useState(false);
120539
- const revealed = message !== null && shouldRevealError({
120597
+ const revealed = message2 !== null && shouldRevealError({
120540
120598
  rule,
120541
120599
  feedbackShown,
120542
120600
  hasWorkerError,
@@ -120687,7 +120745,7 @@ var init_renderNode = __esm({
120687
120745
  ),
120688
120746
  props.trailingIcon && accIcon(props.trailingIcon)
120689
120747
  ] }),
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
120748
+ 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
120749
  ] });
120692
120750
  };
120693
120751
  MENU_ANCHOR_CONTROL = 'a[href], button, input, select, textarea, [tabindex]:not([tabindex="-1"]), [role="button"], [role="link"]';
@@ -121225,10 +121283,10 @@ var init_renderNode = __esm({
121225
121283
  setStatus("playing");
121226
121284
  setError("");
121227
121285
  } catch (cause) {
121228
- const message = cause instanceof Error ? cause.message : "Autoplay blocked";
121286
+ const message2 = cause instanceof Error ? cause.message : "Autoplay blocked";
121229
121287
  setStatus("blocked");
121230
- setError(message);
121231
- emit(props.onError, { state: "blocked", status: "blocked", error: message, code: "playback_blocked" });
121288
+ setError(message2);
121289
+ emit(props.onError, { state: "blocked", status: "blocked", error: message2, code: "playback_blocked" });
121232
121290
  }
121233
121291
  }, [isYouTube, isUnsupportedProvider, emit, props.onError]);
121234
121292
  const pause = React12.useCallback(() => {
@@ -121478,10 +121536,10 @@ var init_renderNode = __esm({
121478
121536
  emit(props.onEnd, { state: "ended", status: "ended" });
121479
121537
  },
121480
121538
  onError: () => {
121481
- const message = "Unable to play this media source";
121539
+ const message2 = "Unable to play this media source";
121482
121540
  setStatus("error");
121483
- setError(message);
121484
- emit(props.onError, { state: "error", status: "error", error: message, code: "source_error" });
121541
+ setError(message2);
121542
+ emit(props.onError, { state: "error", status: "error", error: message2, code: "source_error" });
121485
121543
  }
121486
121544
  };
121487
121545
  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 +121609,7 @@ var init_renderNode = __esm({
121551
121609
  if (!retypeSrc) return;
121552
121610
  let live3 = true;
121553
121611
  let made = null;
121554
- const settle = (r3) => {
121612
+ const settle2 = (r3) => {
121555
121613
  const u2 = r3?.url ?? null;
121556
121614
  made = u2;
121557
121615
  if (!live3) {
@@ -121560,7 +121618,7 @@ var init_renderNode = __esm({
121560
121618
  }
121561
121619
  setRetyped({ from: retypeSrc, url: u2, pageCount: r3?.pageCount ?? null });
121562
121620
  };
121563
- loadPdfFetch().then((m2) => m2.retypeAsPdfCounted(retypeSrc)).then(settle, () => settle(null));
121621
+ loadPdfFetch().then((m2) => m2.retypeAsPdfCounted(retypeSrc)).then(settle2, () => settle2(null));
121564
121622
  return () => {
121565
121623
  live3 = false;
121566
121624
  if (made) URL.revokeObjectURL(made);
@@ -124475,7 +124533,7 @@ var init_renderNode = __esm({
124475
124533
  const selectedId = isBinding(props.selectedId) ? boundSel : props.selectedId;
124476
124534
  const selIdx = Math.max(0, opts.findIndex((o2) => o2?.id === selectedId));
124477
124535
  const viewport = React12.useRef(null);
124478
- const settle = React12.useRef(void 0);
124536
+ const settle2 = React12.useRef(void 0);
124479
124537
  const pickerId = React12.useId();
124480
124538
  const interactive = !!ctx.onAction && !!props.onChange;
124481
124539
  const emit = (index) => {
@@ -124486,7 +124544,7 @@ var init_renderNode = __esm({
124486
124544
  React12.useEffect(() => {
124487
124545
  if (viewport.current) viewport.current.scrollTop = selIdx * 32;
124488
124546
  }, [selIdx, opts.length]);
124489
- React12.useEffect(() => () => clearTimeout(settle.current), []);
124547
+ React12.useEffect(() => () => clearTimeout(settle2.current), []);
124490
124548
  return /* @__PURE__ */ jsxs8("div", { style: { position: "relative", width: "100%", maxWidth: 220, height: 160, overflow: "hidden", background: C2("surfaceSecondary", "#f5f7fa"), borderRadius: 12, ...wrap }, children: [
124491
124549
  /* @__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
124550
  /* @__PURE__ */ jsx11(
@@ -124506,8 +124564,8 @@ var init_renderNode = __esm({
124506
124564
  }
124507
124565
  },
124508
124566
  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);
124567
+ clearTimeout(settle2.current);
124568
+ settle2.current = setTimeout(() => emit(Math.max(0, Math.min(opts.length - 1, Math.round((viewport.current?.scrollTop ?? 0) / 32)))), 120);
124511
124569
  },
124512
124570
  style: { position: "relative", height: "100%", overflowY: "auto", scrollbarWidth: "none", scrollSnapType: "y mandatory", padding: "64px 0", boxSizing: "border-box" },
124513
124571
  children: opts.map((o2, index) => /* @__PURE__ */ jsx11(
@@ -125289,7 +125347,7 @@ var init_renderNode = __esm({
125289
125347
  ] }),
125290
125348
  /* @__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
125349
  /* @__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) => {
125350
+ (row2, ri2) => row2.map((cell2, ci2) => {
125293
125351
  if (!cell2.inMonth && !showAdjacent) return /* @__PURE__ */ jsx11("div", { "aria-hidden": "true" }, `${ri2}-${ci2}`);
125294
125352
  const dec = decByDate.get(cell2.date);
125295
125353
  const disabled = dec?.disabled === true || !calWithinWindow(cell2.date, minDate, maxDate);
@@ -126347,8 +126405,8 @@ async function pngPageHtml(item) {
126347
126405
  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
126406
  }
126349
126407
  function isMissingPlaywrightExecutable(error) {
126350
- const message = error?.message ?? "";
126351
- return /Executable doesn't exist at/.test(message) && /playwright install/.test(message);
126408
+ const message2 = error?.message ?? "";
126409
+ return /Executable doesn't exist at/.test(message2) && /playwright install/.test(message2);
126352
126410
  }
126353
126411
  async function pngAvailable() {
126354
126412
  let chromium;
@@ -127741,11 +127799,11 @@ function deepMerge3(base, patch) {
127741
127799
  return out2;
127742
127800
  }
127743
127801
  function recordOverrideHistory(state, screenId, op, descriptor, notes) {
127744
- const row = { id: ++overrideHistorySeq, op, descriptor, notes, updatedAt: Math.floor(Date.now() / 1e3) };
127802
+ const row2 = { id: ++overrideHistorySeq, op, descriptor, notes, updatedAt: Math.floor(Date.now() / 1e3) };
127745
127803
  const list2 = state.localOverrideHistory.get(screenId) ?? [];
127746
- list2.unshift(row);
127804
+ list2.unshift(row2);
127747
127805
  state.localOverrideHistory.set(screenId, list2);
127748
- return row;
127806
+ return row2;
127749
127807
  }
127750
127808
  function send(res, status, body, headers2 = {}) {
127751
127809
  res.statusCode = status;
@@ -128167,21 +128225,21 @@ async function handleOrionChatRequest(req, res) {
128167
128225
  const { detectAgentHire, sendOrionChatMessage, extractAgentFromReply, localMaestroReply } = await import("./apps/orion-clone-live.js");
128168
128226
  let body = "";
128169
128227
  for await (const chunk of req) body += chunk;
128170
- let message = "";
128228
+ let message2 = "";
128171
128229
  let conversationId;
128172
128230
  let attachment;
128173
128231
  try {
128174
128232
  const j2 = JSON.parse(body || "{}");
128175
- message = String(j2.message ?? "");
128233
+ message2 = String(j2.message ?? "");
128176
128234
  conversationId = j2.conversationId ? String(j2.conversationId) : void 0;
128177
128235
  if (j2.attachment && typeof j2.attachment.dataUri === "string" && j2.attachment.dataUri) {
128178
128236
  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
128237
  }
128180
128238
  } catch {
128181
128239
  }
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);
128240
+ if (!message2.trim()) return sendJson(res, 400, { error: "message_required" }, cors);
128241
+ const hireIntent = detectAgentHire(message2);
128242
+ const result = await sendOrionChatMessage(message2, conversationId, attachment);
128185
128243
  let agentCard;
128186
128244
  let hireReply;
128187
128245
  if (hireIntent) {
@@ -128194,7 +128252,7 @@ async function handleOrionChatRequest(req, res) {
128194
128252
  }
128195
128253
  }
128196
128254
  if (!result || !result.reply || !result.reply.trim()) {
128197
- const reply = hireReply ?? localMaestroReply(message);
128255
+ const reply = hireReply ?? localMaestroReply(message2);
128198
128256
  return sendJson(res, 200, { conversationId: result?.conversationId ?? conversationId ?? "local-dev", reply, ...agentCard ? { agentCard } : {} }, { ...cors, "cache-control": "no-store" });
128199
128257
  }
128200
128258
  return sendJson(res, 200, { ...result, reply: hireReply ?? result.reply, ...agentCard ? { agentCard } : {} }, { ...cors, "cache-control": "no-store" });
@@ -128210,11 +128268,11 @@ async function handleOrionConversationRequest(req, res) {
128210
128268
  async function handleOrionChatStreamRequest(req, res) {
128211
128269
  let body = "";
128212
128270
  for await (const chunk of req) body += chunk;
128213
- let message = "";
128271
+ let message2 = "";
128214
128272
  let conversationId;
128215
128273
  try {
128216
128274
  const j2 = JSON.parse(body || "{}");
128217
- message = String(j2.message ?? "");
128275
+ message2 = String(j2.message ?? "");
128218
128276
  conversationId = j2.conversationId ? String(j2.conversationId) : void 0;
128219
128277
  } catch {
128220
128278
  }
@@ -128225,7 +128283,7 @@ async function handleOrionChatStreamRequest(req, res) {
128225
128283
  "access-control-allow-origin": "*"
128226
128284
  });
128227
128285
  const { openOrionChatStream } = await import("./apps/orion-clone-live.js");
128228
- await openOrionChatStream(message, conversationId, (sse) => {
128286
+ await openOrionChatStream(message2, conversationId, (sse) => {
128229
128287
  try {
128230
128288
  res.write(sse);
128231
128289
  } catch {
@@ -129463,9 +129521,9 @@ async function handleWebWix(req, res, state) {
129463
129521
  record2("proxy", r3.status, r3.body);
129464
129522
  return reply(200, { status: r3.status, body: r3.body });
129465
129523
  } 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 });
129524
+ const message2 = JSON.stringify({ error: String(e2?.message ?? e2) });
129525
+ record2("proxy", 0, message2);
129526
+ return reply(200, { status: 0, body: message2 });
129469
129527
  }
129470
129528
  }
129471
129529
  if (path2 === "/v1/__webwix/logout" && req.method === "POST") {
@@ -129856,9 +129914,9 @@ async function handleDev(req, res, state) {
129856
129914
  state.serverCache.clear();
129857
129915
  return sendJson(res, 200, { status: "ok", bundle: name });
129858
129916
  } 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 });
129917
+ const message2 = err.message;
129918
+ const status = /unknown bundle source/.test(message2) ? 404 : 500;
129919
+ return sendJson(res, status, { error: "rebuild_failed", bundle: name, message: message2 });
129862
129920
  }
129863
129921
  }
129864
129922
  if (url === "/__dev/actions/log") {
@@ -130021,14 +130079,14 @@ async function handleAdminPlayground(req, res, state) {
130021
130079
  if (revertMatch && req.method === "POST") {
130022
130080
  const screenId = decodeURIComponent(revertMatch[1]);
130023
130081
  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) {
130082
+ const row2 = (state.localOverrideHistory.get(screenId) ?? []).find((r3) => r3.id === historyId);
130083
+ if (!row2) return sendJson(res, 404, { error: "history_row_not_found", screenId, historyId });
130084
+ if (row2.op === "delete" || row2.descriptor == null) {
130027
130085
  state.localOverrides.delete(screenId);
130028
130086
  recordOverrideHistory(state, screenId, "revert", null, `revert to #${historyId} (deleted)`);
130029
130087
  } else {
130030
- state.localOverrides.set(screenId, row.descriptor);
130031
- recordOverrideHistory(state, screenId, "revert", row.descriptor, `revert to #${historyId}`);
130088
+ state.localOverrides.set(screenId, row2.descriptor);
130089
+ recordOverrideHistory(state, screenId, "revert", row2.descriptor, `revert to #${historyId}`);
130032
130090
  }
130033
130091
  invalidate(state, screenId);
130034
130092
  return sendJson(res, 200, { status: "ok", screenId, revertedTo: historyId });
@@ -133124,8 +133182,8 @@ function emptiedBase44(data) {
133124
133182
  const drain = (m2) => Object.fromEntries(Object.keys(m2).map((k2) => [k2, []]));
133125
133183
  return { seed: drain(data.seed), sample: drain(data.sample) };
133126
133184
  }
133127
- function fail3(status, code, message) {
133128
- return { ok: false, error: { status, code, message } };
133185
+ function fail3(status, code, message2) {
133186
+ return { ok: false, error: { status, code, message: message2 } };
133129
133187
  }
133130
133188
  function parseObject2(raw) {
133131
133189
  if (raw && typeof raw === "object" && !Array.isArray(raw)) return raw;
@@ -133215,11 +133273,11 @@ function compareScalar(a2, b2) {
133215
133273
  function scalarEqual(a2, b2) {
133216
133274
  return isScalar(a2) && isScalar(b2) && a2 === b2;
133217
133275
  }
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];
133276
+ function evalCondition(row2, c2) {
133277
+ if ("and" in c2) return c2.and.every((s2) => evalCondition(row2, s2));
133278
+ if ("or" in c2) return c2.or.some((s2) => evalCondition(row2, s2));
133279
+ if ("not" in c2) return !evalCondition(row2, c2.not);
133280
+ const rv = row2[c2.field];
133223
133281
  switch (c2.op) {
133224
133282
  case "eq":
133225
133283
  return scalarEqual(rv, c2.value);
@@ -133367,26 +133425,26 @@ function seedTokens(state, limit = 48) {
133367
133425
  }
133368
133426
  function synthesizeInput(control, resolve83, tokens2) {
133369
133427
  const id = `${control.type}.${control.callback}`;
133370
- const row = SYNTHESIZED_CONTROLS[id];
133371
- if (!row) return null;
133428
+ const row2 = SYNTHESIZED_CONTROLS[id];
133429
+ if (!row2) return null;
133372
133430
  const props = control.props;
133373
133431
  if (hasRowBinding(props)) return null;
133374
- if (row.from === "declared-options") {
133432
+ if (row2.from === "declared-options") {
133375
133433
  const ids = declaredOptionIds(props, resolve83);
133376
133434
  if (!ids.length) return null;
133377
- if (row.encoding === "string-array") {
133435
+ if (row2.encoding === "string-array") {
133378
133436
  const currentRaw2 = resolved(props.selectedIds, resolve83);
133379
133437
  const current3 = (Array.isArray(currentRaw2) ? currentRaw2 : []).filter((x2) => typeof x2 === "string");
133380
133438
  const pick5 = ids.find((o2) => !current3.includes(o2));
133381
133439
  if (pick5 === void 0) return null;
133382
133440
  const value2 = props.multiSelect === true ? [...current3, pick5] : [pick5];
133383
- return { key: row.key, value: value2, from: row.from, current: current3, control: id };
133441
+ return { key: row2.key, value: value2, from: row2.from, current: current3, control: id };
133384
133442
  }
133385
133443
  const currentRaw = resolved(props.selectedId, resolve83);
133386
133444
  const current2 = typeof currentRaw === "string" ? currentRaw : void 0;
133387
133445
  const pick4 = ids.find((o2) => o2 !== current2);
133388
133446
  if (pick4 === void 0) return null;
133389
- return { key: row.key, value: pick4, from: row.from, current: current2, control: id };
133447
+ return { key: row2.key, value: pick4, from: row2.from, current: current2, control: id };
133390
133448
  }
133391
133449
  if (!acceptsWords(props) || !acceptsWords(control.wrapper ?? {})) return null;
133392
133450
  const binding2 = typeof props.valuePath === "string" ? props.valuePath : typeof props.value === "string" && props.value.startsWith("$service:") ? props.value : void 0;
@@ -133396,7 +133454,7 @@ function synthesizeInput(control, resolve83, tokens2) {
133396
133454
  const max = typeof props.maxLength === "number" && props.maxLength > 0 ? props.maxLength : void 0;
133397
133455
  const pick3 = tokens2().find((t2) => t2 !== current && (max === void 0 || t2.length <= max));
133398
133456
  if (pick3 === void 0) return null;
133399
- return { key: row.key, value: pick3, from: row.from, current, control: id };
133457
+ return { key: row2.key, value: pick3, from: row2.from, current, control: id };
133400
133458
  }
133401
133459
  function acceptsWords(props) {
133402
133460
  if (props.secure === true) return false;
@@ -133678,8 +133736,8 @@ function onAppearOf(payload) {
133678
133736
  function rootOnAppear(descriptor) {
133679
133737
  return onAppearOf(descriptor?.payload);
133680
133738
  }
133681
- function isTransportReject(message) {
133682
- return message === REJECT_ALL_MESSAGE || message.startsWith("no data layer served ");
133739
+ function isTransportReject(message2) {
133740
+ return message2 === REJECT_ALL_MESSAGE || message2.startsWith("no data layer served ");
133683
133741
  }
133684
133742
  function isUnservedRequest(e2) {
133685
133743
  const m2 = e2 instanceof Error ? e2.message : typeof e2 === "string" ? e2 : "";
@@ -133895,11 +133953,11 @@ function localDatabaseAnswer(schema, store, queue, method, params) {
133895
133953
  if (!obj5 || typeof obj5.id !== "string") {
133896
133954
  throw new Error("local_database.upsert: object with string id required");
133897
133955
  }
133898
- const row = detached(obj5);
133899
- const at2 = rows.findIndex((r3) => r3.id === row.id);
133956
+ const row2 = detached(obj5);
133957
+ const at2 = rows.findIndex((r3) => r3.id === row2.id);
133900
133958
  const next = [...rows];
133901
- if (at2 >= 0) next[at2] = row;
133902
- else next.push(row);
133959
+ if (at2 >= 0) next[at2] = row2;
133960
+ else next.push(row2);
133903
133961
  store.set(entity, next);
133904
133962
  return {};
133905
133963
  }
@@ -134478,13 +134536,13 @@ async function crawlScreen(opts) {
134478
134536
  async function crawlScreenJourney(opts) {
134479
134537
  return withSwallowedRejections(async () => {
134480
134538
  const findings = [];
134481
- const fail6 = (message, step) => {
134539
+ const fail6 = (message2, step) => {
134482
134540
  findings.push({
134483
134541
  screen: opts.screenId,
134484
134542
  trigger: step ? { tap: step.component ?? null, key: "journey", action: step.action } : "boot",
134485
134543
  invariant: "journey-failed",
134486
134544
  severity: "error",
134487
- message,
134545
+ message: message2,
134488
134546
  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
134547
  });
134490
134548
  };
@@ -135405,11 +135463,11 @@ async function crawlScreenDeep(opts, deep) {
135405
135463
  return { findings: dedupe(findings), nodesVisited: visited.size, dispatches, capped, ...effects.length ? { effects } : {} };
135406
135464
  });
135407
135465
  }
135408
- function effectiveSiteForRow(site, row) {
135466
+ function effectiveSiteForRow(site, row2) {
135409
135467
  const merged = { ...site.params ?? {}, ...site.args ?? {} };
135410
135468
  const substituted = {};
135411
135469
  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;
135470
+ substituted[k2] = typeof v2 === "string" && v2.startsWith("$item.") ? pathValue(row2, v2.slice("$item.".length)) : v2 === "$item" ? row2 : v2;
135413
135471
  }
135414
135472
  return { ...site, params: substituted, args: void 0 };
135415
135473
  }
@@ -135603,8 +135661,8 @@ async function crawlScreenRelations(opts) {
135603
135661
  const undoIsRowBound = isRowBound(b2);
135604
135662
  const after = await replay([a2, b2], (i2, bootState, prev) => {
135605
135663
  if (i2 !== 1) return null;
135606
- const row = newlyAddedRow(bootState, prev, b2.itemsPath);
135607
- if (row) return row;
135664
+ const row2 = newlyAddedRow(bootState, prev, b2.itemsPath);
135665
+ if (row2) return row2;
135608
135666
  return undoIsRowBound ? UNBINDABLE_ROW : null;
135609
135667
  });
135610
135668
  if (!after) continue;
@@ -135663,7 +135721,7 @@ var init_screen_crawl = __esm({
135663
135721
  WIX_DATA_QUERY = /\/wix-data\/v2\/items\/query$/;
135664
135722
  WIX_DATA_ANY = /\/wix-data\//;
135665
135723
  CAPABILITY_ACTION = /^capability\.([a-z0-9_]+)\.([A-Za-z0-9_]+)$/;
135666
- detached = (row) => JSON.parse(JSON.stringify(row));
135724
+ detached = (row2) => JSON.parse(JSON.stringify(row2));
135667
135725
  CRAWL_CLOCK = Date.parse("2026-01-01T00:00:00.000Z");
135668
135726
  MEMBER_IDENTITY_ACTION = /memberIdentity|member\.identity|currentMember/i;
135669
135727
  BLANK_WHEN_BOUND = {
@@ -138424,7 +138482,7 @@ function penalty(m2, size) {
138424
138482
  if (c2 === m2[y2][x2 + 1] && c2 === m2[y2 + 1][x2] && c2 === m2[y2 + 1][x2 + 1]) score += 3;
138425
138483
  }
138426
138484
  let dark = 0;
138427
- for (const row of m2) for (const c2 of row) if (c2) dark++;
138485
+ for (const row2 of m2) for (const c2 of row2) if (c2) dark++;
138428
138486
  const total = size * size;
138429
138487
  score += Math.floor(Math.abs(dark * 20 - total * 10) / total) * 10;
138430
138488
  return score;
@@ -138497,7 +138555,7 @@ function encodeQr(text11) {
138497
138555
  }
138498
138556
  let best = null, bestMask = 0, bestScore = Infinity;
138499
138557
  for (let mask = 0; mask < 8; mask++) {
138500
- const cand = modules.map((row) => [...row]);
138558
+ const cand = modules.map((row2) => [...row2]);
138501
138559
  for (let y2 = 0; y2 < size; y2++)
138502
138560
  for (let x2 = 0; x2 < size; x2++) if (!reserved[y2][x2] && MASKS[mask](x2, y2)) cand[y2][x2] = !cand[y2][x2];
138503
138561
  applyFormat(cand, size, mask);
@@ -139109,7 +139167,7 @@ function lanOf(value2) {
139109
139167
  return null;
139110
139168
  }
139111
139169
  try {
139112
- return { url, qr: encodeQr(url).modules.map((row) => row.map((m2) => m2 ? "1" : "0").join("")) };
139170
+ return { url, qr: encodeQr(url).modules.map((row2) => row2.map((m2) => m2 ? "1" : "0").join("")) };
139113
139171
  } catch {
139114
139172
  return { url, qr: null };
139115
139173
  }
@@ -140620,11 +140678,11 @@ function validateAmpersand(xmlData, i2) {
140620
140678
  }
140621
140679
  return i2;
140622
140680
  }
140623
- function getErrorObject(code, message, lineNumber) {
140681
+ function getErrorObject(code, message2, lineNumber) {
140624
140682
  return {
140625
140683
  err: {
140626
140684
  code,
140627
- msg: message,
140685
+ msg: message2,
140628
140686
  line: lineNumber.line || lineNumber,
140629
140687
  col: lineNumber.col
140630
140688
  }
@@ -147832,6 +147890,7 @@ var init_home_descriptor = __esm({
147832
147890
  var template_trim_exports = {};
147833
147891
  __export(template_trim_exports, {
147834
147892
  TrimRefusal: () => TrimRefusal,
147893
+ bundlesOf: () => bundlesOf,
147835
147894
  comparable: () => comparable,
147836
147895
  compareErrors: () => compareErrors,
147837
147896
  leftoverNavRefs: () => leftoverNavRefs,
@@ -148058,8 +148117,8 @@ function rowTemplateTarget(entry, removed) {
148058
148117
  if (!isNode3(entry)) return void 0;
148059
148118
  const props = entry.body.props;
148060
148119
  if (!props?.itemsPath || !Array.isArray(props.items)) return void 0;
148061
- for (const row of props.items) {
148062
- const to2 = tapTarget(row);
148120
+ for (const row2 of props.items) {
148121
+ const to2 = tapTarget(row2);
148063
148122
  if (to2 && removed(to2)) return to2;
148064
148123
  }
148065
148124
  return void 0;
@@ -148713,17 +148772,17 @@ async function runTemplateTrim(req, deps) {
148713
148772
  validate: validate6 ? { counts: validate6.counts ?? null, ...validate6.tail ? { tail: validate6.tail } : {} } : null
148714
148773
  });
148715
148774
  const abort = (error, cause, validate6) => {
148716
- const message = cause?.message ?? String(cause);
148775
+ const message2 = cause?.message ?? String(cause);
148717
148776
  try {
148718
148777
  restore();
148719
148778
  } catch (e2) {
148720
148779
  return {
148721
148780
  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) }
148781
+ 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
148782
  };
148724
148783
  }
148725
148784
  dropBackup();
148726
- return { code: 1, result: { ok: false, error: `${error} (${message}); every file was restored`, rolledBack: true, ...base(validate6) } };
148785
+ return { code: 1, result: { ok: false, error: `${error} (${message2}); every file was restored`, rolledBack: true, ...base(validate6) } };
148727
148786
  };
148728
148787
  try {
148729
148788
  mkdirSync20(join34(backup, "dev"), { recursive: true });
@@ -148855,8 +148914,8 @@ var init_template_trim = __esm({
148855
148914
  init_home_descriptor();
148856
148915
  TrimRefusal = class extends Error {
148857
148916
  detail;
148858
- constructor(message, detail = {}) {
148859
- super(message);
148917
+ constructor(message2, detail = {}) {
148918
+ super(message2);
148860
148919
  this.detail = detail;
148861
148920
  }
148862
148921
  };
@@ -148887,6 +148946,129 @@ var init_template_trim = __esm({
148887
148946
  }
148888
148947
  });
148889
148948
 
148949
+ // src/template-evaluate.ts
148950
+ var template_evaluate_exports = {};
148951
+ __export(template_evaluate_exports, {
148952
+ evaluatedView: () => evaluatedView,
148953
+ templatedLabel: () => templatedLabel
148954
+ });
148955
+ async function settle(work, what) {
148956
+ let timer;
148957
+ try {
148958
+ return await Promise.race([
148959
+ Promise.resolve().then(work),
148960
+ new Promise((_2, reject) => {
148961
+ timer = setTimeout(() => reject(new Error(`${what} did not finish within ${BUILD_TIMEOUT_MS / 1e3}s`)), BUILD_TIMEOUT_MS);
148962
+ })
148963
+ ]);
148964
+ } finally {
148965
+ clearTimeout(timer);
148966
+ }
148967
+ }
148968
+ function captureCount(pattern) {
148969
+ try {
148970
+ return (new RegExp(`${pattern.source}|`).exec("")?.length ?? 1) - 1;
148971
+ } catch {
148972
+ return 1;
148973
+ }
148974
+ }
148975
+ function buildContext(module, name) {
148976
+ let store = {};
148977
+ try {
148978
+ store = module.createStore?.(name) ?? {};
148979
+ } catch {
148980
+ store = {};
148981
+ }
148982
+ return {
148983
+ store,
148984
+ toggles: {},
148985
+ query: new URLSearchParams(),
148986
+ caller: { entitled: false },
148987
+ serverBaseUrl: "http://localhost",
148988
+ bundleIntegrity: () => "sha256-unpinned",
148989
+ asset: () => null
148990
+ };
148991
+ }
148992
+ function row(label3, kind, built, buildError) {
148993
+ const block = built && typeof built === "object" && !Array.isArray(built) ? built : {};
148994
+ const json8 = JSON.stringify(block, null, 2) ?? "{}";
148995
+ return {
148996
+ label: label3,
148997
+ kind,
148998
+ block,
148999
+ bundles: buildError ? [] : bundlesOf(block),
149000
+ lines: json8.split("\n").length,
149001
+ bytes: Buffer.byteLength(json8),
149002
+ ...buildError ? { buildError } : {}
149003
+ };
149004
+ }
149005
+ async function buildTemplated(t2, ctx) {
149006
+ const placeholder3 = Array.from({ length: Math.max(1, captureCount(t2.pattern)) }, () => ID_PLACEHOLDER);
149007
+ let error;
149008
+ try {
149009
+ const built = await settle(() => t2.build(ctx, placeholder3), `the templated route ${t2.display}`);
149010
+ if (built) return { built };
149011
+ } catch (e2) {
149012
+ error = message(e2);
149013
+ }
149014
+ if (typeof t2.seedIds === "function") {
149015
+ try {
149016
+ const ids = await settle(() => t2.seedIds(ctx), `seedIds of ${t2.display}`);
149017
+ for (const id of Array.isArray(ids) ? ids.slice(0, 20) : []) {
149018
+ const m2 = typeof id === "string" ? t2.pattern.exec(id) : null;
149019
+ if (!m2) continue;
149020
+ const built = await settle(() => t2.build(ctx, m2.slice(1)), `the templated route ${t2.display}`);
149021
+ if (built) return { built };
149022
+ }
149023
+ } catch (e2) {
149024
+ error ??= message(e2);
149025
+ }
149026
+ }
149027
+ return { error: error ?? "the builder returned no descriptor" };
149028
+ }
149029
+ async function evaluatedView(dir) {
149030
+ const { loadContent: loadContent2 } = await Promise.resolve().then(() => (init_loader(), loader_exports));
149031
+ (await Promise.resolve().then(() => (init_build(), build_exports))).bundledRuntimeDir();
149032
+ let loaded;
149033
+ try {
149034
+ loaded = await loadContent2(dir);
149035
+ } catch (e2) {
149036
+ throw new TrimRefusal(`dev/index.ts could not be loaded to read its screens: ${message(e2)}`);
149037
+ }
149038
+ const m2 = loaded.module;
149039
+ const ctx = buildContext(m2, loaded.name);
149040
+ const routes = [];
149041
+ for (const [id, build3] of Object.entries(m2.screens?.exact ?? {})) {
149042
+ try {
149043
+ const built = await settle(() => build3(ctx), `the screen ${id}`);
149044
+ routes.push(built ? row(id, "screen", built) : row(id, "screen", void 0, "the builder returned no descriptor"));
149045
+ } catch (e2) {
149046
+ routes.push(row(id, "screen", void 0, message(e2)));
149047
+ }
149048
+ }
149049
+ for (const t2 of m2.screens?.templated ?? []) {
149050
+ const { built, error } = await buildTemplated(t2, ctx);
149051
+ routes.push(row(templatedLabel(String(t2.display)), "templated", built, built ? void 0 : error));
149052
+ }
149053
+ const nav = m2.config?.navigation;
149054
+ return {
149055
+ layout: "evaluated",
149056
+ home: String(m2.homeScreenId ?? ""),
149057
+ routes,
149058
+ nav: nav && typeof nav === "object" && !Array.isArray(nav) ? nav : {}
149059
+ };
149060
+ }
149061
+ var BUILD_TIMEOUT_MS, ID_PLACEHOLDER, templatedLabel, message;
149062
+ var init_template_evaluate = __esm({
149063
+ "src/template-evaluate.ts"() {
149064
+ init_template_trim();
149065
+ BUILD_TIMEOUT_MS = 1e4;
149066
+ ID_PLACEHOLDER = "__HIMI_ID__";
149067
+ templatedLabel = (display) => display.replace(/[[{].*$/, "").replace(/[_/]+$/, "") || display;
149068
+ message = (e2) => e2 instanceof Error ? e2.message : String(e2);
149069
+ }
149070
+ });
149071
+
148890
149072
  // src/template-adopt.ts
148891
149073
  var template_adopt_exports = {};
148892
149074
  __export(template_adopt_exports, {
@@ -148899,6 +149081,7 @@ __export(template_adopt_exports, {
148899
149081
  copyHits: () => copyHits,
148900
149082
  droppedPrimaryTaps: () => droppedPrimaryTaps,
148901
149083
  findRoute: () => findRoute,
149084
+ inspectAnyLayout: () => inspectAnyLayout,
148902
149085
  inspectApp: () => inspectApp,
148903
149086
  inventorySummary: () => inventorySummary,
148904
149087
  keepFromSpec: () => keepFromSpec,
@@ -149051,8 +149234,8 @@ function copyHits(dir, re2, limit = 200) {
149051
149234
  }
149052
149235
  return { hits, total };
149053
149236
  }
149054
- function navigationOf(app) {
149055
- const nav = app.nav.value;
149237
+ function navigationOf(navValue) {
149238
+ const nav = navValue ?? {};
149056
149239
  const tabs = (nav.tabBar?.items ?? []).map((t2) => t2.screenId).filter((s2) => typeof s2 === "string");
149057
149240
  return { tabs, linkable: Array.isArray(nav.linkableScreens) ? nav.linkableScreens.length : 0 };
149058
149241
  }
@@ -149070,9 +149253,40 @@ function journeysFor(screen, actions) {
149070
149253
  expectText: ["<FILL: text the screen shows once the submit succeeds>"]
149071
149254
  }));
149072
149255
  }
149256
+ function parsedView(src) {
149257
+ const app = parseApp(src.dev, src.config);
149258
+ return {
149259
+ layout: "generated",
149260
+ home: app.home.label,
149261
+ routes: app.routes.map((r3) => ({
149262
+ label: r3.label,
149263
+ kind: r3.kind,
149264
+ block: r3.block,
149265
+ bundles: r3.bundles,
149266
+ lines: src.dev.slice(r3.lineStart, r3.end).split("\n").length - 1,
149267
+ bytes: r3.end - r3.lineStart
149268
+ })),
149269
+ nav: app.nav.value
149270
+ };
149271
+ }
149073
149272
  function inspectApp(dir) {
149074
149273
  const src = readAppSources(dir);
149075
- const app = parseApp(src.dev, src.config);
149274
+ return inventoryOf(dir, src, parsedView(src));
149275
+ }
149276
+ async function inspectAnyLayout(dir) {
149277
+ const src = readAppSources(dir);
149278
+ let view;
149279
+ try {
149280
+ view = parsedView(src);
149281
+ } catch (e2) {
149282
+ if (!(e2 instanceof TrimRefusal)) throw e2;
149283
+ const { evaluatedView: evaluatedView2 } = await Promise.resolve().then(() => (init_template_evaluate(), template_evaluate_exports));
149284
+ view = await evaluatedView2(dir);
149285
+ return { ...inventoryOf(dir, src, view), layoutNote: e2.message };
149286
+ }
149287
+ return inventoryOf(dir, src, view);
149288
+ }
149289
+ function inventoryOf(dir, src, app) {
149076
149290
  const reach = workerReach(src);
149077
149291
  const bootRequests = [];
149078
149292
  const matrix = [];
@@ -149084,10 +149298,11 @@ function inspectApp(dir) {
149084
149298
  screens.push({
149085
149299
  id: r3.label,
149086
149300
  kind: r3.kind,
149087
- lines: src.dev.slice(r3.lineStart, r3.end).split("\n").length - 1,
149088
- bytes: r3.end - r3.lineStart,
149301
+ lines: r3.lines,
149302
+ bytes: r3.bytes,
149089
149303
  workers: r3.bundles,
149090
- onAppear: [...new Set(appear.map((a2) => a2.actionId))]
149304
+ onAppear: [...new Set(appear.map((a2) => a2.actionId))],
149305
+ ...r3.buildError ? { buildError: r3.buildError } : {}
149091
149306
  });
149092
149307
  for (const a2 of appear) {
149093
149308
  for (const w2 of r3.bundles) {
@@ -149095,33 +149310,37 @@ function inspectApp(dir) {
149095
149310
  if (!reaches(wr2)) continue;
149096
149311
  const via = [...wr2.wixModules, ...wr2.rawWixApi ? ["wixApi"] : [], ...wr2.fetch ? ["fetch"] : []];
149097
149312
  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 });
149313
+ bootRequests.push({ screen: r3.label, actionId: a2.actionId, worker: w2, via, home: r3.label === app.home });
149099
149314
  }
149100
149315
  }
149101
149316
  }
149102
149317
  const pick3 = (k2) => [...new Set(actions.filter((a2) => a2.kind === k2).map((a2) => a2.action))].sort();
149103
- const row = {
149318
+ const row2 = {
149104
149319
  screen: r3.label,
149105
149320
  reads: [...new Set(r3.bundles.flatMap((w2) => reach.get(w2)?.wixModules ?? []))].sort(),
149106
149321
  writes: pick3("write"),
149107
149322
  destructive: pick3("destructive"),
149108
149323
  payment: pick3("payment")
149109
149324
  };
149110
- const prior = matrix.find((m2) => m2.screen === row.screen);
149325
+ const prior = matrix.find((m2) => m2.screen === row2.screen);
149111
149326
  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);
149327
+ for (const k2 of ["reads", "writes", "destructive", "payment"]) prior[k2] = [.../* @__PURE__ */ new Set([...prior[k2], ...row2[k2]])].sort();
149328
+ } else if (row2.writes.length || row2.destructive.length || row2.payment.length) matrix.push(row2);
149114
149329
  journeys.push(...journeysFor(r3.label, actions));
149115
149330
  }
149331
+ const unreadScreens = screens.filter((s2) => s2.buildError).map((s2) => s2.id);
149116
149332
  return {
149117
149333
  ok: true,
149118
149334
  dir,
149119
- home: app.home.label,
149335
+ layout: app.layout,
149336
+ home: app.home,
149120
149337
  screens,
149121
149338
  workers: [...reach.values()],
149122
- navigation: navigationOf(app),
149339
+ navigation: navigationOf(app.nav),
149123
149340
  bootRequests,
149124
- bootsOffline: bootRequests.length === 0,
149341
+ // The preflight errs to "may request": a screen it could not read is not proof of offline.
149342
+ bootsOffline: bootRequests.length === 0 && unreadScreens.length === 0,
149343
+ ...unreadScreens.length ? { unreadScreens } : {},
149125
149344
  placeholders: copyHits(dir, PLACEHOLDER),
149126
149345
  sampleCopy: copyHits(dir, SAMPLE_COPY, 50),
149127
149346
  matrix,
@@ -149151,11 +149370,12 @@ function inventorySummary(inv) {
149151
149370
  bootsOffline: inv.bootsOffline,
149152
149371
  bootRequests: inv.bootRequests.length,
149153
149372
  ...inv.bootRequests.some((b2) => b2.home) ? { homeRequestsAtBoot: true } : {},
149373
+ ...inv.unreadScreens?.length ? { unreadScreens: inv.unreadScreens.length } : {},
149154
149374
  placeholders: inv.placeholders.total,
149155
149375
  sampleCopy: inv.sampleCopy.total,
149156
149376
  riskyScreens: inv.matrix.length,
149157
149377
  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}.`
149378
+ 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
149379
  };
149160
149380
  }
149161
149381
  function writeNoFollow(dir, rel, body) {
@@ -150771,6 +150991,7 @@ function ignoredChange(relPath, isDirectory = () => false, rasterDir = "assets/h
150771
150991
  if (!parts.length) return true;
150772
150992
  const [top] = parts;
150773
150993
  if ([".himi", "dist", "node_modules", ".git", ".build", ...AGENT_TOOLING_DIRS].includes(top)) return true;
150994
+ if (top === ".wix" && (parts.length > 1 || isDirectory(top))) return true;
150774
150995
  if (parts.length === 1 && AGENT_TOOLING_ROOT_FILES.includes(top)) return true;
150775
150996
  if ((top === "shots" || top === "evidence") && (parts.length > 1 || isDirectory(top))) return true;
150776
150997
  const name = parts[parts.length - 1];
@@ -151094,10 +151315,10 @@ function screenStateOf(services, html, opts = {}) {
151094
151315
  let empty2;
151095
151316
  for (const top of states) for (const s2 of layers2(top)) {
151096
151317
  const status = typeof s2.status === "string" ? s2.status.toLowerCase() : typeof s2.phase === "string" ? s2.phase.toLowerCase() : void 0;
151097
- const message = errorMessageOf(s2);
151318
+ const message2 = errorMessageOf(s2);
151098
151319
  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;
151320
+ if (flagged && !(message2 && page !== void 0 && !painted(message2, page)) || message2 && page !== void 0 && painted(message2, page)) {
151321
+ const line = message2 && painted(message2, page) ? quotableLine(message2) : void 0;
151101
151322
  return { state: "error", ...line ? { line } : {}, ...opts.offline ? { offline: true } : {} };
151102
151323
  }
151103
151324
  if (status === "loading" || s2.isLoading === true || s2.noLoading === false) loading = true;
@@ -151161,9 +151382,9 @@ function homeStateCaveat(state) {
151161
151382
  if (state.state === "loading") return "the home screen is still on its loading state (its data never finished loading)";
151162
151383
  return `the home screen shows its empty state${quote}`;
151163
151384
  }
151164
- function withHomeCaveat(message, caveat) {
151165
- if (!caveat) return message;
151166
- const body = message.endsWith(".") ? message.slice(0, -1) : message;
151385
+ function withHomeCaveat(message2, caveat) {
151386
+ if (!caveat) return message2;
151387
+ const body = message2.endsWith(".") ? message2.slice(0, -1) : message2;
151167
151388
  return `${body} \u2014 but ${caveat}.`;
151168
151389
  }
151169
151390
  var SHOT_STATES_FILE, KEEP, LINE_MAX, str4, sha256Of;
@@ -151665,8 +151886,8 @@ async function openBoardForSession(dir, cwd = process.cwd()) {
151665
151886
  return { opened: false, error: `the build board was not created: ${e2.message} \u2014 \`himi studio --no-open\` in the app retries it` };
151666
151887
  }
151667
151888
  }
151668
- function journal(dir, milestone, message, extra) {
151669
- const r3 = journalMilestone(dir, { milestone, message, ...extra });
151889
+ function journal(dir, milestone, message2, extra) {
151890
+ const r3 = journalMilestone(dir, { milestone, message: message2, ...extra });
151670
151891
  return r3.journaled ? { journaled: true, milestone, message: r3.entry.message } : void 0;
151671
151892
  }
151672
151893
  function stillBuilding(dir, image, now) {
@@ -151693,7 +151914,7 @@ function afterRenderPng(dir, input) {
151693
151914
  let postcard;
151694
151915
  if (isHome) {
151695
151916
  const d2 = initDivergence(dir);
151696
- const said = (message) => withHomeCaveat(message, homeCaveat(dir, input.pngFile));
151917
+ const said = (message2) => withHomeCaveat(message2, homeCaveat(dir, input.pngFile));
151697
151918
  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
151919
  postcard ??= stillBuilding(dir, input.pngFile, input.now ?? /* @__PURE__ */ new Date());
151699
151920
  }
@@ -151711,8 +151932,8 @@ function testPostcardMessage(s2) {
151711
151932
  const unreached = s2.unreached ? `, ${plural2(s2.unreached, "screen")} nothing links to` : "";
151712
151933
  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
151934
  }
151714
- function testPostcardCounts(message) {
151715
- const head = message.split(". ")[0];
151935
+ function testPostcardCounts(message2) {
151936
+ const head = message2.split(". ")[0];
151716
151937
  const counts = /* @__PURE__ */ new Map();
151717
151938
  const num4 = (re2, label3) => {
151718
151939
  const m2 = re2.exec(head);
@@ -152770,8 +152991,8 @@ function tokenNumericIssuesFor(dir) {
152770
152991
  }
152771
152992
  function tokenColorIssues(dir, tokensPathOverride) {
152772
152993
  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 });
152994
+ const error = (message2) => issues.push({ screen: null, pass: "tokens", severity: "error", message: message2 });
152995
+ const warn3 = (message2) => issues.push({ screen: null, pass: "tokens", severity: "warning", message: message2 });
152775
152996
  const configured = tokensPathOverride ? { path: tokensPathOverride } : configuredTokensPath(dir);
152776
152997
  if (configured.computed) {
152777
152998
  warn3(
@@ -153324,6 +153545,15 @@ function syntaxErrors(file2, text11) {
153324
153545
  const out2 = ts7.transpileModule(text11, { fileName: file2, reportDiagnostics: true, compilerOptions: { target: ts7.ScriptTarget.ES2022 } });
153325
153546
  return (out2.diagnostics ?? []).map((d2) => ts7.flattenDiagnosticMessageText(d2.messageText, "\n"));
153326
153547
  }
153548
+ function parses(dev, config) {
153549
+ try {
153550
+ parseApp(dev, config);
153551
+ return true;
153552
+ } catch (e2) {
153553
+ if (e2 instanceof TrimRefusal) return false;
153554
+ throw e2;
153555
+ }
153556
+ }
153327
153557
  function sweepCopy(dir, pairs, dryRun) {
153328
153558
  for (const [from] of pairs) {
153329
153559
  if (from.trim().length < 3) throw new TrimRefusal(`refusing to sweep "${from}": a replacement source must be at least 3 characters`);
@@ -153362,12 +153592,14 @@ function sweepCopy(dir, pairs, dryRun) {
153362
153592
  if (errors.length) throw new TrimRefusal(`the sweep would break ${f2} \u2014 nothing written: ${errors[0]}`);
153363
153593
  next.set(f2, out2);
153364
153594
  }
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}`);
153595
+ const devBefore = readFileSync59(join49(dir, "dev", "index.ts"), "utf8");
153596
+ const configBefore = readFileSync59(join49(dir, "config.ts"), "utf8");
153597
+ if (parses(devBefore, configBefore)) {
153598
+ try {
153599
+ parseApp(next.get("dev/index.ts") ?? devBefore, next.get("config.ts") ?? configBefore);
153600
+ } catch (e2) {
153601
+ throw new TrimRefusal(`the sweep would leave dev/index.ts or config.ts unparseable \u2014 nothing written: ${e2.message}`);
153602
+ }
153371
153603
  }
153372
153604
  if (!dryRun) for (const [f2, t2] of next) writeFileSync20(join49(dir, f2), t2);
153373
153605
  const g2 = new RegExp(PLACEHOLDER.source, `${PLACEHOLDER.flags.replace("g", "")}g`);
@@ -153654,12 +153886,12 @@ function recommendTemplates(input) {
153654
153886
  const owner = OWNER_WORDS.test(text11);
153655
153887
  const want = new Set(tokens(text11));
153656
153888
  const byName3 = /* @__PURE__ */ new Map();
153657
- for (const row of input.catalog) {
153889
+ for (const row2 of input.catalog) {
153658
153890
  const reasons = [];
153659
153891
  let score = 0;
153660
- const isOwner = /owner/.test(row.name);
153892
+ const isOwner = /owner/.test(row2.name);
153661
153893
  if (want.size) {
153662
- const hay = new Set(tokens([row.name, row.title ?? "", row.description ?? "", ...row.tags ?? [], row.category ?? ""].join(" ")));
153894
+ const hay = new Set(tokens([row2.name, row2.title ?? "", row2.description ?? "", ...row2.tags ?? [], row2.category ?? ""].join(" ")));
153663
153895
  const hit = [...want].filter((t2) => hay.has(t2));
153664
153896
  if (hit.length) {
153665
153897
  score += hit.length / want.size;
@@ -153674,7 +153906,7 @@ function recommendTemplates(input) {
153674
153906
  score -= 0.3;
153675
153907
  }
153676
153908
  }
153677
- byName3.set(row.name, { name: row.name, score, reasons, ...row.source ? { source: row.source } : {} });
153909
+ byName3.set(row2.name, { name: row2.name, score, reasons, ...row2.source ? { source: row2.source } : {} });
153678
153910
  }
153679
153911
  if (input.verticals?.length) {
153680
153912
  for (const c2 of scoreOverlays(input.verticals, "")) {
@@ -156453,8 +156685,8 @@ function navConfigPathErrors(config) {
156453
156685
  if (!tabs && !rail) {
156454
156686
  const home = typeof config.homeScreenId === "string" && config.homeScreenId.length > 0 ? config.homeScreenId : void 0;
156455
156687
  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]);
156688
+ const row2 = home !== void 0 ? rows.find(([it2]) => it2.screenId === home) : firstOf(obj5(config.drawer)?.items, true);
156689
+ homes.push(["drawer.items", row2]);
156458
156690
  }
156459
156691
  for (const [where, first] of homes) {
156460
156692
  if (first && first[0].hiddenUntilResolved) {
@@ -156483,9 +156715,9 @@ __export(nav_lint_exports, {
156483
156715
  });
156484
156716
  async function navIssues(dir, strict) {
156485
156717
  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);
156718
+ const push = (severity, ruleCode, message2) => issues.push({ screen: null, pass: "nav", severity, message: message2, ruleCode });
156719
+ const error = (ruleCode, message2) => push("error", ruleCode, message2);
156720
+ const warn3 = (ruleCode, message2) => push(strict ? "error" : "warning", ruleCode, message2);
156489
156721
  let cfg;
156490
156722
  try {
156491
156723
  cfg = await loadAppConfigModule(dir);
@@ -156552,10 +156784,10 @@ async function navIssues(dir, strict) {
156552
156784
  );
156553
156785
  }
156554
156786
  const servedHome = homeScreenIdOf(dir) ?? void 0;
156555
- for (const message of navConfigPathErrors({ ...nav, homeScreenId: servedHome })) {
156556
- error("nav-path-malformed", `navigation.${message}`);
156787
+ for (const message2 of navConfigPathErrors({ ...nav, homeScreenId: servedHome })) {
156788
+ error("nav-path-malformed", `navigation.${message2}`);
156557
156789
  }
156558
- for (const message of navSharedIdErrors(nav)) error("nav-row-id-shadows-tab", `navigation.${message}`);
156790
+ for (const message2 of navSharedIdErrors(nav)) error("nav-row-id-shadows-tab", `navigation.${message2}`);
156559
156791
  const topBarDefault = nav.topBarDefault;
156560
156792
  if (isPlainObject2(topBarDefault)) {
156561
156793
  for (const key3 of SCREEN_ONLY_TOP_BAR_KEYS) {
@@ -156685,14 +156917,14 @@ function navSharedIdErrors(nav) {
156685
156917
  for (const [tab] of items("tabBar")) if (typeof tab.id === "string" && !tabScreens.has(tab.id)) tabScreens.set(tab.id, tab.screenId);
156686
156918
  const out2 = [];
156687
156919
  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);
156920
+ for (const [row2, i2] of items(key3)) {
156921
+ if (typeof row2.id !== "string" || !tabScreens.has(row2.id)) continue;
156922
+ const tabScreen = tabScreens.get(row2.id);
156691
156923
  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;
156924
+ if (key3 === "drawer" && (row2.role === "section" || row2.role === "note")) continue;
156925
+ if (typeof row2.screenId !== "string" || row2.screenId === "" || row2.screenId === tabScreen) continue;
156694
156926
  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.`
156927
+ `${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
156928
  );
156697
156929
  }
156698
156930
  }
@@ -156964,8 +157196,8 @@ var init_base44_types = __esm({
156964
157196
  SCALAR = { string: "string", number: "number", integer: "number", boolean: "boolean" };
156965
157197
  key2 = (k2) => /^[A-Za-z_$][A-Za-z0-9_$]*$/.test(k2) ? k2 : JSON.stringify(k2);
156966
157198
  Base44TypesError = class extends Error {
156967
- constructor(code, message) {
156968
- super(message);
157199
+ constructor(code, message2) {
157200
+ super(message2);
156969
157201
  this.code = code;
156970
157202
  }
156971
157203
  };
@@ -157853,10 +158085,10 @@ function parseDataAccess(text11, from) {
157853
158085
  const rows = [];
157854
158086
  for (const line of lines.slice(1)) {
157855
158087
  if (/^\|?\s*:?-+:?\s*(\|\s*:?-+:?\s*)*\|?$/.test(line)) continue;
157856
- const row = cells(line);
157857
- const screen = unquote(row[screenCol] ?? "");
158088
+ const row2 = cells(line);
158089
+ const screen = unquote(row2[screenCol] ?? "");
157858
158090
  if (!screen) continue;
157859
- const cell2 = unquote(row[writesCol] ?? "");
158091
+ const cell2 = unquote(row2[writesCol] ?? "");
157860
158092
  const entries = splitEntries(cell2).filter((e2) => !isNoneEntry(e2));
157861
158093
  rows.push({ screen, allowed: NONE.test(cell2) || !entries.length ? null : entries });
157862
158094
  }
@@ -157905,10 +158137,10 @@ function pathPattern(p2) {
157905
158137
  function unapprovedWriteFindings(writes, plan) {
157906
158138
  if (!plan) return [];
157907
158139
  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);
158140
+ for (const row2 of plan.rows) {
158141
+ const list2 = byScreen.get(row2.screen) ?? [];
158142
+ list2.push(row2);
158143
+ byScreen.set(row2.screen, list2);
157912
158144
  }
157913
158145
  const findings = [];
157914
158146
  for (const w2 of writes) {
@@ -160374,25 +160606,25 @@ function createLocalTestSandbox() {
160374
160606
  hasData: Boolean(context.dataApi && context.capabilities?.includes("data")),
160375
160607
  hasResourceAdmin: Boolean(context.dataApi && context.capabilities?.includes("resource_admin"))
160376
160608
  };
160377
- port1.on("message", async (message) => {
160609
+ port1.on("message", async (message2) => {
160378
160610
  try {
160379
160611
  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]);
160612
+ if (message2.capability === "wixApi" && context.wixApi) value2 = await context.wixApi.call(...message2.args);
160613
+ else if (message2.capability === "secrets" && (context.secrets || context.secretsApi)) value2 = await (context.secrets || context.secretsApi).get(String(message2.args[0]));
160614
+ else if (message2.capability === "http" && (context.http || context.httpApi)) {
160615
+ const response = await (context.http || context.httpApi).fetch(String(message2.args[0]), message2.args[1]);
160384
160616
  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 });
160617
+ } else if (message2.capability === "functions.call" && context.functionsApi) {
160618
+ value2 = await context.functionsApi.call(String(message2.args[0]), message2.args[1], message2.args[2]);
160619
+ } else if (message2.capability === "functions.enqueue" && context.functionsApi?.enqueue) {
160620
+ value2 = await context.functionsApi.enqueue(String(message2.args[0]), message2.args[1], message2.args[2]);
160621
+ } else if (message2.capability === "data" && context.dataApi) {
160622
+ value2 = await context.dataApi.call(message2.args[0], String(message2.args[1]), message2.args[2]);
160623
+ } else throw new Error(`${message2.capability} capability is not configured`);
160624
+ port1.postMessage({ id: message2.id, ok: true, value: value2 });
160393
160625
  } catch (error) {
160394
160626
  port1.postMessage({
160395
- id: message.id,
160627
+ id: message2.id,
160396
160628
  ok: false,
160397
160629
  error: error instanceof Error ? { message: error.message, name: error.name, code: error.code } : { message: String(error) }
160398
160630
  });
@@ -160427,14 +160659,14 @@ function createLocalTestSandbox() {
160427
160659
  return;
160428
160660
  }
160429
160661
  signal?.addEventListener("abort", abortHandler, { once: true });
160430
- worker.on("message", (message) => {
160431
- if (message.ready) {
160662
+ worker.on("message", (message2) => {
160663
+ if (message2.ready) {
160432
160664
  clearTimeout(timer);
160433
160665
  timer = setTimeout(() => finish2(() => reject(new SandboxError("timeout", `execution exceeded ${limits.timeoutMs}ms`))), Math.max(1, limits.timeoutMs));
160434
160666
  return;
160435
160667
  }
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")));
160668
+ if (message2.ok) finish2(() => resolve83({ value: message2.value, durationMs: Date.now() - started }));
160669
+ else finish2(() => reject(new SandboxError("execution_failed", message2.message ?? "handler failed")));
160438
160670
  });
160439
160671
  worker.once("error", (error) => finish2(() => reject(new SandboxError("execution_failed", error.message))));
160440
160672
  worker.once("exit", (code) => {
@@ -160449,8 +160681,8 @@ var init_sandbox = __esm({
160449
160681
  "../../core/functions-runtime/src/sandbox.ts"() {
160450
160682
  SandboxError = class extends Error {
160451
160683
  code;
160452
- constructor(code, message) {
160453
- super(`${code}: ${message}`);
160684
+ constructor(code, message2) {
160685
+ super(`${code}: ${message2}`);
160454
160686
  this.name = "SandboxError";
160455
160687
  this.code = code;
160456
160688
  }
@@ -160559,8 +160791,8 @@ var FunctionCallError, NAME;
160559
160791
  var init_calls = __esm({
160560
160792
  "../../core/functions-runtime/src/calls.ts"() {
160561
160793
  FunctionCallError = class extends Error {
160562
- constructor(code, message) {
160563
- super(`${code}: ${message}`);
160794
+ constructor(code, message2) {
160795
+ super(`${code}: ${message2}`);
160564
160796
  this.code = code;
160565
160797
  this.name = "FunctionCallError";
160566
160798
  }
@@ -160629,8 +160861,8 @@ var FunctionQueueError;
160629
160861
  var init_queue = __esm({
160630
160862
  "../../core/functions-runtime/src/queue.ts"() {
160631
160863
  FunctionQueueError = class extends Error {
160632
- constructor(code, message) {
160633
- super(`${code}: ${message}`);
160864
+ constructor(code, message2) {
160865
+ super(`${code}: ${message2}`);
160634
160866
  this.code = code;
160635
160867
  this.name = "FunctionQueueError";
160636
160868
  }
@@ -160759,8 +160991,8 @@ function verifyPlan(scope2, plan) {
160759
160991
  const { hash: hash2, ...unsigned } = plan;
160760
160992
  if (!equalScope(scope2, plan.scope) || hashResourcePlan(unsigned) !== hash2) throw new ResourceApplyError("invalid_plan", "plan hash or app/site/environment scope does not match");
160761
160993
  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);
160994
+ const invalid = (message2) => {
160995
+ throw new ResourceApplyError("invalid_plan", message2);
160764
160996
  };
160765
160997
  for (const operation of plan.operations) {
160766
160998
  if (operation.kind === "create-kv" || operation.kind === "update-kv") {
@@ -160829,8 +161061,8 @@ var init_apply = __esm({
160829
161061
  init_schema2();
160830
161062
  init_tombstones();
160831
161063
  ResourceApplyError = class extends Error {
160832
- constructor(code, message) {
160833
- super(`${code}: ${message}`);
161064
+ constructor(code, message2) {
161065
+ super(`${code}: ${message2}`);
160834
161066
  this.code = code;
160835
161067
  this.name = "ResourceApplyError";
160836
161068
  }
@@ -161057,8 +161289,8 @@ function json2(status, body, requestId2, extra = {}) {
161057
161289
  headers: { "content-type": "application/json; charset=utf-8", "cache-control": "no-store", "x-request-id": requestId2, ...extra }
161058
161290
  });
161059
161291
  }
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": "*" });
161292
+ function errorResponse(status, code, message2, requestId2) {
161293
+ return json2(status, { error: { code, message: message2.slice(0, MAX_LOG_MESSAGE), requestId: requestId2 }, requestId: requestId2 }, requestId2, { "access-control-allow-origin": "*" });
161062
161294
  }
161063
161295
  function routeMatch(template, actual) {
161064
161296
  const expected = template.split("/").filter(Boolean);
@@ -161355,11 +161587,11 @@ function makeFunctionsHandler(options) {
161355
161587
  return json2(200, value2, id, { "access-control-allow-origin": "*" });
161356
161588
  } catch (error) {
161357
161589
  finish2("error");
161358
- const message = error instanceof Error ? error.message : String(error);
161590
+ const message2 = error instanceof Error ? error.message : String(error);
161359
161591
  const code = error instanceof SandboxError || error instanceof FunctionCallError ? error.code : "execution_failed";
161360
161592
  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
161593
  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);
161594
+ return errorResponse(status, responseCode, message2, id);
161363
161595
  }
161364
161596
  };
161365
161597
  }
@@ -161864,7 +162096,7 @@ var init_file_tools = __esm({
161864
162096
  MAX_LISTED = 2e3;
161865
162097
  CONTENT_MARKER = "himalaya.content.json";
161866
162098
  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 });
162099
+ refuse5 = (error, message2) => ({ content: [{ type: "text", text: JSON.stringify({ ok: false, error, message: message2 }, null, 2) }], isError: true });
161868
162100
  DIR = z2.string().optional().describe("The app folder, relative to the workspace folder. Default: the workspace folder itself.");
161869
162101
  WRITE_ANN = { readOnlyHint: false, destructiveHint: true, idempotentHint: true, openWorldHint: false };
161870
162102
  }
@@ -162638,8 +162870,8 @@ var init_open_url = __esm({
162638
162870
  // src/ux-audit.ts
162639
162871
  import { existsSync as existsSync72, readFileSync as readFileSync83, readdirSync as readdirSync32 } from "node:fs";
162640
162872
  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" });
162873
+ function issue(issues, strict, code, message2, path2) {
162874
+ issues.push({ code, message: message2, ...path2 ? { path: path2 } : {}, severity: strict ? "error" : "warning" });
162643
162875
  }
162644
162876
  function readText2(path2) {
162645
162877
  try {
@@ -162702,8 +162934,8 @@ function auditUx(content, strict = false) {
162702
162934
  }
162703
162935
  const malformedChecks = record2.checks !== void 0 && !Array.isArray(record2.checks);
162704
162936
  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" });
162937
+ const message2 = malformedChecks ? `${platform} audit has a malformed checks list; it must be an array.` : `${platform} audit needs the checks that were driven.`;
162938
+ issues.push({ code: `missing-${platform}-checks`, message: message2, path: UX_EVIDENCE_PATH, severity: "error" });
162707
162939
  }
162708
162940
  if (record2.status === "unavailable" && !record2.reason?.trim()) {
162709
162941
  issues.push({ code: `missing-${platform}-reason`, message: `${platform} is unavailable but has no reason.`, path: UX_EVIDENCE_PATH, severity: "error" });
@@ -164601,23 +164833,23 @@ function syncCoverage(evidenceDir, contentDir2, write2 = true) {
164601
164833
  const old = existed ? obj3(JSON.parse(readFileSync90(path2, "utf8"))) : {};
164602
164834
  const hashesChanged = existed && JSON.stringify(old.sourceHashes) !== JSON.stringify(current.sourceHashes);
164603
164835
  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);
164836
+ const byId = new Map(prior.map((row2) => [row2.id, row2]));
164837
+ const known = new Set(current.requirements.map((row2) => row2.id));
164838
+ const removed = prior.filter((row2) => !known.has(row2.id)).map((row2) => row2.id);
164839
+ const added = current.requirements.filter((row2) => !byId.has(row2.id)).length;
164840
+ const changed = current.requirements.filter((row2) => {
164841
+ const previous = byId.get(row2.id);
164842
+ return previous && (previous.kind !== row2.kind || previous.source !== row2.source || previous.description !== row2.description || previous.platform !== row2.platform);
164843
+ }).map((row2) => row2.id);
164844
+ current.requirements = current.requirements.map((row2) => {
164845
+ const previous = byId.get(row2.id);
164614
164846
  return previous ? {
164615
- ...row,
164847
+ ...row2,
164616
164848
  ...previous.target ? { target: previous.target } : {},
164617
164849
  ...!hashesChanged && previous.status ? { status: previous.status } : {},
164618
164850
  ...!hashesChanged && previous.verification ? { verification: previous.verification } : {},
164619
164851
  ...previous.adaptation ? { adaptation: previous.adaptation } : {}
164620
- } : row;
164852
+ } : row2;
164621
164853
  });
164622
164854
  if (write2 && removed.length === 0) writeFileSync33(path2, JSON.stringify(current, null, 2) + "\n");
164623
164855
  return { coverage: current, added, removed, changed, hashesChanged, existed };
@@ -164640,31 +164872,31 @@ function verifyCoverage(evidenceDir, contentDir2, releaseHash, builtScreenIds) {
164640
164872
  const contentManifest = join85(resolve64(contentDir2), "himalaya.content.json");
164641
164873
  const declaredScreens = existsSync79(contentManifest) ? obj3(obj3(JSON.parse(readFileSync90(contentManifest, "utf8"))).screens) : void 0;
164642
164874
  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;
164875
+ for (const row2 of rows) {
164876
+ const id = typeof row2.id === "string" ? row2.id : void 0;
164877
+ const kind = row2.kind;
164646
164878
  if (!id || !Object.hasOwn(REQUIRED_CHECK, kind)) {
164647
164879
  issues.push({ id, message: "Invalid requirement identity or kind." });
164648
164880
  continue;
164649
164881
  }
164650
- const status = row.status;
164882
+ const status = row2.status;
164651
164883
  if (status !== "supported" && status !== "adapted" && status !== "conditional") {
164652
164884
  issues.push({ id, message: "Requirement is unresolved or has no status." });
164653
164885
  continue;
164654
164886
  }
164655
- const target = obj3(row.target);
164887
+ const target = obj3(row2.target);
164656
164888
  if (typeof target.screenId !== "string" || !target.screenId.trim()) issues.push({ id, message: "Target screen mapping is absent." });
164657
164889
  else if (!availableScreens) issues.push({ id, message: "Target screens are unavailable for verification; supply a built release or a declared screen map." });
164658
164890
  else if (!availableScreens.has(target.screenId)) issues.push({ id, message: `Target screen ${target.screenId} is absent from the built release or app declaration.` });
164659
164891
  if ((kind === "interaction" || kind === "top-bar") && (typeof target.controlId !== "string" || !target.controlId.trim())) {
164660
164892
  issues.push({ id, message: "Target control mapping is absent." });
164661
164893
  }
164662
- const adaptation = obj3(row.adaptation);
164894
+ const adaptation = obj3(row2.adaptation);
164663
164895
  if (status === "adapted" && (!String(adaptation.instruction ?? "").trim() || !String(adaptation.explanation ?? "").trim())) {
164664
164896
  issues.push({ id, message: "Adaptation must cite the user instruction and explain the change." });
164665
164897
  }
164666
164898
  const required3 = REQUIRED_CHECK[kind];
164667
- const checks = Array.isArray(row.verification) ? row.verification.map(obj3) : [];
164899
+ const checks = Array.isArray(row2.verification) ? row2.verification.map(obj3) : [];
164668
164900
  const matching = checks.filter((check) => check.check === required3);
164669
164901
  if (!matching.length) {
164670
164902
  issues.push({ id, message: `Required check ${required3} has no evidence.` });
@@ -164698,7 +164930,7 @@ function verifyCoverage(evidenceDir, contentDir2, releaseHash, builtScreenIds) {
164698
164930
  }
164699
164931
  }
164700
164932
  }
164701
- return { ok: issues.length === 0, count: rows.length, requirementIds: rows.map((row) => String(row.id ?? "")), issues };
164933
+ return { ok: issues.length === 0, count: rows.length, requirementIds: rows.map((row2) => String(row2.id ?? "")), issues };
164702
164934
  }
164703
164935
  var obj3, sha, REQUIRED_CHECK, COVERAGE_FILE, NATIVE_PROOF_FILE;
164704
164936
  var init_coverage2 = __esm({
@@ -165038,8 +165270,8 @@ function validate3(evidenceDir, contentDir2) {
165038
165270
  if (existsSync80(coveragePath)) {
165039
165271
  try {
165040
165272
  const coverage = readJson7(coveragePath);
165041
- for (const row of Array.isArray(coverage.requirements) ? coverage.requirements : []) {
165042
- const entry = object7(row) ?? {};
165273
+ for (const row2 of Array.isArray(coverage.requirements) ? coverage.requirements : []) {
165274
+ const entry = object7(row2) ?? {};
165043
165275
  if (entry.kind !== "route" || typeof entry.source !== "string" || !/^\/screens\/[^/]+$/.test(entry.source)) continue;
165044
165276
  const screenId = entry.source.slice(9).replaceAll("~1", "/").replaceAll("~0", "~");
165045
165277
  const targetScreen = object7(entry.target)?.screenId;
@@ -165518,7 +165750,7 @@ function patchHonesty(opts) {
165518
165750
  return { attestation, source };
165519
165751
  }
165520
165752
  function partialPublishAllowed(rows, acceptPartial) {
165521
- return !rows.some((row) => row.slice === "screenMetadata") && (rows.length === 0 || acceptPartial);
165753
+ return !rows.some((row2) => row2.slice === "screenMetadata") && (rows.length === 0 || acceptPartial);
165522
165754
  }
165523
165755
  var SELECTOR_KINDS;
165524
165756
  var init_release_patch2 = __esm({
@@ -167814,37 +168046,37 @@ var init_preview_assets_generated = __esm({
167814
168046
  "../../packages/serve/src/preview-assets.generated.ts"() {
167815
168047
  init_preview_assets_format();
167816
168048
  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" },
168049
+ { key: "assets/DashboardHost-D0AIh2Fi.js", contentType: "application/javascript; charset=utf-8", offset: 8, length: 2916, sha256: "eca2f8260addf4ead475e304f4bdb9aa3a5655aa9b9042a0107c73d3c5d8147f" },
168050
+ { key: "assets/DevDrawer-Sm3GT4me.js", contentType: "application/javascript; charset=utf-8", offset: 2924, length: 16744, sha256: "1764380f2536a2da8715514073c657a2e7c1bcb8f299e5e8e273acae3bdc3164" },
168051
+ { key: "assets/IdiomCompare-d9cqrgVi.js", contentType: "application/javascript; charset=utf-8", offset: 19668, length: 1892, sha256: "ea482691eaa9cda3d3239568d177e9332b94a0a59e9e9e5d269d059fe07ddd58" },
168052
+ { key: "assets/LightboxViewer-NWgAZkvo.js", contentType: "application/javascript; charset=utf-8", offset: 21560, length: 8132, sha256: "21f6c5678752b22d095626e89c039bf1ab1cf566e9b0a880ddc7c64de2635f6a" },
168053
+ { key: "assets/PhonePreviewControl-DmWDJR7y.js", contentType: "application/javascript; charset=utf-8", offset: 29692, length: 37729, sha256: "c528ff6a6503b5cecddcb95d98e7b10e71b38718513a992c95c3e61aac178c9a" },
168054
+ { key: "assets/SchemeCompare-DAe05rjM.js", contentType: "application/javascript; charset=utf-8", offset: 67421, length: 1824, sha256: "ed47f5a463367279abfa343aaabb348b2cf419a48072a265442f84ba585976da" },
167823
168055
  { 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" }
168056
+ { key: "assets/index-DZLNpgeb.js", contentType: "application/javascript; charset=utf-8", offset: 69587, length: 1337208, sha256: "89aa5fffddb672994a2a13f4a209b5694ff41f2055b01d9d5837829682b7be6f" },
168057
+ { key: "assets/pdf-DkBJdVwB.js", contentType: "application/javascript; charset=utf-8", offset: 1406795, length: 488199, sha256: "8d77ca7222c2580c60a06abe6c78163894a40593fae3a071e664a3a05110dbec" },
168058
+ { key: "assets/pdf.worker.min-BQa_JDET.js", contentType: "application/javascript; charset=utf-8", offset: 1894994, length: 73, sha256: "41bcfda4f3c8c0a81c785ea87c69afc8e7d0ed8c333324aee94c273d881bb6aa" },
168059
+ { key: "assets/pdf.worker.min-BmVo14Nb.mjs", contentType: "application/javascript; charset=utf-8", offset: 1895067, length: 1317034, sha256: "a33cfe728c584fdba4fcc1fd54bcdc2f9f2f13889ddbb5b2bd1d0f8cbe49b84e" },
168060
+ { key: "assets/pdfDocument-DKE-Ra33.js", contentType: "application/javascript; charset=utf-8", offset: 3212101, length: 3379, sha256: "675e5f6d7a6d04607c86b32573e1d28aa126a049f6df26e39d407a9cb3059fc9" },
168061
+ { key: "assets/pdfFetch-Cc8i1I1h.js", contentType: "application/javascript; charset=utf-8", offset: 3215480, length: 2266, sha256: "1d21ad008921942217c9eac0c35b1713773b9d89c71e3ab4412781f7bb88f463" },
168062
+ { key: "assets/webviewBridgeHost-Tij-rBHM.js", contentType: "application/javascript; charset=utf-8", offset: 3217746, length: 9781, sha256: "9ac08d6b6839d3927c9cd364e53a5b01992e534bf77247568e24b18b3e4d2bb7" },
168063
+ { key: "fonts/Roboto-LICENSE.txt", contentType: "application/octet-stream", offset: 3227527, length: 4610, sha256: "994062dd7af4186a739de55dd9e151c63b6301f8e2cbafc608d35c2e87da0cd2" },
168064
+ { key: "fonts/Roboto-Variable.ttf", contentType: "font/ttf", offset: 3232137, length: 488584, sha256: "d7598e12c5dbef095ff8272cfc55da0250bd07fbdecbac8a530b9b277872a134" },
168065
+ { key: "fonts/WixMadeforDisplay-Bold.ttf", contentType: "font/ttf", offset: 3720721, length: 90924, sha256: "ec4c7d63772d980d6e147b2df6215fd2737e4b04cebe0cf7e11dc695fb63cdcf" },
168066
+ { key: "fonts/WixMadeforDisplay-ExtraBold.ttf", contentType: "font/ttf", offset: 3811645, length: 90984, sha256: "bf4c16a2774edd38a921edf3099469866cd74c094fd596f3fa4e81f54a04dfaa" },
168067
+ { key: "fonts/WixMadeforDisplay-Medium.ttf", contentType: "font/ttf", offset: 3902629, length: 90980, sha256: "368faca44fb9f7207e4af784e94750b1ee59c1098b8689e0f4a918926f244fb5" },
168068
+ { key: "fonts/WixMadeforDisplay-Regular.ttf", contentType: "font/ttf", offset: 3993609, length: 90872, sha256: "97ed8f1a6772abe26e3d8af5cecfc4b02faa94497d585b0398b5053b739a70c1" },
168069
+ { key: "fonts/WixMadeforDisplay-SemiBold.ttf", contentType: "font/ttf", offset: 4084481, length: 90980, sha256: "642feab8a48ddf6c7a89d7c2a7c0edfa0e6e773f671287e460e222703563191e" },
168070
+ { key: "fonts/WixMadeforText-Bold.ttf", contentType: "font/ttf", offset: 4175461, length: 108636, sha256: "37c179b4fefb63ea9637322b84583a2df53aa226c150294eea1675c14b1b8e29" },
168071
+ { key: "fonts/WixMadeforText-ExtraBold.ttf", contentType: "font/ttf", offset: 4284097, length: 109084, sha256: "62e2fe4718129f36ecdb0ae4de385bd6b81ecc876146447167c6c140fad699a9" },
168072
+ { key: "fonts/WixMadeforText-Medium.ttf", contentType: "font/ttf", offset: 4393181, length: 109048, sha256: "4ecf270136af928612c76fe4ebade91d8156975e5ea4c0cf9225501dd1788e02" },
168073
+ { key: "fonts/WixMadeforText-Regular.ttf", contentType: "font/ttf", offset: 4502229, length: 107700, sha256: "dee56f09fd3efc127c1ea95557edc74110c1460a46287da36e0af25efd341ef5" },
168074
+ { key: "fonts/WixMadeforText-SemiBold.ttf", contentType: "font/ttf", offset: 4609929, length: 88108, sha256: "dced97a77624bc5f8b1ae65850360908297f4588e09feb6f22792d29dc7e765b" },
168075
+ { key: "himi-sw.js", contentType: "application/javascript; charset=utf-8", offset: 4698037, length: 6748, sha256: "4a92459977d7cefa1a6a7e020c3a63509737f083b3f2773557c1a5771665811a" },
168076
+ { key: "index.html", contentType: "text/html; charset=utf-8", offset: 4704785, length: 4947, sha256: "ce6250b8f09a5c349489f0db1b7410dbac5627087c11b4dddc7958fbde5641db" },
168077
+ { key: "ios-glass-preview.css", contentType: "text/css; charset=utf-8", offset: 4709732, length: 7193, sha256: "a482f4796147c2a3893942e10ab225bd3b6f749f7125fe0330680d4c20ea0212" },
168078
+ { key: "ios-glass-preview.svg", contentType: "image/svg+xml", offset: 4716925, length: 423, sha256: "b9cd5989d31464a0422f260a332af6be5add0b04de2148944de35158f3b75efc" },
168079
+ { key: "t5-frame.html", contentType: "text/html; charset=utf-8", offset: 4717348, length: 18778, sha256: "ba734d58c88281c71c01d9a2842a991d06f3ed91bf03449427ef11c7f6d1605d" }
167848
168080
  ];
167849
168081
  }
167850
168082
  });
@@ -168303,8 +168535,8 @@ function defaultGitOps(cwd = process.cwd()) {
168303
168535
  return false;
168304
168536
  }
168305
168537
  },
168306
- createTag(tag, message) {
168307
- run2(["tag", "-a", tag, "-m", message]);
168538
+ createTag(tag, message2) {
168539
+ run2(["tag", "-a", tag, "-m", message2]);
168308
168540
  },
168309
168541
  pushTag(tag) {
168310
168542
  run2(["push", "origin", tag]);
@@ -168541,8 +168773,8 @@ var init_iap_catalog_client = __esm({
168541
168773
  }
168542
168774
  };
168543
168775
  IapCatalogError = class extends Error {
168544
- constructor(code, message, endpoint) {
168545
- super(message);
168776
+ constructor(code, message2, endpoint) {
168777
+ super(message2);
168546
168778
  this.code = code;
168547
168779
  this.endpoint = endpoint;
168548
168780
  this.name = "IapCatalogError";
@@ -168796,8 +169028,8 @@ var init_iap_client = __esm({
168796
169028
  TOKEN_LIFETIME_S = 1200;
168797
169029
  TOKEN_REFRESH_MARGIN_S = 60;
168798
169030
  AscError = class extends Error {
168799
- constructor(kind, message, status, codes = [], detail = "", retryAfterMs2) {
168800
- super(message);
169031
+ constructor(kind, message2, status, codes = [], detail = "", retryAfterMs2) {
169032
+ super(message2);
168801
169033
  this.kind = kind;
168802
169034
  this.status = status;
168803
169035
  this.codes = codes;
@@ -170496,8 +170728,8 @@ var init_iap_plan = __esm({
170496
170728
  init_iap_price_status();
170497
170729
  init_iap_review_screenshot();
170498
170730
  IapProvisionError = class extends Error {
170499
- constructor(reason, message) {
170500
- super(message);
170731
+ constructor(reason, message2) {
170732
+ super(message2);
170501
170733
  this.reason = reason;
170502
170734
  this.name = "IapProvisionError";
170503
170735
  }
@@ -170514,7 +170746,7 @@ var init_iap_plan = __esm({
170514
170746
  isoDay = (date) => date.toISOString().slice(0, 10);
170515
170747
  exactTarget = (price) => price.rule === "atLeast" ? void 0 : price.amount;
170516
170748
  LEFTOVER_SCREENSHOT_STATES = /* @__PURE__ */ new Set(["AWAITING_UPLOAD", "FAILED"]);
170517
- planError = (message) => new IapProvisionError("plan", message);
170749
+ planError = (message2) => new IapProvisionError("plan", message2);
170518
170750
  }
170519
170751
  });
170520
170752
 
@@ -171363,9 +171595,9 @@ function redactValue(v2) {
171363
171595
  if (v2 && typeof v2 === "object") return redactRow(v2);
171364
171596
  return v2;
171365
171597
  }
171366
- function redactRow(row) {
171598
+ function redactRow(row2) {
171367
171599
  const out2 = {};
171368
- for (const [k2, v2] of Object.entries(row)) {
171600
+ for (const [k2, v2] of Object.entries(row2)) {
171369
171601
  out2[k2] = isSecretKey(k2) && v2 !== null && v2 !== void 0 && v2 !== "" ? "[redacted]" : redactValue(v2);
171370
171602
  }
171371
171603
  return out2;
@@ -172311,7 +172543,7 @@ function isItemRow(fields, entityId, price) {
172311
172543
  return values.some((v2) => v2.toLowerCase() === entityId.toLowerCase()) && values.some((v2) => visibleText2(v2).includes(price));
172312
172544
  }
172313
172545
  function rowOffersPurchase(value2, entityId, price) {
172314
- if (Array.isArray(value2)) return value2.some((row) => rowOffersPurchase(row, entityId, price));
172546
+ if (Array.isArray(value2)) return value2.some((row2) => rowOffersPurchase(row2, entityId, price));
172315
172547
  if (!value2 || typeof value2 !== "object") return false;
172316
172548
  const fields = value2;
172317
172549
  if (isItemRow(fields, entityId, price)) return offersPurchase(fields);
@@ -173123,11 +173355,11 @@ function firstProblem(report3) {
173123
173355
  function printConnect(out2, report3, heading) {
173124
173356
  out2.line(`himi store iap connect \u2014 ${heading}`);
173125
173357
  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);
173358
+ const row2 = (label3, step) => out2.line(` ${pad(label3)}${step.state.padEnd(9)}${step.detail}`);
173359
+ row2("app", report3.app);
173360
+ row2("key", report3.credentials);
173361
+ row2("provider", report3.provider);
173362
+ for (const mapping of report3.mappings) row2("mapping", mapping);
173131
173363
  if (report3.purchasesAppId) out2.line(` ${pad("binding")}wixIap: { purchasesAppId: "${report3.purchasesAppId}" }`);
173132
173364
  }
173133
173365
  function printConfig(out2, config, note) {
@@ -175888,8 +176120,8 @@ var init_base44_adopt = __esm({
175888
176120
  BUILTINS = new Set(BASE44_BUILTIN_FIELDS);
175889
176121
  ENTITY_NAME2 = /^[A-Za-z][A-Za-z0-9]*$/;
175890
176122
  AdoptError = class extends Error {
175891
- constructor(code, message, exit = 1, extra = {}) {
175892
- super(message);
176123
+ constructor(code, message2, exit = 1, extra = {}) {
176124
+ super(message2);
175893
176125
  this.code = code;
175894
176126
  this.exit = exit;
175895
176127
  this.extra = extra;
@@ -176078,8 +176310,8 @@ var init_plan4 = __esm({
176078
176310
  "src/base44-screens/plan.ts"() {
176079
176311
  init_base44_schema();
176080
176312
  PlanError = class extends Error {
176081
- constructor(code, message, extra = {}) {
176082
- super(message);
176313
+ constructor(code, message2, extra = {}) {
176314
+ super(message2);
176083
176315
  this.code = code;
176084
176316
  this.extra = extra;
176085
176317
  this.name = "PlanError";
@@ -176622,7 +176854,7 @@ async function seedBase44Entities(opts) {
176622
176854
  continue;
176623
176855
  }
176624
176856
  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))));
176857
+ const clean2 = rows.map((row2) => Object.fromEntries(Object.entries(row2).filter(([k2]) => declared.has(k2))));
176626
176858
  const dropped = [...new Set(rows.flatMap((r3) => Object.keys(r3).filter((k2) => !declared.has(k2))))];
176627
176859
  if (dropped.length) (report3.droppedKeys ??= {})[name] = dropped;
176628
176860
  if (clean2.some((r3) => Object.keys(r3).length === 0)) {
@@ -177182,8 +177414,8 @@ var init_functions2 = __esm({
177182
177414
  MAX_FILES = 200;
177183
177415
  MAX_BYTES = 5 * 1024 * 1024;
177184
177416
  FunctionSourceError = class extends Error {
177185
- constructor(code, message) {
177186
- super(message);
177417
+ constructor(code, message2) {
177418
+ super(message2);
177187
177419
  this.code = code;
177188
177420
  }
177189
177421
  };
@@ -178572,10 +178804,10 @@ async function readCms(call, opts = {}) {
178572
178804
  query: { paging: { limit: 5 } }
178573
178805
  });
178574
178806
  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;
178807
+ const samples = items.slice(0, 5).map((row2, i2) => {
178808
+ const dataObj2 = row2.data && typeof row2.data === "object" ? row2.data : row2;
178577
178809
  const title = sampleTitle(dataObj2);
178578
- return { id: str8(row.id ?? dataObj2._id) || `row-${i2}`, ...title ? { title } : {} };
178810
+ return { id: str8(row2.id ?? dataObj2._id) || `row-${i2}`, ...title ? { title } : {} };
178579
178811
  });
178580
178812
  out2.push({
178581
178813
  id,
@@ -181493,10 +181725,10 @@ function isString(data) {
181493
181725
  function isObject(data) {
181494
181726
  return objectToString(data) === "[object Object]";
181495
181727
  }
181496
- function validate4(bool2, cbOrMessage, message) {
181728
+ function validate4(bool2, cbOrMessage, message2) {
181497
181729
  if (bool2) return;
181498
181730
  const cb = typeof cbOrMessage === "function" ? cbOrMessage : void 0;
181499
- let options = typeof cbOrMessage === "function" ? message : cbOrMessage;
181731
+ let options = typeof cbOrMessage === "function" ? message2 : cbOrMessage;
181500
181732
  if (!isObject(options)) options = "[object Object]";
181501
181733
  const err = new ParameterError(safeToString(options));
181502
181734
  if (cb) cb(err);
@@ -184286,7 +184518,7 @@ async function queryBase44Entities(opts) {
184286
184518
  const declared = [];
184287
184519
  for (const spec of specs) {
184288
184520
  const physical = physicalEntityName(spec, app);
184289
- const row = {
184521
+ const row2 = {
184290
184522
  entity: isAdoptedEntity(spec) ? spec.base44Name : spec.name,
184291
184523
  physical,
184292
184524
  ownership: isAdoptedEntity(spec) ? "adopted" : "owned",
@@ -184295,18 +184527,18 @@ async function queryBase44Entities(opts) {
184295
184527
  };
184296
184528
  const remote = live3?.get(physical);
184297
184529
  if (live3 && !remote) {
184298
- row.drift.push({ entity: physical, kind: "missing", detail: `entity "${physical}" is declared but the live app does not have it` });
184530
+ row2.drift.push({ entity: physical, kind: "missing", detail: `entity "${physical}" is declared but the live app does not have it` });
184299
184531
  } else {
184300
- if (remote) row.drift = diffEntityFields(spec, remote);
184532
+ if (remote) row2.drift = diffEntityFields(spec, remote);
184301
184533
  try {
184302
184534
  const c2 = await countRows(ports, appId2, physical, cap);
184303
- row.rows = c2.rows;
184304
- if (c2.capped) row.capped = true;
184535
+ row2.rows = c2.rows;
184536
+ if (c2.capped) row2.capped = true;
184305
184537
  } catch (e2) {
184306
- row.countError = e2.message;
184538
+ row2.countError = e2.message;
184307
184539
  }
184308
184540
  }
184309
- declared.push(row);
184541
+ declared.push(row2);
184310
184542
  }
184311
184543
  const known = new Set(declared.map((d2) => d2.physical));
184312
184544
  const foreignNames = live3 ? [...live3.keys()].filter((n2) => !known.has(n2)).sort() : [];
@@ -184340,8 +184572,8 @@ var OneAppError;
184340
184572
  var init_errors2 = __esm({
184341
184573
  "src/one-app/errors.ts"() {
184342
184574
  OneAppError = class extends Error {
184343
- constructor(code, message, details) {
184344
- super(message);
184575
+ constructor(code, message2, details) {
184576
+ super(message2);
184345
184577
  this.code = code;
184346
184578
  this.details = details;
184347
184579
  this.name = "OneAppError";
@@ -184490,8 +184722,8 @@ async function collectOneApp(input, deps = {}) {
184490
184722
  if (!response.ok) {
184491
184723
  controller.abort();
184492
184724
  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 });
184725
+ 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.";
184726
+ throw new OneAppError(code, message2, { stage, httpStatus: response.status });
184495
184727
  }
184496
184728
  const length = Number(response.headers.get("content-length"));
184497
184729
  if (Number.isFinite(length) && length > maxBytes) {
@@ -185334,8 +185566,8 @@ function siteAppRequirementsFrom(appId2, entry) {
185334
185566
  };
185335
185567
  }
185336
185568
  function messageOf2(err) {
185337
- const message = err?.message;
185338
- return typeof message === "string" && message ? message : String(err);
185569
+ const message2 = err?.message;
185570
+ return typeof message2 === "string" && message2 ? message2 : String(err);
185339
185571
  }
185340
185572
  function decideSiteApp(input) {
185341
185573
  const fallback = (pickedAppId, reason) => ({ appId: DEFAULT_SITE_APP, source: "fallback", pickedAppId, reason });
@@ -186181,9 +186413,9 @@ function textFields(look) {
186181
186413
  return out2;
186182
186414
  }
186183
186415
  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);
186416
+ const row2 = map.get(key3) ?? { value: value2, where: [] };
186417
+ if (!row2.where.includes(where) && row2.where.length < CAP4.where) row2.where.push(where);
186418
+ map.set(key3, row2);
186187
186419
  }
186188
186420
  function templateContacts(identity, fields) {
186189
186421
  const hits = /* @__PURE__ */ new Map();
@@ -190188,21 +190420,21 @@ import { basename as basename26, join as join120 } from "node:path";
190188
190420
  function runId(now = /* @__PURE__ */ new Date()) {
190189
190421
  return now.toISOString().replace(/[-:]/g, "").replace(/\..*/, "").replace("T", "-");
190190
190422
  }
190191
- function rowStatus(row, thresholds) {
190423
+ function rowStatus(row2, thresholds) {
190192
190424
  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]] : []];
190425
+ if (row2.error) warn3.push(`${row2.error.code}: ${row2.error.message}`);
190426
+ const parityExpected = row2.frames.some((f2) => (f2.surface === "ios" || f2.surface === "android") && f2.file);
190427
+ const questions = [["design (web vs mockup)", row2.judge.design], ...parityExpected ? [["parity (native vs web)", row2.judge.parity]] : []];
190196
190428
  for (const [question, v2] of questions) {
190197
190429
  if (v2 === "mismatch") fail6.push(`judge: ${question} mismatch`);
190198
190430
  else if (v2 === "partial") warn3.push(`judge: ${question} partial`);
190199
190431
  }
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})` : ""}`);
190432
+ if (row2.judge.design === "cannot_tell" || row2.judge.parity === "cannot_tell" && parityExpected) {
190433
+ warn3.push(`judge: cannot tell${row2.judge.reason ? ` (${row2.judge.reason})` : ""}`);
190202
190434
  }
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");
190435
+ for (const f2 of row2.frames) if (f2.skipped) warn3.push(`${f2.surface} skipped: ${f2.skipped.reason}`);
190436
+ if (row2.frames.some((f2) => f2.noReference)) warn3.push("no_reference: the mockup does not style this variant");
190437
+ const design = row2.scores.find((s2) => s2.a === "mockup" && s2.b === "web");
190206
190438
  if (!thresholds || !design) {
190207
190439
  } else if (design.global < thresholds.fail) fail6.push(`score: mockup\u2194web ${design.global} < fail ${thresholds.fail}`);
190208
190440
  else if (design.global < thresholds.warn) warn3.push(`score: mockup\u2194web ${design.global} < warn ${thresholds.warn}`);
@@ -190269,11 +190501,11 @@ async function runFidelity(root, opts = {}) {
190269
190501
  const parity = captured.has("ios") || captured.has("android") ? verdict.parity : "cannot_tell";
190270
190502
  verdict = { ...verdict, parity, verdict: worse(verdict.design, parity), findings: verdict.findings.filter((f2) => captured.has(f2.surface)) };
190271
190503
  }
190272
- const row = { screen, variant, frames, scores, judge: verdict, ...stripFile ? { strip: stripFile } : {}, ...error ? { error } : {} };
190273
- rows.push({ ...row, ...rowStatus(row, fidelityThresholds(manifest2, screen)) });
190504
+ const row2 = { screen, variant, frames, scores, judge: verdict, ...stripFile ? { strip: stripFile } : {}, ...error ? { error } : {} };
190505
+ rows.push({ ...row2, ...rowStatus(row2, fidelityThresholds(manifest2, screen)) });
190274
190506
  } 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)) });
190507
+ const row2 = { screen, variant, frames, scores: [], judge: skippedJudge("the row did not finish"), error: { code: "fidelity_row_failed", message: e2.message } };
190508
+ rows.push({ ...row2, ...rowStatus(row2, fidelityThresholds(manifest2, screen)) });
190277
190509
  }
190278
190510
  }
190279
190511
  }
@@ -190635,7 +190867,7 @@ var ServeCliClient = class {
190635
190867
  * One probe costs one extra request only for files that were already going to fail. */
190636
190868
  async telemetrySend(events) {
190637
190869
  const post = (batch) => this.request("telemetry", "POST", "/v1/telemetry/ingest", { body: batch, headers: this.telHeaders() });
190638
- const settle = (r3, posted) => {
190870
+ const settle2 = (r3, posted) => {
190639
190871
  const j2 = r3.json && typeof r3.json === "object" ? r3.json : null;
190640
190872
  const n2 = (k2) => typeof j2?.[k2] === "number" ? j2[k2] : 0;
190641
190873
  const counted = typeof j2?.accepted === "number";
@@ -190645,11 +190877,11 @@ var ServeCliClient = class {
190645
190877
  return { ...r3, ok: false, json: { ...j2 ?? {}, ok: false } };
190646
190878
  };
190647
190879
  const first = await post(events);
190648
- if (first.status !== 413 || events.length <= 1) return settle(first, events.length);
190880
+ if (first.status !== 413 || events.length <= 1) return settle2(first, events.length);
190649
190881
  const body = first.json;
190650
- if (!body || body.error !== "batch_too_large") return settle(first, events.length);
190882
+ if (!body || body.error !== "batch_too_large") return settle2(first, events.length);
190651
190883
  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);
190884
+ if (limit === null || limit >= events.length) return settle2(first, events.length);
190653
190885
  const totals = { accepted: 0, dropped: 0, failed: 0 };
190654
190886
  const add = (r3) => {
190655
190887
  const j2 = r3.json;
@@ -190665,14 +190897,14 @@ var ServeCliClient = class {
190665
190897
  last = await post(chunk);
190666
190898
  add(last);
190667
190899
  if (!last.ok) {
190668
- return settle(
190900
+ return settle2(
190669
190901
  { ...last, json: { ...last.json ?? {}, ...totals, batched: { limit, sent, ...totals, failedAt: i2 } } },
190670
190902
  events.length
190671
190903
  );
190672
190904
  }
190673
190905
  sent += chunk.length;
190674
190906
  }
190675
- return settle(
190907
+ return settle2(
190676
190908
  { ...last, json: { ...last.json ?? {}, ...totals, batched: { limit, sent, ...totals } } },
190677
190909
  events.length
190678
190910
  );
@@ -191205,14 +191437,16 @@ var USAGE = `himi \u2014 the Himalaya authoring CLI (remote dev loop)
191205
191437
  and typed-journey stubs. Writes .himi/adopt.json, .himi/adopt-matrix.md and
191206
191438
  .himi/himi-test.stub.json (--dry-run writes nothing)
191207
191439
  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
191440
+ list dev/index.ts screens (size, workers, onAppear) in any layout \u2014 a hand-written
191441
+ dev/index.ts is read by evaluating it, as validate does; --show prints ONE entry so
191209
191442
  nobody reads the whole file; --write puts an edited entry back (re-parsed, refused
191210
191443
  if it breaks the file or changes the screen count)
191211
191444
  --add appends a NEW screen entry and registers it in linkableScreens (--parent/--tab)
191212
191445
  himi template sweep --set "Old=>New" [--set \u2026] | --map <file.json> [--content <dir>] [--dry-run]
191213
191446
  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
191447
+ identifiers) across dev/index.ts, config.ts, tokens.json and tier5-src; syntax-checks
191448
+ every changed file (and re-parses a generated SCREENS map) before writing, and
191449
+ reports placeholdersLeft
191216
191450
  himi template recommend [--text <description>] [--verticals a,b] [--book <site analyze dir>] [--remote]
191217
191451
  rank the catalog for one business: description words + owner-vs-customer, and the
191218
191452
  site's installed verticals (the same scoring site analyze uses)
@@ -192619,7 +192853,7 @@ async function adoptAtInit(dir) {
192619
192853
  const layout = /SCREENS = runtimeSetting/.test(msg);
192620
192854
  return {
192621
192855
  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}`
192856
+ 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
192857
  }
192624
192858
  };
192625
192859
  }
@@ -192850,8 +193084,8 @@ var VALID_PLATFORM_KEYS2 = /* @__PURE__ */ new Set([
192850
193084
  ]);
192851
193085
  function surfaceIssues(dir, surfaceNav, strict) {
192852
193086
  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 });
193087
+ const warn3 = (message2) => issues.push({ screen: null, pass: "surfaces", severity: strict ? "error" : "warning", message: message2 });
193088
+ const error = (message2) => issues.push({ screen: null, pass: "surfaces", severity: "error", message: message2 });
192855
193089
  let platforms = {};
192856
193090
  let envelopeUnreadable = false;
192857
193091
  const p2 = join45(dir, "platforms.json");
@@ -193077,16 +193311,14 @@ async function templateCommand(ctx) {
193077
193311
  const dir = contentDir(flags);
193078
193312
  try {
193079
193313
  if (sub === "inspect") {
193080
- const inv = adopt.inspectApp(dir);
193314
+ const { layoutNote: _n2, ...inv } = await adopt.inspectAnyLayout(dir);
193081
193315
  const written = flags["dry-run"] === true ? [] : adopt.writeInventory(dir, inv);
193082
193316
  const { dir: _d, ...rest } = inv;
193083
193317
  print({ ...rest, written, summary: adopt.inventorySummary(inv) });
193084
193318
  return 0;
193085
193319
  }
193086
193320
  if (sub === "screens") {
193087
- const src = adopt.readAppSources(dir);
193088
193321
  const { parseApp: parseApp2 } = await Promise.resolve().then(() => (init_template_trim(), template_trim_exports));
193089
- const app = parseApp2(src.dev, src.config);
193090
193322
  const show = str3(flags.show);
193091
193323
  const target = str3(flags.write);
193092
193324
  const adding = str3(flags.add);
@@ -193103,18 +193335,22 @@ async function templateCommand(ctx) {
193103
193335
  return 0;
193104
193336
  }
193105
193337
  if (show) {
193338
+ const src = adopt.readAppSources(dir);
193339
+ const app = parseApp2(src.dev, src.config);
193106
193340
  const r3 = adopt.findRoute(app, show);
193107
193341
  if (!r3) throw new TrimRefusal2(`no screen "${show}" in dev/index.ts \u2014 \`himi template screens\` lists the ids`);
193108
193342
  io2.log(src.dev.slice(r3.lineStart, r3.end).replace(/\n$/, ""));
193109
193343
  return 0;
193110
193344
  }
193111
- const inv = adopt.inspectApp(dir);
193345
+ const inv = await adopt.inspectAnyLayout(dir);
193112
193346
  print({
193113
193347
  ok: true,
193348
+ layout: inv.layout,
193114
193349
  home: inv.home,
193115
193350
  count: inv.screens.length,
193116
193351
  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)"
193352
+ 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",
193353
+ ...inv.layoutNote ? { layoutNote: inv.layoutNote } : {}
193118
193354
  });
193119
193355
  return 0;
193120
193356
  }
@@ -193618,14 +193854,14 @@ import { join as join60 } from "node:path";
193618
193854
  async function iconIssues(dir, strict, opts = {}) {
193619
193855
  if (!existsSync60(join60(dir, "himalaya.content.json"))) return [];
193620
193856
  const status = await iconStatus(dir);
193621
- const issue2 = (severity, message) => ({
193857
+ const issue2 = (severity, message2) => ({
193622
193858
  screen: null,
193623
193859
  pass: "icon",
193624
193860
  severity,
193625
- message
193861
+ message: message2
193626
193862
  });
193627
193863
  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>\`.`)
193864
+ (message2) => issue2("error", `Play listing icon (${PLAY_LISTING_ICON}) ${message2}. Re-derive it with \`himi icon set <file.png>\`.`)
193629
193865
  );
193630
193866
  if (status.verdict === "missing") {
193631
193867
  if (status.declared) {
@@ -193646,8 +193882,8 @@ async function iconIssues(dir, strict, opts = {}) {
193646
193882
  `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
193883
  ));
193648
193884
  }
193649
- for (const message of status.byteIssues) {
193650
- out2.push(issue2("error", `launcher icon ${message}. Fix it with \`himi icon set <file.png>\`.`));
193885
+ for (const message2 of status.byteIssues) {
193886
+ out2.push(issue2("error", `launcher icon ${message2}. Fix it with \`himi icon set <file.png>\`.`));
193651
193887
  }
193652
193888
  for (const f2 of status.pixelFindings) {
193653
193889
  out2.push(issue2(f2.level === "error" ? "error" : strict ? "error" : "warning", f2.message));
@@ -194124,13 +194360,13 @@ async function progressCommand2(ctx) {
194124
194360
  const journal2 = journalPath2(dir);
194125
194361
  const isContentPackage = existsSync71(join75(dir, "himalaya.content.json"));
194126
194362
  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();
194363
+ const message2 = pos.slice(1).join(" ").trim();
194128
194364
  const approvalFlags = ["approve", "done", "drop"].filter((f2) => flags[f2] !== void 0);
194129
194365
  if (approvalFlags.length > 1) {
194130
194366
  io2.error(JSON.stringify({ ok: false, error: "one_approval_action", hint: "pass one of --approve, --done or --drop per call" }));
194131
194367
  return 2;
194132
194368
  }
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))) {
194369
+ 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
194370
  io2.error(JSON.stringify({
194135
194371
  ok: false,
194136
194372
  error: flags.brief === true ? "brief_is_read_only" : "approval_is_its_own_call",
@@ -194148,7 +194384,7 @@ async function progressCommand2(ctx) {
194148
194384
  }
194149
194385
  const action = flag === "approve" ? "approved" : flag === "done" ? "done" : "dropped";
194150
194386
  try {
194151
- const { event, open } = appendApproval2(dir, { gate: ref.gate, ..."id" in ref && ref.id ? { id: ref.id } : {}, action, ...message ? { note: message } : {} });
194387
+ const { event, open } = appendApproval2(dir, { gate: ref.gate, ..."id" in ref && ref.id ? { id: ref.id } : {}, action, ...message2 ? { note: message2 } : {} });
194152
194388
  print({ ok: true, approval: event, open, ...hint });
194153
194389
  return 0;
194154
194390
  } catch (e2) {
@@ -194167,7 +194403,7 @@ async function progressCommand2(ctx) {
194167
194403
  io2.log(formatBrief2({ appName: appLabel2(dir), isContentPackage, summary: summary2, open, ...note ? { agentContextNote: note } : {} }));
194168
194404
  return 0;
194169
194405
  }
194170
- if (!message) {
194406
+ if (!message2) {
194171
194407
  if (flags.step !== void 0 || flags.image !== void 0 || flags.notify === true || flags["no-image"] === true) {
194172
194408
  io2.error(JSON.stringify({ ok: false, error: "message_required", hint: 'progress "<what changed>" --step <n> --image <png>' }));
194173
194409
  return 2;
@@ -194205,8 +194441,8 @@ async function progressCommand2(ctx) {
194205
194441
  } else imageNote = `no picture attached: ${auto.skipped}`;
194206
194442
  }
194207
194443
  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;
194444
+ const entry = appendProgress2(dir, { message: message2, ...step ? { step } : {}, images });
194445
+ const notified = flags.notify === true ? await notifyDesktop2(`himi \xB7 ${appLabel2(dir) ?? "your app"}`, message2) : void 0;
194210
194446
  const { count: count2 } = summarizeProgress2(readProgress2(dir).entries);
194211
194447
  const imageAttached = (entry.images?.length ?? 0) > 0;
194212
194448
  const handed = handover && isContentPackage ? (await Promise.resolve().then(() => (init_milestones(), milestones_exports))).afterHandoverPostcard(dir, { content: str3(flags.content) }) : null;
@@ -194627,7 +194863,7 @@ async function testCommand(ctx) {
194627
194863
  continue;
194628
194864
  }
194629
194865
  try {
194630
- const progress = (message) => io2.error(`[native ${availability.platform} ${(/* @__PURE__ */ new Date()).toISOString()}] ${message}`);
194866
+ const progress = (message2) => io2.error(`[native ${availability.platform} ${(/* @__PURE__ */ new Date()).toISOString()}] ${message2}`);
194631
194867
  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
194868
  result = mergeNativeDecode2(result, nativeRun);
194633
194869
  } catch (error) {
@@ -194811,13 +195047,13 @@ async function iconCommand(ctx) {
194811
195047
  level: requireVerified ? "error" : "warn",
194812
195048
  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
195049
  }] : [],
194814
- ...status.byteIssues.map((message) => ({ level: "error", message })),
195050
+ ...status.byteIssues.map((message2) => ({ level: "error", message: message2 })),
194815
195051
  ...status.pixelFindings,
194816
195052
  // Play's rules, on the derived 512 — the other half of what `check` claims to
194817
195053
  // validate. Kept distinct in the text so nobody applies Apple's answer to it.
194818
- ...(status.play?.issues ?? []).map((message) => ({
195054
+ ...(status.play?.issues ?? []).map((message2) => ({
194819
195055
  level: "error",
194820
- message: `Play listing icon (${status.play?.path.split("/").pop()}) ${message}`
195056
+ message: `Play listing icon (${status.play?.path.split("/").pop()}) ${message2}`
194821
195057
  }))
194822
195058
  ];
194823
195059
  if (flags.json === true) {
@@ -196355,12 +196591,12 @@ async function runPackageCommand(ctx) {
196355
196591
  const live3 = join91(running.releaseRoot, running.app);
196356
196592
  const manifestOf = (tree) => JSON.parse(readFileSync96(join91(tree, "release-manifest.json"), "utf8"));
196357
196593
  let current = manifestOf(live3);
196358
- const failed3 = async (message) => {
196594
+ const failed3 = async (message2) => {
196359
196595
  if (stopping) return;
196360
- bus.publish("build.failed", { message });
196361
- record2(running, { ok: false, at: (/* @__PURE__ */ new Date()).toISOString(), error: message });
196596
+ bus.publish("build.failed", { message: message2 });
196597
+ record2(running, { ok: false, at: (/* @__PURE__ */ new Date()).toISOString(), error: message2 });
196362
196598
  await refreshBoard();
196363
- io2.error(JSON.stringify({ watch: "build_failed", keptLastGood: true, message }));
196599
+ io2.error(JSON.stringify({ watch: "build_failed", keptLastGood: true, message: message2 }));
196364
196600
  };
196365
196601
  rebuild = watchKit.serialize(async () => {
196366
196602
  const t0 = Date.now();
@@ -196911,13 +197147,13 @@ function diagnoseBody(body) {
196911
197147
  const findings = body.findings;
196912
197148
  if (!Array.isArray(findings)) return body;
196913
197149
  const messageOf3 = (entry) => {
196914
- const message = entry && typeof entry === "object" ? entry.message : void 0;
196915
- return typeof message === "string" ? message : void 0;
197150
+ const message2 = entry && typeof entry === "object" ? entry.message : void 0;
197151
+ return typeof message2 === "string" ? message2 : void 0;
196916
197152
  };
196917
- const shown2 = new Set(findings.map(messageOf3).filter((message) => message !== void 0));
197153
+ const shown2 = new Set(findings.map(messageOf3).filter((message2) => message2 !== void 0));
196918
197154
  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);
197155
+ const message2 = messageOf3(entry);
197156
+ return message2 !== void 0 && shown2.has(message2);
196921
197157
  });
196922
197158
  const out2 = {};
196923
197159
  const emptied = [];
@@ -199772,9 +200008,9 @@ async function seedCms(opts) {
199772
200008
  }
199773
200009
  if (!dryRun) {
199774
200010
  const declaredKeys = new Set(spec.fields.map((f2) => f2.key));
199775
- const clean2 = rows.map((row) => {
200011
+ const clean2 = rows.map((row2) => {
199776
200012
  const out2 = {};
199777
- for (const [k2, v2] of Object.entries(row)) if (declaredKeys.has(k2)) out2[k2] = v2;
200013
+ for (const [k2, v2] of Object.entries(row2)) if (declaredKeys.has(k2)) out2[k2] = v2;
199778
200014
  return out2;
199779
200015
  });
199780
200016
  const droppedKeys = [...new Set(rows.flatMap((r3) => Object.keys(r3).filter((k2) => !declaredKeys.has(k2))))];
@@ -199787,11 +200023,11 @@ async function seedCms(opts) {
199787
200023
  await mapLimit(
199788
200024
  clean2,
199789
200025
  4,
199790
- (row, i2) => (
200026
+ (row2, i2) => (
199791
200027
  // Sent EXACTLY ONCE. An insert carries no idempotency key, so retrying a request
199792
200028
  // that landed but whose response was lost silently duplicates the row — and a
199793
200029
  // 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 } })
200030
+ call("POST", "/wix-data/v2/items", { dataCollectionId: id, dataItem: { data: row2 } })
199795
200031
  )
199796
200032
  );
199797
200033
  }
@@ -199937,7 +200173,7 @@ async function planData(options) {
199937
200173
  kv.push({ name: spec.name, status: !remote.exists ? "missing" : drift ? "drift" : "ready", ...drift ? { detail: "declaration differs from provisioned KV metadata" } : {} });
199938
200174
  }
199939
200175
  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 };
200176
+ return { ok: kv.every((row2) => row2.status === "ready") && collections.ok, scope: { ...options.scope }, kv, collections, writes: 0 };
199941
200177
  }
199942
200178
  async function createData(options) {
199943
200179
  const created = [];
@@ -200981,7 +201217,7 @@ himi v${cliVersion()} \u2014 run \`himi --version\`. If authoring commands fail
200981
201217
  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
201218
  notCarried,
200983
201219
  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."
201220
+ 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
201221
  }), null, 2));
200986
201222
  return 1;
200987
201223
  }