@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.
- package/dist/{agent-https-CXMsY05a.mjs → agent-https-doVPSeiy.mjs} +1 -1
- package/dist/{agent-https-D6a1IRPK.js → agent-https-o3X-jkS7.js} +1 -1
- package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.js +1 -1
- package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.mjs +1 -1
- package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.js +1 -1
- package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.mjs +1 -1
- package/dist/builtins/alerts/alerts.addon.js +1 -1
- package/dist/builtins/alerts/alerts.addon.mjs +1 -1
- package/dist/builtins/autotrack/index.js +1 -1
- package/dist/builtins/autotrack/index.mjs +1 -1
- package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.js +2 -2
- package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.mjs +2 -2
- package/dist/builtins/calendars/calendars.addon.js +1 -1
- package/dist/builtins/calendars/calendars.addon.mjs +1 -1
- package/dist/builtins/camera-grid/index.js +1 -1
- package/dist/builtins/camera-grid/index.mjs +1 -1
- package/dist/builtins/composer/composer.addon.js +11 -3
- package/dist/builtins/composer/composer.addon.mjs +11 -3
- package/dist/builtins/console-logging/index.js +1 -1
- package/dist/builtins/console-logging/index.mjs +1 -1
- package/dist/builtins/core-blocks/core-blocks.addon.js +4 -4
- package/dist/builtins/core-blocks/core-blocks.addon.mjs +4 -4
- package/dist/builtins/device-history/device-history.addon.js +2 -2
- package/dist/builtins/device-history/device-history.addon.mjs +2 -2
- package/dist/builtins/device-manager/device-manager.addon.js +1 -1
- package/dist/builtins/device-manager/device-manager.addon.mjs +1 -1
- package/dist/builtins/hub-forwarder/index.js +1 -1
- package/dist/builtins/hub-forwarder/index.mjs +1 -1
- package/dist/builtins/keychain/index.js +3 -3
- package/dist/builtins/keychain/index.mjs +3 -3
- package/dist/builtins/liveness-monitor/liveness-monitor.addon.js +1 -1
- package/dist/builtins/liveness-monitor/liveness-monitor.addon.mjs +1 -1
- package/dist/builtins/local-auth/local-auth.addon.js +2 -2
- package/dist/builtins/local-auth/local-auth.addon.mjs +2 -2
- package/dist/builtins/local-network/local-network.addon.js +2 -2
- package/dist/builtins/local-network/local-network.addon.mjs +2 -2
- package/dist/builtins/loki-logging/index.js +1 -1
- package/dist/builtins/loki-logging/index.mjs +1 -1
- package/dist/builtins/native-metrics/native-metrics.addon.js +1 -1
- package/dist/builtins/native-metrics/native-metrics.addon.mjs +1 -1
- package/dist/builtins/platform-probe/index.js +1 -1
- package/dist/builtins/platform-probe/index.mjs +1 -1
- package/dist/builtins/record-entries/index.js +1 -1
- package/dist/builtins/record-entries/index.mjs +1 -1
- package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.js +1 -1
- package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.mjs +1 -1
- package/dist/builtins/snapshot/index.js +1 -1
- package/dist/builtins/snapshot/index.mjs +1 -1
- package/dist/builtins/sqlite-storage/filesystem-storage.addon.js +1 -1
- package/dist/builtins/sqlite-storage/filesystem-storage.addon.mjs +1 -1
- package/dist/builtins/sqlite-storage/index.js +1 -1
- package/dist/builtins/sqlite-storage/index.mjs +1 -1
- package/dist/builtins/sqlite-storage/sqlite-settings.addon.js +2 -2
- package/dist/builtins/sqlite-storage/sqlite-settings.addon.mjs +2 -2
- package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.js +1 -1
- package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.mjs +1 -1
- package/dist/builtins/system-config/system-config.addon.js +3 -3
- package/dist/builtins/system-config/system-config.addon.mjs +3 -3
- package/dist/builtins/winston-logging/index.js +1 -1
- package/dist/builtins/winston-logging/index.mjs +1 -1
- package/dist/{composition-sources-yfxjp3qV.js → composition-sources-BmhhDWIc.js} +1 -1
- package/dist/{composition-sources-CQcYYZxL.mjs → composition-sources-BrDtOpfE.mjs} +1 -1
- package/dist/{constants-D--JWd55.js → constants-BVJrLycr.js} +1 -1
- package/dist/{constants-lWkcQxVE.mjs → constants-xuLNi4a2.mjs} +1 -1
- package/dist/{device-ca-J9ZsyoFw.mjs → device-ca-DKOZSFED.mjs} +1 -1
- package/dist/{device-ca-D0KnLHMw.js → device-ca-DgLZPn5R.js} +1 -1
- package/dist/{dist-iVUkxljP.js → dist--v3KMKa1.js} +281 -524
- package/dist/{dist-OC-L50JY.mjs → dist-BIJXQo_j.mjs} +276 -483
- package/dist/file-host-worker.js +1 -1
- package/dist/file-host-worker.mjs +1 -1
- package/dist/{hub-mdns-ciao-BDKiKV75.js → hub-mdns-ciao-C3NJsOvK.js} +2 -2
- package/dist/{hub-mdns-ciao-CvXWbJub.mjs → hub-mdns-ciao-DMFXIlMY.mjs} +2 -2
- package/dist/index.js +7 -7
- package/dist/index.mjs +7 -7
- package/dist/{restore-archive-D1Uzojhc.mjs → restore-archive-DAEsvFY6.mjs} +1 -1
- package/dist/{restore-archive-DxkdJpWd.js → restore-archive-DpkdAuFf.js} +1 -1
- package/dist/{retention-B3z_lBP1.js → retention-C71dNCIh.js} +1 -1
- package/dist/{retention-DdVnmXXS.mjs → retention-DbunrLR4.mjs} +1 -1
- package/dist/{wal-maintenance-o9TyZeYp.js → wal-maintenance-CsGk4kYn.js} +0 -0
- package/dist/{wal-maintenance-DuO0D2H3.mjs → wal-maintenance-DYAJwPWu.mjs} +0 -0
- package/package.json +1 -19
- package/assets/display-palette/icon.svg +0 -7
- package/dist/builtins/display-palette/display-palette.addon.d.ts +0 -13
- package/dist/builtins/display-palette/display-palette.addon.js +0 -88
- package/dist/builtins/display-palette/display-palette.addon.mjs +0 -82
- package/dist/builtins/display-palette/index.d.ts +0 -1
- package/dist/builtins/display-palette/index.js +0 -8
- 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
|
-
|
|
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("
|
|
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() {
|