@camstack/system 1.2.473 → 1.2.475
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-B9Q3-IKd.js → agent-https-BsqT0qni.js} +8 -8
- package/dist/{agent-https-DOwn4pqL.mjs → agent-https-wA8gGLc1.mjs} +8 -8
- 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 +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/core-blocks.addon.js +2 -2
- package/dist/builtins/core-blocks/core-blocks.addon.mjs +2 -2
- package/dist/builtins/device-history/device-history.addon.js +1 -1
- package/dist/builtins/device-history/device-history.addon.mjs +1 -1
- package/dist/builtins/device-manager/device-manager.addon.js +71 -1
- package/dist/builtins/device-manager/device-manager.addon.mjs +71 -1
- package/dist/builtins/device-manager/device-state-mirror.d.ts +4 -0
- package/dist/builtins/device-manager/running-flip.d.ts +11 -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 +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 +8 -8
- package/dist/builtins/system-config/system-config.addon.mjs +8 -8
- package/dist/builtins/winston-logging/index.js +1 -1
- package/dist/builtins/winston-logging/index.mjs +1 -1
- package/dist/{composition-sources-cwD35HB0.mjs → composition-sources-CiFkyAcf.mjs} +1 -1
- package/dist/{composition-sources-Dj_nInUQ.js → composition-sources-DeUSUid6.js} +1 -1
- package/dist/{constants-XkWSVvgY.js → constants-3Wj5OyEk.js} +1 -1
- package/dist/{constants-p5mPM1iL.mjs → constants-DZJAkne8.mjs} +1 -1
- package/dist/{device-ca-DyUtcpf4.mjs → device-ca-DiV5xcMz.mjs} +14 -13
- package/dist/{device-ca-BXzQ1pYj.js → device-ca-ftrfVdc0.js} +14 -13
- package/dist/{dist-Bmah6waF.js → dist-BtDdPdZ7.js} +606 -113
- package/dist/{dist-C9lbdBL5.mjs → dist-DygMs3Qc.mjs} +606 -113
- package/dist/file-host-worker.js +1 -1
- package/dist/file-host-worker.mjs +1 -1
- package/dist/{hub-mdns-ciao-CUr6ewsX.js → hub-mdns-ciao-B1VcdfT1.js} +4 -4
- package/dist/{hub-mdns-ciao-BemeCNGe.mjs → hub-mdns-ciao-Bc9PnWu3.mjs} +4 -4
- package/dist/index.js +13 -7
- package/dist/index.mjs +13 -7
- package/dist/{lib-8oZrELLm.js → lib-C3U1yluo.js} +1 -1
- package/dist/{lib-DK38ompL.mjs → lib-DFZblCIu.mjs} +1 -1
- package/dist/{restore-archive-C0aohmAK.mjs → restore-archive-D_Pwryre.mjs} +1 -1
- package/dist/{restore-archive-DbPmyjiM.js → restore-archive-TDkQfmLO.js} +1 -1
- package/dist/tls/cert-utc-time.d.ts +1 -0
- package/dist/{wal-maintenance-BT8Ns0W3.js → wal-maintenance-D3UwIKX5.js} +0 -0
- package/dist/{wal-maintenance-BuB731DK.mjs → wal-maintenance-rLv4uOmp.mjs} +0 -0
- package/dist/{x509.es-DK__ETIe.mjs → x509.es-BRiJgOvu.mjs} +24 -1
- package/dist/{x509.es-C4cOo48M.js → x509.es-WtnRNyYS.js} +29 -0
- package/package.json +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
const require_chunk = require("./chunk-Cek0wNdY.js");
|
|
2
|
-
const require_dist = require("./dist-
|
|
3
|
-
const require_x509_es = require("./x509.es-
|
|
2
|
+
const require_dist = require("./dist-BtDdPdZ7.js");
|
|
3
|
+
const require_x509_es = require("./x509.es-WtnRNyYS.js");
|
|
4
4
|
let zod = require("zod");
|
|
5
5
|
let node_crypto = require("node:crypto");
|
|
6
6
|
let _camstack_types_node = require("@camstack/types/node");
|
|
@@ -687,7 +687,7 @@ async function generateCa(now, hostnames = [], commonName = CA_COMMON_NAME) {
|
|
|
687
687
|
await require_x509_es.SubjectKeyIdentifierExtension.create(keys.publicKey),
|
|
688
688
|
createNameConstraintsExtension(buildNameConstraintSet(hostnames))
|
|
689
689
|
];
|
|
690
|
-
const cert = await require_x509_es.X509CertificateGenerator.createSelfSigned({
|
|
690
|
+
const cert = await require_x509_es.withUtcTimeEncoding(() => require_x509_es.X509CertificateGenerator.createSelfSigned({
|
|
691
691
|
serialNumber: freshSerial(),
|
|
692
692
|
name: [{ CN: [commonName] }],
|
|
693
693
|
notBefore: require_x509_es.backdatedNotBefore(now),
|
|
@@ -695,7 +695,7 @@ async function generateCa(now, hostnames = [], commonName = CA_COMMON_NAME) {
|
|
|
695
695
|
keys,
|
|
696
696
|
signingAlgorithm: SIGNING_ALGORITHM,
|
|
697
697
|
extensions
|
|
698
|
-
});
|
|
698
|
+
}));
|
|
699
699
|
return {
|
|
700
700
|
certPem: toCertPem(cert),
|
|
701
701
|
keyPem: await exportKeyPem(keys.privateKey),
|
|
@@ -728,7 +728,7 @@ async function issueLeaf(ca, identity, commonName, validDays, now) {
|
|
|
728
728
|
new require_x509_es.SubjectAlternativeNameExtension(subjectAltNames(identity))
|
|
729
729
|
];
|
|
730
730
|
return {
|
|
731
|
-
certPem: toCertPem(await require_x509_es.X509CertificateGenerator.create({
|
|
731
|
+
certPem: toCertPem(await require_x509_es.withUtcTimeEncoding(() => require_x509_es.X509CertificateGenerator.create({
|
|
732
732
|
serialNumber: freshSerial(),
|
|
733
733
|
subject: `CN=${commonName}`,
|
|
734
734
|
issuer: ca.cert.subject,
|
|
@@ -738,7 +738,7 @@ async function issueLeaf(ca, identity, commonName, validDays, now) {
|
|
|
738
738
|
signingKey: ca.privateKey,
|
|
739
739
|
signingAlgorithm: SIGNING_ALGORITHM,
|
|
740
740
|
extensions
|
|
741
|
-
})),
|
|
741
|
+
}))),
|
|
742
742
|
keyPem: await exportKeyPem(keys.privateKey)
|
|
743
743
|
};
|
|
744
744
|
}
|
|
@@ -759,7 +759,7 @@ async function issueLeafFromCsr(ca, csrPem, identity, commonName, validDays, now
|
|
|
759
759
|
await require_x509_es.AuthorityKeyIdentifierExtension.create(ca.cert),
|
|
760
760
|
new require_x509_es.SubjectAlternativeNameExtension(subjectAltNames(identity))
|
|
761
761
|
];
|
|
762
|
-
return toCertPem(await require_x509_es.X509CertificateGenerator.create({
|
|
762
|
+
return toCertPem(await require_x509_es.withUtcTimeEncoding(() => require_x509_es.X509CertificateGenerator.create({
|
|
763
763
|
serialNumber: freshSerial(),
|
|
764
764
|
subject: `CN=${commonName}`,
|
|
765
765
|
issuer: ca.cert.subject,
|
|
@@ -769,7 +769,7 @@ async function issueLeafFromCsr(ca, csrPem, identity, commonName, validDays, now
|
|
|
769
769
|
signingKey: ca.privateKey,
|
|
770
770
|
signingAlgorithm: SIGNING_ALGORITHM,
|
|
771
771
|
extensions
|
|
772
|
-
}));
|
|
772
|
+
})));
|
|
773
773
|
}
|
|
774
774
|
//#endregion
|
|
775
775
|
//#region src/tls/agent-https.ts
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { qi as defineRecordKinds } from "./dist-
|
|
2
|
-
import {
|
|
1
|
+
import { qi as defineRecordKinds } from "./dist-DygMs3Qc.mjs";
|
|
2
|
+
import { C as backdatedNotBefore, S as withUtcTimeEncoding, _ as NameConstraints, a as KeyUsageFlags, c as Pkcs10CertificateRequest, d as SubjectKeyIdentifierExtension, f as X509Certificate$1, g as GeneralSubtrees, h as GeneralSubtree, i as Extension, l as Pkcs10CertificateRequestGenerator, m as cryptoProvider, n as BasicConstraintsExtension, o as KeyUsagesExtension, p as X509CertificateGenerator, r as ExtendedKeyUsageExtension, s as PemConverter, t as AuthorityKeyIdentifierExtension, u as SubjectAlternativeNameExtension, v as GeneralName, x as AsnConvert } from "./x509.es-BRiJgOvu.mjs";
|
|
3
3
|
import { z } from "zod";
|
|
4
4
|
import { X509Certificate, createHash, createPrivateKey, randomBytes, webcrypto } from "node:crypto";
|
|
5
5
|
import { writeOwnerOnlyFileSync } from "@camstack/types/node";
|
|
@@ -685,7 +685,7 @@ async function generateCa(now, hostnames = [], commonName = CA_COMMON_NAME) {
|
|
|
685
685
|
await SubjectKeyIdentifierExtension.create(keys.publicKey),
|
|
686
686
|
createNameConstraintsExtension(buildNameConstraintSet(hostnames))
|
|
687
687
|
];
|
|
688
|
-
const cert = await X509CertificateGenerator.createSelfSigned({
|
|
688
|
+
const cert = await withUtcTimeEncoding(() => X509CertificateGenerator.createSelfSigned({
|
|
689
689
|
serialNumber: freshSerial(),
|
|
690
690
|
name: [{ CN: [commonName] }],
|
|
691
691
|
notBefore: backdatedNotBefore(now),
|
|
@@ -693,7 +693,7 @@ async function generateCa(now, hostnames = [], commonName = CA_COMMON_NAME) {
|
|
|
693
693
|
keys,
|
|
694
694
|
signingAlgorithm: SIGNING_ALGORITHM,
|
|
695
695
|
extensions
|
|
696
|
-
});
|
|
696
|
+
}));
|
|
697
697
|
return {
|
|
698
698
|
certPem: toCertPem(cert),
|
|
699
699
|
keyPem: await exportKeyPem(keys.privateKey),
|
|
@@ -726,7 +726,7 @@ async function issueLeaf(ca, identity, commonName, validDays, now) {
|
|
|
726
726
|
new SubjectAlternativeNameExtension(subjectAltNames(identity))
|
|
727
727
|
];
|
|
728
728
|
return {
|
|
729
|
-
certPem: toCertPem(await X509CertificateGenerator.create({
|
|
729
|
+
certPem: toCertPem(await withUtcTimeEncoding(() => X509CertificateGenerator.create({
|
|
730
730
|
serialNumber: freshSerial(),
|
|
731
731
|
subject: `CN=${commonName}`,
|
|
732
732
|
issuer: ca.cert.subject,
|
|
@@ -736,7 +736,7 @@ async function issueLeaf(ca, identity, commonName, validDays, now) {
|
|
|
736
736
|
signingKey: ca.privateKey,
|
|
737
737
|
signingAlgorithm: SIGNING_ALGORITHM,
|
|
738
738
|
extensions
|
|
739
|
-
})),
|
|
739
|
+
}))),
|
|
740
740
|
keyPem: await exportKeyPem(keys.privateKey)
|
|
741
741
|
};
|
|
742
742
|
}
|
|
@@ -757,7 +757,7 @@ async function issueLeafFromCsr(ca, csrPem, identity, commonName, validDays, now
|
|
|
757
757
|
await AuthorityKeyIdentifierExtension.create(ca.cert),
|
|
758
758
|
new SubjectAlternativeNameExtension(subjectAltNames(identity))
|
|
759
759
|
];
|
|
760
|
-
return toCertPem(await X509CertificateGenerator.create({
|
|
760
|
+
return toCertPem(await withUtcTimeEncoding(() => X509CertificateGenerator.create({
|
|
761
761
|
serialNumber: freshSerial(),
|
|
762
762
|
subject: `CN=${commonName}`,
|
|
763
763
|
issuer: ca.cert.subject,
|
|
@@ -767,7 +767,7 @@ async function issueLeafFromCsr(ca, csrPem, identity, commonName, validDays, now
|
|
|
767
767
|
signingKey: ca.privateKey,
|
|
768
768
|
signingAlgorithm: SIGNING_ALGORITHM,
|
|
769
769
|
extensions
|
|
770
|
-
}));
|
|
770
|
+
})));
|
|
771
771
|
}
|
|
772
772
|
//#endregion
|
|
773
773
|
//#region src/tls/agent-https.ts
|
|
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
|
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
5
|
const require_chunk = require("../../chunk-Cek0wNdY.js");
|
|
6
|
-
const require_dist = require("../../dist-
|
|
6
|
+
const require_dist = require("../../dist-BtDdPdZ7.js");
|
|
7
7
|
const require_settle_sources = require("../../settle-sources-Bhsy57y-.js");
|
|
8
8
|
let node_crypto = require("node:crypto");
|
|
9
9
|
let node_path = require("node:path");
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Oa as EventCategory, _t as addonPagesCapability, ei as errMsg, ti as BaseAddon } from "../../dist-
|
|
1
|
+
import { Oa as EventCategory, _t as addonPagesCapability, ei as errMsg, ti as BaseAddon } from "../../dist-DygMs3Qc.mjs";
|
|
2
2
|
import { t as settleSourcesWithTimeout } from "../../settle-sources-CDtNC8ub.mjs";
|
|
3
3
|
import { createHash, randomUUID } from "node:crypto";
|
|
4
4
|
import * as path$1 from "node:path";
|
|
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
|
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
5
|
const require_chunk = require("../../chunk-Cek0wNdY.js");
|
|
6
|
-
const require_dist = require("../../dist-
|
|
6
|
+
const require_dist = require("../../dist-BtDdPdZ7.js");
|
|
7
7
|
const require_settle_sources = require("../../settle-sources-Bhsy57y-.js");
|
|
8
8
|
let node_crypto = require("node:crypto");
|
|
9
9
|
let node_path = require("node:path");
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Oa as EventCategory, ei as errMsg, ti as BaseAddon, yt as addonWidgetsCapability } from "../../dist-
|
|
1
|
+
import { Oa as EventCategory, ei as errMsg, ti as BaseAddon, yt as addonWidgetsCapability } from "../../dist-DygMs3Qc.mjs";
|
|
2
2
|
import { t as settleSourcesWithTimeout } from "../../settle-sources-CDtNC8ub.mjs";
|
|
3
3
|
import { createHash, randomUUID } from "node:crypto";
|
|
4
4
|
import * as path$1 from "node:path";
|
|
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
|
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
5
|
require("../../chunk-Cek0wNdY.js");
|
|
6
|
-
const require_dist = require("../../dist-
|
|
6
|
+
const require_dist = require("../../dist-BtDdPdZ7.js");
|
|
7
7
|
const require_read_all_rows$1 = require("../../read-all-rows-CVoO1ONM.js");
|
|
8
8
|
//#region src/builtins/alerts/alert-episode-policy.ts
|
|
9
9
|
/**
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Oa as EventCategory, St as alertsCapability, Wi as createEvent, bn as isAlertEpisodeSeverity, bt as alertEpisodeId, ei as errMsg, i as AlertSchema, qi as defineRecordKinds, ti as BaseAddon, xt as alertEpisodePayload, yn as isAlertEpisodeOpen } from "../../dist-
|
|
1
|
+
import { Oa as EventCategory, St as alertsCapability, Wi as createEvent, bn as isAlertEpisodeSeverity, bt as alertEpisodeId, ei as errMsg, i as AlertSchema, qi as defineRecordKinds, ti as BaseAddon, xt as alertEpisodePayload, yn as isAlertEpisodeOpen } from "../../dist-DygMs3Qc.mjs";
|
|
2
2
|
import { t as require_read_all_rows } from "../../read-all-rows-TaPqdWNF.mjs";
|
|
3
3
|
//#region src/builtins/alerts/alert-episode-policy.ts
|
|
4
4
|
/**
|
|
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
|
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
5
|
require("../../chunk-Cek0wNdY.js");
|
|
6
|
-
const require_dist = require("../../dist-
|
|
6
|
+
const require_dist = require("../../dist-BtDdPdZ7.js");
|
|
7
7
|
//#region src/builtins/autotrack/autotrack-config.ts
|
|
8
8
|
var DEFAULT_AUTOTRACK_LOOP_CONFIG = {
|
|
9
9
|
deadZoneFraction: .5,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Et as bareAddonId, I as FIRST_LEVEL_MACRO_CLASSES, Oa as EventCategory, ei as errMsg, nr as ptzAutotrackCapability, ta as isEvent, ti as BaseAddon } from "../../dist-
|
|
1
|
+
import { Et as bareAddonId, I as FIRST_LEVEL_MACRO_CLASSES, Oa as EventCategory, ei as errMsg, nr as ptzAutotrackCapability, ta as isEvent, ti as BaseAddon } from "../../dist-DygMs3Qc.mjs";
|
|
2
2
|
//#region src/builtins/autotrack/autotrack-config.ts
|
|
3
3
|
var DEFAULT_AUTOTRACK_LOOP_CONFIG = {
|
|
4
4
|
deadZoneFraction: .5,
|
|
@@ -3,9 +3,9 @@ Object.defineProperties(exports, {
|
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
5
|
const require_chunk = require("../../chunk-Cek0wNdY.js");
|
|
6
|
-
const require_dist = require("../../dist-
|
|
6
|
+
const require_dist = require("../../dist-BtDdPdZ7.js");
|
|
7
7
|
const require_read_all_rows$1 = require("../../read-all-rows-CVoO1ONM.js");
|
|
8
|
-
const require_restore_archive = require("../../restore-archive-
|
|
8
|
+
const require_restore_archive = require("../../restore-archive-TDkQfmLO.js");
|
|
9
9
|
let node_crypto = require("node:crypto");
|
|
10
10
|
let node_fs_promises = require("node:fs/promises");
|
|
11
11
|
node_fs_promises = require_chunk.__toESM(node_fs_promises);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { Ca as toNodeId, Dr as storageOccupancyCapability, Oa as EventCategory, Tt as backupCapability, Vn as mayWriteToLocation, la as nodePin, ti as BaseAddon } from "../../dist-
|
|
1
|
+
import { Ca as toNodeId, Dr as storageOccupancyCapability, Oa as EventCategory, Tt as backupCapability, Vn as mayWriteToLocation, la as nodePin, ti as BaseAddon } from "../../dist-DygMs3Qc.mjs";
|
|
2
2
|
import { t as require_read_all_rows } from "../../read-all-rows-TaPqdWNF.mjs";
|
|
3
|
-
import { _ as backupRecordStoresOf, a as BackupSnapshotRefusedError, d as ENCRYPTED_BACKUP_SUFFIX, f as generateBackupKeyPair, g as backupOrchestratorRecordKinds, i as BackupCancelledError, l as BackupKeyFormatError, m as parseBackupSecretKey, n as precheckRestoreKey, o as DEFAULT_BACKUP_DATABASES, p as parseBackupPublicKey, r as prepareRestoreArchive, s as SystemBackupService } from "../../restore-archive-
|
|
3
|
+
import { _ as backupRecordStoresOf, a as BackupSnapshotRefusedError, d as ENCRYPTED_BACKUP_SUFFIX, f as generateBackupKeyPair, g as backupOrchestratorRecordKinds, i as BackupCancelledError, l as BackupKeyFormatError, m as parseBackupSecretKey, n as precheckRestoreKey, o as DEFAULT_BACKUP_DATABASES, p as parseBackupPublicKey, r as prepareRestoreArchive, s as SystemBackupService } from "../../restore-archive-D_Pwryre.mjs";
|
|
4
4
|
import { randomUUID } from "node:crypto";
|
|
5
5
|
import * as fsp from "node:fs/promises";
|
|
6
6
|
import * as path$1 from "node:path";
|
|
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
|
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
5
|
require("../../chunk-Cek0wNdY.js");
|
|
6
|
-
const require_dist = require("../../dist-
|
|
6
|
+
const require_dist = require("../../dist-BtDdPdZ7.js");
|
|
7
7
|
const require_settle_sources = require("../../settle-sources-Bhsy57y-.js");
|
|
8
8
|
let zod = require("zod");
|
|
9
9
|
//#region src/builtins/calendars/calendar-color.ts
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Mt as calendarsCapability, g as CalendarPreferencesSchema, qi as defineRecordKinds, ti as BaseAddon } from "../../dist-
|
|
1
|
+
import { Mt as calendarsCapability, g as CalendarPreferencesSchema, qi as defineRecordKinds, ti as BaseAddon } from "../../dist-DygMs3Qc.mjs";
|
|
2
2
|
import { t as settleSourcesWithTimeout } from "../../settle-sources-CDtNC8ub.mjs";
|
|
3
3
|
import { z } from "zod";
|
|
4
4
|
//#region src/builtins/calendars/calendar-color.ts
|
|
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
|
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
5
|
require("../../chunk-Cek0wNdY.js");
|
|
6
|
-
const require_dist = require("../../dist-
|
|
6
|
+
const require_dist = require("../../dist-BtDdPdZ7.js");
|
|
7
7
|
let zod = require("zod");
|
|
8
8
|
let _camstack_types_node = require("@camstack/types/node");
|
|
9
9
|
let node_path = require("node:path");
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { $i as hydrateSchema, $r as DeviceType, Br as buildFfmpegArgs, Gn as motionCapability, Hn as memoizePinnedFfmpeg, N as DeclaredDevices, Nt as cameraGridLayoutCapability, Oa as EventCategory, Sr as snapshotCapability, T as DERIVED_CAMERA_SILENCED_CAP_NAMES, Wi as createEvent, X as MOTION_CLOSE_AFTER_MS, Zr as DeviceFeature, a as BaseDevice, ei as errMsg, kr as streamCatalogCapability, qt as declarationOwnerNodeId, ti as BaseAddon } from "../../dist-
|
|
1
|
+
import { $i as hydrateSchema, $r as DeviceType, Br as buildFfmpegArgs, Gn as motionCapability, Hn as memoizePinnedFfmpeg, N as DeclaredDevices, Nt as cameraGridLayoutCapability, Oa as EventCategory, Sr as snapshotCapability, T as DERIVED_CAMERA_SILENCED_CAP_NAMES, Wi as createEvent, X as MOTION_CLOSE_AFTER_MS, Zr as DeviceFeature, a as BaseDevice, ei as errMsg, kr as streamCatalogCapability, qt as declarationOwnerNodeId, ti as BaseAddon } from "../../dist-DygMs3Qc.mjs";
|
|
2
2
|
import { z } from "zod";
|
|
3
3
|
import { FfmpegProcess } from "@camstack/types/node";
|
|
4
4
|
import { join } from "node:path";
|
|
@@ -3,8 +3,8 @@ Object.defineProperties(exports, {
|
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
5
|
require("../../chunk-Cek0wNdY.js");
|
|
6
|
-
const require_dist = require("../../dist-
|
|
7
|
-
const require_composition_sources = require("../../composition-sources-
|
|
6
|
+
const require_dist = require("../../dist-BtDdPdZ7.js");
|
|
7
|
+
const require_composition_sources = require("../../composition-sources-DeUSUid6.js");
|
|
8
8
|
let zod = require("zod");
|
|
9
9
|
//#region src/builtins/shared/device-state-changed.ts
|
|
10
10
|
/** Structural narrowing helper for untrusted bus payloads. */
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { $n as planComposition, $r as DeviceType, Gr as compositionItemFieldPath, Hr as composedDeviceRef, It as composerCapability, Jr as createStatefulExpressionMemory, Kr as compositionSliceKey, Lt as compositionFieldKey, N as DeclaredDevices, Oa as EventCategory, Ot as buildCapabilityLookup, Ur as composedDeviceStableId, Vr as cloneStatefulExpressionMemory, Wi as createEvent, Wr as compositionFeatureEnabled, Xr as toExpressionValue, Yr as disarmRoseMemory, a as BaseDevice, cn as evaluateCompositionField, d as COMPOSED_ITEM_FIXED_FIELDS, dn as expressionContainsBuiltinCall, ei as errMsg, qr as compositionSourceKey, r as ALL_CAPABILITY_DEFINITIONS, ti as BaseAddon, zr as COMPOSER_ADDON_ID } from "../../dist-
|
|
2
|
-
import { n as normalizedNativeOwner } from "../../composition-sources-
|
|
1
|
+
import { $n as planComposition, $r as DeviceType, Gr as compositionItemFieldPath, Hr as composedDeviceRef, It as composerCapability, Jr as createStatefulExpressionMemory, Kr as compositionSliceKey, Lt as compositionFieldKey, N as DeclaredDevices, Oa as EventCategory, Ot as buildCapabilityLookup, Ur as composedDeviceStableId, Vr as cloneStatefulExpressionMemory, Wi as createEvent, Wr as compositionFeatureEnabled, Xr as toExpressionValue, Yr as disarmRoseMemory, a as BaseDevice, cn as evaluateCompositionField, d as COMPOSED_ITEM_FIXED_FIELDS, dn as expressionContainsBuiltinCall, ei as errMsg, qr as compositionSourceKey, r as ALL_CAPABILITY_DEFINITIONS, ti as BaseAddon, zr as COMPOSER_ADDON_ID } from "../../dist-DygMs3Qc.mjs";
|
|
2
|
+
import { n as normalizedNativeOwner } from "../../composition-sources-CiFkyAcf.mjs";
|
|
3
3
|
import { z } from "zod";
|
|
4
4
|
//#region src/builtins/shared/device-state-changed.ts
|
|
5
5
|
/** Structural narrowing helper for untrusted bus payloads. */
|
|
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
|
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
5
|
require("../../chunk-Cek0wNdY.js");
|
|
6
|
-
const require_dist = require("../../dist-
|
|
6
|
+
const require_dist = require("../../dist-BtDdPdZ7.js");
|
|
7
7
|
const require_formatter = require("../../formatter-DqAKDlvN.js");
|
|
8
8
|
//#region src/builtins/console-logging/console-destination.ts
|
|
9
9
|
var LEVEL_RANK = {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Ln as logDestinationCapability, ti as BaseAddon } from "../../dist-
|
|
1
|
+
import { Ln as logDestinationCapability, ti as BaseAddon } from "../../dist-DygMs3Qc.mjs";
|
|
2
2
|
import { t as formatLogLine } from "../../formatter-B7qW8bPJ.mjs";
|
|
3
3
|
//#region src/builtins/console-logging/console-destination.ts
|
|
4
4
|
var LEVEL_RANK = {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
2
|
const require_chunk = require("../../chunk-Cek0wNdY.js");
|
|
3
|
-
const require_dist = require("../../dist-
|
|
3
|
+
const require_dist = require("../../dist-BtDdPdZ7.js");
|
|
4
4
|
const require_read_all_rows$1 = require("../../read-all-rows-CVoO1ONM.js");
|
|
5
|
-
const require_composition_sources = require("../../composition-sources-
|
|
5
|
+
const require_composition_sources = require("../../composition-sources-DeUSUid6.js");
|
|
6
6
|
const require_prefix_range = require("../../prefix-range-D_KueXbQ.js");
|
|
7
7
|
const require_prefix_walk = require("../../prefix-walk-Dv6MLZlM.js");
|
|
8
8
|
let zod = require("zod");
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { $i as hydrateSchema, $n as planComposition, Bt as coreBlockComposition, Hi as collectSecretMarkerRefs, Hr as composedDeviceRef, Ht as coreBlockSourceKind, Kn as normalizeCoreBlockWrite, N as DeclaredDevices, Nr as validateComposition, Ot as buildCapabilityLookup, Rt as compositionSourceRefs, Ta as transformSecretWrite, Ut as coreBlocksCapability, Vt as coreBlockIdFromAddonId, Zt as describeComposableCaps, ei as errMsg, f as COMPOSER_RUNNER_ID, ia as isSecretMarker, lr as resolveCoreBlockEntry, m as CORE_BLOCK_ADDON_PREFIX, oa as isSecretRefOwnedBy, or as replacedFieldKeys, p as CORE_BLOCKS_ADDON_ID, qi as defineRecordKinds, qr as compositionSourceKey, r as ALL_CAPABILITY_DEFINITIONS, ti as BaseAddon, ur as resolveCoreBlockFiles, v as CoreBlockSchema, va as resolveSecretMarkers, xa as secretTreeFromSchema, zt as coreBlockAddonId } from "../../dist-
|
|
1
|
+
import { $i as hydrateSchema, $n as planComposition, Bt as coreBlockComposition, Hi as collectSecretMarkerRefs, Hr as composedDeviceRef, Ht as coreBlockSourceKind, Kn as normalizeCoreBlockWrite, N as DeclaredDevices, Nr as validateComposition, Ot as buildCapabilityLookup, Rt as compositionSourceRefs, Ta as transformSecretWrite, Ut as coreBlocksCapability, Vt as coreBlockIdFromAddonId, Zt as describeComposableCaps, ei as errMsg, f as COMPOSER_RUNNER_ID, ia as isSecretMarker, lr as resolveCoreBlockEntry, m as CORE_BLOCK_ADDON_PREFIX, oa as isSecretRefOwnedBy, or as replacedFieldKeys, p as CORE_BLOCKS_ADDON_ID, qi as defineRecordKinds, qr as compositionSourceKey, r as ALL_CAPABILITY_DEFINITIONS, ti as BaseAddon, ur as resolveCoreBlockFiles, v as CoreBlockSchema, va as resolveSecretMarkers, xa as secretTreeFromSchema, zt as coreBlockAddonId } from "../../dist-DygMs3Qc.mjs";
|
|
2
2
|
import { t as require_read_all_rows } from "../../read-all-rows-TaPqdWNF.mjs";
|
|
3
|
-
import { t as describeCompositionSources } from "../../composition-sources-
|
|
3
|
+
import { t as describeCompositionSources } from "../../composition-sources-CiFkyAcf.mjs";
|
|
4
4
|
import { t as prefixRange } from "../../prefix-range-Dl0znowN.mjs";
|
|
5
5
|
import { n as unwrapStoredValue, t as loadPrefixed } from "../../prefix-walk-DAOBSyH1.mjs";
|
|
6
6
|
import { createRequire } from "node:module";
|
|
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
|
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
5
|
require("../../chunk-Cek0wNdY.js");
|
|
6
|
-
const require_dist = require("../../dist-
|
|
6
|
+
const require_dist = require("../../dist-BtDdPdZ7.js");
|
|
7
7
|
//#region src/builtins/device-history/time/bucket-time.ts
|
|
8
8
|
/**
|
|
9
9
|
* Bucket arithmetic for the three rollup tiers (D850, plan §4/§5.5).
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { $r as DeviceType, B as HISTORY_ITEM_CATALOG, Ct as armRemovalReconcile, D as DEVICE_HISTORY_ENERGY_KEY, Oa as EventCategory, Qi as historyItemFieldPath, Yi as emitReadiness, en as deviceHistoryCapability, nn as deviceRemovalHookCapability, ti as BaseAddon, ui as HISTORY_DEFAULT_MIN_INTERVAL_MS, z as HISTORY_CATALOG } from "../../dist-
|
|
1
|
+
import { $r as DeviceType, B as HISTORY_ITEM_CATALOG, Ct as armRemovalReconcile, D as DEVICE_HISTORY_ENERGY_KEY, Oa as EventCategory, Qi as historyItemFieldPath, Yi as emitReadiness, en as deviceHistoryCapability, nn as deviceRemovalHookCapability, ti as BaseAddon, ui as HISTORY_DEFAULT_MIN_INTERVAL_MS, z as HISTORY_CATALOG } from "../../dist-DygMs3Qc.mjs";
|
|
2
2
|
//#region src/builtins/device-history/time/bucket-time.ts
|
|
3
3
|
/**
|
|
4
4
|
* Bucket arithmetic for the three rollup tiers (D850, plan §4/§5.5).
|
|
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
|
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
5
|
require("../../chunk-Cek0wNdY.js");
|
|
6
|
-
const require_dist = require("../../dist-
|
|
6
|
+
const require_dist = require("../../dist-BtDdPdZ7.js");
|
|
7
7
|
const require_read_all_rows$1 = require("../../read-all-rows-CVoO1ONM.js");
|
|
8
8
|
const require_prefix_range = require("../../prefix-range-D_KueXbQ.js");
|
|
9
9
|
const require_prefix_walk = require("../../prefix-walk-Dv6MLZlM.js");
|
|
@@ -8988,6 +8988,48 @@ function errorMessage$3(err) {
|
|
|
8988
8988
|
return err instanceof Error ? err.message : String(err);
|
|
8989
8989
|
}
|
|
8990
8990
|
//#endregion
|
|
8991
|
+
//#region src/builtins/device-manager/running-flip.ts
|
|
8992
|
+
function readRunning(slice) {
|
|
8993
|
+
const running = slice["running"];
|
|
8994
|
+
if (running === true || running === false) return running;
|
|
8995
|
+
return null;
|
|
8996
|
+
}
|
|
8997
|
+
var RunningFlipDetector = class {
|
|
8998
|
+
#memory = /* @__PURE__ */ new Map();
|
|
8999
|
+
seed(deviceId, running) {
|
|
9000
|
+
this.#memory.set(deviceId, running);
|
|
9001
|
+
}
|
|
9002
|
+
note(deviceId, slice) {
|
|
9003
|
+
const running = readRunning(slice);
|
|
9004
|
+
const since = typeof slice["since"] === "number" && Number.isFinite(slice["since"]) ? slice["since"] : null;
|
|
9005
|
+
const phase = typeof slice["phase"] === "string" ? slice["phase"] : null;
|
|
9006
|
+
const prev = this.#memory.get(deviceId);
|
|
9007
|
+
this.#memory.set(deviceId, running);
|
|
9008
|
+
if (prev === void 0) {
|
|
9009
|
+
if (running === true) return {
|
|
9010
|
+
kind: "started",
|
|
9011
|
+
deviceId,
|
|
9012
|
+
since,
|
|
9013
|
+
phase
|
|
9014
|
+
};
|
|
9015
|
+
return null;
|
|
9016
|
+
}
|
|
9017
|
+
if (prev === true && running === false) return {
|
|
9018
|
+
kind: "finished",
|
|
9019
|
+
deviceId,
|
|
9020
|
+
since,
|
|
9021
|
+
phase
|
|
9022
|
+
};
|
|
9023
|
+
if (prev !== true && running === true) return {
|
|
9024
|
+
kind: "started",
|
|
9025
|
+
deviceId,
|
|
9026
|
+
since,
|
|
9027
|
+
phase
|
|
9028
|
+
};
|
|
9029
|
+
return null;
|
|
9030
|
+
}
|
|
9031
|
+
};
|
|
9032
|
+
//#endregion
|
|
8991
9033
|
//#region src/builtins/device-manager/runtime-state-persist-gate.ts
|
|
8992
9034
|
/**
|
|
8993
9035
|
* The subset of `blob` that is allowed on disk: slices whose capability
|
|
@@ -9490,6 +9532,7 @@ var MirrorRowWriter = class MirrorRowWriter {
|
|
|
9490
9532
|
* the owner alone — `nativeSlice` and `DeviceNativeShadowChanged`, a category
|
|
9491
9533
|
* the public routers refuse (D224).
|
|
9492
9534
|
*/
|
|
9535
|
+
var RUNNING_STATE_CAP = "running-state";
|
|
9493
9536
|
var SEED_REFUSAL_MESSAGE = "runtime-state row unreadable — native write refused until it reads";
|
|
9494
9537
|
function errorMessage$1(err) {
|
|
9495
9538
|
return err instanceof Error ? err.message : String(err);
|
|
@@ -9524,6 +9567,8 @@ var DeviceStateMirror = class {
|
|
|
9524
9567
|
seedRefusalLogged = /* @__PURE__ */ new Set();
|
|
9525
9568
|
/** Every write of a device's row, and what is believed to be on it. */
|
|
9526
9569
|
writer;
|
|
9570
|
+
/** Edge detector for `running-state` flip events (D933). */
|
|
9571
|
+
runningFlip = new RunningFlipDetector();
|
|
9527
9572
|
constructor(ctx, policyFor = require_dist.runtimeStatePolicyFor, schemaFor = defaultSchemaFor) {
|
|
9528
9573
|
this.ctx = ctx;
|
|
9529
9574
|
this.policyFor = policyFor;
|
|
@@ -9931,6 +9976,7 @@ var DeviceStateMirror = class {
|
|
|
9931
9976
|
meta: { caps: split.dropped }
|
|
9932
9977
|
});
|
|
9933
9978
|
for (const [capName, cap] of this.claims.claimsOf(deviceId)) this.claims.seedView(deviceId, capName, cap, this.nativeOf(deviceId, capName));
|
|
9979
|
+
this.seedRunningFlip(deviceId);
|
|
9934
9980
|
this.seeded.add(deviceId);
|
|
9935
9981
|
this.rowRead.add(deviceId);
|
|
9936
9982
|
this.writer.markPersisted(deviceId, persistableBlob(joinRuntimeBlob(split.native, split.owned, this.policyFor), this.policyFor));
|
|
@@ -10038,12 +10084,36 @@ var DeviceStateMirror = class {
|
|
|
10038
10084
|
for (const deviceId of deviceIds) out[String(deviceId)] = this.snapshotForDevice(deviceId);
|
|
10039
10085
|
return out;
|
|
10040
10086
|
}
|
|
10087
|
+
/** Remember a restored running bit so the first public merge does not emit a flip. */
|
|
10088
|
+
seedRunningFlip(deviceId) {
|
|
10089
|
+
const slice = this.capSlice(deviceId, RUNNING_STATE_CAP);
|
|
10090
|
+
if (slice === null) return;
|
|
10091
|
+
const running = slice["running"];
|
|
10092
|
+
this.runningFlip.seed(deviceId, running === true || running === false ? running : null);
|
|
10093
|
+
}
|
|
10041
10094
|
/**
|
|
10042
10095
|
* The PUBLIC event: exactly `{ deviceId, capName, slice }` for every device,
|
|
10043
10096
|
* claimed or not. The native shadow never rides here (D224) — see
|
|
10044
10097
|
* `emitNativeShadow`.
|
|
10045
10098
|
*/
|
|
10046
10099
|
emitStateChanged(deviceId, capName, slice) {
|
|
10100
|
+
if (capName === RUNNING_STATE_CAP) {
|
|
10101
|
+
const flip = this.runningFlip.note(deviceId, slice);
|
|
10102
|
+
if (flip !== null) this.ctx.eventBus.emit({
|
|
10103
|
+
id: (0, node_crypto.randomUUID)(),
|
|
10104
|
+
timestamp: /* @__PURE__ */ new Date(),
|
|
10105
|
+
source: {
|
|
10106
|
+
type: "device",
|
|
10107
|
+
id: deviceId
|
|
10108
|
+
},
|
|
10109
|
+
category: flip.kind === "started" ? require_dist.EventCategory.RunningStarted : require_dist.EventCategory.RunningFinished,
|
|
10110
|
+
data: {
|
|
10111
|
+
deviceId: flip.deviceId,
|
|
10112
|
+
since: flip.since,
|
|
10113
|
+
phase: flip.phase
|
|
10114
|
+
}
|
|
10115
|
+
});
|
|
10116
|
+
}
|
|
10047
10117
|
this.ctx.eventBus.emit({
|
|
10048
10118
|
id: (0, node_crypto.randomUUID)(),
|
|
10049
10119
|
timestamp: /* @__PURE__ */ new Date(),
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { $r as DeviceType, $t as deviceExtensionCapability, Ea as userError, F as DeviceTombstoneSchema, In as locationIconKey, L as FieldClaimModeSchema, Mn as legacyAutoLinkIds, Ni as WELL_KNOWN_TAB_MAP, Oa as EventCategory, Oi as SECRET_CLEAR, P as DeviceStatusSchema, Pt as canonicalIconKey, Qr as DeviceRole, R as FieldClaimSchema, Sa as sleep$1, Ta as transformSecretWrite, Ui as collectZodSecretPaths, Wt as createDeviceExtensionProvider, Y as MINUTES_PER_DAY, Yt as defineExtensionSlotProvider, Zn as parseStreamParamsFormPatch, Zr as DeviceFeature, aa as isSecretMarkerLike, ba as secretTreeFromPaths, ea as isDeviceConfigCap, ei as errMsg, gn as formatMinutes, hr as runtimeStatePolicyFor, ia as isSecretMarker, in as deviceStatusCapability, jt as buildStreamParamsConfigSchema, l as CAP_NAMES_WITH_STATUS, na as isKeychainStoredField, on as enumerateItemArrayFields, ot as STREAM_PROFILE_META, qi as defineRecordKinds, qn as normalizeUnit, r as ALL_CAPABILITY_DEFINITIONS, ra as isSecretClear, rn as deviceStateCapability, s as CAMERA_SWITCH_ORDER, sn as enumerateSchemaFields, ti as BaseAddon, tn as deviceManagerCapability, un as expandContainer, va as resolveSecretMarkers, w as DAY_NAMES, wa as toSecretFieldView, xr as siteZoneKey } from "../../dist-
|
|
1
|
+
import { $r as DeviceType, $t as deviceExtensionCapability, Ea as userError, F as DeviceTombstoneSchema, In as locationIconKey, L as FieldClaimModeSchema, Mn as legacyAutoLinkIds, Ni as WELL_KNOWN_TAB_MAP, Oa as EventCategory, Oi as SECRET_CLEAR, P as DeviceStatusSchema, Pt as canonicalIconKey, Qr as DeviceRole, R as FieldClaimSchema, Sa as sleep$1, Ta as transformSecretWrite, Ui as collectZodSecretPaths, Wt as createDeviceExtensionProvider, Y as MINUTES_PER_DAY, Yt as defineExtensionSlotProvider, Zn as parseStreamParamsFormPatch, Zr as DeviceFeature, aa as isSecretMarkerLike, ba as secretTreeFromPaths, ea as isDeviceConfigCap, ei as errMsg, gn as formatMinutes, hr as runtimeStatePolicyFor, ia as isSecretMarker, in as deviceStatusCapability, jt as buildStreamParamsConfigSchema, l as CAP_NAMES_WITH_STATUS, na as isKeychainStoredField, on as enumerateItemArrayFields, ot as STREAM_PROFILE_META, qi as defineRecordKinds, qn as normalizeUnit, r as ALL_CAPABILITY_DEFINITIONS, ra as isSecretClear, rn as deviceStateCapability, s as CAMERA_SWITCH_ORDER, sn as enumerateSchemaFields, ti as BaseAddon, tn as deviceManagerCapability, un as expandContainer, va as resolveSecretMarkers, w as DAY_NAMES, wa as toSecretFieldView, xr as siteZoneKey } from "../../dist-DygMs3Qc.mjs";
|
|
2
2
|
import { t as require_read_all_rows } from "../../read-all-rows-TaPqdWNF.mjs";
|
|
3
3
|
import { t as prefixRange } from "../../prefix-range-Dl0znowN.mjs";
|
|
4
4
|
import { t as loadPrefixed } from "../../prefix-walk-DAOBSyH1.mjs";
|
|
@@ -8982,6 +8982,48 @@ function errorMessage$3(err) {
|
|
|
8982
8982
|
return err instanceof Error ? err.message : String(err);
|
|
8983
8983
|
}
|
|
8984
8984
|
//#endregion
|
|
8985
|
+
//#region src/builtins/device-manager/running-flip.ts
|
|
8986
|
+
function readRunning(slice) {
|
|
8987
|
+
const running = slice["running"];
|
|
8988
|
+
if (running === true || running === false) return running;
|
|
8989
|
+
return null;
|
|
8990
|
+
}
|
|
8991
|
+
var RunningFlipDetector = class {
|
|
8992
|
+
#memory = /* @__PURE__ */ new Map();
|
|
8993
|
+
seed(deviceId, running) {
|
|
8994
|
+
this.#memory.set(deviceId, running);
|
|
8995
|
+
}
|
|
8996
|
+
note(deviceId, slice) {
|
|
8997
|
+
const running = readRunning(slice);
|
|
8998
|
+
const since = typeof slice["since"] === "number" && Number.isFinite(slice["since"]) ? slice["since"] : null;
|
|
8999
|
+
const phase = typeof slice["phase"] === "string" ? slice["phase"] : null;
|
|
9000
|
+
const prev = this.#memory.get(deviceId);
|
|
9001
|
+
this.#memory.set(deviceId, running);
|
|
9002
|
+
if (prev === void 0) {
|
|
9003
|
+
if (running === true) return {
|
|
9004
|
+
kind: "started",
|
|
9005
|
+
deviceId,
|
|
9006
|
+
since,
|
|
9007
|
+
phase
|
|
9008
|
+
};
|
|
9009
|
+
return null;
|
|
9010
|
+
}
|
|
9011
|
+
if (prev === true && running === false) return {
|
|
9012
|
+
kind: "finished",
|
|
9013
|
+
deviceId,
|
|
9014
|
+
since,
|
|
9015
|
+
phase
|
|
9016
|
+
};
|
|
9017
|
+
if (prev !== true && running === true) return {
|
|
9018
|
+
kind: "started",
|
|
9019
|
+
deviceId,
|
|
9020
|
+
since,
|
|
9021
|
+
phase
|
|
9022
|
+
};
|
|
9023
|
+
return null;
|
|
9024
|
+
}
|
|
9025
|
+
};
|
|
9026
|
+
//#endregion
|
|
8985
9027
|
//#region src/builtins/device-manager/runtime-state-persist-gate.ts
|
|
8986
9028
|
/**
|
|
8987
9029
|
* The subset of `blob` that is allowed on disk: slices whose capability
|
|
@@ -9484,6 +9526,7 @@ var MirrorRowWriter = class MirrorRowWriter {
|
|
|
9484
9526
|
* the owner alone — `nativeSlice` and `DeviceNativeShadowChanged`, a category
|
|
9485
9527
|
* the public routers refuse (D224).
|
|
9486
9528
|
*/
|
|
9529
|
+
var RUNNING_STATE_CAP = "running-state";
|
|
9487
9530
|
var SEED_REFUSAL_MESSAGE = "runtime-state row unreadable — native write refused until it reads";
|
|
9488
9531
|
function errorMessage$1(err) {
|
|
9489
9532
|
return err instanceof Error ? err.message : String(err);
|
|
@@ -9518,6 +9561,8 @@ var DeviceStateMirror = class {
|
|
|
9518
9561
|
seedRefusalLogged = /* @__PURE__ */ new Set();
|
|
9519
9562
|
/** Every write of a device's row, and what is believed to be on it. */
|
|
9520
9563
|
writer;
|
|
9564
|
+
/** Edge detector for `running-state` flip events (D933). */
|
|
9565
|
+
runningFlip = new RunningFlipDetector();
|
|
9521
9566
|
constructor(ctx, policyFor = runtimeStatePolicyFor, schemaFor = defaultSchemaFor) {
|
|
9522
9567
|
this.ctx = ctx;
|
|
9523
9568
|
this.policyFor = policyFor;
|
|
@@ -9925,6 +9970,7 @@ var DeviceStateMirror = class {
|
|
|
9925
9970
|
meta: { caps: split.dropped }
|
|
9926
9971
|
});
|
|
9927
9972
|
for (const [capName, cap] of this.claims.claimsOf(deviceId)) this.claims.seedView(deviceId, capName, cap, this.nativeOf(deviceId, capName));
|
|
9973
|
+
this.seedRunningFlip(deviceId);
|
|
9928
9974
|
this.seeded.add(deviceId);
|
|
9929
9975
|
this.rowRead.add(deviceId);
|
|
9930
9976
|
this.writer.markPersisted(deviceId, persistableBlob(joinRuntimeBlob(split.native, split.owned, this.policyFor), this.policyFor));
|
|
@@ -10032,12 +10078,36 @@ var DeviceStateMirror = class {
|
|
|
10032
10078
|
for (const deviceId of deviceIds) out[String(deviceId)] = this.snapshotForDevice(deviceId);
|
|
10033
10079
|
return out;
|
|
10034
10080
|
}
|
|
10081
|
+
/** Remember a restored running bit so the first public merge does not emit a flip. */
|
|
10082
|
+
seedRunningFlip(deviceId) {
|
|
10083
|
+
const slice = this.capSlice(deviceId, RUNNING_STATE_CAP);
|
|
10084
|
+
if (slice === null) return;
|
|
10085
|
+
const running = slice["running"];
|
|
10086
|
+
this.runningFlip.seed(deviceId, running === true || running === false ? running : null);
|
|
10087
|
+
}
|
|
10035
10088
|
/**
|
|
10036
10089
|
* The PUBLIC event: exactly `{ deviceId, capName, slice }` for every device,
|
|
10037
10090
|
* claimed or not. The native shadow never rides here (D224) — see
|
|
10038
10091
|
* `emitNativeShadow`.
|
|
10039
10092
|
*/
|
|
10040
10093
|
emitStateChanged(deviceId, capName, slice) {
|
|
10094
|
+
if (capName === RUNNING_STATE_CAP) {
|
|
10095
|
+
const flip = this.runningFlip.note(deviceId, slice);
|
|
10096
|
+
if (flip !== null) this.ctx.eventBus.emit({
|
|
10097
|
+
id: randomUUID(),
|
|
10098
|
+
timestamp: /* @__PURE__ */ new Date(),
|
|
10099
|
+
source: {
|
|
10100
|
+
type: "device",
|
|
10101
|
+
id: deviceId
|
|
10102
|
+
},
|
|
10103
|
+
category: flip.kind === "started" ? EventCategory.RunningStarted : EventCategory.RunningFinished,
|
|
10104
|
+
data: {
|
|
10105
|
+
deviceId: flip.deviceId,
|
|
10106
|
+
since: flip.since,
|
|
10107
|
+
phase: flip.phase
|
|
10108
|
+
}
|
|
10109
|
+
});
|
|
10110
|
+
}
|
|
10041
10111
|
this.ctx.eventBus.emit({
|
|
10042
10112
|
id: randomUUID(),
|
|
10043
10113
|
timestamp: /* @__PURE__ */ new Date(),
|
|
@@ -58,6 +58,8 @@ export declare class DeviceStateMirror {
|
|
|
58
58
|
private readonly seedRefusalLogged;
|
|
59
59
|
/** Every write of a device's row, and what is believed to be on it. */
|
|
60
60
|
private readonly writer;
|
|
61
|
+
/** Edge detector for `running-state` flip events (D933). */
|
|
62
|
+
private readonly runningFlip;
|
|
61
63
|
constructor(ctx: AddonContext, policyFor?: RuntimeStatePolicyLookup, schemaFor?: RuntimeStateSchemaLookup);
|
|
62
64
|
/**
|
|
63
65
|
* Single-cap mirror update — diff against the current mirror,
|
|
@@ -247,6 +249,8 @@ export declare class DeviceStateMirror {
|
|
|
247
249
|
/** Whole-system mirror dump. Backs `deviceState.getAllSnapshots` — one
|
|
248
250
|
* round-trip for a warm boot instead of N per-device calls. */
|
|
249
251
|
allSnapshots(): Record<string, Record<string, Record<string, unknown>>>;
|
|
252
|
+
/** Remember a restored running bit so the first public merge does not emit a flip. */
|
|
253
|
+
private seedRunningFlip;
|
|
250
254
|
/**
|
|
251
255
|
* The PUBLIC event: exactly `{ deviceId, capName, slice }` for every device,
|
|
252
256
|
* claimed or not. The native shadow never rides here (D224) — see
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export interface RunningFlipEvent {
|
|
2
|
+
readonly kind: "started" | "finished";
|
|
3
|
+
readonly deviceId: number;
|
|
4
|
+
readonly since: number | null;
|
|
5
|
+
readonly phase: string | null;
|
|
6
|
+
}
|
|
7
|
+
export declare class RunningFlipDetector {
|
|
8
|
+
#private;
|
|
9
|
+
seed(deviceId: number, running: boolean | null): void;
|
|
10
|
+
note(deviceId: number, slice: Record<string, unknown>): RunningFlipEvent | null;
|
|
11
|
+
}
|
|
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
|
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
5
|
require("../../chunk-Cek0wNdY.js");
|
|
6
|
-
const require_dist = require("../../dist-
|
|
6
|
+
const require_dist = require("../../dist-BtDdPdZ7.js");
|
|
7
7
|
const require_formatter = require("../../formatter-DqAKDlvN.js");
|
|
8
8
|
//#region src/builtins/hub-forwarder/hub-forwarder-destination.ts
|
|
9
9
|
var DEFAULT_OUTBOUND_BUFFER_SIZE = 500;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Ln as logDestinationCapability, ti as BaseAddon } from "../../dist-
|
|
1
|
+
import { Ln as logDestinationCapability, ti as BaseAddon } from "../../dist-DygMs3Qc.mjs";
|
|
2
2
|
import { t as formatLogLine } from "../../formatter-B7qW8bPJ.mjs";
|
|
3
3
|
//#region src/builtins/hub-forwarder/hub-forwarder-destination.ts
|
|
4
4
|
var DEFAULT_OUTBOUND_BUFFER_SIZE = 500;
|