@camstack/types 1.2.364 → 1.2.366
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/addon.js +3 -2
- package/dist/addon.mjs +3 -2
- package/dist/auth/device-certificate.d.ts +372 -0
- package/dist/auth/request-origin.d.ts +43 -0
- package/dist/capabilities/air-quality-sensor.cap.d.ts +32 -0
- package/dist/capabilities/alarm-panel.cap.d.ts +4 -0
- package/dist/capabilities/ambient-light-sensor.cap.d.ts +13 -0
- package/dist/capabilities/audio-metrics.cap.d.ts +4 -0
- package/dist/capabilities/automation-control.cap.d.ts +4 -0
- package/dist/capabilities/battery.cap.d.ts +11 -0
- package/dist/capabilities/binary.cap.d.ts +10 -0
- package/dist/capabilities/brightness.cap.d.ts +12 -0
- package/dist/capabilities/camera-streams.cap.d.ts +4 -0
- package/dist/capabilities/capability-definition.d.ts +70 -0
- package/dist/capabilities/carbon-monoxide.cap.d.ts +10 -0
- package/dist/capabilities/climate-control.cap.d.ts +32 -0
- package/dist/capabilities/color.cap.d.ts +4 -0
- package/dist/capabilities/connectivity.cap.d.ts +4 -0
- package/dist/capabilities/consumables.cap.d.ts +4 -0
- package/dist/capabilities/contact.cap.d.ts +10 -0
- package/dist/capabilities/control.cap.d.ts +4 -0
- package/dist/capabilities/cover.cap.d.ts +12 -0
- package/dist/capabilities/day-night.cap.d.ts +4 -0
- package/dist/capabilities/device-credentials.cap.d.ts +174 -0
- package/dist/capabilities/device-discovery.cap.d.ts +4 -0
- package/dist/capabilities/device-status.cap.d.ts +10 -0
- package/dist/capabilities/doorbell.cap.d.ts +4 -0
- package/dist/capabilities/enum-sensor.cap.d.ts +4 -0
- package/dist/capabilities/event-emitter.cap.d.ts +4 -0
- package/dist/capabilities/fan-control.cap.d.ts +15 -0
- package/dist/capabilities/feature-probe.cap.d.ts +4 -0
- package/dist/capabilities/flood.cap.d.ts +10 -0
- package/dist/capabilities/gas.cap.d.ts +10 -0
- package/dist/capabilities/humidifier.cap.d.ts +15 -0
- package/dist/capabilities/humidity-sensor.cap.d.ts +12 -0
- package/dist/capabilities/image-settings.cap.d.ts +4 -0
- package/dist/capabilities/image.cap.d.ts +4 -0
- package/dist/capabilities/index.d.ts +7 -3
- package/dist/capabilities/intercom.cap.d.ts +4 -0
- package/dist/capabilities/lawn-mower-control.cap.d.ts +12 -0
- package/dist/capabilities/lock-control.cap.d.ts +4 -0
- package/dist/capabilities/media-player.cap.d.ts +4 -0
- package/dist/capabilities/motion-trigger.cap.d.ts +4 -0
- package/dist/capabilities/motion-zones.cap.d.ts +4 -0
- package/dist/capabilities/motion.cap.d.ts +11 -0
- package/dist/capabilities/native-object-detection.cap.d.ts +4 -0
- package/dist/capabilities/navigation.cap.d.ts +4 -0
- package/dist/capabilities/network-link.cap.d.ts +19 -0
- package/dist/capabilities/node-certificates.cap.d.ts +128 -0
- package/dist/capabilities/notifier.cap.d.ts +4 -0
- package/dist/capabilities/numeric-sensor.cap.d.ts +12 -0
- package/dist/capabilities/pet-feeder.cap.d.ts +25 -0
- package/dist/capabilities/power-meter.cap.d.ts +43 -0
- package/dist/capabilities/presence.cap.d.ts +12 -0
- package/dist/capabilities/pressure-sensor.cap.d.ts +12 -0
- package/dist/capabilities/privacy-mask.cap.d.ts +4 -0
- package/dist/capabilities/ptz-autotrack.cap.d.ts +4 -0
- package/dist/capabilities/recording-onboard.cap.d.ts +4 -0
- package/dist/capabilities/recording-signal.cap.d.ts +4 -0
- package/dist/capabilities/scene-monitor.cap.d.ts +4 -0
- package/dist/capabilities/script-runner.cap.d.ts +4 -0
- package/dist/capabilities/smoke.cap.d.ts +10 -0
- package/dist/capabilities/stream-catalog.cap.d.ts +4 -0
- package/dist/capabilities/stream-params.cap.d.ts +4 -0
- package/dist/capabilities/stream-signals.cap.d.ts +4 -0
- package/dist/capabilities/switch.cap.d.ts +10 -0
- package/dist/capabilities/tamper.cap.d.ts +10 -0
- package/dist/capabilities/temperature-sensor.cap.d.ts +12 -0
- package/dist/capabilities/update.cap.d.ts +4 -0
- package/dist/capabilities/vacuum-control.cap.d.ts +32 -0
- package/dist/capabilities/valve.cap.d.ts +12 -0
- package/dist/capabilities/vibration.cap.d.ts +10 -0
- package/dist/capabilities/water-heater.cap.d.ts +17 -0
- package/dist/capabilities/weather.cap.d.ts +27 -0
- package/dist/capabilities/zone-analytics.cap.d.ts +4 -0
- package/dist/capabilities/zone-rules.cap.d.ts +4 -0
- package/dist/capabilities/zones.cap.d.ts +4 -0
- package/dist/client.d.ts +1 -1
- package/dist/client.js +255 -0
- package/dist/client.mjs +245 -1
- package/dist/generated/addon-api.d.ts +797 -4
- package/dist/generated/cap-input-defaults.d.ts +1 -1
- package/dist/generated/capability-router-map.d.ts +8 -2
- package/dist/generated/history-catalog.d.ts +11 -0
- package/dist/generated/method-access-map.d.ts +1 -1
- package/dist/generated/system-proxy.d.ts +2 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +1574 -34
- package/dist/index.mjs +1522 -35
- package/dist/interfaces/auth.d.ts +6 -0
- package/dist/{sleep-BBF1iXUi.mjs → sleep-DxJdzHni.mjs} +26 -1
- package/dist/{sleep-BBXNq778.js → sleep-NZlEFYGX.js} +37 -0
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_sleep = require("./sleep-
|
|
2
|
+
const require_sleep = require("./sleep-NZlEFYGX.js");
|
|
3
3
|
const require_event_category = require("./event-category-T43rdQWR.js");
|
|
4
4
|
const require_composition = require("./composition-DCYnv4I6.js");
|
|
5
5
|
const require_node_color = require("./node-color.js");
|
|
@@ -6658,6 +6658,330 @@ var SSO_STATE_COOKIE = "camstack_sso_state";
|
|
|
6658
6658
|
/** Seconds the state cookie lives — the pending IdP state lasts 5 minutes, the bridge 5 more. */
|
|
6659
6659
|
var SSO_STATE_COOKIE_MAX_AGE_SEC = 600;
|
|
6660
6660
|
//#endregion
|
|
6661
|
+
//#region src/auth/device-certificate.ts
|
|
6662
|
+
/**
|
|
6663
|
+
* Device certificates (D855) — the wire contract shared by the hub, the admin
|
|
6664
|
+
* UI and the native viewer.
|
|
6665
|
+
*
|
|
6666
|
+
* A device (a phone) generates its OWN P-256 key pair in hardware (Secure
|
|
6667
|
+
* Enclave / Android Keystore / a non-extractable WebCrypto key). The private
|
|
6668
|
+
* key never travels. The hub signs the PUBLIC key into an X.509 leaf under a
|
|
6669
|
+
* dedicated device CA; the device later proves possession of the key by
|
|
6670
|
+
* signing a hub-issued nonce, and the hub answers with the same session a
|
|
6671
|
+
* password login opens.
|
|
6672
|
+
*
|
|
6673
|
+
* Everything on the wire is a small string (a PEM, a base64url signature):
|
|
6674
|
+
* D613 is about bulk bytes, and a certificate is ~600 bytes.
|
|
6675
|
+
*/
|
|
6676
|
+
/** Signature algorithm of every device credential: ECDSA, curve P-256, SHA-256. */
|
|
6677
|
+
var DEVICE_CERT_SIGNATURE = "ecdsa-p256-sha256";
|
|
6678
|
+
/** First line of every signed message; a change of format bumps the version. */
|
|
6679
|
+
var DEVICE_SIGNATURE_MESSAGE_VERSION = "camstack-device-cert-v1";
|
|
6680
|
+
/** What a signature is for. A login signature can never be replayed as a renewal. */
|
|
6681
|
+
var DeviceSignaturePurposeSchema = zod.z.enum([
|
|
6682
|
+
"login",
|
|
6683
|
+
"renew",
|
|
6684
|
+
"revoke"
|
|
6685
|
+
]);
|
|
6686
|
+
/** Leaf lifetime and the window in which the app renews it. */
|
|
6687
|
+
var DEVICE_CERT_VALIDITY_DAYS = 365;
|
|
6688
|
+
var DEVICE_CERT_RENEW_WINDOW_DAYS = 30;
|
|
6689
|
+
/** One-shot enrollment code and login nonce lifetimes. */
|
|
6690
|
+
var DEVICE_ENROLLMENT_TTL_MS = 10 * 6e4;
|
|
6691
|
+
var DEVICE_NONCE_TTL_MS = 6e4;
|
|
6692
|
+
/** SAN URI prefixes of a device leaf. */
|
|
6693
|
+
var DEVICE_SAN_CREDENTIAL_PREFIX = "camstack:credential:";
|
|
6694
|
+
var DEVICE_SAN_USER_PREFIX = "camstack:user:";
|
|
6695
|
+
/**
|
|
6696
|
+
* The exact bytes a device signs (UTF-8, `\n` separators, no trailing newline):
|
|
6697
|
+
*
|
|
6698
|
+
* camstack-device-cert-v1
|
|
6699
|
+
* <login|renew>
|
|
6700
|
+
* <origin> the hub origin returned by `getDeviceChallenge`
|
|
6701
|
+
* <nonce>
|
|
6702
|
+
*
|
|
6703
|
+
* The origin is part of the message so a signature collected by a look-alike
|
|
6704
|
+
* hub is worthless on the real one; the hub additionally binds the nonce to
|
|
6705
|
+
* the origin it issued it for and refuses any other.
|
|
6706
|
+
*/
|
|
6707
|
+
function buildDeviceSignatureMessage(input) {
|
|
6708
|
+
return [
|
|
6709
|
+
DEVICE_SIGNATURE_MESSAGE_VERSION,
|
|
6710
|
+
input.purpose,
|
|
6711
|
+
input.origin,
|
|
6712
|
+
input.nonce
|
|
6713
|
+
].join("\n");
|
|
6714
|
+
}
|
|
6715
|
+
/** The deep link a QR carries: `camstack://enroll?hub=<origin>&code=<code>`. */
|
|
6716
|
+
function buildDeviceEnrollmentLink(input) {
|
|
6717
|
+
const query = new URLSearchParams();
|
|
6718
|
+
if (input.hub !== void 0) query.set("hub", input.hub);
|
|
6719
|
+
query.set("code", input.code);
|
|
6720
|
+
return `${input.scheme ?? "camstack"}://enroll?${query.toString()}`;
|
|
6721
|
+
}
|
|
6722
|
+
/** Parse an enrollment deep link; `null` when it is not one. `hub` is absent when the link names none. */
|
|
6723
|
+
function parseDeviceEnrollmentLink(raw) {
|
|
6724
|
+
let url;
|
|
6725
|
+
try {
|
|
6726
|
+
url = new URL(raw);
|
|
6727
|
+
} catch {
|
|
6728
|
+
return null;
|
|
6729
|
+
}
|
|
6730
|
+
if (url.protocol !== "camstack:" && url.protocol !== "camstack.dev:") return null;
|
|
6731
|
+
if (url.hostname !== "enroll") return null;
|
|
6732
|
+
const code = url.searchParams.get("code");
|
|
6733
|
+
if (code === null || code === "") return null;
|
|
6734
|
+
const hub = url.searchParams.get("hub");
|
|
6735
|
+
return {
|
|
6736
|
+
hub: hub === null || hub === "" ? null : hub,
|
|
6737
|
+
code
|
|
6738
|
+
};
|
|
6739
|
+
}
|
|
6740
|
+
var DevicePlatformSchema = zod.z.enum([
|
|
6741
|
+
"ios",
|
|
6742
|
+
"android",
|
|
6743
|
+
"web",
|
|
6744
|
+
"other"
|
|
6745
|
+
]);
|
|
6746
|
+
var Base64UrlSchema = zod.z.string().min(1).max(4096).regex(/^[A-Za-z0-9_-]+$/);
|
|
6747
|
+
var PemSchema = zod.z.string().min(1).max(16384);
|
|
6748
|
+
/**
|
|
6749
|
+
* Why a device-certificate endpoint said no. Distinct from a transport / 5xx
|
|
6750
|
+
* failure: those carry no reason and mean "try again", never "the credential is
|
|
6751
|
+
* dead". The viewer switches on this exhaustively.
|
|
6752
|
+
*/
|
|
6753
|
+
var DeviceRefusalReasonSchema = zod.z.enum([
|
|
6754
|
+
"revoked",
|
|
6755
|
+
"unknown-credential",
|
|
6756
|
+
"expired",
|
|
6757
|
+
"bad-signature",
|
|
6758
|
+
"nonce-invalid",
|
|
6759
|
+
"rate-limited",
|
|
6760
|
+
"invalid-certificate",
|
|
6761
|
+
"superseded",
|
|
6762
|
+
"user-gone",
|
|
6763
|
+
"unavailable",
|
|
6764
|
+
"code-invalid",
|
|
6765
|
+
"self-enrollment-disabled",
|
|
6766
|
+
"step-up-required",
|
|
6767
|
+
"bad-public-key"
|
|
6768
|
+
]);
|
|
6769
|
+
/** The only answers after which the app may count towards deleting its credential. */
|
|
6770
|
+
var DEFINITIVE_DEVICE_REFUSALS = [
|
|
6771
|
+
"revoked",
|
|
6772
|
+
"unknown-credential",
|
|
6773
|
+
"user-gone"
|
|
6774
|
+
];
|
|
6775
|
+
/** Consecutive DEFINITIVE answers before the app deletes its key and certificate. */
|
|
6776
|
+
var DEVICE_DEFINITIVE_REFUSALS_BEFORE_DELETE = 3;
|
|
6777
|
+
function isDefinitiveDeviceRefusal(reason) {
|
|
6778
|
+
return DEFINITIVE_DEVICE_REFUSALS.includes(reason);
|
|
6779
|
+
}
|
|
6780
|
+
var DeviceRefusalSchema = zod.z.object({
|
|
6781
|
+
ok: zod.z.literal(false),
|
|
6782
|
+
reason: DeviceRefusalReasonSchema,
|
|
6783
|
+
definitive: zod.z.boolean(),
|
|
6784
|
+
retryAfterSeconds: zod.z.number().optional()
|
|
6785
|
+
});
|
|
6786
|
+
/**
|
|
6787
|
+
* A credential-bound session that can no longer refresh answers
|
|
6788
|
+
* `auth.refreshSession` with UNAUTHORIZED whose message is this prefix + the
|
|
6789
|
+
* reason; {@link deviceRefusalFromMessage} reads it back.
|
|
6790
|
+
*/
|
|
6791
|
+
var DEVICE_REFRESH_REFUSAL_PREFIX = "device-credential:";
|
|
6792
|
+
function deviceRefusalFromMessage(message) {
|
|
6793
|
+
if (!message.startsWith("device-credential:")) return null;
|
|
6794
|
+
const parsed = DeviceRefusalReasonSchema.safeParse(message.slice(18));
|
|
6795
|
+
return parsed.success ? parsed.data : null;
|
|
6796
|
+
}
|
|
6797
|
+
var CompleteEnrollmentInputSchema = zod.z.object({
|
|
6798
|
+
code: zod.z.string().min(1).max(256),
|
|
6799
|
+
/** SubjectPublicKeyInfo DER of the device's P-256 public key, base64url. */
|
|
6800
|
+
publicKeySpki: Base64UrlSchema,
|
|
6801
|
+
deviceName: zod.z.string().min(1).max(80).optional(),
|
|
6802
|
+
platform: DevicePlatformSchema
|
|
6803
|
+
});
|
|
6804
|
+
var CompleteEnrollmentOutputSchema = zod.z.object({
|
|
6805
|
+
credentialId: zod.z.string(),
|
|
6806
|
+
certPem: PemSchema,
|
|
6807
|
+
/** The device CA certificate the leaf chains to. */
|
|
6808
|
+
chainPem: PemSchema,
|
|
6809
|
+
notAfter: zod.z.number(),
|
|
6810
|
+
user: zod.z.object({
|
|
6811
|
+
id: zod.z.string(),
|
|
6812
|
+
username: zod.z.string()
|
|
6813
|
+
})
|
|
6814
|
+
});
|
|
6815
|
+
var CompleteEnrollmentResultSchema = zod.z.discriminatedUnion("ok", [CompleteEnrollmentOutputSchema.extend({ ok: zod.z.literal(true) }), DeviceRefusalSchema]);
|
|
6816
|
+
var EnrollSelfInputSchema = zod.z.object({
|
|
6817
|
+
/** The single-use step-up proof (`auth.deviceEnrollProofFrom…`). */
|
|
6818
|
+
proof: zod.z.string().min(1).max(512),
|
|
6819
|
+
publicKeySpki: Base64UrlSchema,
|
|
6820
|
+
deviceName: zod.z.string().min(1).max(80),
|
|
6821
|
+
platform: DevicePlatformSchema
|
|
6822
|
+
});
|
|
6823
|
+
var DeviceEnrollProofSchema = zod.z.object({
|
|
6824
|
+
proof: zod.z.string(),
|
|
6825
|
+
expiresAt: zod.z.number()
|
|
6826
|
+
});
|
|
6827
|
+
var DeviceChallengeSchema = zod.z.object({
|
|
6828
|
+
nonce: zod.z.string(),
|
|
6829
|
+
/** The origin to put in the signed message. The app compares it to the hub it dialled. */
|
|
6830
|
+
origin: zod.z.string(),
|
|
6831
|
+
expiresAt: zod.z.number(),
|
|
6832
|
+
signature: zod.z.literal(DEVICE_CERT_SIGNATURE)
|
|
6833
|
+
});
|
|
6834
|
+
var DeviceChallengeResultSchema = zod.z.discriminatedUnion("ok", [DeviceChallengeSchema.extend({ ok: zod.z.literal(true) }), DeviceRefusalSchema]);
|
|
6835
|
+
var DeviceProofInputSchema = zod.z.object({
|
|
6836
|
+
certPem: PemSchema,
|
|
6837
|
+
nonce: zod.z.string().min(1).max(256),
|
|
6838
|
+
/** ECDSA P-256 SHA-256 over {@link buildDeviceSignatureMessage}; raw r||s or DER, base64url. */
|
|
6839
|
+
signature: Base64UrlSchema
|
|
6840
|
+
});
|
|
6841
|
+
var RenewDeviceCertificateOutputSchema = zod.z.object({
|
|
6842
|
+
credentialId: zod.z.string(),
|
|
6843
|
+
certPem: PemSchema,
|
|
6844
|
+
chainPem: PemSchema,
|
|
6845
|
+
notAfter: zod.z.number()
|
|
6846
|
+
});
|
|
6847
|
+
var RenewDeviceCertificateResultSchema = zod.z.discriminatedUnion("ok", [RenewDeviceCertificateOutputSchema.extend({ ok: zod.z.literal(true) }), DeviceRefusalSchema]);
|
|
6848
|
+
var RevokeOwnDeviceCertificateResultSchema = zod.z.discriminatedUnion("ok", [zod.z.object({
|
|
6849
|
+
ok: zod.z.literal(true),
|
|
6850
|
+
credentialId: zod.z.string(),
|
|
6851
|
+
sessionsEnded: zod.z.number().int()
|
|
6852
|
+
}), DeviceRefusalSchema]);
|
|
6853
|
+
function formatDeviceRevoker(revoker) {
|
|
6854
|
+
return revoker.kind === "device" ? "device" : `${revoker.kind}:${revoker.userId}`;
|
|
6855
|
+
}
|
|
6856
|
+
var DeviceCredentialStatusSchema = zod.z.enum([
|
|
6857
|
+
"active",
|
|
6858
|
+
"expired",
|
|
6859
|
+
"revoked"
|
|
6860
|
+
]);
|
|
6861
|
+
var DeviceCredentialSchema = zod.z.object({
|
|
6862
|
+
id: zod.z.string(),
|
|
6863
|
+
userId: zod.z.string(),
|
|
6864
|
+
username: zod.z.string().nullable(),
|
|
6865
|
+
deviceName: zod.z.string(),
|
|
6866
|
+
platform: DevicePlatformSchema,
|
|
6867
|
+
enrolledVia: zod.z.enum(["qr", "self"]),
|
|
6868
|
+
/** SHA-256 of the leaf certificate DER, colon-hex. */
|
|
6869
|
+
fingerprint: zod.z.string(),
|
|
6870
|
+
issuedAt: zod.z.number(),
|
|
6871
|
+
expiresAt: zod.z.number(),
|
|
6872
|
+
lastUsedAt: zod.z.number().nullable(),
|
|
6873
|
+
lastUsedFrom: zod.z.string().nullable(),
|
|
6874
|
+
revokedAt: zod.z.number().nullable(),
|
|
6875
|
+
/** `admin:<userId>` | `user:<userId>` | `device` | `user-deleted`. */
|
|
6876
|
+
revokedBy: zod.z.string().nullable(),
|
|
6877
|
+
status: DeviceCredentialStatusSchema
|
|
6878
|
+
});
|
|
6879
|
+
var StartEnrollmentOutputSchema = zod.z.object({
|
|
6880
|
+
/** Shown once; only its hash is kept. */
|
|
6881
|
+
code: zod.z.string(),
|
|
6882
|
+
expiresAt: zod.z.number(),
|
|
6883
|
+
/** `camstack://enroll?hub=…&code=…` — what the QR encodes. */
|
|
6884
|
+
enrollUrl: zod.z.string(),
|
|
6885
|
+
/** The hub origin in the link, or `null` when the hub could not name one (the link then has no `hub`). */
|
|
6886
|
+
hubOrigin: zod.z.string().nullable(),
|
|
6887
|
+
/** Every origin the apps may try (role `appConnections`). */
|
|
6888
|
+
hubOrigins: zod.z.array(zod.z.string())
|
|
6889
|
+
});
|
|
6890
|
+
/** The `device-certificate` arm of `auth.listLoginMethods`. */
|
|
6891
|
+
var DeviceCertificateLoginMethodSchema = zod.z.object({
|
|
6892
|
+
kind: zod.z.literal("device-certificate"),
|
|
6893
|
+
id: zod.z.literal("device-certificate"),
|
|
6894
|
+
label: zod.z.string(),
|
|
6895
|
+
stage: zod.z.literal("primary"),
|
|
6896
|
+
/** tRPC paths under the hub's `auth` router, so a client names no literal. */
|
|
6897
|
+
challengePath: zod.z.literal("auth.getDeviceChallenge"),
|
|
6898
|
+
revokePath: zod.z.literal("auth.revokeOwnDeviceCertificate"),
|
|
6899
|
+
enrollSelfPath: zod.z.literal("auth.enrollSelf"),
|
|
6900
|
+
loginPath: zod.z.literal("auth.loginWithDeviceCertificate"),
|
|
6901
|
+
renewPath: zod.z.literal("auth.renewDeviceCertificate"),
|
|
6902
|
+
signature: zod.z.literal(DEVICE_CERT_SIGNATURE),
|
|
6903
|
+
messageVersion: zod.z.literal(DEVICE_SIGNATURE_MESSAGE_VERSION),
|
|
6904
|
+
/** Which clients can execute it: a native app silently, a browser with a non-extractable WebCrypto key. */
|
|
6905
|
+
clients: zod.z.array(zod.z.enum(["native", "web"]))
|
|
6906
|
+
});
|
|
6907
|
+
//#endregion
|
|
6908
|
+
//#region src/auth/request-origin.ts
|
|
6909
|
+
/** host[:port] — a DNS name, IPv4 or bracketed IPv6. No userinfo, path or spaces. */
|
|
6910
|
+
var AUTHORITY_RE = /^(?:[a-z0-9.-]+|\[[0-9a-f:.]+\])(?::\d{1,5})?$/i;
|
|
6911
|
+
/** Same grammar as the hub's `parseForwardedPrefix` (spa-mount.ts). */
|
|
6912
|
+
var PREFIX_RE = /^\/[A-Za-z0-9_\-.]+(?:\/[A-Za-z0-9_\-.]+)*$/;
|
|
6913
|
+
var MAX_PREFIX_LENGTH = 512;
|
|
6914
|
+
/** First value of a possibly comma-joined forwarded header (the client-most proxy). */
|
|
6915
|
+
function firstValue(value) {
|
|
6916
|
+
if (value === void 0) return null;
|
|
6917
|
+
const first = value.split(",")[0]?.trim() ?? "";
|
|
6918
|
+
return first.length === 0 ? null : first;
|
|
6919
|
+
}
|
|
6920
|
+
/** `scheme://host[:port]` normalised by WHATWG URL, or `null` if it is not an http(s) origin. */
|
|
6921
|
+
function normalizeOrigin(value) {
|
|
6922
|
+
try {
|
|
6923
|
+
const url = new URL(value);
|
|
6924
|
+
if (url.protocol !== "https:" && url.protocol !== "http:") return null;
|
|
6925
|
+
if (url.username !== "" || url.password !== "") return null;
|
|
6926
|
+
return url.origin;
|
|
6927
|
+
} catch {
|
|
6928
|
+
return null;
|
|
6929
|
+
}
|
|
6930
|
+
}
|
|
6931
|
+
/** The mount prefix the relay named (no trailing slash), or `''`. Invalid = absent. */
|
|
6932
|
+
function requestMountPrefix(headers) {
|
|
6933
|
+
const raw = headers["x-forwarded-prefix"];
|
|
6934
|
+
if (raw === void 0 || raw.length === 0 || raw.length > MAX_PREFIX_LENGTH) return "";
|
|
6935
|
+
const trimmed = raw.endsWith("/") ? raw.slice(0, -1) : raw;
|
|
6936
|
+
if (trimmed === "" || !PREFIX_RE.test(trimmed)) return "";
|
|
6937
|
+
if (trimmed.split("/").some((segment) => segment === ".." || segment === ".")) return "";
|
|
6938
|
+
return trimmed;
|
|
6939
|
+
}
|
|
6940
|
+
/**
|
|
6941
|
+
* The origins the request CLAIMS, most specific first: the proxy's
|
|
6942
|
+
* `X-Forwarded-Host` over `Host`; the named `X-Forwarded-Proto`, or https
|
|
6943
|
+
* then http when none is named (the hub terminates TLS itself on 4443).
|
|
6944
|
+
*/
|
|
6945
|
+
function claimedRequestOrigins(headers) {
|
|
6946
|
+
const authority = firstValue(headers["x-forwarded-host"]) ?? firstValue(headers["host"]);
|
|
6947
|
+
if (authority === null || !AUTHORITY_RE.test(authority)) return [];
|
|
6948
|
+
const proto = firstValue(headers["x-forwarded-proto"])?.toLowerCase() ?? null;
|
|
6949
|
+
const schemes = proto === "https" || proto === "http" ? [proto] : proto === null ? ["https", "http"] : [];
|
|
6950
|
+
const out = [];
|
|
6951
|
+
for (const scheme of schemes) {
|
|
6952
|
+
const origin = normalizeOrigin(`${scheme}://${authority}`);
|
|
6953
|
+
if (origin !== null) out.push(origin);
|
|
6954
|
+
}
|
|
6955
|
+
return out;
|
|
6956
|
+
}
|
|
6957
|
+
/** Every origin the hub advertises itself at, normalised. Never the app link, never loopback. */
|
|
6958
|
+
function advertisedHubOrigins(book) {
|
|
6959
|
+
const candidates = [];
|
|
6960
|
+
for (const row of book.rows) {
|
|
6961
|
+
if (row.kind === "app-link" || row.kind === "loopback") continue;
|
|
6962
|
+
candidates.push(row.baseUrl);
|
|
6963
|
+
}
|
|
6964
|
+
const { publicEndpoint, internal, appConnections } = book.roles;
|
|
6965
|
+
if (publicEndpoint.resolved !== null) candidates.push(publicEndpoint.resolved);
|
|
6966
|
+
if (internal.resolved !== null) candidates.push(internal.resolved);
|
|
6967
|
+
candidates.push(...appConnections.resolved);
|
|
6968
|
+
candidates.push(...book.listenerOrigins ?? []);
|
|
6969
|
+
const out = /* @__PURE__ */ new Set();
|
|
6970
|
+
for (const candidate of candidates) {
|
|
6971
|
+
const origin = normalizeOrigin(candidate);
|
|
6972
|
+
if (origin !== null) out.add(origin);
|
|
6973
|
+
}
|
|
6974
|
+
return out;
|
|
6975
|
+
}
|
|
6976
|
+
/**
|
|
6977
|
+
* The origin to send the browser back to: the first claimed origin that is in
|
|
6978
|
+
* `allowed`, or `null` (the caller then uses its default address).
|
|
6979
|
+
*/
|
|
6980
|
+
function pickRequestOrigin(headers, allowed) {
|
|
6981
|
+
for (const origin of claimedRequestOrigins(headers)) if (allowed.has(origin)) return origin;
|
|
6982
|
+
return null;
|
|
6983
|
+
}
|
|
6984
|
+
//#endregion
|
|
6661
6985
|
//#region src/expression/binding-source.ts
|
|
6662
6986
|
/**
|
|
6663
6987
|
* What an expression's named bindings READ from.
|
|
@@ -11068,7 +11392,11 @@ var cameraStreamsCapability = {
|
|
|
11068
11392
|
* See `RuntimeStateDurability`. Enforced by
|
|
11069
11393
|
* `scripts/check-runtime-state-durability.ts`.
|
|
11070
11394
|
*/
|
|
11071
|
-
durability: "session"
|
|
11395
|
+
durability: "session",
|
|
11396
|
+
/**
|
|
11397
|
+
* History (D850): none — `online` duplicates device-status.online (one authority); slot data is nested enum/string.
|
|
11398
|
+
*/
|
|
11399
|
+
history: "none"
|
|
11072
11400
|
};
|
|
11073
11401
|
//#endregion
|
|
11074
11402
|
//#region src/capabilities/cap-router-predicates.ts
|
|
@@ -13549,6 +13877,224 @@ var keychainCapability = {
|
|
|
13549
13877
|
}
|
|
13550
13878
|
};
|
|
13551
13879
|
//#endregion
|
|
13880
|
+
//#region src/capabilities/device-credentials.cap.ts
|
|
13881
|
+
var DeviceCaStatusSchema = zod.z.discriminatedUnion("state", [
|
|
13882
|
+
zod.z.object({ state: zod.z.literal("absent") }),
|
|
13883
|
+
zod.z.object({
|
|
13884
|
+
state: zod.z.literal("ready"),
|
|
13885
|
+
subject: zod.z.string(),
|
|
13886
|
+
fingerprintSha256: zod.z.string(),
|
|
13887
|
+
validTo: zod.z.string()
|
|
13888
|
+
}),
|
|
13889
|
+
zod.z.object({
|
|
13890
|
+
state: zod.z.literal("unavailable"),
|
|
13891
|
+
reason: zod.z.string()
|
|
13892
|
+
})
|
|
13893
|
+
]);
|
|
13894
|
+
var DeviceCertificateSettingsSchema = zod.z.object({ selfEnrollment: zod.z.enum(["allowed", "disabled"]) });
|
|
13895
|
+
/**
|
|
13896
|
+
* `device-credentials` — the admin surface of device certificates (D855).
|
|
13897
|
+
*
|
|
13898
|
+
* Everything a device does ITSELF — completing an enrollment, getting a
|
|
13899
|
+
* challenge, signing in, renewing — is a PUBLIC procedure of the hub's `auth`
|
|
13900
|
+
* router (`auth.completeEnrollment`, `getDeviceChallenge`,
|
|
13901
|
+
* `loginWithDeviceCertificate`, `renewDeviceCertificate`): those legs are
|
|
13902
|
+
* proofs of possession, not capability calls, and must not be reachable as
|
|
13903
|
+
* cap methods. This cap holds only what an operator does about them.
|
|
13904
|
+
*
|
|
13905
|
+
* Provider: `local-auth`, which also owns the device CA and the registry.
|
|
13906
|
+
* The hub is the only node that persists device credentials.
|
|
13907
|
+
*/
|
|
13908
|
+
var deviceCredentialsCapability = {
|
|
13909
|
+
name: "device-credentials",
|
|
13910
|
+
scope: "system",
|
|
13911
|
+
mode: "singleton",
|
|
13912
|
+
methods: {
|
|
13913
|
+
/**
|
|
13914
|
+
* Every enrolled device, newest first; `userId` narrows to one user.
|
|
13915
|
+
* `status` is derived: revoked wins over expired.
|
|
13916
|
+
*/
|
|
13917
|
+
listDeviceCredentials: require_sleep.method(zod.z.object({
|
|
13918
|
+
userId: zod.z.string().min(1).optional(),
|
|
13919
|
+
includeRevoked: zod.z.boolean().default(false)
|
|
13920
|
+
}), zod.z.array(DeviceCredentialSchema).readonly(), { auth: "admin" }),
|
|
13921
|
+
/**
|
|
13922
|
+
* Mint a one-shot enrollment code for `userId` and a device name: 128-bit
|
|
13923
|
+
* random, single use, 10 minutes, kept only as a hash. Returns the code
|
|
13924
|
+
* once, with the `camstack://enroll?hub=…&code=…` link a QR carries.
|
|
13925
|
+
* `caller` (the admin) is recorded in the audit trail.
|
|
13926
|
+
*/
|
|
13927
|
+
startEnrollment: require_sleep.method(zod.z.object({
|
|
13928
|
+
userId: zod.z.string().min(1),
|
|
13929
|
+
deviceName: zod.z.string().min(1).max(80)
|
|
13930
|
+
}), StartEnrollmentOutputSchema, {
|
|
13931
|
+
kind: "mutation",
|
|
13932
|
+
auth: "admin",
|
|
13933
|
+
caller: "required"
|
|
13934
|
+
}),
|
|
13935
|
+
/**
|
|
13936
|
+
* Revoke a credential: its certificate stops logging in at once, and every
|
|
13937
|
+
* session it opened ends (an open session also dies at its next refresh
|
|
13938
|
+
* even if this call raced it). Idempotent.
|
|
13939
|
+
*/
|
|
13940
|
+
revokeDeviceCredential: require_sleep.method(zod.z.object({ id: zod.z.string().min(1) }), zod.z.object({
|
|
13941
|
+
revoked: zod.z.boolean(),
|
|
13942
|
+
sessionsEnded: zod.z.number().int(),
|
|
13943
|
+
status: DeviceCredentialStatusSchema
|
|
13944
|
+
}), {
|
|
13945
|
+
kind: "mutation",
|
|
13946
|
+
auth: "admin",
|
|
13947
|
+
caller: "required"
|
|
13948
|
+
}),
|
|
13949
|
+
/**
|
|
13950
|
+
* Hub-wide device-certificate settings. `selfEnrollment`: `allowed`
|
|
13951
|
+
* (default) lets a signed-in user enroll their own device after a step-up
|
|
13952
|
+
* sign-in; `disabled` makes `auth.enrollSelf` refuse. The admin QR path is
|
|
13953
|
+
* unaffected. Hub-wide only (no per-role switch).
|
|
13954
|
+
*/
|
|
13955
|
+
getDeviceCertificateSettings: require_sleep.method(zod.z.object({}), DeviceCertificateSettingsSchema, { auth: "admin" }),
|
|
13956
|
+
setDeviceCertificateSettings: require_sleep.method(DeviceCertificateSettingsSchema, DeviceCertificateSettingsSchema, {
|
|
13957
|
+
kind: "mutation",
|
|
13958
|
+
auth: "admin"
|
|
13959
|
+
}),
|
|
13960
|
+
/**
|
|
13961
|
+
* Delete the registry row of a REVOKED credential (clean-up; the audit trail
|
|
13962
|
+
* keeps the revocation). Refuses a live credential: revoke it first. After
|
|
13963
|
+
* the row is gone the device's next call answers `unknown-credential`.
|
|
13964
|
+
*/
|
|
13965
|
+
deleteDeviceCredential: require_sleep.method(zod.z.object({ id: zod.z.string().min(1) }), zod.z.object({ result: zod.z.enum([
|
|
13966
|
+
"deleted",
|
|
13967
|
+
"live",
|
|
13968
|
+
"unknown"
|
|
13969
|
+
]) }), {
|
|
13970
|
+
kind: "mutation",
|
|
13971
|
+
auth: "admin",
|
|
13972
|
+
caller: "required"
|
|
13973
|
+
}),
|
|
13974
|
+
/**
|
|
13975
|
+
* The device CA: `absent` until the first enrollment creates it (lazily,
|
|
13976
|
+
* never rotated on boot), `unavailable` while the keychain cannot answer.
|
|
13977
|
+
*/
|
|
13978
|
+
getDeviceCaStatus: require_sleep.method(zod.z.object({}), DeviceCaStatusSchema, { auth: "admin" }),
|
|
13979
|
+
/** Rename a credential (the label only; the certificate is unchanged). */
|
|
13980
|
+
renameDeviceCredential: require_sleep.method(zod.z.object({
|
|
13981
|
+
id: zod.z.string().min(1),
|
|
13982
|
+
deviceName: zod.z.string().min(1).max(80)
|
|
13983
|
+
}), zod.z.object({ renamed: zod.z.boolean() }), {
|
|
13984
|
+
kind: "mutation",
|
|
13985
|
+
auth: "admin"
|
|
13986
|
+
})
|
|
13987
|
+
}
|
|
13988
|
+
};
|
|
13989
|
+
//#endregion
|
|
13990
|
+
//#region src/capabilities/node-certificates.cap.ts
|
|
13991
|
+
/**
|
|
13992
|
+
* `node-certificates` - what a node holds and the two renewals the hub drives
|
|
13993
|
+
* (D856): the node's MESH leaf (mutual TLS to the hub) and its HTTPS leaf (issued
|
|
13994
|
+
* from the hub's local CA so a device that trusts the hub root trusts the node).
|
|
13995
|
+
*
|
|
13996
|
+
* Provided by the AGENT RUNTIME (the synthetic `agent-runtime` addon id, like
|
|
13997
|
+
* `server-management`): the hub reaches it through the ordinary node-pinned
|
|
13998
|
+
* capability call - no new Moleculer action. The hub's own certificates are
|
|
13999
|
+
* handled in-process by the hub (`certificates` router), so this cap has no hub
|
|
14000
|
+
* provider.
|
|
14001
|
+
*
|
|
14002
|
+
* No private key ever crosses the mesh: the node generates its key pair, sends a
|
|
14003
|
+
* CSR, and the hub returns only the signed certificate.
|
|
14004
|
+
*/
|
|
14005
|
+
var MeshLeafInfoSchema = zod.z.object({
|
|
14006
|
+
cn: zod.z.string(),
|
|
14007
|
+
serial: zod.z.string(),
|
|
14008
|
+
fingerprintSha256: zod.z.string(),
|
|
14009
|
+
notBefore: zod.z.number(),
|
|
14010
|
+
notAfter: zod.z.number()
|
|
14011
|
+
});
|
|
14012
|
+
var HttpsLeafInfoSchema = zod.z.object({
|
|
14013
|
+
fingerprintSha256: zod.z.string(),
|
|
14014
|
+
issuer: zod.z.string(),
|
|
14015
|
+
sans: zod.z.array(zod.z.string()),
|
|
14016
|
+
notBefore: zod.z.number(),
|
|
14017
|
+
notAfter: zod.z.number()
|
|
14018
|
+
});
|
|
14019
|
+
var NodeHttpsStateSchema = zod.z.discriminatedUnion("state", [zod.z.object({
|
|
14020
|
+
state: zod.z.literal("served"),
|
|
14021
|
+
leaf: HttpsLeafInfoSchema
|
|
14022
|
+
}), zod.z.object({
|
|
14023
|
+
state: zod.z.literal("not-issued"),
|
|
14024
|
+
reason: zod.z.string()
|
|
14025
|
+
})]);
|
|
14026
|
+
var nodeCertificatesCapability = {
|
|
14027
|
+
name: "node-certificates",
|
|
14028
|
+
scope: "system",
|
|
14029
|
+
mode: "singleton",
|
|
14030
|
+
internal: true,
|
|
14031
|
+
methods: {
|
|
14032
|
+
/** The node's current mesh leaf (`null` when it is not enrolled on mTLS) and HTTPS state. */
|
|
14033
|
+
getCertificates: require_sleep.method(zod.z.object({}), zod.z.object({
|
|
14034
|
+
nodeId: zod.z.string(),
|
|
14035
|
+
mesh: MeshLeafInfoSchema.nullable(),
|
|
14036
|
+
https: NodeHttpsStateSchema
|
|
14037
|
+
}), { auth: "admin" }),
|
|
14038
|
+
/** Generate a NEW mesh key pair on the node; return the CSR (CN = node id). The key stays here. */
|
|
14039
|
+
prepareMeshRenewal: require_sleep.method(zod.z.object({}), zod.z.object({ csrPem: zod.z.string() }), {
|
|
14040
|
+
kind: "mutation",
|
|
14041
|
+
auth: "admin"
|
|
14042
|
+
}),
|
|
14043
|
+
/**
|
|
14044
|
+
* Install the hub-signed leaf for the key made by `prepareMeshRenewal`: persist it
|
|
14045
|
+
* (keeping the previous one), then reconnect to the hub with it. The node reverts to
|
|
14046
|
+
* the previous leaf by itself unless `confirmMeshLeaf` arrives within `confirmWithinMs`.
|
|
14047
|
+
*/
|
|
14048
|
+
installMeshLeaf: require_sleep.method(zod.z.object({
|
|
14049
|
+
certPem: zod.z.string().min(1),
|
|
14050
|
+
caCertPem: zod.z.string().min(1),
|
|
14051
|
+
confirmWithinMs: zod.z.number().int().min(1e4).max(6e5)
|
|
14052
|
+
}), zod.z.object({
|
|
14053
|
+
fingerprintSha256: zod.z.string(),
|
|
14054
|
+
serial: zod.z.string()
|
|
14055
|
+
}), {
|
|
14056
|
+
kind: "mutation",
|
|
14057
|
+
auth: "admin"
|
|
14058
|
+
}),
|
|
14059
|
+
/** The hub saw the node reconnect with the new leaf: keep it, forget the previous one. */
|
|
14060
|
+
confirmMeshLeaf: require_sleep.method(zod.z.object({ fingerprintSha256: zod.z.string() }), zod.z.object({ confirmed: zod.z.boolean() }), {
|
|
14061
|
+
kind: "mutation",
|
|
14062
|
+
auth: "admin"
|
|
14063
|
+
}),
|
|
14064
|
+
/** Go back to the previous leaf now. `false` when there is none to go back to. */
|
|
14065
|
+
rollbackMeshLeaf: require_sleep.method(zod.z.object({}), zod.z.object({ rolledBack: zod.z.boolean() }), {
|
|
14066
|
+
kind: "mutation",
|
|
14067
|
+
auth: "admin"
|
|
14068
|
+
}),
|
|
14069
|
+
/** A key pair + CSR for the node's HTTPS leaf, and the names the node reports for itself. */
|
|
14070
|
+
prepareHttpsCertificate: require_sleep.method(zod.z.object({}), zod.z.object({
|
|
14071
|
+
csrPem: zod.z.string(),
|
|
14072
|
+
hostnames: zod.z.array(zod.z.string()),
|
|
14073
|
+
addresses: zod.z.array(zod.z.string()),
|
|
14074
|
+
/** SHA-256 of the hub local CA this node pinned at its first install; `null` before one. */
|
|
14075
|
+
pinnedCaFingerprintSha256: zod.z.string().nullable()
|
|
14076
|
+
}), {
|
|
14077
|
+
kind: "mutation",
|
|
14078
|
+
auth: "admin"
|
|
14079
|
+
}),
|
|
14080
|
+
/** Install the hub-signed HTTPS leaf and hot-swap the serving context (no restart). */
|
|
14081
|
+
installHttpsCertificate: require_sleep.method(zod.z.object({
|
|
14082
|
+
certPem: zod.z.string().min(1),
|
|
14083
|
+
caCertPem: zod.z.string().min(1),
|
|
14084
|
+
/**
|
|
14085
|
+
* The hub signals that its local CA was rotated (D227) and this leaf chains to the NEW
|
|
14086
|
+
* one. Only the hub, over the authenticated mesh, can say so; a leaf with a different CA
|
|
14087
|
+
* and no signal is refused.
|
|
14088
|
+
*/
|
|
14089
|
+
caRotation: zod.z.boolean().optional()
|
|
14090
|
+
}), HttpsLeafInfoSchema, {
|
|
14091
|
+
kind: "mutation",
|
|
14092
|
+
auth: "admin"
|
|
14093
|
+
})
|
|
14094
|
+
},
|
|
14095
|
+
mount: { kind: "skip" }
|
|
14096
|
+
};
|
|
14097
|
+
//#endregion
|
|
13552
14098
|
//#region src/capabilities/keychain-admin.cap.ts
|
|
13553
14099
|
/**
|
|
13554
14100
|
* `keychain-admin` — the operator's view of the keychain (System → Secrets).
|
|
@@ -14417,6 +14963,10 @@ var deviceDiscoveryCapability = {
|
|
|
14417
14963
|
* `scripts/check-runtime-state-durability.ts`.
|
|
14418
14964
|
*/
|
|
14419
14965
|
durability: "session",
|
|
14966
|
+
/**
|
|
14967
|
+
* History (D850): none — inventory.
|
|
14968
|
+
*/
|
|
14969
|
+
history: "none",
|
|
14420
14970
|
methods: {
|
|
14421
14971
|
/**
|
|
14422
14972
|
* Snapshot of the current `discovered` list. Returns the
|
|
@@ -40936,6 +41486,10 @@ var alarmPanelCapability = {
|
|
|
40936
41486
|
* `scripts/check-runtime-state-durability.ts`.
|
|
40937
41487
|
*/
|
|
40938
41488
|
durability: "restored",
|
|
41489
|
+
/**
|
|
41490
|
+
* History (D850): none — enum state; arm/disarm history belongs in the events ledger.
|
|
41491
|
+
*/
|
|
41492
|
+
history: "none",
|
|
40939
41493
|
/** Clock fields: written, but excluded from the compare that decides
|
|
40940
41494
|
* whether persisting is worth a SQLite commit. */
|
|
40941
41495
|
volatileStateFields: ["lastChangedAt"]
|
|
@@ -49913,7 +50467,11 @@ var zonesCapability = {
|
|
|
49913
50467
|
* See `RuntimeStateDurability`. Enforced by
|
|
49914
50468
|
* `scripts/check-runtime-state-durability.ts`.
|
|
49915
50469
|
*/
|
|
49916
|
-
durability: "restored"
|
|
50470
|
+
durability: "restored",
|
|
50471
|
+
/**
|
|
50472
|
+
* History (D850): none — configuration arrays.
|
|
50473
|
+
*/
|
|
50474
|
+
history: "none"
|
|
49917
50475
|
};
|
|
49918
50476
|
//#endregion
|
|
49919
50477
|
//#region src/capabilities/pipeline-runner.cap.ts
|
|
@@ -54033,6 +54591,10 @@ var streamSignalsCapability = {
|
|
|
54033
54591
|
* `scripts/check-runtime-state-durability.ts`.
|
|
54034
54592
|
*/
|
|
54035
54593
|
durability: "session",
|
|
54594
|
+
/**
|
|
54595
|
+
* History (D850): none — array state.
|
|
54596
|
+
*/
|
|
54597
|
+
history: "none",
|
|
54036
54598
|
methods: {
|
|
54037
54599
|
/**
|
|
54038
54600
|
* What this device can emit. Empty is a valid and common answer — most
|
|
@@ -57252,6 +57814,36 @@ var airQualitySensorCapability = {
|
|
|
57252
57814
|
* `scripts/check-runtime-state-durability.ts`.
|
|
57253
57815
|
*/
|
|
57254
57816
|
durability: "restored",
|
|
57817
|
+
/**
|
|
57818
|
+
* History (D850): recorded series.
|
|
57819
|
+
*/
|
|
57820
|
+
history: { fields: {
|
|
57821
|
+
co2Ppm: {
|
|
57822
|
+
kind: "gauge",
|
|
57823
|
+
unit: "ppm",
|
|
57824
|
+
deadband: 5
|
|
57825
|
+
},
|
|
57826
|
+
vocPpb: {
|
|
57827
|
+
kind: "gauge",
|
|
57828
|
+
unit: "ppb",
|
|
57829
|
+
deadband: 5
|
|
57830
|
+
},
|
|
57831
|
+
pm25: {
|
|
57832
|
+
kind: "gauge",
|
|
57833
|
+
unit: "ug/m3",
|
|
57834
|
+
deadband: 1
|
|
57835
|
+
},
|
|
57836
|
+
pm10: {
|
|
57837
|
+
kind: "gauge",
|
|
57838
|
+
unit: "ug/m3",
|
|
57839
|
+
deadband: 1
|
|
57840
|
+
},
|
|
57841
|
+
aqi: {
|
|
57842
|
+
kind: "gauge",
|
|
57843
|
+
unit: "count",
|
|
57844
|
+
deadband: 1
|
|
57845
|
+
}
|
|
57846
|
+
} },
|
|
57255
57847
|
/** Clock fields: written, but excluded from the compare that decides
|
|
57256
57848
|
* whether persisting is worth a SQLite commit. */
|
|
57257
57849
|
volatileStateFields: ["lastFetchedAt"]
|
|
@@ -57296,6 +57888,15 @@ var ambientLightSensorCapability = {
|
|
|
57296
57888
|
* `scripts/check-runtime-state-durability.ts`.
|
|
57297
57889
|
*/
|
|
57298
57890
|
durability: "restored",
|
|
57891
|
+
/**
|
|
57892
|
+
* History (D850): recorded series. Wide range, so a RELATIVE deadband (10 %).
|
|
57893
|
+
*/
|
|
57894
|
+
history: { fields: { lux: {
|
|
57895
|
+
kind: "gauge",
|
|
57896
|
+
unit: "lx",
|
|
57897
|
+
deadbandPct: 10,
|
|
57898
|
+
minIntervalMs: 6e4
|
|
57899
|
+
} } },
|
|
57299
57900
|
/** Clock fields: written, but excluded from the compare that decides
|
|
57300
57901
|
* whether persisting is worth a SQLite commit. */
|
|
57301
57902
|
volatileStateFields: ["lastFetchedAt"]
|
|
@@ -57434,7 +58035,11 @@ var audioMetricsCapability = {
|
|
|
57434
58035
|
* See `RuntimeStateDurability`. Enforced by
|
|
57435
58036
|
* `scripts/check-runtime-state-durability.ts`.
|
|
57436
58037
|
*/
|
|
57437
|
-
durability: "session"
|
|
58038
|
+
durability: "session",
|
|
58039
|
+
/**
|
|
58040
|
+
* 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.
|
|
58041
|
+
*/
|
|
58042
|
+
history: "none"
|
|
57438
58043
|
};
|
|
57439
58044
|
//#endregion
|
|
57440
58045
|
//#region src/capabilities/automation-control.cap.ts
|
|
@@ -57505,7 +58110,11 @@ var automationControlCapability = {
|
|
|
57505
58110
|
* See `RuntimeStateDurability`. Enforced by
|
|
57506
58111
|
* `scripts/check-runtime-state-durability.ts`.
|
|
57507
58112
|
*/
|
|
57508
|
-
durability: "session"
|
|
58113
|
+
durability: "session",
|
|
58114
|
+
/**
|
|
58115
|
+
* History (D850): none — configuration and transient run state.
|
|
58116
|
+
*/
|
|
58117
|
+
history: "none"
|
|
57509
58118
|
};
|
|
57510
58119
|
//#endregion
|
|
57511
58120
|
//#region src/capabilities/battery.cap.ts
|
|
@@ -57688,6 +58297,13 @@ onStatusChanged: { data: zod.z.object({
|
|
|
57688
58297
|
* `scripts/check-runtime-state-durability.ts`.
|
|
57689
58298
|
*/
|
|
57690
58299
|
durability: "restored",
|
|
58300
|
+
/**
|
|
58301
|
+
* History (D850): recorded series. The generic capture replaces the `battery` series of `pipeline-analytics:stats-5m`.
|
|
58302
|
+
*/
|
|
58303
|
+
history: { fields: { percentage: {
|
|
58304
|
+
kind: "gauge",
|
|
58305
|
+
unit: "%"
|
|
58306
|
+
} } },
|
|
57691
58307
|
/** Clock fields: written, but excluded from the compare that decides
|
|
57692
58308
|
* whether persisting is worth a SQLite commit. */
|
|
57693
58309
|
volatileStateFields: ["lastUpdated"]
|
|
@@ -57729,6 +58345,10 @@ var binaryCapability = {
|
|
|
57729
58345
|
* `scripts/check-runtime-state-durability.ts`.
|
|
57730
58346
|
*/
|
|
57731
58347
|
durability: "restored",
|
|
58348
|
+
/**
|
|
58349
|
+
* History (D850): recorded series.
|
|
58350
|
+
*/
|
|
58351
|
+
history: { fields: { on: { kind: "boolean" } } },
|
|
57732
58352
|
/** Clock fields: written, but excluded from the compare that decides
|
|
57733
58353
|
* whether persisting is worth a SQLite commit. */
|
|
57734
58354
|
volatileStateFields: ["lastChangedAt"]
|
|
@@ -57793,7 +58413,15 @@ onBrightnessChanged: { data: zod.z.object({
|
|
|
57793
58413
|
* See `RuntimeStateDurability`. Enforced by
|
|
57794
58414
|
* `scripts/check-runtime-state-durability.ts`.
|
|
57795
58415
|
*/
|
|
57796
|
-
durability: "session"
|
|
58416
|
+
durability: "session",
|
|
58417
|
+
/**
|
|
58418
|
+
* History (D850): recorded series. Actuator tier: level keeps every change.
|
|
58419
|
+
*/
|
|
58420
|
+
history: { fields: { percentage: {
|
|
58421
|
+
kind: "gauge",
|
|
58422
|
+
unit: "%",
|
|
58423
|
+
minIntervalMs: 0
|
|
58424
|
+
} } }
|
|
57797
58425
|
};
|
|
57798
58426
|
//#endregion
|
|
57799
58427
|
//#region src/capabilities/button.cap.ts
|
|
@@ -58270,6 +58898,10 @@ var carbonMonoxideCapability = {
|
|
|
58270
58898
|
* `scripts/check-runtime-state-durability.ts`.
|
|
58271
58899
|
*/
|
|
58272
58900
|
durability: "restored",
|
|
58901
|
+
/**
|
|
58902
|
+
* History (D850): recorded series.
|
|
58903
|
+
*/
|
|
58904
|
+
history: { fields: { detected: { kind: "boolean" } } },
|
|
58273
58905
|
/** Clock fields: written, but excluded from the compare that decides
|
|
58274
58906
|
* whether persisting is worth a SQLite commit. */
|
|
58275
58907
|
volatileStateFields: ["lastChangedAt"]
|
|
@@ -58441,7 +59073,37 @@ var climateControlCapability = {
|
|
|
58441
59073
|
* See `RuntimeStateDurability`. Enforced by
|
|
58442
59074
|
* `scripts/check-runtime-state-durability.ts`.
|
|
58443
59075
|
*/
|
|
58444
|
-
durability: "session"
|
|
59076
|
+
durability: "session",
|
|
59077
|
+
/**
|
|
59078
|
+
* History (D850): recorded series. Celsius by contract; setpoints keep every change (`minIntervalMs: 0`).
|
|
59079
|
+
*/
|
|
59080
|
+
history: { fields: {
|
|
59081
|
+
currentTemp: {
|
|
59082
|
+
kind: "gauge",
|
|
59083
|
+
unit: "°C",
|
|
59084
|
+
deadband: .1
|
|
59085
|
+
},
|
|
59086
|
+
currentHumidity: {
|
|
59087
|
+
kind: "gauge",
|
|
59088
|
+
unit: "%",
|
|
59089
|
+
deadband: .5
|
|
59090
|
+
},
|
|
59091
|
+
target: {
|
|
59092
|
+
kind: "gauge",
|
|
59093
|
+
unit: "°C",
|
|
59094
|
+
minIntervalMs: 0
|
|
59095
|
+
},
|
|
59096
|
+
targetHigh: {
|
|
59097
|
+
kind: "gauge",
|
|
59098
|
+
unit: "°C",
|
|
59099
|
+
minIntervalMs: 0
|
|
59100
|
+
},
|
|
59101
|
+
targetLow: {
|
|
59102
|
+
kind: "gauge",
|
|
59103
|
+
unit: "°C",
|
|
59104
|
+
minIntervalMs: 0
|
|
59105
|
+
}
|
|
59106
|
+
} }
|
|
58445
59107
|
};
|
|
58446
59108
|
//#endregion
|
|
58447
59109
|
//#region src/capabilities/color.cap.ts
|
|
@@ -58560,7 +59222,11 @@ onColorChanged: { data: zod.z.object({
|
|
|
58560
59222
|
* See `RuntimeStateDurability`. Enforced by
|
|
58561
59223
|
* `scripts/check-runtime-state-durability.ts`.
|
|
58562
59224
|
*/
|
|
58563
|
-
durability: "session"
|
|
59225
|
+
durability: "session",
|
|
59226
|
+
/**
|
|
59227
|
+
* History (D850): none — nested and cosmetic.
|
|
59228
|
+
*/
|
|
59229
|
+
history: "none"
|
|
58564
59230
|
};
|
|
58565
59231
|
//#endregion
|
|
58566
59232
|
//#region src/capabilities/connection-test.cap.ts
|
|
@@ -58692,6 +59358,10 @@ var connectivityCapability = {
|
|
|
58692
59358
|
* `scripts/check-runtime-state-durability.ts`.
|
|
58693
59359
|
*/
|
|
58694
59360
|
durability: "restored",
|
|
59361
|
+
/**
|
|
59362
|
+
* History (D850): none — duplicates device-status.online (one authority for availability).
|
|
59363
|
+
*/
|
|
59364
|
+
history: "none",
|
|
58695
59365
|
/** Clock fields: written, but excluded from the compare that decides
|
|
58696
59366
|
* whether persisting is worth a SQLite commit. */
|
|
58697
59367
|
volatileStateFields: ["lastChangedAt"]
|
|
@@ -58818,6 +59488,10 @@ reset: require_sleep.method(zod.z.object({
|
|
|
58818
59488
|
* `scripts/check-runtime-state-durability.ts`.
|
|
58819
59489
|
*/
|
|
58820
59490
|
durability: "restored",
|
|
59491
|
+
/**
|
|
59492
|
+
* History (D850): none — `items` is an array keyed by runtime ids; a history path never enters it.
|
|
59493
|
+
*/
|
|
59494
|
+
history: "none",
|
|
58821
59495
|
/** Clocks, not content: a re-read that changed no item costs no commit. */
|
|
58822
59496
|
volatileStateFields: ["lastChangedAt", "lastFetchedAt"]
|
|
58823
59497
|
};
|
|
@@ -58860,6 +59534,10 @@ var contactCapability = {
|
|
|
58860
59534
|
* `scripts/check-runtime-state-durability.ts`.
|
|
58861
59535
|
*/
|
|
58862
59536
|
durability: "restored",
|
|
59537
|
+
/**
|
|
59538
|
+
* History (D850): recorded series.
|
|
59539
|
+
*/
|
|
59540
|
+
history: { fields: { entryOpen: { kind: "boolean" } } },
|
|
58863
59541
|
/** Clock fields: written, but excluded from the compare that decides
|
|
58864
59542
|
* whether persisting is worth a SQLite commit. */
|
|
58865
59543
|
volatileStateFields: ["lastChangedAt"]
|
|
@@ -59001,7 +59679,11 @@ var controlCapability = {
|
|
|
59001
59679
|
* See `RuntimeStateDurability`. Enforced by
|
|
59002
59680
|
* `scripts/check-runtime-state-durability.ts`.
|
|
59003
59681
|
*/
|
|
59004
|
-
durability: "session"
|
|
59682
|
+
durability: "session",
|
|
59683
|
+
/**
|
|
59684
|
+
* History (D850): none — `value` is a number/string union; configuration entity.
|
|
59685
|
+
*/
|
|
59686
|
+
history: "none"
|
|
59005
59687
|
};
|
|
59006
59688
|
//#endregion
|
|
59007
59689
|
//#region src/capabilities/cover.cap.ts
|
|
@@ -59094,6 +59776,14 @@ var coverCapability = {
|
|
|
59094
59776
|
* `scripts/check-runtime-state-durability.ts`.
|
|
59095
59777
|
*/
|
|
59096
59778
|
durability: "restored",
|
|
59779
|
+
/**
|
|
59780
|
+
* History (D850): recorded series. Actuator tier: position keeps every tick of a movement.
|
|
59781
|
+
*/
|
|
59782
|
+
history: { fields: { position: {
|
|
59783
|
+
kind: "gauge",
|
|
59784
|
+
unit: "%",
|
|
59785
|
+
minIntervalMs: 0
|
|
59786
|
+
} } },
|
|
59097
59787
|
/** Clock fields: written, but excluded from the compare that decides
|
|
59098
59788
|
* whether persisting is worth a SQLite commit. */
|
|
59099
59789
|
volatileStateFields: ["lastChangedAt"]
|
|
@@ -59200,6 +59890,10 @@ var dayNightCapability = {
|
|
|
59200
59890
|
* `scripts/check-runtime-state-durability.ts`.
|
|
59201
59891
|
*/
|
|
59202
59892
|
durability: "restored",
|
|
59893
|
+
/**
|
|
59894
|
+
* History (D850): none — firmware configuration, not a measurement.
|
|
59895
|
+
*/
|
|
59896
|
+
history: "none",
|
|
59203
59897
|
/** Clock fields: written, but excluded from the compare that decides
|
|
59204
59898
|
* whether persisting is worth a SQLite commit. */
|
|
59205
59899
|
volatileStateFields: ["lastFetchedAt"]
|
|
@@ -59259,6 +59953,10 @@ onStatusChanged: { data: zod.z.object({
|
|
|
59259
59953
|
* `scripts/check-runtime-state-durability.ts`.
|
|
59260
59954
|
*/
|
|
59261
59955
|
durability: "restored",
|
|
59956
|
+
/**
|
|
59957
|
+
* History (D850): recorded series. The ONE availability series.
|
|
59958
|
+
*/
|
|
59959
|
+
history: { fields: { online: { kind: "boolean" } } },
|
|
59262
59960
|
/** Clock fields: written, but excluded from the compare that decides
|
|
59263
59961
|
* whether persisting is worth a SQLite commit. */
|
|
59264
59962
|
volatileStateFields: ["lastChangedAt"]
|
|
@@ -59327,7 +60025,11 @@ onPressed: {
|
|
|
59327
60025
|
* See `RuntimeStateDurability`. Enforced by
|
|
59328
60026
|
* `scripts/check-runtime-state-durability.ts`.
|
|
59329
60027
|
*/
|
|
59330
|
-
durability: "restored"
|
|
60028
|
+
durability: "restored",
|
|
60029
|
+
/**
|
|
60030
|
+
* History (D850): none — `pressCountSinceStart` resets with the addon, so it is not a monotonic meter; presses live in the events ledger.
|
|
60031
|
+
*/
|
|
60032
|
+
history: "none"
|
|
59331
60033
|
};
|
|
59332
60034
|
//#endregion
|
|
59333
60035
|
//#region src/capabilities/enum-sensor.cap.ts
|
|
@@ -59377,6 +60079,10 @@ var enumSensorCapability = {
|
|
|
59377
60079
|
* `scripts/check-runtime-state-durability.ts`.
|
|
59378
60080
|
*/
|
|
59379
60081
|
durability: "restored",
|
|
60082
|
+
/**
|
|
60083
|
+
* History (D850): none — text/enum state has no history (non-goal).
|
|
60084
|
+
*/
|
|
60085
|
+
history: "none",
|
|
59380
60086
|
/** Clock fields: written, but excluded from the compare that decides
|
|
59381
60087
|
* whether persisting is worth a SQLite commit. */
|
|
59382
60088
|
volatileStateFields: ["lastFetchedAt"]
|
|
@@ -59424,7 +60130,11 @@ var eventEmitterCapability = {
|
|
|
59424
60130
|
* See `RuntimeStateDurability`. Enforced by
|
|
59425
60131
|
* `scripts/check-runtime-state-durability.ts`.
|
|
59426
60132
|
*/
|
|
59427
|
-
durability: "session"
|
|
60133
|
+
durability: "session",
|
|
60134
|
+
/**
|
|
60135
|
+
* History (D850): none — `eventCountSinceStart` resets with the addon; events live in ledgers.
|
|
60136
|
+
*/
|
|
60137
|
+
history: "none"
|
|
59428
60138
|
};
|
|
59429
60139
|
//#endregion
|
|
59430
60140
|
//#region src/capabilities/face-gallery.cap.ts
|
|
@@ -59924,7 +60634,18 @@ var fanControlCapability = {
|
|
|
59924
60634
|
* See `RuntimeStateDurability`. Enforced by
|
|
59925
60635
|
* `scripts/check-runtime-state-durability.ts`.
|
|
59926
60636
|
*/
|
|
59927
|
-
durability: "session"
|
|
60637
|
+
durability: "session",
|
|
60638
|
+
/**
|
|
60639
|
+
* History (D850): recorded series. Actuator tier: speed keeps every change.
|
|
60640
|
+
*/
|
|
60641
|
+
history: { fields: {
|
|
60642
|
+
percentage: {
|
|
60643
|
+
kind: "gauge",
|
|
60644
|
+
unit: "%",
|
|
60645
|
+
minIntervalMs: 0
|
|
60646
|
+
},
|
|
60647
|
+
oscillating: { kind: "boolean" }
|
|
60648
|
+
} }
|
|
59928
60649
|
};
|
|
59929
60650
|
//#endregion
|
|
59930
60651
|
//#region src/capabilities/feature-probe.cap.ts
|
|
@@ -60009,7 +60730,11 @@ onProbeChanged: { data: zod.z.object({
|
|
|
60009
60730
|
* See `RuntimeStateDurability`. Enforced by
|
|
60010
60731
|
* `scripts/check-runtime-state-durability.ts`.
|
|
60011
60732
|
*/
|
|
60012
|
-
durability: "session"
|
|
60733
|
+
durability: "session",
|
|
60734
|
+
/**
|
|
60735
|
+
* History (D850): none — static identity and capability probe.
|
|
60736
|
+
*/
|
|
60737
|
+
history: "none"
|
|
60013
60738
|
};
|
|
60014
60739
|
//#endregion
|
|
60015
60740
|
//#region src/capabilities/flood.cap.ts
|
|
@@ -60046,6 +60771,10 @@ var floodCapability = {
|
|
|
60046
60771
|
* `scripts/check-runtime-state-durability.ts`.
|
|
60047
60772
|
*/
|
|
60048
60773
|
durability: "restored",
|
|
60774
|
+
/**
|
|
60775
|
+
* History (D850): recorded series.
|
|
60776
|
+
*/
|
|
60777
|
+
history: { fields: { flooded: { kind: "boolean" } } },
|
|
60049
60778
|
/** Clock fields: written, but excluded from the compare that decides
|
|
60050
60779
|
* whether persisting is worth a SQLite commit. */
|
|
60051
60780
|
volatileStateFields: ["lastChangedAt"]
|
|
@@ -60081,6 +60810,10 @@ var gasCapability = {
|
|
|
60081
60810
|
* `scripts/check-runtime-state-durability.ts`.
|
|
60082
60811
|
*/
|
|
60083
60812
|
durability: "restored",
|
|
60813
|
+
/**
|
|
60814
|
+
* History (D850): recorded series.
|
|
60815
|
+
*/
|
|
60816
|
+
history: { fields: { detected: { kind: "boolean" } } },
|
|
60084
60817
|
/** Clock fields: written, but excluded from the compare that decides
|
|
60085
60818
|
* whether persisting is worth a SQLite commit. */
|
|
60086
60819
|
volatileStateFields: ["lastChangedAt"]
|
|
@@ -60168,7 +60901,18 @@ var humidifierCapability = {
|
|
|
60168
60901
|
* See `RuntimeStateDurability`. Enforced by
|
|
60169
60902
|
* `scripts/check-runtime-state-durability.ts`.
|
|
60170
60903
|
*/
|
|
60171
|
-
durability: "session"
|
|
60904
|
+
durability: "session",
|
|
60905
|
+
/**
|
|
60906
|
+
* History (D850): recorded series.
|
|
60907
|
+
*/
|
|
60908
|
+
history: { fields: {
|
|
60909
|
+
currentHumidity: {
|
|
60910
|
+
kind: "gauge",
|
|
60911
|
+
unit: "%",
|
|
60912
|
+
deadband: .5
|
|
60913
|
+
},
|
|
60914
|
+
on: { kind: "boolean" }
|
|
60915
|
+
} }
|
|
60172
60916
|
};
|
|
60173
60917
|
//#endregion
|
|
60174
60918
|
//#region src/capabilities/humidity-sensor.cap.ts
|
|
@@ -60214,6 +60958,14 @@ var humiditySensorCapability = {
|
|
|
60214
60958
|
* `scripts/check-runtime-state-durability.ts`.
|
|
60215
60959
|
*/
|
|
60216
60960
|
durability: "restored",
|
|
60961
|
+
/**
|
|
60962
|
+
* History (D850): recorded series.
|
|
60963
|
+
*/
|
|
60964
|
+
history: { fields: { percent: {
|
|
60965
|
+
kind: "gauge",
|
|
60966
|
+
unit: "%",
|
|
60967
|
+
deadband: .5
|
|
60968
|
+
} } },
|
|
60217
60969
|
/** Clock fields: written, but excluded from the compare that decides
|
|
60218
60970
|
* whether persisting is worth a SQLite commit. */
|
|
60219
60971
|
volatileStateFields: ["lastFetchedAt"]
|
|
@@ -60263,7 +61015,11 @@ var imageCapability = {
|
|
|
60263
61015
|
* See `RuntimeStateDurability`. Enforced by
|
|
60264
61016
|
* `scripts/check-runtime-state-durability.ts`.
|
|
60265
61017
|
*/
|
|
60266
|
-
durability: "session"
|
|
61018
|
+
durability: "session",
|
|
61019
|
+
/**
|
|
61020
|
+
* History (D850): none — not numeric.
|
|
61021
|
+
*/
|
|
61022
|
+
history: "none"
|
|
60267
61023
|
};
|
|
60268
61024
|
//#endregion
|
|
60269
61025
|
//#region src/capabilities/image-settings.cap.ts
|
|
@@ -60422,6 +61178,10 @@ var imageSettingsCapability = {
|
|
|
60422
61178
|
* `scripts/check-runtime-state-durability.ts`.
|
|
60423
61179
|
*/
|
|
60424
61180
|
durability: "restored",
|
|
61181
|
+
/**
|
|
61182
|
+
* History (D850): none — camera image configuration (operator intent), not a trend.
|
|
61183
|
+
*/
|
|
61184
|
+
history: "none",
|
|
60425
61185
|
/** Clock fields: written, but excluded from the compare that decides
|
|
60426
61186
|
* whether persisting is worth a SQLite commit. */
|
|
60427
61187
|
volatileStateFields: ["lastFetchedAt"]
|
|
@@ -60829,7 +61589,11 @@ var intercomCapability = {
|
|
|
60829
61589
|
* See `RuntimeStateDurability`. Enforced by
|
|
60830
61590
|
* `scripts/check-runtime-state-durability.ts`.
|
|
60831
61591
|
*/
|
|
60832
|
-
durability: "session"
|
|
61592
|
+
durability: "session",
|
|
61593
|
+
/**
|
|
61594
|
+
* History (D850): none — talk sessions are a ledger concern, not a trend.
|
|
61595
|
+
*/
|
|
61596
|
+
history: "none"
|
|
60833
61597
|
};
|
|
60834
61598
|
//#endregion
|
|
60835
61599
|
//#region src/capabilities/lawn-mower-control.cap.ts
|
|
@@ -60912,7 +61676,15 @@ var lawnMowerControlCapability = {
|
|
|
60912
61676
|
* See `RuntimeStateDurability`. Enforced by
|
|
60913
61677
|
* `scripts/check-runtime-state-durability.ts`.
|
|
60914
61678
|
*/
|
|
60915
|
-
durability: "session"
|
|
61679
|
+
durability: "session",
|
|
61680
|
+
/**
|
|
61681
|
+
* History (D850): recorded series.
|
|
61682
|
+
*/
|
|
61683
|
+
history: { fields: { batteryLevel: {
|
|
61684
|
+
kind: "gauge",
|
|
61685
|
+
unit: "%",
|
|
61686
|
+
deadband: 2
|
|
61687
|
+
} } }
|
|
60916
61688
|
};
|
|
60917
61689
|
//#endregion
|
|
60918
61690
|
//#region src/capabilities/local-network.cap.ts
|
|
@@ -61507,6 +62279,10 @@ var lockControlCapability = {
|
|
|
61507
62279
|
* `scripts/check-runtime-state-durability.ts`.
|
|
61508
62280
|
*/
|
|
61509
62281
|
durability: "restored",
|
|
62282
|
+
/**
|
|
62283
|
+
* History (D850): none — enum state; lock events belong in the events ledger.
|
|
62284
|
+
*/
|
|
62285
|
+
history: "none",
|
|
61510
62286
|
/** Clock fields: written, but excluded from the compare that decides
|
|
61511
62287
|
* whether persisting is worth a SQLite commit. */
|
|
61512
62288
|
volatileStateFields: ["lastChangedAt"]
|
|
@@ -61680,7 +62456,11 @@ var mediaPlayerCapability = {
|
|
|
61680
62456
|
* See `RuntimeStateDurability`. Enforced by
|
|
61681
62457
|
* `scripts/check-runtime-state-durability.ts`.
|
|
61682
62458
|
*/
|
|
61683
|
-
durability: "session"
|
|
62459
|
+
durability: "session",
|
|
62460
|
+
/**
|
|
62461
|
+
* History (D850): none — `positionMs` moves continuously while playing; volume is transient.
|
|
62462
|
+
*/
|
|
62463
|
+
history: "none"
|
|
61684
62464
|
};
|
|
61685
62465
|
//#endregion
|
|
61686
62466
|
//#region src/capabilities/mesh-network.cap.ts
|
|
@@ -62079,7 +62859,14 @@ onMotionChanged: { data: MotionOnMotionChangedDataSchema } },
|
|
|
62079
62859
|
* See `RuntimeStateDurability`. Enforced by
|
|
62080
62860
|
* `scripts/check-runtime-state-durability.ts`.
|
|
62081
62861
|
*/
|
|
62082
|
-
durability: "session"
|
|
62862
|
+
durability: "session",
|
|
62863
|
+
/**
|
|
62864
|
+
* History (D850): recorded series. A PIR sensor is a series; a camera is not (its motion is an addon series and a ledger).
|
|
62865
|
+
*/
|
|
62866
|
+
history: { fields: { detected: {
|
|
62867
|
+
kind: "boolean",
|
|
62868
|
+
excludeDeviceTypes: [require_err_msg.DeviceType.Camera]
|
|
62869
|
+
} } }
|
|
62083
62870
|
};
|
|
62084
62871
|
//#endregion
|
|
62085
62872
|
//#region src/capabilities/motion-trigger.cap.ts
|
|
@@ -62153,7 +62940,11 @@ var motionTriggerCapability = {
|
|
|
62153
62940
|
* See `RuntimeStateDurability`. Enforced by
|
|
62154
62941
|
* `scripts/check-runtime-state-durability.ts`.
|
|
62155
62942
|
*/
|
|
62156
|
-
durability: "session"
|
|
62943
|
+
durability: "session",
|
|
62944
|
+
/**
|
|
62945
|
+
* History (D850): none — configuration switch.
|
|
62946
|
+
*/
|
|
62947
|
+
history: "none"
|
|
62157
62948
|
};
|
|
62158
62949
|
//#endregion
|
|
62159
62950
|
//#region src/capabilities/motion-zones.cap.ts
|
|
@@ -62230,6 +63021,10 @@ var motionZonesCapability = {
|
|
|
62230
63021
|
* `scripts/check-runtime-state-durability.ts`.
|
|
62231
63022
|
*/
|
|
62232
63023
|
durability: "restored",
|
|
63024
|
+
/**
|
|
63025
|
+
* History (D850): none — configuration.
|
|
63026
|
+
*/
|
|
63027
|
+
history: "none",
|
|
62233
63028
|
/** Clock fields: written, but excluded from the compare that decides
|
|
62234
63029
|
* whether persisting is worth a SQLite commit. */
|
|
62235
63030
|
volatileStateFields: ["lastFetchedAt"]
|
|
@@ -62361,6 +63156,10 @@ var nativeObjectDetectionCapability = {
|
|
|
62361
63156
|
* `scripts/check-runtime-state-durability.ts`.
|
|
62362
63157
|
*/
|
|
62363
63158
|
durability: "restored",
|
|
63159
|
+
/**
|
|
63160
|
+
* History (D850): none — event-like and nested per class; detections live in the objects ledger.
|
|
63161
|
+
*/
|
|
63162
|
+
history: "none",
|
|
62364
63163
|
/** Clock fields: written, but excluded from the compare that decides
|
|
62365
63164
|
* whether persisting is worth a SQLite commit. */
|
|
62366
63165
|
volatileStateFields: ["lastFetchedAt"]
|
|
@@ -62788,7 +63587,11 @@ var navigationCapability = {
|
|
|
62788
63587
|
* See `RuntimeStateDurability`. Enforced by
|
|
62789
63588
|
* `scripts/check-runtime-state-durability.ts`.
|
|
62790
63589
|
*/
|
|
62791
|
-
durability: "session"
|
|
63590
|
+
durability: "session",
|
|
63591
|
+
/**
|
|
63592
|
+
* History (D850): none — control state of a robotic camera, configuration-like.
|
|
63593
|
+
*/
|
|
63594
|
+
history: "none"
|
|
62792
63595
|
};
|
|
62793
63596
|
//#endregion
|
|
62794
63597
|
//#region src/capabilities/network-link.cap.ts
|
|
@@ -62905,6 +63708,23 @@ onStatusChanged: { data: zod.z.object({
|
|
|
62905
63708
|
* `scripts/check-runtime-state-durability.ts`.
|
|
62906
63709
|
*/
|
|
62907
63710
|
durability: "restored",
|
|
63711
|
+
/**
|
|
63712
|
+
* History (D850): recorded series.
|
|
63713
|
+
*/
|
|
63714
|
+
history: { fields: {
|
|
63715
|
+
signalPercent: {
|
|
63716
|
+
kind: "gauge",
|
|
63717
|
+
unit: "%",
|
|
63718
|
+
deadband: 3,
|
|
63719
|
+
minIntervalMs: 6e4
|
|
63720
|
+
},
|
|
63721
|
+
rssiDbm: {
|
|
63722
|
+
kind: "gauge",
|
|
63723
|
+
unit: "dBm",
|
|
63724
|
+
deadband: 2,
|
|
63725
|
+
minIntervalMs: 6e4
|
|
63726
|
+
}
|
|
63727
|
+
} },
|
|
62908
63728
|
/** Clock fields: written, but excluded from the compare that decides
|
|
62909
63729
|
* whether persisting is worth a SQLite commit. */
|
|
62910
63730
|
volatileStateFields: ["lastUpdated"]
|
|
@@ -63364,7 +64184,11 @@ onSent: { data: zod.z.object({
|
|
|
63364
64184
|
* See `RuntimeStateDurability`. Enforced by
|
|
63365
64185
|
* `scripts/check-runtime-state-durability.ts`.
|
|
63366
64186
|
*/
|
|
63367
|
-
durability: "session"
|
|
64187
|
+
durability: "session",
|
|
64188
|
+
/**
|
|
64189
|
+
* History (D850): none — `queueDepth` is outbox operational state, not a device trend.
|
|
64190
|
+
*/
|
|
64191
|
+
history: "none"
|
|
63368
64192
|
};
|
|
63369
64193
|
//#endregion
|
|
63370
64194
|
//#region src/capabilities/numeric-sensor.cap.ts
|
|
@@ -63417,6 +64241,14 @@ var numericSensorCapability = {
|
|
|
63417
64241
|
* `scripts/check-runtime-state-durability.ts`.
|
|
63418
64242
|
*/
|
|
63419
64243
|
durability: "restored",
|
|
64244
|
+
/**
|
|
64245
|
+
* History (D850): recorded series. The unit is per device, read from the sibling `unit` field.
|
|
64246
|
+
*/
|
|
64247
|
+
history: { fields: { value: {
|
|
64248
|
+
kind: "gauge",
|
|
64249
|
+
unitFrom: "unit",
|
|
64250
|
+
minIntervalMs: 3e4
|
|
64251
|
+
} } },
|
|
63420
64252
|
/** Clock fields: written, but excluded from the compare that decides
|
|
63421
64253
|
* whether persisting is worth a SQLite commit. */
|
|
63422
64254
|
volatileStateFields: ["lastFetchedAt"]
|
|
@@ -64012,7 +64844,24 @@ var petFeederCapability = {
|
|
|
64012
64844
|
* See `RuntimeStateDurability`. Enforced by
|
|
64013
64845
|
* `scripts/check-runtime-state-durability.ts`.
|
|
64014
64846
|
*/
|
|
64015
|
-
durability: "session"
|
|
64847
|
+
durability: "session",
|
|
64848
|
+
/**
|
|
64849
|
+
* History (D850): recorded series.
|
|
64850
|
+
*/
|
|
64851
|
+
history: { fields: {
|
|
64852
|
+
foodLevel: { kind: "gauge" },
|
|
64853
|
+
food1: { kind: "gauge" },
|
|
64854
|
+
food2: { kind: "gauge" },
|
|
64855
|
+
batteryPower: {
|
|
64856
|
+
kind: "gauge",
|
|
64857
|
+
unit: "%",
|
|
64858
|
+
deadband: 2
|
|
64859
|
+
},
|
|
64860
|
+
desiccantLeftDays: {
|
|
64861
|
+
kind: "gauge",
|
|
64862
|
+
unit: "days"
|
|
64863
|
+
}
|
|
64864
|
+
} }
|
|
64016
64865
|
};
|
|
64017
64866
|
//#endregion
|
|
64018
64867
|
//#region src/capabilities/plate-gallery.cap.ts
|
|
@@ -64441,6 +65290,47 @@ var powerMeterCapability = {
|
|
|
64441
65290
|
* `scripts/check-runtime-state-durability.ts`.
|
|
64442
65291
|
*/
|
|
64443
65292
|
durability: "restored",
|
|
65293
|
+
/**
|
|
65294
|
+
* History (D850): recorded series. Gauges are floored at 30 s; `kwhTotal` is the one monotonic meter (counter).
|
|
65295
|
+
*/
|
|
65296
|
+
history: { fields: {
|
|
65297
|
+
watts: {
|
|
65298
|
+
kind: "gauge",
|
|
65299
|
+
unit: "W",
|
|
65300
|
+
deadband: 1,
|
|
65301
|
+
minIntervalMs: 3e4
|
|
65302
|
+
},
|
|
65303
|
+
kwhTotal: {
|
|
65304
|
+
kind: "counter",
|
|
65305
|
+
unit: "kWh",
|
|
65306
|
+
deadband: .01,
|
|
65307
|
+
minIntervalMs: 6e4
|
|
65308
|
+
},
|
|
65309
|
+
volts: {
|
|
65310
|
+
kind: "gauge",
|
|
65311
|
+
unit: "V",
|
|
65312
|
+
deadband: 1,
|
|
65313
|
+
minIntervalMs: 3e4
|
|
65314
|
+
},
|
|
65315
|
+
amps: {
|
|
65316
|
+
kind: "gauge",
|
|
65317
|
+
unit: "A",
|
|
65318
|
+
deadband: .05,
|
|
65319
|
+
minIntervalMs: 3e4
|
|
65320
|
+
},
|
|
65321
|
+
va: {
|
|
65322
|
+
kind: "gauge",
|
|
65323
|
+
unit: "VA",
|
|
65324
|
+
deadband: 1,
|
|
65325
|
+
minIntervalMs: 3e4
|
|
65326
|
+
},
|
|
65327
|
+
powerFactor: {
|
|
65328
|
+
kind: "gauge",
|
|
65329
|
+
unit: "ratio",
|
|
65330
|
+
deadband: .01,
|
|
65331
|
+
minIntervalMs: 6e4
|
|
65332
|
+
}
|
|
65333
|
+
} },
|
|
64444
65334
|
/** Clock fields: written, but excluded from the compare that decides
|
|
64445
65335
|
* whether persisting is worth a SQLite commit. */
|
|
64446
65336
|
volatileStateFields: ["lastFetchedAt"]
|
|
@@ -64510,6 +65400,14 @@ var presenceCapability = {
|
|
|
64510
65400
|
* `scripts/check-runtime-state-durability.ts`.
|
|
64511
65401
|
*/
|
|
64512
65402
|
durability: "restored",
|
|
65403
|
+
/**
|
|
65404
|
+
* History (D850): recorded series.
|
|
65405
|
+
*/
|
|
65406
|
+
history: { fields: { batteryPercent: {
|
|
65407
|
+
kind: "gauge",
|
|
65408
|
+
unit: "%",
|
|
65409
|
+
deadband: 1
|
|
65410
|
+
} } },
|
|
64513
65411
|
/** Clock fields: written, but excluded from the compare that decides
|
|
64514
65412
|
* whether persisting is worth a SQLite commit. */
|
|
64515
65413
|
volatileStateFields: ["lastChangedAt"]
|
|
@@ -64558,6 +65456,14 @@ var pressureSensorCapability = {
|
|
|
64558
65456
|
* `scripts/check-runtime-state-durability.ts`.
|
|
64559
65457
|
*/
|
|
64560
65458
|
durability: "restored",
|
|
65459
|
+
/**
|
|
65460
|
+
* History (D850): recorded series.
|
|
65461
|
+
*/
|
|
65462
|
+
history: { fields: { hpa: {
|
|
65463
|
+
kind: "gauge",
|
|
65464
|
+
unit: "hPa",
|
|
65465
|
+
deadband: .1
|
|
65466
|
+
} } },
|
|
64561
65467
|
/** Clock fields: written, but excluded from the compare that decides
|
|
64562
65468
|
* whether persisting is worth a SQLite commit. */
|
|
64563
65469
|
volatileStateFields: ["lastFetchedAt"]
|
|
@@ -64719,6 +65625,10 @@ var privacyMaskCapability = {
|
|
|
64719
65625
|
* `scripts/check-runtime-state-durability.ts`.
|
|
64720
65626
|
*/
|
|
64721
65627
|
durability: "restored",
|
|
65628
|
+
/**
|
|
65629
|
+
* History (D850): none — configuration.
|
|
65630
|
+
*/
|
|
65631
|
+
history: "none",
|
|
64722
65632
|
/** Clock fields: written, but excluded from the compare that decides
|
|
64723
65633
|
* whether persisting is worth a SQLite commit. */
|
|
64724
65634
|
volatileStateFields: ["lastFetchedAt"]
|
|
@@ -65231,7 +66141,11 @@ var ptzAutotrackCapability = {
|
|
|
65231
66141
|
* See `RuntimeStateDurability`. Enforced by
|
|
65232
66142
|
* `scripts/check-runtime-state-durability.ts`.
|
|
65233
66143
|
*/
|
|
65234
|
-
durability: "session"
|
|
66144
|
+
durability: "session",
|
|
66145
|
+
/**
|
|
66146
|
+
* History (D850): none — configuration and capability.
|
|
66147
|
+
*/
|
|
66148
|
+
history: "none"
|
|
65235
66149
|
};
|
|
65236
66150
|
//#endregion
|
|
65237
66151
|
//#region src/capabilities/reboot.cap.ts
|
|
@@ -67264,6 +68178,10 @@ var recordingOnboardCapability = {
|
|
|
67264
68178
|
* `scripts/check-runtime-state-durability.ts`.
|
|
67265
68179
|
*/
|
|
67266
68180
|
durability: "restored",
|
|
68181
|
+
/**
|
|
68182
|
+
* History (D850): none — SD-card configuration and window inventory; arrays.
|
|
68183
|
+
*/
|
|
68184
|
+
history: "none",
|
|
67267
68185
|
/** Clock fields: written, but excluded from the compare that decides
|
|
67268
68186
|
* whether persisting is worth a SQLite commit. */
|
|
67269
68187
|
volatileStateFields: ["lastFetchedAt"]
|
|
@@ -67600,7 +68518,11 @@ getStatus: require_sleep.method(zod.z.object({ deviceId: zod.z.number() }), Reco
|
|
|
67600
68518
|
* See `RuntimeStateDurability`. Enforced by
|
|
67601
68519
|
* `scripts/check-runtime-state-durability.ts`.
|
|
67602
68520
|
*/
|
|
67603
|
-
durability: "session"
|
|
68521
|
+
durability: "session",
|
|
68522
|
+
/**
|
|
68523
|
+
* History (D850): none — recording intent is already in the recordings ledger.
|
|
68524
|
+
*/
|
|
68525
|
+
history: "none"
|
|
67604
68526
|
};
|
|
67605
68527
|
//#endregion
|
|
67606
68528
|
//#region src/capabilities/reserved-collection-sources.ts
|
|
@@ -68025,7 +68947,11 @@ var sceneMonitorCapability = {
|
|
|
68025
68947
|
* See `RuntimeStateDurability`. Enforced by
|
|
68026
68948
|
* `scripts/check-runtime-state-durability.ts`.
|
|
68027
68949
|
*/
|
|
68028
|
-
durability: "session"
|
|
68950
|
+
durability: "session",
|
|
68951
|
+
/**
|
|
68952
|
+
* History (D850): none — nested configuration.
|
|
68953
|
+
*/
|
|
68954
|
+
history: "none"
|
|
68029
68955
|
};
|
|
68030
68956
|
//#endregion
|
|
68031
68957
|
//#region src/capabilities/schemas/zone-rule.ts
|
|
@@ -68184,7 +69110,11 @@ var scriptRunnerCapability = {
|
|
|
68184
69110
|
* See `RuntimeStateDurability`. Enforced by
|
|
68185
69111
|
* `scripts/check-runtime-state-durability.ts`.
|
|
68186
69112
|
*/
|
|
68187
|
-
durability: "session"
|
|
69113
|
+
durability: "session",
|
|
69114
|
+
/**
|
|
69115
|
+
* History (D850): none — transient; run results belong in a ledger.
|
|
69116
|
+
*/
|
|
69117
|
+
history: "none"
|
|
68188
69118
|
};
|
|
68189
69119
|
//#endregion
|
|
68190
69120
|
//#region src/capabilities/smoke.cap.ts
|
|
@@ -68221,6 +69151,10 @@ var smokeCapability = {
|
|
|
68221
69151
|
* `scripts/check-runtime-state-durability.ts`.
|
|
68222
69152
|
*/
|
|
68223
69153
|
durability: "restored",
|
|
69154
|
+
/**
|
|
69155
|
+
* History (D850): recorded series.
|
|
69156
|
+
*/
|
|
69157
|
+
history: { fields: { detected: { kind: "boolean" } } },
|
|
68224
69158
|
/** Clock fields: written, but excluded from the compare that decides
|
|
68225
69159
|
* whether persisting is worth a SQLite commit. */
|
|
68226
69160
|
volatileStateFields: ["lastChangedAt"]
|
|
@@ -68322,6 +69256,10 @@ var streamCatalogCapability = {
|
|
|
68322
69256
|
* `scripts/check-runtime-state-durability.ts`.
|
|
68323
69257
|
*/
|
|
68324
69258
|
durability: "restored",
|
|
69259
|
+
/**
|
|
69260
|
+
* History (D850): none — stream inventory.
|
|
69261
|
+
*/
|
|
69262
|
+
history: "none",
|
|
68325
69263
|
/** Clock field: written, but excluded from the compare that decides whether
|
|
68326
69264
|
* persisting is worth a SQLite commit — the descriptors are the value. */
|
|
68327
69265
|
volatileStateFields: ["lastFetchedAt"]
|
|
@@ -68473,6 +69411,10 @@ var streamParamsCapability = {
|
|
|
68473
69411
|
* `scripts/check-runtime-state-durability.ts`.
|
|
68474
69412
|
*/
|
|
68475
69413
|
durability: "restored",
|
|
69414
|
+
/**
|
|
69415
|
+
* History (D850): none — encoder configuration.
|
|
69416
|
+
*/
|
|
69417
|
+
history: "none",
|
|
68476
69418
|
/** Clock fields: written, but excluded from the compare that decides
|
|
68477
69419
|
* whether persisting is worth a SQLite commit. */
|
|
68478
69420
|
volatileStateFields: ["lastFetchedAt"]
|
|
@@ -68789,6 +69731,10 @@ var switchCapability = {
|
|
|
68789
69731
|
* `scripts/check-runtime-state-durability.ts`.
|
|
68790
69732
|
*/
|
|
68791
69733
|
durability: "restored",
|
|
69734
|
+
/**
|
|
69735
|
+
* History (D850): recorded series.
|
|
69736
|
+
*/
|
|
69737
|
+
history: { fields: { on: { kind: "boolean" } } },
|
|
68792
69738
|
/** Clock fields: written, but excluded from the compare that decides
|
|
68793
69739
|
* whether persisting is worth a SQLite commit. */
|
|
68794
69740
|
volatileStateFields: ["lastChangedAt"],
|
|
@@ -69467,6 +70413,10 @@ var tamperCapability = {
|
|
|
69467
70413
|
* `scripts/check-runtime-state-durability.ts`.
|
|
69468
70414
|
*/
|
|
69469
70415
|
durability: "restored",
|
|
70416
|
+
/**
|
|
70417
|
+
* History (D850): recorded series.
|
|
70418
|
+
*/
|
|
70419
|
+
history: { fields: { tampered: { kind: "boolean" } } },
|
|
69470
70420
|
/** Clock fields: written, but excluded from the compare that decides
|
|
69471
70421
|
* whether persisting is worth a SQLite commit. */
|
|
69472
70422
|
volatileStateFields: ["lastChangedAt"]
|
|
@@ -69524,6 +70474,14 @@ var temperatureSensorCapability = {
|
|
|
69524
70474
|
* `scripts/check-runtime-state-durability.ts`.
|
|
69525
70475
|
*/
|
|
69526
70476
|
durability: "restored",
|
|
70477
|
+
/**
|
|
70478
|
+
* History (D850): recorded series.
|
|
70479
|
+
*/
|
|
70480
|
+
history: { fields: { celsius: {
|
|
70481
|
+
kind: "gauge",
|
|
70482
|
+
unit: "°C",
|
|
70483
|
+
deadband: .1
|
|
70484
|
+
} } },
|
|
69527
70485
|
/** Clock fields: written, but excluded from the compare that decides
|
|
69528
70486
|
* whether persisting is worth a SQLite commit. */
|
|
69529
70487
|
volatileStateFields: ["lastFetchedAt"]
|
|
@@ -69613,7 +70571,11 @@ var updateCapability = {
|
|
|
69613
70571
|
* See `RuntimeStateDurability`. Enforced by
|
|
69614
70572
|
* `scripts/check-runtime-state-durability.ts`.
|
|
69615
70573
|
*/
|
|
69616
|
-
durability: "session"
|
|
70574
|
+
durability: "session",
|
|
70575
|
+
/**
|
|
70576
|
+
* History (D850): none — text and state.
|
|
70577
|
+
*/
|
|
70578
|
+
history: "none"
|
|
69617
70579
|
};
|
|
69618
70580
|
//#endregion
|
|
69619
70581
|
//#region src/capabilities/user-management.cap.ts
|
|
@@ -70009,7 +70971,37 @@ var vacuumControlCapability = {
|
|
|
70009
70971
|
* See `RuntimeStateDurability`. Enforced by
|
|
70010
70972
|
* `scripts/check-runtime-state-durability.ts`.
|
|
70011
70973
|
*/
|
|
70012
|
-
durability: "session"
|
|
70974
|
+
durability: "session",
|
|
70975
|
+
/**
|
|
70976
|
+
* History (D850): recorded series. Tank levels are fixed-object paths (`cleanWater.level`, ...).
|
|
70977
|
+
*/
|
|
70978
|
+
history: { fields: {
|
|
70979
|
+
batteryLevel: {
|
|
70980
|
+
kind: "gauge",
|
|
70981
|
+
unit: "%",
|
|
70982
|
+
deadband: 2
|
|
70983
|
+
},
|
|
70984
|
+
"cleanWater.level": {
|
|
70985
|
+
kind: "gauge",
|
|
70986
|
+
unit: "%",
|
|
70987
|
+
deadband: 2
|
|
70988
|
+
},
|
|
70989
|
+
"dirtyWater.level": {
|
|
70990
|
+
kind: "gauge",
|
|
70991
|
+
unit: "%",
|
|
70992
|
+
deadband: 2
|
|
70993
|
+
},
|
|
70994
|
+
"detergent.level": {
|
|
70995
|
+
kind: "gauge",
|
|
70996
|
+
unit: "%",
|
|
70997
|
+
deadband: 2
|
|
70998
|
+
},
|
|
70999
|
+
"dustBin.level": {
|
|
71000
|
+
kind: "gauge",
|
|
71001
|
+
unit: "%",
|
|
71002
|
+
deadband: 2
|
|
71003
|
+
}
|
|
71004
|
+
} }
|
|
70013
71005
|
};
|
|
70014
71006
|
//#endregion
|
|
70015
71007
|
//#region src/capabilities/valve.cap.ts
|
|
@@ -70088,7 +71080,15 @@ var valveCapability = {
|
|
|
70088
71080
|
* See `RuntimeStateDurability`. Enforced by
|
|
70089
71081
|
* `scripts/check-runtime-state-durability.ts`.
|
|
70090
71082
|
*/
|
|
70091
|
-
durability: "session"
|
|
71083
|
+
durability: "session",
|
|
71084
|
+
/**
|
|
71085
|
+
* History (D850): recorded series. Actuator tier: position keeps every change.
|
|
71086
|
+
*/
|
|
71087
|
+
history: { fields: { position: {
|
|
71088
|
+
kind: "gauge",
|
|
71089
|
+
unit: "%",
|
|
71090
|
+
minIntervalMs: 0
|
|
71091
|
+
} } }
|
|
70092
71092
|
};
|
|
70093
71093
|
//#endregion
|
|
70094
71094
|
//#region src/capabilities/vibration.cap.ts
|
|
@@ -70120,6 +71120,10 @@ var vibrationCapability = {
|
|
|
70120
71120
|
* `scripts/check-runtime-state-durability.ts`.
|
|
70121
71121
|
*/
|
|
70122
71122
|
durability: "restored",
|
|
71123
|
+
/**
|
|
71124
|
+
* History (D850): recorded series.
|
|
71125
|
+
*/
|
|
71126
|
+
history: { fields: { detected: { kind: "boolean" } } },
|
|
70123
71127
|
/** Clock fields: written, but excluded from the compare that decides
|
|
70124
71128
|
* whether persisting is worth a SQLite commit. */
|
|
70125
71129
|
volatileStateFields: ["lastChangedAt"]
|
|
@@ -70205,7 +71209,22 @@ var waterHeaterCapability = {
|
|
|
70205
71209
|
* See `RuntimeStateDurability`. Enforced by
|
|
70206
71210
|
* `scripts/check-runtime-state-durability.ts`.
|
|
70207
71211
|
*/
|
|
70208
|
-
durability: "session"
|
|
71212
|
+
durability: "session",
|
|
71213
|
+
/**
|
|
71214
|
+
* History (D850): recorded series. The schema carries no unit; providers publish Celsius. Setpoint keeps every change.
|
|
71215
|
+
*/
|
|
71216
|
+
history: { fields: {
|
|
71217
|
+
currentTemp: {
|
|
71218
|
+
kind: "gauge",
|
|
71219
|
+
unit: "°C",
|
|
71220
|
+
deadband: .5
|
|
71221
|
+
},
|
|
71222
|
+
targetTemp: {
|
|
71223
|
+
kind: "gauge",
|
|
71224
|
+
unit: "°C",
|
|
71225
|
+
minIntervalMs: 0
|
|
71226
|
+
}
|
|
71227
|
+
} }
|
|
70209
71228
|
};
|
|
70210
71229
|
//#endregion
|
|
70211
71230
|
//#region src/capabilities/weather.cap.ts
|
|
@@ -70273,7 +71292,32 @@ var weatherCapability = {
|
|
|
70273
71292
|
* See `RuntimeStateDurability`. Enforced by
|
|
70274
71293
|
* `scripts/check-runtime-state-durability.ts`.
|
|
70275
71294
|
*/
|
|
70276
|
-
durability: "session"
|
|
71295
|
+
durability: "session",
|
|
71296
|
+
/**
|
|
71297
|
+
* History (D850): recorded series. Units follow the sibling `*Unit` fields.
|
|
71298
|
+
*/
|
|
71299
|
+
history: { fields: {
|
|
71300
|
+
temperature: {
|
|
71301
|
+
kind: "gauge",
|
|
71302
|
+
unitFrom: "temperatureUnit",
|
|
71303
|
+
deadband: .2
|
|
71304
|
+
},
|
|
71305
|
+
humidity: {
|
|
71306
|
+
kind: "gauge",
|
|
71307
|
+
unit: "%",
|
|
71308
|
+
deadband: 1
|
|
71309
|
+
},
|
|
71310
|
+
pressure: {
|
|
71311
|
+
kind: "gauge",
|
|
71312
|
+
unitFrom: "pressureUnit",
|
|
71313
|
+
deadband: .5
|
|
71314
|
+
},
|
|
71315
|
+
windSpeed: {
|
|
71316
|
+
kind: "gauge",
|
|
71317
|
+
unitFrom: "windSpeedUnit",
|
|
71318
|
+
deadband: .5
|
|
71319
|
+
}
|
|
71320
|
+
} }
|
|
70277
71321
|
};
|
|
70278
71322
|
//#endregion
|
|
70279
71323
|
//#region src/capabilities/zone-analytics.cap.ts
|
|
@@ -70517,7 +71561,11 @@ var zoneAnalyticsCapability = {
|
|
|
70517
71561
|
* See `RuntimeStateDurability`. Enforced by
|
|
70518
71562
|
* `scripts/check-runtime-state-durability.ts`.
|
|
70519
71563
|
*/
|
|
70520
|
-
durability: "session"
|
|
71564
|
+
durability: "session",
|
|
71565
|
+
/**
|
|
71566
|
+
* History (D850): none — occupancy is the addon series `pipeline-analytics/occupancy`; the rest is per-zone arrays keyed by runtime ids.
|
|
71567
|
+
*/
|
|
71568
|
+
history: "none"
|
|
70521
71569
|
};
|
|
70522
71570
|
//#endregion
|
|
70523
71571
|
//#region src/capabilities/zone-rules.cap.ts
|
|
@@ -70604,7 +71652,11 @@ var zoneRulesCapability = {
|
|
|
70604
71652
|
* See `RuntimeStateDurability`. Enforced by
|
|
70605
71653
|
* `scripts/check-runtime-state-durability.ts`.
|
|
70606
71654
|
*/
|
|
70607
|
-
durability: "restored"
|
|
71655
|
+
durability: "restored",
|
|
71656
|
+
/**
|
|
71657
|
+
* History (D850): none — configuration arrays.
|
|
71658
|
+
*/
|
|
71659
|
+
history: "none"
|
|
70608
71660
|
};
|
|
70609
71661
|
//#endregion
|
|
70610
71662
|
//#region src/capabilities/training-provider.cap.ts
|
|
@@ -76263,6 +77315,54 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
76263
77315
|
addonId: null,
|
|
76264
77316
|
access: "create"
|
|
76265
77317
|
},
|
|
77318
|
+
"deviceCredentials.deleteDeviceCredential": {
|
|
77319
|
+
capName: "device-credentials",
|
|
77320
|
+
capScope: "system",
|
|
77321
|
+
addonId: null,
|
|
77322
|
+
access: "delete"
|
|
77323
|
+
},
|
|
77324
|
+
"deviceCredentials.getDeviceCaStatus": {
|
|
77325
|
+
capName: "device-credentials",
|
|
77326
|
+
capScope: "system",
|
|
77327
|
+
addonId: null,
|
|
77328
|
+
access: "view"
|
|
77329
|
+
},
|
|
77330
|
+
"deviceCredentials.getDeviceCertificateSettings": {
|
|
77331
|
+
capName: "device-credentials",
|
|
77332
|
+
capScope: "system",
|
|
77333
|
+
addonId: null,
|
|
77334
|
+
access: "view"
|
|
77335
|
+
},
|
|
77336
|
+
"deviceCredentials.listDeviceCredentials": {
|
|
77337
|
+
capName: "device-credentials",
|
|
77338
|
+
capScope: "system",
|
|
77339
|
+
addonId: null,
|
|
77340
|
+
access: "view"
|
|
77341
|
+
},
|
|
77342
|
+
"deviceCredentials.renameDeviceCredential": {
|
|
77343
|
+
capName: "device-credentials",
|
|
77344
|
+
capScope: "system",
|
|
77345
|
+
addonId: null,
|
|
77346
|
+
access: "create"
|
|
77347
|
+
},
|
|
77348
|
+
"deviceCredentials.revokeDeviceCredential": {
|
|
77349
|
+
capName: "device-credentials",
|
|
77350
|
+
capScope: "system",
|
|
77351
|
+
addonId: null,
|
|
77352
|
+
access: "delete"
|
|
77353
|
+
},
|
|
77354
|
+
"deviceCredentials.setDeviceCertificateSettings": {
|
|
77355
|
+
capName: "device-credentials",
|
|
77356
|
+
capScope: "system",
|
|
77357
|
+
addonId: null,
|
|
77358
|
+
access: "create"
|
|
77359
|
+
},
|
|
77360
|
+
"deviceCredentials.startEnrollment": {
|
|
77361
|
+
capName: "device-credentials",
|
|
77362
|
+
capScope: "system",
|
|
77363
|
+
addonId: null,
|
|
77364
|
+
access: "create"
|
|
77365
|
+
},
|
|
76266
77366
|
"deviceDiscovery.adoptDevice": {
|
|
76267
77367
|
capName: "device-discovery",
|
|
76268
77368
|
capScope: "device",
|
|
@@ -78423,6 +79523,48 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
78423
79523
|
addonId: null,
|
|
78424
79524
|
access: "create"
|
|
78425
79525
|
},
|
|
79526
|
+
"nodeCertificates.confirmMeshLeaf": {
|
|
79527
|
+
capName: "node-certificates",
|
|
79528
|
+
capScope: "system",
|
|
79529
|
+
addonId: null,
|
|
79530
|
+
access: "create"
|
|
79531
|
+
},
|
|
79532
|
+
"nodeCertificates.getCertificates": {
|
|
79533
|
+
capName: "node-certificates",
|
|
79534
|
+
capScope: "system",
|
|
79535
|
+
addonId: null,
|
|
79536
|
+
access: "view"
|
|
79537
|
+
},
|
|
79538
|
+
"nodeCertificates.installHttpsCertificate": {
|
|
79539
|
+
capName: "node-certificates",
|
|
79540
|
+
capScope: "system",
|
|
79541
|
+
addonId: null,
|
|
79542
|
+
access: "create"
|
|
79543
|
+
},
|
|
79544
|
+
"nodeCertificates.installMeshLeaf": {
|
|
79545
|
+
capName: "node-certificates",
|
|
79546
|
+
capScope: "system",
|
|
79547
|
+
addonId: null,
|
|
79548
|
+
access: "create"
|
|
79549
|
+
},
|
|
79550
|
+
"nodeCertificates.prepareHttpsCertificate": {
|
|
79551
|
+
capName: "node-certificates",
|
|
79552
|
+
capScope: "system",
|
|
79553
|
+
addonId: null,
|
|
79554
|
+
access: "create"
|
|
79555
|
+
},
|
|
79556
|
+
"nodeCertificates.prepareMeshRenewal": {
|
|
79557
|
+
capName: "node-certificates",
|
|
79558
|
+
capScope: "system",
|
|
79559
|
+
addonId: null,
|
|
79560
|
+
access: "create"
|
|
79561
|
+
},
|
|
79562
|
+
"nodeCertificates.rollbackMeshLeaf": {
|
|
79563
|
+
capName: "node-certificates",
|
|
79564
|
+
capScope: "system",
|
|
79565
|
+
addonId: null,
|
|
79566
|
+
access: "create"
|
|
79567
|
+
},
|
|
78426
79568
|
"nodes.clusterAddonStatus": {
|
|
78427
79569
|
capName: "nodes",
|
|
78428
79570
|
capScope: "system",
|
|
@@ -82700,6 +83842,7 @@ var KNOWN_CAP_NAMES = [
|
|
|
82700
83842
|
"detection-pipeline",
|
|
82701
83843
|
"device-admin-link",
|
|
82702
83844
|
"device-adoption",
|
|
83845
|
+
"device-credentials",
|
|
82703
83846
|
"device-discovery",
|
|
82704
83847
|
"device-export",
|
|
82705
83848
|
"device-extension",
|
|
@@ -82751,6 +83894,7 @@ var KNOWN_CAP_NAMES = [
|
|
|
82751
83894
|
"network-access",
|
|
82752
83895
|
"network-link",
|
|
82753
83896
|
"network-quality",
|
|
83897
|
+
"node-certificates",
|
|
82754
83898
|
"nodes",
|
|
82755
83899
|
"notification-output",
|
|
82756
83900
|
"notification-rules",
|
|
@@ -82938,6 +84082,7 @@ var SYSTEM_CAP_NAMES = [
|
|
|
82938
84082
|
"database-snapshot",
|
|
82939
84083
|
"decoder",
|
|
82940
84084
|
"device-adoption",
|
|
84085
|
+
"device-credentials",
|
|
82941
84086
|
"device-export",
|
|
82942
84087
|
"device-manager",
|
|
82943
84088
|
"device-provider",
|
|
@@ -82963,6 +84108,7 @@ var SYSTEM_CAP_NAMES = [
|
|
|
82963
84108
|
"mqtt-broker",
|
|
82964
84109
|
"network-access",
|
|
82965
84110
|
"network-quality",
|
|
84111
|
+
"node-certificates",
|
|
82966
84112
|
"nodes",
|
|
82967
84113
|
"notification-output",
|
|
82968
84114
|
"notification-rules",
|
|
@@ -84964,6 +86110,7 @@ var CAPABILITY_NAMES = {
|
|
|
84964
86110
|
detectionPipeline: "detection-pipeline",
|
|
84965
86111
|
deviceAdminLink: "device-admin-link",
|
|
84966
86112
|
deviceAdoption: "device-adoption",
|
|
86113
|
+
deviceCredentials: "device-credentials",
|
|
84967
86114
|
deviceDiscovery: "device-discovery",
|
|
84968
86115
|
deviceExport: "device-export",
|
|
84969
86116
|
deviceExtension: "device-extension",
|
|
@@ -85015,6 +86162,7 @@ var CAPABILITY_NAMES = {
|
|
|
85015
86162
|
networkAccess: "network-access",
|
|
85016
86163
|
networkLink: "network-link",
|
|
85017
86164
|
networkQuality: "network-quality",
|
|
86165
|
+
nodeCertificates: "node-certificates",
|
|
85018
86166
|
nodes: "nodes",
|
|
85019
86167
|
notificationOutput: "notification-output",
|
|
85020
86168
|
notificationRules: "notification-rules",
|
|
@@ -85287,6 +86435,10 @@ var CAPABILITY_ROUTER_KEYS = [
|
|
|
85287
86435
|
key: "deviceAdoption",
|
|
85288
86436
|
name: "device-adoption"
|
|
85289
86437
|
},
|
|
86438
|
+
{
|
|
86439
|
+
key: "deviceCredentials",
|
|
86440
|
+
name: "device-credentials"
|
|
86441
|
+
},
|
|
85290
86442
|
{
|
|
85291
86443
|
key: "deviceDiscovery",
|
|
85292
86444
|
name: "device-discovery"
|
|
@@ -85491,6 +86643,10 @@ var CAPABILITY_ROUTER_KEYS = [
|
|
|
85491
86643
|
key: "networkQuality",
|
|
85492
86644
|
name: "network-quality"
|
|
85493
86645
|
},
|
|
86646
|
+
{
|
|
86647
|
+
key: "nodeCertificates",
|
|
86648
|
+
name: "node-certificates"
|
|
86649
|
+
},
|
|
85494
86650
|
{
|
|
85495
86651
|
key: "nodes",
|
|
85496
86652
|
name: "nodes"
|
|
@@ -85828,6 +86984,7 @@ var ALL_CAPABILITY_DEFINITIONS = [
|
|
|
85828
86984
|
detectionPipelineCapability,
|
|
85829
86985
|
deviceAdminLinkCapability,
|
|
85830
86986
|
deviceAdoptionCapability,
|
|
86987
|
+
deviceCredentialsCapability,
|
|
85831
86988
|
deviceDiscoveryCapability,
|
|
85832
86989
|
deviceExportCapability,
|
|
85833
86990
|
deviceExtensionCapability,
|
|
@@ -85879,6 +87036,7 @@ var ALL_CAPABILITY_DEFINITIONS = [
|
|
|
85879
87036
|
networkAccessCapability,
|
|
85880
87037
|
networkLinkCapability,
|
|
85881
87038
|
networkQualityCapability,
|
|
87039
|
+
nodeCertificatesCapability,
|
|
85882
87040
|
nodesCapability,
|
|
85883
87041
|
notificationOutputCapability,
|
|
85884
87042
|
notificationRulesCapability,
|
|
@@ -89131,6 +90289,325 @@ var RESTORED_CAP_NAMES = [
|
|
|
89131
90289
|
"zones"
|
|
89132
90290
|
];
|
|
89133
90291
|
//#endregion
|
|
90292
|
+
//#region src/generated/history-catalog.ts
|
|
90293
|
+
/**
|
|
90294
|
+
* Cap history catalog, projected from every `*.cap.ts` `history` block.
|
|
90295
|
+
* 32 caps with series (60 series), 37 caps answered `'none'`.
|
|
90296
|
+
* Field keys are `runtimeState` paths (`a.b` into fixed objects only).
|
|
90297
|
+
*/
|
|
90298
|
+
var HISTORY_CATALOG = {
|
|
90299
|
+
"air-quality-sensor": {
|
|
90300
|
+
"co2Ppm": {
|
|
90301
|
+
kind: "gauge",
|
|
90302
|
+
unit: "ppm",
|
|
90303
|
+
deadband: 5
|
|
90304
|
+
},
|
|
90305
|
+
"vocPpb": {
|
|
90306
|
+
kind: "gauge",
|
|
90307
|
+
unit: "ppb",
|
|
90308
|
+
deadband: 5
|
|
90309
|
+
},
|
|
90310
|
+
"pm25": {
|
|
90311
|
+
kind: "gauge",
|
|
90312
|
+
unit: "ug/m3",
|
|
90313
|
+
deadband: 1
|
|
90314
|
+
},
|
|
90315
|
+
"pm10": {
|
|
90316
|
+
kind: "gauge",
|
|
90317
|
+
unit: "ug/m3",
|
|
90318
|
+
deadband: 1
|
|
90319
|
+
},
|
|
90320
|
+
"aqi": {
|
|
90321
|
+
kind: "gauge",
|
|
90322
|
+
unit: "count",
|
|
90323
|
+
deadband: 1
|
|
90324
|
+
}
|
|
90325
|
+
},
|
|
90326
|
+
"ambient-light-sensor": { "lux": {
|
|
90327
|
+
kind: "gauge",
|
|
90328
|
+
unit: "lx",
|
|
90329
|
+
deadbandPct: 10,
|
|
90330
|
+
minIntervalMs: 6e4
|
|
90331
|
+
} },
|
|
90332
|
+
"battery": { "percentage": {
|
|
90333
|
+
kind: "gauge",
|
|
90334
|
+
unit: "%"
|
|
90335
|
+
} },
|
|
90336
|
+
"binary": { "on": { kind: "boolean" } },
|
|
90337
|
+
"brightness": { "percentage": {
|
|
90338
|
+
kind: "gauge",
|
|
90339
|
+
unit: "%",
|
|
90340
|
+
minIntervalMs: 0
|
|
90341
|
+
} },
|
|
90342
|
+
"carbon-monoxide": { "detected": { kind: "boolean" } },
|
|
90343
|
+
"climate-control": {
|
|
90344
|
+
"currentTemp": {
|
|
90345
|
+
kind: "gauge",
|
|
90346
|
+
unit: "°C",
|
|
90347
|
+
deadband: .1
|
|
90348
|
+
},
|
|
90349
|
+
"currentHumidity": {
|
|
90350
|
+
kind: "gauge",
|
|
90351
|
+
unit: "%",
|
|
90352
|
+
deadband: .5
|
|
90353
|
+
},
|
|
90354
|
+
"target": {
|
|
90355
|
+
kind: "gauge",
|
|
90356
|
+
unit: "°C",
|
|
90357
|
+
minIntervalMs: 0
|
|
90358
|
+
},
|
|
90359
|
+
"targetHigh": {
|
|
90360
|
+
kind: "gauge",
|
|
90361
|
+
unit: "°C",
|
|
90362
|
+
minIntervalMs: 0
|
|
90363
|
+
},
|
|
90364
|
+
"targetLow": {
|
|
90365
|
+
kind: "gauge",
|
|
90366
|
+
unit: "°C",
|
|
90367
|
+
minIntervalMs: 0
|
|
90368
|
+
}
|
|
90369
|
+
},
|
|
90370
|
+
"contact": { "entryOpen": { kind: "boolean" } },
|
|
90371
|
+
"cover": { "position": {
|
|
90372
|
+
kind: "gauge",
|
|
90373
|
+
unit: "%",
|
|
90374
|
+
minIntervalMs: 0
|
|
90375
|
+
} },
|
|
90376
|
+
"device-status": { "online": { kind: "boolean" } },
|
|
90377
|
+
"fan-control": {
|
|
90378
|
+
"percentage": {
|
|
90379
|
+
kind: "gauge",
|
|
90380
|
+
unit: "%",
|
|
90381
|
+
minIntervalMs: 0
|
|
90382
|
+
},
|
|
90383
|
+
"oscillating": { kind: "boolean" }
|
|
90384
|
+
},
|
|
90385
|
+
"flood": { "flooded": { kind: "boolean" } },
|
|
90386
|
+
"gas": { "detected": { kind: "boolean" } },
|
|
90387
|
+
"humidifier": {
|
|
90388
|
+
"currentHumidity": {
|
|
90389
|
+
kind: "gauge",
|
|
90390
|
+
unit: "%",
|
|
90391
|
+
deadband: .5
|
|
90392
|
+
},
|
|
90393
|
+
"on": { kind: "boolean" }
|
|
90394
|
+
},
|
|
90395
|
+
"humidity-sensor": { "percent": {
|
|
90396
|
+
kind: "gauge",
|
|
90397
|
+
unit: "%",
|
|
90398
|
+
deadband: .5
|
|
90399
|
+
} },
|
|
90400
|
+
"lawn-mower-control": { "batteryLevel": {
|
|
90401
|
+
kind: "gauge",
|
|
90402
|
+
unit: "%",
|
|
90403
|
+
deadband: 2
|
|
90404
|
+
} },
|
|
90405
|
+
"motion": { "detected": {
|
|
90406
|
+
kind: "boolean",
|
|
90407
|
+
excludeDeviceTypes: [require_err_msg.DeviceType.Camera]
|
|
90408
|
+
} },
|
|
90409
|
+
"network-link": {
|
|
90410
|
+
"signalPercent": {
|
|
90411
|
+
kind: "gauge",
|
|
90412
|
+
unit: "%",
|
|
90413
|
+
deadband: 3,
|
|
90414
|
+
minIntervalMs: 6e4
|
|
90415
|
+
},
|
|
90416
|
+
"rssiDbm": {
|
|
90417
|
+
kind: "gauge",
|
|
90418
|
+
unit: "dBm",
|
|
90419
|
+
deadband: 2,
|
|
90420
|
+
minIntervalMs: 6e4
|
|
90421
|
+
}
|
|
90422
|
+
},
|
|
90423
|
+
"numeric-sensor": { "value": {
|
|
90424
|
+
kind: "gauge",
|
|
90425
|
+
unitFrom: "unit",
|
|
90426
|
+
minIntervalMs: 3e4
|
|
90427
|
+
} },
|
|
90428
|
+
"pet-feeder": {
|
|
90429
|
+
"foodLevel": { kind: "gauge" },
|
|
90430
|
+
"food1": { kind: "gauge" },
|
|
90431
|
+
"food2": { kind: "gauge" },
|
|
90432
|
+
"batteryPower": {
|
|
90433
|
+
kind: "gauge",
|
|
90434
|
+
unit: "%",
|
|
90435
|
+
deadband: 2
|
|
90436
|
+
},
|
|
90437
|
+
"desiccantLeftDays": {
|
|
90438
|
+
kind: "gauge",
|
|
90439
|
+
unit: "days"
|
|
90440
|
+
}
|
|
90441
|
+
},
|
|
90442
|
+
"power-meter": {
|
|
90443
|
+
"watts": {
|
|
90444
|
+
kind: "gauge",
|
|
90445
|
+
unit: "W",
|
|
90446
|
+
deadband: 1,
|
|
90447
|
+
minIntervalMs: 3e4
|
|
90448
|
+
},
|
|
90449
|
+
"kwhTotal": {
|
|
90450
|
+
kind: "counter",
|
|
90451
|
+
unit: "kWh",
|
|
90452
|
+
deadband: .01,
|
|
90453
|
+
minIntervalMs: 6e4
|
|
90454
|
+
},
|
|
90455
|
+
"volts": {
|
|
90456
|
+
kind: "gauge",
|
|
90457
|
+
unit: "V",
|
|
90458
|
+
deadband: 1,
|
|
90459
|
+
minIntervalMs: 3e4
|
|
90460
|
+
},
|
|
90461
|
+
"amps": {
|
|
90462
|
+
kind: "gauge",
|
|
90463
|
+
unit: "A",
|
|
90464
|
+
deadband: .05,
|
|
90465
|
+
minIntervalMs: 3e4
|
|
90466
|
+
},
|
|
90467
|
+
"va": {
|
|
90468
|
+
kind: "gauge",
|
|
90469
|
+
unit: "VA",
|
|
90470
|
+
deadband: 1,
|
|
90471
|
+
minIntervalMs: 3e4
|
|
90472
|
+
},
|
|
90473
|
+
"powerFactor": {
|
|
90474
|
+
kind: "gauge",
|
|
90475
|
+
unit: "ratio",
|
|
90476
|
+
deadband: .01,
|
|
90477
|
+
minIntervalMs: 6e4
|
|
90478
|
+
}
|
|
90479
|
+
},
|
|
90480
|
+
"presence": { "batteryPercent": {
|
|
90481
|
+
kind: "gauge",
|
|
90482
|
+
unit: "%",
|
|
90483
|
+
deadband: 1
|
|
90484
|
+
} },
|
|
90485
|
+
"pressure-sensor": { "hpa": {
|
|
90486
|
+
kind: "gauge",
|
|
90487
|
+
unit: "hPa",
|
|
90488
|
+
deadband: .1
|
|
90489
|
+
} },
|
|
90490
|
+
"smoke": { "detected": { kind: "boolean" } },
|
|
90491
|
+
"switch": { "on": { kind: "boolean" } },
|
|
90492
|
+
"tamper": { "tampered": { kind: "boolean" } },
|
|
90493
|
+
"temperature-sensor": { "celsius": {
|
|
90494
|
+
kind: "gauge",
|
|
90495
|
+
unit: "°C",
|
|
90496
|
+
deadband: .1
|
|
90497
|
+
} },
|
|
90498
|
+
"vacuum-control": {
|
|
90499
|
+
"batteryLevel": {
|
|
90500
|
+
kind: "gauge",
|
|
90501
|
+
unit: "%",
|
|
90502
|
+
deadband: 2
|
|
90503
|
+
},
|
|
90504
|
+
"cleanWater.level": {
|
|
90505
|
+
kind: "gauge",
|
|
90506
|
+
unit: "%",
|
|
90507
|
+
deadband: 2
|
|
90508
|
+
},
|
|
90509
|
+
"dirtyWater.level": {
|
|
90510
|
+
kind: "gauge",
|
|
90511
|
+
unit: "%",
|
|
90512
|
+
deadband: 2
|
|
90513
|
+
},
|
|
90514
|
+
"detergent.level": {
|
|
90515
|
+
kind: "gauge",
|
|
90516
|
+
unit: "%",
|
|
90517
|
+
deadband: 2
|
|
90518
|
+
},
|
|
90519
|
+
"dustBin.level": {
|
|
90520
|
+
kind: "gauge",
|
|
90521
|
+
unit: "%",
|
|
90522
|
+
deadband: 2
|
|
90523
|
+
}
|
|
90524
|
+
},
|
|
90525
|
+
"valve": { "position": {
|
|
90526
|
+
kind: "gauge",
|
|
90527
|
+
unit: "%",
|
|
90528
|
+
minIntervalMs: 0
|
|
90529
|
+
} },
|
|
90530
|
+
"vibration": { "detected": { kind: "boolean" } },
|
|
90531
|
+
"water-heater": {
|
|
90532
|
+
"currentTemp": {
|
|
90533
|
+
kind: "gauge",
|
|
90534
|
+
unit: "°C",
|
|
90535
|
+
deadband: .5
|
|
90536
|
+
},
|
|
90537
|
+
"targetTemp": {
|
|
90538
|
+
kind: "gauge",
|
|
90539
|
+
unit: "°C",
|
|
90540
|
+
minIntervalMs: 0
|
|
90541
|
+
}
|
|
90542
|
+
},
|
|
90543
|
+
"weather": {
|
|
90544
|
+
"temperature": {
|
|
90545
|
+
kind: "gauge",
|
|
90546
|
+
unitFrom: "temperatureUnit",
|
|
90547
|
+
deadband: .2
|
|
90548
|
+
},
|
|
90549
|
+
"humidity": {
|
|
90550
|
+
kind: "gauge",
|
|
90551
|
+
unit: "%",
|
|
90552
|
+
deadband: 1
|
|
90553
|
+
},
|
|
90554
|
+
"pressure": {
|
|
90555
|
+
kind: "gauge",
|
|
90556
|
+
unitFrom: "pressureUnit",
|
|
90557
|
+
deadband: .5
|
|
90558
|
+
},
|
|
90559
|
+
"windSpeed": {
|
|
90560
|
+
kind: "gauge",
|
|
90561
|
+
unitFrom: "windSpeedUnit",
|
|
90562
|
+
deadband: .5
|
|
90563
|
+
}
|
|
90564
|
+
}
|
|
90565
|
+
};
|
|
90566
|
+
/** Caps that declared `history: 'none'`, sorted. */
|
|
90567
|
+
var HISTORY_NONE_CAPS = [
|
|
90568
|
+
"alarm-panel",
|
|
90569
|
+
"audio-metrics",
|
|
90570
|
+
"automation-control",
|
|
90571
|
+
"camera-streams",
|
|
90572
|
+
"color",
|
|
90573
|
+
"connectivity",
|
|
90574
|
+
"consumables",
|
|
90575
|
+
"control",
|
|
90576
|
+
"day-night",
|
|
90577
|
+
"device-discovery",
|
|
90578
|
+
"doorbell",
|
|
90579
|
+
"enum-sensor",
|
|
90580
|
+
"event-emitter",
|
|
90581
|
+
"feature-probe",
|
|
90582
|
+
"image",
|
|
90583
|
+
"image-settings",
|
|
90584
|
+
"intercom",
|
|
90585
|
+
"lock-control",
|
|
90586
|
+
"media-player",
|
|
90587
|
+
"motion-trigger",
|
|
90588
|
+
"motion-zones",
|
|
90589
|
+
"native-object-detection",
|
|
90590
|
+
"navigation",
|
|
90591
|
+
"notifier",
|
|
90592
|
+
"privacy-mask",
|
|
90593
|
+
"ptz-autotrack",
|
|
90594
|
+
"recording-onboard",
|
|
90595
|
+
"recording-signal",
|
|
90596
|
+
"scene-monitor",
|
|
90597
|
+
"script-runner",
|
|
90598
|
+
"stream-catalog",
|
|
90599
|
+
"stream-params",
|
|
90600
|
+
"stream-signals",
|
|
90601
|
+
"update",
|
|
90602
|
+
"zone-analytics",
|
|
90603
|
+
"zone-rules",
|
|
90604
|
+
"zones"
|
|
90605
|
+
];
|
|
90606
|
+
/** The series specs of `capName`; empty for a `'none'` cap or an unknown one. */
|
|
90607
|
+
function historyFieldsFor(capName) {
|
|
90608
|
+
return HISTORY_CATALOG[capName] ?? {};
|
|
90609
|
+
}
|
|
90610
|
+
//#endregion
|
|
89134
90611
|
//#region src/generated/scope-presets.ts
|
|
89135
90612
|
var SCOPE_PRESETS = [
|
|
89136
90613
|
{
|
|
@@ -89384,6 +90861,16 @@ function createSystemProxy(api) {
|
|
|
89384
90861
|
release: (input) => dispatch("deviceAdoption", "release", "mutation", input),
|
|
89385
90862
|
resync: (input) => dispatch("deviceAdoption", "resync", "mutation", input)
|
|
89386
90863
|
},
|
|
90864
|
+
deviceCredentials: {
|
|
90865
|
+
listDeviceCredentials: (input) => dispatch("deviceCredentials", "listDeviceCredentials", "query", input),
|
|
90866
|
+
startEnrollment: (input) => dispatch("deviceCredentials", "startEnrollment", "mutation", input),
|
|
90867
|
+
revokeDeviceCredential: (input) => dispatch("deviceCredentials", "revokeDeviceCredential", "mutation", input),
|
|
90868
|
+
getDeviceCertificateSettings: (input) => dispatch("deviceCredentials", "getDeviceCertificateSettings", "query", input),
|
|
90869
|
+
setDeviceCertificateSettings: (input) => dispatch("deviceCredentials", "setDeviceCertificateSettings", "mutation", input),
|
|
90870
|
+
deleteDeviceCredential: (input) => dispatch("deviceCredentials", "deleteDeviceCredential", "mutation", input),
|
|
90871
|
+
getDeviceCaStatus: (input) => dispatch("deviceCredentials", "getDeviceCaStatus", "query", input),
|
|
90872
|
+
renameDeviceCredential: (input) => dispatch("deviceCredentials", "renameDeviceCredential", "mutation", input)
|
|
90873
|
+
},
|
|
89387
90874
|
deviceExport: {
|
|
89388
90875
|
getStatus: (input) => dispatch("deviceExport", "getStatus", "query", input),
|
|
89389
90876
|
listSupportedDeviceKinds: (input) => dispatch("deviceExport", "listSupportedDeviceKinds", "query", input),
|
|
@@ -98718,6 +100205,9 @@ exports.ClusterModelChoiceSchema = ClusterModelChoiceSchema;
|
|
|
98718
100205
|
exports.CollectionColumnSchema = CollectionColumnSchema;
|
|
98719
100206
|
exports.CollectionIndexSchema = CollectionIndexSchema;
|
|
98720
100207
|
exports.ColorStatusSchema = ColorStatusSchema;
|
|
100208
|
+
exports.CompleteEnrollmentInputSchema = CompleteEnrollmentInputSchema;
|
|
100209
|
+
exports.CompleteEnrollmentOutputSchema = CompleteEnrollmentOutputSchema;
|
|
100210
|
+
exports.CompleteEnrollmentResultSchema = CompleteEnrollmentResultSchema;
|
|
98721
100211
|
exports.ComposableCapabilitiesSchema = ComposableCapabilitiesSchema;
|
|
98722
100212
|
exports.ComposableCapabilitySchema = ComposableCapabilitySchema;
|
|
98723
100213
|
exports.ComposableFieldSchema = ComposableFieldSchema;
|
|
@@ -98835,6 +100325,7 @@ exports.DEFAULT_SESSION_PLACEMENT_POLICY = DEFAULT_SESSION_PLACEMENT_POLICY;
|
|
|
98835
100325
|
exports.DEFAULT_SHARE_SOURCE = DEFAULT_SHARE_SOURCE;
|
|
98836
100326
|
exports.DEFAULT_TIMELAPSE_PREVIEW_TEXT = DEFAULT_TIMELAPSE_PREVIEW_TEXT;
|
|
98837
100327
|
exports.DEFAULT_TOKEN_EXPIRY = require_sleep.DEFAULT_TOKEN_EXPIRY;
|
|
100328
|
+
exports.DEFINITIVE_DEVICE_REFUSALS = DEFINITIVE_DEVICE_REFUSALS;
|
|
98838
100329
|
exports.DERIVED_CAMERA_SILENCED_CAP_NAMES = DERIVED_CAMERA_SILENCED_CAP_NAMES;
|
|
98839
100330
|
exports.DETAIL_CROP_PADDING_FIELD = DETAIL_CROP_PADDING_FIELD;
|
|
98840
100331
|
exports.DETAIL_CROP_PADDING_KEY = DETAIL_CROP_PADDING_KEY;
|
|
@@ -98846,14 +100337,24 @@ exports.DETECTOR_ACCURACY = DETECTOR_ACCURACY;
|
|
|
98846
100337
|
exports.DETECTOR_PERF = DETECTOR_PERF;
|
|
98847
100338
|
exports.DEVICE_BACKEND_TO_FORMAT = DEVICE_BACKEND_TO_FORMAT;
|
|
98848
100339
|
exports.DEVICE_CAP_NAMES = DEVICE_CAP_NAMES;
|
|
100340
|
+
exports.DEVICE_CERT_RENEW_WINDOW_DAYS = DEVICE_CERT_RENEW_WINDOW_DAYS;
|
|
100341
|
+
exports.DEVICE_CERT_SIGNATURE = DEVICE_CERT_SIGNATURE;
|
|
100342
|
+
exports.DEVICE_CERT_VALIDITY_DAYS = DEVICE_CERT_VALIDITY_DAYS;
|
|
98849
100343
|
exports.DEVICE_CHILDREN_BATCH_MAX = require_sleep.DEVICE_CHILDREN_BATCH_MAX;
|
|
100344
|
+
exports.DEVICE_DEFINITIVE_REFUSALS_BEFORE_DELETE = DEVICE_DEFINITIVE_REFUSALS_BEFORE_DELETE;
|
|
98850
100345
|
exports.DEVICE_DO_ACTIONS = DEVICE_DO_ACTIONS;
|
|
100346
|
+
exports.DEVICE_ENROLLMENT_TTL_MS = DEVICE_ENROLLMENT_TTL_MS;
|
|
100347
|
+
exports.DEVICE_NONCE_TTL_MS = DEVICE_NONCE_TTL_MS;
|
|
98851
100348
|
exports.DEVICE_PROFILES = DEVICE_PROFILES;
|
|
98852
100349
|
exports.DEVICE_RAMP = DEVICE_RAMP;
|
|
100350
|
+
exports.DEVICE_REFRESH_REFUSAL_PREFIX = DEVICE_REFRESH_REFUSAL_PREFIX;
|
|
98853
100351
|
exports.DEVICE_RESTORE_RETRY_CONCURRENCY = DEVICE_RESTORE_RETRY_CONCURRENCY;
|
|
98854
100352
|
exports.DEVICE_RESTORE_RETRY_DELAYS_MS = DEVICE_RESTORE_RETRY_DELAYS_MS;
|
|
100353
|
+
exports.DEVICE_SAN_CREDENTIAL_PREFIX = DEVICE_SAN_CREDENTIAL_PREFIX;
|
|
100354
|
+
exports.DEVICE_SAN_USER_PREFIX = DEVICE_SAN_USER_PREFIX;
|
|
98855
100355
|
exports.DEVICE_SCOPED_CAPS = require_sleep.DEVICE_SCOPED_CAPS;
|
|
98856
100356
|
exports.DEVICE_SETTINGS_CONTRIBUTION_METHODS = require_sleep.DEVICE_SETTINGS_CONTRIBUTION_METHODS;
|
|
100357
|
+
exports.DEVICE_SIGNATURE_MESSAGE_VERSION = DEVICE_SIGNATURE_MESSAGE_VERSION;
|
|
98857
100358
|
exports.DEVICE_STATE_READERS = DEVICE_STATE_READERS;
|
|
98858
100359
|
exports.DEVICE_STATUS_METHOD = require_sleep.DEVICE_STATUS_METHOD;
|
|
98859
100360
|
exports.DEVICE_TYPE_CONTROL_KIND = DEVICE_TYPE_CONTROL_KIND;
|
|
@@ -98881,9 +100382,17 @@ exports.DetectionSourceSchema = DetectionSourceSchema;
|
|
|
98881
100382
|
exports.DetectionSourcesSchema = DetectionSourcesSchema;
|
|
98882
100383
|
exports.DetectorStoreClearSchema = DetectorStoreClearSchema;
|
|
98883
100384
|
exports.DeviceAdminLinkSchema = DeviceAdminLinkSchema;
|
|
100385
|
+
exports.DeviceCaStatusSchema = DeviceCaStatusSchema;
|
|
100386
|
+
exports.DeviceCertificateLoginMethodSchema = DeviceCertificateLoginMethodSchema;
|
|
100387
|
+
exports.DeviceCertificateSettingsSchema = DeviceCertificateSettingsSchema;
|
|
100388
|
+
exports.DeviceChallengeResultSchema = DeviceChallengeResultSchema;
|
|
100389
|
+
exports.DeviceChallengeSchema = DeviceChallengeSchema;
|
|
98884
100390
|
exports.DeviceCodeSeveritySchema = DeviceCodeSeveritySchema;
|
|
98885
100391
|
exports.DeviceConfig = DeviceConfig;
|
|
100392
|
+
exports.DeviceCredentialSchema = DeviceCredentialSchema;
|
|
100393
|
+
exports.DeviceCredentialStatusSchema = DeviceCredentialStatusSchema;
|
|
98886
100394
|
exports.DeviceDiscoveryStatusSchema = DeviceDiscoveryStatusSchema;
|
|
100395
|
+
exports.DeviceEnrollProofSchema = DeviceEnrollProofSchema;
|
|
98887
100396
|
exports.DeviceExportExposeInputSchema = ExposeInputSchema;
|
|
98888
100397
|
exports.DeviceExportStatusSchema = DeviceExportStatusSchema;
|
|
98889
100398
|
exports.DeviceExportUnexposeInputSchema = UnexposeInputSchema;
|
|
@@ -98891,11 +100400,16 @@ exports.DeviceFeature = require_err_msg.DeviceFeature;
|
|
|
98891
100400
|
exports.DeviceInfoSchema = DeviceInfoSchema;
|
|
98892
100401
|
exports.DeviceModelChoiceSchema = DeviceModelChoiceSchema;
|
|
98893
100402
|
exports.DeviceNetworkStatsSchema = DeviceNetworkStatsSchema;
|
|
100403
|
+
exports.DevicePlatformSchema = DevicePlatformSchema;
|
|
100404
|
+
exports.DeviceProofInputSchema = DeviceProofInputSchema;
|
|
98894
100405
|
exports.DeviceRecommendationSchema = DeviceRecommendationSchema;
|
|
100406
|
+
exports.DeviceRefusalReasonSchema = DeviceRefusalReasonSchema;
|
|
100407
|
+
exports.DeviceRefusalSchema = DeviceRefusalSchema;
|
|
98895
100408
|
exports.DeviceRestoreRetryScheduler = DeviceRestoreRetryScheduler;
|
|
98896
100409
|
exports.DeviceRole = require_err_msg.DeviceRole;
|
|
98897
100410
|
exports.DeviceRuntimeState = DeviceRuntimeState;
|
|
98898
100411
|
exports.DeviceSelectorSchema = DeviceSelectorSchema;
|
|
100412
|
+
exports.DeviceSignaturePurposeSchema = DeviceSignaturePurposeSchema;
|
|
98899
100413
|
exports.DeviceStatusSchema = DeviceStatusSchema;
|
|
98900
100414
|
exports.DeviceType = require_err_msg.DeviceType;
|
|
98901
100415
|
exports.DiagnosticIdSchema = DiagnosticIdSchema;
|
|
@@ -98948,6 +100462,7 @@ exports.EmbeddingResultSchema = EmbeddingResultSchema;
|
|
|
98948
100462
|
exports.EmbeddingTowerSchema = EmbeddingTowerSchema;
|
|
98949
100463
|
exports.EncodeProfileSchema = EncodeProfileSchema;
|
|
98950
100464
|
exports.EnrichedWidgetMetadataSchema = EnrichedWidgetMetadataSchema;
|
|
100465
|
+
exports.EnrollSelfInputSchema = EnrollSelfInputSchema;
|
|
98951
100466
|
exports.EnumSensorDateTimeFormatSchema = EnumSensorDateTimeFormatSchema;
|
|
98952
100467
|
exports.EnumSensorStatusSchema = EnumSensorStatusSchema;
|
|
98953
100468
|
exports.EventCategory = require_event_category.EventCategory;
|
|
@@ -99043,6 +100558,10 @@ exports.HAP_AUDIO_VBV_KBITS = HAP_AUDIO_VBV_KBITS;
|
|
|
99043
100558
|
exports.HAP_KEYFRAME_INTERVAL_SEC = HAP_KEYFRAME_INTERVAL_SEC;
|
|
99044
100559
|
exports.HF_BASE_URL = require_sleep.HF_BASE_URL;
|
|
99045
100560
|
exports.HF_REPO = require_sleep.HF_REPO;
|
|
100561
|
+
exports.HISTORY_CATALOG = HISTORY_CATALOG;
|
|
100562
|
+
exports.HISTORY_DEFAULT_MIN_INTERVAL_MS = require_sleep.HISTORY_DEFAULT_MIN_INTERVAL_MS;
|
|
100563
|
+
exports.HISTORY_NONE_CAPS = HISTORY_NONE_CAPS;
|
|
100564
|
+
exports.HISTORY_UNIT_LABELS = require_sleep.HISTORY_UNIT_LABELS;
|
|
99046
100565
|
exports.HOURS_PER_DAY = HOURS_PER_DAY;
|
|
99047
100566
|
exports.HUB_ADDRESS_ROLES = HUB_ADDRESS_ROLES;
|
|
99048
100567
|
exports.HUB_MDNS_QUERY_NAME = HUB_MDNS_QUERY_NAME;
|
|
@@ -99056,6 +100575,7 @@ exports.HealthStatusSchema = HealthStatusSchema;
|
|
|
99056
100575
|
exports.HfModelResolutionSchema = HfModelResolutionSchema;
|
|
99057
100576
|
exports.HistoryPointSchema = HistoryPointSchema;
|
|
99058
100577
|
exports.HistoryResolutionEnum = HistoryResolutionEnum;
|
|
100578
|
+
exports.HttpsLeafInfoSchema = HttpsLeafInfoSchema;
|
|
99059
100579
|
exports.HubAddressRoleSchema = HubAddressRoleSchema;
|
|
99060
100580
|
exports.HumidifierStatusSchema = HumidifierStatusSchema;
|
|
99061
100581
|
exports.HumiditySensorStatusSchema = HumiditySensorStatusSchema;
|
|
@@ -99251,6 +100771,7 @@ exports.MediaPlayerStateSchema = MediaPlayerStateSchema;
|
|
|
99251
100771
|
exports.MediaPlayerStatusSchema = MediaPlayerStatusSchema;
|
|
99252
100772
|
exports.MediaPresenceOwnerKindSchema = MediaPresenceOwnerKindSchema;
|
|
99253
100773
|
exports.MediaRelocateModeSchema = MediaRelocateModeSchema;
|
|
100774
|
+
exports.MeshLeafInfoSchema = MeshLeafInfoSchema;
|
|
99254
100775
|
exports.MeshPeerSchema = MeshPeerSchema;
|
|
99255
100776
|
exports.MeshStatusSchema = MeshStatusSchema;
|
|
99256
100777
|
exports.MethodAccessSchema = MethodAccessSchema;
|
|
@@ -99540,6 +101061,7 @@ exports.NodeColorIdSchema = require_node_color.NodeColorIdSchema;
|
|
|
99540
101061
|
exports.NodeDeviceChangeSchema = NodeDeviceChangeSchema;
|
|
99541
101062
|
exports.NodeDirectoryEntrySchema = NodeDirectoryEntrySchema;
|
|
99542
101063
|
exports.NodeDirectorySchema = NodeDirectorySchema;
|
|
101064
|
+
exports.NodeHttpsStateSchema = NodeHttpsStateSchema;
|
|
99543
101065
|
exports.NodeRecommendationSchema = NodeRecommendationSchema;
|
|
99544
101066
|
exports.NotificationActionIconSchema = NotificationActionIconSchema;
|
|
99545
101067
|
exports.NotificationActionSchema = NotificationActionSchema;
|
|
@@ -99758,6 +101280,8 @@ exports.RelocateMediaInputSchema = RelocateMediaInputSchema;
|
|
|
99758
101280
|
exports.RelocateResidueInputSchema = RelocateResidueInputSchema;
|
|
99759
101281
|
exports.RelocateResidueSchema = RelocateResidueSchema;
|
|
99760
101282
|
exports.RenderedAsSchema = RenderedAsSchema;
|
|
101283
|
+
exports.RenewDeviceCertificateOutputSchema = RenewDeviceCertificateOutputSchema;
|
|
101284
|
+
exports.RenewDeviceCertificateResultSchema = RenewDeviceCertificateResultSchema;
|
|
99761
101285
|
exports.ReportMotionInputSchema = ReportMotionInputSchema;
|
|
99762
101286
|
exports.ReportedFailureContributionSchema = ReportedFailureContributionSchema;
|
|
99763
101287
|
exports.ReportedLoadContributionSchema = ReportedLoadContributionSchema;
|
|
@@ -99809,6 +101333,7 @@ exports.RetrainTrackSchema = RetrainTrackSchema;
|
|
|
99809
101333
|
exports.RetrainTrainingCorpusResolveResultSchema = RetrainTrainingCorpusResolveResultSchema;
|
|
99810
101334
|
exports.RetrainTrainingCorpusSelectionSchema = RetrainTrainingCorpusSelectionSchema;
|
|
99811
101335
|
exports.RetrainTransitionResultSchema = RetrainTransitionResultSchema;
|
|
101336
|
+
exports.RevokeOwnDeviceCertificateResultSchema = RevokeOwnDeviceCertificateResultSchema;
|
|
99812
101337
|
exports.RingBuffer = RingBuffer;
|
|
99813
101338
|
exports.RootStepSupplySchema = RootStepSupplySchema;
|
|
99814
101339
|
exports.RtpSourceSchema = RtpSourceSchema;
|
|
@@ -99912,6 +101437,7 @@ exports.SpatialDetectionSchema = SpatialDetectionSchema;
|
|
|
99912
101437
|
exports.SsoBridgeClaimsSchema = SsoBridgeClaimsSchema;
|
|
99913
101438
|
exports.StaleDevicePinSchema = StaleDevicePinSchema;
|
|
99914
101439
|
exports.StartEmbeddedInputSchema = StartEmbeddedInputSchema;
|
|
101440
|
+
exports.StartEnrollmentOutputSchema = StartEnrollmentOutputSchema;
|
|
99915
101441
|
exports.StationaryObjectSchema = StationaryObjectSchema;
|
|
99916
101442
|
exports.StorageAbortUploadInputSchema = AbortUploadInputSchema;
|
|
99917
101443
|
exports.StorageAccessSchema = StorageAccessSchema;
|
|
@@ -100160,6 +101686,7 @@ exports.addonWidgetsCapability = addonWidgetsCapability;
|
|
|
100160
101686
|
exports.addonWidgetsSourceCapability = addonWidgetsSourceCapability;
|
|
100161
101687
|
exports.addonsCapability = addonsCapability;
|
|
100162
101688
|
exports.adminUiCapability = require_sleep.adminUiCapability;
|
|
101689
|
+
exports.advertisedHubOrigins = advertisedHubOrigins;
|
|
100163
101690
|
exports.airQualitySensorCapability = airQualitySensorCapability;
|
|
100164
101691
|
exports.alarmDeviceBlocksArming = alarmDeviceBlocksArming;
|
|
100165
101692
|
exports.alarmDeviceSecureOnArm = alarmDeviceSecureOnArm;
|
|
@@ -100212,6 +101739,8 @@ exports.buildAudioArgs = require_composition.buildAudioArgs;
|
|
|
100212
101739
|
exports.buildBenchStepTree = buildBenchStepTree;
|
|
100213
101740
|
exports.buildCapabilityLookup = buildCapabilityLookup;
|
|
100214
101741
|
exports.buildDeviceAdminUrl = buildDeviceAdminUrl;
|
|
101742
|
+
exports.buildDeviceEnrollmentLink = buildDeviceEnrollmentLink;
|
|
101743
|
+
exports.buildDeviceSignatureMessage = buildDeviceSignatureMessage;
|
|
100215
101744
|
exports.buildDoorbellCompositionFeature = buildDoorbellCompositionFeature;
|
|
100216
101745
|
exports.buildEventKindDescriptor = buildEventKindDescriptor;
|
|
100217
101746
|
exports.buildFfmpegArgs = require_composition.buildFfmpegArgs;
|
|
@@ -100244,6 +101773,7 @@ exports.capacitySessionsOf = capacitySessionsOf;
|
|
|
100244
101773
|
exports.carbonMonoxideCapability = carbonMonoxideCapability;
|
|
100245
101774
|
exports.cellsToRects = cellsToRects;
|
|
100246
101775
|
exports.checkRoleAddress = checkRoleAddress;
|
|
101776
|
+
exports.claimedRequestOrigins = claimedRequestOrigins;
|
|
100247
101777
|
exports.classifyBearerPrincipal = classifyBearerPrincipal;
|
|
100248
101778
|
exports.classifyCamerasForBenchmark = classifyCamerasForBenchmark;
|
|
100249
101779
|
exports.classifyInferenceHardware = classifyInferenceHardware;
|
|
@@ -100365,6 +101895,7 @@ exports.detectionPipelineCapability = detectionPipelineCapability;
|
|
|
100365
101895
|
exports.deviceAdminLinkCapability = deviceAdminLinkCapability;
|
|
100366
101896
|
exports.deviceAdoptionCapability = deviceAdoptionCapability;
|
|
100367
101897
|
exports.deviceBackendToFormat = deviceBackendToFormat;
|
|
101898
|
+
exports.deviceCredentialsCapability = deviceCredentialsCapability;
|
|
100368
101899
|
exports.deviceCustomAction = require_sleep.deviceCustomAction;
|
|
100369
101900
|
exports.deviceDiscoveryCapability = deviceDiscoveryCapability;
|
|
100370
101901
|
exports.deviceDoFamily = deviceDoFamily;
|
|
@@ -100374,6 +101905,7 @@ exports.deviceManagerCapability = deviceManagerCapability;
|
|
|
100374
101905
|
exports.deviceMatchesProfile = deviceMatchesProfile;
|
|
100375
101906
|
exports.deviceOpsCapability = require_sleep.deviceOpsCapability;
|
|
100376
101907
|
exports.deviceProviderCapability = deviceProviderCapability;
|
|
101908
|
+
exports.deviceRefusalFromMessage = deviceRefusalFromMessage;
|
|
100377
101909
|
exports.deviceSelectorMatches = deviceSelectorMatches;
|
|
100378
101910
|
exports.deviceStateCapability = deviceStateCapability;
|
|
100379
101911
|
exports.deviceStatusCapability = deviceStatusCapability;
|
|
@@ -100450,6 +101982,7 @@ exports.findTimezone = findTimezone;
|
|
|
100450
101982
|
exports.floodCapability = floodCapability;
|
|
100451
101983
|
exports.foldSnapshotByFunction = foldSnapshotByFunction;
|
|
100452
101984
|
exports.forgetKnownSecret = require_sleep.forgetKnownSecret;
|
|
101985
|
+
exports.formatDeviceRevoker = formatDeviceRevoker;
|
|
100453
101986
|
exports.formatForRuntime = formatForRuntime;
|
|
100454
101987
|
exports.formatMediaOwnerKey = formatMediaOwnerKey;
|
|
100455
101988
|
exports.formatMinutes = formatMinutes;
|
|
@@ -100474,6 +102007,7 @@ exports.hasModelBoundOverrides = hasModelBoundOverrides;
|
|
|
100474
102007
|
exports.hasMotionTrigger = hasMotionTrigger;
|
|
100475
102008
|
exports.hasUrlScheme = hasUrlScheme;
|
|
100476
102009
|
exports.hfModelUrl = require_sleep.hfModelUrl;
|
|
102010
|
+
exports.historyFieldsFor = historyFieldsFor;
|
|
100477
102011
|
exports.htmlToText = htmlToText;
|
|
100478
102012
|
exports.hubAddressHostname = hubAddressHostname;
|
|
100479
102013
|
exports.hubMotionNativeProvider = hubMotionNativeProvider;
|
|
@@ -100509,6 +102043,7 @@ exports.isClusterScopedStep = isClusterScopedStep;
|
|
|
100509
102043
|
exports.isCollectionArrayMethod = isCollectionArrayMethod;
|
|
100510
102044
|
exports.isDefaultAlarmProfileId = isDefaultAlarmProfileId;
|
|
100511
102045
|
exports.isDefaultAppConnectionEndpoint = isDefaultAppConnectionEndpoint;
|
|
102046
|
+
exports.isDefinitiveDeviceRefusal = isDefinitiveDeviceRefusal;
|
|
100512
102047
|
exports.isDeployableToAgent = isDeployableToAgent;
|
|
100513
102048
|
exports.isDetectionMacroClass = isDetectionMacroClass;
|
|
100514
102049
|
exports.isDeviceConfigCap = require_sleep.isDeviceConfigCap;
|
|
@@ -100631,6 +102166,7 @@ exports.networkAccessCapability = networkAccessCapability;
|
|
|
100631
102166
|
exports.networkLinkCapability = networkLinkCapability;
|
|
100632
102167
|
exports.networkQualityCapability = networkQualityCapability;
|
|
100633
102168
|
exports.nodeBenchmarkRefusals = nodeBenchmarkRefusals;
|
|
102169
|
+
exports.nodeCertificatesCapability = nodeCertificatesCapability;
|
|
100634
102170
|
exports.nodePickerItems = nodePickerItems;
|
|
100635
102171
|
exports.nodePin = require_sleep.nodePin;
|
|
100636
102172
|
exports.nodesCapability = nodesCapability;
|
|
@@ -100638,6 +102174,7 @@ exports.normalizeAddonInitResult = require_sleep.normalizeAddonInitResult;
|
|
|
100638
102174
|
exports.normalizeAudioLabel = normalizeAudioLabel;
|
|
100639
102175
|
exports.normalizeCoreBlockWrite = normalizeCoreBlockWrite;
|
|
100640
102176
|
exports.normalizeNodeId = require_sleep.normalizeNodeId;
|
|
102177
|
+
exports.normalizeOrigin = normalizeOrigin;
|
|
100641
102178
|
exports.normalizeSecretOwner = require_sleep.normalizeSecretOwner;
|
|
100642
102179
|
exports.normalizeTokenScopes = normalizeTokenScopes;
|
|
100643
102180
|
exports.normalizeUnit = normalizeUnit;
|
|
@@ -100659,6 +102196,7 @@ exports.packagePickerItems = packagePickerItems;
|
|
|
100659
102196
|
exports.parseAdminBase = parseAdminBase;
|
|
100660
102197
|
exports.parseAppAuthCallback = parseAppAuthCallback;
|
|
100661
102198
|
exports.parseCameraStreamConfig = parseCameraStreamConfig;
|
|
102199
|
+
exports.parseDeviceEnrollmentLink = parseDeviceEnrollmentLink;
|
|
100662
102200
|
exports.parseExpression = require_composition.parseExpression;
|
|
100663
102201
|
exports.parseJsonArray = require_sleep.parseJsonArray;
|
|
100664
102202
|
exports.parseJsonObject = require_sleep.parseJsonObject;
|
|
@@ -100685,6 +102223,7 @@ exports.pickDetailCropConvention = pickDetailCropConvention;
|
|
|
100685
102223
|
exports.pickInvalidClusterStepModels = pickInvalidClusterStepModels;
|
|
100686
102224
|
exports.pickNativeLeaseOverride = pickNativeLeaseOverride;
|
|
100687
102225
|
exports.pickPreferredRtspEntry = pickPreferredRtspEntry;
|
|
102226
|
+
exports.pickRequestOrigin = pickRequestOrigin;
|
|
100688
102227
|
exports.pickRestartCandidate = pickRestartCandidate;
|
|
100689
102228
|
exports.pickVideoEncoder = require_composition.pickVideoEncoder;
|
|
100690
102229
|
exports.pickerForCondition = pickerForCondition;
|
|
@@ -100738,6 +102277,7 @@ exports.reducePoints = reducePoints;
|
|
|
100738
102277
|
exports.registerKnownSecret = require_sleep.registerKnownSecret;
|
|
100739
102278
|
exports.renameAlarmProfile = renameAlarmProfile;
|
|
100740
102279
|
exports.replacedFieldKeys = replacedFieldKeys;
|
|
102280
|
+
exports.requestMountPrefix = requestMountPrefix;
|
|
100741
102281
|
exports.requiredTopLevelKeys = requiredTopLevelKeys;
|
|
100742
102282
|
exports.requiresPython = requiresPython;
|
|
100743
102283
|
exports.reservedSourceOwner = reservedSourceOwner;
|