@camstack/system 1.2.428 → 1.2.430
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-names-CpUSuP4w.js +120 -0
- package/dist/agent-https-names-uetr4OQl.mjs +91 -0
- package/dist/auth/auth-audit-log.d.ts +1 -1
- package/dist/auth/device-ca-store.d.ts +57 -0
- package/dist/auth/device-ca.d.ts +75 -0
- package/dist/auth/device-credential-manager.d.ts +154 -0
- package/dist/auth/login-session-manager.d.ts +14 -2
- package/dist/auth/user-management-internal.d.ts +10 -1
- package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.js +1 -1
- package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.mjs +1 -1
- package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.js +1 -1
- package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.mjs +1 -1
- package/dist/builtins/alerts/alerts.addon.js +1 -1
- package/dist/builtins/alerts/alerts.addon.mjs +1 -1
- package/dist/builtins/autotrack/index.js +1 -1
- package/dist/builtins/autotrack/index.mjs +1 -1
- package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.js +2 -2
- package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.mjs +2 -2
- package/dist/builtins/calendars/calendars.addon.js +1 -1
- package/dist/builtins/calendars/calendars.addon.mjs +1 -1
- package/dist/builtins/camera-grid/index.js +1 -1
- package/dist/builtins/camera-grid/index.mjs +1 -1
- package/dist/builtins/composer/composer.addon.js +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-manager/device-manager.addon.js +2 -2
- package/dist/builtins/device-manager/device-manager.addon.mjs +2 -2
- package/dist/builtins/hub-forwarder/index.js +1 -1
- package/dist/builtins/hub-forwarder/index.mjs +1 -1
- package/dist/builtins/keychain/index.js +10 -6
- package/dist/builtins/keychain/index.mjs +8 -4
- 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.d.ts +6 -0
- package/dist/builtins/local-auth/local-auth.addon.js +955 -47
- package/dist/builtins/local-auth/local-auth.addon.mjs +946 -41
- 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/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/file-host-client.d.ts +11 -0
- 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 +34 -4
- package/dist/builtins/sqlite-storage/sqlite-settings.addon.mjs +34 -4
- 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.d.ts +18 -0
- package/dist/builtins/system-config/system-config.addon.js +834 -18
- package/dist/builtins/system-config/system-config.addon.mjs +819 -19
- package/dist/builtins/winston-logging/index.js +1 -1
- package/dist/builtins/winston-logging/index.mjs +1 -1
- package/dist/{composition-sources-BQNxXQZG.mjs → composition-sources-Cw_TXEq9.mjs} +1 -1
- package/dist/{composition-sources-DvCGZEUI.js → composition-sources-o5MPSlk6.js} +1 -1
- package/dist/{constants-CCSJGnjs.js → constants-BcNaVkvI.js} +1 -1
- package/dist/{constants-CR4If_lP.mjs → constants-CttE77VF.mjs} +1 -1
- package/dist/device-ca-B-BTxeCj.mjs +355 -0
- package/dist/device-ca-CKiqh2Iu.js +462 -0
- package/dist/{dist-DHSJV4Qc.mjs → dist-CXG6muCR.mjs} +1052 -35
- package/dist/{dist-BQG3QFg7.js → dist-DxJdci75.js} +1099 -34
- package/dist/file-host-worker.js +1 -1
- package/dist/file-host-worker.mjs +1 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.js +59 -12
- package/dist/index.mjs +10 -9
- package/dist/kernel/index.d.ts +2 -2
- package/dist/kernel/moleculer/mesh-mtls/index.d.ts +4 -1
- package/dist/kernel/moleculer/mesh-mtls/mesh-certificate-registry.d.ts +91 -0
- package/dist/kernel/moleculer/mesh-mtls/mesh-enroll.d.ts +4 -0
- package/dist/kernel/moleculer/mesh-mtls/mesh-peer-transport.d.ts +23 -0
- package/dist/kernel/moleculer/mesh-mtls/mesh-renewal.d.ts +126 -0
- package/dist/kernel/moleculer/mesh-mtls/mesh-tls-gate.d.ts +40 -0
- package/dist/kernel/moleculer/mesh-mtls/tls-tcp-transporter.d.ts +15 -0
- package/dist/{restore-archive-Dccm8lkA.js → restore-archive-CQJNoqRK.js} +1 -1
- package/dist/{restore-archive-DH1Pxq_1.mjs → restore-archive-D_wBL1OO.mjs} +1 -1
- package/dist/{retired-settings-keys-CPz7zpza.mjs → retired-settings-keys-EmDe11cP.mjs} +1 -1
- package/dist/{retired-settings-keys-BfGaSeQI.js → retired-settings-keys-g1oifXxR.js} +1 -1
- package/dist/tls/agent-https-names.d.ts +27 -0
- package/dist/tls/agent-https.d.ts +111 -0
- package/dist/tls/cert-issue.d.ts +7 -0
- package/dist/tls/index.d.ts +3 -0
- package/dist/{tls-BgImdxCO.js → tls-C5IYg3V5.js} +406 -0
- package/dist/{tls-CaOLZ09W.mjs → tls-CpcGkeJV.mjs} +314 -4
- package/dist/{wal-maintenance-DItkuOvu.js → wal-maintenance-BW1LIHi0.js} +0 -0
- package/dist/{wal-maintenance-Drqhcjit.mjs → wal-maintenance-vhPZLYuA.mjs} +0 -0
- package/package.json +4 -1
- package/dist/jwt-signing-key-BZm055IP.js +0 -174
- package/dist/jwt-signing-key-DL-qk1SM.mjs +0 -127
|
@@ -718,7 +718,7 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
718
718
|
return EventCategory;
|
|
719
719
|
}({});
|
|
720
720
|
//#endregion
|
|
721
|
-
//#region ../types/dist/sleep-
|
|
721
|
+
//#region ../types/dist/sleep-DxJdzHni.mjs
|
|
722
722
|
/**
|
|
723
723
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
724
724
|
* window to float samples (D455).
|
|
@@ -9769,6 +9769,206 @@ function scopesAllowAddon(scopes, addonId, access) {
|
|
|
9769
9769
|
return scopes.some((s) => s.type === "addon" && s.target === addonId && s.access.includes(access));
|
|
9770
9770
|
}
|
|
9771
9771
|
/**
|
|
9772
|
+
* Device certificates (D855) — the wire contract shared by the hub, the admin
|
|
9773
|
+
* UI and the native viewer.
|
|
9774
|
+
*
|
|
9775
|
+
* A device (a phone) generates its OWN P-256 key pair in hardware (Secure
|
|
9776
|
+
* Enclave / Android Keystore / a non-extractable WebCrypto key). The private
|
|
9777
|
+
* key never travels. The hub signs the PUBLIC key into an X.509 leaf under a
|
|
9778
|
+
* dedicated device CA; the device later proves possession of the key by
|
|
9779
|
+
* signing a hub-issued nonce, and the hub answers with the same session a
|
|
9780
|
+
* password login opens.
|
|
9781
|
+
*
|
|
9782
|
+
* Everything on the wire is a small string (a PEM, a base64url signature):
|
|
9783
|
+
* D613 is about bulk bytes, and a certificate is ~600 bytes.
|
|
9784
|
+
*/
|
|
9785
|
+
/** Signature algorithm of every device credential: ECDSA, curve P-256, SHA-256. */
|
|
9786
|
+
var DEVICE_CERT_SIGNATURE = "ecdsa-p256-sha256";
|
|
9787
|
+
/** First line of every signed message; a change of format bumps the version. */
|
|
9788
|
+
var DEVICE_SIGNATURE_MESSAGE_VERSION = "camstack-device-cert-v1";
|
|
9789
|
+
zod.z.enum([
|
|
9790
|
+
"login",
|
|
9791
|
+
"renew",
|
|
9792
|
+
"revoke"
|
|
9793
|
+
]);
|
|
9794
|
+
/** One-shot enrollment code and login nonce lifetimes. */
|
|
9795
|
+
var DEVICE_ENROLLMENT_TTL_MS = 10 * 6e4;
|
|
9796
|
+
var DEVICE_NONCE_TTL_MS = 6e4;
|
|
9797
|
+
/** SAN URI prefixes of a device leaf. */
|
|
9798
|
+
var DEVICE_SAN_CREDENTIAL_PREFIX = "camstack:credential:";
|
|
9799
|
+
var DEVICE_SAN_USER_PREFIX = "camstack:user:";
|
|
9800
|
+
/**
|
|
9801
|
+
* The exact bytes a device signs (UTF-8, `\n` separators, no trailing newline):
|
|
9802
|
+
*
|
|
9803
|
+
* camstack-device-cert-v1
|
|
9804
|
+
* <login|renew>
|
|
9805
|
+
* <origin> the hub origin returned by `getDeviceChallenge`
|
|
9806
|
+
* <nonce>
|
|
9807
|
+
*
|
|
9808
|
+
* The origin is part of the message so a signature collected by a look-alike
|
|
9809
|
+
* hub is worthless on the real one; the hub additionally binds the nonce to
|
|
9810
|
+
* the origin it issued it for and refuses any other.
|
|
9811
|
+
*/
|
|
9812
|
+
function buildDeviceSignatureMessage(input) {
|
|
9813
|
+
return [
|
|
9814
|
+
DEVICE_SIGNATURE_MESSAGE_VERSION,
|
|
9815
|
+
input.purpose,
|
|
9816
|
+
input.origin,
|
|
9817
|
+
input.nonce
|
|
9818
|
+
].join("\n");
|
|
9819
|
+
}
|
|
9820
|
+
/** The deep link a QR carries: `camstack://enroll?hub=<origin>&code=<code>`. */
|
|
9821
|
+
function buildDeviceEnrollmentLink(input) {
|
|
9822
|
+
const query = new URLSearchParams();
|
|
9823
|
+
if (input.hub !== void 0) query.set("hub", input.hub);
|
|
9824
|
+
query.set("code", input.code);
|
|
9825
|
+
return `${input.scheme ?? "camstack"}://enroll?${query.toString()}`;
|
|
9826
|
+
}
|
|
9827
|
+
var DevicePlatformSchema = zod.z.enum([
|
|
9828
|
+
"ios",
|
|
9829
|
+
"android",
|
|
9830
|
+
"web",
|
|
9831
|
+
"other"
|
|
9832
|
+
]);
|
|
9833
|
+
var Base64UrlSchema = zod.z.string().min(1).max(4096).regex(/^[A-Za-z0-9_-]+$/);
|
|
9834
|
+
var PemSchema = zod.z.string().min(1).max(16384);
|
|
9835
|
+
/**
|
|
9836
|
+
* Why a device-certificate endpoint said no. Distinct from a transport / 5xx
|
|
9837
|
+
* failure: those carry no reason and mean "try again", never "the credential is
|
|
9838
|
+
* dead". The viewer switches on this exhaustively.
|
|
9839
|
+
*/
|
|
9840
|
+
var DeviceRefusalReasonSchema = zod.z.enum([
|
|
9841
|
+
"revoked",
|
|
9842
|
+
"unknown-credential",
|
|
9843
|
+
"expired",
|
|
9844
|
+
"bad-signature",
|
|
9845
|
+
"nonce-invalid",
|
|
9846
|
+
"rate-limited",
|
|
9847
|
+
"invalid-certificate",
|
|
9848
|
+
"superseded",
|
|
9849
|
+
"user-gone",
|
|
9850
|
+
"unavailable",
|
|
9851
|
+
"code-invalid",
|
|
9852
|
+
"self-enrollment-disabled",
|
|
9853
|
+
"step-up-required",
|
|
9854
|
+
"bad-public-key"
|
|
9855
|
+
]);
|
|
9856
|
+
var DeviceRefusalSchema = zod.z.object({
|
|
9857
|
+
ok: zod.z.literal(false),
|
|
9858
|
+
reason: DeviceRefusalReasonSchema,
|
|
9859
|
+
definitive: zod.z.boolean(),
|
|
9860
|
+
retryAfterSeconds: zod.z.number().optional()
|
|
9861
|
+
});
|
|
9862
|
+
zod.z.object({
|
|
9863
|
+
code: zod.z.string().min(1).max(256),
|
|
9864
|
+
/** SubjectPublicKeyInfo DER of the device's P-256 public key, base64url. */
|
|
9865
|
+
publicKeySpki: Base64UrlSchema,
|
|
9866
|
+
deviceName: zod.z.string().min(1).max(80).optional(),
|
|
9867
|
+
platform: DevicePlatformSchema
|
|
9868
|
+
});
|
|
9869
|
+
var CompleteEnrollmentOutputSchema = zod.z.object({
|
|
9870
|
+
credentialId: zod.z.string(),
|
|
9871
|
+
certPem: PemSchema,
|
|
9872
|
+
/** The device CA certificate the leaf chains to. */
|
|
9873
|
+
chainPem: PemSchema,
|
|
9874
|
+
notAfter: zod.z.number(),
|
|
9875
|
+
user: zod.z.object({
|
|
9876
|
+
id: zod.z.string(),
|
|
9877
|
+
username: zod.z.string()
|
|
9878
|
+
})
|
|
9879
|
+
});
|
|
9880
|
+
zod.z.discriminatedUnion("ok", [CompleteEnrollmentOutputSchema.extend({ ok: zod.z.literal(true) }), DeviceRefusalSchema]);
|
|
9881
|
+
zod.z.object({
|
|
9882
|
+
/** The single-use step-up proof (`auth.deviceEnrollProofFrom…`). */
|
|
9883
|
+
proof: zod.z.string().min(1).max(512),
|
|
9884
|
+
publicKeySpki: Base64UrlSchema,
|
|
9885
|
+
deviceName: zod.z.string().min(1).max(80),
|
|
9886
|
+
platform: DevicePlatformSchema
|
|
9887
|
+
});
|
|
9888
|
+
zod.z.object({
|
|
9889
|
+
proof: zod.z.string(),
|
|
9890
|
+
expiresAt: zod.z.number()
|
|
9891
|
+
});
|
|
9892
|
+
var DeviceChallengeSchema = zod.z.object({
|
|
9893
|
+
nonce: zod.z.string(),
|
|
9894
|
+
/** The origin to put in the signed message. The app compares it to the hub it dialled. */
|
|
9895
|
+
origin: zod.z.string(),
|
|
9896
|
+
expiresAt: zod.z.number(),
|
|
9897
|
+
signature: zod.z.literal(DEVICE_CERT_SIGNATURE)
|
|
9898
|
+
});
|
|
9899
|
+
zod.z.discriminatedUnion("ok", [DeviceChallengeSchema.extend({ ok: zod.z.literal(true) }), DeviceRefusalSchema]);
|
|
9900
|
+
zod.z.object({
|
|
9901
|
+
certPem: PemSchema,
|
|
9902
|
+
nonce: zod.z.string().min(1).max(256),
|
|
9903
|
+
/** ECDSA P-256 SHA-256 over {@link buildDeviceSignatureMessage}; raw r||s or DER, base64url. */
|
|
9904
|
+
signature: Base64UrlSchema
|
|
9905
|
+
});
|
|
9906
|
+
var RenewDeviceCertificateOutputSchema = zod.z.object({
|
|
9907
|
+
credentialId: zod.z.string(),
|
|
9908
|
+
certPem: PemSchema,
|
|
9909
|
+
chainPem: PemSchema,
|
|
9910
|
+
notAfter: zod.z.number()
|
|
9911
|
+
});
|
|
9912
|
+
zod.z.discriminatedUnion("ok", [RenewDeviceCertificateOutputSchema.extend({ ok: zod.z.literal(true) }), DeviceRefusalSchema]);
|
|
9913
|
+
zod.z.discriminatedUnion("ok", [zod.z.object({
|
|
9914
|
+
ok: zod.z.literal(true),
|
|
9915
|
+
credentialId: zod.z.string(),
|
|
9916
|
+
sessionsEnded: zod.z.number().int()
|
|
9917
|
+
}), DeviceRefusalSchema]);
|
|
9918
|
+
function formatDeviceRevoker(revoker) {
|
|
9919
|
+
return revoker.kind === "device" ? "device" : `${revoker.kind}:${revoker.userId}`;
|
|
9920
|
+
}
|
|
9921
|
+
var DeviceCredentialStatusSchema = zod.z.enum([
|
|
9922
|
+
"active",
|
|
9923
|
+
"expired",
|
|
9924
|
+
"revoked"
|
|
9925
|
+
]);
|
|
9926
|
+
var DeviceCredentialSchema = zod.z.object({
|
|
9927
|
+
id: zod.z.string(),
|
|
9928
|
+
userId: zod.z.string(),
|
|
9929
|
+
username: zod.z.string().nullable(),
|
|
9930
|
+
deviceName: zod.z.string(),
|
|
9931
|
+
platform: DevicePlatformSchema,
|
|
9932
|
+
enrolledVia: zod.z.enum(["qr", "self"]),
|
|
9933
|
+
/** SHA-256 of the leaf certificate DER, colon-hex. */
|
|
9934
|
+
fingerprint: zod.z.string(),
|
|
9935
|
+
issuedAt: zod.z.number(),
|
|
9936
|
+
expiresAt: zod.z.number(),
|
|
9937
|
+
lastUsedAt: zod.z.number().nullable(),
|
|
9938
|
+
lastUsedFrom: zod.z.string().nullable(),
|
|
9939
|
+
revokedAt: zod.z.number().nullable(),
|
|
9940
|
+
/** `admin:<userId>` | `user:<userId>` | `device` | `user-deleted`. */
|
|
9941
|
+
revokedBy: zod.z.string().nullable(),
|
|
9942
|
+
status: DeviceCredentialStatusSchema
|
|
9943
|
+
});
|
|
9944
|
+
var StartEnrollmentOutputSchema = zod.z.object({
|
|
9945
|
+
/** Shown once; only its hash is kept. */
|
|
9946
|
+
code: zod.z.string(),
|
|
9947
|
+
expiresAt: zod.z.number(),
|
|
9948
|
+
/** `camstack://enroll?hub=…&code=…` — what the QR encodes. */
|
|
9949
|
+
enrollUrl: zod.z.string(),
|
|
9950
|
+
/** The hub origin in the link, or `null` when the hub could not name one (the link then has no `hub`). */
|
|
9951
|
+
hubOrigin: zod.z.string().nullable(),
|
|
9952
|
+
/** Every origin the apps may try (role `appConnections`). */
|
|
9953
|
+
hubOrigins: zod.z.array(zod.z.string())
|
|
9954
|
+
});
|
|
9955
|
+
zod.z.object({
|
|
9956
|
+
kind: zod.z.literal("device-certificate"),
|
|
9957
|
+
id: zod.z.literal("device-certificate"),
|
|
9958
|
+
label: zod.z.string(),
|
|
9959
|
+
stage: zod.z.literal("primary"),
|
|
9960
|
+
/** tRPC paths under the hub's `auth` router, so a client names no literal. */
|
|
9961
|
+
challengePath: zod.z.literal("auth.getDeviceChallenge"),
|
|
9962
|
+
revokePath: zod.z.literal("auth.revokeOwnDeviceCertificate"),
|
|
9963
|
+
enrollSelfPath: zod.z.literal("auth.enrollSelf"),
|
|
9964
|
+
loginPath: zod.z.literal("auth.loginWithDeviceCertificate"),
|
|
9965
|
+
renewPath: zod.z.literal("auth.renewDeviceCertificate"),
|
|
9966
|
+
signature: zod.z.literal(DEVICE_CERT_SIGNATURE),
|
|
9967
|
+
messageVersion: zod.z.literal(DEVICE_SIGNATURE_MESSAGE_VERSION),
|
|
9968
|
+
/** Which clients can execute it: a native app silently, a browser with a non-extractable WebCrypto key. */
|
|
9969
|
+
clients: zod.z.array(zod.z.enum(["native", "web"]))
|
|
9970
|
+
});
|
|
9971
|
+
/**
|
|
9772
9972
|
* What an expression's named bindings READ from.
|
|
9773
9973
|
*
|
|
9774
9974
|
* Salvaged verbatim from the deleted device-link mechanism. Wiring's source
|
|
@@ -13612,7 +13812,11 @@ var cameraStreamsCapability = {
|
|
|
13612
13812
|
* See `RuntimeStateDurability`. Enforced by
|
|
13613
13813
|
* `scripts/check-runtime-state-durability.ts`.
|
|
13614
13814
|
*/
|
|
13615
|
-
durability: "session"
|
|
13815
|
+
durability: "session",
|
|
13816
|
+
/**
|
|
13817
|
+
* History (D850): none — `online` duplicates device-status.online (one authority); slot data is nested enum/string.
|
|
13818
|
+
*/
|
|
13819
|
+
history: "none"
|
|
13616
13820
|
};
|
|
13617
13821
|
/** `z.void()` — input carries no data. */
|
|
13618
13822
|
function isVoidInput(schema) {
|
|
@@ -16009,6 +16213,220 @@ var keychainCapability = {
|
|
|
16009
16213
|
getState: method(zod.z.object({}), KeychainStateSchema, { auth: "admin" })
|
|
16010
16214
|
}
|
|
16011
16215
|
};
|
|
16216
|
+
var DeviceCaStatusSchema = zod.z.discriminatedUnion("state", [
|
|
16217
|
+
zod.z.object({ state: zod.z.literal("absent") }),
|
|
16218
|
+
zod.z.object({
|
|
16219
|
+
state: zod.z.literal("ready"),
|
|
16220
|
+
subject: zod.z.string(),
|
|
16221
|
+
fingerprintSha256: zod.z.string(),
|
|
16222
|
+
validTo: zod.z.string()
|
|
16223
|
+
}),
|
|
16224
|
+
zod.z.object({
|
|
16225
|
+
state: zod.z.literal("unavailable"),
|
|
16226
|
+
reason: zod.z.string()
|
|
16227
|
+
})
|
|
16228
|
+
]);
|
|
16229
|
+
var DeviceCertificateSettingsSchema = zod.z.object({ selfEnrollment: zod.z.enum(["allowed", "disabled"]) });
|
|
16230
|
+
/**
|
|
16231
|
+
* `device-credentials` — the admin surface of device certificates (D855).
|
|
16232
|
+
*
|
|
16233
|
+
* Everything a device does ITSELF — completing an enrollment, getting a
|
|
16234
|
+
* challenge, signing in, renewing — is a PUBLIC procedure of the hub's `auth`
|
|
16235
|
+
* router (`auth.completeEnrollment`, `getDeviceChallenge`,
|
|
16236
|
+
* `loginWithDeviceCertificate`, `renewDeviceCertificate`): those legs are
|
|
16237
|
+
* proofs of possession, not capability calls, and must not be reachable as
|
|
16238
|
+
* cap methods. This cap holds only what an operator does about them.
|
|
16239
|
+
*
|
|
16240
|
+
* Provider: `local-auth`, which also owns the device CA and the registry.
|
|
16241
|
+
* The hub is the only node that persists device credentials.
|
|
16242
|
+
*/
|
|
16243
|
+
var deviceCredentialsCapability = {
|
|
16244
|
+
name: "device-credentials",
|
|
16245
|
+
scope: "system",
|
|
16246
|
+
mode: "singleton",
|
|
16247
|
+
methods: {
|
|
16248
|
+
/**
|
|
16249
|
+
* Every enrolled device, newest first; `userId` narrows to one user.
|
|
16250
|
+
* `status` is derived: revoked wins over expired.
|
|
16251
|
+
*/
|
|
16252
|
+
listDeviceCredentials: method(zod.z.object({
|
|
16253
|
+
userId: zod.z.string().min(1).optional(),
|
|
16254
|
+
includeRevoked: zod.z.boolean().default(false)
|
|
16255
|
+
}), zod.z.array(DeviceCredentialSchema).readonly(), { auth: "admin" }),
|
|
16256
|
+
/**
|
|
16257
|
+
* Mint a one-shot enrollment code for `userId` and a device name: 128-bit
|
|
16258
|
+
* random, single use, 10 minutes, kept only as a hash. Returns the code
|
|
16259
|
+
* once, with the `camstack://enroll?hub=…&code=…` link a QR carries.
|
|
16260
|
+
* `caller` (the admin) is recorded in the audit trail.
|
|
16261
|
+
*/
|
|
16262
|
+
startEnrollment: method(zod.z.object({
|
|
16263
|
+
userId: zod.z.string().min(1),
|
|
16264
|
+
deviceName: zod.z.string().min(1).max(80)
|
|
16265
|
+
}), StartEnrollmentOutputSchema, {
|
|
16266
|
+
kind: "mutation",
|
|
16267
|
+
auth: "admin",
|
|
16268
|
+
caller: "required"
|
|
16269
|
+
}),
|
|
16270
|
+
/**
|
|
16271
|
+
* Revoke a credential: its certificate stops logging in at once, and every
|
|
16272
|
+
* session it opened ends (an open session also dies at its next refresh
|
|
16273
|
+
* even if this call raced it). Idempotent.
|
|
16274
|
+
*/
|
|
16275
|
+
revokeDeviceCredential: method(zod.z.object({ id: zod.z.string().min(1) }), zod.z.object({
|
|
16276
|
+
revoked: zod.z.boolean(),
|
|
16277
|
+
sessionsEnded: zod.z.number().int(),
|
|
16278
|
+
status: DeviceCredentialStatusSchema
|
|
16279
|
+
}), {
|
|
16280
|
+
kind: "mutation",
|
|
16281
|
+
auth: "admin",
|
|
16282
|
+
caller: "required"
|
|
16283
|
+
}),
|
|
16284
|
+
/**
|
|
16285
|
+
* Hub-wide device-certificate settings. `selfEnrollment`: `allowed`
|
|
16286
|
+
* (default) lets a signed-in user enroll their own device after a step-up
|
|
16287
|
+
* sign-in; `disabled` makes `auth.enrollSelf` refuse. The admin QR path is
|
|
16288
|
+
* unaffected. Hub-wide only (no per-role switch).
|
|
16289
|
+
*/
|
|
16290
|
+
getDeviceCertificateSettings: method(zod.z.object({}), DeviceCertificateSettingsSchema, { auth: "admin" }),
|
|
16291
|
+
setDeviceCertificateSettings: method(DeviceCertificateSettingsSchema, DeviceCertificateSettingsSchema, {
|
|
16292
|
+
kind: "mutation",
|
|
16293
|
+
auth: "admin"
|
|
16294
|
+
}),
|
|
16295
|
+
/**
|
|
16296
|
+
* Delete the registry row of a REVOKED credential (clean-up; the audit trail
|
|
16297
|
+
* keeps the revocation). Refuses a live credential: revoke it first. After
|
|
16298
|
+
* the row is gone the device's next call answers `unknown-credential`.
|
|
16299
|
+
*/
|
|
16300
|
+
deleteDeviceCredential: method(zod.z.object({ id: zod.z.string().min(1) }), zod.z.object({ result: zod.z.enum([
|
|
16301
|
+
"deleted",
|
|
16302
|
+
"live",
|
|
16303
|
+
"unknown"
|
|
16304
|
+
]) }), {
|
|
16305
|
+
kind: "mutation",
|
|
16306
|
+
auth: "admin",
|
|
16307
|
+
caller: "required"
|
|
16308
|
+
}),
|
|
16309
|
+
/**
|
|
16310
|
+
* The device CA: `absent` until the first enrollment creates it (lazily,
|
|
16311
|
+
* never rotated on boot), `unavailable` while the keychain cannot answer.
|
|
16312
|
+
*/
|
|
16313
|
+
getDeviceCaStatus: method(zod.z.object({}), DeviceCaStatusSchema, { auth: "admin" }),
|
|
16314
|
+
/** Rename a credential (the label only; the certificate is unchanged). */
|
|
16315
|
+
renameDeviceCredential: method(zod.z.object({
|
|
16316
|
+
id: zod.z.string().min(1),
|
|
16317
|
+
deviceName: zod.z.string().min(1).max(80)
|
|
16318
|
+
}), zod.z.object({ renamed: zod.z.boolean() }), {
|
|
16319
|
+
kind: "mutation",
|
|
16320
|
+
auth: "admin"
|
|
16321
|
+
})
|
|
16322
|
+
}
|
|
16323
|
+
};
|
|
16324
|
+
/**
|
|
16325
|
+
* `node-certificates` - what a node holds and the two renewals the hub drives
|
|
16326
|
+
* (D856): the node's MESH leaf (mutual TLS to the hub) and its HTTPS leaf (issued
|
|
16327
|
+
* from the hub's local CA so a device that trusts the hub root trusts the node).
|
|
16328
|
+
*
|
|
16329
|
+
* Provided by the AGENT RUNTIME (the synthetic `agent-runtime` addon id, like
|
|
16330
|
+
* `server-management`): the hub reaches it through the ordinary node-pinned
|
|
16331
|
+
* capability call - no new Moleculer action. The hub's own certificates are
|
|
16332
|
+
* handled in-process by the hub (`certificates` router), so this cap has no hub
|
|
16333
|
+
* provider.
|
|
16334
|
+
*
|
|
16335
|
+
* No private key ever crosses the mesh: the node generates its key pair, sends a
|
|
16336
|
+
* CSR, and the hub returns only the signed certificate.
|
|
16337
|
+
*/
|
|
16338
|
+
var MeshLeafInfoSchema = zod.z.object({
|
|
16339
|
+
cn: zod.z.string(),
|
|
16340
|
+
serial: zod.z.string(),
|
|
16341
|
+
fingerprintSha256: zod.z.string(),
|
|
16342
|
+
notBefore: zod.z.number(),
|
|
16343
|
+
notAfter: zod.z.number()
|
|
16344
|
+
});
|
|
16345
|
+
var HttpsLeafInfoSchema = zod.z.object({
|
|
16346
|
+
fingerprintSha256: zod.z.string(),
|
|
16347
|
+
issuer: zod.z.string(),
|
|
16348
|
+
sans: zod.z.array(zod.z.string()),
|
|
16349
|
+
notBefore: zod.z.number(),
|
|
16350
|
+
notAfter: zod.z.number()
|
|
16351
|
+
});
|
|
16352
|
+
var NodeHttpsStateSchema = zod.z.discriminatedUnion("state", [zod.z.object({
|
|
16353
|
+
state: zod.z.literal("served"),
|
|
16354
|
+
leaf: HttpsLeafInfoSchema
|
|
16355
|
+
}), zod.z.object({
|
|
16356
|
+
state: zod.z.literal("not-issued"),
|
|
16357
|
+
reason: zod.z.string()
|
|
16358
|
+
})]);
|
|
16359
|
+
var nodeCertificatesCapability = {
|
|
16360
|
+
name: "node-certificates",
|
|
16361
|
+
scope: "system",
|
|
16362
|
+
mode: "singleton",
|
|
16363
|
+
internal: true,
|
|
16364
|
+
methods: {
|
|
16365
|
+
/** The node's current mesh leaf (`null` when it is not enrolled on mTLS) and HTTPS state. */
|
|
16366
|
+
getCertificates: method(zod.z.object({}), zod.z.object({
|
|
16367
|
+
nodeId: zod.z.string(),
|
|
16368
|
+
mesh: MeshLeafInfoSchema.nullable(),
|
|
16369
|
+
https: NodeHttpsStateSchema
|
|
16370
|
+
}), { auth: "admin" }),
|
|
16371
|
+
/** Generate a NEW mesh key pair on the node; return the CSR (CN = node id). The key stays here. */
|
|
16372
|
+
prepareMeshRenewal: method(zod.z.object({}), zod.z.object({ csrPem: zod.z.string() }), {
|
|
16373
|
+
kind: "mutation",
|
|
16374
|
+
auth: "admin"
|
|
16375
|
+
}),
|
|
16376
|
+
/**
|
|
16377
|
+
* Install the hub-signed leaf for the key made by `prepareMeshRenewal`: persist it
|
|
16378
|
+
* (keeping the previous one), then reconnect to the hub with it. The node reverts to
|
|
16379
|
+
* the previous leaf by itself unless `confirmMeshLeaf` arrives within `confirmWithinMs`.
|
|
16380
|
+
*/
|
|
16381
|
+
installMeshLeaf: method(zod.z.object({
|
|
16382
|
+
certPem: zod.z.string().min(1),
|
|
16383
|
+
caCertPem: zod.z.string().min(1),
|
|
16384
|
+
confirmWithinMs: zod.z.number().int().min(1e4).max(6e5)
|
|
16385
|
+
}), zod.z.object({
|
|
16386
|
+
fingerprintSha256: zod.z.string(),
|
|
16387
|
+
serial: zod.z.string()
|
|
16388
|
+
}), {
|
|
16389
|
+
kind: "mutation",
|
|
16390
|
+
auth: "admin"
|
|
16391
|
+
}),
|
|
16392
|
+
/** The hub saw the node reconnect with the new leaf: keep it, forget the previous one. */
|
|
16393
|
+
confirmMeshLeaf: method(zod.z.object({ fingerprintSha256: zod.z.string() }), zod.z.object({ confirmed: zod.z.boolean() }), {
|
|
16394
|
+
kind: "mutation",
|
|
16395
|
+
auth: "admin"
|
|
16396
|
+
}),
|
|
16397
|
+
/** Go back to the previous leaf now. `false` when there is none to go back to. */
|
|
16398
|
+
rollbackMeshLeaf: method(zod.z.object({}), zod.z.object({ rolledBack: zod.z.boolean() }), {
|
|
16399
|
+
kind: "mutation",
|
|
16400
|
+
auth: "admin"
|
|
16401
|
+
}),
|
|
16402
|
+
/** A key pair + CSR for the node's HTTPS leaf, and the names the node reports for itself. */
|
|
16403
|
+
prepareHttpsCertificate: method(zod.z.object({}), zod.z.object({
|
|
16404
|
+
csrPem: zod.z.string(),
|
|
16405
|
+
hostnames: zod.z.array(zod.z.string()),
|
|
16406
|
+
addresses: zod.z.array(zod.z.string()),
|
|
16407
|
+
/** SHA-256 of the hub local CA this node pinned at its first install; `null` before one. */
|
|
16408
|
+
pinnedCaFingerprintSha256: zod.z.string().nullable()
|
|
16409
|
+
}), {
|
|
16410
|
+
kind: "mutation",
|
|
16411
|
+
auth: "admin"
|
|
16412
|
+
}),
|
|
16413
|
+
/** Install the hub-signed HTTPS leaf and hot-swap the serving context (no restart). */
|
|
16414
|
+
installHttpsCertificate: method(zod.z.object({
|
|
16415
|
+
certPem: zod.z.string().min(1),
|
|
16416
|
+
caCertPem: zod.z.string().min(1),
|
|
16417
|
+
/**
|
|
16418
|
+
* The hub signals that its local CA was rotated (D227) and this leaf chains to the NEW
|
|
16419
|
+
* one. Only the hub, over the authenticated mesh, can say so; a leaf with a different CA
|
|
16420
|
+
* and no signal is refused.
|
|
16421
|
+
*/
|
|
16422
|
+
caRotation: zod.z.boolean().optional()
|
|
16423
|
+
}), HttpsLeafInfoSchema, {
|
|
16424
|
+
kind: "mutation",
|
|
16425
|
+
auth: "admin"
|
|
16426
|
+
})
|
|
16427
|
+
},
|
|
16428
|
+
mount: { kind: "skip" }
|
|
16429
|
+
};
|
|
16012
16430
|
/**
|
|
16013
16431
|
* `keychain-admin` — the operator's view of the keychain (System → Secrets).
|
|
16014
16432
|
*
|
|
@@ -16678,6 +17096,10 @@ var deviceDiscoveryCapability = {
|
|
|
16678
17096
|
* `scripts/check-runtime-state-durability.ts`.
|
|
16679
17097
|
*/
|
|
16680
17098
|
durability: "session",
|
|
17099
|
+
/**
|
|
17100
|
+
* History (D850): none — inventory.
|
|
17101
|
+
*/
|
|
17102
|
+
history: "none",
|
|
16681
17103
|
methods: {
|
|
16682
17104
|
/**
|
|
16683
17105
|
* Snapshot of the current `discovered` list. Returns the
|
|
@@ -42298,6 +42720,10 @@ var alarmPanelCapability = {
|
|
|
42298
42720
|
* `scripts/check-runtime-state-durability.ts`.
|
|
42299
42721
|
*/
|
|
42300
42722
|
durability: "restored",
|
|
42723
|
+
/**
|
|
42724
|
+
* History (D850): none — enum state; arm/disarm history belongs in the events ledger.
|
|
42725
|
+
*/
|
|
42726
|
+
history: "none",
|
|
42301
42727
|
/** Clock fields: written, but excluded from the compare that decides
|
|
42302
42728
|
* whether persisting is worth a SQLite commit. */
|
|
42303
42729
|
volatileStateFields: ["lastChangedAt"]
|
|
@@ -50208,7 +50634,11 @@ var zonesCapability = {
|
|
|
50208
50634
|
* See `RuntimeStateDurability`. Enforced by
|
|
50209
50635
|
* `scripts/check-runtime-state-durability.ts`.
|
|
50210
50636
|
*/
|
|
50211
|
-
durability: "restored"
|
|
50637
|
+
durability: "restored",
|
|
50638
|
+
/**
|
|
50639
|
+
* History (D850): none — configuration arrays.
|
|
50640
|
+
*/
|
|
50641
|
+
history: "none"
|
|
50212
50642
|
};
|
|
50213
50643
|
/**
|
|
50214
50644
|
* A bounding box in NORMALIZED [0,1] frame coordinates for `getNativeCrop`. The
|
|
@@ -54078,6 +54508,10 @@ var streamSignalsCapability = {
|
|
|
54078
54508
|
* `scripts/check-runtime-state-durability.ts`.
|
|
54079
54509
|
*/
|
|
54080
54510
|
durability: "session",
|
|
54511
|
+
/**
|
|
54512
|
+
* History (D850): none — array state.
|
|
54513
|
+
*/
|
|
54514
|
+
history: "none",
|
|
54081
54515
|
methods: {
|
|
54082
54516
|
/**
|
|
54083
54517
|
* What this device can emit. Empty is a valid and common answer — most
|
|
@@ -56922,6 +57356,36 @@ var airQualitySensorCapability = {
|
|
|
56922
57356
|
* `scripts/check-runtime-state-durability.ts`.
|
|
56923
57357
|
*/
|
|
56924
57358
|
durability: "restored",
|
|
57359
|
+
/**
|
|
57360
|
+
* History (D850): recorded series.
|
|
57361
|
+
*/
|
|
57362
|
+
history: { fields: {
|
|
57363
|
+
co2Ppm: {
|
|
57364
|
+
kind: "gauge",
|
|
57365
|
+
unit: "ppm",
|
|
57366
|
+
deadband: 5
|
|
57367
|
+
},
|
|
57368
|
+
vocPpb: {
|
|
57369
|
+
kind: "gauge",
|
|
57370
|
+
unit: "ppb",
|
|
57371
|
+
deadband: 5
|
|
57372
|
+
},
|
|
57373
|
+
pm25: {
|
|
57374
|
+
kind: "gauge",
|
|
57375
|
+
unit: "ug/m3",
|
|
57376
|
+
deadband: 1
|
|
57377
|
+
},
|
|
57378
|
+
pm10: {
|
|
57379
|
+
kind: "gauge",
|
|
57380
|
+
unit: "ug/m3",
|
|
57381
|
+
deadband: 1
|
|
57382
|
+
},
|
|
57383
|
+
aqi: {
|
|
57384
|
+
kind: "gauge",
|
|
57385
|
+
unit: "count",
|
|
57386
|
+
deadband: 1
|
|
57387
|
+
}
|
|
57388
|
+
} },
|
|
56925
57389
|
/** Clock fields: written, but excluded from the compare that decides
|
|
56926
57390
|
* whether persisting is worth a SQLite commit. */
|
|
56927
57391
|
volatileStateFields: ["lastFetchedAt"]
|
|
@@ -56964,6 +57428,15 @@ var ambientLightSensorCapability = {
|
|
|
56964
57428
|
* `scripts/check-runtime-state-durability.ts`.
|
|
56965
57429
|
*/
|
|
56966
57430
|
durability: "restored",
|
|
57431
|
+
/**
|
|
57432
|
+
* History (D850): recorded series. Wide range, so a RELATIVE deadband (10 %).
|
|
57433
|
+
*/
|
|
57434
|
+
history: { fields: { lux: {
|
|
57435
|
+
kind: "gauge",
|
|
57436
|
+
unit: "lx",
|
|
57437
|
+
deadbandPct: 10,
|
|
57438
|
+
minIntervalMs: 6e4
|
|
57439
|
+
} } },
|
|
56967
57440
|
/** Clock fields: written, but excluded from the compare that decides
|
|
56968
57441
|
* whether persisting is worth a SQLite commit. */
|
|
56969
57442
|
volatileStateFields: ["lastFetchedAt"]
|
|
@@ -57100,7 +57573,11 @@ var audioMetricsCapability = {
|
|
|
57100
57573
|
* See `RuntimeStateDurability`. Enforced by
|
|
57101
57574
|
* `scripts/check-runtime-state-durability.ts`.
|
|
57102
57575
|
*/
|
|
57103
|
-
durability: "session"
|
|
57576
|
+
durability: "session",
|
|
57577
|
+
/**
|
|
57578
|
+
* History (D850): none — the level is the addon series `pipeline-analytics/audio-level` (producer `record`); the other numbers move every inference window and duplicate it.
|
|
57579
|
+
*/
|
|
57580
|
+
history: "none"
|
|
57104
57581
|
};
|
|
57105
57582
|
/**
|
|
57106
57583
|
* Automation-control cap. Models HA `automation.*` entities on
|
|
@@ -57169,7 +57646,11 @@ var automationControlCapability = {
|
|
|
57169
57646
|
* See `RuntimeStateDurability`. Enforced by
|
|
57170
57647
|
* `scripts/check-runtime-state-durability.ts`.
|
|
57171
57648
|
*/
|
|
57172
|
-
durability: "session"
|
|
57649
|
+
durability: "session",
|
|
57650
|
+
/**
|
|
57651
|
+
* History (D850): none — configuration and transient run state.
|
|
57652
|
+
*/
|
|
57653
|
+
history: "none"
|
|
57173
57654
|
};
|
|
57174
57655
|
/**
|
|
57175
57656
|
* Battery status snapshot. Emitted by providers whose device is
|
|
@@ -57350,6 +57831,13 @@ onStatusChanged: { data: zod.z.object({
|
|
|
57350
57831
|
* `scripts/check-runtime-state-durability.ts`.
|
|
57351
57832
|
*/
|
|
57352
57833
|
durability: "restored",
|
|
57834
|
+
/**
|
|
57835
|
+
* History (D850): recorded series. The generic capture replaces the `battery` series of `pipeline-analytics:stats-5m`.
|
|
57836
|
+
*/
|
|
57837
|
+
history: { fields: { percentage: {
|
|
57838
|
+
kind: "gauge",
|
|
57839
|
+
unit: "%"
|
|
57840
|
+
} } },
|
|
57353
57841
|
/** Clock fields: written, but excluded from the compare that decides
|
|
57354
57842
|
* whether persisting is worth a SQLite commit. */
|
|
57355
57843
|
volatileStateFields: ["lastUpdated"]
|
|
@@ -57389,6 +57877,10 @@ var binaryCapability = {
|
|
|
57389
57877
|
* `scripts/check-runtime-state-durability.ts`.
|
|
57390
57878
|
*/
|
|
57391
57879
|
durability: "restored",
|
|
57880
|
+
/**
|
|
57881
|
+
* History (D850): recorded series.
|
|
57882
|
+
*/
|
|
57883
|
+
history: { fields: { on: { kind: "boolean" } } },
|
|
57392
57884
|
/** Clock fields: written, but excluded from the compare that decides
|
|
57393
57885
|
* whether persisting is worth a SQLite commit. */
|
|
57394
57886
|
volatileStateFields: ["lastChangedAt"]
|
|
@@ -57451,7 +57943,15 @@ onBrightnessChanged: { data: zod.z.object({
|
|
|
57451
57943
|
* See `RuntimeStateDurability`. Enforced by
|
|
57452
57944
|
* `scripts/check-runtime-state-durability.ts`.
|
|
57453
57945
|
*/
|
|
57454
|
-
durability: "session"
|
|
57946
|
+
durability: "session",
|
|
57947
|
+
/**
|
|
57948
|
+
* History (D850): recorded series. Actuator tier: level keeps every change.
|
|
57949
|
+
*/
|
|
57950
|
+
history: { fields: { percentage: {
|
|
57951
|
+
kind: "gauge",
|
|
57952
|
+
unit: "%",
|
|
57953
|
+
minIntervalMs: 0
|
|
57954
|
+
} } }
|
|
57455
57955
|
};
|
|
57456
57956
|
/**
|
|
57457
57957
|
* button — device-scoped capability for HA `button.*` / `input_button.*`
|
|
@@ -57882,6 +58382,10 @@ var carbonMonoxideCapability = {
|
|
|
57882
58382
|
* `scripts/check-runtime-state-durability.ts`.
|
|
57883
58383
|
*/
|
|
57884
58384
|
durability: "restored",
|
|
58385
|
+
/**
|
|
58386
|
+
* History (D850): recorded series.
|
|
58387
|
+
*/
|
|
58388
|
+
history: { fields: { detected: { kind: "boolean" } } },
|
|
57885
58389
|
/** Clock fields: written, but excluded from the compare that decides
|
|
57886
58390
|
* whether persisting is worth a SQLite commit. */
|
|
57887
58391
|
volatileStateFields: ["lastChangedAt"]
|
|
@@ -58051,7 +58555,37 @@ var climateControlCapability = {
|
|
|
58051
58555
|
* See `RuntimeStateDurability`. Enforced by
|
|
58052
58556
|
* `scripts/check-runtime-state-durability.ts`.
|
|
58053
58557
|
*/
|
|
58054
|
-
durability: "session"
|
|
58558
|
+
durability: "session",
|
|
58559
|
+
/**
|
|
58560
|
+
* History (D850): recorded series. Celsius by contract; setpoints keep every change (`minIntervalMs: 0`).
|
|
58561
|
+
*/
|
|
58562
|
+
history: { fields: {
|
|
58563
|
+
currentTemp: {
|
|
58564
|
+
kind: "gauge",
|
|
58565
|
+
unit: "°C",
|
|
58566
|
+
deadband: .1
|
|
58567
|
+
},
|
|
58568
|
+
currentHumidity: {
|
|
58569
|
+
kind: "gauge",
|
|
58570
|
+
unit: "%",
|
|
58571
|
+
deadband: .5
|
|
58572
|
+
},
|
|
58573
|
+
target: {
|
|
58574
|
+
kind: "gauge",
|
|
58575
|
+
unit: "°C",
|
|
58576
|
+
minIntervalMs: 0
|
|
58577
|
+
},
|
|
58578
|
+
targetHigh: {
|
|
58579
|
+
kind: "gauge",
|
|
58580
|
+
unit: "°C",
|
|
58581
|
+
minIntervalMs: 0
|
|
58582
|
+
},
|
|
58583
|
+
targetLow: {
|
|
58584
|
+
kind: "gauge",
|
|
58585
|
+
unit: "°C",
|
|
58586
|
+
minIntervalMs: 0
|
|
58587
|
+
}
|
|
58588
|
+
} }
|
|
58055
58589
|
};
|
|
58056
58590
|
/**
|
|
58057
58591
|
* Color-light cap. Coexists with `switch` (on/off) and `brightness`
|
|
@@ -58168,7 +58702,11 @@ onColorChanged: { data: zod.z.object({
|
|
|
58168
58702
|
* See `RuntimeStateDurability`. Enforced by
|
|
58169
58703
|
* `scripts/check-runtime-state-durability.ts`.
|
|
58170
58704
|
*/
|
|
58171
|
-
durability: "session"
|
|
58705
|
+
durability: "session",
|
|
58706
|
+
/**
|
|
58707
|
+
* History (D850): none — nested and cosmetic.
|
|
58708
|
+
*/
|
|
58709
|
+
history: "none"
|
|
58172
58710
|
};
|
|
58173
58711
|
var ConnectionTestOutcomeSchema = zod.z.discriminatedUnion("outcome", [
|
|
58174
58712
|
zod.z.object({
|
|
@@ -58242,6 +58780,10 @@ var connectivityCapability = {
|
|
|
58242
58780
|
* `scripts/check-runtime-state-durability.ts`.
|
|
58243
58781
|
*/
|
|
58244
58782
|
durability: "restored",
|
|
58783
|
+
/**
|
|
58784
|
+
* History (D850): none — duplicates device-status.online (one authority for availability).
|
|
58785
|
+
*/
|
|
58786
|
+
history: "none",
|
|
58245
58787
|
/** Clock fields: written, but excluded from the compare that decides
|
|
58246
58788
|
* whether persisting is worth a SQLite commit. */
|
|
58247
58789
|
volatileStateFields: ["lastChangedAt"]
|
|
@@ -58366,6 +58908,10 @@ reset: method(zod.z.object({
|
|
|
58366
58908
|
* `scripts/check-runtime-state-durability.ts`.
|
|
58367
58909
|
*/
|
|
58368
58910
|
durability: "restored",
|
|
58911
|
+
/**
|
|
58912
|
+
* History (D850): none — `items` is an array keyed by runtime ids; a history path never enters it.
|
|
58913
|
+
*/
|
|
58914
|
+
history: "none",
|
|
58369
58915
|
/** Clocks, not content: a re-read that changed no item costs no commit. */
|
|
58370
58916
|
volatileStateFields: ["lastChangedAt", "lastFetchedAt"]
|
|
58371
58917
|
};
|
|
@@ -58406,6 +58952,10 @@ var contactCapability = {
|
|
|
58406
58952
|
* `scripts/check-runtime-state-durability.ts`.
|
|
58407
58953
|
*/
|
|
58408
58954
|
durability: "restored",
|
|
58955
|
+
/**
|
|
58956
|
+
* History (D850): recorded series.
|
|
58957
|
+
*/
|
|
58958
|
+
history: { fields: { entryOpen: { kind: "boolean" } } },
|
|
58409
58959
|
/** Clock fields: written, but excluded from the compare that decides
|
|
58410
58960
|
* whether persisting is worth a SQLite commit. */
|
|
58411
58961
|
volatileStateFields: ["lastChangedAt"]
|
|
@@ -58545,7 +59095,11 @@ var controlCapability = {
|
|
|
58545
59095
|
* See `RuntimeStateDurability`. Enforced by
|
|
58546
59096
|
* `scripts/check-runtime-state-durability.ts`.
|
|
58547
59097
|
*/
|
|
58548
|
-
durability: "session"
|
|
59098
|
+
durability: "session",
|
|
59099
|
+
/**
|
|
59100
|
+
* History (D850): none — `value` is a number/string union; configuration entity.
|
|
59101
|
+
*/
|
|
59102
|
+
history: "none"
|
|
58549
59103
|
};
|
|
58550
59104
|
/**
|
|
58551
59105
|
* Window covering / blinds / garage door / valve cap. Models HA
|
|
@@ -58636,6 +59190,14 @@ var coverCapability = {
|
|
|
58636
59190
|
* `scripts/check-runtime-state-durability.ts`.
|
|
58637
59191
|
*/
|
|
58638
59192
|
durability: "restored",
|
|
59193
|
+
/**
|
|
59194
|
+
* History (D850): recorded series. Actuator tier: position keeps every tick of a movement.
|
|
59195
|
+
*/
|
|
59196
|
+
history: { fields: { position: {
|
|
59197
|
+
kind: "gauge",
|
|
59198
|
+
unit: "%",
|
|
59199
|
+
minIntervalMs: 0
|
|
59200
|
+
} } },
|
|
58639
59201
|
/** Clock fields: written, but excluded from the compare that decides
|
|
58640
59202
|
* whether persisting is worth a SQLite commit. */
|
|
58641
59203
|
volatileStateFields: ["lastChangedAt"]
|
|
@@ -58740,6 +59302,10 @@ var dayNightCapability = {
|
|
|
58740
59302
|
* `scripts/check-runtime-state-durability.ts`.
|
|
58741
59303
|
*/
|
|
58742
59304
|
durability: "restored",
|
|
59305
|
+
/**
|
|
59306
|
+
* History (D850): none — firmware configuration, not a measurement.
|
|
59307
|
+
*/
|
|
59308
|
+
history: "none",
|
|
58743
59309
|
/** Clock fields: written, but excluded from the compare that decides
|
|
58744
59310
|
* whether persisting is worth a SQLite commit. */
|
|
58745
59311
|
volatileStateFields: ["lastFetchedAt"]
|
|
@@ -58797,6 +59363,10 @@ onStatusChanged: { data: zod.z.object({
|
|
|
58797
59363
|
* `scripts/check-runtime-state-durability.ts`.
|
|
58798
59364
|
*/
|
|
58799
59365
|
durability: "restored",
|
|
59366
|
+
/**
|
|
59367
|
+
* History (D850): recorded series. The ONE availability series.
|
|
59368
|
+
*/
|
|
59369
|
+
history: { fields: { online: { kind: "boolean" } } },
|
|
58800
59370
|
/** Clock fields: written, but excluded from the compare that decides
|
|
58801
59371
|
* whether persisting is worth a SQLite commit. */
|
|
58802
59372
|
volatileStateFields: ["lastChangedAt"]
|
|
@@ -58863,7 +59433,11 @@ onPressed: {
|
|
|
58863
59433
|
* See `RuntimeStateDurability`. Enforced by
|
|
58864
59434
|
* `scripts/check-runtime-state-durability.ts`.
|
|
58865
59435
|
*/
|
|
58866
|
-
durability: "restored"
|
|
59436
|
+
durability: "restored",
|
|
59437
|
+
/**
|
|
59438
|
+
* History (D850): none — `pressCountSinceStart` resets with the addon, so it is not a monotonic meter; presses live in the events ledger.
|
|
59439
|
+
*/
|
|
59440
|
+
history: "none"
|
|
58867
59441
|
};
|
|
58868
59442
|
/**
|
|
58869
59443
|
* Enum-state sensor — a string value picked from a finite option set.
|
|
@@ -58911,6 +59485,10 @@ var enumSensorCapability = {
|
|
|
58911
59485
|
* `scripts/check-runtime-state-durability.ts`.
|
|
58912
59486
|
*/
|
|
58913
59487
|
durability: "restored",
|
|
59488
|
+
/**
|
|
59489
|
+
* History (D850): none — text/enum state has no history (non-goal).
|
|
59490
|
+
*/
|
|
59491
|
+
history: "none",
|
|
58914
59492
|
/** Clock fields: written, but excluded from the compare that decides
|
|
58915
59493
|
* whether persisting is worth a SQLite commit. */
|
|
58916
59494
|
volatileStateFields: ["lastFetchedAt"]
|
|
@@ -58956,7 +59534,11 @@ var eventEmitterCapability = {
|
|
|
58956
59534
|
* See `RuntimeStateDurability`. Enforced by
|
|
58957
59535
|
* `scripts/check-runtime-state-durability.ts`.
|
|
58958
59536
|
*/
|
|
58959
|
-
durability: "session"
|
|
59537
|
+
durability: "session",
|
|
59538
|
+
/**
|
|
59539
|
+
* History (D850): none — `eventCountSinceStart` resets with the addon; events live in ledgers.
|
|
59540
|
+
*/
|
|
59541
|
+
history: "none"
|
|
58960
59542
|
};
|
|
58961
59543
|
var IdentitySchema = zod.z.object({
|
|
58962
59544
|
id: zod.z.string(),
|
|
@@ -59452,7 +60034,18 @@ var fanControlCapability = {
|
|
|
59452
60034
|
* See `RuntimeStateDurability`. Enforced by
|
|
59453
60035
|
* `scripts/check-runtime-state-durability.ts`.
|
|
59454
60036
|
*/
|
|
59455
|
-
durability: "session"
|
|
60037
|
+
durability: "session",
|
|
60038
|
+
/**
|
|
60039
|
+
* History (D850): recorded series. Actuator tier: speed keeps every change.
|
|
60040
|
+
*/
|
|
60041
|
+
history: { fields: {
|
|
60042
|
+
percentage: {
|
|
60043
|
+
kind: "gauge",
|
|
60044
|
+
unit: "%",
|
|
60045
|
+
minIntervalMs: 0
|
|
60046
|
+
},
|
|
60047
|
+
oscillating: { kind: "boolean" }
|
|
60048
|
+
} }
|
|
59456
60049
|
};
|
|
59457
60050
|
/**
|
|
59458
60051
|
* Per-device feature/identity probe slice. Holds the runtime-resolved
|
|
@@ -59535,7 +60128,11 @@ onProbeChanged: { data: zod.z.object({
|
|
|
59535
60128
|
* See `RuntimeStateDurability`. Enforced by
|
|
59536
60129
|
* `scripts/check-runtime-state-durability.ts`.
|
|
59537
60130
|
*/
|
|
59538
|
-
durability: "session"
|
|
60131
|
+
durability: "session",
|
|
60132
|
+
/**
|
|
60133
|
+
* History (D850): none — static identity and capability probe.
|
|
60134
|
+
*/
|
|
60135
|
+
history: "none"
|
|
59539
60136
|
};
|
|
59540
60137
|
/**
|
|
59541
60138
|
* Water leak / moisture sensor. Boolean "is liquid currently
|
|
@@ -59570,6 +60167,10 @@ var floodCapability = {
|
|
|
59570
60167
|
* `scripts/check-runtime-state-durability.ts`.
|
|
59571
60168
|
*/
|
|
59572
60169
|
durability: "restored",
|
|
60170
|
+
/**
|
|
60171
|
+
* History (D850): recorded series.
|
|
60172
|
+
*/
|
|
60173
|
+
history: { fields: { flooded: { kind: "boolean" } } },
|
|
59573
60174
|
/** Clock fields: written, but excluded from the compare that decides
|
|
59574
60175
|
* whether persisting is worth a SQLite commit. */
|
|
59575
60176
|
volatileStateFields: ["lastChangedAt"]
|
|
@@ -59603,6 +60204,10 @@ var gasCapability = {
|
|
|
59603
60204
|
* `scripts/check-runtime-state-durability.ts`.
|
|
59604
60205
|
*/
|
|
59605
60206
|
durability: "restored",
|
|
60207
|
+
/**
|
|
60208
|
+
* History (D850): recorded series.
|
|
60209
|
+
*/
|
|
60210
|
+
history: { fields: { detected: { kind: "boolean" } } },
|
|
59606
60211
|
/** Clock fields: written, but excluded from the compare that decides
|
|
59607
60212
|
* whether persisting is worth a SQLite commit. */
|
|
59608
60213
|
volatileStateFields: ["lastChangedAt"]
|
|
@@ -59688,7 +60293,18 @@ var humidifierCapability = {
|
|
|
59688
60293
|
* See `RuntimeStateDurability`. Enforced by
|
|
59689
60294
|
* `scripts/check-runtime-state-durability.ts`.
|
|
59690
60295
|
*/
|
|
59691
|
-
durability: "session"
|
|
60296
|
+
durability: "session",
|
|
60297
|
+
/**
|
|
60298
|
+
* History (D850): recorded series.
|
|
60299
|
+
*/
|
|
60300
|
+
history: { fields: {
|
|
60301
|
+
currentHumidity: {
|
|
60302
|
+
kind: "gauge",
|
|
60303
|
+
unit: "%",
|
|
60304
|
+
deadband: .5
|
|
60305
|
+
},
|
|
60306
|
+
on: { kind: "boolean" }
|
|
60307
|
+
} }
|
|
59692
60308
|
};
|
|
59693
60309
|
/**
|
|
59694
60310
|
* Single-metric humidity reading. Drives Home Assistant `sensor`
|
|
@@ -59732,6 +60348,14 @@ var humiditySensorCapability = {
|
|
|
59732
60348
|
* `scripts/check-runtime-state-durability.ts`.
|
|
59733
60349
|
*/
|
|
59734
60350
|
durability: "restored",
|
|
60351
|
+
/**
|
|
60352
|
+
* History (D850): recorded series.
|
|
60353
|
+
*/
|
|
60354
|
+
history: { fields: { percent: {
|
|
60355
|
+
kind: "gauge",
|
|
60356
|
+
unit: "%",
|
|
60357
|
+
deadband: .5
|
|
60358
|
+
} } },
|
|
59735
60359
|
/** Clock fields: written, but excluded from the compare that decides
|
|
59736
60360
|
* whether persisting is worth a SQLite commit. */
|
|
59737
60361
|
volatileStateFields: ["lastFetchedAt"]
|
|
@@ -59779,7 +60403,11 @@ var imageCapability = {
|
|
|
59779
60403
|
* See `RuntimeStateDurability`. Enforced by
|
|
59780
60404
|
* `scripts/check-runtime-state-durability.ts`.
|
|
59781
60405
|
*/
|
|
59782
|
-
durability: "session"
|
|
60406
|
+
durability: "session",
|
|
60407
|
+
/**
|
|
60408
|
+
* History (D850): none — not numeric.
|
|
60409
|
+
*/
|
|
60410
|
+
history: "none"
|
|
59783
60411
|
};
|
|
59784
60412
|
/**
|
|
59785
60413
|
* Vendor-neutral image / picture-adjustment cap — the per-camera config
|
|
@@ -59936,6 +60564,10 @@ var imageSettingsCapability = {
|
|
|
59936
60564
|
* `scripts/check-runtime-state-durability.ts`.
|
|
59937
60565
|
*/
|
|
59938
60566
|
durability: "restored",
|
|
60567
|
+
/**
|
|
60568
|
+
* History (D850): none — camera image configuration (operator intent), not a trend.
|
|
60569
|
+
*/
|
|
60570
|
+
history: "none",
|
|
59939
60571
|
/** Clock fields: written, but excluded from the compare that decides
|
|
59940
60572
|
* whether persisting is worth a SQLite commit. */
|
|
59941
60573
|
volatileStateFields: ["lastFetchedAt"]
|
|
@@ -60339,7 +60971,11 @@ var intercomCapability = {
|
|
|
60339
60971
|
* See `RuntimeStateDurability`. Enforced by
|
|
60340
60972
|
* `scripts/check-runtime-state-durability.ts`.
|
|
60341
60973
|
*/
|
|
60342
|
-
durability: "session"
|
|
60974
|
+
durability: "session",
|
|
60975
|
+
/**
|
|
60976
|
+
* History (D850): none — talk sessions are a ledger concern, not a trend.
|
|
60977
|
+
*/
|
|
60978
|
+
history: "none"
|
|
60343
60979
|
};
|
|
60344
60980
|
/**
|
|
60345
60981
|
* Robotic lawn-mower cap. Models HA `lawn_mower.*` entities — anything
|
|
@@ -60420,7 +61056,15 @@ var lawnMowerControlCapability = {
|
|
|
60420
61056
|
* See `RuntimeStateDurability`. Enforced by
|
|
60421
61057
|
* `scripts/check-runtime-state-durability.ts`.
|
|
60422
61058
|
*/
|
|
60423
|
-
durability: "session"
|
|
61059
|
+
durability: "session",
|
|
61060
|
+
/**
|
|
61061
|
+
* History (D850): recorded series.
|
|
61062
|
+
*/
|
|
61063
|
+
history: { fields: { batteryLevel: {
|
|
61064
|
+
kind: "gauge",
|
|
61065
|
+
unit: "%",
|
|
61066
|
+
deadband: 2
|
|
61067
|
+
} } }
|
|
60424
61068
|
};
|
|
60425
61069
|
/**
|
|
60426
61070
|
* local-network — hub-only singleton.
|
|
@@ -61011,6 +61655,10 @@ var lockControlCapability = {
|
|
|
61011
61655
|
* `scripts/check-runtime-state-durability.ts`.
|
|
61012
61656
|
*/
|
|
61013
61657
|
durability: "restored",
|
|
61658
|
+
/**
|
|
61659
|
+
* History (D850): none — enum state; lock events belong in the events ledger.
|
|
61660
|
+
*/
|
|
61661
|
+
history: "none",
|
|
61014
61662
|
/** Clock fields: written, but excluded from the compare that decides
|
|
61015
61663
|
* whether persisting is worth a SQLite commit. */
|
|
61016
61664
|
volatileStateFields: ["lastChangedAt"]
|
|
@@ -61182,7 +61830,11 @@ var mediaPlayerCapability = {
|
|
|
61182
61830
|
* See `RuntimeStateDurability`. Enforced by
|
|
61183
61831
|
* `scripts/check-runtime-state-durability.ts`.
|
|
61184
61832
|
*/
|
|
61185
|
-
durability: "session"
|
|
61833
|
+
durability: "session",
|
|
61834
|
+
/**
|
|
61835
|
+
* History (D850): none — `positionMs` moves continuously while playing; volume is transient.
|
|
61836
|
+
*/
|
|
61837
|
+
history: "none"
|
|
61186
61838
|
};
|
|
61187
61839
|
/**
|
|
61188
61840
|
* mesh-network — collection cap for mesh-VPN providers.
|
|
@@ -61577,7 +62229,14 @@ onMotionChanged: { data: MotionOnMotionChangedDataSchema } },
|
|
|
61577
62229
|
* See `RuntimeStateDurability`. Enforced by
|
|
61578
62230
|
* `scripts/check-runtime-state-durability.ts`.
|
|
61579
62231
|
*/
|
|
61580
|
-
durability: "session"
|
|
62232
|
+
durability: "session",
|
|
62233
|
+
/**
|
|
62234
|
+
* History (D850): recorded series. A PIR sensor is a series; a camera is not (its motion is an addon series and a ledger).
|
|
62235
|
+
*/
|
|
62236
|
+
history: { fields: { detected: {
|
|
62237
|
+
kind: "boolean",
|
|
62238
|
+
excludeDeviceTypes: [DeviceType.Camera]
|
|
62239
|
+
} } }
|
|
61581
62240
|
};
|
|
61582
62241
|
/**
|
|
61583
62242
|
* Motion-trigger toggle for accessory devices.
|
|
@@ -61649,7 +62308,11 @@ var motionTriggerCapability = {
|
|
|
61649
62308
|
* See `RuntimeStateDurability`. Enforced by
|
|
61650
62309
|
* `scripts/check-runtime-state-durability.ts`.
|
|
61651
62310
|
*/
|
|
61652
|
-
durability: "session"
|
|
62311
|
+
durability: "session",
|
|
62312
|
+
/**
|
|
62313
|
+
* History (D850): none — configuration switch.
|
|
62314
|
+
*/
|
|
62315
|
+
history: "none"
|
|
61653
62316
|
};
|
|
61654
62317
|
/**
|
|
61655
62318
|
* Motion-zones share the same MaskShape vocabulary as privacy-mask — the
|
|
@@ -61724,6 +62387,10 @@ var motionZonesCapability = {
|
|
|
61724
62387
|
* `scripts/check-runtime-state-durability.ts`.
|
|
61725
62388
|
*/
|
|
61726
62389
|
durability: "restored",
|
|
62390
|
+
/**
|
|
62391
|
+
* History (D850): none — configuration.
|
|
62392
|
+
*/
|
|
62393
|
+
history: "none",
|
|
61727
62394
|
/** Clock fields: written, but excluded from the compare that decides
|
|
61728
62395
|
* whether persisting is worth a SQLite commit. */
|
|
61729
62396
|
volatileStateFields: ["lastFetchedAt"]
|
|
@@ -61853,6 +62520,10 @@ var nativeObjectDetectionCapability = {
|
|
|
61853
62520
|
* `scripts/check-runtime-state-durability.ts`.
|
|
61854
62521
|
*/
|
|
61855
62522
|
durability: "restored",
|
|
62523
|
+
/**
|
|
62524
|
+
* History (D850): none — event-like and nested per class; detections live in the objects ledger.
|
|
62525
|
+
*/
|
|
62526
|
+
history: "none",
|
|
61856
62527
|
/** Clock fields: written, but excluded from the compare that decides
|
|
61857
62528
|
* whether persisting is worth a SQLite commit. */
|
|
61858
62529
|
volatileStateFields: ["lastFetchedAt"]
|
|
@@ -62138,7 +62809,11 @@ var navigationCapability = {
|
|
|
62138
62809
|
* See `RuntimeStateDurability`. Enforced by
|
|
62139
62810
|
* `scripts/check-runtime-state-durability.ts`.
|
|
62140
62811
|
*/
|
|
62141
|
-
durability: "session"
|
|
62812
|
+
durability: "session",
|
|
62813
|
+
/**
|
|
62814
|
+
* History (D850): none — control state of a robotic camera, configuration-like.
|
|
62815
|
+
*/
|
|
62816
|
+
history: "none"
|
|
62142
62817
|
};
|
|
62143
62818
|
/**
|
|
62144
62819
|
* Network-link snapshot. Same shape for every provider (a Reolink wifi
|
|
@@ -62218,6 +62893,23 @@ onStatusChanged: { data: zod.z.object({
|
|
|
62218
62893
|
* `scripts/check-runtime-state-durability.ts`.
|
|
62219
62894
|
*/
|
|
62220
62895
|
durability: "restored",
|
|
62896
|
+
/**
|
|
62897
|
+
* History (D850): recorded series.
|
|
62898
|
+
*/
|
|
62899
|
+
history: { fields: {
|
|
62900
|
+
signalPercent: {
|
|
62901
|
+
kind: "gauge",
|
|
62902
|
+
unit: "%",
|
|
62903
|
+
deadband: 3,
|
|
62904
|
+
minIntervalMs: 6e4
|
|
62905
|
+
},
|
|
62906
|
+
rssiDbm: {
|
|
62907
|
+
kind: "gauge",
|
|
62908
|
+
unit: "dBm",
|
|
62909
|
+
deadband: 2,
|
|
62910
|
+
minIntervalMs: 6e4
|
|
62911
|
+
}
|
|
62912
|
+
} },
|
|
62221
62913
|
/** Clock fields: written, but excluded from the compare that decides
|
|
62222
62914
|
* whether persisting is worth a SQLite commit. */
|
|
62223
62915
|
volatileStateFields: ["lastUpdated"]
|
|
@@ -62671,7 +63363,11 @@ onSent: { data: zod.z.object({
|
|
|
62671
63363
|
* See `RuntimeStateDurability`. Enforced by
|
|
62672
63364
|
* `scripts/check-runtime-state-durability.ts`.
|
|
62673
63365
|
*/
|
|
62674
|
-
durability: "session"
|
|
63366
|
+
durability: "session",
|
|
63367
|
+
/**
|
|
63368
|
+
* History (D850): none — `queueDepth` is outbox operational state, not a device trend.
|
|
63369
|
+
*/
|
|
63370
|
+
history: "none"
|
|
62675
63371
|
};
|
|
62676
63372
|
/**
|
|
62677
63373
|
* Generic numeric sensor — last-resort fallback when no typed numeric
|
|
@@ -62722,6 +63418,14 @@ var numericSensorCapability = {
|
|
|
62722
63418
|
* `scripts/check-runtime-state-durability.ts`.
|
|
62723
63419
|
*/
|
|
62724
63420
|
durability: "restored",
|
|
63421
|
+
/**
|
|
63422
|
+
* History (D850): recorded series. The unit is per device, read from the sibling `unit` field.
|
|
63423
|
+
*/
|
|
63424
|
+
history: { fields: { value: {
|
|
63425
|
+
kind: "gauge",
|
|
63426
|
+
unitFrom: "unit",
|
|
63427
|
+
minIntervalMs: 3e4
|
|
63428
|
+
} } },
|
|
62725
63429
|
/** Clock fields: written, but excluded from the compare that decides
|
|
62726
63430
|
* whether persisting is worth a SQLite commit. */
|
|
62727
63431
|
volatileStateFields: ["lastFetchedAt"]
|
|
@@ -63261,7 +63965,24 @@ var petFeederCapability = {
|
|
|
63261
63965
|
* See `RuntimeStateDurability`. Enforced by
|
|
63262
63966
|
* `scripts/check-runtime-state-durability.ts`.
|
|
63263
63967
|
*/
|
|
63264
|
-
durability: "session"
|
|
63968
|
+
durability: "session",
|
|
63969
|
+
/**
|
|
63970
|
+
* History (D850): recorded series.
|
|
63971
|
+
*/
|
|
63972
|
+
history: { fields: {
|
|
63973
|
+
foodLevel: { kind: "gauge" },
|
|
63974
|
+
food1: { kind: "gauge" },
|
|
63975
|
+
food2: { kind: "gauge" },
|
|
63976
|
+
batteryPower: {
|
|
63977
|
+
kind: "gauge",
|
|
63978
|
+
unit: "%",
|
|
63979
|
+
deadband: 2
|
|
63980
|
+
},
|
|
63981
|
+
desiccantLeftDays: {
|
|
63982
|
+
kind: "gauge",
|
|
63983
|
+
unit: "days"
|
|
63984
|
+
}
|
|
63985
|
+
} }
|
|
63265
63986
|
};
|
|
63266
63987
|
var VehicleSchema = zod.z.object({
|
|
63267
63988
|
id: zod.z.string(),
|
|
@@ -63684,6 +64405,47 @@ var powerMeterCapability = {
|
|
|
63684
64405
|
* `scripts/check-runtime-state-durability.ts`.
|
|
63685
64406
|
*/
|
|
63686
64407
|
durability: "restored",
|
|
64408
|
+
/**
|
|
64409
|
+
* History (D850): recorded series. Gauges are floored at 30 s; `kwhTotal` is the one monotonic meter (counter).
|
|
64410
|
+
*/
|
|
64411
|
+
history: { fields: {
|
|
64412
|
+
watts: {
|
|
64413
|
+
kind: "gauge",
|
|
64414
|
+
unit: "W",
|
|
64415
|
+
deadband: 1,
|
|
64416
|
+
minIntervalMs: 3e4
|
|
64417
|
+
},
|
|
64418
|
+
kwhTotal: {
|
|
64419
|
+
kind: "counter",
|
|
64420
|
+
unit: "kWh",
|
|
64421
|
+
deadband: .01,
|
|
64422
|
+
minIntervalMs: 6e4
|
|
64423
|
+
},
|
|
64424
|
+
volts: {
|
|
64425
|
+
kind: "gauge",
|
|
64426
|
+
unit: "V",
|
|
64427
|
+
deadband: 1,
|
|
64428
|
+
minIntervalMs: 3e4
|
|
64429
|
+
},
|
|
64430
|
+
amps: {
|
|
64431
|
+
kind: "gauge",
|
|
64432
|
+
unit: "A",
|
|
64433
|
+
deadband: .05,
|
|
64434
|
+
minIntervalMs: 3e4
|
|
64435
|
+
},
|
|
64436
|
+
va: {
|
|
64437
|
+
kind: "gauge",
|
|
64438
|
+
unit: "VA",
|
|
64439
|
+
deadband: 1,
|
|
64440
|
+
minIntervalMs: 3e4
|
|
64441
|
+
},
|
|
64442
|
+
powerFactor: {
|
|
64443
|
+
kind: "gauge",
|
|
64444
|
+
unit: "ratio",
|
|
64445
|
+
deadband: .01,
|
|
64446
|
+
minIntervalMs: 6e4
|
|
64447
|
+
}
|
|
64448
|
+
} },
|
|
63687
64449
|
/** Clock fields: written, but excluded from the compare that decides
|
|
63688
64450
|
* whether persisting is worth a SQLite commit. */
|
|
63689
64451
|
volatileStateFields: ["lastFetchedAt"]
|
|
@@ -63751,6 +64513,14 @@ var presenceCapability = {
|
|
|
63751
64513
|
* `scripts/check-runtime-state-durability.ts`.
|
|
63752
64514
|
*/
|
|
63753
64515
|
durability: "restored",
|
|
64516
|
+
/**
|
|
64517
|
+
* History (D850): recorded series.
|
|
64518
|
+
*/
|
|
64519
|
+
history: { fields: { batteryPercent: {
|
|
64520
|
+
kind: "gauge",
|
|
64521
|
+
unit: "%",
|
|
64522
|
+
deadband: 1
|
|
64523
|
+
} } },
|
|
63754
64524
|
/** Clock fields: written, but excluded from the compare that decides
|
|
63755
64525
|
* whether persisting is worth a SQLite commit. */
|
|
63756
64526
|
volatileStateFields: ["lastChangedAt"]
|
|
@@ -63797,6 +64567,14 @@ var pressureSensorCapability = {
|
|
|
63797
64567
|
* `scripts/check-runtime-state-durability.ts`.
|
|
63798
64568
|
*/
|
|
63799
64569
|
durability: "restored",
|
|
64570
|
+
/**
|
|
64571
|
+
* History (D850): recorded series.
|
|
64572
|
+
*/
|
|
64573
|
+
history: { fields: { hpa: {
|
|
64574
|
+
kind: "gauge",
|
|
64575
|
+
unit: "hPa",
|
|
64576
|
+
deadband: .1
|
|
64577
|
+
} } },
|
|
63800
64578
|
/** Clock fields: written, but excluded from the compare that decides
|
|
63801
64579
|
* whether persisting is worth a SQLite commit. */
|
|
63802
64580
|
volatileStateFields: ["lastFetchedAt"]
|
|
@@ -63956,6 +64734,10 @@ var privacyMaskCapability = {
|
|
|
63956
64734
|
* `scripts/check-runtime-state-durability.ts`.
|
|
63957
64735
|
*/
|
|
63958
64736
|
durability: "restored",
|
|
64737
|
+
/**
|
|
64738
|
+
* History (D850): none — configuration.
|
|
64739
|
+
*/
|
|
64740
|
+
history: "none",
|
|
63959
64741
|
/** Clock fields: written, but excluded from the compare that decides
|
|
63960
64742
|
* whether persisting is worth a SQLite commit. */
|
|
63961
64743
|
volatileStateFields: ["lastFetchedAt"]
|
|
@@ -64444,7 +65226,11 @@ var ptzAutotrackCapability = {
|
|
|
64444
65226
|
* See `RuntimeStateDurability`. Enforced by
|
|
64445
65227
|
* `scripts/check-runtime-state-durability.ts`.
|
|
64446
65228
|
*/
|
|
64447
|
-
durability: "session"
|
|
65229
|
+
durability: "session",
|
|
65230
|
+
/**
|
|
65231
|
+
* History (D850): none — configuration and capability.
|
|
65232
|
+
*/
|
|
65233
|
+
history: "none"
|
|
64448
65234
|
};
|
|
64449
65235
|
/**
|
|
64450
65236
|
* reboot — device-scoped capability for "soft" device reboots (firmware
|
|
@@ -66268,6 +67054,10 @@ var recordingOnboardCapability = {
|
|
|
66268
67054
|
* `scripts/check-runtime-state-durability.ts`.
|
|
66269
67055
|
*/
|
|
66270
67056
|
durability: "restored",
|
|
67057
|
+
/**
|
|
67058
|
+
* History (D850): none — SD-card configuration and window inventory; arrays.
|
|
67059
|
+
*/
|
|
67060
|
+
history: "none",
|
|
66271
67061
|
/** Clock fields: written, but excluded from the compare that decides
|
|
66272
67062
|
* whether persisting is worth a SQLite commit. */
|
|
66273
67063
|
volatileStateFields: ["lastFetchedAt"]
|
|
@@ -66362,7 +67152,11 @@ getStatus: method(zod.z.object({ deviceId: zod.z.number() }), RecordingSignalSta
|
|
|
66362
67152
|
* See `RuntimeStateDurability`. Enforced by
|
|
66363
67153
|
* `scripts/check-runtime-state-durability.ts`.
|
|
66364
67154
|
*/
|
|
66365
|
-
durability: "session"
|
|
67155
|
+
durability: "session",
|
|
67156
|
+
/**
|
|
67157
|
+
* History (D850): none — recording intent is already in the recordings ledger.
|
|
67158
|
+
*/
|
|
67159
|
+
history: "none"
|
|
66366
67160
|
};
|
|
66367
67161
|
/**
|
|
66368
67162
|
* scene-monitor — device-scoped reference-region state cap. An operator marks
|
|
@@ -66735,7 +67529,11 @@ var sceneMonitorCapability = {
|
|
|
66735
67529
|
* See `RuntimeStateDurability`. Enforced by
|
|
66736
67530
|
* `scripts/check-runtime-state-durability.ts`.
|
|
66737
67531
|
*/
|
|
66738
|
-
durability: "session"
|
|
67532
|
+
durability: "session",
|
|
67533
|
+
/**
|
|
67534
|
+
* History (D850): none — nested configuration.
|
|
67535
|
+
*/
|
|
67536
|
+
history: "none"
|
|
66739
67537
|
};
|
|
66740
67538
|
/**
|
|
66741
67539
|
* Per-stage gating mode applied to the zones a rule references.
|
|
@@ -66886,7 +67684,11 @@ var scriptRunnerCapability = {
|
|
|
66886
67684
|
* See `RuntimeStateDurability`. Enforced by
|
|
66887
67685
|
* `scripts/check-runtime-state-durability.ts`.
|
|
66888
67686
|
*/
|
|
66889
|
-
durability: "session"
|
|
67687
|
+
durability: "session",
|
|
67688
|
+
/**
|
|
67689
|
+
* History (D850): none — transient; run results belong in a ledger.
|
|
67690
|
+
*/
|
|
67691
|
+
history: "none"
|
|
66890
67692
|
};
|
|
66891
67693
|
/**
|
|
66892
67694
|
* Smoke alarm sensor — boolean "is smoke currently detected" with
|
|
@@ -66921,6 +67723,10 @@ var smokeCapability = {
|
|
|
66921
67723
|
* `scripts/check-runtime-state-durability.ts`.
|
|
66922
67724
|
*/
|
|
66923
67725
|
durability: "restored",
|
|
67726
|
+
/**
|
|
67727
|
+
* History (D850): recorded series.
|
|
67728
|
+
*/
|
|
67729
|
+
history: { fields: { detected: { kind: "boolean" } } },
|
|
66924
67730
|
/** Clock fields: written, but excluded from the compare that decides
|
|
66925
67731
|
* whether persisting is worth a SQLite commit. */
|
|
66926
67732
|
volatileStateFields: ["lastChangedAt"]
|
|
@@ -67020,6 +67826,10 @@ var streamCatalogCapability = {
|
|
|
67020
67826
|
* `scripts/check-runtime-state-durability.ts`.
|
|
67021
67827
|
*/
|
|
67022
67828
|
durability: "restored",
|
|
67829
|
+
/**
|
|
67830
|
+
* History (D850): none — stream inventory.
|
|
67831
|
+
*/
|
|
67832
|
+
history: "none",
|
|
67023
67833
|
/** Clock field: written, but excluded from the compare that decides whether
|
|
67024
67834
|
* persisting is worth a SQLite commit — the descriptors are the value. */
|
|
67025
67835
|
volatileStateFields: ["lastFetchedAt"]
|
|
@@ -67169,6 +67979,10 @@ var streamParamsCapability = {
|
|
|
67169
67979
|
* `scripts/check-runtime-state-durability.ts`.
|
|
67170
67980
|
*/
|
|
67171
67981
|
durability: "restored",
|
|
67982
|
+
/**
|
|
67983
|
+
* History (D850): none — encoder configuration.
|
|
67984
|
+
*/
|
|
67985
|
+
history: "none",
|
|
67172
67986
|
/** Clock fields: written, but excluded from the compare that decides
|
|
67173
67987
|
* whether persisting is worth a SQLite commit. */
|
|
67174
67988
|
volatileStateFields: ["lastFetchedAt"]
|
|
@@ -67481,6 +68295,10 @@ var switchCapability = {
|
|
|
67481
68295
|
* `scripts/check-runtime-state-durability.ts`.
|
|
67482
68296
|
*/
|
|
67483
68297
|
durability: "restored",
|
|
68298
|
+
/**
|
|
68299
|
+
* History (D850): recorded series.
|
|
68300
|
+
*/
|
|
68301
|
+
history: { fields: { on: { kind: "boolean" } } },
|
|
67484
68302
|
/** Clock fields: written, but excluded from the compare that decides
|
|
67485
68303
|
* whether persisting is worth a SQLite commit. */
|
|
67486
68304
|
volatileStateFields: ["lastChangedAt"],
|
|
@@ -68153,6 +68971,10 @@ var tamperCapability = {
|
|
|
68153
68971
|
* `scripts/check-runtime-state-durability.ts`.
|
|
68154
68972
|
*/
|
|
68155
68973
|
durability: "restored",
|
|
68974
|
+
/**
|
|
68975
|
+
* History (D850): recorded series.
|
|
68976
|
+
*/
|
|
68977
|
+
history: { fields: { tampered: { kind: "boolean" } } },
|
|
68156
68978
|
/** Clock fields: written, but excluded from the compare that decides
|
|
68157
68979
|
* whether persisting is worth a SQLite commit. */
|
|
68158
68980
|
volatileStateFields: ["lastChangedAt"]
|
|
@@ -68208,6 +69030,14 @@ var temperatureSensorCapability = {
|
|
|
68208
69030
|
* `scripts/check-runtime-state-durability.ts`.
|
|
68209
69031
|
*/
|
|
68210
69032
|
durability: "restored",
|
|
69033
|
+
/**
|
|
69034
|
+
* History (D850): recorded series.
|
|
69035
|
+
*/
|
|
69036
|
+
history: { fields: { celsius: {
|
|
69037
|
+
kind: "gauge",
|
|
69038
|
+
unit: "°C",
|
|
69039
|
+
deadband: .1
|
|
69040
|
+
} } },
|
|
68211
69041
|
/** Clock fields: written, but excluded from the compare that decides
|
|
68212
69042
|
* whether persisting is worth a SQLite commit. */
|
|
68213
69043
|
volatileStateFields: ["lastFetchedAt"]
|
|
@@ -68293,7 +69123,11 @@ var updateCapability = {
|
|
|
68293
69123
|
* See `RuntimeStateDurability`. Enforced by
|
|
68294
69124
|
* `scripts/check-runtime-state-durability.ts`.
|
|
68295
69125
|
*/
|
|
68296
|
-
durability: "session"
|
|
69126
|
+
durability: "session",
|
|
69127
|
+
/**
|
|
69128
|
+
* History (D850): none — text and state.
|
|
69129
|
+
*/
|
|
69130
|
+
history: "none"
|
|
68297
69131
|
};
|
|
68298
69132
|
var UserSummarySchema = zod.z.object({
|
|
68299
69133
|
id: zod.z.string(),
|
|
@@ -68685,7 +69519,37 @@ var vacuumControlCapability = {
|
|
|
68685
69519
|
* See `RuntimeStateDurability`. Enforced by
|
|
68686
69520
|
* `scripts/check-runtime-state-durability.ts`.
|
|
68687
69521
|
*/
|
|
68688
|
-
durability: "session"
|
|
69522
|
+
durability: "session",
|
|
69523
|
+
/**
|
|
69524
|
+
* History (D850): recorded series. Tank levels are fixed-object paths (`cleanWater.level`, ...).
|
|
69525
|
+
*/
|
|
69526
|
+
history: { fields: {
|
|
69527
|
+
batteryLevel: {
|
|
69528
|
+
kind: "gauge",
|
|
69529
|
+
unit: "%",
|
|
69530
|
+
deadband: 2
|
|
69531
|
+
},
|
|
69532
|
+
"cleanWater.level": {
|
|
69533
|
+
kind: "gauge",
|
|
69534
|
+
unit: "%",
|
|
69535
|
+
deadband: 2
|
|
69536
|
+
},
|
|
69537
|
+
"dirtyWater.level": {
|
|
69538
|
+
kind: "gauge",
|
|
69539
|
+
unit: "%",
|
|
69540
|
+
deadband: 2
|
|
69541
|
+
},
|
|
69542
|
+
"detergent.level": {
|
|
69543
|
+
kind: "gauge",
|
|
69544
|
+
unit: "%",
|
|
69545
|
+
deadband: 2
|
|
69546
|
+
},
|
|
69547
|
+
"dustBin.level": {
|
|
69548
|
+
kind: "gauge",
|
|
69549
|
+
unit: "%",
|
|
69550
|
+
deadband: 2
|
|
69551
|
+
}
|
|
69552
|
+
} }
|
|
68689
69553
|
};
|
|
68690
69554
|
/**
|
|
68691
69555
|
* Pipe / water / gas valve cap. Models HA `valve.*` entities — anything
|
|
@@ -68762,7 +69626,15 @@ var valveCapability = {
|
|
|
68762
69626
|
* See `RuntimeStateDurability`. Enforced by
|
|
68763
69627
|
* `scripts/check-runtime-state-durability.ts`.
|
|
68764
69628
|
*/
|
|
68765
|
-
durability: "session"
|
|
69629
|
+
durability: "session",
|
|
69630
|
+
/**
|
|
69631
|
+
* History (D850): recorded series. Actuator tier: position keeps every change.
|
|
69632
|
+
*/
|
|
69633
|
+
history: { fields: { position: {
|
|
69634
|
+
kind: "gauge",
|
|
69635
|
+
unit: "%",
|
|
69636
|
+
minIntervalMs: 0
|
|
69637
|
+
} } }
|
|
68766
69638
|
};
|
|
68767
69639
|
/**
|
|
68768
69640
|
* Vibration / shake / impact sensor. Drives Home Assistant
|
|
@@ -68792,6 +69664,10 @@ var vibrationCapability = {
|
|
|
68792
69664
|
* `scripts/check-runtime-state-durability.ts`.
|
|
68793
69665
|
*/
|
|
68794
69666
|
durability: "restored",
|
|
69667
|
+
/**
|
|
69668
|
+
* History (D850): recorded series.
|
|
69669
|
+
*/
|
|
69670
|
+
history: { fields: { detected: { kind: "boolean" } } },
|
|
68795
69671
|
/** Clock fields: written, but excluded from the compare that decides
|
|
68796
69672
|
* whether persisting is worth a SQLite commit. */
|
|
68797
69673
|
volatileStateFields: ["lastChangedAt"]
|
|
@@ -68875,7 +69751,22 @@ var waterHeaterCapability = {
|
|
|
68875
69751
|
* See `RuntimeStateDurability`. Enforced by
|
|
68876
69752
|
* `scripts/check-runtime-state-durability.ts`.
|
|
68877
69753
|
*/
|
|
68878
|
-
durability: "session"
|
|
69754
|
+
durability: "session",
|
|
69755
|
+
/**
|
|
69756
|
+
* History (D850): recorded series. The schema carries no unit; providers publish Celsius. Setpoint keeps every change.
|
|
69757
|
+
*/
|
|
69758
|
+
history: { fields: {
|
|
69759
|
+
currentTemp: {
|
|
69760
|
+
kind: "gauge",
|
|
69761
|
+
unit: "°C",
|
|
69762
|
+
deadband: .5
|
|
69763
|
+
},
|
|
69764
|
+
targetTemp: {
|
|
69765
|
+
kind: "gauge",
|
|
69766
|
+
unit: "°C",
|
|
69767
|
+
minIntervalMs: 0
|
|
69768
|
+
}
|
|
69769
|
+
} }
|
|
68879
69770
|
};
|
|
68880
69771
|
/**
|
|
68881
69772
|
* Weather provider cap. Models HA `weather.*` entities — a read-only
|
|
@@ -68941,7 +69832,32 @@ var weatherCapability = {
|
|
|
68941
69832
|
* See `RuntimeStateDurability`. Enforced by
|
|
68942
69833
|
* `scripts/check-runtime-state-durability.ts`.
|
|
68943
69834
|
*/
|
|
68944
|
-
durability: "session"
|
|
69835
|
+
durability: "session",
|
|
69836
|
+
/**
|
|
69837
|
+
* History (D850): recorded series. Units follow the sibling `*Unit` fields.
|
|
69838
|
+
*/
|
|
69839
|
+
history: { fields: {
|
|
69840
|
+
temperature: {
|
|
69841
|
+
kind: "gauge",
|
|
69842
|
+
unitFrom: "temperatureUnit",
|
|
69843
|
+
deadband: .2
|
|
69844
|
+
},
|
|
69845
|
+
humidity: {
|
|
69846
|
+
kind: "gauge",
|
|
69847
|
+
unit: "%",
|
|
69848
|
+
deadband: 1
|
|
69849
|
+
},
|
|
69850
|
+
pressure: {
|
|
69851
|
+
kind: "gauge",
|
|
69852
|
+
unitFrom: "pressureUnit",
|
|
69853
|
+
deadband: .5
|
|
69854
|
+
},
|
|
69855
|
+
windSpeed: {
|
|
69856
|
+
kind: "gauge",
|
|
69857
|
+
unitFrom: "windSpeedUnit",
|
|
69858
|
+
deadband: .5
|
|
69859
|
+
}
|
|
69860
|
+
} }
|
|
68945
69861
|
};
|
|
68946
69862
|
/**
|
|
68947
69863
|
* Per-zone occupancy aggregation produced by the analytics frame
|
|
@@ -69183,7 +70099,11 @@ var zoneAnalyticsCapability = {
|
|
|
69183
70099
|
* See `RuntimeStateDurability`. Enforced by
|
|
69184
70100
|
* `scripts/check-runtime-state-durability.ts`.
|
|
69185
70101
|
*/
|
|
69186
|
-
durability: "session"
|
|
70102
|
+
durability: "session",
|
|
70103
|
+
/**
|
|
70104
|
+
* History (D850): none — occupancy is the addon series `pipeline-analytics/occupancy`; the rest is per-zone arrays keyed by runtime ids.
|
|
70105
|
+
*/
|
|
70106
|
+
history: "none"
|
|
69187
70107
|
};
|
|
69188
70108
|
/**
|
|
69189
70109
|
* Stages a {@link ZoneRule} can apply to. Discriminator on the rules
|
|
@@ -69268,7 +70188,11 @@ var zoneRulesCapability = {
|
|
|
69268
70188
|
* See `RuntimeStateDurability`. Enforced by
|
|
69269
70189
|
* `scripts/check-runtime-state-durability.ts`.
|
|
69270
70190
|
*/
|
|
69271
|
-
durability: "restored"
|
|
70191
|
+
durability: "restored",
|
|
70192
|
+
/**
|
|
70193
|
+
* History (D850): none — configuration arrays.
|
|
70194
|
+
*/
|
|
70195
|
+
history: "none"
|
|
69272
70196
|
};
|
|
69273
70197
|
/**
|
|
69274
70198
|
* `training-provider` — ONE cloud that can run the CamStack trainer.
|
|
@@ -73219,6 +74143,54 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
73219
74143
|
addonId: null,
|
|
73220
74144
|
access: "create"
|
|
73221
74145
|
},
|
|
74146
|
+
"deviceCredentials.deleteDeviceCredential": {
|
|
74147
|
+
capName: "device-credentials",
|
|
74148
|
+
capScope: "system",
|
|
74149
|
+
addonId: null,
|
|
74150
|
+
access: "delete"
|
|
74151
|
+
},
|
|
74152
|
+
"deviceCredentials.getDeviceCaStatus": {
|
|
74153
|
+
capName: "device-credentials",
|
|
74154
|
+
capScope: "system",
|
|
74155
|
+
addonId: null,
|
|
74156
|
+
access: "view"
|
|
74157
|
+
},
|
|
74158
|
+
"deviceCredentials.getDeviceCertificateSettings": {
|
|
74159
|
+
capName: "device-credentials",
|
|
74160
|
+
capScope: "system",
|
|
74161
|
+
addonId: null,
|
|
74162
|
+
access: "view"
|
|
74163
|
+
},
|
|
74164
|
+
"deviceCredentials.listDeviceCredentials": {
|
|
74165
|
+
capName: "device-credentials",
|
|
74166
|
+
capScope: "system",
|
|
74167
|
+
addonId: null,
|
|
74168
|
+
access: "view"
|
|
74169
|
+
},
|
|
74170
|
+
"deviceCredentials.renameDeviceCredential": {
|
|
74171
|
+
capName: "device-credentials",
|
|
74172
|
+
capScope: "system",
|
|
74173
|
+
addonId: null,
|
|
74174
|
+
access: "create"
|
|
74175
|
+
},
|
|
74176
|
+
"deviceCredentials.revokeDeviceCredential": {
|
|
74177
|
+
capName: "device-credentials",
|
|
74178
|
+
capScope: "system",
|
|
74179
|
+
addonId: null,
|
|
74180
|
+
access: "delete"
|
|
74181
|
+
},
|
|
74182
|
+
"deviceCredentials.setDeviceCertificateSettings": {
|
|
74183
|
+
capName: "device-credentials",
|
|
74184
|
+
capScope: "system",
|
|
74185
|
+
addonId: null,
|
|
74186
|
+
access: "create"
|
|
74187
|
+
},
|
|
74188
|
+
"deviceCredentials.startEnrollment": {
|
|
74189
|
+
capName: "device-credentials",
|
|
74190
|
+
capScope: "system",
|
|
74191
|
+
addonId: null,
|
|
74192
|
+
access: "create"
|
|
74193
|
+
},
|
|
73222
74194
|
"deviceDiscovery.adoptDevice": {
|
|
73223
74195
|
capName: "device-discovery",
|
|
73224
74196
|
capScope: "device",
|
|
@@ -75379,6 +76351,48 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
75379
76351
|
addonId: null,
|
|
75380
76352
|
access: "create"
|
|
75381
76353
|
},
|
|
76354
|
+
"nodeCertificates.confirmMeshLeaf": {
|
|
76355
|
+
capName: "node-certificates",
|
|
76356
|
+
capScope: "system",
|
|
76357
|
+
addonId: null,
|
|
76358
|
+
access: "create"
|
|
76359
|
+
},
|
|
76360
|
+
"nodeCertificates.getCertificates": {
|
|
76361
|
+
capName: "node-certificates",
|
|
76362
|
+
capScope: "system",
|
|
76363
|
+
addonId: null,
|
|
76364
|
+
access: "view"
|
|
76365
|
+
},
|
|
76366
|
+
"nodeCertificates.installHttpsCertificate": {
|
|
76367
|
+
capName: "node-certificates",
|
|
76368
|
+
capScope: "system",
|
|
76369
|
+
addonId: null,
|
|
76370
|
+
access: "create"
|
|
76371
|
+
},
|
|
76372
|
+
"nodeCertificates.installMeshLeaf": {
|
|
76373
|
+
capName: "node-certificates",
|
|
76374
|
+
capScope: "system",
|
|
76375
|
+
addonId: null,
|
|
76376
|
+
access: "create"
|
|
76377
|
+
},
|
|
76378
|
+
"nodeCertificates.prepareHttpsCertificate": {
|
|
76379
|
+
capName: "node-certificates",
|
|
76380
|
+
capScope: "system",
|
|
76381
|
+
addonId: null,
|
|
76382
|
+
access: "create"
|
|
76383
|
+
},
|
|
76384
|
+
"nodeCertificates.prepareMeshRenewal": {
|
|
76385
|
+
capName: "node-certificates",
|
|
76386
|
+
capScope: "system",
|
|
76387
|
+
addonId: null,
|
|
76388
|
+
access: "create"
|
|
76389
|
+
},
|
|
76390
|
+
"nodeCertificates.rollbackMeshLeaf": {
|
|
76391
|
+
capName: "node-certificates",
|
|
76392
|
+
capScope: "system",
|
|
76393
|
+
addonId: null,
|
|
76394
|
+
access: "create"
|
|
76395
|
+
},
|
|
75382
76396
|
"nodes.clusterAddonStatus": {
|
|
75383
76397
|
capName: "nodes",
|
|
75384
76398
|
capScope: "system",
|
|
@@ -79745,6 +80759,7 @@ var ALL_CAPABILITY_DEFINITIONS = [
|
|
|
79745
80759
|
detectionPipelineCapability,
|
|
79746
80760
|
deviceAdminLinkCapability,
|
|
79747
80761
|
deviceAdoptionCapability,
|
|
80762
|
+
deviceCredentialsCapability,
|
|
79748
80763
|
deviceDiscoveryCapability,
|
|
79749
80764
|
deviceExportCapability,
|
|
79750
80765
|
deviceExtensionCapability,
|
|
@@ -79796,6 +80811,7 @@ var ALL_CAPABILITY_DEFINITIONS = [
|
|
|
79796
80811
|
networkAccessCapability,
|
|
79797
80812
|
networkLinkCapability,
|
|
79798
80813
|
networkQualityCapability,
|
|
80814
|
+
nodeCertificatesCapability,
|
|
79799
80815
|
nodesCapability,
|
|
79800
80816
|
notificationOutputCapability,
|
|
79801
80817
|
notificationRulesCapability,
|
|
@@ -82808,6 +83824,7 @@ var SESSION_ONLY_POLICY = {
|
|
|
82808
83824
|
durability: "session",
|
|
82809
83825
|
volatileFields: []
|
|
82810
83826
|
};
|
|
83827
|
+
DeviceType.Camera;
|
|
82811
83828
|
var G711_SCALE_CORRECTION_DB = {
|
|
82812
83829
|
PCMU: 20 * Math.log10(4),
|
|
82813
83830
|
PCMA: 20 * Math.log10(8)
|
|
@@ -84288,6 +85305,30 @@ Object.defineProperty(exports, "DERIVED_CAMERA_SILENCED_CAP_NAMES", {
|
|
|
84288
85305
|
return DERIVED_CAMERA_SILENCED_CAP_NAMES;
|
|
84289
85306
|
}
|
|
84290
85307
|
});
|
|
85308
|
+
Object.defineProperty(exports, "DEVICE_ENROLLMENT_TTL_MS", {
|
|
85309
|
+
enumerable: true,
|
|
85310
|
+
get: function() {
|
|
85311
|
+
return DEVICE_ENROLLMENT_TTL_MS;
|
|
85312
|
+
}
|
|
85313
|
+
});
|
|
85314
|
+
Object.defineProperty(exports, "DEVICE_NONCE_TTL_MS", {
|
|
85315
|
+
enumerable: true,
|
|
85316
|
+
get: function() {
|
|
85317
|
+
return DEVICE_NONCE_TTL_MS;
|
|
85318
|
+
}
|
|
85319
|
+
});
|
|
85320
|
+
Object.defineProperty(exports, "DEVICE_SAN_CREDENTIAL_PREFIX", {
|
|
85321
|
+
enumerable: true,
|
|
85322
|
+
get: function() {
|
|
85323
|
+
return DEVICE_SAN_CREDENTIAL_PREFIX;
|
|
85324
|
+
}
|
|
85325
|
+
});
|
|
85326
|
+
Object.defineProperty(exports, "DEVICE_SAN_USER_PREFIX", {
|
|
85327
|
+
enumerable: true,
|
|
85328
|
+
get: function() {
|
|
85329
|
+
return DEVICE_SAN_USER_PREFIX;
|
|
85330
|
+
}
|
|
85331
|
+
});
|
|
84291
85332
|
Object.defineProperty(exports, "DEVICE_SETTINGS_CONTRIBUTION_METHODS", {
|
|
84292
85333
|
enumerable: true,
|
|
84293
85334
|
get: function() {
|
|
@@ -84570,6 +85611,18 @@ Object.defineProperty(exports, "buildCapabilityLookup", {
|
|
|
84570
85611
|
return buildCapabilityLookup;
|
|
84571
85612
|
}
|
|
84572
85613
|
});
|
|
85614
|
+
Object.defineProperty(exports, "buildDeviceEnrollmentLink", {
|
|
85615
|
+
enumerable: true,
|
|
85616
|
+
get: function() {
|
|
85617
|
+
return buildDeviceEnrollmentLink;
|
|
85618
|
+
}
|
|
85619
|
+
});
|
|
85620
|
+
Object.defineProperty(exports, "buildDeviceSignatureMessage", {
|
|
85621
|
+
enumerable: true,
|
|
85622
|
+
get: function() {
|
|
85623
|
+
return buildDeviceSignatureMessage;
|
|
85624
|
+
}
|
|
85625
|
+
});
|
|
84573
85626
|
Object.defineProperty(exports, "buildFfmpegArgs", {
|
|
84574
85627
|
enumerable: true,
|
|
84575
85628
|
get: function() {
|
|
@@ -84786,6 +85839,12 @@ Object.defineProperty(exports, "describeComposableCaps", {
|
|
|
84786
85839
|
return describeComposableCaps;
|
|
84787
85840
|
}
|
|
84788
85841
|
});
|
|
85842
|
+
Object.defineProperty(exports, "deviceCredentialsCapability", {
|
|
85843
|
+
enumerable: true,
|
|
85844
|
+
get: function() {
|
|
85845
|
+
return deviceCredentialsCapability;
|
|
85846
|
+
}
|
|
85847
|
+
});
|
|
84789
85848
|
Object.defineProperty(exports, "deviceExtensionCapability", {
|
|
84790
85849
|
enumerable: true,
|
|
84791
85850
|
get: function() {
|
|
@@ -84900,6 +85959,12 @@ Object.defineProperty(exports, "foldSnapshotByFunction", {
|
|
|
84900
85959
|
return foldSnapshotByFunction;
|
|
84901
85960
|
}
|
|
84902
85961
|
});
|
|
85962
|
+
Object.defineProperty(exports, "formatDeviceRevoker", {
|
|
85963
|
+
enumerable: true,
|
|
85964
|
+
get: function() {
|
|
85965
|
+
return formatDeviceRevoker;
|
|
85966
|
+
}
|
|
85967
|
+
});
|
|
84903
85968
|
Object.defineProperty(exports, "formatMinutes", {
|
|
84904
85969
|
enumerable: true,
|
|
84905
85970
|
get: function() {
|