@camstack/system 1.2.444 → 1.2.446
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/addon-runner.js +40 -31
- package/dist/addon-runner.mjs +41 -32
- package/dist/{agent-https-DlpTMDqA.js → agent-https-5DYAOJMO.js} +810 -12
- package/dist/{agent-https-U0d4uvn2.mjs → agent-https-BWUEf6ev.mjs} +697 -13
- package/dist/auth/admin-token-manager.d.ts +9 -3
- package/dist/auth/api-key-manager.d.ts +9 -3
- package/dist/auth/auth-audit-log.d.ts +9 -3
- package/dist/auth/device-credential-manager.d.ts +5 -1
- package/dist/auth/external-identity-manager.d.ts +8 -21
- package/dist/auth/login-session-manager.d.ts +11 -3
- package/dist/auth/scoped-token-manager.d.ts +8 -52
- package/dist/auth/totp-manager.d.ts +11 -3
- package/dist/auth/user-manager.d.ts +10 -17
- 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/alert-store.d.ts +32 -0
- package/dist/builtins/alerts/alerts.addon.d.ts +9 -2
- package/dist/builtins/alerts/alerts.addon.js +373 -154
- package/dist/builtins/alerts/alerts.addon.mjs +372 -154
- package/dist/builtins/alerts/critical-push.d.ts +4 -0
- package/dist/builtins/alerts/emit-alert-policy.d.ts +28 -0
- package/dist/builtins/alerts/record-kinds.d.ts +15 -0
- package/dist/builtins/autotrack/index.js +1 -1
- package/dist/builtins/autotrack/index.mjs +1 -1
- package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.d.ts +1 -0
- package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.js +134 -193
- package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.mjs +134 -193
- package/dist/builtins/backup-orchestrator/destination-policy.d.ts +4 -2
- package/dist/builtins/backup-orchestrator/encryption-key-store.d.ts +4 -2
- package/dist/builtins/backup-orchestrator/record-kinds.d.ts +58 -0
- package/dist/builtins/backup-orchestrator/schedule-store.d.ts +4 -2
- package/dist/builtins/backup-orchestrator/seed-marker-store.d.ts +4 -2
- package/dist/builtins/calendars/calendar-prefs-store.d.ts +13 -5
- package/dist/builtins/calendars/calendars.addon.d.ts +2 -2
- package/dist/builtins/calendars/calendars.addon.js +67 -64
- package/dist/builtins/calendars/calendars.addon.mjs +59 -64
- package/dist/builtins/calendars/record-kinds.d.ts +18 -0
- package/dist/builtins/camera-grid/index.js +1 -1
- package/dist/builtins/camera-grid/index.mjs +1 -1
- package/dist/builtins/cluster-agent/record-kinds.d.ts +36 -0
- package/dist/builtins/composer/composer.addon.js +2 -2
- package/dist/builtins/composer/composer.addon.mjs +2 -2
- package/dist/builtins/console-logging/index.js +1 -1
- package/dist/builtins/console-logging/index.mjs +1 -1
- package/dist/builtins/core-blocks/block-settings-store.d.ts +8 -4
- package/dist/builtins/core-blocks/core-block-store.d.ts +8 -16
- package/dist/builtins/core-blocks/core-blocks.addon.js +85 -112
- package/dist/builtins/core-blocks/core-blocks.addon.mjs +86 -113
- package/dist/builtins/core-blocks/index.mjs +1 -1
- package/dist/builtins/core-blocks/record-kinds.d.ts +26 -0
- package/dist/builtins/device-manager/device-manager.addon.js +111 -187
- package/dist/builtins/device-manager/device-manager.addon.mjs +110 -187
- package/dist/builtins/device-manager/device-tombstone-store.d.ts +9 -48
- package/dist/builtins/device-manager/record-kinds.d.ts +14 -0
- package/dist/builtins/hub-forwarder/index.js +1 -1
- package/dist/builtins/hub-forwarder/index.mjs +1 -1
- package/dist/builtins/keychain/index.js +152 -22
- package/dist/builtins/keychain/index.mjs +152 -22
- package/dist/builtins/keychain/keychain-service.d.ts +3 -2
- package/dist/builtins/keychain/keychain-store.d.ts +13 -2
- package/dist/builtins/keychain/record-kinds.d.ts +16 -0
- 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/auth-schema.d.ts +3 -1
- package/dist/builtins/local-auth/local-auth.addon.js +2903 -2123
- package/dist/builtins/local-auth/local-auth.addon.mjs +2904 -2124
- package/dist/builtins/local-auth/oauth-session-manager.d.ts +8 -48
- package/dist/builtins/local-auth/record-kinds.d.ts +141 -0
- 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/records/legacy-table-row-count.d.ts +5 -0
- package/dist/builtins/records/phase6-declare-gate.d.ts +28 -0
- package/dist/builtins/records-isolated.d.ts +10 -0
- 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/integration-record-kinds.d.ts +30 -0
- package/dist/builtins/sqlite-storage/integration-registry.d.ts +10 -16
- package/dist/builtins/sqlite-storage/records/count-settings-array-legacy.d.ts +5 -0
- package/dist/builtins/sqlite-storage/records/count-settings-brokers-legacy.d.ts +6 -0
- package/dist/builtins/sqlite-storage/records/records-engine-types.d.ts +5 -0
- package/dist/builtins/sqlite-storage/records/records-engine.d.ts +4 -0
- package/dist/builtins/sqlite-storage/records/records-provider.d.ts +5 -1
- package/dist/builtins/sqlite-storage/sqlite-settings-backend.d.ts +17 -0
- package/dist/builtins/sqlite-storage/sqlite-settings.addon.js +111 -3
- package/dist/builtins/sqlite-storage/sqlite-settings.addon.mjs +111 -3
- package/dist/builtins/sqlite-storage/storage-admin-provider.d.ts +9 -1
- package/dist/builtins/storage-orchestrator/drain-state-store.d.ts +5 -2
- package/dist/builtins/storage-orchestrator/location-store.d.ts +7 -2
- package/dist/builtins/storage-orchestrator/record-kinds.d.ts +38 -0
- package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.d.ts +2 -0
- package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.js +196 -5
- package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.mjs +195 -6
- package/dist/builtins/system-config/record-kinds.d.ts +32 -0
- package/dist/builtins/system-config/system-config.addon.js +53 -618
- package/dist/builtins/system-config/system-config.addon.mjs +29 -577
- package/dist/builtins/winston-logging/index.js +1 -1
- package/dist/builtins/winston-logging/index.mjs +1 -1
- package/dist/{composition-sources-C3rKncIF.mjs → composition-sources-BmC5jAUv.mjs} +1 -1
- package/dist/{composition-sources-NAPZddic.js → composition-sources-BwIIltnZ.js} +1 -1
- package/dist/{constants-BKX2QnIg.mjs → constants-6XHGmEUF.mjs} +1 -1
- package/dist/{constants-BXiNEIeV.js → constants-DA_tjzIk.js} +1 -1
- package/dist/{device-ca-jxjSL8Ov.mjs → device-ca-Bh_ClxMO.mjs} +1 -1
- package/dist/{device-ca-DT9X2S6d.js → device-ca-CnbrgfmW.js} +1 -1
- package/dist/{dist-D1vECb_6.js → dist-BkNfEJKa.js} +521 -64
- package/dist/{dist-DERK-gP5.mjs → dist-CkZIrsAP.mjs} +462 -65
- package/dist/file-host-worker.js +1 -1
- package/dist/file-host-worker.mjs +1 -1
- package/dist/{hub-mdns-ciao-CRaC97V0.mjs → hub-mdns-ciao-CoyIUWHC.mjs} +2 -2
- package/dist/{hub-mdns-ciao-Cah9GCIg.js → hub-mdns-ciao-m5LIr4oA.js} +2 -2
- package/dist/index.d.ts +7 -0
- package/dist/index.js +3095 -2821
- package/dist/index.mjs +3067 -2810
- package/dist/kernel/index.d.ts +2 -0
- package/dist/kernel/moleculer/event-bus.d.ts +3 -1
- package/dist/kernel/moleculer/mesh-mtls/mesh-certificate-registry.d.ts +5 -1
- package/dist/kernel/moleculer/remote-logger.d.ts +2 -2
- package/dist/kernel/transport/cap-route-resolver.d.ts +9 -38
- package/dist/phase6-declare-gate-BDWZuB2n.mjs +93 -0
- package/dist/phase6-declare-gate-Bl7KocEs.js +98 -0
- package/dist/read-all-rows-CVoO1ONM.js +29 -0
- package/dist/read-all-rows-TaPqdWNF.mjs +25 -0
- package/dist/records/read-all-rows.d.ts +6 -0
- package/dist/{restore-archive-Dy-qKTdF.js → restore-archive-B57xI5Ue.js} +353 -5
- package/dist/{restore-archive-daKyE24F.mjs → restore-archive-CMr4V7Fi.mjs} +339 -9
- package/dist/tls/agent-https-names.d.ts +9 -13
- package/dist/{wal-maintenance-zRc24mOC.mjs → wal-maintenance-Bqm4zrNA.mjs} +0 -0
- package/dist/{wal-maintenance-dAv4IdzC.js → wal-maintenance-CuG1DUca.js} +0 -0
- package/package.json +1 -1
|
@@ -736,7 +736,7 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
736
736
|
return EventCategory;
|
|
737
737
|
}({});
|
|
738
738
|
//#endregion
|
|
739
|
-
//#region ../types/dist/sleep-
|
|
739
|
+
//#region ../types/dist/sleep-BOjuyoPC.mjs
|
|
740
740
|
/**
|
|
741
741
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
742
742
|
* window to float samples (D455).
|
|
@@ -848,21 +848,21 @@ function collectSecretConfigKeys(schema) {
|
|
|
848
848
|
for (const section of sectionsOf(schema)) for (const field of fieldsOf(section)) walkField(field, keys);
|
|
849
849
|
return keys;
|
|
850
850
|
}
|
|
851
|
-
function isRecord$
|
|
851
|
+
function isRecord$6(value) {
|
|
852
852
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
853
853
|
}
|
|
854
854
|
function sectionsOf(schema) {
|
|
855
|
-
if (!isRecord$
|
|
855
|
+
if (!isRecord$6(schema)) return [];
|
|
856
856
|
const sections = schema["sections"];
|
|
857
857
|
return Array.isArray(sections) ? sections : [];
|
|
858
858
|
}
|
|
859
859
|
function fieldsOf(node) {
|
|
860
|
-
if (!isRecord$
|
|
860
|
+
if (!isRecord$6(node)) return [];
|
|
861
861
|
const fields = node["fields"];
|
|
862
862
|
return Array.isArray(fields) ? fields : [];
|
|
863
863
|
}
|
|
864
864
|
function walkField(field, out) {
|
|
865
|
-
if (!isRecord$
|
|
865
|
+
if (!isRecord$6(field)) return;
|
|
866
866
|
const type = field["type"];
|
|
867
867
|
const key = field["key"];
|
|
868
868
|
if ((type === "password" || field["secret"] === true) && typeof key === "string" && key.length > 0) out.add(key);
|
|
@@ -900,7 +900,7 @@ function walkField(field, out) {
|
|
|
900
900
|
var SECRET_CLEAR = { $secretClear: true };
|
|
901
901
|
/** The `'***'` token D634 redaction writes for non-admins. */
|
|
902
902
|
var LEGACY_DEVICE_REDACTION = "***";
|
|
903
|
-
function isRecord$
|
|
903
|
+
function isRecord$5(value) {
|
|
904
904
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
905
905
|
}
|
|
906
906
|
function makeSecretMarker(ref) {
|
|
@@ -911,16 +911,16 @@ function makeSecretMarker(ref) {
|
|
|
911
911
|
}
|
|
912
912
|
/** A stored marker: an object whose `$secret` is a non-empty string. */
|
|
913
913
|
function isSecretMarker(value) {
|
|
914
|
-
if (!isRecord$
|
|
914
|
+
if (!isRecord$5(value)) return false;
|
|
915
915
|
const ref = value["$secret"];
|
|
916
916
|
return typeof ref === "string" && ref.length > 0;
|
|
917
917
|
}
|
|
918
918
|
/** Anything carrying a `$secret` key — a stored marker or a UI view of one. */
|
|
919
919
|
function isSecretMarkerLike(value) {
|
|
920
|
-
return isRecord$
|
|
920
|
+
return isRecord$5(value) && Object.prototype.hasOwnProperty.call(value, "$secret");
|
|
921
921
|
}
|
|
922
922
|
function isSecretClear(value) {
|
|
923
|
-
return isRecord$
|
|
923
|
+
return isRecord$5(value) && value["$secretClear"] === true;
|
|
924
924
|
}
|
|
925
925
|
/**
|
|
926
926
|
* The UI view of a stored secret field value: a marker becomes "set", inline
|
|
@@ -1589,7 +1589,7 @@ var KeychainWriteRefusedError = class extends Error {
|
|
|
1589
1589
|
}
|
|
1590
1590
|
};
|
|
1591
1591
|
var KEEP = { kind: "keep" };
|
|
1592
|
-
function isRecord$
|
|
1592
|
+
function isRecord$4(value) {
|
|
1593
1593
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
1594
1594
|
}
|
|
1595
1595
|
function defaultMintId() {
|
|
@@ -1602,7 +1602,7 @@ function collectSecretMarkerRefs(value, out = []) {
|
|
|
1602
1602
|
return out;
|
|
1603
1603
|
}
|
|
1604
1604
|
if (Array.isArray(value)) for (const item of value) collectSecretMarkerRefs(item, out);
|
|
1605
|
-
else if (isRecord$
|
|
1605
|
+
else if (isRecord$4(value)) for (const child of Object.values(value)) collectSecretMarkerRefs(child, out);
|
|
1606
1606
|
return out;
|
|
1607
1607
|
}
|
|
1608
1608
|
async function storedValueEquals(secrets, marker, candidate) {
|
|
@@ -1657,7 +1657,7 @@ function rowId(row, idKey) {
|
|
|
1657
1657
|
return null;
|
|
1658
1658
|
}
|
|
1659
1659
|
async function writeArray(ctx, node, incoming, stored, fieldPath) {
|
|
1660
|
-
const storedRows = Array.isArray(stored) ? stored.filter(isRecord$
|
|
1660
|
+
const storedRows = Array.isArray(stored) ? stored.filter(isRecord$4) : [];
|
|
1661
1661
|
if (!Array.isArray(incoming)) {
|
|
1662
1662
|
ctx.deletes.push(...collectSecretMarkerRefs(storedRows));
|
|
1663
1663
|
return {
|
|
@@ -1673,7 +1673,7 @@ async function writeArray(ctx, node, incoming, stored, fieldPath) {
|
|
|
1673
1673
|
const kept = /* @__PURE__ */ new Set();
|
|
1674
1674
|
const rows = [];
|
|
1675
1675
|
for (const row of incoming) {
|
|
1676
|
-
if (!isRecord$
|
|
1676
|
+
if (!isRecord$4(row)) {
|
|
1677
1677
|
rows.push(row);
|
|
1678
1678
|
continue;
|
|
1679
1679
|
}
|
|
@@ -1698,7 +1698,7 @@ async function writeNode(ctx, node, incoming, stored, fieldPath) {
|
|
|
1698
1698
|
case "leaf": return writeLeaf(ctx, incoming, stored, fieldPath);
|
|
1699
1699
|
case "array": return writeArray(ctx, node, incoming, stored, fieldPath);
|
|
1700
1700
|
case "object": {
|
|
1701
|
-
if (!isRecord$
|
|
1701
|
+
if (!isRecord$4(incoming)) {
|
|
1702
1702
|
if (incoming === void 0) return KEEP;
|
|
1703
1703
|
ctx.deletes.push(...collectSecretMarkerRefs(stored));
|
|
1704
1704
|
return {
|
|
@@ -1706,7 +1706,7 @@ async function writeNode(ctx, node, incoming, stored, fieldPath) {
|
|
|
1706
1706
|
value: incoming
|
|
1707
1707
|
};
|
|
1708
1708
|
}
|
|
1709
|
-
const storedObj = isRecord$
|
|
1709
|
+
const storedObj = isRecord$4(stored) ? stored : {};
|
|
1710
1710
|
return {
|
|
1711
1711
|
kind: "value",
|
|
1712
1712
|
value: await writeMembers(ctx, node.children, incoming, storedObj, (m) => `${fieldPath}.${m}`)
|
|
@@ -1829,7 +1829,7 @@ async function resolveSecretMarkers(value, secrets, options = {}) {
|
|
|
1829
1829
|
value: items
|
|
1830
1830
|
};
|
|
1831
1831
|
}
|
|
1832
|
-
if (isRecord$
|
|
1832
|
+
if (isRecord$4(v)) {
|
|
1833
1833
|
const out = {};
|
|
1834
1834
|
for (const [k, child] of Object.entries(v)) {
|
|
1835
1835
|
const s = substitute(child);
|
|
@@ -1861,7 +1861,7 @@ var SecretOverwriteRefusedError = class extends Error {
|
|
|
1861
1861
|
this.name = "SecretOverwriteRefusedError";
|
|
1862
1862
|
}
|
|
1863
1863
|
};
|
|
1864
|
-
function isRecord$
|
|
1864
|
+
function isRecord$3(value) {
|
|
1865
1865
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
1866
1866
|
}
|
|
1867
1867
|
function resolvedValue(pass, marker) {
|
|
@@ -1890,7 +1890,7 @@ function inArray(pass, incoming, stored) {
|
|
|
1890
1890
|
return incoming.map((item, index) => {
|
|
1891
1891
|
const twin = stored[index];
|
|
1892
1892
|
if (isSecretMarker(twin)) return typeof item === "string" && item === resolvedValue(pass, twin) ? twin : item;
|
|
1893
|
-
if (isRecord$
|
|
1893
|
+
if (isRecord$3(item) && isRecord$3(twin)) return inArrayRow(pass, item, twin);
|
|
1894
1894
|
if (Array.isArray(item) && Array.isArray(twin)) return inArray(pass, item, twin);
|
|
1895
1895
|
return item;
|
|
1896
1896
|
});
|
|
@@ -1901,7 +1901,7 @@ function inArrayRow(pass, incoming, stored) {
|
|
|
1901
1901
|
const twin = stored[key];
|
|
1902
1902
|
if (isSecretMarker(twin)) {
|
|
1903
1903
|
if (typeof value === "string" && value === resolvedValue(pass, twin)) out[key] = twin;
|
|
1904
|
-
} else if (isRecord$
|
|
1904
|
+
} else if (isRecord$3(value) && isRecord$3(twin)) out[key] = inArrayRow(pass, value, twin);
|
|
1905
1905
|
else if (Array.isArray(value) && Array.isArray(twin)) out[key] = inArray(pass, value, twin);
|
|
1906
1906
|
}
|
|
1907
1907
|
return out;
|
|
@@ -1909,7 +1909,7 @@ function inArrayRow(pass, incoming, stored) {
|
|
|
1909
1909
|
async function walk(pass, incoming, stored) {
|
|
1910
1910
|
if (isSecretMarker(stored)) return atMarker(pass, incoming, stored);
|
|
1911
1911
|
if (Array.isArray(incoming) && Array.isArray(stored)) return inArray(pass, incoming, stored);
|
|
1912
|
-
if (!isRecord$
|
|
1912
|
+
if (!isRecord$3(incoming) || !isRecord$3(stored)) return incoming;
|
|
1913
1913
|
const out = { ...incoming };
|
|
1914
1914
|
for (const [key, value] of Object.entries(incoming)) out[key] = await walk(pass, value, stored[key]);
|
|
1915
1915
|
return out;
|
|
@@ -1940,7 +1940,7 @@ async function restoreUnchangedSecrets(input) {
|
|
|
1940
1940
|
function isJsonEqual(a, b) {
|
|
1941
1941
|
if (Object.is(a, b)) return true;
|
|
1942
1942
|
if (Array.isArray(a)) return Array.isArray(b) && a.length === b.length && a.every((v, i) => isJsonEqual(v, b[i]));
|
|
1943
|
-
if (isRecord$
|
|
1943
|
+
if (isRecord$3(a) && isRecord$3(b)) {
|
|
1944
1944
|
const keys = Object.keys(a);
|
|
1945
1945
|
if (keys.length !== Object.keys(b).length) return false;
|
|
1946
1946
|
return keys.every((k) => Object.prototype.hasOwnProperty.call(b, k) && isJsonEqual(a[k], b[k]));
|
|
@@ -1964,7 +1964,7 @@ function markerKeysOf(blob, owner) {
|
|
|
1964
1964
|
}
|
|
1965
1965
|
function nodeFromStored(value, owner) {
|
|
1966
1966
|
if (isSecretMarker(value)) return isSecretRefOwnedBy(value.$secret, owner) ? { kind: "leaf" } : null;
|
|
1967
|
-
if (!isRecord$
|
|
1967
|
+
if (!isRecord$3(value)) return null;
|
|
1968
1968
|
const children = /* @__PURE__ */ new Map();
|
|
1969
1969
|
for (const [key, child] of Object.entries(value)) {
|
|
1970
1970
|
const node = nodeFromStored(child, owner);
|
|
@@ -2765,7 +2765,7 @@ var BaseAddon = class {
|
|
|
2765
2765
|
if (!ctx) return;
|
|
2766
2766
|
const addonId = ctx.id;
|
|
2767
2767
|
setImmediate(() => {
|
|
2768
|
-
ctx.api.addons
|
|
2768
|
+
ctx.api.addons.restartAddon.mutate({ addonId }).then(() => {
|
|
2769
2769
|
ctx.logger.info("addon auto-restart triggered by restart-required setting change", { meta: { changedFields: patchKeys.filter((k) => restartKeys.has(k)) } });
|
|
2770
2770
|
}).catch((err) => {
|
|
2771
2771
|
ctx.logger.error("addon auto-restart failed", { meta: { error: err instanceof Error ? err.message : String(err) } });
|
|
@@ -3390,7 +3390,11 @@ var BatchTooLargeError = class extends RecordsError {
|
|
|
3390
3390
|
}
|
|
3391
3391
|
};
|
|
3392
3392
|
function defOf(schema) {
|
|
3393
|
-
|
|
3393
|
+
const zodBag = Reflect.get(schema, "_zod");
|
|
3394
|
+
if (typeof zodBag !== "object" || zodBag === null) return {};
|
|
3395
|
+
const def = Reflect.get(zodBag, "def");
|
|
3396
|
+
if (typeof def !== "object" || def === null) return {};
|
|
3397
|
+
return def;
|
|
3394
3398
|
}
|
|
3395
3399
|
function declaredHere(schema) {
|
|
3396
3400
|
return z.globalRegistry.get(schema)?.secret === true;
|
|
@@ -3488,11 +3492,11 @@ function secretArrayPrefixes(path) {
|
|
|
3488
3492
|
}
|
|
3489
3493
|
return prefixes;
|
|
3490
3494
|
}
|
|
3491
|
-
function isRecord$
|
|
3495
|
+
function isRecord$2(value) {
|
|
3492
3496
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
3493
3497
|
}
|
|
3494
3498
|
function elementId(element, idKey, declared, prefix) {
|
|
3495
|
-
const id = isRecord$
|
|
3499
|
+
const id = isRecord$2(element) ? element[idKey] : void 0;
|
|
3496
3500
|
if (typeof id !== "string" || id.length === 0) throw new InvalidRecordError(`"${declared}": every element of "${prefix}" needs a non-empty string "${idKey}" to carry a secret`);
|
|
3497
3501
|
return id;
|
|
3498
3502
|
}
|
|
@@ -3503,7 +3507,7 @@ function elementId(element, idKey, declared, prefix) {
|
|
|
3503
3507
|
*/
|
|
3504
3508
|
var REMOVE_LEAF = Symbol("remove-leaf");
|
|
3505
3509
|
function mapAt(node, segments, index, walkedKeys, concretePrefix, declared, arrayKeys, visit) {
|
|
3506
|
-
if (!isRecord$
|
|
3510
|
+
if (!isRecord$2(node)) return node;
|
|
3507
3511
|
const segment = segments[index];
|
|
3508
3512
|
if (segment === void 0) return node;
|
|
3509
3513
|
if (!Object.prototype.hasOwnProperty.call(node, segment.key)) return node;
|
|
@@ -3673,6 +3677,87 @@ function assertValidDeclaration(name, decl) {
|
|
|
3673
3677
|
if (decl.deviceRemoval === "delete" && decl.device === "none") refuse("deviceRemoval: \"delete\" needs a device: \"required\" or \"optional\"");
|
|
3674
3678
|
for (const path of decl.secretPaths) for (const prefix of secretArrayPrefixes(path)) if (decl.secretArrayKeys[prefix] === void 0) refuse(`secret path "${path}" crosses the array "${prefix}": declare its id key in secretArrayKeys`);
|
|
3675
3679
|
}
|
|
3680
|
+
function bodyFieldsOf(schema) {
|
|
3681
|
+
return { ...z.toJSONSchema(schema, {
|
|
3682
|
+
unrepresentable: "any",
|
|
3683
|
+
io: "input"
|
|
3684
|
+
}) };
|
|
3685
|
+
}
|
|
3686
|
+
function isRecordLike(value) {
|
|
3687
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
3688
|
+
}
|
|
3689
|
+
/** Does every branch of the body schema carry `field`? (A discriminated union has several.) */
|
|
3690
|
+
function hasNameField(json, field) {
|
|
3691
|
+
const branches = json["oneOf"] ?? json["anyOf"];
|
|
3692
|
+
if (Array.isArray(branches)) return branches.length > 0 && branches.every((b) => isRecordLike(b) && hasNameField(b, field));
|
|
3693
|
+
const properties = json["properties"];
|
|
3694
|
+
return isRecordLike(properties) && Object.prototype.hasOwnProperty.call(properties, field);
|
|
3695
|
+
}
|
|
3696
|
+
/**
|
|
3697
|
+
* Declare the kinds of a package. The keys are the kind names. The result is
|
|
3698
|
+
* what `ctx.records.declare` sends to the engine and what `ctx.records.kind`
|
|
3699
|
+
* types its handle from.
|
|
3700
|
+
*/
|
|
3701
|
+
function defineRecordKinds(specs) {
|
|
3702
|
+
const out = {};
|
|
3703
|
+
for (const [name, spec] of Object.entries(specs)) {
|
|
3704
|
+
const secretPaths = collectZodSecretPaths(spec.schema);
|
|
3705
|
+
const nameField = spec.entry?.nameField ?? "name";
|
|
3706
|
+
const fields = bodyFieldsOf(spec.schema);
|
|
3707
|
+
if (spec.entry !== void 0 && !hasNameField(fields, nameField)) throw new DeclarationRefusedError(`kind "${name}": an entry kind's schema needs a "${nameField}" field`);
|
|
3708
|
+
const parsed = RecordKindDeclarationSchema.parse({
|
|
3709
|
+
database: spec.database,
|
|
3710
|
+
class: spec.class,
|
|
3711
|
+
writeTrigger: spec.writeTrigger,
|
|
3712
|
+
device: spec.device,
|
|
3713
|
+
at: spec.at,
|
|
3714
|
+
indexes: spec.indexes === void 0 ? void 0 : [...spec.indexes],
|
|
3715
|
+
retention: spec.retention,
|
|
3716
|
+
deviceRemoval: spec.deviceRemoval,
|
|
3717
|
+
maxDataBytes: spec.maxDataBytes,
|
|
3718
|
+
secretPaths: [...secretPaths],
|
|
3719
|
+
secretArrayKeys: spec.secretArrayKeys === void 0 ? void 0 : { ...spec.secretArrayKeys },
|
|
3720
|
+
adoptsFrom: spec.adoptsFrom,
|
|
3721
|
+
transactFamily: spec.transactFamily,
|
|
3722
|
+
entry: spec.entry === void 0 ? void 0 : {
|
|
3723
|
+
title: spec.entry.title,
|
|
3724
|
+
nameField,
|
|
3725
|
+
fields
|
|
3726
|
+
}
|
|
3727
|
+
});
|
|
3728
|
+
assertValidDeclaration(name, parsed);
|
|
3729
|
+
out[name] = {
|
|
3730
|
+
name,
|
|
3731
|
+
schema: spec.schema,
|
|
3732
|
+
declaration: parsed
|
|
3733
|
+
};
|
|
3734
|
+
}
|
|
3735
|
+
return out;
|
|
3736
|
+
}
|
|
3737
|
+
/** The wire form of a package's kinds: name -> declaration. */
|
|
3738
|
+
function declarationsOf(kinds) {
|
|
3739
|
+
return Object.fromEntries(Object.entries(kinds).map(([name, kind]) => [name, kind.declaration]));
|
|
3740
|
+
}
|
|
3741
|
+
/** When non-null, `from` names an addon-settings brokers blob, not a SQL table. */
|
|
3742
|
+
function parseSettingsBrokersAdoptsFrom(from) {
|
|
3743
|
+
if (!from.startsWith("@settings-brokers/")) return null;
|
|
3744
|
+
const addonId = from.slice(18);
|
|
3745
|
+
return addonId.length > 0 ? addonId : null;
|
|
3746
|
+
}
|
|
3747
|
+
/** When non-null, `from` names an addon-settings array blob, not a SQL table. */
|
|
3748
|
+
function parseSettingsArrayAdoptsFrom(from) {
|
|
3749
|
+
if (!from.startsWith("@settings-array/")) return null;
|
|
3750
|
+
const rest = from.slice(16);
|
|
3751
|
+
const slash = rest.indexOf("/");
|
|
3752
|
+
if (slash <= 0 || slash >= rest.length - 1) return null;
|
|
3753
|
+
const addonId = rest.slice(0, slash);
|
|
3754
|
+
const settingsKey = rest.slice(slash + 1);
|
|
3755
|
+
if (addonId.length === 0 || settingsKey.length === 0) return null;
|
|
3756
|
+
return {
|
|
3757
|
+
addonId,
|
|
3758
|
+
settingsKey
|
|
3759
|
+
};
|
|
3760
|
+
}
|
|
3676
3761
|
/** Shared Zod schemas used across streaming capabilities. */
|
|
3677
3762
|
var CamProfileSchema = z.enum([
|
|
3678
3763
|
"high",
|
|
@@ -4682,6 +4767,29 @@ function customAction(input, output, options) {
|
|
|
4682
4767
|
...options?.caller ? { caller: "required" } : {}
|
|
4683
4768
|
};
|
|
4684
4769
|
}
|
|
4770
|
+
/**
|
|
4771
|
+
* Every cap whose provider reads a `callerAddonId` in its input (the keychain's
|
|
4772
|
+
* owner check, device-history's `not-owner`, records' owner).
|
|
4773
|
+
*
|
|
4774
|
+
* The stamp is set ONLY by the transport (`stampCallerAddonId`, or stated by a
|
|
4775
|
+
* hub in-process caller). HTTP/WS mounts parse input with `.loose()`, so a
|
|
4776
|
+
* session could add the key itself and act as another addon — those procedures
|
|
4777
|
+
* strip it when `ctx.req` is present. Mesh / `$core-caps` calls have no request;
|
|
4778
|
+
* the transport stamp must survive to the provider.
|
|
4779
|
+
*/
|
|
4780
|
+
var CALLER_STAMPED_CAPABILITIES = [
|
|
4781
|
+
"keychain",
|
|
4782
|
+
"device-history",
|
|
4783
|
+
"records",
|
|
4784
|
+
"integrations",
|
|
4785
|
+
"device-manager"
|
|
4786
|
+
];
|
|
4787
|
+
/** A copy of `input` without the caller stamp. Anything that is not a plain object passes through. */
|
|
4788
|
+
function withoutCallerStamp(input) {
|
|
4789
|
+
if (input === null || typeof input !== "object" || Array.isArray(input)) return input;
|
|
4790
|
+
if (!Object.prototype.hasOwnProperty.call(input, "callerAddonId")) return input;
|
|
4791
|
+
return Object.fromEntries(Object.entries(input).filter(([key]) => key !== "callerAddonId"));
|
|
4792
|
+
}
|
|
4685
4793
|
var StaticDirOutputSchema = z.object({ staticDir: z.string() });
|
|
4686
4794
|
var VersionOutputSchema = z.object({ version: z.string() });
|
|
4687
4795
|
/**
|
|
@@ -4969,7 +5077,7 @@ function sleep(ms) {
|
|
|
4969
5077
|
return new Promise((resolve) => setTimeout(resolve, Math.max(0, ms)));
|
|
4970
5078
|
}
|
|
4971
5079
|
//#endregion
|
|
4972
|
-
//#region ../types/dist/err-msg
|
|
5080
|
+
//#region ../types/dist/err-msg-BXKzRBwg.mjs
|
|
4973
5081
|
var DeviceType = /* @__PURE__ */ function(DeviceType) {
|
|
4974
5082
|
DeviceType["Camera"] = "camera";
|
|
4975
5083
|
DeviceType["Hub"] = "hub";
|
|
@@ -5061,6 +5169,10 @@ var DeviceType = /* @__PURE__ */ function(DeviceType) {
|
|
|
5061
5169
|
* native PetKit (`nodepetkit` `FeederDevice`), reusable by other feeder
|
|
5062
5170
|
* integrations sharing the same food/desiccant/hopper surface. */
|
|
5063
5171
|
DeviceType["PetFeeder"] = "pet-feeder";
|
|
5172
|
+
/** Built-in dishwasher — program lifecycle, door / remote-start gates,
|
|
5173
|
+
* salt and rinse-aid levels. Installed with the `dishwasher` cap.
|
|
5174
|
+
* Sources: native Bosch Home Connect, reusable by similar integrations. */
|
|
5175
|
+
DeviceType["Dishwasher"] = "dishwasher";
|
|
5064
5176
|
return DeviceType;
|
|
5065
5177
|
}({});
|
|
5066
5178
|
var DeviceFeature = /* @__PURE__ */ function(DeviceFeature) {
|
|
@@ -5318,7 +5430,7 @@ function errMsg(err) {
|
|
|
5318
5430
|
return String(err);
|
|
5319
5431
|
}
|
|
5320
5432
|
//#endregion
|
|
5321
|
-
//#region ../types/dist/composition-
|
|
5433
|
+
//#region ../types/dist/composition-CB6PMT9p.mjs
|
|
5322
5434
|
var AUDIO_ENCODER_BY_CODEC = {
|
|
5323
5435
|
opus: "libopus",
|
|
5324
5436
|
aac: "aac",
|
|
@@ -11148,8 +11260,13 @@ var AlertSeveritySchema = z.enum([
|
|
|
11148
11260
|
"info",
|
|
11149
11261
|
"success",
|
|
11150
11262
|
"warning",
|
|
11151
|
-
"error"
|
|
11263
|
+
"error",
|
|
11264
|
+
"critical"
|
|
11152
11265
|
]);
|
|
11266
|
+
var AlertActionSchema = z.object({
|
|
11267
|
+
label: z.string(),
|
|
11268
|
+
href: z.string().optional()
|
|
11269
|
+
});
|
|
11153
11270
|
var AlertStatusSchema = z.enum([
|
|
11154
11271
|
"active",
|
|
11155
11272
|
"in-progress",
|
|
@@ -11167,6 +11284,7 @@ var AlertSchema = z.object({
|
|
|
11167
11284
|
severity: AlertSeveritySchema,
|
|
11168
11285
|
title: z.string(),
|
|
11169
11286
|
message: z.string(),
|
|
11287
|
+
action: AlertActionSchema.optional(),
|
|
11170
11288
|
status: AlertStatusSchema,
|
|
11171
11289
|
progress: z.number().optional(),
|
|
11172
11290
|
read: z.boolean(),
|
|
@@ -16673,28 +16791,6 @@ id: z.union([z.string(), z.number()]) }), {
|
|
|
16673
16791
|
}
|
|
16674
16792
|
};
|
|
16675
16793
|
/**
|
|
16676
|
-
* Every cap whose provider reads a `callerAddonId` in its input (the keychain's
|
|
16677
|
-
* owner check, device-history's `not-owner`, records' owner).
|
|
16678
|
-
*
|
|
16679
|
-
* The stamp is set ONLY by the transport (`stampCallerAddonId`, or stated by a
|
|
16680
|
-
* hub in-process caller). The generated HTTP/tRPC mount parses input with
|
|
16681
|
-
* `.loose()`, so without this a session could add the key itself and act as
|
|
16682
|
-
* another addon. The mount strips it for these caps.
|
|
16683
|
-
*/
|
|
16684
|
-
var CALLER_STAMPED_CAPABILITIES = [
|
|
16685
|
-
"keychain",
|
|
16686
|
-
"device-history",
|
|
16687
|
-
"records",
|
|
16688
|
-
"integrations",
|
|
16689
|
-
"device-manager"
|
|
16690
|
-
];
|
|
16691
|
-
/** A copy of `input` without the caller stamp. Anything that is not a plain object passes through. */
|
|
16692
|
-
function withoutCallerStamp(input) {
|
|
16693
|
-
if (input === null || typeof input !== "object" || Array.isArray(input)) return input;
|
|
16694
|
-
if (!Object.prototype.hasOwnProperty.call(input, "callerAddonId")) return input;
|
|
16695
|
-
return Object.fromEntries(Object.entries(input).filter(([key]) => key !== "callerAddonId"));
|
|
16696
|
-
}
|
|
16697
|
-
/**
|
|
16698
16794
|
* records - an addon's own facts and documents (D881): ledgers, audit rows,
|
|
16699
16795
|
* config documents, mirrors. The third storage API next to `ctx.settings`
|
|
16700
16796
|
* (operator intent, D870) and device-history (numbers over time, D850).
|
|
@@ -17078,13 +17174,31 @@ var storageAdminCapability = {
|
|
|
17078
17174
|
adoptRecords: method(z.object({
|
|
17079
17175
|
owner: z.string().min(1),
|
|
17080
17176
|
kind: RecordKindNameSchema,
|
|
17081
|
-
records: z.array(RecordInputSchema).
|
|
17177
|
+
records: z.array(RecordInputSchema).max(RECORD_BATCH_MAX),
|
|
17082
17178
|
/** The LAST batch: the copy is complete, the boot guard stops asking. */
|
|
17083
17179
|
complete: z.boolean().optional()
|
|
17084
|
-
}), z.object({ adopted: z.number().int() }), {
|
|
17180
|
+
}).refine((input) => input.records.length > 0 || input.complete === true, { message: "records must be non-empty unless complete is true" }), z.object({ adopted: z.number().int() }), {
|
|
17085
17181
|
kind: "mutation",
|
|
17086
17182
|
auth: "admin"
|
|
17087
|
-
})
|
|
17183
|
+
}),
|
|
17184
|
+
/**
|
|
17185
|
+
* Read rows from a legacy KV table by physical name, without a running
|
|
17186
|
+
* `declareCollection`. Used by `records-adopt.ts` when the owner already
|
|
17187
|
+
* moved to records and the collection door refuses the name.
|
|
17188
|
+
*/
|
|
17189
|
+
readLegacyCollection: method(z.object({
|
|
17190
|
+
collection: z.string().min(1),
|
|
17191
|
+
cursor: z.string().optional(),
|
|
17192
|
+
limit: z.number().int().min(1).max(1e3).optional()
|
|
17193
|
+
}), z.object({
|
|
17194
|
+
rows: z.array(z.object({
|
|
17195
|
+
id: z.string(),
|
|
17196
|
+
data: z.record(z.string(), z.unknown())
|
|
17197
|
+
})),
|
|
17198
|
+
nextCursor: z.string().nullable()
|
|
17199
|
+
}), { auth: "admin" }),
|
|
17200
|
+
/** True when a declared kind lists `collection` as `adoptsFrom` and adoption finished. */
|
|
17201
|
+
isAdoptedLegacyTable: method(z.object({ collection: z.string().min(1) }), z.object({ adopted: z.boolean() }), { auth: "admin" })
|
|
17088
17202
|
}
|
|
17089
17203
|
};
|
|
17090
17204
|
/**
|
|
@@ -59349,7 +59463,8 @@ var batteryCapability = {
|
|
|
59349
59463
|
DeviceType.Button,
|
|
59350
59464
|
DeviceType.Switch,
|
|
59351
59465
|
DeviceType.PetFeeder,
|
|
59352
|
-
DeviceType.Container
|
|
59466
|
+
DeviceType.Container,
|
|
59467
|
+
DeviceType.Thermostat
|
|
59353
59468
|
],
|
|
59354
59469
|
methods: {
|
|
59355
59470
|
/**
|
|
@@ -60973,6 +61088,125 @@ onStatusChanged: { data: z.object({
|
|
|
60973
61088
|
* whether persisting is worth a SQLite commit. */
|
|
60974
61089
|
volatileStateFields: ["lastChangedAt"]
|
|
60975
61090
|
};
|
|
61091
|
+
/**
|
|
61092
|
+
* Smart-dishwasher cap — program lifecycle, door / remote-start gates,
|
|
61093
|
+
* consumable levels (salt, rinse aid) and common program options.
|
|
61094
|
+
*
|
|
61095
|
+
* Sources: native Bosch Home Connect (`dishwasher` device type). Reusable
|
|
61096
|
+
* by any integration that exposes the same program / option surface.
|
|
61097
|
+
*
|
|
61098
|
+
* `kind: 'poll'` — cloud REST APIs typically have no push channel; the
|
|
61099
|
+
* provider refreshes the slice on an interval and eagerly after commands.
|
|
61100
|
+
*/
|
|
61101
|
+
var DishwasherStateSchema = z.enum([
|
|
61102
|
+
"idle",
|
|
61103
|
+
"running",
|
|
61104
|
+
"paused",
|
|
61105
|
+
"finished",
|
|
61106
|
+
"error",
|
|
61107
|
+
"unavailable"
|
|
61108
|
+
]);
|
|
61109
|
+
var DishwasherConsumableLevelSchema = z.enum([
|
|
61110
|
+
"ok",
|
|
61111
|
+
"low",
|
|
61112
|
+
"empty"
|
|
61113
|
+
]);
|
|
61114
|
+
var DishwasherStatusSchema = z.object({
|
|
61115
|
+
state: DishwasherStateSchema,
|
|
61116
|
+
/** Active program id/name, or null when none selected / unknown. */
|
|
61117
|
+
program: z.string().nullable(),
|
|
61118
|
+
/** Program tokens the hardware accepts — drives the UI selector. */
|
|
61119
|
+
availablePrograms: z.array(z.string()),
|
|
61120
|
+
/** Minutes remaining on the active cycle, or null when not running. */
|
|
61121
|
+
remainingMinutes: z.number().int().nonnegative().nullable(),
|
|
61122
|
+
/** Cycle completion 0..100, or null when not applicable. */
|
|
61123
|
+
progressPercent: z.number().min(0).max(100).nullable(),
|
|
61124
|
+
/** True when the door is reported open. */
|
|
61125
|
+
doorOpen: z.boolean(),
|
|
61126
|
+
/** True when remote start is allowed (door closed, power on, etc.). */
|
|
61127
|
+
remoteStartAllowed: z.boolean(),
|
|
61128
|
+
/** Main power / switched-on state. */
|
|
61129
|
+
powerOn: z.boolean(),
|
|
61130
|
+
saltLevel: DishwasherConsumableLevelSchema.nullable(),
|
|
61131
|
+
rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
|
|
61132
|
+
halfLoad: z.boolean(),
|
|
61133
|
+
hygienePlus: z.boolean(),
|
|
61134
|
+
errorCode: z.number().nullable(),
|
|
61135
|
+
errorLabel: z.string().nullable(),
|
|
61136
|
+
lastFetchedAt: z.number()
|
|
61137
|
+
});
|
|
61138
|
+
var dishwasherCapability = {
|
|
61139
|
+
name: "dishwasher",
|
|
61140
|
+
scope: "device",
|
|
61141
|
+
deviceNative: true,
|
|
61142
|
+
mode: "singleton",
|
|
61143
|
+
deviceTypes: [DeviceType.Dishwasher],
|
|
61144
|
+
methods: {
|
|
61145
|
+
start: method(z.object({ deviceId: z.number().int().nonnegative() }), z.void(), {
|
|
61146
|
+
kind: "mutation",
|
|
61147
|
+
auth: "protected"
|
|
61148
|
+
}),
|
|
61149
|
+
pause: method(z.object({ deviceId: z.number().int().nonnegative() }), z.void(), {
|
|
61150
|
+
kind: "mutation",
|
|
61151
|
+
auth: "protected"
|
|
61152
|
+
}),
|
|
61153
|
+
stop: method(z.object({ deviceId: z.number().int().nonnegative() }), z.void(), {
|
|
61154
|
+
kind: "mutation",
|
|
61155
|
+
auth: "protected"
|
|
61156
|
+
}),
|
|
61157
|
+
setProgram: method(z.object({
|
|
61158
|
+
deviceId: z.number().int().nonnegative(),
|
|
61159
|
+
program: z.string().min(1)
|
|
61160
|
+
}), z.void(), {
|
|
61161
|
+
kind: "mutation",
|
|
61162
|
+
auth: "protected"
|
|
61163
|
+
}),
|
|
61164
|
+
setPower: method(z.object({
|
|
61165
|
+
deviceId: z.number().int().nonnegative(),
|
|
61166
|
+
on: z.boolean()
|
|
61167
|
+
}), z.void(), {
|
|
61168
|
+
kind: "mutation",
|
|
61169
|
+
auth: "protected"
|
|
61170
|
+
}),
|
|
61171
|
+
setHalfLoad: method(z.object({
|
|
61172
|
+
deviceId: z.number().int().nonnegative(),
|
|
61173
|
+
on: z.boolean()
|
|
61174
|
+
}), z.void(), {
|
|
61175
|
+
kind: "mutation",
|
|
61176
|
+
auth: "protected"
|
|
61177
|
+
}),
|
|
61178
|
+
setHygienePlus: method(z.object({
|
|
61179
|
+
deviceId: z.number().int().nonnegative(),
|
|
61180
|
+
on: z.boolean()
|
|
61181
|
+
}), z.void(), {
|
|
61182
|
+
kind: "mutation",
|
|
61183
|
+
auth: "protected"
|
|
61184
|
+
}),
|
|
61185
|
+
setOption: method(z.object({
|
|
61186
|
+
deviceId: z.number().int().nonnegative(),
|
|
61187
|
+
key: z.string().min(1),
|
|
61188
|
+
value: z.union([
|
|
61189
|
+
z.boolean(),
|
|
61190
|
+
z.string(),
|
|
61191
|
+
z.number()
|
|
61192
|
+
])
|
|
61193
|
+
}), z.void(), {
|
|
61194
|
+
kind: "mutation",
|
|
61195
|
+
auth: "protected"
|
|
61196
|
+
})
|
|
61197
|
+
},
|
|
61198
|
+
status: {
|
|
61199
|
+
schema: DishwasherStatusSchema,
|
|
61200
|
+
kind: "poll"
|
|
61201
|
+
},
|
|
61202
|
+
runtimeState: DishwasherStatusSchema,
|
|
61203
|
+
durability: "session",
|
|
61204
|
+
history: { fields: { progressPercent: {
|
|
61205
|
+
kind: "gauge",
|
|
61206
|
+
unit: "%",
|
|
61207
|
+
deadband: 2
|
|
61208
|
+
} } }
|
|
61209
|
+
};
|
|
60976
61210
|
var DoorbellStatusSchema = z.object({
|
|
60977
61211
|
/** Ms epoch of the last press. null = never observed since this provider started. */
|
|
60978
61212
|
lastPressedAt: z.number().nullable(),
|
|
@@ -61814,6 +62048,32 @@ var gasCapability = {
|
|
|
61814
62048
|
* whether persisting is worth a SQLite commit. */
|
|
61815
62049
|
volatileStateFields: ["lastChangedAt"]
|
|
61816
62050
|
};
|
|
62051
|
+
var HeatingValveStatusSchema = z.object({
|
|
62052
|
+
/** Radiator valve opening 0 (closed) .. 100 (open). Null = not yet known. */
|
|
62053
|
+
position: z.number().min(0).max(100).nullable(),
|
|
62054
|
+
/** Ms epoch when the slice was last updated (push or poll). */
|
|
62055
|
+
lastFetchedAt: z.number()
|
|
62056
|
+
});
|
|
62057
|
+
var heatingValveCapability = {
|
|
62058
|
+
name: "heating-valve",
|
|
62059
|
+
scope: "device",
|
|
62060
|
+
deviceNative: true,
|
|
62061
|
+
mode: "singleton",
|
|
62062
|
+
deviceTypes: [DeviceType.Thermostat],
|
|
62063
|
+
methods: {},
|
|
62064
|
+
status: {
|
|
62065
|
+
schema: HeatingValveStatusSchema,
|
|
62066
|
+
kind: "push"
|
|
62067
|
+
},
|
|
62068
|
+
runtimeState: HeatingValveStatusSchema,
|
|
62069
|
+
durability: "session",
|
|
62070
|
+
history: { fields: { position: {
|
|
62071
|
+
kind: "gauge",
|
|
62072
|
+
unit: "%",
|
|
62073
|
+
deadband: 1
|
|
62074
|
+
} } },
|
|
62075
|
+
volatileStateFields: ["lastFetchedAt"]
|
|
62076
|
+
};
|
|
61817
62077
|
/**
|
|
61818
62078
|
* Humidifier / dehumidifier cap. Models HA `humidifier.*` entities —
|
|
61819
62079
|
* an on/off actuator with an optional target-humidity setpoint and an
|
|
@@ -73325,6 +73585,7 @@ var DEVICE_LOCAL_STATE_CAPS = {
|
|
|
73325
73585
|
dayNight: dayNightCapability,
|
|
73326
73586
|
deviceDiscovery: deviceDiscoveryCapability,
|
|
73327
73587
|
deviceStatus: deviceStatusCapability,
|
|
73588
|
+
dishwasher: dishwasherCapability,
|
|
73328
73589
|
doorbell: doorbellCapability,
|
|
73329
73590
|
enumSensor: enumSensorCapability,
|
|
73330
73591
|
eventEmitter: eventEmitterCapability,
|
|
@@ -73332,6 +73593,7 @@ var DEVICE_LOCAL_STATE_CAPS = {
|
|
|
73332
73593
|
featureProbe: featureProbeCapability,
|
|
73333
73594
|
flood: floodCapability,
|
|
73334
73595
|
gas: gasCapability,
|
|
73596
|
+
heatingValve: heatingValveCapability,
|
|
73335
73597
|
humidifier: humidifierCapability,
|
|
73336
73598
|
humiditySensor: humiditySensorCapability,
|
|
73337
73599
|
image: imageCapability,
|
|
@@ -73417,13 +73679,14 @@ var BaseDevice = class {
|
|
|
73417
73679
|
get state() {
|
|
73418
73680
|
if (!this._stateProxyCache) {
|
|
73419
73681
|
const cache = {};
|
|
73420
|
-
const handler = { get: (
|
|
73682
|
+
const handler = { get: (target, key) => {
|
|
73421
73683
|
const k = key;
|
|
73422
|
-
|
|
73684
|
+
const existing = Reflect.get(target, k);
|
|
73685
|
+
if (existing !== void 0) return existing;
|
|
73423
73686
|
const cap = DEVICE_LOCAL_STATE_CAPS[k];
|
|
73424
73687
|
if (!cap) return void 0;
|
|
73425
73688
|
const proxy = this.sliceProxy(cap);
|
|
73426
|
-
|
|
73689
|
+
Reflect.set(target, k, proxy);
|
|
73427
73690
|
return proxy;
|
|
73428
73691
|
} };
|
|
73429
73692
|
this._stateProxyCache = new Proxy(cache, handler);
|
|
@@ -73622,7 +73885,7 @@ var BaseDevice = class {
|
|
|
73622
73885
|
async updateSourceInfo(patch) {
|
|
73623
73886
|
const next = mergeSourceInfo(this.sourceInfo, patch);
|
|
73624
73887
|
this._sourceInfoCache = Object.freeze({ ...next });
|
|
73625
|
-
const action = this.ctx.api
|
|
73888
|
+
const action = this.ctx.api.deviceManager?.setMetadata;
|
|
73626
73889
|
if (action) try {
|
|
73627
73890
|
await action.mutate({
|
|
73628
73891
|
deviceId: this.id,
|
|
@@ -73657,7 +73920,7 @@ var BaseDevice = class {
|
|
|
73657
73920
|
* device boot on a meta refresh.
|
|
73658
73921
|
*/
|
|
73659
73922
|
async refreshFeatures() {
|
|
73660
|
-
const action = this.ctx.api
|
|
73923
|
+
const action = this.ctx.api.deviceManager?.registerDevice;
|
|
73661
73924
|
if (!action) return;
|
|
73662
73925
|
try {
|
|
73663
73926
|
await action.mutate({
|
|
@@ -74365,7 +74628,7 @@ var DeclaredDevices = class {
|
|
|
74365
74628
|
return removed;
|
|
74366
74629
|
}
|
|
74367
74630
|
};
|
|
74368
|
-
DeviceType.Cover, DeviceType.Valve, DeviceType.Humidifier, DeviceType.WaterHeater, DeviceType.Camera, DeviceType.Hub, DeviceType.Switch, DeviceType.Siren, DeviceType.Light, DeviceType.Fan, DeviceType.Sensor, DeviceType.Thermostat, DeviceType.Climate, DeviceType.Button, DeviceType.EventEmitter, DeviceType.Update, DeviceType.Generic, DeviceType.Notifier, DeviceType.Script, DeviceType.Automation, DeviceType.Lock, DeviceType.MediaPlayer, DeviceType.AlarmPanel, DeviceType.Control, DeviceType.Presence, DeviceType.Weather, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.Container, DeviceType.Image, DeviceType.PetFeeder;
|
|
74631
|
+
DeviceType.Cover, DeviceType.Valve, DeviceType.Humidifier, DeviceType.WaterHeater, DeviceType.Camera, DeviceType.Hub, DeviceType.Switch, DeviceType.Siren, DeviceType.Light, DeviceType.Fan, DeviceType.Sensor, DeviceType.Thermostat, DeviceType.Climate, DeviceType.Button, DeviceType.EventEmitter, DeviceType.Update, DeviceType.Generic, DeviceType.Notifier, DeviceType.Script, DeviceType.Automation, DeviceType.Lock, DeviceType.MediaPlayer, DeviceType.AlarmPanel, DeviceType.Control, DeviceType.Presence, DeviceType.Weather, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.Container, DeviceType.Image, DeviceType.PetFeeder, DeviceType.Dishwasher;
|
|
74369
74632
|
new Set(Object.values(DeviceType));
|
|
74370
74633
|
var METHOD_ACCESS_MAP = Object.freeze({
|
|
74371
74634
|
"accessories.getStatus": {
|
|
@@ -76786,6 +77049,60 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
76786
77049
|
addonId: null,
|
|
76787
77050
|
access: "view"
|
|
76788
77051
|
},
|
|
77052
|
+
"dishwasher.getStatus": {
|
|
77053
|
+
capName: "dishwasher",
|
|
77054
|
+
capScope: "device",
|
|
77055
|
+
addonId: null,
|
|
77056
|
+
access: "view"
|
|
77057
|
+
},
|
|
77058
|
+
"dishwasher.pause": {
|
|
77059
|
+
capName: "dishwasher",
|
|
77060
|
+
capScope: "device",
|
|
77061
|
+
addonId: null,
|
|
77062
|
+
access: "create"
|
|
77063
|
+
},
|
|
77064
|
+
"dishwasher.setHalfLoad": {
|
|
77065
|
+
capName: "dishwasher",
|
|
77066
|
+
capScope: "device",
|
|
77067
|
+
addonId: null,
|
|
77068
|
+
access: "create"
|
|
77069
|
+
},
|
|
77070
|
+
"dishwasher.setHygienePlus": {
|
|
77071
|
+
capName: "dishwasher",
|
|
77072
|
+
capScope: "device",
|
|
77073
|
+
addonId: null,
|
|
77074
|
+
access: "create"
|
|
77075
|
+
},
|
|
77076
|
+
"dishwasher.setOption": {
|
|
77077
|
+
capName: "dishwasher",
|
|
77078
|
+
capScope: "device",
|
|
77079
|
+
addonId: null,
|
|
77080
|
+
access: "create"
|
|
77081
|
+
},
|
|
77082
|
+
"dishwasher.setPower": {
|
|
77083
|
+
capName: "dishwasher",
|
|
77084
|
+
capScope: "device",
|
|
77085
|
+
addonId: null,
|
|
77086
|
+
access: "create"
|
|
77087
|
+
},
|
|
77088
|
+
"dishwasher.setProgram": {
|
|
77089
|
+
capName: "dishwasher",
|
|
77090
|
+
capScope: "device",
|
|
77091
|
+
addonId: null,
|
|
77092
|
+
access: "create"
|
|
77093
|
+
},
|
|
77094
|
+
"dishwasher.start": {
|
|
77095
|
+
capName: "dishwasher",
|
|
77096
|
+
capScope: "device",
|
|
77097
|
+
addonId: null,
|
|
77098
|
+
access: "create"
|
|
77099
|
+
},
|
|
77100
|
+
"dishwasher.stop": {
|
|
77101
|
+
capName: "dishwasher",
|
|
77102
|
+
capScope: "device",
|
|
77103
|
+
addonId: null,
|
|
77104
|
+
access: "create"
|
|
77105
|
+
},
|
|
76789
77106
|
"doorbell.getStatus": {
|
|
76790
77107
|
capName: "doorbell",
|
|
76791
77108
|
capScope: "device",
|
|
@@ -76996,6 +77313,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
76996
77313
|
addonId: null,
|
|
76997
77314
|
access: "view"
|
|
76998
77315
|
},
|
|
77316
|
+
"heatingValve.getStatus": {
|
|
77317
|
+
capName: "heating-valve",
|
|
77318
|
+
capScope: "device",
|
|
77319
|
+
addonId: null,
|
|
77320
|
+
access: "view"
|
|
77321
|
+
},
|
|
76999
77322
|
"humidifier.getStatus": {
|
|
77000
77323
|
capName: "humidifier",
|
|
77001
77324
|
capScope: "device",
|
|
@@ -81136,6 +81459,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
81136
81459
|
addonId: null,
|
|
81137
81460
|
access: "delete"
|
|
81138
81461
|
},
|
|
81462
|
+
"storageAdmin.isAdoptedLegacyTable": {
|
|
81463
|
+
capName: "storage-admin",
|
|
81464
|
+
capScope: "system",
|
|
81465
|
+
addonId: null,
|
|
81466
|
+
access: "view"
|
|
81467
|
+
},
|
|
81139
81468
|
"storageAdmin.listKinds": {
|
|
81140
81469
|
capName: "storage-admin",
|
|
81141
81470
|
capScope: "system",
|
|
@@ -81148,6 +81477,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
81148
81477
|
addonId: null,
|
|
81149
81478
|
access: "view"
|
|
81150
81479
|
},
|
|
81480
|
+
"storageAdmin.readLegacyCollection": {
|
|
81481
|
+
capName: "storage-admin",
|
|
81482
|
+
capScope: "system",
|
|
81483
|
+
addonId: null,
|
|
81484
|
+
access: "view"
|
|
81485
|
+
},
|
|
81151
81486
|
"storageAdmin.readRecords": {
|
|
81152
81487
|
capName: "storage-admin",
|
|
81153
81488
|
capScope: "system",
|
|
@@ -82571,7 +82906,7 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
82571
82906
|
access: "create"
|
|
82572
82907
|
}
|
|
82573
82908
|
});
|
|
82574
|
-
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;
|
|
82909
|
+
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;
|
|
82575
82910
|
DeviceFeature.BatteryOperated;
|
|
82576
82911
|
/**
|
|
82577
82912
|
* Runtime list of cap names with status. Used by the settings
|
|
@@ -82602,6 +82937,7 @@ var CAP_NAMES_WITH_STATUS = [
|
|
|
82602
82937
|
"device-discovery",
|
|
82603
82938
|
"device-export",
|
|
82604
82939
|
"device-status",
|
|
82940
|
+
"dishwasher",
|
|
82605
82941
|
"doorbell",
|
|
82606
82942
|
"enum-sensor",
|
|
82607
82943
|
"event-emitter",
|
|
@@ -82609,6 +82945,7 @@ var CAP_NAMES_WITH_STATUS = [
|
|
|
82609
82945
|
"feature-probe",
|
|
82610
82946
|
"flood",
|
|
82611
82947
|
"gas",
|
|
82948
|
+
"heating-valve",
|
|
82612
82949
|
"humidifier",
|
|
82613
82950
|
"humidity-sensor",
|
|
82614
82951
|
"image",
|
|
@@ -82723,6 +83060,7 @@ var ALL_CAPABILITY_DEFINITIONS = [
|
|
|
82723
83060
|
deviceRemovalHookCapability,
|
|
82724
83061
|
deviceStateCapability,
|
|
82725
83062
|
deviceStatusCapability,
|
|
83063
|
+
dishwasherCapability,
|
|
82726
83064
|
doorbellCapability,
|
|
82727
83065
|
embeddingEncoderCapability,
|
|
82728
83066
|
enumSensorCapability,
|
|
@@ -82734,6 +83072,7 @@ var ALL_CAPABILITY_DEFINITIONS = [
|
|
|
82734
83072
|
filesystemBrowseCapability,
|
|
82735
83073
|
floodCapability,
|
|
82736
83074
|
gasCapability,
|
|
83075
|
+
heatingValveCapability,
|
|
82737
83076
|
humidifierCapability,
|
|
82738
83077
|
humiditySensorCapability,
|
|
82739
83078
|
imageCapability,
|
|
@@ -83662,6 +84001,51 @@ Object.freeze({
|
|
|
83662
84001
|
form: "single",
|
|
83663
84002
|
optional: false
|
|
83664
84003
|
}],
|
|
84004
|
+
"dishwasher.getStatus": [{
|
|
84005
|
+
name: "deviceId",
|
|
84006
|
+
form: "single",
|
|
84007
|
+
optional: false
|
|
84008
|
+
}],
|
|
84009
|
+
"dishwasher.pause": [{
|
|
84010
|
+
name: "deviceId",
|
|
84011
|
+
form: "single",
|
|
84012
|
+
optional: false
|
|
84013
|
+
}],
|
|
84014
|
+
"dishwasher.setHalfLoad": [{
|
|
84015
|
+
name: "deviceId",
|
|
84016
|
+
form: "single",
|
|
84017
|
+
optional: false
|
|
84018
|
+
}],
|
|
84019
|
+
"dishwasher.setHygienePlus": [{
|
|
84020
|
+
name: "deviceId",
|
|
84021
|
+
form: "single",
|
|
84022
|
+
optional: false
|
|
84023
|
+
}],
|
|
84024
|
+
"dishwasher.setOption": [{
|
|
84025
|
+
name: "deviceId",
|
|
84026
|
+
form: "single",
|
|
84027
|
+
optional: false
|
|
84028
|
+
}],
|
|
84029
|
+
"dishwasher.setPower": [{
|
|
84030
|
+
name: "deviceId",
|
|
84031
|
+
form: "single",
|
|
84032
|
+
optional: false
|
|
84033
|
+
}],
|
|
84034
|
+
"dishwasher.setProgram": [{
|
|
84035
|
+
name: "deviceId",
|
|
84036
|
+
form: "single",
|
|
84037
|
+
optional: false
|
|
84038
|
+
}],
|
|
84039
|
+
"dishwasher.start": [{
|
|
84040
|
+
name: "deviceId",
|
|
84041
|
+
form: "single",
|
|
84042
|
+
optional: false
|
|
84043
|
+
}],
|
|
84044
|
+
"dishwasher.stop": [{
|
|
84045
|
+
name: "deviceId",
|
|
84046
|
+
form: "single",
|
|
84047
|
+
optional: false
|
|
84048
|
+
}],
|
|
83665
84049
|
"doorbell.getStatus": [{
|
|
83666
84050
|
name: "deviceId",
|
|
83667
84051
|
form: "single",
|
|
@@ -83731,6 +84115,11 @@ Object.freeze({
|
|
|
83731
84115
|
form: "single",
|
|
83732
84116
|
optional: false
|
|
83733
84117
|
}],
|
|
84118
|
+
"heatingValve.getStatus": [{
|
|
84119
|
+
name: "deviceId",
|
|
84120
|
+
form: "single",
|
|
84121
|
+
optional: false
|
|
84122
|
+
}],
|
|
83734
84123
|
"humidifier.getStatus": [{
|
|
83735
84124
|
name: "deviceId",
|
|
83736
84125
|
form: "single",
|
|
@@ -85556,7 +85945,7 @@ Object.freeze({
|
|
|
85556
85945
|
});
|
|
85557
85946
|
/**
|
|
85558
85947
|
* Per-cap runtime-state policy, projected from every `*.cap.ts` that declares
|
|
85559
|
-
* `runtimeState`.
|
|
85948
|
+
* `runtimeState`. 71 caps: 37 `restored`, 34 `session`.
|
|
85560
85949
|
*
|
|
85561
85950
|
* A cap absent from this map has no runtime-state slice at all. A cap PRESENT
|
|
85562
85951
|
* with `durability: 'session'` has one and has decided not to keep it.
|
|
@@ -85642,6 +86031,10 @@ var RUNTIME_STATE_POLICY = {
|
|
|
85642
86031
|
durability: "restored",
|
|
85643
86032
|
volatileFields: ["lastChangedAt"]
|
|
85644
86033
|
},
|
|
86034
|
+
"dishwasher": {
|
|
86035
|
+
durability: "session",
|
|
86036
|
+
volatileFields: []
|
|
86037
|
+
},
|
|
85645
86038
|
"doorbell": {
|
|
85646
86039
|
durability: "restored",
|
|
85647
86040
|
volatileFields: []
|
|
@@ -85670,6 +86063,10 @@ var RUNTIME_STATE_POLICY = {
|
|
|
85670
86063
|
durability: "restored",
|
|
85671
86064
|
volatileFields: ["lastChangedAt"]
|
|
85672
86065
|
},
|
|
86066
|
+
"heating-valve": {
|
|
86067
|
+
durability: "session",
|
|
86068
|
+
volatileFields: ["lastFetchedAt"]
|
|
86069
|
+
},
|
|
85673
86070
|
"humidifier": {
|
|
85674
86071
|
durability: "session",
|
|
85675
86072
|
volatileFields: []
|
|
@@ -87217,4 +87614,4 @@ function enumerateInferenceDevices(hw) {
|
|
|
87217
87614
|
return out;
|
|
87218
87615
|
}
|
|
87219
87616
|
//#endregion
|
|
87220
|
-
export {
|
|
87617
|
+
export { STREAM_PROFILE_META as $, resolveSecretMarkers as $i, scopesAllowAddon as $n, RECORD_SWEEP_INTERVAL_MS as $r, extractNestedAddonId as $t, DataStoreDatabaseSchema as A, expandCapMethods as Ai, normalizeCoreBlockWrite as An, compositionSourceKey as Ar, coreBlockIdFromAddonId as At, KeychainAuditEntrySchema as B, makeSecretMarker as Bi, recordEntriesCapability as Bn, CALLER_STAMPED_CAPABILITIES as Br, describeComposableCaps as Bt, DAY_NAMES as C, createEvent as Ci, looseSchema as Cn, buildFfmpegArgs as Cr, canonicalIconKey as Ct, DEVICE_SAN_CREDENTIAL_PREFIX as D, defineRecordKinds as Di, metricsProviderCapability as Dn, compositionFeatureEnabled as Dr, compositionSourceRefs as Dt, DEVICE_NONCE_TTL_MS as E, defineCustomActions as Ei, memoizePinnedFfmpeg as En, composedDeviceStableId as Er, compositionFieldKey as Et, FieldClaimModeSchema as F, isKeychainStoredField as Fi, pickAppLinkHub as Fn, DeviceRole as Fr, databaseSnapshotCapability as Ft, MINUTES_PER_DAY as G, parseJsonObject as Gi, resolveBucketMs as Gn, FilterRequiredError as Gr, deviceStatusCapability as Gt, LOG_LEVEL_RANK as H, nodePin as Hi, reducePoints as Hn, DEVICE_SETTINGS_CONTRIBUTION_METHODS as Hr, deviceExtensionCapability as Ht, FieldClaimSchema as I, isSecretClear as Ii, planComposition as In, DeviceType as Ir, declarationOwnerNodeId as It, RECORDING_SOURCE_CAMSTACK_ADDON as J, parseSettingsArrayAdoptsFrom as Ji, resolveHubAddressRoles as Jn, NoCallerError as Jr, enumerateSchemaFields as Jt, MOTION_CLOSE_AFTER_MS as K, parseJsonUnknown as Ki, resolveCoreBlockEntry as Kn, ForeignSecretMarkerError as Kr, enumerateInferenceDevices as Kt, HUB_MDNS_SERVICE_TYPE as L, isSecretMarker as Li, platformProbeCapability as Ln, errMsg as Lr, decodeVectorBase64 as Lt, DeviceStatusSchema as M, hydrateSchema as Mi, objectInputDeclaresAddonId as Mn, disarmRoseMemory as Mr, coreBlocksCapability as Mt, DeviceTombstoneSchema as N, isDeviceConfigCap as Ni, objectInputDeclaresRequiredDeviceId as Nn, toExpressionValue as Nr, createDeviceExtensionProvider as Nt, DEVICE_SAN_USER_PREFIX as O, emitDownForOwnedCaps as Oi, modeMayWrite as On, compositionItemFieldPath as Or, coreBlockAddonId as Ot, FIRST_LEVEL_MACRO_CLASSES as P, isEvent as Pi, parseStreamParamsFormPatch as Pn, DeviceFeature as Pr, dataStoreProviderCapability as Pt, STORAGE_ADMIN_SCOPED_BASES as Q, resolveCapMount as Qi, runtimeStatePolicyFor as Qn, RECORD_DELETE_BATCH as Qr, expressionContainsBuiltinCall as Qt, HUB_MDNS_TXT_KEYS as R, isSecretMarkerLike as Ri, procedureAuthKey as Rn, BaseAddon as Rr, defineExtensionSlotProvider as Rt, DATA_STORE_DATABASES as S, collectZodSecretPaths as Si, logLevelAtMost as Sn, COMPOSER_ADDON_ID as Sr, cameraGridLayoutCapability as St, DEVICE_ENROLLMENT_TTL_MS as T, declarationsOf as Ti, mayWriteToLocation as Tn, composedDeviceRef as Tr, composerCapability as Tt, LegacyStorageLocationDefaultSchema as U, normalizeNodeId as Ui, replacedFieldKeys as Un, DEVICE_STATUS_METHOD as Ur, deviceManagerCapability as Ut, KeychainResetRecordSchema as V, mapSecretLeaves as Vi, recordsCapability as Vn, DATAPLANE_SECRET_HEADER as Vr, deviceCredentialsCapability as Vt, METHOD_ACCESS_MAP as W, normalizeSecretOwner as Wi, resolveAppConnections as Wn, DeclarationRefusedError as Wr, deviceStateCapability as Wt, STORAGE_ACCESS_FALLBACK as X, readinessKey as Xi, resolveMethodAuth as Xn, RECORD_BATCH_MAX as Xr, evictionPolicyOfLocation as Xt, RecordingStatusSchema as Y, parseSettingsBrokersAdoptsFrom as Yi, resolveLocationMode as Yn, PlaintextSecretError as Yr, evaluateCompositionField as Yt, STORAGE_ADMIN_MOVED_COLLECTIONS as Z, recordSecretRef as Zi, resolveNotificationTapAddress as Zn, RECORD_BATCH_MAX_BYTES as Zr, expandContainer as Zt, CatalogFileSchema as _, assertValidDeclaration as _i, legacyModeOf as _n, validateCustomAddress as _r, buildCapabilityLookup as _t, ApiKeyRecordSchema as a, toSecretFieldView as aa, RecordKindDeclarationSchema as ai, interpolate as an, snapshotCapability as ar, StorageLocationTypeSchema as at, DATABASE_SNAPSHOT_SUFFIX as b, collectSecretLeaves as bi, locationIconKey as bn, vectorStoreCapability as br, buildStreamParamsConfigSchema as bt, CAMERA_SWITCH_ORDER as c, withoutCallerStamp as ca, RecordUniqueViolationError as ci, isCollectionArrayMethod as cn, storageCapability as cr, UserRecordSchema as ct, CATALOG_LANGS as d, UnindexedFilterError as di, isObjectInput as dn, storageProviderCapability as dr, addonWidgetsCapability as dt, scopeKey as ea, REDACTED_SECRET as ei, filesystemBrowseCapability as en, scopesAllowDeviceCap as er, ScopedTokenSchema as et, COMPOSED_ITEM_FIXED_FIELDS as f, UnknownRecordKindError as fi, isVoidInput as fn, streamCatalogCapability as fr, alertsCapability as ft, CalendarPreferencesSchema as g, asString$1 as gi, legacyAutoLinkIds as gn, validateComposition as gr, batteryCapability as gt, CORE_BLOCK_ADDON_PREFIX as h, asNumber as hi, keychainCapability as hn, userManagementCapability as hr, bareAddonId as ht, AlertSchema as i, toNodeId as ia, ReadinessTimeoutError as ii, gbToBytes as in, siteZoneKey as ir, StorageLocationModeSchema as it, DeclaredDevices as j, formatSecretScope as ji, normalizeUnit as jn, createStatefulExpressionMemory as jr, coreBlockSourceKind as jt, DEVICE_TOMBSTONE_RETENTION_MS as k, emitReadiness as ki, motionCapability as kn, compositionSliceKey as kr, coreBlockComposition as kt, CAMSTACK_APP_LINK_ORIGIN as l, EventCategory as la, RevConflictError as li, isDefaultAppConnectionEndpoint as ln, storageMigrationCapability as lr, addonPagesCapability as lt, CORE_BLOCKS_ADDON_ID as m, asJsonObject as mi, keychainAdminCapability as mn, supportedRuntimes as mr, backupCapability as mt, AGENT_MDNS_TXT_KEYS as n, secretTreeFromSchema as na, RUNTIME_DEFAULTS as ni, formatDeviceRevoker as nn, settingsStoreCapability as nr, SsoBridgeClaimsSchema as nt, BaseDevice as o, transformSecretWrite as oa, RecordNotFoundError as oi, isAppLinkBase as on, splitTranslationRef as or, StorageMigrationJobSchema as ot, COMPOSER_RUNNER_ID as p, WELL_KNOWN_TAB_MAP as pi, kebabToCamel as pn, streamQualityLabel as pr, authProviderCapability as pt, NetworkTunnelStartedDataSchema as q, parseSecretRef as qi, resolveCoreBlockFiles as qn, InvalidRecordError as qr, enumerateItemArrayFields as qt, ALL_CAPABILITY_DEFINITIONS as r, sleep as ra, ReadinessRegistry as ri, formatMinutes as rn, shortHostname as rr, StorageCleanupJobSchema as rt, BatteryStatusSchema as s, userError as sa, RecordTooLargeError as si, isArrayOutputSchema as sn, storageAdminCapability as sr, TokenScopeSchema as st, AGENT_MDNS_SERVICE_TYPE as t, secretTreeFromPaths as ta, REMOVE_LEAF as ti, foldSnapshotByFunction as tn, scoreRuntimes as tr, ServerNameSchema as tt, CAP_NAMES_WITH_STATUS as u, SECRET_CLEAR as ui, isLocationEnabled as un, storageOccupancyCapability as ur, addonSettingsCapability as ut, CoreBlockSchema as v, buildSecretRef as vi, lifecycleJobSchema as vn, vectorDimFromBase64 as vr, buildDeviceEnrollmentLink as vt, DERIVED_CAMERA_SILENCED_CAP_NAMES as w, customAction as wi, mayReadLocation as wn, cloneStatefulExpressionMemory as wr, checkRoleAddress as wt, DATABASE_SNAPSHOT_TIMEOUT_MS as x, collectSecretMarkerRefs as xi, logDestinationCapability as xn, withLocationMode as xr, calendarsCapability as xt, DATABASE_SNAPSHOT_PARTIAL_SUFFIX as y, collectSecretConfigKeys as yi, localNetworkCapability as yn, vectorIndexDimConflictError as yr, buildDeviceSignatureMessage as yt, KEYCHAIN_RESET_TRIGGER_ACTOR as z, isSecretRefOwnedBy as zi, ptzAutotrackCapability as zn, BatchTooLargeError as zr, deriveBatteryPresence as zt };
|