@camstack/types 1.1.47 → 1.1.48
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 +1 -1
- package/dist/addon.mjs +1 -1
- package/dist/capabilities/recording.cap.d.ts +21 -0
- package/dist/index.js +92 -2
- package/dist/index.mjs +87 -3
- package/dist/interfaces/readiness.d.ts +8 -5
- package/dist/interfaces/recording-config.d.ts +54 -0
- package/dist/readiness/readiness-registry.d.ts +33 -10
- package/dist/{sleep-CK899CTS.mjs → sleep-B3OHhFkL.mjs} +66 -15
- package/dist/{sleep-BkhAiFKX.js → sleep-BoTIF1d4.js} +66 -15
- package/package.json +1 -1
package/dist/addon.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-BoTIF1d4.js");
|
|
3
3
|
const require_event_category = require("./event-category-AkBNxg_X.js");
|
|
4
4
|
const require_err_msg = require("./err-msg-COpsHMw2.js");
|
|
5
5
|
exports.BaseAddon = require_sleep.BaseAddon;
|
package/dist/addon.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { A as parseJsonUnknown, D as asString, I as scopeKey, M as ReadinessRegistry, N as ReadinessTimeoutError, S as DeviceType, T as asJsonObject, a as viewerUiCapability, bt as DisposerChain, ct as BaseAddon, ft as emitReadiness, i as deviceOpsCapability, j as DATAPLANE_SECRET_HEADER, lt as normalizeAddonInitResult, m as expandCapMethods, o as adminUiCapability, s as createDeviceProxy, t as sleep } from "./sleep-
|
|
1
|
+
import { A as parseJsonUnknown, D as asString, I as scopeKey, M as ReadinessRegistry, N as ReadinessTimeoutError, S as DeviceType, T as asJsonObject, a as viewerUiCapability, bt as DisposerChain, ct as BaseAddon, ft as emitReadiness, i as deviceOpsCapability, j as DATAPLANE_SECRET_HEADER, lt as normalizeAddonInitResult, m as expandCapMethods, o as adminUiCapability, s as createDeviceProxy, t as sleep } from "./sleep-B3OHhFkL.mjs";
|
|
2
2
|
import { t as EventCategory } from "./event-category-H4AVePnn.mjs";
|
|
3
3
|
import { t as errMsg } from "./err-msg-IQTHeDzc.mjs";
|
|
4
4
|
export { BaseAddon, DATAPLANE_SECRET_HEADER, DeviceType, DisposerChain, EventCategory, ReadinessRegistry, ReadinessTimeoutError, adminUiCapability, asJsonObject, asString, createDeviceProxy, deviceOpsCapability, emitReadiness, errMsg, expandCapMethods, normalizeAddonInitResult, parseJsonUnknown, scopeKey, sleep, viewerUiCapability };
|
|
@@ -250,6 +250,13 @@ export declare const recordingCapability: {
|
|
|
250
250
|
maxAgeDays: z.ZodOptional<z.ZodNumber>;
|
|
251
251
|
maxSizeGb: z.ZodOptional<z.ZodNumber>;
|
|
252
252
|
}, z.core.$strip>>;
|
|
253
|
+
scrubThumbnails: z.ZodOptional<z.ZodEnum<{
|
|
254
|
+
standard: "standard";
|
|
255
|
+
high: "high";
|
|
256
|
+
low: "low";
|
|
257
|
+
max: "max";
|
|
258
|
+
minimal: "minimal";
|
|
259
|
+
}>>;
|
|
253
260
|
}, z.core.$strip>, "query">;
|
|
254
261
|
/** Locate footage at a wall-clock instant: the covering segment's window,
|
|
255
262
|
* or a gap with the forward nearest covered edge. Used by a feeder running
|
|
@@ -352,6 +359,13 @@ export declare const recordingCapability: {
|
|
|
352
359
|
maxAgeDays: z.ZodOptional<z.ZodNumber>;
|
|
353
360
|
maxSizeGb: z.ZodOptional<z.ZodNumber>;
|
|
354
361
|
}, z.core.$strip>>;
|
|
362
|
+
scrubThumbnails: z.ZodOptional<z.ZodEnum<{
|
|
363
|
+
standard: "standard";
|
|
364
|
+
high: "high";
|
|
365
|
+
low: "low";
|
|
366
|
+
max: "max";
|
|
367
|
+
minimal: "minimal";
|
|
368
|
+
}>>;
|
|
355
369
|
}, z.core.$strip>;
|
|
356
370
|
}, z.core.$strip>, z.ZodObject<{
|
|
357
371
|
enabled: z.ZodBoolean;
|
|
@@ -426,6 +440,13 @@ export declare const recordingCapability: {
|
|
|
426
440
|
maxAgeDays: z.ZodOptional<z.ZodNumber>;
|
|
427
441
|
maxSizeGb: z.ZodOptional<z.ZodNumber>;
|
|
428
442
|
}, z.core.$strip>>;
|
|
443
|
+
scrubThumbnails: z.ZodOptional<z.ZodEnum<{
|
|
444
|
+
standard: "standard";
|
|
445
|
+
high: "high";
|
|
446
|
+
low: "low";
|
|
447
|
+
max: "max";
|
|
448
|
+
minimal: "minimal";
|
|
449
|
+
}>>;
|
|
429
450
|
}, z.core.$strip>, "mutation">;
|
|
430
451
|
/** Re-scan this device's footage from disk (stat sizes) and reseed the
|
|
431
452
|
* index, then return the fresh status. */
|
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-BoTIF1d4.js");
|
|
3
3
|
const require_event_category = require("./event-category-AkBNxg_X.js");
|
|
4
4
|
const require_enums = require("./enums.js");
|
|
5
5
|
const require_err_msg = require("./err-msg-COpsHMw2.js");
|
|
@@ -870,6 +870,83 @@ var RecordingRetentionSchema = zod.z.object({
|
|
|
870
870
|
maxSizeGb: zod.z.number().min(0).optional()
|
|
871
871
|
});
|
|
872
872
|
/**
|
|
873
|
+
* Scrub-thumbnail fidelity preset — the single per-camera selector bundling the
|
|
874
|
+
* sprite tile RESOLUTION + JPEG QUALITY the recorder packs timeline-scrub
|
|
875
|
+
* previews at. Five graduated steps; absent on a config = `standard` (the
|
|
876
|
+
* shipped default, matching `sheet-geometry`/`sheet-composer`).
|
|
877
|
+
*
|
|
878
|
+
* Existing sheets are IMMUTABLE — a changed preset applies to NEW windows only.
|
|
879
|
+
* Each window's index sidecar carries its own tile dims, so a camera whose
|
|
880
|
+
* preset changed over time renders every historical window at the dims it was
|
|
881
|
+
* written with.
|
|
882
|
+
*/
|
|
883
|
+
var ScrubThumbnailPresetSchema = zod.z.enum([
|
|
884
|
+
"minimal",
|
|
885
|
+
"low",
|
|
886
|
+
"standard",
|
|
887
|
+
"high",
|
|
888
|
+
"max"
|
|
889
|
+
]);
|
|
890
|
+
/** The default preset when a config omits `scrubThumbnails`. */
|
|
891
|
+
var DEFAULT_SCRUB_THUMBNAIL_PRESET = "standard";
|
|
892
|
+
/**
|
|
893
|
+
* Preset → tile geometry + JPEG quality. Every step is 16:9; the graduated
|
|
894
|
+
* ladder trades sheet size (and remote fetch cost) for scrub crispness.
|
|
895
|
+
* `standard` matches the shipped `sheet-geometry`/`sheet-composer` defaults
|
|
896
|
+
* (480×270 q72), so an unset config is byte-identical to today. The map is
|
|
897
|
+
* strictly monotone in resolution AND quality across the ordered steps.
|
|
898
|
+
*/
|
|
899
|
+
var SCRUB_THUMBNAIL_PRESETS = {
|
|
900
|
+
minimal: {
|
|
901
|
+
tileWidth: 240,
|
|
902
|
+
tileHeight: 135,
|
|
903
|
+
quality: 55
|
|
904
|
+
},
|
|
905
|
+
low: {
|
|
906
|
+
tileWidth: 320,
|
|
907
|
+
tileHeight: 180,
|
|
908
|
+
quality: 60
|
|
909
|
+
},
|
|
910
|
+
standard: {
|
|
911
|
+
tileWidth: 480,
|
|
912
|
+
tileHeight: 270,
|
|
913
|
+
quality: 72
|
|
914
|
+
},
|
|
915
|
+
high: {
|
|
916
|
+
tileWidth: 640,
|
|
917
|
+
tileHeight: 360,
|
|
918
|
+
quality: 80
|
|
919
|
+
},
|
|
920
|
+
max: {
|
|
921
|
+
tileWidth: 960,
|
|
922
|
+
tileHeight: 540,
|
|
923
|
+
quality: 85
|
|
924
|
+
}
|
|
925
|
+
};
|
|
926
|
+
/** Human labels for each preset (resolution-tagged), for settings UIs. */
|
|
927
|
+
var SCRUB_THUMBNAIL_PRESET_LABELS = {
|
|
928
|
+
minimal: "Minimal (240p)",
|
|
929
|
+
low: "Low (320p)",
|
|
930
|
+
standard: "Standard (480p)",
|
|
931
|
+
high: "High (640p)",
|
|
932
|
+
max: "Max (960p)"
|
|
933
|
+
};
|
|
934
|
+
/** Ordered low→high so a UI can render the ladder in graduated order. */
|
|
935
|
+
var SCRUB_THUMBNAIL_PRESET_ORDER = [
|
|
936
|
+
"minimal",
|
|
937
|
+
"low",
|
|
938
|
+
"standard",
|
|
939
|
+
"high",
|
|
940
|
+
"max"
|
|
941
|
+
];
|
|
942
|
+
/**
|
|
943
|
+
* Resolve the geometry for a recording config's scrub-thumbnail preset,
|
|
944
|
+
* defaulting to `standard` when unset. Pure — no I/O.
|
|
945
|
+
*/
|
|
946
|
+
function resolveScrubThumbnailGeometry(preset) {
|
|
947
|
+
return SCRUB_THUMBNAIL_PRESETS[preset ?? "standard"];
|
|
948
|
+
}
|
|
949
|
+
/**
|
|
873
950
|
* The full per-camera recording intent — the wire shape of a RecordingTarget.
|
|
874
951
|
*
|
|
875
952
|
* `mode` is the authoritative storage choice; `schedule`/`triggers`/`pre`/`post`
|
|
@@ -906,7 +983,14 @@ var RecordingConfigSchema = zod.z.object({
|
|
|
906
983
|
* derived into bands once via `migrateConfigToBands`.
|
|
907
984
|
*/
|
|
908
985
|
bands: zod.z.array(RecordingBandSchema).optional(),
|
|
909
|
-
retention: RecordingRetentionSchema.optional()
|
|
986
|
+
retention: RecordingRetentionSchema.optional(),
|
|
987
|
+
/**
|
|
988
|
+
* Per-camera scrub-thumbnail fidelity preset (resolution + JPEG quality for
|
|
989
|
+
* timeline-scrub sprite previews). Absent = `standard`. Applies to NEW
|
|
990
|
+
* windows only — existing sheets are immutable, and each window's index
|
|
991
|
+
* carries its own tile dims so mixed-preset history renders correctly.
|
|
992
|
+
*/
|
|
993
|
+
scrubThumbnails: ScrubThumbnailPresetSchema.optional()
|
|
910
994
|
});
|
|
911
995
|
//#endregion
|
|
912
996
|
//#region src/interfaces/recording-config-migrate.ts
|
|
@@ -30825,6 +30909,7 @@ exports.DEFAULT_AUDIO_ANALYZER_CONFIG = DEFAULT_AUDIO_ANALYZER_CONFIG;
|
|
|
30825
30909
|
exports.DEFAULT_DECODER_HWACCEL_CONFIG = DEFAULT_DECODER_HWACCEL_CONFIG;
|
|
30826
30910
|
exports.DEFAULT_FEATURES = DEFAULT_FEATURES;
|
|
30827
30911
|
exports.DEFAULT_RETENTION = DEFAULT_RETENTION;
|
|
30912
|
+
exports.DEFAULT_SCRUB_THUMBNAIL_PRESET = DEFAULT_SCRUB_THUMBNAIL_PRESET;
|
|
30828
30913
|
exports.DEVICE_CAP_NAMES = DEVICE_CAP_NAMES;
|
|
30829
30914
|
exports.DEVICE_PROFILES = DEVICE_PROFILES;
|
|
30830
30915
|
exports.DEVICE_SETTINGS_CONTRIBUTION_METHODS = require_sleep.DEVICE_SETTINGS_CONTRIBUTION_METHODS;
|
|
@@ -31118,6 +31203,9 @@ exports.RunnerFrameSourceSchema = RunnerFrameSourceSchema;
|
|
|
31118
31203
|
exports.RunnerLocalLoadSchema = RunnerLocalLoadSchema;
|
|
31119
31204
|
exports.RunnerLocalMetricsSchema = RunnerLocalMetricsSchema;
|
|
31120
31205
|
exports.SCOPE_PRESETS = SCOPE_PRESETS;
|
|
31206
|
+
exports.SCRUB_THUMBNAIL_PRESETS = SCRUB_THUMBNAIL_PRESETS;
|
|
31207
|
+
exports.SCRUB_THUMBNAIL_PRESET_LABELS = SCRUB_THUMBNAIL_PRESET_LABELS;
|
|
31208
|
+
exports.SCRUB_THUMBNAIL_PRESET_ORDER = SCRUB_THUMBNAIL_PRESET_ORDER;
|
|
31121
31209
|
exports.SOURCE_INFO_METADATA_KEY = SOURCE_INFO_METADATA_KEY;
|
|
31122
31210
|
exports.STREAM_PROFILE_META = STREAM_PROFILE_META;
|
|
31123
31211
|
exports.STREAM_QUALITY_LABELS = STREAM_QUALITY_LABELS;
|
|
@@ -31133,6 +31221,7 @@ exports.ScopedTokenSchema = ScopedTokenSchema;
|
|
|
31133
31221
|
exports.ScopedTokenSummarySchema = ScopedTokenSummarySchema;
|
|
31134
31222
|
exports.ScoredObjectEventSchema = ScoredObjectEventSchema;
|
|
31135
31223
|
exports.ScriptRunnerStatusSchema = ScriptRunnerStatusSchema;
|
|
31224
|
+
exports.ScrubThumbnailPresetSchema = ScrubThumbnailPresetSchema;
|
|
31136
31225
|
exports.SearchResultSchema = SearchResultSchema;
|
|
31137
31226
|
exports.SendEmailInputSchema = SendEmailInputSchema;
|
|
31138
31227
|
exports.SendEmailResultSchema = SendEmailResultSchema;
|
|
@@ -31473,6 +31562,7 @@ exports.resolveFormat = resolveFormat;
|
|
|
31473
31562
|
exports.resolveHydratedFieldValue = require_sleep.resolveHydratedFieldValue;
|
|
31474
31563
|
exports.resolveModelFormat = resolveModelFormat;
|
|
31475
31564
|
exports.resolveRunnerId = resolveRunnerId;
|
|
31565
|
+
exports.resolveScrubThumbnailGeometry = resolveScrubThumbnailGeometry;
|
|
31476
31566
|
exports.resolveVariantModelId = resolveVariantModelId;
|
|
31477
31567
|
exports.runInferenceStep = runInferenceStep;
|
|
31478
31568
|
exports.runtimeDevices = runtimeDevices;
|
package/dist/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { $ as StreamSourceSchema, A as parseJsonUnknown, B as CamProfileSchema, C as asBoolean, D as asString, E as asNumber, F as readinessKey, G as DecodedFrameSchema, H as CamStreamResolutionSchema, I as scopeKey, J as FrameHandleSchema, K as EncodedPacketSchema, L as BrokerStatsSchema, M as ReadinessRegistry, N as ReadinessTimeoutError, O as parseJsonArray, P as emitDownForOwnedCaps, Q as StreamSourceEntrySchema, R as BrokerStatusSchema, S as DeviceType, T as asJsonObject, U as CameraStreamSchema, V as CamStreamKindSchema, W as DecodedAudioChunkSchema, X as ProfileSlotSchema, Y as ProfileRtspEntrySchema, Z as ProfileSlotStatusSchema, _ as resolveCapMount, _t as collectHydratedFieldValues, a as viewerUiCapability, at as makeSourceBrokerId, b as DeviceFeature, bt as DisposerChain, c as createLazyTrpcSource, ct as BaseAddon, d as DEVICE_SETTINGS_CONTRIBUTION_METHODS, dt as createEvent, et as SubscribeAudioChunksInputSchema, f as DEVICE_STATUS_METHOD, ft as emitReadiness, g as method, gt as collectHydratedFieldEntries, h as isDeviceConfigCap, ht as WELL_KNOWN_TAB_MAP, i as deviceOpsCapability, it as makeProfileBrokerId, j as DATAPLANE_SECRET_HEADER, k as parseJsonObject, l as createMirrorSource, lt as normalizeAddonInitResult, m as expandCapMethods, mt as WELL_KNOWN_TABS, n as sleepCancellable, nt as SubscribeFramesInputSchema, o as adminUiCapability, ot as parseProfileBrokerId, p as event, pt as isEvent, q as FrameHandleFormatSchema, r as RawStateResultSchema, rt as SubscribeFramesResultSchema, s as createDeviceProxy, st as selectAssignedProfileSlots, t as sleep, tt as SubscribeAudioChunksResultSchema, u as createSliceHandle, ut as createDurableState, v as systemMethod, vt as hydrateSchema, w as asJsonArray, x as DeviceRole, y as ChargingStatus, yt as resolveHydratedFieldValue, z as CAM_PROFILE_ORDER } from "./sleep-
|
|
1
|
+
import { $ as StreamSourceSchema, A as parseJsonUnknown, B as CamProfileSchema, C as asBoolean, D as asString, E as asNumber, F as readinessKey, G as DecodedFrameSchema, H as CamStreamResolutionSchema, I as scopeKey, J as FrameHandleSchema, K as EncodedPacketSchema, L as BrokerStatsSchema, M as ReadinessRegistry, N as ReadinessTimeoutError, O as parseJsonArray, P as emitDownForOwnedCaps, Q as StreamSourceEntrySchema, R as BrokerStatusSchema, S as DeviceType, T as asJsonObject, U as CameraStreamSchema, V as CamStreamKindSchema, W as DecodedAudioChunkSchema, X as ProfileSlotSchema, Y as ProfileRtspEntrySchema, Z as ProfileSlotStatusSchema, _ as resolveCapMount, _t as collectHydratedFieldValues, a as viewerUiCapability, at as makeSourceBrokerId, b as DeviceFeature, bt as DisposerChain, c as createLazyTrpcSource, ct as BaseAddon, d as DEVICE_SETTINGS_CONTRIBUTION_METHODS, dt as createEvent, et as SubscribeAudioChunksInputSchema, f as DEVICE_STATUS_METHOD, ft as emitReadiness, g as method, gt as collectHydratedFieldEntries, h as isDeviceConfigCap, ht as WELL_KNOWN_TAB_MAP, i as deviceOpsCapability, it as makeProfileBrokerId, j as DATAPLANE_SECRET_HEADER, k as parseJsonObject, l as createMirrorSource, lt as normalizeAddonInitResult, m as expandCapMethods, mt as WELL_KNOWN_TABS, n as sleepCancellable, nt as SubscribeFramesInputSchema, o as adminUiCapability, ot as parseProfileBrokerId, p as event, pt as isEvent, q as FrameHandleFormatSchema, r as RawStateResultSchema, rt as SubscribeFramesResultSchema, s as createDeviceProxy, st as selectAssignedProfileSlots, t as sleep, tt as SubscribeAudioChunksResultSchema, u as createSliceHandle, ut as createDurableState, v as systemMethod, vt as hydrateSchema, w as asJsonArray, x as DeviceRole, y as ChargingStatus, yt as resolveHydratedFieldValue, z as CAM_PROFILE_ORDER } from "./sleep-B3OHhFkL.mjs";
|
|
2
2
|
import { t as EventCategory } from "./event-category-H4AVePnn.mjs";
|
|
3
3
|
import { EventSourceType } from "./enums.mjs";
|
|
4
4
|
import { t as errMsg } from "./err-msg-IQTHeDzc.mjs";
|
|
@@ -869,6 +869,83 @@ var RecordingRetentionSchema = z.object({
|
|
|
869
869
|
maxSizeGb: z.number().min(0).optional()
|
|
870
870
|
});
|
|
871
871
|
/**
|
|
872
|
+
* Scrub-thumbnail fidelity preset — the single per-camera selector bundling the
|
|
873
|
+
* sprite tile RESOLUTION + JPEG QUALITY the recorder packs timeline-scrub
|
|
874
|
+
* previews at. Five graduated steps; absent on a config = `standard` (the
|
|
875
|
+
* shipped default, matching `sheet-geometry`/`sheet-composer`).
|
|
876
|
+
*
|
|
877
|
+
* Existing sheets are IMMUTABLE — a changed preset applies to NEW windows only.
|
|
878
|
+
* Each window's index sidecar carries its own tile dims, so a camera whose
|
|
879
|
+
* preset changed over time renders every historical window at the dims it was
|
|
880
|
+
* written with.
|
|
881
|
+
*/
|
|
882
|
+
var ScrubThumbnailPresetSchema = z.enum([
|
|
883
|
+
"minimal",
|
|
884
|
+
"low",
|
|
885
|
+
"standard",
|
|
886
|
+
"high",
|
|
887
|
+
"max"
|
|
888
|
+
]);
|
|
889
|
+
/** The default preset when a config omits `scrubThumbnails`. */
|
|
890
|
+
var DEFAULT_SCRUB_THUMBNAIL_PRESET = "standard";
|
|
891
|
+
/**
|
|
892
|
+
* Preset → tile geometry + JPEG quality. Every step is 16:9; the graduated
|
|
893
|
+
* ladder trades sheet size (and remote fetch cost) for scrub crispness.
|
|
894
|
+
* `standard` matches the shipped `sheet-geometry`/`sheet-composer` defaults
|
|
895
|
+
* (480×270 q72), so an unset config is byte-identical to today. The map is
|
|
896
|
+
* strictly monotone in resolution AND quality across the ordered steps.
|
|
897
|
+
*/
|
|
898
|
+
var SCRUB_THUMBNAIL_PRESETS = {
|
|
899
|
+
minimal: {
|
|
900
|
+
tileWidth: 240,
|
|
901
|
+
tileHeight: 135,
|
|
902
|
+
quality: 55
|
|
903
|
+
},
|
|
904
|
+
low: {
|
|
905
|
+
tileWidth: 320,
|
|
906
|
+
tileHeight: 180,
|
|
907
|
+
quality: 60
|
|
908
|
+
},
|
|
909
|
+
standard: {
|
|
910
|
+
tileWidth: 480,
|
|
911
|
+
tileHeight: 270,
|
|
912
|
+
quality: 72
|
|
913
|
+
},
|
|
914
|
+
high: {
|
|
915
|
+
tileWidth: 640,
|
|
916
|
+
tileHeight: 360,
|
|
917
|
+
quality: 80
|
|
918
|
+
},
|
|
919
|
+
max: {
|
|
920
|
+
tileWidth: 960,
|
|
921
|
+
tileHeight: 540,
|
|
922
|
+
quality: 85
|
|
923
|
+
}
|
|
924
|
+
};
|
|
925
|
+
/** Human labels for each preset (resolution-tagged), for settings UIs. */
|
|
926
|
+
var SCRUB_THUMBNAIL_PRESET_LABELS = {
|
|
927
|
+
minimal: "Minimal (240p)",
|
|
928
|
+
low: "Low (320p)",
|
|
929
|
+
standard: "Standard (480p)",
|
|
930
|
+
high: "High (640p)",
|
|
931
|
+
max: "Max (960p)"
|
|
932
|
+
};
|
|
933
|
+
/** Ordered low→high so a UI can render the ladder in graduated order. */
|
|
934
|
+
var SCRUB_THUMBNAIL_PRESET_ORDER = [
|
|
935
|
+
"minimal",
|
|
936
|
+
"low",
|
|
937
|
+
"standard",
|
|
938
|
+
"high",
|
|
939
|
+
"max"
|
|
940
|
+
];
|
|
941
|
+
/**
|
|
942
|
+
* Resolve the geometry for a recording config's scrub-thumbnail preset,
|
|
943
|
+
* defaulting to `standard` when unset. Pure — no I/O.
|
|
944
|
+
*/
|
|
945
|
+
function resolveScrubThumbnailGeometry(preset) {
|
|
946
|
+
return SCRUB_THUMBNAIL_PRESETS[preset ?? "standard"];
|
|
947
|
+
}
|
|
948
|
+
/**
|
|
872
949
|
* The full per-camera recording intent — the wire shape of a RecordingTarget.
|
|
873
950
|
*
|
|
874
951
|
* `mode` is the authoritative storage choice; `schedule`/`triggers`/`pre`/`post`
|
|
@@ -905,7 +982,14 @@ var RecordingConfigSchema = z.object({
|
|
|
905
982
|
* derived into bands once via `migrateConfigToBands`.
|
|
906
983
|
*/
|
|
907
984
|
bands: z.array(RecordingBandSchema).optional(),
|
|
908
|
-
retention: RecordingRetentionSchema.optional()
|
|
985
|
+
retention: RecordingRetentionSchema.optional(),
|
|
986
|
+
/**
|
|
987
|
+
* Per-camera scrub-thumbnail fidelity preset (resolution + JPEG quality for
|
|
988
|
+
* timeline-scrub sprite previews). Absent = `standard`. Applies to NEW
|
|
989
|
+
* windows only — existing sheets are immutable, and each window's index
|
|
990
|
+
* carries its own tile dims so mixed-preset history renders correctly.
|
|
991
|
+
*/
|
|
992
|
+
scrubThumbnails: ScrubThumbnailPresetSchema.optional()
|
|
909
993
|
});
|
|
910
994
|
//#endregion
|
|
911
995
|
//#region src/interfaces/recording-config-migrate.ts
|
|
@@ -30659,4 +30743,4 @@ function scoreRuntimes(hw) {
|
|
|
30659
30743
|
};
|
|
30660
30744
|
}
|
|
30661
30745
|
//#endregion
|
|
30662
|
-
export { ACCESSORY_LABEL, ALL_CAPABILITY_DEFINITIONS, APPLE_SA_TO_MACRO, AUDIO_BACKEND_CHOICES, AUDIO_MACRO_LABELS, AccessoriesStatusSchema, AccessoryKind, AddBrokerInputSchema, AddonAutoUpdateSchema, AddonListItemSchema, AddonPageDeclarationSchema, AddonPageInfoSchema, AdoptInputSchema as AdoptionAdoptInputSchema, AdoptResultSchema as AdoptionAdoptResultSchema, AdoptionFilterSchema, GetCandidateInputSchema as AdoptionGetCandidateInputSchema, ListCandidatesInputSchema as AdoptionListCandidatesInputSchema, ListCandidatesOutputSchema as AdoptionListCandidatesOutputSchema, ReleaseInputSchema as AdoptionReleaseInputSchema, AdoptionStatusSchema, AgentLoadSummarySchema, AirQualitySensorStatusSchema, AlarmArmModeSchema, AlarmPanelStatusSchema, AlarmStateSchema, AlertSchema, AlertSeveritySchema, AlertSourceSchema, AlertStatusSchema, AmbientLightSensorStatusSchema, ApiKeyRecordSchema, ApiKeySummarySchema, ArchiveEntrySchema, ArchiveManifestSchema, AttachmentMediaTypeSchema, AttachmentSchema, AudioAnalysisResultSchema, AudioAnalysisSettingsSchema, AudioChunkInputSchema, AudioClassSummarySchema, AudioClassificationLabelSchema, AudioClassificationResultSchema, AudioCodecInfoSchema, AudioDecodeSessionConfigSchema, AudioEncodeSchema, AudioEncodeSessionConfigSchema, AudioEncodedChunkSchema, AudioEventSchema, AudioLevelSchema, AudioMetricsHistoryPointSchema, AudioMetricsHistorySchema, AudioMetricsSnapshotSchema, AudioPcmChunkSchema, AuthResultSchema, AutoUpdateSettingsSchema, AutomationControlStatusSchema, AvailableIntegrationTypeSchema, BACKEND_TO_FORMAT, BATTERY_DEVICE_PROFILE, BacklightModeSchema, BackupDestinationInfoSchema, BackupEntrySchema, BaseAddon, BaseDevice, BaseDeviceProvider, BatteryStatusSchema, BinaryStatusSchema, BoundingBoxSchema, BrightnessStatusSchema, AddInputSchema as BrokerAddInputSchema, BrokerAudioClientSchema, BrokerClientsSchema, BrokerConnectionDetailsSchema, BrokerConsumerAttributionSchema, BrokerConsumerKindSchema, BrokerDecodedClientSchema, BrokerEncodedClientSchema, GetStateInputSchema as BrokerGetStateInputSchema, BrokerInfoSchema, BrokerProviderInfoSchema, PublishInputSchema as BrokerPublishInputSchema, RegistryStatusSchema as BrokerRegistryStatusSchema, BrokerRtspClientSchema, BrokerStatsSchema, BrokerStatusEnum, BrokerStatusSchema, SubscribeInputSchema as BrokerSubscribeInputSchema, SubscribeResultSchema as BrokerSubscribeResultSchema, TestConnectionResultSchema as BrokerTestConnectionResultSchema, UnsubscribeInputSchema as BrokerUnsubscribeInputSchema, CAM_PROFILE_ORDER, CAPABILITY_NAMES, CAPABILITY_ROUTER_KEYS, CAP_NAMES_WITH_STATUS, CAP_NODE_PIN_CONTEXT_KEY, CAP_PROVIDER_KIND_MAP, COCO_80_LABELS, COCO_TO_MACRO, CamProfileSchema, CamStreamDescriptorSchema, CamStreamKindSchema, CamStreamResolutionSchema, CameraAssignmentStatusSchema, CameraAudioStatusSchema, CameraBrokerProfileSchema, CameraBrokerStatusSchema, CameraCredentialsSchema, CameraCredentialsStatusSchema, CameraDecoderShmSchema, CameraDecoderStatusSchema, CameraDetectionPhaseSchema, CameraDetectionProvisioningSchema, CameraDetectionProvisioningStateSchema, CameraDetectionStatusSchema, CameraMetricsSchema, CameraMetricsWithDeviceIdSchema, CameraMotionStatusSchema, CameraRecordingModeSchema, CameraRecordingStatusSchema, CameraSourceStatusSchema, CameraSourceStreamSchema, CameraStatusSchema, CameraStreamSchema, CandidateQueryFilterSchema, CapScopeSchema, CapabilityBindingsSchema, CarbonMonoxideStatusSchema, ChargingStatus, ClientNetworkStatsSchema, ClimateControlStatusSchema, ClipPlaybackSchema, ClipSchema, ClusterAddonNodeDeploymentSchema, ClusterAddonStatusEntrySchema, CollectionColumnSchema, CollectionIndexSchema, ColorStatusSchema, ConfigEntrySchema, ConfigSectionWithValuesSchema, ConfigTabDeclarationSchema, ConnectivityStatusSchema, ConsumableItemSchema, ConsumablesStatusSchema, ContactStatusSchema, ControlKindSchema, ControlStatusSchema, ConvertArtifactSchema, ConvertResultSchema, ConvertTargetSchema, CoverStateSchema, CoverStatusSchema, CreateApiKeyInputSchema, CreateApiKeyResultSchema, CreateIntegrationInputSchema, CreateScopedTokenInputSchema, CreateScopedTokenResultSchema, CreateUserInputSchema, CustomActionInputSchema, CustomModelDescriptorSchema, DATAPLANE_SECRET_HEADER, DEFAULT_ADDON_PLACEMENT, DEFAULT_AUDIO_ANALYZER_CONFIG, DEFAULT_DECODER_HWACCEL_CONFIG, DEFAULT_FEATURES, DEFAULT_RETENTION, DEVICE_CAP_NAMES, DEVICE_PROFILES, DEVICE_SETTINGS_CONTRIBUTION_METHODS, DEVICE_STATUS_METHOD, DEVICE_TYPE_INFO, DayNightModeSchema, DayNightOptionsSchema, DayNightSettingsPatchSchema, DayNightStatusSchema, DecodedAudioChunkSchema, DecodedFrameSchema, DecoderSessionConfigSchema, DecoderStatsSchema, DeleteIntegrationResultSchema, DetectionSourceSchema, DeviceCodeSeveritySchema, DeviceConfig, DeviceDiscoveryStatusSchema, ExposeInputSchema as DeviceExportExposeInputSchema, DeviceExportStatusSchema, UnexposeInputSchema as DeviceExportUnexposeInputSchema, DeviceFeature, DeviceInfoSchema, DeviceLinkModeSchema, DeviceNetworkStatsSchema, DeviceRole, DeviceRuntimeState, DeviceStatusSchema, DeviceType, DiscoveredChildDeviceSchema, DiscoveredChildStatusSchema, DiscoveredDeviceSchema, DiscoveredTargetSchema, DisposerChain, DoorbellPressEventSchema, DoorbellStatusSchema, EVENT_KIND_BY_CAP, EVENT_PAD_MS, EXPRESSION_BUILTINS, EXPRESSION_BUILTIN_NAMES, EXPRESSION_COMPILE_CACHE_CAPACITY, EXPRESSION_IDENTIFIER_RE, EXPRESSION_INJECTED_NOW, ElementConfigStore, EmbeddingInfoSchema, EmbeddingResultSchema, EncodeProfileSchema, EncodedPacketSchema, EnrichedWidgetMetadataSchema, EnumSensorDateTimeFormatSchema, EnumSensorStatusSchema, EventCategory, EventEmitterStatusSchema, EventFireSchema, EventItemSchema, EventKindCategorySchema, EventKindDescriptorSchema, EventKindIconSchema, EventKindSchema, EventSourceType, ExportSetupFieldSchema, ExportSetupSchema, ExposedDeviceSchema, ExposureModeSchema, ExpressionEvalError, ExpressionParseError, FanControlStatusSchema, FanDirectionSchema, FeatureManifestSchema, FeatureProbeStatusSchema, FloodStatusSchema, FrameHandleFormatSchema, FrameHandleSchema, FrameInputSchema, GasStatusSchema, GetStreamWithCodecInputSchema, GlobalMetricsSchema, HF_BASE_URL, HF_REPO, HWACCEL_OPTIONS, HealthStatusSchema, HistoryPointSchema, HistoryResolutionEnum, HumidifierStatusSchema, HumiditySensorStatusSchema, HvacModeSchema, ImageRotateSchema, ImageSettingsOptionsSchema, ImageSettingsPatchSchema, ImageSettingsStatusSchema, ImageStatusSchema, IngestOwnerSchema, InstalledPackageSchema, IntegrationLiteSchema, IntegrationWithStateSchema, IntercomAbilitySchema, IntercomStatusSchema, KNOWN_CAP_NAMES, KeyEventSchema, LabelDefinitionSchema, LawnMowerActivitySchema, LawnMowerControlStatusSchema, LinkedDeviceSchema, LlmDefaultSchema, LlmDefaultSelectorSchema, LlmErrorCodeSchema, LlmGenerateBaseInputSchema, LlmGenerateErrSchema, LlmGenerateOkSchema, LlmGenerateResultSchema, LlmImageSchema, LlmNodeModelSchema, LlmProfileKindDescriptorSchema, LlmProfileKindSchema, LlmProfileSchema, LlmRuntimeCompleteInputSchema, LlmRuntimeDiskUsageSchema, LlmRuntimeNodeSchema, LlmRuntimeStatusSchema, LlmUsageRollupSchema, LlmUsageSchema, LocateSegmentResultSchema, LocationStatSchema, LockControlStatusSchema, LockStateSchema, LogEntrySchema, LogLevelSchema, LogStreamEntrySchema, LoginMethodContributionSchema, LoginStageEnum, MACRO_LABELS, MAX_EXPRESSION_AST_NODES, MAX_EXPRESSION_BINDINGS, MAX_EXPRESSION_CALL_ARGS, MAX_EXPRESSION_EVAL_STEPS, MAX_EXPRESSION_SOURCE_LENGTH, METHOD_ACCESS_MAP, MODEL_FORMATS, ManagedModelCatalogEntrySchema, ManagedModelRefSchema, ManagedRuntimeConfigSchema, MaskGridDimsSchema, MaskGridShapeSchema, MaskLineShapeSchema, MaskPointSchema, MaskPolygonShapeSchema, MaskPolygonVerticesSchema, MaskRectShapeSchema, MaskShapeKindSchema, MaskShapeSchema, MediaFileSchema, MediaPlayerRepeatSchema, MediaPlayerStateSchema, MediaPlayerStatusSchema, MeshPeerSchema, MeshStatusSchema, MethodAccessSchema, ModelCatalogEntrySchema, ModelConvertInputSchema, ModelConvertMetadataSchema, ModelDistributeInputSchema, ModelDistributeResultSchema, ModelExtraFileSchema, ModelFormatEntrySchema, ModelFormatsSchema, ModelSubstitutionSchema, ModelVariantGroupSchema, MotionAnalysisResultSchema, MotionEventSchema, MotionOnMotionChangedDataSchema, MotionRegionSchema, MotionSourceEnum, MotionSourcesSchema, MotionStatusSchema, MotionTriggerRuntimeStateSchema, MotionTriggerStatusSchema, MotionZoneOptionsSchema, MotionZonePatchSchema, MotionZoneRegionSchema, MotionZoneStatusSchema, StatusSchema as MqttBrokerStatusSchema, NativeDetectionSchema, NativeObjectClassEnum, NativeObjectDetectionRuntimeStateSchema, NativeObjectDetectionStatusSchema, NetworkAccessStatusSchema, NetworkAddressSchema, NetworkEndpointSchema, NotificationActionSchema, NotificationFormatSchema, NotificationHistoryEntrySchema, NotificationRuleSchema, NotificationSchema, NotifierStatusSchema, NumericSensorStatusSchema, OauthIntegrationDescriptorSchema, ObjectEventSchema, OrchestratorMetricsSchema, OsdOverlayKindEnum, OsdOverlayPatchSchema, OsdOverlaySchema, OsdPositionEnum, OsdStatusSchema, PET_FEEDER_MANUAL_FEED_MAX, PET_FEEDER_MANUAL_FEED_MIN, PIPELINE_FLOW_CAPABILITY_NAMES, PIPELINE_OWNER_CAPABILITY_NAMES, PROVIDER_KIND_CAP_NAMES, PYTHON_SCRIPT, PackageUpdateSchema, PackageVersionInfoSchema, PasskeyLoginMethodSchema, PasskeySummarySchema, PcmSampleFormatSchema, PerScopeBreakdownSchema, PetFeederStatusSchema, PickStreamPreferencesSchema, PickStreamRequirementsSchema, PickedCamStreamSchema, PipelineAssignmentSchema, PipelineDefaultStepSchema, PipelineEngineChoiceSchema, PipelineRunResultBridge, PipelineStepInputSchema, PipelineValidationIssueSchema, PipelineValidationResultSchema, PlaceholderReasonSchema, PolygonPointSchema, PowerMeterStatusSchema, PresenceStatusSchema, PressureSensorStatusSchema, PrivacyMaskOptionsSchema, PrivacyMaskPatchSchema, PrivacyMaskRegionSchema, PrivacyMaskShapeSchema, PrivacyMaskStatusSchema, ProfileRtspEntrySchema, ProfileSlotSchema, ProfileSlotStatusSchema, ProviderStatusSchema, PtzAutotrackRuntimeStateSchema, PtzAutotrackSettingsSchema, PtzAutotrackStatusSchema, PtzAutotrackTargetOptionSchema, PtzMoveCommandSchema, PtzPositionSchema, PtzPresetSchema, PtzStatusSchema, QueryFilterSchema, REACHABILITY_FAILURES_TO_OFFLINE, REACHABILITY_POLL_INTERVAL_MS, REACHABILITY_PROBE_TIMEOUT_MS, RECOGNITION_TYPES, RESERVED_BINDING_NAMES, RUNTIME_DEFAULTS, RUNTIME_TO_FORMAT, RawStateResultSchema, ReadSegmentBytesResultSchema, ReadinessRegistry, ReadinessTimeoutError, RecentTracksPageSchema, RecentTracksQueryInput, RecordingAvailabilitySchema, RecordingBandModeSchema, RecordingBandSchema, RecordingBandTriggersSchema, RecordingConfigSchema, RecordingDaysSchema, RecordingDeviceUsageSchema, RecordingLocationUsageSchema, RecordingManifestSchema, RecordingModeSchema, RecordingRangeSchema, RecordingRetentionSchema, RecordingRuleSchema, RecordingScheduleSchema, RecordingStatusSchema, RecordingStorageModeSchema, RecordingStorageUsageSchema, RecordingTriggersSchema, RecordingWeekdaySchema, RedirectLoginMethodSchema, RenderedAsSchema, ReportMotionInputSchema, RingBuffer, RtpSourceSchema, RtspRestreamEntrySchema, RunnerCameraConfigSchema, RunnerCameraDeviceUIFields, RunnerFrameSourceSchema, RunnerLocalLoadSchema, RunnerLocalMetricsSchema, SCOPE_PRESETS, SOURCE_INFO_METADATA_KEY, STREAM_PROFILE_META, STREAM_QUALITY_LABELS, SUB_DETECTION_TYPES, SYSTEM_CAP_NAMES, SceneCheckSchema, SceneConditionSchema, SceneMonitorSchema, SceneMonitorStateSchema, SceneMonitorStatusSchema, SceneReferenceSchema, ScopedTokenSchema, ScopedTokenSummarySchema, ScoredObjectEventSchema, ScriptRunnerStatusSchema, SearchResultSchema, SendEmailInputSchema, SendEmailResultSchema, SendResultSchema, SensorEventSchema, ServerBootModeSchema, ServerPackageStatusSchema, ServerRollbackInfoSchema, ServerUpdateActionResultSchema, ServerUpdateCheckResultSchema, ServerUpdateStateSchema, SettingsPatchSchema, SettingsRecordSchema, SettingsSchemaWithValuesSchema, SettingsUpdateResultSchema, ShmRingStatsSchema, SmokeStatusSchema, SmtpStatusSchema, SnapshotImageSchema, SourceInfoSchema, SpatialDetectionSchema, SsoBridgeClaimsSchema, StartEmbeddedInputSchema, StationaryObjectSchema, AbortUploadInputSchema as StorageAbortUploadInputSchema, BeginDownloadInputSchema as StorageBeginDownloadInputSchema, BeginDownloadResultSchema as StorageBeginDownloadResultSchema, BeginUploadInputSchema as StorageBeginUploadInputSchema, BeginUploadResultSchema as StorageBeginUploadResultSchema, EndDownloadInputSchema as StorageEndDownloadInputSchema, FinalizeUploadInputSchema as StorageFinalizeUploadInputSchema, StorageLocationDeclarationSchema, StorageLocationRefSchema, StorageLocationSchema, StorageLocationTypeSchema, ProviderInfoSchema as StorageProviderInfoSchema, ReadChunkInputSchema as StorageReadChunkInputSchema, TestLocationResultSchema as StorageTestLocationResultSchema, WriteChunkInputSchema as StorageWriteChunkInputSchema, StreamCodecSchema, StreamFormatSchema, StreamNetworkStatsSchema, StreamParamsOptionsSchema, StreamParamsStatusSchema, StreamProfileConfigSchema, StreamProfileOptionsSchema, StreamProfilePatchSchema, StreamProfileSchema, StreamSourceEntrySchema, StreamSourceSchema, SubscribeAudioChunksInputSchema, SubscribeAudioChunksResultSchema, SubscribeFramesInputSchema, SubscribeFramesResultSchema, SwitchStatusSchema, SystemMetricsSchema, SystemMirror, TIMEZONES, TamperStatusSchema, TankStatusSchema, TargetKindCapsSchema, TargetKindLevelSchema, TargetKindSchema, TargetSchema, TemperatureSensorStatusSchema, TestConnectionResultSchema$1 as TestConnectionResultSchema, TestResultSchema, ToastSchema, TokenScopeSchema, TopologyNodeSchema, TopologyProcessSchema, TopologyServiceSchema, TrackCascadeCountsSchema, TrackEnvelopeSchema, TrackProjectionSchema, TrackSchema, TrackStateSchema, TrackZoneFilterSchema, TrackedDetectionSchema, TurnServerSchema, UNIT_TABLE, BrokerInfoSchema$1 as UnifiedBrokerInfoSchema, UnitConversionError, UpdateIntegrationInputSchema, UpdateStatusSchema, UpdateUserInputSchema, UserRecordSchema, UserSummarySchema, VacuumControlStatusSchema, VacuumStateSchema, ValveStateSchema, ValveStatusSchema, VibrationStatusSchema, VideoEncodeSchema, WELL_KNOWN_TABS, WELL_KNOWN_TAB_MAP, WaterHeaterStatusSchema, WeatherStatusSchema, WebrtcStreamChoiceSchema, WebrtcStreamTargetSchema, WhiteBalanceModeSchema, WidgetHostEnum, WidgetLoginMethodSchema, WidgetMetadataSchema, WidgetRemoteSchema, WidgetSizeEnum, YAMNET_TO_MACRO, ZoneKindEnum, ZoneRuleModeEnum, ZoneRuleSchema, ZoneRuleStageEnum, ZoneRulesArraySchema, ZoneSchema, ZoneScopeBreakdownSchema, accessoriesCapability, accessoryStableId, addonPagesCapability, addonPagesSourceCapability, addonRoutesCapability, addonSettingsCapability, addonWidgetsCapability, addonWidgetsSourceCapability, addonsCapability, adminUiCapability, advancedNotifierCapability, airQualitySensorCapability, alarmPanelCapability, alertsCapability, ambientLightSensorCapability, applyTransform, asBoolean, asJsonArray, asJsonObject, asNumber, asString, audioAnalysisCapability, audioAnalyzerCapability, audioCodecCapability, audioMetricsCapability, authProviderCapability, autoAssignProfiles, automationControlCapability, backupCapability, batteryCapability, bestLocationMatch, binaryCapability, bindAddonActions, brightnessCapability, brokerCapability, buildAddonRouteProvider, buildModelVariantGroups, buildStreamParamsConfigSchema, buttonCapability, cameraCredentialsCapability, cameraPipelineConfigCapability, cameraStreamsCapability, canConvertUnit, carbonMonoxideCapability, cellsToRects, classifyStream, classifyStreams, climateControlCapability, collectHydratedFieldEntries, collectHydratedFieldValues, colorCapability, compileExpression, compileExpressionSafe, connectivityCapability, consumablesCapability, contactCapability, controlCapability, convertUnit, cosineSimilarity, coverCapability, createDeviceProxy, createDurableState, createEvent, createExpressionScope, createLazyTrpcSource, createMirrorSource, createRuntimeStateBridge, createSliceHandle, createSystemProxy, customAction, customModelRegistryCapability, dayNightCapability, decoderCapability, defaultDeviceFor, defineCustomActions, describeModelVariant, detectionPipelineCapability, deviceAdoptionCapability, deviceCustomAction, deviceDiscoveryCapability, deviceExportCapability, deviceManagerCapability, deviceMatchesProfile, deviceOpsCapability, deviceProviderCapability, deviceStateCapability, deviceStatusCapability, doorbellCapability, embeddingEncoderCapability, emitDownForOwnedCaps, emitReadiness, encodeProfileFromStreamShape, enumSensorCapability, enumerateItemArrayFields, enumerateSchemaFields, errMsg, evaluateAst, evaluateLinkExpression, evaluateZoneRules, event, eventEmitterCapability, eventsCapability, expandCapMethods, extractNestedAddonId, extractSourceInfoFromMetadata, faceGalleryCapability, fanControlCapability, featureProbeCapability, filesystemBrowseCapability, findTimezone, floodCapability, formatForBackend, formatForRuntime, frameworkSwapConfirmSchema, frameworkSwapPackageSchema, gasCapability, getAudioMacroClassIds, getByPath, getCapsByProviderKind, hfModelUrl, htmlToText, humidifierCapability, humiditySensorCapability, hydrateSchema, imageCapability, imageSettingsCapability, integrationsCapability, intercomCapability, isAgentOnlyPlacement, isArrayOutputSchema, isCollectionArrayMethod, isDeployableToAgent, isDeviceConfigCap, isEvent, isObjectInput, isVoidInput, jobKindSchema, kebabToCamel, lawnMowerControlCapability, lifecycleJobSchema, lifecycleJobScopeSchema, lifecycleJobStateSchema, lifecycleTaskSchema, llmCapability, llmRuntimeCapability, localNetworkCapability, locationSimilarity, lockControlCapability, logDestinationCapability, loginMethodCapability, looseSchema, makeProfileBrokerId, makeSourceBrokerId, mapAudioLabelToMacro, markdownToHtmlLite, markdownToText, maskUrlCredentials, mediaPlayerCapability, mergeSourceInfo, meshNetworkCapability, method, metricsProviderCapability, migrateConfigToBands, modelConvertCapability, modelDistributorCapability, modelFormatForRuntime, motionCapability, motionDetectionCapability, motionTriggerCapability, motionZonesCapability, mqttBrokerCapability, nativeObjectDetectionCapability, networkAccessCapability, networkQualityCapability, nodePin, nodesCapability, normalizeAddonInitResult, normalizeUnit, notificationOutputCapability, notifierCapability, numericSensorCapability, oauthIntegrationCapability, objectInputDeclaresAddonId, osdCapability, parseCameraStreamConfig, parseExpression, parseJsonArray, parseJsonObject, parseJsonUnknown, parseProfileBrokerId, parseStreamParamsFormPatch, pendingFrameworkSwapSchema, petFeederCapability, pickPreferredRtspEntry, pipelineAnalyticsCapability, pipelineExecutorCapability, pipelineOrchestratorCapability, pipelineRunnerCapability, plateGalleryCapability, platformProbeCapability, powerMeterCapability, prepareNotification, presenceCapability, pressureSensorCapability, privacyMaskCapability, procedureAuthKey, ptzAutotrackCapability, ptzCapability, pythonScriptForBackend, readNodePin, readinessKey, rebootCapability, recordingCapability, rectsToCells, requiresPython, resolveAddonExecution, resolveAddonGroup, resolveAddonPlacement, resolveAddonRuntime, resolveCapMount, resolveDetectionRuntime, resolveDeviceProfile, resolveFormat, resolveHydratedFieldValue, resolveModelFormat, resolveRunnerId, resolveVariantModelId, runInferenceStep, runtimeDevices, sceneMonitorCapability, scopeKey, scoreRuntimes, scriptRunnerCapability, selectAssignedProfileSlots, serverManagementCapability, setByPath, settingsStoreCapability, sleep, sleepCancellable, smokeCapability, smtpProviderCapability, snapshotCapability, ssoBridgeCapability, startReachabilityPoll, storageCapability, storageEvictableCapability, storageProviderCapability, streamBrokerCapability, streamCatalogCapability, streamParamsCapability, streamPixels, streamQualityLabel, supportedRuntimes, switchCapability, synthesizeSourceInfo, systemCapability, tamperCapability, taskLogEntrySchema, taskPhaseSchema, taskTargetSchema, temperatureSensorCapability, textToHtml, toDeviceSummary, toExpressionValue, toStreamSourceEntry, toastCapability, tokenize, transcodeBody, tryConvertUnit, turnProviderCapability, unitDimension, unitsForDimension, updateCapability, userManagementCapability, userPasskeysCapability, vacuumControlCapability, validateExpressionSource, valveCapability, vibrationCapability, videoclipsCapability, viewerUiCapability, waterHeaterCapability, weatherCapability, webrtcClientHintsSchema, webrtcSessionCapability, wiringAddonHealthSchema, wiringHealthSnapshotSchema, wiringNodeHealthSchema, wiringProbeKindSchema, wiringProbeResultSchema, zodEntriesToConfigUI, zoneAnalyticsCapability, zoneRulesCapability, zonesCapability };
|
|
30746
|
+
export { ACCESSORY_LABEL, ALL_CAPABILITY_DEFINITIONS, APPLE_SA_TO_MACRO, AUDIO_BACKEND_CHOICES, AUDIO_MACRO_LABELS, AccessoriesStatusSchema, AccessoryKind, AddBrokerInputSchema, AddonAutoUpdateSchema, AddonListItemSchema, AddonPageDeclarationSchema, AddonPageInfoSchema, AdoptInputSchema as AdoptionAdoptInputSchema, AdoptResultSchema as AdoptionAdoptResultSchema, AdoptionFilterSchema, GetCandidateInputSchema as AdoptionGetCandidateInputSchema, ListCandidatesInputSchema as AdoptionListCandidatesInputSchema, ListCandidatesOutputSchema as AdoptionListCandidatesOutputSchema, ReleaseInputSchema as AdoptionReleaseInputSchema, AdoptionStatusSchema, AgentLoadSummarySchema, AirQualitySensorStatusSchema, AlarmArmModeSchema, AlarmPanelStatusSchema, AlarmStateSchema, AlertSchema, AlertSeveritySchema, AlertSourceSchema, AlertStatusSchema, AmbientLightSensorStatusSchema, ApiKeyRecordSchema, ApiKeySummarySchema, ArchiveEntrySchema, ArchiveManifestSchema, AttachmentMediaTypeSchema, AttachmentSchema, AudioAnalysisResultSchema, AudioAnalysisSettingsSchema, AudioChunkInputSchema, AudioClassSummarySchema, AudioClassificationLabelSchema, AudioClassificationResultSchema, AudioCodecInfoSchema, AudioDecodeSessionConfigSchema, AudioEncodeSchema, AudioEncodeSessionConfigSchema, AudioEncodedChunkSchema, AudioEventSchema, AudioLevelSchema, AudioMetricsHistoryPointSchema, AudioMetricsHistorySchema, AudioMetricsSnapshotSchema, AudioPcmChunkSchema, AuthResultSchema, AutoUpdateSettingsSchema, AutomationControlStatusSchema, AvailableIntegrationTypeSchema, BACKEND_TO_FORMAT, BATTERY_DEVICE_PROFILE, BacklightModeSchema, BackupDestinationInfoSchema, BackupEntrySchema, BaseAddon, BaseDevice, BaseDeviceProvider, BatteryStatusSchema, BinaryStatusSchema, BoundingBoxSchema, BrightnessStatusSchema, AddInputSchema as BrokerAddInputSchema, BrokerAudioClientSchema, BrokerClientsSchema, BrokerConnectionDetailsSchema, BrokerConsumerAttributionSchema, BrokerConsumerKindSchema, BrokerDecodedClientSchema, BrokerEncodedClientSchema, GetStateInputSchema as BrokerGetStateInputSchema, BrokerInfoSchema, BrokerProviderInfoSchema, PublishInputSchema as BrokerPublishInputSchema, RegistryStatusSchema as BrokerRegistryStatusSchema, BrokerRtspClientSchema, BrokerStatsSchema, BrokerStatusEnum, BrokerStatusSchema, SubscribeInputSchema as BrokerSubscribeInputSchema, SubscribeResultSchema as BrokerSubscribeResultSchema, TestConnectionResultSchema as BrokerTestConnectionResultSchema, UnsubscribeInputSchema as BrokerUnsubscribeInputSchema, CAM_PROFILE_ORDER, CAPABILITY_NAMES, CAPABILITY_ROUTER_KEYS, CAP_NAMES_WITH_STATUS, CAP_NODE_PIN_CONTEXT_KEY, CAP_PROVIDER_KIND_MAP, COCO_80_LABELS, COCO_TO_MACRO, CamProfileSchema, CamStreamDescriptorSchema, CamStreamKindSchema, CamStreamResolutionSchema, CameraAssignmentStatusSchema, CameraAudioStatusSchema, CameraBrokerProfileSchema, CameraBrokerStatusSchema, CameraCredentialsSchema, CameraCredentialsStatusSchema, CameraDecoderShmSchema, CameraDecoderStatusSchema, CameraDetectionPhaseSchema, CameraDetectionProvisioningSchema, CameraDetectionProvisioningStateSchema, CameraDetectionStatusSchema, CameraMetricsSchema, CameraMetricsWithDeviceIdSchema, CameraMotionStatusSchema, CameraRecordingModeSchema, CameraRecordingStatusSchema, CameraSourceStatusSchema, CameraSourceStreamSchema, CameraStatusSchema, CameraStreamSchema, CandidateQueryFilterSchema, CapScopeSchema, CapabilityBindingsSchema, CarbonMonoxideStatusSchema, ChargingStatus, ClientNetworkStatsSchema, ClimateControlStatusSchema, ClipPlaybackSchema, ClipSchema, ClusterAddonNodeDeploymentSchema, ClusterAddonStatusEntrySchema, CollectionColumnSchema, CollectionIndexSchema, ColorStatusSchema, ConfigEntrySchema, ConfigSectionWithValuesSchema, ConfigTabDeclarationSchema, ConnectivityStatusSchema, ConsumableItemSchema, ConsumablesStatusSchema, ContactStatusSchema, ControlKindSchema, ControlStatusSchema, ConvertArtifactSchema, ConvertResultSchema, ConvertTargetSchema, CoverStateSchema, CoverStatusSchema, CreateApiKeyInputSchema, CreateApiKeyResultSchema, CreateIntegrationInputSchema, CreateScopedTokenInputSchema, CreateScopedTokenResultSchema, CreateUserInputSchema, CustomActionInputSchema, CustomModelDescriptorSchema, DATAPLANE_SECRET_HEADER, DEFAULT_ADDON_PLACEMENT, DEFAULT_AUDIO_ANALYZER_CONFIG, DEFAULT_DECODER_HWACCEL_CONFIG, DEFAULT_FEATURES, DEFAULT_RETENTION, DEFAULT_SCRUB_THUMBNAIL_PRESET, DEVICE_CAP_NAMES, DEVICE_PROFILES, DEVICE_SETTINGS_CONTRIBUTION_METHODS, DEVICE_STATUS_METHOD, DEVICE_TYPE_INFO, DayNightModeSchema, DayNightOptionsSchema, DayNightSettingsPatchSchema, DayNightStatusSchema, DecodedAudioChunkSchema, DecodedFrameSchema, DecoderSessionConfigSchema, DecoderStatsSchema, DeleteIntegrationResultSchema, DetectionSourceSchema, DeviceCodeSeveritySchema, DeviceConfig, DeviceDiscoveryStatusSchema, ExposeInputSchema as DeviceExportExposeInputSchema, DeviceExportStatusSchema, UnexposeInputSchema as DeviceExportUnexposeInputSchema, DeviceFeature, DeviceInfoSchema, DeviceLinkModeSchema, DeviceNetworkStatsSchema, DeviceRole, DeviceRuntimeState, DeviceStatusSchema, DeviceType, DiscoveredChildDeviceSchema, DiscoveredChildStatusSchema, DiscoveredDeviceSchema, DiscoveredTargetSchema, DisposerChain, DoorbellPressEventSchema, DoorbellStatusSchema, EVENT_KIND_BY_CAP, EVENT_PAD_MS, EXPRESSION_BUILTINS, EXPRESSION_BUILTIN_NAMES, EXPRESSION_COMPILE_CACHE_CAPACITY, EXPRESSION_IDENTIFIER_RE, EXPRESSION_INJECTED_NOW, ElementConfigStore, EmbeddingInfoSchema, EmbeddingResultSchema, EncodeProfileSchema, EncodedPacketSchema, EnrichedWidgetMetadataSchema, EnumSensorDateTimeFormatSchema, EnumSensorStatusSchema, EventCategory, EventEmitterStatusSchema, EventFireSchema, EventItemSchema, EventKindCategorySchema, EventKindDescriptorSchema, EventKindIconSchema, EventKindSchema, EventSourceType, ExportSetupFieldSchema, ExportSetupSchema, ExposedDeviceSchema, ExposureModeSchema, ExpressionEvalError, ExpressionParseError, FanControlStatusSchema, FanDirectionSchema, FeatureManifestSchema, FeatureProbeStatusSchema, FloodStatusSchema, FrameHandleFormatSchema, FrameHandleSchema, FrameInputSchema, GasStatusSchema, GetStreamWithCodecInputSchema, GlobalMetricsSchema, HF_BASE_URL, HF_REPO, HWACCEL_OPTIONS, HealthStatusSchema, HistoryPointSchema, HistoryResolutionEnum, HumidifierStatusSchema, HumiditySensorStatusSchema, HvacModeSchema, ImageRotateSchema, ImageSettingsOptionsSchema, ImageSettingsPatchSchema, ImageSettingsStatusSchema, ImageStatusSchema, IngestOwnerSchema, InstalledPackageSchema, IntegrationLiteSchema, IntegrationWithStateSchema, IntercomAbilitySchema, IntercomStatusSchema, KNOWN_CAP_NAMES, KeyEventSchema, LabelDefinitionSchema, LawnMowerActivitySchema, LawnMowerControlStatusSchema, LinkedDeviceSchema, LlmDefaultSchema, LlmDefaultSelectorSchema, LlmErrorCodeSchema, LlmGenerateBaseInputSchema, LlmGenerateErrSchema, LlmGenerateOkSchema, LlmGenerateResultSchema, LlmImageSchema, LlmNodeModelSchema, LlmProfileKindDescriptorSchema, LlmProfileKindSchema, LlmProfileSchema, LlmRuntimeCompleteInputSchema, LlmRuntimeDiskUsageSchema, LlmRuntimeNodeSchema, LlmRuntimeStatusSchema, LlmUsageRollupSchema, LlmUsageSchema, LocateSegmentResultSchema, LocationStatSchema, LockControlStatusSchema, LockStateSchema, LogEntrySchema, LogLevelSchema, LogStreamEntrySchema, LoginMethodContributionSchema, LoginStageEnum, MACRO_LABELS, MAX_EXPRESSION_AST_NODES, MAX_EXPRESSION_BINDINGS, MAX_EXPRESSION_CALL_ARGS, MAX_EXPRESSION_EVAL_STEPS, MAX_EXPRESSION_SOURCE_LENGTH, METHOD_ACCESS_MAP, MODEL_FORMATS, ManagedModelCatalogEntrySchema, ManagedModelRefSchema, ManagedRuntimeConfigSchema, MaskGridDimsSchema, MaskGridShapeSchema, MaskLineShapeSchema, MaskPointSchema, MaskPolygonShapeSchema, MaskPolygonVerticesSchema, MaskRectShapeSchema, MaskShapeKindSchema, MaskShapeSchema, MediaFileSchema, MediaPlayerRepeatSchema, MediaPlayerStateSchema, MediaPlayerStatusSchema, MeshPeerSchema, MeshStatusSchema, MethodAccessSchema, ModelCatalogEntrySchema, ModelConvertInputSchema, ModelConvertMetadataSchema, ModelDistributeInputSchema, ModelDistributeResultSchema, ModelExtraFileSchema, ModelFormatEntrySchema, ModelFormatsSchema, ModelSubstitutionSchema, ModelVariantGroupSchema, MotionAnalysisResultSchema, MotionEventSchema, MotionOnMotionChangedDataSchema, MotionRegionSchema, MotionSourceEnum, MotionSourcesSchema, MotionStatusSchema, MotionTriggerRuntimeStateSchema, MotionTriggerStatusSchema, MotionZoneOptionsSchema, MotionZonePatchSchema, MotionZoneRegionSchema, MotionZoneStatusSchema, StatusSchema as MqttBrokerStatusSchema, NativeDetectionSchema, NativeObjectClassEnum, NativeObjectDetectionRuntimeStateSchema, NativeObjectDetectionStatusSchema, NetworkAccessStatusSchema, NetworkAddressSchema, NetworkEndpointSchema, NotificationActionSchema, NotificationFormatSchema, NotificationHistoryEntrySchema, NotificationRuleSchema, NotificationSchema, NotifierStatusSchema, NumericSensorStatusSchema, OauthIntegrationDescriptorSchema, ObjectEventSchema, OrchestratorMetricsSchema, OsdOverlayKindEnum, OsdOverlayPatchSchema, OsdOverlaySchema, OsdPositionEnum, OsdStatusSchema, PET_FEEDER_MANUAL_FEED_MAX, PET_FEEDER_MANUAL_FEED_MIN, PIPELINE_FLOW_CAPABILITY_NAMES, PIPELINE_OWNER_CAPABILITY_NAMES, PROVIDER_KIND_CAP_NAMES, PYTHON_SCRIPT, PackageUpdateSchema, PackageVersionInfoSchema, PasskeyLoginMethodSchema, PasskeySummarySchema, PcmSampleFormatSchema, PerScopeBreakdownSchema, PetFeederStatusSchema, PickStreamPreferencesSchema, PickStreamRequirementsSchema, PickedCamStreamSchema, PipelineAssignmentSchema, PipelineDefaultStepSchema, PipelineEngineChoiceSchema, PipelineRunResultBridge, PipelineStepInputSchema, PipelineValidationIssueSchema, PipelineValidationResultSchema, PlaceholderReasonSchema, PolygonPointSchema, PowerMeterStatusSchema, PresenceStatusSchema, PressureSensorStatusSchema, PrivacyMaskOptionsSchema, PrivacyMaskPatchSchema, PrivacyMaskRegionSchema, PrivacyMaskShapeSchema, PrivacyMaskStatusSchema, ProfileRtspEntrySchema, ProfileSlotSchema, ProfileSlotStatusSchema, ProviderStatusSchema, PtzAutotrackRuntimeStateSchema, PtzAutotrackSettingsSchema, PtzAutotrackStatusSchema, PtzAutotrackTargetOptionSchema, PtzMoveCommandSchema, PtzPositionSchema, PtzPresetSchema, PtzStatusSchema, QueryFilterSchema, REACHABILITY_FAILURES_TO_OFFLINE, REACHABILITY_POLL_INTERVAL_MS, REACHABILITY_PROBE_TIMEOUT_MS, RECOGNITION_TYPES, RESERVED_BINDING_NAMES, RUNTIME_DEFAULTS, RUNTIME_TO_FORMAT, RawStateResultSchema, ReadSegmentBytesResultSchema, ReadinessRegistry, ReadinessTimeoutError, RecentTracksPageSchema, RecentTracksQueryInput, RecordingAvailabilitySchema, RecordingBandModeSchema, RecordingBandSchema, RecordingBandTriggersSchema, RecordingConfigSchema, RecordingDaysSchema, RecordingDeviceUsageSchema, RecordingLocationUsageSchema, RecordingManifestSchema, RecordingModeSchema, RecordingRangeSchema, RecordingRetentionSchema, RecordingRuleSchema, RecordingScheduleSchema, RecordingStatusSchema, RecordingStorageModeSchema, RecordingStorageUsageSchema, RecordingTriggersSchema, RecordingWeekdaySchema, RedirectLoginMethodSchema, RenderedAsSchema, ReportMotionInputSchema, RingBuffer, RtpSourceSchema, RtspRestreamEntrySchema, RunnerCameraConfigSchema, RunnerCameraDeviceUIFields, RunnerFrameSourceSchema, RunnerLocalLoadSchema, RunnerLocalMetricsSchema, SCOPE_PRESETS, SCRUB_THUMBNAIL_PRESETS, SCRUB_THUMBNAIL_PRESET_LABELS, SCRUB_THUMBNAIL_PRESET_ORDER, SOURCE_INFO_METADATA_KEY, STREAM_PROFILE_META, STREAM_QUALITY_LABELS, SUB_DETECTION_TYPES, SYSTEM_CAP_NAMES, SceneCheckSchema, SceneConditionSchema, SceneMonitorSchema, SceneMonitorStateSchema, SceneMonitorStatusSchema, SceneReferenceSchema, ScopedTokenSchema, ScopedTokenSummarySchema, ScoredObjectEventSchema, ScriptRunnerStatusSchema, ScrubThumbnailPresetSchema, SearchResultSchema, SendEmailInputSchema, SendEmailResultSchema, SendResultSchema, SensorEventSchema, ServerBootModeSchema, ServerPackageStatusSchema, ServerRollbackInfoSchema, ServerUpdateActionResultSchema, ServerUpdateCheckResultSchema, ServerUpdateStateSchema, SettingsPatchSchema, SettingsRecordSchema, SettingsSchemaWithValuesSchema, SettingsUpdateResultSchema, ShmRingStatsSchema, SmokeStatusSchema, SmtpStatusSchema, SnapshotImageSchema, SourceInfoSchema, SpatialDetectionSchema, SsoBridgeClaimsSchema, StartEmbeddedInputSchema, StationaryObjectSchema, AbortUploadInputSchema as StorageAbortUploadInputSchema, BeginDownloadInputSchema as StorageBeginDownloadInputSchema, BeginDownloadResultSchema as StorageBeginDownloadResultSchema, BeginUploadInputSchema as StorageBeginUploadInputSchema, BeginUploadResultSchema as StorageBeginUploadResultSchema, EndDownloadInputSchema as StorageEndDownloadInputSchema, FinalizeUploadInputSchema as StorageFinalizeUploadInputSchema, StorageLocationDeclarationSchema, StorageLocationRefSchema, StorageLocationSchema, StorageLocationTypeSchema, ProviderInfoSchema as StorageProviderInfoSchema, ReadChunkInputSchema as StorageReadChunkInputSchema, TestLocationResultSchema as StorageTestLocationResultSchema, WriteChunkInputSchema as StorageWriteChunkInputSchema, StreamCodecSchema, StreamFormatSchema, StreamNetworkStatsSchema, StreamParamsOptionsSchema, StreamParamsStatusSchema, StreamProfileConfigSchema, StreamProfileOptionsSchema, StreamProfilePatchSchema, StreamProfileSchema, StreamSourceEntrySchema, StreamSourceSchema, SubscribeAudioChunksInputSchema, SubscribeAudioChunksResultSchema, SubscribeFramesInputSchema, SubscribeFramesResultSchema, SwitchStatusSchema, SystemMetricsSchema, SystemMirror, TIMEZONES, TamperStatusSchema, TankStatusSchema, TargetKindCapsSchema, TargetKindLevelSchema, TargetKindSchema, TargetSchema, TemperatureSensorStatusSchema, TestConnectionResultSchema$1 as TestConnectionResultSchema, TestResultSchema, ToastSchema, TokenScopeSchema, TopologyNodeSchema, TopologyProcessSchema, TopologyServiceSchema, TrackCascadeCountsSchema, TrackEnvelopeSchema, TrackProjectionSchema, TrackSchema, TrackStateSchema, TrackZoneFilterSchema, TrackedDetectionSchema, TurnServerSchema, UNIT_TABLE, BrokerInfoSchema$1 as UnifiedBrokerInfoSchema, UnitConversionError, UpdateIntegrationInputSchema, UpdateStatusSchema, UpdateUserInputSchema, UserRecordSchema, UserSummarySchema, VacuumControlStatusSchema, VacuumStateSchema, ValveStateSchema, ValveStatusSchema, VibrationStatusSchema, VideoEncodeSchema, WELL_KNOWN_TABS, WELL_KNOWN_TAB_MAP, WaterHeaterStatusSchema, WeatherStatusSchema, WebrtcStreamChoiceSchema, WebrtcStreamTargetSchema, WhiteBalanceModeSchema, WidgetHostEnum, WidgetLoginMethodSchema, WidgetMetadataSchema, WidgetRemoteSchema, WidgetSizeEnum, YAMNET_TO_MACRO, ZoneKindEnum, ZoneRuleModeEnum, ZoneRuleSchema, ZoneRuleStageEnum, ZoneRulesArraySchema, ZoneSchema, ZoneScopeBreakdownSchema, accessoriesCapability, accessoryStableId, addonPagesCapability, addonPagesSourceCapability, addonRoutesCapability, addonSettingsCapability, addonWidgetsCapability, addonWidgetsSourceCapability, addonsCapability, adminUiCapability, advancedNotifierCapability, airQualitySensorCapability, alarmPanelCapability, alertsCapability, ambientLightSensorCapability, applyTransform, asBoolean, asJsonArray, asJsonObject, asNumber, asString, audioAnalysisCapability, audioAnalyzerCapability, audioCodecCapability, audioMetricsCapability, authProviderCapability, autoAssignProfiles, automationControlCapability, backupCapability, batteryCapability, bestLocationMatch, binaryCapability, bindAddonActions, brightnessCapability, brokerCapability, buildAddonRouteProvider, buildModelVariantGroups, buildStreamParamsConfigSchema, buttonCapability, cameraCredentialsCapability, cameraPipelineConfigCapability, cameraStreamsCapability, canConvertUnit, carbonMonoxideCapability, cellsToRects, classifyStream, classifyStreams, climateControlCapability, collectHydratedFieldEntries, collectHydratedFieldValues, colorCapability, compileExpression, compileExpressionSafe, connectivityCapability, consumablesCapability, contactCapability, controlCapability, convertUnit, cosineSimilarity, coverCapability, createDeviceProxy, createDurableState, createEvent, createExpressionScope, createLazyTrpcSource, createMirrorSource, createRuntimeStateBridge, createSliceHandle, createSystemProxy, customAction, customModelRegistryCapability, dayNightCapability, decoderCapability, defaultDeviceFor, defineCustomActions, describeModelVariant, detectionPipelineCapability, deviceAdoptionCapability, deviceCustomAction, deviceDiscoveryCapability, deviceExportCapability, deviceManagerCapability, deviceMatchesProfile, deviceOpsCapability, deviceProviderCapability, deviceStateCapability, deviceStatusCapability, doorbellCapability, embeddingEncoderCapability, emitDownForOwnedCaps, emitReadiness, encodeProfileFromStreamShape, enumSensorCapability, enumerateItemArrayFields, enumerateSchemaFields, errMsg, evaluateAst, evaluateLinkExpression, evaluateZoneRules, event, eventEmitterCapability, eventsCapability, expandCapMethods, extractNestedAddonId, extractSourceInfoFromMetadata, faceGalleryCapability, fanControlCapability, featureProbeCapability, filesystemBrowseCapability, findTimezone, floodCapability, formatForBackend, formatForRuntime, frameworkSwapConfirmSchema, frameworkSwapPackageSchema, gasCapability, getAudioMacroClassIds, getByPath, getCapsByProviderKind, hfModelUrl, htmlToText, humidifierCapability, humiditySensorCapability, hydrateSchema, imageCapability, imageSettingsCapability, integrationsCapability, intercomCapability, isAgentOnlyPlacement, isArrayOutputSchema, isCollectionArrayMethod, isDeployableToAgent, isDeviceConfigCap, isEvent, isObjectInput, isVoidInput, jobKindSchema, kebabToCamel, lawnMowerControlCapability, lifecycleJobSchema, lifecycleJobScopeSchema, lifecycleJobStateSchema, lifecycleTaskSchema, llmCapability, llmRuntimeCapability, localNetworkCapability, locationSimilarity, lockControlCapability, logDestinationCapability, loginMethodCapability, looseSchema, makeProfileBrokerId, makeSourceBrokerId, mapAudioLabelToMacro, markdownToHtmlLite, markdownToText, maskUrlCredentials, mediaPlayerCapability, mergeSourceInfo, meshNetworkCapability, method, metricsProviderCapability, migrateConfigToBands, modelConvertCapability, modelDistributorCapability, modelFormatForRuntime, motionCapability, motionDetectionCapability, motionTriggerCapability, motionZonesCapability, mqttBrokerCapability, nativeObjectDetectionCapability, networkAccessCapability, networkQualityCapability, nodePin, nodesCapability, normalizeAddonInitResult, normalizeUnit, notificationOutputCapability, notifierCapability, numericSensorCapability, oauthIntegrationCapability, objectInputDeclaresAddonId, osdCapability, parseCameraStreamConfig, parseExpression, parseJsonArray, parseJsonObject, parseJsonUnknown, parseProfileBrokerId, parseStreamParamsFormPatch, pendingFrameworkSwapSchema, petFeederCapability, pickPreferredRtspEntry, pipelineAnalyticsCapability, pipelineExecutorCapability, pipelineOrchestratorCapability, pipelineRunnerCapability, plateGalleryCapability, platformProbeCapability, powerMeterCapability, prepareNotification, presenceCapability, pressureSensorCapability, privacyMaskCapability, procedureAuthKey, ptzAutotrackCapability, ptzCapability, pythonScriptForBackend, readNodePin, readinessKey, rebootCapability, recordingCapability, rectsToCells, requiresPython, resolveAddonExecution, resolveAddonGroup, resolveAddonPlacement, resolveAddonRuntime, resolveCapMount, resolveDetectionRuntime, resolveDeviceProfile, resolveFormat, resolveHydratedFieldValue, resolveModelFormat, resolveRunnerId, resolveScrubThumbnailGeometry, resolveVariantModelId, runInferenceStep, runtimeDevices, sceneMonitorCapability, scopeKey, scoreRuntimes, scriptRunnerCapability, selectAssignedProfileSlots, serverManagementCapability, setByPath, settingsStoreCapability, sleep, sleepCancellable, smokeCapability, smtpProviderCapability, snapshotCapability, ssoBridgeCapability, startReachabilityPoll, storageCapability, storageEvictableCapability, storageProviderCapability, streamBrokerCapability, streamCatalogCapability, streamParamsCapability, streamPixels, streamQualityLabel, supportedRuntimes, switchCapability, synthesizeSourceInfo, systemCapability, tamperCapability, taskLogEntrySchema, taskPhaseSchema, taskTargetSchema, temperatureSensorCapability, textToHtml, toDeviceSummary, toExpressionValue, toStreamSourceEntry, toastCapability, tokenize, transcodeBody, tryConvertUnit, turnProviderCapability, unitDimension, unitsForDimension, updateCapability, userManagementCapability, userPasskeysCapability, vacuumControlCapability, validateExpressionSource, valveCapability, vibrationCapability, videoclipsCapability, viewerUiCapability, waterHeaterCapability, weatherCapability, webrtcClientHintsSchema, webrtcSessionCapability, wiringAddonHealthSchema, wiringHealthSnapshotSchema, wiringNodeHealthSchema, wiringProbeKindSchema, wiringProbeResultSchema, zodEntriesToConfigUI, zoneAnalyticsCapability, zoneRulesCapability, zonesCapability };
|
|
@@ -60,11 +60,14 @@ export interface IReadinessRegistry<TCapName extends string = string> {
|
|
|
60
60
|
onReadyState(capName: TCapName, scope: ReadinessScope, handler: IReadinessHandler): () => void;
|
|
61
61
|
/**
|
|
62
62
|
* Hydrate the snapshot from an authoritative source (typically the
|
|
63
|
-
* hub's `$readiness.getSnapshot` action)
|
|
64
|
-
*
|
|
65
|
-
*
|
|
66
|
-
*
|
|
67
|
-
*
|
|
63
|
+
* hub's `$readiness.getSnapshot` action) — a RECONCILE, not an
|
|
64
|
+
* add-only merge. Unseen keys are added; already-seen keys are
|
|
65
|
+
* ADVANCED when the authoritative record carries a new generation or
|
|
66
|
+
* a forward same-generation state move (starting → ready → down).
|
|
67
|
+
* Same-generation regressions and records this process is itself
|
|
68
|
+
* authoritative for are skipped. For each applied entry a one-shot
|
|
69
|
+
* transition is dispatched to matching subscriptions so pending
|
|
70
|
+
* `awaitReady` callers unblock without waiting for a fresh delta.
|
|
68
71
|
*/
|
|
69
72
|
hydrate(records: readonly IReadinessRegistryRecord[]): void;
|
|
70
73
|
/**
|
|
@@ -143,6 +143,53 @@ export declare const RecordingRetentionSchema: z.ZodObject<{
|
|
|
143
143
|
maxSizeGb: z.ZodOptional<z.ZodNumber>;
|
|
144
144
|
}, z.core.$strip>;
|
|
145
145
|
export type RecordingRetention = z.infer<typeof RecordingRetentionSchema>;
|
|
146
|
+
/**
|
|
147
|
+
* Scrub-thumbnail fidelity preset — the single per-camera selector bundling the
|
|
148
|
+
* sprite tile RESOLUTION + JPEG QUALITY the recorder packs timeline-scrub
|
|
149
|
+
* previews at. Five graduated steps; absent on a config = `standard` (the
|
|
150
|
+
* shipped default, matching `sheet-geometry`/`sheet-composer`).
|
|
151
|
+
*
|
|
152
|
+
* Existing sheets are IMMUTABLE — a changed preset applies to NEW windows only.
|
|
153
|
+
* Each window's index sidecar carries its own tile dims, so a camera whose
|
|
154
|
+
* preset changed over time renders every historical window at the dims it was
|
|
155
|
+
* written with.
|
|
156
|
+
*/
|
|
157
|
+
export declare const ScrubThumbnailPresetSchema: z.ZodEnum<{
|
|
158
|
+
standard: "standard";
|
|
159
|
+
high: "high";
|
|
160
|
+
low: "low";
|
|
161
|
+
max: "max";
|
|
162
|
+
minimal: "minimal";
|
|
163
|
+
}>;
|
|
164
|
+
export type ScrubThumbnailPreset = z.infer<typeof ScrubThumbnailPresetSchema>;
|
|
165
|
+
/** Resolved sprite geometry + encode quality for a scrub-thumbnail preset. */
|
|
166
|
+
export interface ScrubThumbnailGeometry {
|
|
167
|
+
/** Tile width in px (16:9). */
|
|
168
|
+
readonly tileWidth: number;
|
|
169
|
+
/** Tile height in px (16:9). */
|
|
170
|
+
readonly tileHeight: number;
|
|
171
|
+
/** Sheet JPEG quality, 1..100 (higher = better). */
|
|
172
|
+
readonly quality: number;
|
|
173
|
+
}
|
|
174
|
+
/** The default preset when a config omits `scrubThumbnails`. */
|
|
175
|
+
export declare const DEFAULT_SCRUB_THUMBNAIL_PRESET: ScrubThumbnailPreset;
|
|
176
|
+
/**
|
|
177
|
+
* Preset → tile geometry + JPEG quality. Every step is 16:9; the graduated
|
|
178
|
+
* ladder trades sheet size (and remote fetch cost) for scrub crispness.
|
|
179
|
+
* `standard` matches the shipped `sheet-geometry`/`sheet-composer` defaults
|
|
180
|
+
* (480×270 q72), so an unset config is byte-identical to today. The map is
|
|
181
|
+
* strictly monotone in resolution AND quality across the ordered steps.
|
|
182
|
+
*/
|
|
183
|
+
export declare const SCRUB_THUMBNAIL_PRESETS: Record<ScrubThumbnailPreset, ScrubThumbnailGeometry>;
|
|
184
|
+
/** Human labels for each preset (resolution-tagged), for settings UIs. */
|
|
185
|
+
export declare const SCRUB_THUMBNAIL_PRESET_LABELS: Record<ScrubThumbnailPreset, string>;
|
|
186
|
+
/** Ordered low→high so a UI can render the ladder in graduated order. */
|
|
187
|
+
export declare const SCRUB_THUMBNAIL_PRESET_ORDER: readonly ScrubThumbnailPreset[];
|
|
188
|
+
/**
|
|
189
|
+
* Resolve the geometry for a recording config's scrub-thumbnail preset,
|
|
190
|
+
* defaulting to `standard` when unset. Pure — no I/O.
|
|
191
|
+
*/
|
|
192
|
+
export declare function resolveScrubThumbnailGeometry(preset: ScrubThumbnailPreset | undefined): ScrubThumbnailGeometry;
|
|
146
193
|
/**
|
|
147
194
|
* The full per-camera recording intent — the wire shape of a RecordingTarget.
|
|
148
195
|
*
|
|
@@ -224,5 +271,12 @@ export declare const RecordingConfigSchema: z.ZodObject<{
|
|
|
224
271
|
maxAgeDays: z.ZodOptional<z.ZodNumber>;
|
|
225
272
|
maxSizeGb: z.ZodOptional<z.ZodNumber>;
|
|
226
273
|
}, z.core.$strip>>;
|
|
274
|
+
scrubThumbnails: z.ZodOptional<z.ZodEnum<{
|
|
275
|
+
standard: "standard";
|
|
276
|
+
high: "high";
|
|
277
|
+
low: "low";
|
|
278
|
+
max: "max";
|
|
279
|
+
minimal: "minimal";
|
|
280
|
+
}>>;
|
|
227
281
|
}, z.core.$strip>;
|
|
228
282
|
export type RecordingConfig = z.infer<typeof RecordingConfigSchema>;
|
|
@@ -98,19 +98,42 @@ export declare class ReadinessRegistry implements IReadinessRegistry {
|
|
|
98
98
|
*/
|
|
99
99
|
getSnapshotForTransport(): readonly ReadinessRecord[];
|
|
100
100
|
/**
|
|
101
|
-
* Hydrate the snapshot from an authoritative source
|
|
102
|
-
*
|
|
103
|
-
*
|
|
104
|
-
*
|
|
105
|
-
*
|
|
106
|
-
*
|
|
101
|
+
* Hydrate the snapshot from an authoritative source — a RECONCILE, not
|
|
102
|
+
* an add-only merge (D8: readiness events are telemetry and may be
|
|
103
|
+
* lost; the on-reconnect/periodic snapshot re-pull is the repair path,
|
|
104
|
+
* so it MUST be able to advance a stale record — the 2026-07-17
|
|
105
|
+
* "still awaiting platform-probe forever" wedge was this method
|
|
106
|
+
* skipping every already-seen key).
|
|
107
107
|
*
|
|
108
|
-
*
|
|
109
|
-
* derived from
|
|
110
|
-
*
|
|
111
|
-
*
|
|
108
|
+
* - **Unseen keys** are added (epoch 1 — mirrors the value the
|
|
109
|
+
* consumer would have derived from the first observed `ready`).
|
|
110
|
+
* - **Existing keys** are UPDATED when the authoritative record
|
|
111
|
+
* carries a different generation (producer restart / synthetic-down
|
|
112
|
+
* superseded — epoch bumps on a new-generation `ready`, mirroring
|
|
113
|
+
* `ingest`), or a FORWARD state move within the same generation
|
|
114
|
+
* (`starting → ready → down`; within one producer generation a
|
|
115
|
+
* snapshot can only be ahead of a lost delta, never behind it).
|
|
116
|
+
* - **Never a same-generation regress** — a snapshot pulled just
|
|
117
|
+
* before a live delta landed must not un-ready a record (the next
|
|
118
|
+
* reconcile round converges it anyway).
|
|
119
|
+
* - **Never a record this process is authoritative for** — node-scoped
|
|
120
|
+
* records for our own nodeId, and device/global records we emitted,
|
|
121
|
+
* keep local truth (an authority's stale copy of OUR record must
|
|
122
|
+
* not regress us).
|
|
123
|
+
*
|
|
124
|
+
* Every applied entry dispatches a one-shot transition to matching
|
|
125
|
+
* subscriptions so pending `awaitReady` callers unblock without having
|
|
126
|
+
* to wait for a fresh event.
|
|
112
127
|
*/
|
|
113
128
|
hydrate(records: readonly ReadinessRecord[]): void;
|
|
129
|
+
/**
|
|
130
|
+
* True when THIS process is the origin authority for `record` — a
|
|
131
|
+
* snapshot pulled from elsewhere must never overwrite it:
|
|
132
|
+
* - node-scoped records whose `scope.nodeId` is our own node id
|
|
133
|
+
* (this process — or a child bridged onto our bus — emits them);
|
|
134
|
+
* - device/global-scoped records whose latest transition WE emitted.
|
|
135
|
+
*/
|
|
136
|
+
private isLocallyAuthoritative;
|
|
114
137
|
/** Shallow copy of the full snapshot — mainly for diagnostics/tests. */
|
|
115
138
|
getAll(): ReadonlyMap<string, ReadinessRecord>;
|
|
116
139
|
/**
|
|
@@ -1487,6 +1487,19 @@ function scopeKey(scope) {
|
|
|
1487
1487
|
case "device": return `device:${scope.deviceId}`;
|
|
1488
1488
|
}
|
|
1489
1489
|
}
|
|
1490
|
+
/**
|
|
1491
|
+
* Producer transition order within ONE generation: `starting → ready →
|
|
1492
|
+
* down`. Used by `hydrate` to accept only forward moves for
|
|
1493
|
+
* same-generation snapshot records (a snapshot can be ahead of a lost
|
|
1494
|
+
* delta, never behind it, within one producer generation).
|
|
1495
|
+
*/
|
|
1496
|
+
function stateRank(state) {
|
|
1497
|
+
switch (state) {
|
|
1498
|
+
case "starting": return 0;
|
|
1499
|
+
case "ready": return 1;
|
|
1500
|
+
case "down": return 2;
|
|
1501
|
+
}
|
|
1502
|
+
}
|
|
1490
1503
|
function scopesEqual(a, b) {
|
|
1491
1504
|
if (a.type !== b.type) return false;
|
|
1492
1505
|
if (a.type === "global" || b.type === "global") return true;
|
|
@@ -1537,43 +1550,70 @@ var ReadinessRegistry = class {
|
|
|
1537
1550
|
return Array.from(this.snapshot.values());
|
|
1538
1551
|
}
|
|
1539
1552
|
/**
|
|
1540
|
-
* Hydrate the snapshot from an authoritative source
|
|
1541
|
-
*
|
|
1542
|
-
*
|
|
1543
|
-
*
|
|
1544
|
-
*
|
|
1545
|
-
*
|
|
1553
|
+
* Hydrate the snapshot from an authoritative source — a RECONCILE, not
|
|
1554
|
+
* an add-only merge (D8: readiness events are telemetry and may be
|
|
1555
|
+
* lost; the on-reconnect/periodic snapshot re-pull is the repair path,
|
|
1556
|
+
* so it MUST be able to advance a stale record — the 2026-07-17
|
|
1557
|
+
* "still awaiting platform-probe forever" wedge was this method
|
|
1558
|
+
* skipping every already-seen key).
|
|
1559
|
+
*
|
|
1560
|
+
* - **Unseen keys** are added (epoch 1 — mirrors the value the
|
|
1561
|
+
* consumer would have derived from the first observed `ready`).
|
|
1562
|
+
* - **Existing keys** are UPDATED when the authoritative record
|
|
1563
|
+
* carries a different generation (producer restart / synthetic-down
|
|
1564
|
+
* superseded — epoch bumps on a new-generation `ready`, mirroring
|
|
1565
|
+
* `ingest`), or a FORWARD state move within the same generation
|
|
1566
|
+
* (`starting → ready → down`; within one producer generation a
|
|
1567
|
+
* snapshot can only be ahead of a lost delta, never behind it).
|
|
1568
|
+
* - **Never a same-generation regress** — a snapshot pulled just
|
|
1569
|
+
* before a live delta landed must not un-ready a record (the next
|
|
1570
|
+
* reconcile round converges it anyway).
|
|
1571
|
+
* - **Never a record this process is authoritative for** — node-scoped
|
|
1572
|
+
* records for our own nodeId, and device/global records we emitted,
|
|
1573
|
+
* keep local truth (an authority's stale copy of OUR record must
|
|
1574
|
+
* not regress us).
|
|
1546
1575
|
*
|
|
1547
|
-
*
|
|
1548
|
-
*
|
|
1549
|
-
*
|
|
1550
|
-
* first `ready` event directly.
|
|
1576
|
+
* Every applied entry dispatches a one-shot transition to matching
|
|
1577
|
+
* subscriptions so pending `awaitReady` callers unblock without having
|
|
1578
|
+
* to wait for a fresh event.
|
|
1551
1579
|
*/
|
|
1552
1580
|
hydrate(records) {
|
|
1553
1581
|
const now = this.now();
|
|
1554
1582
|
for (const record of records) {
|
|
1555
1583
|
const key = readinessKey(record.capName, record.scope);
|
|
1556
|
-
|
|
1584
|
+
const prev = this.snapshot.get(key) ?? null;
|
|
1585
|
+
let epoch;
|
|
1586
|
+
let durationInPrevState;
|
|
1587
|
+
if (prev !== null) {
|
|
1588
|
+
if (this.isLocallyAuthoritative(prev)) continue;
|
|
1589
|
+
const sameGeneration = prev.generation === record.generation;
|
|
1590
|
+
if (sameGeneration && stateRank(record.state) <= stateRank(prev.state)) continue;
|
|
1591
|
+
epoch = !sameGeneration && record.state === "ready" ? prev.epoch + 1 : prev.epoch;
|
|
1592
|
+
durationInPrevState = Math.max(0, now - prev.lastChange);
|
|
1593
|
+
} else {
|
|
1594
|
+
epoch = 1;
|
|
1595
|
+
durationInPrevState = 0;
|
|
1596
|
+
}
|
|
1557
1597
|
const hydrated = {
|
|
1558
1598
|
capName: record.capName,
|
|
1559
1599
|
scope: record.scope,
|
|
1560
1600
|
state: record.state,
|
|
1561
1601
|
generation: record.generation,
|
|
1562
|
-
epoch
|
|
1602
|
+
epoch,
|
|
1563
1603
|
lastChange: now,
|
|
1564
1604
|
sourceNodeId: record.sourceNodeId
|
|
1565
1605
|
};
|
|
1566
1606
|
this.snapshot.set(key, hydrated);
|
|
1567
|
-
if (this.logger) this.logger.debug(`readiness: ${record.capName} (${scopeKey(record.scope)}) → ${record.state} (hydrated, gen=${record.generation.slice(0, 6)})`);
|
|
1607
|
+
if (this.logger) this.logger.debug(`readiness: ${record.capName} (${scopeKey(record.scope)}) → ${record.state} (hydrated${prev !== null ? " update" : ""}, gen=${record.generation.slice(0, 6)})`);
|
|
1568
1608
|
const transition = {
|
|
1569
1609
|
capName: record.capName,
|
|
1570
1610
|
scope: record.scope,
|
|
1571
1611
|
state: record.state,
|
|
1572
|
-
epoch
|
|
1612
|
+
epoch,
|
|
1573
1613
|
generation: record.generation,
|
|
1574
1614
|
sourceNodeId: "hydrated",
|
|
1575
1615
|
ts: now,
|
|
1576
|
-
durationInPrevState
|
|
1616
|
+
durationInPrevState
|
|
1577
1617
|
};
|
|
1578
1618
|
for (const sub of this.subscriptions) {
|
|
1579
1619
|
if (sub.capName !== record.capName) continue;
|
|
@@ -1586,6 +1626,17 @@ var ReadinessRegistry = class {
|
|
|
1586
1626
|
}
|
|
1587
1627
|
}
|
|
1588
1628
|
}
|
|
1629
|
+
/**
|
|
1630
|
+
* True when THIS process is the origin authority for `record` — a
|
|
1631
|
+
* snapshot pulled from elsewhere must never overwrite it:
|
|
1632
|
+
* - node-scoped records whose `scope.nodeId` is our own node id
|
|
1633
|
+
* (this process — or a child bridged onto our bus — emits them);
|
|
1634
|
+
* - device/global-scoped records whose latest transition WE emitted.
|
|
1635
|
+
*/
|
|
1636
|
+
isLocallyAuthoritative(record) {
|
|
1637
|
+
if (record.scope.type === "node") return record.scope.nodeId === this.sourceNodeId;
|
|
1638
|
+
return record.sourceNodeId === this.sourceNodeId;
|
|
1639
|
+
}
|
|
1589
1640
|
/** Shallow copy of the full snapshot — mainly for diagnostics/tests. */
|
|
1590
1641
|
getAll() {
|
|
1591
1642
|
return new Map(this.snapshot);
|
|
@@ -1487,6 +1487,19 @@ function scopeKey(scope) {
|
|
|
1487
1487
|
case "device": return `device:${scope.deviceId}`;
|
|
1488
1488
|
}
|
|
1489
1489
|
}
|
|
1490
|
+
/**
|
|
1491
|
+
* Producer transition order within ONE generation: `starting → ready →
|
|
1492
|
+
* down`. Used by `hydrate` to accept only forward moves for
|
|
1493
|
+
* same-generation snapshot records (a snapshot can be ahead of a lost
|
|
1494
|
+
* delta, never behind it, within one producer generation).
|
|
1495
|
+
*/
|
|
1496
|
+
function stateRank(state) {
|
|
1497
|
+
switch (state) {
|
|
1498
|
+
case "starting": return 0;
|
|
1499
|
+
case "ready": return 1;
|
|
1500
|
+
case "down": return 2;
|
|
1501
|
+
}
|
|
1502
|
+
}
|
|
1490
1503
|
function scopesEqual(a, b) {
|
|
1491
1504
|
if (a.type !== b.type) return false;
|
|
1492
1505
|
if (a.type === "global" || b.type === "global") return true;
|
|
@@ -1537,43 +1550,70 @@ var ReadinessRegistry = class {
|
|
|
1537
1550
|
return Array.from(this.snapshot.values());
|
|
1538
1551
|
}
|
|
1539
1552
|
/**
|
|
1540
|
-
* Hydrate the snapshot from an authoritative source
|
|
1541
|
-
*
|
|
1542
|
-
*
|
|
1543
|
-
*
|
|
1544
|
-
*
|
|
1545
|
-
*
|
|
1553
|
+
* Hydrate the snapshot from an authoritative source — a RECONCILE, not
|
|
1554
|
+
* an add-only merge (D8: readiness events are telemetry and may be
|
|
1555
|
+
* lost; the on-reconnect/periodic snapshot re-pull is the repair path,
|
|
1556
|
+
* so it MUST be able to advance a stale record — the 2026-07-17
|
|
1557
|
+
* "still awaiting platform-probe forever" wedge was this method
|
|
1558
|
+
* skipping every already-seen key).
|
|
1559
|
+
*
|
|
1560
|
+
* - **Unseen keys** are added (epoch 1 — mirrors the value the
|
|
1561
|
+
* consumer would have derived from the first observed `ready`).
|
|
1562
|
+
* - **Existing keys** are UPDATED when the authoritative record
|
|
1563
|
+
* carries a different generation (producer restart / synthetic-down
|
|
1564
|
+
* superseded — epoch bumps on a new-generation `ready`, mirroring
|
|
1565
|
+
* `ingest`), or a FORWARD state move within the same generation
|
|
1566
|
+
* (`starting → ready → down`; within one producer generation a
|
|
1567
|
+
* snapshot can only be ahead of a lost delta, never behind it).
|
|
1568
|
+
* - **Never a same-generation regress** — a snapshot pulled just
|
|
1569
|
+
* before a live delta landed must not un-ready a record (the next
|
|
1570
|
+
* reconcile round converges it anyway).
|
|
1571
|
+
* - **Never a record this process is authoritative for** — node-scoped
|
|
1572
|
+
* records for our own nodeId, and device/global records we emitted,
|
|
1573
|
+
* keep local truth (an authority's stale copy of OUR record must
|
|
1574
|
+
* not regress us).
|
|
1546
1575
|
*
|
|
1547
|
-
*
|
|
1548
|
-
*
|
|
1549
|
-
*
|
|
1550
|
-
* first `ready` event directly.
|
|
1576
|
+
* Every applied entry dispatches a one-shot transition to matching
|
|
1577
|
+
* subscriptions so pending `awaitReady` callers unblock without having
|
|
1578
|
+
* to wait for a fresh event.
|
|
1551
1579
|
*/
|
|
1552
1580
|
hydrate(records) {
|
|
1553
1581
|
const now = this.now();
|
|
1554
1582
|
for (const record of records) {
|
|
1555
1583
|
const key = readinessKey(record.capName, record.scope);
|
|
1556
|
-
|
|
1584
|
+
const prev = this.snapshot.get(key) ?? null;
|
|
1585
|
+
let epoch;
|
|
1586
|
+
let durationInPrevState;
|
|
1587
|
+
if (prev !== null) {
|
|
1588
|
+
if (this.isLocallyAuthoritative(prev)) continue;
|
|
1589
|
+
const sameGeneration = prev.generation === record.generation;
|
|
1590
|
+
if (sameGeneration && stateRank(record.state) <= stateRank(prev.state)) continue;
|
|
1591
|
+
epoch = !sameGeneration && record.state === "ready" ? prev.epoch + 1 : prev.epoch;
|
|
1592
|
+
durationInPrevState = Math.max(0, now - prev.lastChange);
|
|
1593
|
+
} else {
|
|
1594
|
+
epoch = 1;
|
|
1595
|
+
durationInPrevState = 0;
|
|
1596
|
+
}
|
|
1557
1597
|
const hydrated = {
|
|
1558
1598
|
capName: record.capName,
|
|
1559
1599
|
scope: record.scope,
|
|
1560
1600
|
state: record.state,
|
|
1561
1601
|
generation: record.generation,
|
|
1562
|
-
epoch
|
|
1602
|
+
epoch,
|
|
1563
1603
|
lastChange: now,
|
|
1564
1604
|
sourceNodeId: record.sourceNodeId
|
|
1565
1605
|
};
|
|
1566
1606
|
this.snapshot.set(key, hydrated);
|
|
1567
|
-
if (this.logger) this.logger.debug(`readiness: ${record.capName} (${scopeKey(record.scope)}) → ${record.state} (hydrated, gen=${record.generation.slice(0, 6)})`);
|
|
1607
|
+
if (this.logger) this.logger.debug(`readiness: ${record.capName} (${scopeKey(record.scope)}) → ${record.state} (hydrated${prev !== null ? " update" : ""}, gen=${record.generation.slice(0, 6)})`);
|
|
1568
1608
|
const transition = {
|
|
1569
1609
|
capName: record.capName,
|
|
1570
1610
|
scope: record.scope,
|
|
1571
1611
|
state: record.state,
|
|
1572
|
-
epoch
|
|
1612
|
+
epoch,
|
|
1573
1613
|
generation: record.generation,
|
|
1574
1614
|
sourceNodeId: "hydrated",
|
|
1575
1615
|
ts: now,
|
|
1576
|
-
durationInPrevState
|
|
1616
|
+
durationInPrevState
|
|
1577
1617
|
};
|
|
1578
1618
|
for (const sub of this.subscriptions) {
|
|
1579
1619
|
if (sub.capName !== record.capName) continue;
|
|
@@ -1586,6 +1626,17 @@ var ReadinessRegistry = class {
|
|
|
1586
1626
|
}
|
|
1587
1627
|
}
|
|
1588
1628
|
}
|
|
1629
|
+
/**
|
|
1630
|
+
* True when THIS process is the origin authority for `record` — a
|
|
1631
|
+
* snapshot pulled from elsewhere must never overwrite it:
|
|
1632
|
+
* - node-scoped records whose `scope.nodeId` is our own node id
|
|
1633
|
+
* (this process — or a child bridged onto our bus — emits them);
|
|
1634
|
+
* - device/global-scoped records whose latest transition WE emitted.
|
|
1635
|
+
*/
|
|
1636
|
+
isLocallyAuthoritative(record) {
|
|
1637
|
+
if (record.scope.type === "node") return record.scope.nodeId === this.sourceNodeId;
|
|
1638
|
+
return record.sourceNodeId === this.sourceNodeId;
|
|
1639
|
+
}
|
|
1589
1640
|
/** Shallow copy of the full snapshot — mainly for diagnostics/tests. */
|
|
1590
1641
|
getAll() {
|
|
1591
1642
|
return new Map(this.snapshot);
|