@camstack/system 1.2.479 → 1.2.481

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 (88) hide show
  1. package/dist/{agent-https-CXMsY05a.mjs → agent-https-doVPSeiy.mjs} +1 -1
  2. package/dist/{agent-https-D6a1IRPK.js → agent-https-o3X-jkS7.js} +1 -1
  3. package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.js +1 -1
  4. package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.mjs +1 -1
  5. package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.js +1 -1
  6. package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.mjs +1 -1
  7. package/dist/builtins/alerts/alerts.addon.js +1 -1
  8. package/dist/builtins/alerts/alerts.addon.mjs +1 -1
  9. package/dist/builtins/autotrack/index.js +1 -1
  10. package/dist/builtins/autotrack/index.mjs +1 -1
  11. package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.js +2 -2
  12. package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.mjs +2 -2
  13. package/dist/builtins/calendars/calendars.addon.js +1 -1
  14. package/dist/builtins/calendars/calendars.addon.mjs +1 -1
  15. package/dist/builtins/camera-grid/index.js +1 -1
  16. package/dist/builtins/camera-grid/index.mjs +1 -1
  17. package/dist/builtins/composer/composer.addon.js +11 -3
  18. package/dist/builtins/composer/composer.addon.mjs +11 -3
  19. package/dist/builtins/console-logging/index.js +1 -1
  20. package/dist/builtins/console-logging/index.mjs +1 -1
  21. package/dist/builtins/core-blocks/core-blocks.addon.js +4 -4
  22. package/dist/builtins/core-blocks/core-blocks.addon.mjs +4 -4
  23. package/dist/builtins/device-history/device-history.addon.js +2 -2
  24. package/dist/builtins/device-history/device-history.addon.mjs +2 -2
  25. package/dist/builtins/device-manager/device-manager.addon.js +1 -1
  26. package/dist/builtins/device-manager/device-manager.addon.mjs +1 -1
  27. package/dist/builtins/hub-forwarder/index.js +1 -1
  28. package/dist/builtins/hub-forwarder/index.mjs +1 -1
  29. package/dist/builtins/keychain/index.js +3 -3
  30. package/dist/builtins/keychain/index.mjs +3 -3
  31. package/dist/builtins/liveness-monitor/liveness-monitor.addon.js +1 -1
  32. package/dist/builtins/liveness-monitor/liveness-monitor.addon.mjs +1 -1
  33. package/dist/builtins/local-auth/local-auth.addon.js +2 -2
  34. package/dist/builtins/local-auth/local-auth.addon.mjs +2 -2
  35. package/dist/builtins/local-network/local-network.addon.js +2 -2
  36. package/dist/builtins/local-network/local-network.addon.mjs +2 -2
  37. package/dist/builtins/loki-logging/index.js +1 -1
  38. package/dist/builtins/loki-logging/index.mjs +1 -1
  39. package/dist/builtins/native-metrics/native-metrics.addon.js +1 -1
  40. package/dist/builtins/native-metrics/native-metrics.addon.mjs +1 -1
  41. package/dist/builtins/platform-probe/index.js +1 -1
  42. package/dist/builtins/platform-probe/index.mjs +1 -1
  43. package/dist/builtins/record-entries/index.js +1 -1
  44. package/dist/builtins/record-entries/index.mjs +1 -1
  45. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.js +1 -1
  46. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.mjs +1 -1
  47. package/dist/builtins/snapshot/index.js +1 -1
  48. package/dist/builtins/snapshot/index.mjs +1 -1
  49. package/dist/builtins/sqlite-storage/filesystem-storage.addon.js +1 -1
  50. package/dist/builtins/sqlite-storage/filesystem-storage.addon.mjs +1 -1
  51. package/dist/builtins/sqlite-storage/index.js +1 -1
  52. package/dist/builtins/sqlite-storage/index.mjs +1 -1
  53. package/dist/builtins/sqlite-storage/sqlite-settings.addon.js +2 -2
  54. package/dist/builtins/sqlite-storage/sqlite-settings.addon.mjs +2 -2
  55. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.js +1 -1
  56. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.mjs +1 -1
  57. package/dist/builtins/system-config/system-config.addon.js +3 -3
  58. package/dist/builtins/system-config/system-config.addon.mjs +3 -3
  59. package/dist/builtins/winston-logging/index.js +1 -1
  60. package/dist/builtins/winston-logging/index.mjs +1 -1
  61. package/dist/{composition-sources-yfxjp3qV.js → composition-sources-BmhhDWIc.js} +1 -1
  62. package/dist/{composition-sources-CQcYYZxL.mjs → composition-sources-BrDtOpfE.mjs} +1 -1
  63. package/dist/{constants-D--JWd55.js → constants-BVJrLycr.js} +1 -1
  64. package/dist/{constants-lWkcQxVE.mjs → constants-xuLNi4a2.mjs} +1 -1
  65. package/dist/{device-ca-J9ZsyoFw.mjs → device-ca-DKOZSFED.mjs} +1 -1
  66. package/dist/{device-ca-D0KnLHMw.js → device-ca-DgLZPn5R.js} +1 -1
  67. package/dist/{dist-iVUkxljP.js → dist--v3KMKa1.js} +281 -524
  68. package/dist/{dist-OC-L50JY.mjs → dist-BIJXQo_j.mjs} +276 -483
  69. package/dist/file-host-worker.js +1 -1
  70. package/dist/file-host-worker.mjs +1 -1
  71. package/dist/{hub-mdns-ciao-BDKiKV75.js → hub-mdns-ciao-C3NJsOvK.js} +2 -2
  72. package/dist/{hub-mdns-ciao-CvXWbJub.mjs → hub-mdns-ciao-DMFXIlMY.mjs} +2 -2
  73. package/dist/index.js +7 -7
  74. package/dist/index.mjs +7 -7
  75. package/dist/{restore-archive-D1Uzojhc.mjs → restore-archive-DAEsvFY6.mjs} +1 -1
  76. package/dist/{restore-archive-DxkdJpWd.js → restore-archive-DpkdAuFf.js} +1 -1
  77. package/dist/{retention-B3z_lBP1.js → retention-C71dNCIh.js} +1 -1
  78. package/dist/{retention-DdVnmXXS.mjs → retention-DbunrLR4.mjs} +1 -1
  79. package/dist/{wal-maintenance-o9TyZeYp.js → wal-maintenance-CsGk4kYn.js} +0 -0
  80. package/dist/{wal-maintenance-DuO0D2H3.mjs → wal-maintenance-DYAJwPWu.mjs} +0 -0
  81. package/package.json +1 -19
  82. package/assets/display-palette/icon.svg +0 -7
  83. package/dist/builtins/display-palette/display-palette.addon.d.ts +0 -13
  84. package/dist/builtins/display-palette/display-palette.addon.js +0 -88
  85. package/dist/builtins/display-palette/display-palette.addon.mjs +0 -82
  86. package/dist/builtins/display-palette/index.d.ts +0 -1
  87. package/dist/builtins/display-palette/index.js +0 -8
  88. package/dist/builtins/display-palette/index.mjs +0 -2
@@ -15461,6 +15461,7 @@ var CompositionRunStatusSchema = zod.z.enum([
15461
15461
  "starting",
15462
15462
  "running",
15463
15463
  "degraded",
15464
+ "incomplete",
15464
15465
  "failed"
15465
15466
  ]);
15466
15467
  var CompositionFieldStateKindSchema = zod.z.enum([
@@ -16585,6 +16586,7 @@ var CoreBlockStatusSchema = zod.z.enum([
16585
16586
  "starting",
16586
16587
  "running",
16587
16588
  "degraded",
16589
+ "incomplete",
16588
16590
  "failed"
16589
16591
  ]);
16590
16592
  /** Default entry path when a multi-file block omits `entry`. */
@@ -44943,107 +44945,6 @@ var PALETTE_PRESET_IDS = [
44943
44945
  "high-contrast",
44944
44946
  "okabe-ito"
44945
44947
  ];
44946
- function isPaletteEntryId(id) {
44947
- return PALETTE_ENTRY_IDS.includes(id);
44948
- }
44949
- function isPalettePresetId(id) {
44950
- return PALETTE_PRESET_IDS.includes(id);
44951
- }
44952
- /**
44953
- * CIEDE2000 and WCAG contrast for the display palette (D939).
44954
- *
44955
- * One implementation, shared by the hub validator, the admin editor and
44956
- * (phase 2) the viewer. The arithmetic matches the viewer's `src/theme/cie.ts`.
44957
- */
44958
- /** Page backgrounds the contrast rule is measured against. */
44959
- var PALETTE_BACKGROUNDS = {
44960
- dark: "#0c0a09",
44961
- light: "#fafaf9"
44962
- };
44963
- /** Marks that are not event kinds and share the raised distance floor. */
44964
- var PALETTE_MARK_PAIR = ["live", "heatmapScrub"];
44965
- var HEX = /^#[0-9a-fA-F]{6}$/;
44966
- function srgbChannel(hex, start) {
44967
- return Number.parseInt(hex.slice(start, start + 2), 16);
44968
- }
44969
- function srgbToLin(channel) {
44970
- const x = channel / 255;
44971
- return x <= .04045 ? x / 12.92 : ((x + .055) / 1.055) ** 2.4;
44972
- }
44973
- function relativeLuminance(hex) {
44974
- const r = srgbToLin(srgbChannel(hex, 1));
44975
- const g = srgbToLin(srgbChannel(hex, 3));
44976
- const b = srgbToLin(srgbChannel(hex, 5));
44977
- return .2126 * r + .7152 * g + .0722 * b;
44978
- }
44979
- /** WCAG contrast ratio of two `#rrggbb` colours. Non-hex returns 0. */
44980
- function contrastRatio(a, b) {
44981
- if (!HEX.test(a) || !HEX.test(b)) return 0;
44982
- const hi = Math.max(relativeLuminance(a), relativeLuminance(b));
44983
- const lo = Math.min(relativeLuminance(a), relativeLuminance(b));
44984
- return (hi + .05) / (lo + .05);
44985
- }
44986
- function xyzToLab(hex) {
44987
- const r = srgbToLin(srgbChannel(hex, 1));
44988
- const g = srgbToLin(srgbChannel(hex, 3));
44989
- const bl = srgbToLin(srgbChannel(hex, 5));
44990
- const x = .4124564 * r + .3575761 * g + .1804375 * bl;
44991
- const y = .2126729 * r + .7151522 * g + .072175 * bl;
44992
- const z = .0193339 * r + .119192 * g + .9503041 * bl;
44993
- const f = (t) => t > .008856 ? Math.cbrt(t) : 7.787 * t + 16 / 116;
44994
- const fx = f(x / .95047);
44995
- const fy = f(y);
44996
- const fz = f(z / 1.08883);
44997
- return {
44998
- L: 116 * fy - 16,
44999
- a: 500 * (fx - fy),
45000
- b: 200 * (fy - fz)
45001
- };
45002
- }
45003
- function hueDeg(ap, b) {
45004
- if (ap === 0 && b === 0) return 0;
45005
- const ang = Math.atan2(b, ap) * 180 / Math.PI;
45006
- return ang < 0 ? ang + 360 : ang;
45007
- }
45008
- /** CIEDE2000. Non-hex returns 0 so a bad swatch fails the distinctness rule. */
45009
- function deltaE00(hex1, hex2) {
45010
- if (!HEX.test(hex1) || !HEX.test(hex2)) return 0;
45011
- const lab1 = xyzToLab(hex1);
45012
- const lab2 = xyzToLab(hex2);
45013
- const cab7 = ((Math.hypot(lab1.a, lab1.b) + Math.hypot(lab2.a, lab2.b)) / 2) ** 7;
45014
- const g = .5 * (1 - Math.sqrt(cab7 / (cab7 + 25 ** 7)));
45015
- const a1p = (1 + g) * lab1.a;
45016
- const a2p = (1 + g) * lab2.a;
45017
- const c1p = Math.hypot(a1p, lab1.b);
45018
- const c2p = Math.hypot(a2p, lab2.b);
45019
- const h1p = hueDeg(a1p, lab1.b);
45020
- const h2p = hueDeg(a2p, lab2.b);
45021
- let dhp = 0;
45022
- if (c1p * c2p !== 0) {
45023
- dhp = h2p - h1p;
45024
- if (dhp > 180) dhp -= 360;
45025
- else if (dhp < -180) dhp += 360;
45026
- }
45027
- const dHp = 2 * Math.sqrt(c1p * c2p) * Math.sin(dhp * Math.PI / 360);
45028
- const lbp = (lab1.L + lab2.L) / 2;
45029
- const cbp = (c1p + c2p) / 2;
45030
- let hbp = h1p + h2p;
45031
- if (c1p * c2p !== 0) {
45032
- if (Math.abs(h1p - h2p) > 180) hbp += hbp < 360 ? 360 : -360;
45033
- hbp /= 2;
45034
- }
45035
- const t = 1 - .17 * Math.cos((hbp - 30) * Math.PI / 180) + .24 * Math.cos(2 * hbp * Math.PI / 180) + .32 * Math.cos((3 * hbp + 6) * Math.PI / 180) - .2 * Math.cos((4 * hbp - 63) * Math.PI / 180);
45036
- const dTheta = 30 * Math.exp(-(((hbp - 275) / 25) ** 2));
45037
- const cbp7 = cbp ** 7;
45038
- const rc = 2 * Math.sqrt(cbp7 / (cbp7 + 25 ** 7));
45039
- const sl = 1 + .015 * (lbp - 50) ** 2 / Math.sqrt(20 + (lbp - 50) ** 2);
45040
- const sc = 1 + .045 * cbp;
45041
- const sh = 1 + .015 * cbp * t;
45042
- const rt = -Math.sin(2 * dTheta * Math.PI / 180) * rc;
45043
- const dLp = lab2.L - lab1.L;
45044
- const dCp = c2p - c1p;
45045
- return Math.sqrt((dLp / sl) ** 2 + (dCp / sc) ** 2 + (dHp / sh) ** 2 + rt * (dCp / sc) * (dHp / sh));
45046
- }
45047
44948
  /** Frozen palette tables (D939). The spec refuses a table that breaks the rule. */
45048
44949
  var CAMSTACK_HEX = {
45049
44950
  motion: "#d946ef",
@@ -45273,7 +45174,7 @@ var setPaletteInputSchema = zod.z.union([zod.z.object({ presetId: zod.z.string()
45273
45174
  presetId: zod.z.string(),
45274
45175
  overrides: zod.z.record(zod.z.string(), paletteSwatchSchema)
45275
45176
  })]);
45276
- var storedPaletteSchema = zod.z.object({
45177
+ zod.z.object({
45277
45178
  presetId: zod.z.string(),
45278
45179
  overrides: zod.z.record(zod.z.string(), paletteSwatchSchema)
45279
45180
  });
@@ -45330,101 +45231,6 @@ function readyOf(row, source, customized) {
45330
45231
  fallbacks: [...row.fallbacks]
45331
45232
  };
45332
45233
  }
45333
- function namedColours(swatches, fallbacks) {
45334
- const rows = [];
45335
- for (const id of PALETTE_ENTRY_IDS) {
45336
- const swatch = swatches[id];
45337
- if (swatch !== void 0) rows.push({
45338
- name: id,
45339
- hex: swatch.hex
45340
- });
45341
- }
45342
- fallbacks.forEach((hex, index) => {
45343
- rows.push({
45344
- name: `fallback-${index}`,
45345
- hex
45346
- });
45347
- });
45348
- return rows;
45349
- }
45350
- function gradientViolations(swatches) {
45351
- const audio = swatches[AUDIO_ENTRY_ID];
45352
- if (audio === void 0) return [];
45353
- if (audio.form !== "gradient") return [{
45354
- code: "bad-gradient",
45355
- entry: AUDIO_ENTRY_ID
45356
- }];
45357
- return AUDIO_GRADIENT_ALPHAS.every((alpha, index) => audio.alphas[index] === alpha) ? [] : [{
45358
- code: "bad-gradient",
45359
- entry: AUDIO_ENTRY_ID
45360
- }];
45361
- }
45362
- function isMarkPair(left, right) {
45363
- const marks = PALETTE_MARK_PAIR;
45364
- return marks.includes(left) && marks.includes(right);
45365
- }
45366
- /** Refuse a palette whose entries are not pairwise distinct on both themes. */
45367
- function validatePalette(swatches, fallbacks) {
45368
- const violations = [];
45369
- for (const id of PALETTE_ENTRY_IDS) if (swatches[id] === void 0) violations.push({
45370
- code: "missing-entry",
45371
- entry: id
45372
- });
45373
- for (const key of Object.keys(swatches)) if (!isPaletteEntryId(key)) violations.push({
45374
- code: "unknown-entry",
45375
- entry: key
45376
- });
45377
- if (fallbacks.length !== 8) violations.push({ code: "bad-fallbacks" });
45378
- violations.push(...gradientViolations(swatches));
45379
- const rows = namedColours(swatches, fallbacks);
45380
- for (let i = 0; i < rows.length; i++) for (let j = i + 1; j < rows.length; j++) {
45381
- const left = rows[i];
45382
- const right = rows[j];
45383
- if (left === void 0 || right === void 0) continue;
45384
- const deltaE = deltaE00(left.hex, right.hex);
45385
- if (deltaE < (isMarkPair(left.name, right.name) ? 20 : 7)) violations.push({
45386
- code: "too-close",
45387
- left: left.name,
45388
- right: right.name,
45389
- deltaE
45390
- });
45391
- }
45392
- for (const row of rows) for (const background of ["dark", "light"]) {
45393
- const contrast = contrastRatio(row.hex, PALETTE_BACKGROUNDS[background]);
45394
- if (contrast < 3) violations.push({
45395
- code: "low-contrast",
45396
- entry: row.name,
45397
- background,
45398
- contrast
45399
- });
45400
- }
45401
- return violations.length === 0 ? { ok: true } : {
45402
- ok: false,
45403
- violations
45404
- };
45405
- }
45406
- function formatPaletteViolation(violation) {
45407
- switch (violation.code) {
45408
- case "too-close": return `${violation.left} vs ${violation.right} (ΔE ${violation.deltaE.toFixed(1)})`;
45409
- case "low-contrast": return `${violation.entry} on ${violation.background} (${violation.contrast.toFixed(1)}:1)`;
45410
- case "missing-entry": return `${violation.entry} is missing`;
45411
- case "unknown-entry": return `${violation.entry} is not a palette entry`;
45412
- case "bad-gradient": return `${violation.entry} gradient is not the six canonical steps`;
45413
- case "bad-fallbacks": return "fallback list must hold eight colours";
45414
- case "unknown-preset": return `${violation.presetId} is not a preset`;
45415
- }
45416
- }
45417
- function formatPaletteViolations(violations) {
45418
- return violations.map(formatPaletteViolation).join("; ");
45419
- }
45420
- var PaletteRejectedError = class extends Error {
45421
- violations;
45422
- constructor(violations) {
45423
- super(formatPaletteViolations(violations));
45424
- this.name = "PaletteRejectedError";
45425
- this.violations = violations;
45426
- }
45427
- };
45428
45234
  function hashFallback(kind, fallbacks) {
45429
45235
  let hash = 0;
45430
45236
  for (let i = 0; i < kind.length; i++) hash = hash * 31 + (kind.codePointAt(i) ?? 0) >>> 0;
@@ -45443,78 +45249,6 @@ function paintHex(swatches, fallbacks, kind) {
45443
45249
  if (direct !== void 0) return direct.hex;
45444
45250
  return hashFallback(key, fallbacks);
45445
45251
  }
45446
- function mergeOverrides(base, overrides) {
45447
- return {
45448
- ...base,
45449
- ...overrides
45450
- };
45451
- }
45452
- function overridesOf(input) {
45453
- return "overrides" in input ? input.overrides : {};
45454
- }
45455
- /** The palette a `setPalette` input would store. Invalid input is a refusal. */
45456
- function paletteFromInput(input) {
45457
- const row = presetById(input.presetId);
45458
- if (row === void 0 || !isPalettePresetId(input.presetId)) throw new PaletteRejectedError([{
45459
- code: "unknown-preset",
45460
- presetId: input.presetId
45461
- }]);
45462
- const overrides = overridesOf(input);
45463
- const swatches = mergeOverrides(row.swatches, overrides);
45464
- const verdict = validatePalette(swatches, row.fallbacks);
45465
- if (!verdict.ok) throw new PaletteRejectedError(verdict.violations);
45466
- const customized = Object.keys(overrides).length > 0;
45467
- return {
45468
- status: "ready",
45469
- presetId: row.id,
45470
- customized,
45471
- source: "stored",
45472
- swatches,
45473
- fallbacks: [...row.fallbacks]
45474
- };
45475
- }
45476
- function isEmptyRecord(value) {
45477
- return typeof value === "object" && value !== null && !Array.isArray(value) && Object.keys(value).length === 0;
45478
- }
45479
- /**
45480
- * Interpret a settings blob. A missing row is the bundled preset and says so.
45481
- * A blob that does not parse, names an unknown preset, or fails the rule is
45482
- * `unknown` — never the default wearing the stored preset's name.
45483
- */
45484
- function paletteFromStored(value) {
45485
- if (value === void 0 || value === null || isEmptyRecord(value)) return bundledCamstack();
45486
- const parsed = storedPaletteSchema.safeParse(value);
45487
- if (!parsed.success) return {
45488
- status: "unknown",
45489
- reason: "stored palette is unreadable"
45490
- };
45491
- const row = presetById(parsed.data.presetId);
45492
- if (row === void 0) return {
45493
- status: "unknown",
45494
- reason: `unknown preset ${parsed.data.presetId}`
45495
- };
45496
- const swatches = mergeOverrides(row.swatches, parsed.data.overrides);
45497
- const verdict = validatePalette(swatches, row.fallbacks);
45498
- if (!verdict.ok) return {
45499
- status: "unknown",
45500
- reason: formatPaletteViolations(verdict.violations)
45501
- };
45502
- const customized = Object.keys(parsed.data.overrides).length > 0;
45503
- return {
45504
- status: "ready",
45505
- presetId: row.id,
45506
- customized,
45507
- source: "stored",
45508
- swatches,
45509
- fallbacks: [...row.fallbacks]
45510
- };
45511
- }
45512
- function storedFromReady(ready, overrides) {
45513
- return {
45514
- presetId: ready.presetId,
45515
- overrides: { ...overrides }
45516
- };
45517
- }
45518
45252
  /**
45519
45253
  * Unified event-kind taxonomy — THE single source of truth for
45520
45254
  * `kind → { parentKind, category, level, color, iconId, labelKey, label,
@@ -60449,7 +60183,10 @@ var airQualitySensorCapability = {
60449
60183
  */
60450
60184
  var AmbientLightSensorStatusSchema = zod.z.object({
60451
60185
  /** Current illuminance in lux (lx). */
60452
- lux: zod.z.number().min(0),
60186
+ lux: zod.z.number().min(0).meta({
60187
+ unit: "lx",
60188
+ label: "Illuminance"
60189
+ }),
60453
60190
  /** Ms epoch when the slice was last updated. */
60454
60191
  lastFetchedAt: zod.z.number(),
60455
60192
  /** Live display unit from the upstream source (e.g. HA
@@ -60492,7 +60229,12 @@ var ambientLightSensorCapability = {
60492
60229
  } } },
60493
60230
  /** Clock fields: written, but excluded from the compare that decides
60494
60231
  * whether persisting is worth a SQLite commit. */
60495
- volatileStateFields: ["lastFetchedAt"]
60232
+ volatileStateFields: ["lastFetchedAt"],
60233
+ customize: {
60234
+ version: 1,
60235
+ advanced: "derive",
60236
+ targets: []
60237
+ }
60496
60238
  };
60497
60239
  /**
60498
60240
  * Per-class audio metrics aggregated over a sliding window.
@@ -60728,7 +60470,10 @@ var BatteryStatusSchema = zod.z.object({
60728
60470
  * Consumers must SKIP a null rather than coerce it — `battery-band` already
60729
60471
  * declines to band a non-finite reading, which is the correct shape.
60730
60472
  */
60731
- percentage: zod.z.number().min(0).max(100).nullable(),
60473
+ percentage: zod.z.number().min(0).max(100).nullable().meta({
60474
+ unit: "%",
60475
+ label: "Charge"
60476
+ }),
60732
60477
  /**
60733
60478
  * Charging source. `'dc'` covers wall/USB adapters; `'solar'` is
60734
60479
  * Reolink-specific for the Solar Panel 2 accessory (will become
@@ -60747,13 +60492,13 @@ var BatteryStatusSchema = zod.z.object({
60747
60492
  "solar",
60748
60493
  "none",
60749
60494
  "unknown"
60750
- ]),
60495
+ ]).meta({ label: "Charging source" }),
60751
60496
  /**
60752
60497
  * True when the camera firmware has gone into low-power mode. Battery
60753
60498
  * providers MUST avoid polling during sleep — reading the battery
60754
60499
  * wakes the camera up and drains charge.
60755
60500
  */
60756
- sleeping: zod.z.boolean(),
60501
+ sleeping: zod.z.boolean().meta({ label: "Sleeping" }),
60757
60502
  /** Ms epoch of the last observation. Lets consumers reason about freshness. */
60758
60503
  lastUpdated: zod.z.number(),
60759
60504
  /**
@@ -60793,7 +60538,7 @@ var BatteryStatusSchema = zod.z.object({
60793
60538
  * sub-threshold = low). UI MUST render "Normal"/"Low" instead of a
60794
60539
  * misleading exact percentage. Absent/false → genuine 0–100 % reading.
60795
60540
  */
60796
- binary: zod.z.boolean().optional()
60541
+ binary: zod.z.boolean().optional().meta({ label: "Binary indicator" })
60797
60542
  });
60798
60543
  var BATTERY_DEVICE_TYPES = [
60799
60544
  DeviceType.Camera,
@@ -60807,6 +60552,7 @@ var BATTERY_DEVICE_TYPES = [
60807
60552
  /** Generic Customize target for the percentage reading (D936). */
60808
60553
  var batteryCustomize = {
60809
60554
  version: 1,
60555
+ advanced: "derive",
60810
60556
  targets: [{
60811
60557
  id: "percentage",
60812
60558
  cardinality: "scalar",
@@ -60957,7 +60703,7 @@ onStatusChanged: { data: zod.z.object({
60957
60703
  * with the right HomeKit / Alexa display category.
60958
60704
  */
60959
60705
  var BinaryStatusSchema = zod.z.object({
60960
- on: zod.z.boolean(),
60706
+ on: zod.z.boolean().meta({ label: "On" }),
60961
60707
  /** Ms epoch of the last transition. 0 if never observed. */
60962
60708
  lastChangedAt: zod.z.number()
60963
60709
  });
@@ -60986,7 +60732,12 @@ var binaryCapability = {
60986
60732
  history: { fields: { on: { kind: "boolean" } } },
60987
60733
  /** Clock fields: written, but excluded from the compare that decides
60988
60734
  * whether persisting is worth a SQLite commit. */
60989
- volatileStateFields: ["lastChangedAt"]
60735
+ volatileStateFields: ["lastChangedAt"],
60736
+ customize: {
60737
+ version: 1,
60738
+ advanced: "derive",
60739
+ targets: []
60740
+ }
60990
60741
  };
60991
60742
  /**
60992
60743
  * Dimmable-light brightness control. Co-exists with `switch` on the
@@ -64010,7 +63761,10 @@ var humidifierCapability = {
64010
63761
  */
64011
63762
  var HumiditySensorStatusSchema = zod.z.object({
64012
63763
  /** Current relative humidity, 0..100. */
64013
- percent: zod.z.number().min(0).max(100),
63764
+ percent: zod.z.number().min(0).max(100).meta({
63765
+ unit: "%",
63766
+ label: "Humidity"
63767
+ }),
64014
63768
  /** Ms epoch when the slice was last updated. */
64015
63769
  lastFetchedAt: zod.z.number(),
64016
63770
  /** Live display unit from the upstream source (e.g. HA
@@ -64052,7 +63806,12 @@ var humiditySensorCapability = {
64052
63806
  } } },
64053
63807
  /** Clock fields: written, but excluded from the compare that decides
64054
63808
  * whether persisting is worth a SQLite commit. */
64055
- volatileStateFields: ["lastFetchedAt"]
63809
+ volatileStateFields: ["lastFetchedAt"],
63810
+ customize: {
63811
+ version: 1,
63812
+ advanced: "derive",
63813
+ targets: []
63814
+ }
64056
63815
  };
64057
63816
  /**
64058
63817
  * Image display cap. Models a single still image exposed by an integration —
@@ -68216,9 +67975,15 @@ var platformProbeCapability = {
68216
67975
  */
68217
67976
  var PowerMeterStatusSchema = zod.z.object({
68218
67977
  /** Instantaneous power draw in watts. */
68219
- watts: zod.z.number().optional(),
67978
+ watts: zod.z.number().optional().meta({
67979
+ unit: "W",
67980
+ label: "Power"
67981
+ }),
68220
67982
  /** Cumulative energy in kilowatt-hours since the meter was reset. */
68221
- kwhTotal: zod.z.number().optional(),
67983
+ kwhTotal: zod.z.number().optional().meta({
67984
+ unit: "kWh",
67985
+ label: "Energy"
67986
+ }),
68222
67987
  /** Voltage in volts. */
68223
67988
  volts: zod.z.number().optional(),
68224
67989
  /** Current in amperes. */
@@ -68303,7 +68068,12 @@ var powerMeterCapability = {
68303
68068
  } },
68304
68069
  /** Clock fields: written, but excluded from the compare that decides
68305
68070
  * whether persisting is worth a SQLite commit. */
68306
- volatileStateFields: ["lastFetchedAt"]
68071
+ volatileStateFields: ["lastFetchedAt"],
68072
+ customize: {
68073
+ version: 1,
68074
+ advanced: "derive",
68075
+ targets: []
68076
+ }
68307
68077
  };
68308
68078
  /**
68309
68079
  * Presence cap. Models HA `person.*` and `device_tracker.*` entities
@@ -69098,7 +68868,7 @@ var RunningStateStatusSchema = zod.z.object({
69098
68868
  running: zod.z.boolean().nullable(),
69099
68869
  /** Epoch ms the current boolean began; null while `running` is null. */
69100
68870
  since: zod.z.number().nullable(),
69101
- source: RunningStateSourceSchema,
68871
+ source: RunningStateSourceSchema.meta({ label: "Source" }),
69102
68872
  phase: zod.z.string().nullable(),
69103
68873
  /** null until a reading has been published (D393). */
69104
68874
  lastFetchedAt: zod.z.number().nullable()
@@ -69112,6 +68882,7 @@ var RUNNING_DEVICE_TYPES = Object.values(DeviceType);
69112
68882
  /** Generic Customize target for the running boolean (D936). */
69113
68883
  var runningCustomize = {
69114
68884
  version: 1,
68885
+ advanced: "derive",
69115
68886
  targets: [{
69116
68887
  id: "running",
69117
68888
  cardinality: "scalar",
@@ -72272,7 +72043,7 @@ function parseStreamParamsFormPatch(patch, prefix) {
72272
72043
  * `getSettingsUISchema()` surface.
72273
72044
  */
72274
72045
  var SwitchStatusSchema = zod.z.object({
72275
- on: zod.z.boolean(),
72046
+ on: zod.z.boolean().meta({ label: "On" }),
72276
72047
  /** Ms epoch of the last state change. Useful for UI "X minutes ago". */
72277
72048
  lastChangedAt: zod.z.number()
72278
72049
  });
@@ -72331,7 +72102,12 @@ var switchCapability = {
72331
72102
  label: "On",
72332
72103
  kind: "boolean"
72333
72104
  }
72334
- }] }
72105
+ }] },
72106
+ customize: {
72107
+ version: 1,
72108
+ advanced: "derive",
72109
+ targets: []
72110
+ }
72335
72111
  };
72336
72112
  /** C0 controls, DEL and the C1 range: none of them belongs in a name. */
72337
72113
  function hasControlCharacter(value) {
@@ -73054,7 +72830,10 @@ var tamperCapability = {
73054
72830
  */
73055
72831
  var TemperatureSensorStatusSchema = zod.z.object({
73056
72832
  /** Current temperature in Celsius. */
73057
- celsius: zod.z.number(),
72833
+ celsius: zod.z.number().meta({
72834
+ unit: "°C",
72835
+ label: "Temperature"
72836
+ }),
73058
72837
  /** Ms epoch when the slice was last updated (push or poll). */
73059
72838
  lastFetchedAt: zod.z.number(),
73060
72839
  /** Live display unit from the upstream source (e.g. HA
@@ -73097,7 +72876,12 @@ var temperatureSensorCapability = {
73097
72876
  } } },
73098
72877
  /** Clock fields: written, but excluded from the compare that decides
73099
72878
  * whether persisting is worth a SQLite commit. */
73100
- volatileStateFields: ["lastFetchedAt"]
72879
+ volatileStateFields: ["lastFetchedAt"],
72880
+ customize: {
72881
+ version: 1,
72882
+ advanced: "derive",
72883
+ targets: []
72884
+ }
73101
72885
  };
73102
72886
  /**
73103
72887
  * toast — system-scoped singleton capability that streams toast
@@ -75306,6 +75090,209 @@ function evaluateCompositionField(input) {
75306
75090
  }
75307
75091
  }
75308
75092
  SOURCE_CAPS.filter((cap) => cap !== "switch" && cap !== "motion");
75093
+ DeviceType.Camera, DeviceType.Sensor, DeviceType.Button, DeviceType.Switch, DeviceType.PetFeeder, DeviceType.Container, DeviceType.Thermostat, DeviceType.Camera, DeviceType.Hub, DeviceType.Light, DeviceType.Siren, DeviceType.Switch, DeviceType.Sensor, DeviceType.Thermostat, DeviceType.Climate, DeviceType.Button, DeviceType.EventEmitter, DeviceType.Update, DeviceType.Generic, DeviceType.Notifier, DeviceType.Script, DeviceType.Automation, DeviceType.Lock, DeviceType.Cover, DeviceType.Valve, DeviceType.Humidifier, DeviceType.WaterHeater, DeviceType.Fan, DeviceType.MediaPlayer, DeviceType.AlarmPanel, DeviceType.Control, DeviceType.Presence, DeviceType.Weather, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.Container, DeviceType.Image, DeviceType.PetFeeder, DeviceType.Dishwasher, DeviceType.Camera, DeviceType.Camera, DeviceType.Dishwasher, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.MediaPlayer, DeviceType.WaterHeater, DeviceType.Humidifier, DeviceType.Fan, DeviceType.Climate, DeviceType.Thermostat, DeviceType.PetFeeder;
75094
+ String.raw`rose\(active(\d+), changed(\d+), (\d+(?:\.\d+)?)\)`;
75095
+ /**
75096
+ * Every CapabilityDefinition shipped by `@camstack/types`. The hub
75097
+ * iterates this array at boot to declare each cap on the registry
75098
+ * before addons (in-process or via the Moleculer bridge) attempt
75099
+ * `registerProvider`. Adding a new cap means dropping a `*.cap.ts`
75100
+ * file in `packages/types/src/capabilities/` and re-running
75101
+ * `npx tsx scripts/generate-capability-router-types.ts` — no manual
75102
+ * edit to `main.ts` required.
75103
+ */
75104
+ var ALL_CAPABILITY_DEFINITIONS = [
75105
+ accessoriesCapability,
75106
+ addonPagesCapability,
75107
+ addonPagesSourceCapability,
75108
+ addonRoutesCapability,
75109
+ addonSettingsCapability,
75110
+ addonWidgetsCapability,
75111
+ addonWidgetsSourceCapability,
75112
+ addonsCapability,
75113
+ adminUiCapability,
75114
+ airQualitySensorCapability,
75115
+ alarmPanelCapability,
75116
+ alertsCapability,
75117
+ ambientLightSensorCapability,
75118
+ audioAnalysisCapability,
75119
+ audioAnalyzerCapability,
75120
+ audioCodecCapability,
75121
+ audioMetricsCapability,
75122
+ authProviderCapability,
75123
+ automationControlCapability,
75124
+ backupCapability,
75125
+ batteryCapability,
75126
+ binaryCapability,
75127
+ brightnessCapability,
75128
+ brokerCapability,
75129
+ buttonCapability,
75130
+ calendarSourceCapability,
75131
+ calendarsCapability,
75132
+ cameraCredentialsCapability,
75133
+ cameraGridLayoutCapability,
75134
+ cameraPipelineConfigCapability,
75135
+ cameraStreamsCapability,
75136
+ carbonMonoxideCapability,
75137
+ climateControlCapability,
75138
+ colorCapability,
75139
+ composerCapability,
75140
+ connectionTestCapability,
75141
+ connectivityCapability,
75142
+ consumablesCapability,
75143
+ contactCapability,
75144
+ controlCapability,
75145
+ coreBlocksCapability,
75146
+ coverCapability,
75147
+ customModelRegistryCapability,
75148
+ dataStoreProviderCapability,
75149
+ databaseSnapshotCapability,
75150
+ dayNightCapability,
75151
+ decoderCapability,
75152
+ detectionPipelineCapability,
75153
+ deviceAdminLinkCapability,
75154
+ deviceAdoptionCapability,
75155
+ deviceCredentialsCapability,
75156
+ deviceDiscoveryCapability,
75157
+ deviceExportCapability,
75158
+ deviceExtensionCapability,
75159
+ deviceHistoryCapability,
75160
+ deviceManagerCapability,
75161
+ deviceOpsCapability,
75162
+ deviceProviderCapability,
75163
+ deviceRemovalHookCapability,
75164
+ deviceStateCapability,
75165
+ deviceStatusCapability,
75166
+ dishwasherCapability,
75167
+ displayPaletteCapability,
75168
+ doorbellCapability,
75169
+ embeddingEncoderCapability,
75170
+ enumSensorCapability,
75171
+ eventEmitterCapability,
75172
+ faceGalleryCapability,
75173
+ failureContributionCapability,
75174
+ fanControlCapability,
75175
+ featureProbeCapability,
75176
+ filesystemBrowseCapability,
75177
+ floodCapability,
75178
+ gasCapability,
75179
+ heatingValveCapability,
75180
+ humidifierCapability,
75181
+ humiditySensorCapability,
75182
+ imageCapability,
75183
+ imageSettingsCapability,
75184
+ integrationsCapability,
75185
+ intercomCapability,
75186
+ keychainCapability,
75187
+ keychainAdminCapability,
75188
+ lawnMowerControlCapability,
75189
+ llmCapability,
75190
+ llmRuntimeCapability,
75191
+ loadContributionCapability,
75192
+ localNetworkCapability,
75193
+ lockControlCapability,
75194
+ logChannelsCapability,
75195
+ logDestinationCapability,
75196
+ loginMethodCapability,
75197
+ mediaPlayerCapability,
75198
+ meshNetworkCapability,
75199
+ metricsProviderCapability,
75200
+ modelConvertCapability,
75201
+ modelDistributorCapability,
75202
+ motionCapability,
75203
+ motionDetectionCapability,
75204
+ motionTriggerCapability,
75205
+ motionZonesCapability,
75206
+ mqttBrokerCapability,
75207
+ nativeObjectDetectionCapability,
75208
+ navigationCapability,
75209
+ networkAccessCapability,
75210
+ networkLinkCapability,
75211
+ networkQualityCapability,
75212
+ nodeCertificatesCapability,
75213
+ nodesCapability,
75214
+ notificationOutputCapability,
75215
+ notificationRulesCapability,
75216
+ notifierCapability,
75217
+ numericSensorCapability,
75218
+ oauthIntegrationCapability,
75219
+ oidcConnectionsCapability,
75220
+ osdCapability,
75221
+ osdManagerCapability,
75222
+ petFeederCapability,
75223
+ pipelineAnalyticsCapability,
75224
+ pipelineExecutorCapability,
75225
+ pipelineOrchestratorCapability,
75226
+ pipelineRunnerCapability,
75227
+ plateGalleryCapability,
75228
+ platformProbeCapability,
75229
+ powerMeterCapability,
75230
+ presenceCapability,
75231
+ pressureSensorCapability,
75232
+ privacyMaskCapability,
75233
+ ptzCapability,
75234
+ ptzAutotrackCapability,
75235
+ rebootCapability,
75236
+ recordEntriesCapability,
75237
+ recordingCapability,
75238
+ recordingArchiveCapability,
75239
+ recordingExportCapability,
75240
+ recordingOnboardCapability,
75241
+ recordingSignalCapability,
75242
+ recordsCapability,
75243
+ runningStateCapability,
75244
+ sceneMonitorCapability,
75245
+ scriptRunnerCapability,
75246
+ serverManagementCapability,
75247
+ settingsStoreCapability,
75248
+ smokeCapability,
75249
+ smtpProviderCapability,
75250
+ snapshotCapability,
75251
+ ssoBridgeCapability,
75252
+ storageCapability,
75253
+ storageAdminCapability,
75254
+ storageEvictableCapability,
75255
+ storageMigrationCapability,
75256
+ storageOccupancyCapability,
75257
+ storageProviderCapability,
75258
+ streamBrokerCapability,
75259
+ streamCatalogCapability,
75260
+ streamParamsCapability,
75261
+ streamSignalsCapability,
75262
+ switchCapability,
75263
+ systemCapability,
75264
+ tamperCapability,
75265
+ temperatureSensorCapability,
75266
+ terminalSessionCapability,
75267
+ toastCapability,
75268
+ trainingCapability,
75269
+ trainingProviderCapability,
75270
+ turnProviderCapability,
75271
+ updateCapability,
75272
+ userManagementCapability,
75273
+ userPasskeysCapability,
75274
+ vacuumControlCapability,
75275
+ valveCapability,
75276
+ vectorStoreCapability,
75277
+ vibrationCapability,
75278
+ videoclipsCapability,
75279
+ viewerUiCapability,
75280
+ waterHeaterCapability,
75281
+ weatherCapability,
75282
+ webrtcSessionCapability,
75283
+ zoneAnalyticsCapability,
75284
+ zoneRulesCapability,
75285
+ zonesCapability
75286
+ ];
75287
+ DeviceRole.BinarySensor, DeviceRole.MotionSensor;
75288
+ new Set(ALL_CAPABILITY_DEFINITIONS.map((def) => def.name));
75289
+ function isUnfilledRequiredProblem(problem) {
75290
+ return problem.code === "missing-field";
75291
+ }
75292
+ /** True when the only problems are unfilled required fields — save may proceed. */
75293
+ function problemsBlockSave(problems) {
75294
+ return problems.some((p) => !isUnfilledRequiredProblem(p));
75295
+ }
75309
75296
  Object.freeze({
75310
75297
  person: .5,
75311
75298
  vehicle: .5,
@@ -89565,7 +89552,7 @@ var SENSOR_CAP_VOCABULARY = {
89565
89552
  state: [{
89566
89553
  kind: "boolean",
89567
89554
  field: "on",
89568
- label: t("Active", "Attivo"),
89555
+ label: t("On", "Acceso"),
89569
89556
  whenTrue: t("When {device} turns active", "Quando {device} si attiva"),
89570
89557
  whenFalse: t("When {device} turns inactive", "Quando {device} si disattiva"),
89571
89558
  icon: "toggle-right"
@@ -90297,198 +90284,6 @@ var CAP_NAMES_WITH_STATUS = [
90297
90284
  "water-heater",
90298
90285
  "weather"
90299
90286
  ];
90300
- /**
90301
- * Every CapabilityDefinition shipped by `@camstack/types`. The hub
90302
- * iterates this array at boot to declare each cap on the registry
90303
- * before addons (in-process or via the Moleculer bridge) attempt
90304
- * `registerProvider`. Adding a new cap means dropping a `*.cap.ts`
90305
- * file in `packages/types/src/capabilities/` and re-running
90306
- * `npx tsx scripts/generate-capability-router-types.ts` — no manual
90307
- * edit to `main.ts` required.
90308
- */
90309
- var ALL_CAPABILITY_DEFINITIONS = [
90310
- accessoriesCapability,
90311
- addonPagesCapability,
90312
- addonPagesSourceCapability,
90313
- addonRoutesCapability,
90314
- addonSettingsCapability,
90315
- addonWidgetsCapability,
90316
- addonWidgetsSourceCapability,
90317
- addonsCapability,
90318
- adminUiCapability,
90319
- airQualitySensorCapability,
90320
- alarmPanelCapability,
90321
- alertsCapability,
90322
- ambientLightSensorCapability,
90323
- audioAnalysisCapability,
90324
- audioAnalyzerCapability,
90325
- audioCodecCapability,
90326
- audioMetricsCapability,
90327
- authProviderCapability,
90328
- automationControlCapability,
90329
- backupCapability,
90330
- batteryCapability,
90331
- binaryCapability,
90332
- brightnessCapability,
90333
- brokerCapability,
90334
- buttonCapability,
90335
- calendarSourceCapability,
90336
- calendarsCapability,
90337
- cameraCredentialsCapability,
90338
- cameraGridLayoutCapability,
90339
- cameraPipelineConfigCapability,
90340
- cameraStreamsCapability,
90341
- carbonMonoxideCapability,
90342
- climateControlCapability,
90343
- colorCapability,
90344
- composerCapability,
90345
- connectionTestCapability,
90346
- connectivityCapability,
90347
- consumablesCapability,
90348
- contactCapability,
90349
- controlCapability,
90350
- coreBlocksCapability,
90351
- coverCapability,
90352
- customModelRegistryCapability,
90353
- dataStoreProviderCapability,
90354
- databaseSnapshotCapability,
90355
- dayNightCapability,
90356
- decoderCapability,
90357
- detectionPipelineCapability,
90358
- deviceAdminLinkCapability,
90359
- deviceAdoptionCapability,
90360
- deviceCredentialsCapability,
90361
- deviceDiscoveryCapability,
90362
- deviceExportCapability,
90363
- deviceExtensionCapability,
90364
- deviceHistoryCapability,
90365
- deviceManagerCapability,
90366
- deviceOpsCapability,
90367
- deviceProviderCapability,
90368
- deviceRemovalHookCapability,
90369
- deviceStateCapability,
90370
- deviceStatusCapability,
90371
- dishwasherCapability,
90372
- displayPaletteCapability,
90373
- doorbellCapability,
90374
- embeddingEncoderCapability,
90375
- enumSensorCapability,
90376
- eventEmitterCapability,
90377
- faceGalleryCapability,
90378
- failureContributionCapability,
90379
- fanControlCapability,
90380
- featureProbeCapability,
90381
- filesystemBrowseCapability,
90382
- floodCapability,
90383
- gasCapability,
90384
- heatingValveCapability,
90385
- humidifierCapability,
90386
- humiditySensorCapability,
90387
- imageCapability,
90388
- imageSettingsCapability,
90389
- integrationsCapability,
90390
- intercomCapability,
90391
- keychainCapability,
90392
- keychainAdminCapability,
90393
- lawnMowerControlCapability,
90394
- llmCapability,
90395
- llmRuntimeCapability,
90396
- loadContributionCapability,
90397
- localNetworkCapability,
90398
- lockControlCapability,
90399
- logChannelsCapability,
90400
- logDestinationCapability,
90401
- loginMethodCapability,
90402
- mediaPlayerCapability,
90403
- meshNetworkCapability,
90404
- metricsProviderCapability,
90405
- modelConvertCapability,
90406
- modelDistributorCapability,
90407
- motionCapability,
90408
- motionDetectionCapability,
90409
- motionTriggerCapability,
90410
- motionZonesCapability,
90411
- mqttBrokerCapability,
90412
- nativeObjectDetectionCapability,
90413
- navigationCapability,
90414
- networkAccessCapability,
90415
- networkLinkCapability,
90416
- networkQualityCapability,
90417
- nodeCertificatesCapability,
90418
- nodesCapability,
90419
- notificationOutputCapability,
90420
- notificationRulesCapability,
90421
- notifierCapability,
90422
- numericSensorCapability,
90423
- oauthIntegrationCapability,
90424
- oidcConnectionsCapability,
90425
- osdCapability,
90426
- osdManagerCapability,
90427
- petFeederCapability,
90428
- pipelineAnalyticsCapability,
90429
- pipelineExecutorCapability,
90430
- pipelineOrchestratorCapability,
90431
- pipelineRunnerCapability,
90432
- plateGalleryCapability,
90433
- platformProbeCapability,
90434
- powerMeterCapability,
90435
- presenceCapability,
90436
- pressureSensorCapability,
90437
- privacyMaskCapability,
90438
- ptzCapability,
90439
- ptzAutotrackCapability,
90440
- rebootCapability,
90441
- recordEntriesCapability,
90442
- recordingCapability,
90443
- recordingArchiveCapability,
90444
- recordingExportCapability,
90445
- recordingOnboardCapability,
90446
- recordingSignalCapability,
90447
- recordsCapability,
90448
- runningStateCapability,
90449
- sceneMonitorCapability,
90450
- scriptRunnerCapability,
90451
- serverManagementCapability,
90452
- settingsStoreCapability,
90453
- smokeCapability,
90454
- smtpProviderCapability,
90455
- snapshotCapability,
90456
- ssoBridgeCapability,
90457
- storageCapability,
90458
- storageAdminCapability,
90459
- storageEvictableCapability,
90460
- storageMigrationCapability,
90461
- storageOccupancyCapability,
90462
- storageProviderCapability,
90463
- streamBrokerCapability,
90464
- streamCatalogCapability,
90465
- streamParamsCapability,
90466
- streamSignalsCapability,
90467
- switchCapability,
90468
- systemCapability,
90469
- tamperCapability,
90470
- temperatureSensorCapability,
90471
- terminalSessionCapability,
90472
- toastCapability,
90473
- trainingCapability,
90474
- trainingProviderCapability,
90475
- turnProviderCapability,
90476
- updateCapability,
90477
- userManagementCapability,
90478
- userPasskeysCapability,
90479
- vacuumControlCapability,
90480
- valveCapability,
90481
- vectorStoreCapability,
90482
- vibrationCapability,
90483
- videoclipsCapability,
90484
- viewerUiCapability,
90485
- waterHeaterCapability,
90486
- weatherCapability,
90487
- webrtcSessionCapability,
90488
- zoneAnalyticsCapability,
90489
- zoneRulesCapability,
90490
- zonesCapability
90491
- ];
90492
90287
  Object.freeze({
90493
90288
  "accessories.getStatus": [{
90494
90289
  name: "deviceId",
@@ -93961,7 +93756,6 @@ var HISTORY_ITEM_CATALOG = { "consumables": {
93961
93756
  }
93962
93757
  }
93963
93758
  } };
93964
- DeviceType.Camera, DeviceType.Sensor, DeviceType.Button, DeviceType.Switch, DeviceType.PetFeeder, DeviceType.Container, DeviceType.Thermostat, DeviceType.Camera, DeviceType.Hub, DeviceType.Light, DeviceType.Siren, DeviceType.Switch, DeviceType.Sensor, DeviceType.Thermostat, DeviceType.Climate, DeviceType.Button, DeviceType.EventEmitter, DeviceType.Update, DeviceType.Generic, DeviceType.Notifier, DeviceType.Script, DeviceType.Automation, DeviceType.Lock, DeviceType.Cover, DeviceType.Valve, DeviceType.Humidifier, DeviceType.WaterHeater, DeviceType.Fan, DeviceType.MediaPlayer, DeviceType.AlarmPanel, DeviceType.Control, DeviceType.Presence, DeviceType.Weather, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.Container, DeviceType.Image, DeviceType.PetFeeder, DeviceType.Dishwasher, DeviceType.Camera, DeviceType.Camera, DeviceType.Dishwasher, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.MediaPlayer, DeviceType.WaterHeater, DeviceType.Humidifier, DeviceType.Fan, DeviceType.Climate, DeviceType.Thermostat, DeviceType.PetFeeder;
93965
93759
  /**
93966
93760
  * A saved Customize assignment (D936). The schema is the type: callers use
93967
93761
  * `z.infer`, they do not restate the shape.
@@ -94057,7 +93851,6 @@ zod.z.object({
94057
93851
  ]),
94058
93852
  reason: zod.z.string().nullable()
94059
93853
  });
94060
- String.raw`rose\(active(\d+), changed(\d+), (\d+(?:\.\d+)?)\)`;
94061
93854
  var G711_SCALE_CORRECTION_DB = {
94062
93855
  PCMU: 20 * Math.log10(4),
94063
93856
  PCMA: 20 * Math.log10(8)
@@ -95916,12 +95709,6 @@ Object.defineProperty(exports, "DEVICE_TOMBSTONE_RETENTION_MS", {
95916
95709
  return DEVICE_TOMBSTONE_RETENTION_MS;
95917
95710
  }
95918
95711
  });
95919
- Object.defineProperty(exports, "DISPLAY_PRESETS", {
95920
- enumerable: true,
95921
- get: function() {
95922
- return DISPLAY_PRESETS;
95923
- }
95924
- });
95925
95712
  Object.defineProperty(exports, "DataStoreDatabaseSchema", {
95926
95713
  enumerable: true,
95927
95714
  get: function() {
@@ -96108,12 +95895,6 @@ Object.defineProperty(exports, "PREFERENCES_MAX_VALUE_BYTES", {
96108
95895
  return PREFERENCES_MAX_VALUE_BYTES;
96109
95896
  }
96110
95897
  });
96111
- Object.defineProperty(exports, "PaletteRejectedError", {
96112
- enumerable: true,
96113
- get: function() {
96114
- return PaletteRejectedError;
96115
- }
96116
- });
96117
95898
  Object.defineProperty(exports, "PlaintextSecretError", {
96118
95899
  enumerable: true,
96119
95900
  get: function() {
@@ -96480,12 +96261,6 @@ Object.defineProperty(exports, "buildStreamParamsConfigSchema", {
96480
96261
  return buildStreamParamsConfigSchema;
96481
96262
  }
96482
96263
  });
96483
- Object.defineProperty(exports, "bundledCamstack", {
96484
- enumerable: true,
96485
- get: function() {
96486
- return bundledCamstack;
96487
- }
96488
- });
96489
96264
  Object.defineProperty(exports, "calendarsCapability", {
96490
96265
  enumerable: true,
96491
96266
  get: function() {
@@ -96750,12 +96525,6 @@ Object.defineProperty(exports, "disarmRoseMemory", {
96750
96525
  return disarmRoseMemory;
96751
96526
  }
96752
96527
  });
96753
- Object.defineProperty(exports, "displayPaletteCapability", {
96754
- enumerable: true,
96755
- get: function() {
96756
- return displayPaletteCapability;
96757
- }
96758
- });
96759
96528
  Object.defineProperty(exports, "emitDownForOwnedCaps", {
96760
96529
  enumerable: true,
96761
96530
  get: function() {
@@ -97140,18 +96909,6 @@ Object.defineProperty(exports, "objectInputDeclaresRequiredDeviceId", {
97140
96909
  return objectInputDeclaresRequiredDeviceId;
97141
96910
  }
97142
96911
  });
97143
- Object.defineProperty(exports, "paletteFromInput", {
97144
- enumerable: true,
97145
- get: function() {
97146
- return paletteFromInput;
97147
- }
97148
- });
97149
- Object.defineProperty(exports, "paletteFromStored", {
97150
- enumerable: true,
97151
- get: function() {
97152
- return paletteFromStored;
97153
- }
97154
- });
97155
96912
  Object.defineProperty(exports, "parseAcceleratorFactsJson", {
97156
96913
  enumerable: true,
97157
96914
  get: function() {
@@ -97200,6 +96957,12 @@ Object.defineProperty(exports, "platformProbeCapability", {
97200
96957
  return platformProbeCapability;
97201
96958
  }
97202
96959
  });
96960
+ Object.defineProperty(exports, "problemsBlockSave", {
96961
+ enumerable: true,
96962
+ get: function() {
96963
+ return problemsBlockSave;
96964
+ }
96965
+ });
97203
96966
  Object.defineProperty(exports, "procedureAuthKey", {
97204
96967
  enumerable: true,
97205
96968
  get: function() {
@@ -97416,12 +97179,6 @@ Object.defineProperty(exports, "storageProviderCapability", {
97416
97179
  return storageProviderCapability;
97417
97180
  }
97418
97181
  });
97419
- Object.defineProperty(exports, "storedFromReady", {
97420
- enumerable: true,
97421
- get: function() {
97422
- return storedFromReady;
97423
- }
97424
- });
97425
97182
  Object.defineProperty(exports, "streamCatalogCapability", {
97426
97183
  enumerable: true,
97427
97184
  get: function() {