@camstack/addon-post-analysis 1.2.621 → 1.2.623

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.
Files changed (15) hide show
  1. package/THIRD_PARTY_MODELS.md +2 -2
  2. package/dist/{clip-model-registry-BBzoIoKO.mjs → clip-model-registry-C58fyELd.mjs} +412 -66
  3. package/dist/{clip-model-registry-CcgzpELQ.js → clip-model-registry-KKT83z9U.js} +429 -65
  4. package/dist/embedding-encoder/index.js +1 -1
  5. package/dist/embedding-encoder/index.mjs +1 -1
  6. package/dist/pipeline-analytics/_stub.js +2 -2
  7. package/dist/pipeline-analytics/{_virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_analytics_widgets-CkNZAMox.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_analytics_widgets-_ahOxwNA.mjs} +3 -3
  8. package/dist/pipeline-analytics/_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-V5-s2hmZ.mjs +26 -0
  9. package/dist/pipeline-analytics/{_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-CssYIiFD.mjs → _virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-B1HZu0i3.mjs} +1 -1
  10. package/dist/pipeline-analytics/{hostInit-wlnNaaYX.mjs → hostInit-CdRVx4vF.mjs} +3 -3
  11. package/dist/pipeline-analytics/index.js +888 -155
  12. package/dist/pipeline-analytics/index.mjs +888 -155
  13. package/dist/pipeline-analytics/remoteEntry.js +1 -1
  14. package/package.json +1 -1
  15. package/dist/pipeline-analytics/_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-BSMSev-b.mjs +0 -26
@@ -1,5 +1,5 @@
1
1
  import { createHash } from "node:crypto";
2
- //#region ../types/dist/event-category-DOl51-Ij.mjs
2
+ //#region ../types/dist/event-category-BfJwUd2S.mjs
3
3
  var EventCategory = /* @__PURE__ */ function(EventCategory) {
4
4
  EventCategory["SystemBoot"] = "system.boot";
5
5
  EventCategory["SystemAddonsReady"] = "system.addons-ready";
@@ -316,6 +316,15 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
316
316
  */
317
317
  EventCategory["PipelineDetectionBlind"] = "pipeline.detection-blind";
318
318
  /**
319
+ * A camera's motion source has fired constantly with no subject for an hour
320
+ * (motion duty or session count over the bar, zero detections) — it is not
321
+ * blind, its motion zones or sensitivity want tuning (D907). Paired with
322
+ * {@link PipelineMotionCalm}.
323
+ */
324
+ EventCategory["PipelineMotionNoisy"] = "pipeline.motion-noisy";
325
+ /** The recovery edge of {@link PipelineMotionNoisy}: the motion fell back, or a detection arrived. */
326
+ EventCategory["PipelineMotionCalm"] = "pipeline.motion-calm";
327
+ /**
319
328
  * Per-camera pipeline config was mutated by the orchestrator
320
329
  * (3-level settings change via `setAgentAddonDefaults` /
321
330
  * `setCameraStepToggle` / `setCameraPipelineForAgent` or a
@@ -687,6 +696,14 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
687
696
  EventCategory["BackupRestored"] = "backup.restored";
688
697
  EventCategory["NotificationDispatched"] = "notification.dispatched";
689
698
  EventCategory["NotificationFailed"] = "notification.failed";
699
+ /**
700
+ * A notification rule that cannot work (D905): its stored row does not load,
701
+ * or it still names a device / delivery target the prune CONFIRMED deleted.
702
+ * One edge per rule per distinct set of reasons; never on an unanswered read.
703
+ */
704
+ EventCategory["NotificationRuleBroken"] = "notification.rule-broken";
705
+ /** The clear of {@link NotificationRuleBroken}: the rule loads and names nothing deleted. */
706
+ EventCategory["NotificationRuleRepaired"] = "notification.rule-repaired";
690
707
  EventCategory["DeviceUpdated"] = "device.updated";
691
708
  /**
692
709
  * Transport-level connectivity. Emitted by the device driver when
@@ -5612,7 +5629,7 @@ var ZodIssueCode = {
5612
5629
  var ZodFirstPartyTypeKind;
5613
5630
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
5614
5631
  //#endregion
5615
- //#region ../types/dist/sleep-_sV1BE2f.mjs
5632
+ //#region ../types/dist/sleep-DJFUfKvA.mjs
5616
5633
  /**
5617
5634
  * The audio chunk plane's byte format, and the ONE expansion from a coded
5618
5635
  * window to float samples (D455).
@@ -8204,7 +8221,7 @@ var EntryDescriptorSchema = object({
8204
8221
  /** JSON Schema of the entry body; `secret: true` marks a password field. */
8205
8222
  fields: record(string(), unknown())
8206
8223
  }).strict();
8207
- /** What crosses the wire and sits in the engine's catalog: JSON only, no Zod. */
8224
+ /** What crosses the wire from an addon: JSON only, no Zod. An unknown key is refused. */
8208
8225
  var RecordKindDeclarationSchema = object({
8209
8226
  database: _enum(RECORD_DATABASES).default("settings"),
8210
8227
  class: _enum(RECORD_CLASSES),
@@ -8223,14 +8240,6 @@ var RecordKindDeclarationSchema = object({
8223
8240
  secretPaths: array(string().min(1)).default([]),
8224
8241
  /** The id key of each array that carries a secret (`{ headers: 'name' }`). */
8225
8242
  secretArrayKeys: record(string(), string()).default({}),
8226
- /**
8227
- * RETIRED (D900): the legacy table a kind adopted from during the records
8228
- * migration. Nothing declares it any more and nothing reads it; the schema
8229
- * still ACCEPTS it because the catalog rows the migration wrote carry it
8230
- * (an orphaned kind is never redeclared) and an addon built before the
8231
- * removal still sends it. Never set it.
8232
- */
8233
- adoptsFrom: string().min(1).optional(),
8234
8243
  /** Kinds that must agree through `transact` sit in one file under one family name. */
8235
8244
  transactFamily: string().min(1).optional(),
8236
8245
  entry: EntryDescriptorSchema.optional()
@@ -14132,17 +14141,6 @@ object({
14132
14141
  createdAt: number(),
14133
14142
  updatedAt: number()
14134
14143
  });
14135
- object({
14136
- id: string(),
14137
- label: string(),
14138
- isAdmin: boolean().default(false),
14139
- allowedProviders: AllowedProviderSchema,
14140
- allowedDevices: AllowedDevicesSchema,
14141
- tokenHash: string(),
14142
- tokenPrefix: string(),
14143
- createdAt: number(),
14144
- lastUsedAt: number().optional()
14145
- });
14146
14144
  object({
14147
14145
  id: string(),
14148
14146
  userId: string(),
@@ -18154,16 +18152,36 @@ var RecordKindStateSchema = _enum([
18154
18152
  var DeclareKindResultSchema = object({
18155
18153
  kindId: number().int(),
18156
18154
  state: RecordKindStateSchema,
18157
- createdIndexes: array(string()),
18158
- /**
18159
- * RETIRED (D900): always `null`. It carried the records-migration boot guard;
18160
- * it stays on the wire, null, because an addon built before the removal reads
18161
- * an ABSENT field as "adoption pending" and refuses to start.
18162
- */
18163
- adoptionPending: _null()
18155
+ createdIndexes: array(string())
18164
18156
  });
18165
18157
  /** Keychain refs a write released (the old marker is gone from the row): the owner deletes the values. */
18166
18158
  var SecretRefsList = array(string());
18159
+ /**
18160
+ * One op of a `transact`: the single-row writes, each on a kind of the caller.
18161
+ * All ops of one call share ONE database file and ONE `transactFamily`.
18162
+ */
18163
+ var RecordTransactOpSchema = discriminatedUnion("op", [
18164
+ object({
18165
+ op: literal("put"),
18166
+ kind: RecordKindNameSchema,
18167
+ record: RecordInputSchema,
18168
+ ifRev: number().int().min(0).optional()
18169
+ }),
18170
+ object({
18171
+ op: literal("patch"),
18172
+ kind: RecordKindNameSchema,
18173
+ id: RecordIdSchema,
18174
+ data: RecordBodySchema,
18175
+ at: number().int().nullable().optional(),
18176
+ expiresAt: number().int().nullable().optional(),
18177
+ ifRev: number().int().min(1).optional()
18178
+ }),
18179
+ object({
18180
+ op: literal("delete"),
18181
+ kind: RecordKindNameSchema,
18182
+ id: RecordIdSchema
18183
+ })
18184
+ ]);
18167
18185
  var RecordSecretRefsSchema = record(string(), record(string(), string()));
18168
18186
  method(object({ kinds: record(RecordKindNameSchema, RecordKindDeclarationSchema) }), object({ kinds: record(string(), DeclareKindResultSchema) }), {
18169
18187
  kind: "mutation",
@@ -18270,6 +18288,16 @@ method(object({ kinds: record(RecordKindNameSchema, RecordKindDeclarationSchema)
18270
18288
  }), {
18271
18289
  kind: "mutation",
18272
18290
  auth: "admin"
18291
+ }), method(object({ ops: array(RecordTransactOpSchema).min(1).max(RECORD_BATCH_MAX) }), object({
18292
+ results: array(object({
18293
+ rev: number().int().nullable(),
18294
+ deleted: boolean()
18295
+ })),
18296
+ releasedRefs: SecretRefsList,
18297
+ secretRefs: SecretRefsList
18298
+ }), {
18299
+ kind: "mutation",
18300
+ auth: "admin"
18273
18301
  }), method(object({
18274
18302
  deviceId: number().int(),
18275
18303
  kinds: array(RecordKindNameSchema).optional()
@@ -44011,9 +44039,13 @@ var NcSystemEventKindSchema = _enum([
44011
44039
  "node-updating",
44012
44040
  "node-inference-unavailable",
44013
44041
  "detection-blind",
44042
+ "motion-noisy",
44043
+ "motion-calm",
44014
44044
  "recording-stalled",
44015
44045
  "recording-healthy",
44016
44046
  "recording-degraded",
44047
+ "device-attention-required",
44048
+ "device-attention-resolved",
44017
44049
  "storage-location-low",
44018
44050
  "storage-location-critical",
44019
44051
  "storage-location-ok",
@@ -44037,6 +44069,8 @@ var NcSystemEventKindSchema = _enum([
44037
44069
  "alert-critical",
44038
44070
  "alert-error",
44039
44071
  "alert-critical-resolved",
44072
+ "rule-broken",
44073
+ "rule-repaired",
44040
44074
  "camera-online",
44041
44075
  "camera-offline",
44042
44076
  "camera-disabled",
@@ -45566,6 +45600,14 @@ var NC_CONDITION_CATALOG = [
45566
45600
  value: "detection-blind",
45567
45601
  label: "Camera detecting nothing"
45568
45602
  },
45603
+ {
45604
+ value: "motion-noisy",
45605
+ label: "Camera motion constant, no subject"
45606
+ },
45607
+ {
45608
+ value: "motion-calm",
45609
+ label: "Camera motion calm again"
45610
+ },
45569
45611
  {
45570
45612
  value: "recording-stalled",
45571
45613
  label: "Recording stalled"
@@ -45578,6 +45620,14 @@ var NC_CONDITION_CATALOG = [
45578
45620
  value: "recording-degraded",
45579
45621
  label: "Recording degraded (restart storm)"
45580
45622
  },
45623
+ {
45624
+ value: "device-attention-required",
45625
+ label: "Device needs attention"
45626
+ },
45627
+ {
45628
+ value: "device-attention-resolved",
45629
+ label: "Device attention resolved"
45630
+ },
45581
45631
  {
45582
45632
  value: "storage-location-low",
45583
45633
  label: "Storage location low"
@@ -45662,6 +45712,14 @@ var NC_CONDITION_CATALOG = [
45662
45712
  value: "alert-critical-resolved",
45663
45713
  label: "Critical alert resolved"
45664
45714
  },
45715
+ {
45716
+ value: "rule-broken",
45717
+ label: "Notification rule broken"
45718
+ },
45719
+ {
45720
+ value: "rule-repaired",
45721
+ label: "Notification rule repaired"
45722
+ },
45665
45723
  {
45666
45724
  value: "alarm-arm-refused",
45667
45725
  label: "Alarm arm refused"
@@ -59217,6 +59275,16 @@ var DishwasherStatusSchema = object({
59217
59275
  powerState: string().nullable(),
59218
59276
  saltLevel: DishwasherConsumableLevelSchema.nullable(),
59219
59277
  rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
59278
+ /**
59279
+ * True while the appliance asks for its filter to be cleaned (smart-filter, filter-system or
59280
+ * combined care-and-filter reminder raised); false when every such reminder reads clear; null
59281
+ * when none is reported. A cleared reminder is not an unknown one.
59282
+ */
59283
+ filterCleaningDue: boolean().nullable(),
59284
+ /** True while the machine-care (descaling / cleaning-program) reminder is raised; false when clear; null when not reported. */
59285
+ machineCareDue: boolean().nullable(),
59286
+ /** Program runs left before the machine-care reminder is due; null when the appliance does not say. */
59287
+ machineCareRemainingRuns: number().int().nonnegative().nullable(),
59220
59288
  /** Option states: null when the appliance does not expose the option or has not said. */
59221
59289
  halfLoad: boolean().nullable(),
59222
59290
  hygienePlus: boolean().nullable(),
@@ -68036,16 +68104,6 @@ var UpdateUserInputSchema = object({
68036
68104
  allowedDevices: record(string(), union([array(string()), literal("*")])).optional(),
68037
68105
  scopes: array(TokenScopeSchema).optional()
68038
68106
  });
68039
- var ApiKeySummarySchema = object({
68040
- id: string(),
68041
- label: string(),
68042
- isAdmin: boolean().default(false),
68043
- allowedProviders: union([array(string()), literal("*")]).optional(),
68044
- allowedDevices: record(string(), union([array(string()), literal("*")])).optional(),
68045
- tokenPrefix: string(),
68046
- createdAt: number(),
68047
- lastUsedAt: number().optional()
68048
- });
68049
68107
  var OauthSessionSummarySchema = object({
68050
68108
  id: string(),
68051
68109
  userId: string(),
@@ -68067,8 +68125,7 @@ var TotpStatusSchema = object({
68067
68125
  confirmedAt: number().nullable()
68068
68126
  });
68069
68127
  /**
68070
- * user-management — singleton capability for user accounts and the
68071
- * legacy API-key rows.
68128
+ * user-management — singleton capability for user accounts.
68072
68129
  *
68073
68130
  * v2 model: every method gated by `auth: 'admin'`. Admin-only delegation
68074
68131
  * — the subset check on `setUserScopes` is moot
@@ -68124,10 +68181,6 @@ method(_void(), array(UserSummarySchema), { auth: "admin" }), method(CreateUserI
68124
68181
  }), UserSummarySchema.extend({ passwordHash: string() }).nullable(), {
68125
68182
  kind: "mutation",
68126
68183
  access: "view"
68127
- }), method(_void(), array(ApiKeySummarySchema), { auth: "admin" }), method(object({ id: string() }), object({ success: literal(true) }), {
68128
- kind: "mutation",
68129
- auth: "admin",
68130
- access: "delete"
68131
68184
  }), method(object({ userId: string() }), TotpSetupResultSchema, {
68132
68185
  kind: "mutation",
68133
68186
  auth: "admin",
@@ -77153,6 +77206,12 @@ Object.freeze({
77153
77206
  addonId: null,
77154
77207
  access: "view"
77155
77208
  },
77209
+ "records.transact": {
77210
+ capName: "records",
77211
+ capScope: "system",
77212
+ addonId: null,
77213
+ access: "create"
77214
+ },
77156
77215
  "sceneMonitor.captureReference": {
77157
77216
  capName: "scene-monitor",
77158
77217
  capScope: "device",
@@ -78485,12 +78544,6 @@ Object.freeze({
78485
78544
  addonId: null,
78486
78545
  access: "view"
78487
78546
  },
78488
- "userManagement.listApiKeys": {
78489
- capName: "user-management",
78490
- capScope: "system",
78491
- addonId: null,
78492
- access: "view"
78493
- },
78494
78547
  "userManagement.listExternalIdentities": {
78495
78548
  capName: "user-management",
78496
78549
  capScope: "system",
@@ -78545,12 +78598,6 @@ Object.freeze({
78545
78598
  addonId: null,
78546
78599
  access: "create"
78547
78600
  },
78548
- "userManagement.revokeApiKey": {
78549
- capName: "user-management",
78550
- capScope: "system",
78551
- addonId: null,
78552
- access: "delete"
78553
- },
78554
78601
  "userManagement.revokeOauthSession": {
78555
78602
  capName: "user-management",
78556
78603
  capScope: "system",
@@ -82040,8 +82087,8 @@ var NC_SYSTEM_EVENT_FILTER_KEYS = [
82040
82087
  */
82041
82088
  function systemEventFilterApplies(kind, filter) {
82042
82089
  switch (filter) {
82043
- case "deviceIds": return kind.startsWith("device-") || kind.startsWith("stream-") || kind === "detection-blind" || kind.startsWith("recording-") || kind === "alarm-triggered";
82044
- case "deviceTypes": return kind.startsWith("device-") || kind === "detection-blind";
82090
+ case "deviceIds": return kind.startsWith("device-") || kind.startsWith("stream-") || kind === "detection-blind" || kind.startsWith("motion-") || kind.startsWith("recording-") || kind === "alarm-triggered";
82091
+ case "deviceTypes": return kind.startsWith("device-") || kind === "detection-blind" || kind.startsWith("motion-");
82045
82092
  case "nodeIds": return kind.startsWith("node-") || kind === "addon-crash-loop" || kind === "addon-update-available" || kind === "addon-updated" || kind === "server-update-available" || kind === "wrapper-update-available" || kind === "server-updated" || kind.startsWith("storage-location-") || kind.startsWith("alert-");
82046
82093
  case "packageNames": return kind.endsWith("update-available") || kind === "addon-updated" || kind === "node-updating" || kind === "server-updated";
82047
82094
  case "consumableLowPercent": return NC_CONSUMABLE_SYSTEM_EVENT_KINDS.includes(kind);
@@ -82086,9 +82133,13 @@ var NC_SYSTEM_EVENT_FAMILY = {
82086
82133
  "stream-online": "device-events",
82087
82134
  "stream-offline": "device-events",
82088
82135
  "detection-blind": "device-events",
82136
+ "motion-noisy": "device-events",
82137
+ "motion-calm": "device-events",
82089
82138
  "recording-stalled": "device-events",
82090
82139
  "recording-healthy": "device-events",
82091
82140
  "recording-degraded": "device-events",
82141
+ "device-attention-required": "device-events",
82142
+ "device-attention-resolved": "device-events",
82092
82143
  "node-online": "system",
82093
82144
  "node-offline": "system",
82094
82145
  "node-restarting": "system",
@@ -82105,6 +82156,8 @@ var NC_SYSTEM_EVENT_FAMILY = {
82105
82156
  "alert-critical": "system",
82106
82157
  "alert-error": "system",
82107
82158
  "alert-critical-resolved": "system",
82159
+ "rule-broken": "system",
82160
+ "rule-repaired": "system",
82108
82161
  "storage-location-low": "system",
82109
82162
  "storage-location-critical": "system",
82110
82163
  "storage-location-ok": "system",
@@ -82187,6 +82240,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
82187
82240
  label: "Detecting nothing",
82188
82241
  kinds: ["detection-blind"]
82189
82242
  },
82243
+ {
82244
+ id: "motion-noise",
82245
+ family: "device-events",
82246
+ label: "Motion without a subject",
82247
+ kinds: ["motion-noisy", "motion-calm"]
82248
+ },
82190
82249
  {
82191
82250
  id: "recording",
82192
82251
  family: "device-events",
@@ -82197,6 +82256,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
82197
82256
  "recording-degraded"
82198
82257
  ]
82199
82258
  },
82259
+ {
82260
+ id: "device-attention",
82261
+ family: "device-events",
82262
+ label: "Needs attention",
82263
+ kinds: ["device-attention-required", "device-attention-resolved"]
82264
+ },
82200
82265
  {
82201
82266
  id: "nodes",
82202
82267
  family: "system",
@@ -82257,6 +82322,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
82257
82322
  "alert-critical-resolved"
82258
82323
  ]
82259
82324
  },
82325
+ {
82326
+ id: "rule-health",
82327
+ family: "system",
82328
+ label: "Notification rules",
82329
+ kinds: ["rule-broken", "rule-repaired"]
82330
+ },
82260
82331
  {
82261
82332
  id: "alarm",
82262
82333
  family: "alarm",
@@ -83538,6 +83609,16 @@ function alertEpisodeKind(severity, phase) {
83538
83609
  if (severity === "error" && phase === "raised") return "alert-error";
83539
83610
  return null;
83540
83611
  }
83612
+ /**
83613
+ * The kind of a CRITICAL episode edge about a DEVICE (D911): the alert's source
83614
+ * is `device`, so it is announced in the devices family as
83615
+ * `device-attention-required` / `-resolved` INSTEAD of `alert-critical`. One
83616
+ * alert notifies once, through one family. `null` for any other severity.
83617
+ */
83618
+ function deviceAttentionKind(severity, phase) {
83619
+ if (severity !== "critical") return null;
83620
+ return phase === "raised" ? "device-attention-required" : "device-attention-resolved";
83621
+ }
83541
83622
  function alertEpisodePayload(alert, phase, at) {
83542
83623
  const nodeId = alertNodeId(alert);
83543
83624
  return {
@@ -83571,6 +83652,7 @@ var ALERT_EPISODE = [
83571
83652
  "alert-error",
83572
83653
  "alert-critical-resolved"
83573
83654
  ];
83655
+ var DEVICE_ATTENTION = ["device-attention-required", "device-attention-resolved"];
83574
83656
  var UPDATES = [
83575
83657
  "addon-update-available",
83576
83658
  "server-update-available",
@@ -83600,9 +83682,12 @@ var DEVICE_EVENTS = [
83600
83682
  "stream-online",
83601
83683
  "stream-offline",
83602
83684
  "detection-blind",
83685
+ "motion-noisy",
83686
+ "motion-calm",
83603
83687
  "recording-stalled",
83604
83688
  "recording-healthy",
83605
83689
  "recording-degraded",
83690
+ ...DEVICE_ATTENTION,
83606
83691
  ...ALARM
83607
83692
  ];
83608
83693
  /** Every kind a summary may speak about — the two summarisable families. */
@@ -84176,7 +84261,36 @@ var NC_TEMPLATE_VARS = [
84176
84261
  families: ["rule"],
84177
84262
  fields: [...RULE_TEXT],
84178
84263
  kinds: ["system"],
84179
- systemEventKinds: ["detection-blind", "recording-stalled"]
84264
+ systemEventKinds: [
84265
+ "detection-blind",
84266
+ "motion-noisy",
84267
+ "motion-calm",
84268
+ "recording-stalled"
84269
+ ]
84270
+ },
84271
+ {
84272
+ name: "duty",
84273
+ label: "Motion share (%)",
84274
+ example: "55",
84275
+ group: "system",
84276
+ families: ["rule"],
84277
+ fields: [...RULE_TEXT],
84278
+ kinds: ["system"],
84279
+ systemEventKinds: ["motion-noisy", "motion-calm"]
84280
+ },
84281
+ {
84282
+ name: "sessions",
84283
+ label: "Detection sessions",
84284
+ example: "96",
84285
+ group: "system",
84286
+ families: ["rule"],
84287
+ fields: [...RULE_TEXT],
84288
+ kinds: ["system"],
84289
+ systemEventKinds: [
84290
+ "detection-blind",
84291
+ "motion-noisy",
84292
+ "motion-calm"
84293
+ ]
84180
84294
  },
84181
84295
  {
84182
84296
  name: "message",
@@ -84186,7 +84300,52 @@ var NC_TEMPLATE_VARS = [
84186
84300
  families: ["rule"],
84187
84301
  fields: [...RULE_TEXT],
84188
84302
  kinds: ["system"],
84189
- systemEventKinds: ["recording-degraded", ...ALERT_EPISODE]
84303
+ systemEventKinds: [
84304
+ "recording-degraded",
84305
+ ...DEVICE_ATTENTION,
84306
+ ...ALERT_EPISODE
84307
+ ]
84308
+ },
84309
+ {
84310
+ name: "ruleName",
84311
+ label: "Rule name",
84312
+ example: "Robot",
84313
+ group: "system",
84314
+ families: ["rule"],
84315
+ fields: [...RULE_TEXT],
84316
+ kinds: ["system"],
84317
+ systemEventKinds: ["rule-broken", "rule-repaired"]
84318
+ },
84319
+ {
84320
+ name: "ruleId",
84321
+ label: "Rule id",
84322
+ example: "3db3e226-9b82-4681-a200-de13b260aa48",
84323
+ group: "system",
84324
+ families: ["rule"],
84325
+ fields: [...RULE_TEXT],
84326
+ kinds: ["system"],
84327
+ systemEventKinds: ["rule-broken", "rule-repaired"]
84328
+ },
84329
+ {
84330
+ name: "brokenReason",
84331
+ label: "Why the rule is broken",
84332
+ description: "unparseable, device-deleted or target-deleted",
84333
+ example: "device-deleted",
84334
+ group: "system",
84335
+ families: ["rule"],
84336
+ fields: [...RULE_TEXT],
84337
+ kinds: ["system"],
84338
+ systemEventKinds: ["rule-broken"]
84339
+ },
84340
+ {
84341
+ name: "offendingIds",
84342
+ label: "Deleted devices or destinations",
84343
+ example: "4483",
84344
+ group: "system",
84345
+ families: ["rule"],
84346
+ fields: [...RULE_TEXT],
84347
+ kinds: ["system"],
84348
+ systemEventKinds: ["rule-broken"]
84190
84349
  },
84191
84350
  {
84192
84351
  name: "locationName",
@@ -84389,7 +84548,11 @@ var NC_TEMPLATE_VARS = [
84389
84548
  families: ["rule"],
84390
84549
  fields: [...RULE_TEXT],
84391
84550
  kinds: ["system"],
84392
- systemEventKinds: ["export-completed", ...ALERT_EPISODE]
84551
+ systemEventKinds: [
84552
+ "export-completed",
84553
+ ...DEVICE_ATTENTION,
84554
+ ...ALERT_EPISODE
84555
+ ]
84393
84556
  },
84394
84557
  {
84395
84558
  name: "severity",
@@ -84409,7 +84572,7 @@ var NC_TEMPLATE_VARS = [
84409
84572
  families: ["rule"],
84410
84573
  fields: [...RULE_TEXT],
84411
84574
  kinds: ["system"],
84412
- systemEventKinds: [...ALERT_EPISODE]
84575
+ systemEventKinds: [...DEVICE_ATTENTION, ...ALERT_EPISODE]
84413
84576
  },
84414
84577
  {
84415
84578
  name: "source",
@@ -84429,7 +84592,7 @@ var NC_TEMPLATE_VARS = [
84429
84592
  families: ["rule"],
84430
84593
  fields: [...RULE_TEXT],
84431
84594
  kinds: ["system"],
84432
- systemEventKinds: [...ALERT_EPISODE]
84595
+ systemEventKinds: [...DEVICE_ATTENTION, ...ALERT_EPISODE]
84433
84596
  },
84434
84597
  {
84435
84598
  name: "exportId",
@@ -84643,7 +84806,11 @@ var NC_TEMPLATE_HELD_BACK_SYSTEM_EVENT_KINDS = [
84643
84806
  "node-updating",
84644
84807
  "alert-critical",
84645
84808
  "alert-error",
84646
- "alert-critical-resolved"
84809
+ "alert-critical-resolved",
84810
+ "device-attention-required",
84811
+ "device-attention-resolved",
84812
+ "rule-broken",
84813
+ "rule-repaired"
84647
84814
  ];
84648
84815
  /**
84649
84816
  * The catalog as `getTemplateCatalog` SERVES it: every descriptor, with the
@@ -84748,6 +84915,185 @@ function templateVarsFor(ctx) {
84748
84915
  function isKnownTemplateVar(name, ctx) {
84749
84916
  return templateVarsFor(ctx).some((d) => d.dynamic !== void 0 ? name.startsWith(d.dynamic.prefix) && name.length > d.dynamic.prefix.length : d.name === name);
84750
84917
  }
84918
+ var CLASS_BY_KIND = new Map([
84919
+ {
84920
+ id: "device-connectivity",
84921
+ family: "device-events",
84922
+ label: "Device connectivity (offline / back online)",
84923
+ bad: ["device-offline"],
84924
+ recovery: ["device-online"],
84925
+ snapshotLabel: "Devices offline now",
84926
+ snapshotSection: "device-state"
84927
+ },
84928
+ {
84929
+ id: "device-switch",
84930
+ family: "device-events",
84931
+ label: "Device switched off / back on",
84932
+ bad: ["device-disabled"],
84933
+ recovery: ["device-enabled"],
84934
+ snapshotLabel: "Devices switched off now",
84935
+ snapshotSection: "device-state"
84936
+ },
84937
+ {
84938
+ id: "stream-connectivity",
84939
+ family: "device-events",
84940
+ label: "Stream connectivity (offline / back online)",
84941
+ bad: ["stream-offline"],
84942
+ recovery: ["stream-online"],
84943
+ snapshotLabel: "Streams offline now",
84944
+ snapshotSection: "streams"
84945
+ },
84946
+ {
84947
+ id: "battery",
84948
+ family: "device-events",
84949
+ label: "Battery (low / back to normal)",
84950
+ bad: ["device-battery-low"],
84951
+ recovery: ["device-battery-normal"],
84952
+ snapshotLabel: "Batteries low now",
84953
+ snapshotSection: "battery"
84954
+ },
84955
+ {
84956
+ id: "consumables",
84957
+ family: "device-events",
84958
+ label: "Consumables (low / replaced)",
84959
+ bad: ["device-consumable-low"],
84960
+ recovery: ["device-consumable-normal"],
84961
+ snapshotLabel: "Consumables low now",
84962
+ snapshotSection: "consumables"
84963
+ },
84964
+ {
84965
+ id: "tanks",
84966
+ family: "device-events",
84967
+ label: "Tanks (low or full / back to normal)",
84968
+ bad: ["device-tank-low", "device-tank-full"],
84969
+ recovery: ["device-tank-normal"],
84970
+ snapshotLabel: "Tanks low or full now",
84971
+ snapshotSection: "tanks"
84972
+ },
84973
+ {
84974
+ id: "motion-noise",
84975
+ family: "device-events",
84976
+ label: "Motion without a subject (constant / calm again)",
84977
+ bad: ["motion-noisy"],
84978
+ recovery: ["motion-calm"],
84979
+ snapshotLabel: "Cameras with constant motion now",
84980
+ snapshotSection: null
84981
+ },
84982
+ {
84983
+ id: "recording-health",
84984
+ family: "device-events",
84985
+ label: "Recording health (stalled or degraded / recording again)",
84986
+ bad: ["recording-stalled", "recording-degraded"],
84987
+ recovery: ["recording-healthy"],
84988
+ snapshotLabel: "Recordings stalled now",
84989
+ snapshotSection: null
84990
+ },
84991
+ {
84992
+ id: "device-attention",
84993
+ family: "device-events",
84994
+ label: "Device needs attention (raised / resolved)",
84995
+ bad: ["device-attention-required"],
84996
+ recovery: ["device-attention-resolved"],
84997
+ snapshotLabel: "Devices needing attention now",
84998
+ snapshotSection: null
84999
+ },
85000
+ {
85001
+ id: "node-connectivity",
85002
+ family: "system",
85003
+ label: "Node connectivity (offline / back online)",
85004
+ bad: ["node-offline"],
85005
+ recovery: ["node-online"],
85006
+ snapshotLabel: "Nodes offline now",
85007
+ snapshotSection: "nodes"
85008
+ },
85009
+ {
85010
+ id: "storage-space",
85011
+ family: "system",
85012
+ label: "Storage space (low or critical / ok again)",
85013
+ bad: ["storage-location-low", "storage-location-critical"],
85014
+ recovery: ["storage-location-ok"],
85015
+ snapshotLabel: "Storage locations low now",
85016
+ snapshotSection: null
85017
+ },
85018
+ {
85019
+ id: "critical-alerts",
85020
+ family: "system",
85021
+ label: "Critical alerts (raised / resolved)",
85022
+ bad: ["alert-critical"],
85023
+ recovery: ["alert-critical-resolved"],
85024
+ snapshotLabel: "Critical alerts open now",
85025
+ snapshotSection: null
85026
+ },
85027
+ {
85028
+ id: "rule-health",
85029
+ family: "system",
85030
+ label: "Rule health (broken / repaired)",
85031
+ bad: ["rule-broken"],
85032
+ recovery: ["rule-repaired"],
85033
+ snapshotLabel: "Notification rules broken now",
85034
+ snapshotSection: null
85035
+ }
85036
+ ].flatMap((spec) => [...spec.bad, ...spec.recovery].map((kind) => [kind, spec])));
85037
+ /** The class a kind belongs to, or `undefined` for a one-edge kind. */
85038
+ function systemEventClassOf(kind) {
85039
+ return CLASS_BY_KIND.get(kind);
85040
+ }
85041
+ /**
85042
+ * A kind list with the OTHER front of every class it touches: a bad edge
85043
+ * brings the class's recovery, a recovery brings the class's bad edges. A
85044
+ * sibling bad edge is never added by a bad edge — a rule on
85045
+ * `storage-location-critical` does not start hearing `storage-location-low`.
85046
+ * Input order is kept, each added edge right after the kind that brought it.
85047
+ * Kinds of no class (and legacy names) pass through.
85048
+ */
85049
+ function expandSystemEventClasses(kinds) {
85050
+ const out = [];
85051
+ const seen = /* @__PURE__ */ new Set();
85052
+ const push = (kind) => {
85053
+ if (seen.has(kind)) return;
85054
+ seen.add(kind);
85055
+ out.push(kind);
85056
+ };
85057
+ const listed = new Set(kinds);
85058
+ for (const kind of kinds) {
85059
+ push(kind);
85060
+ const spec = systemEventClassOf(kind);
85061
+ if (spec === void 0) continue;
85062
+ const hasBad = spec.bad.some((k) => listed.has(k));
85063
+ if (spec.bad.some((k) => k === kind)) for (const edge of spec.recovery) push(edge);
85064
+ else if (!hasBad) for (const edge of spec.bad) push(edge);
85065
+ }
85066
+ return out;
85067
+ }
85068
+ /** Does this rule speak per EVENT (not a scheduled summary)? */
85069
+ function isInstantSystemRule(rule) {
85070
+ if (rule.delivery !== "system-event") return false;
85071
+ return rule.systemEventDelivery?.mode !== "summary";
85072
+ }
85073
+ /**
85074
+ * An INSTANT system rule with each class it touches completed with both edges;
85075
+ * the rule itself (same object) when there is nothing to add, a summary rule,
85076
+ * or a rule spanning families (`mixed` stays read-only, D637). A copy, never a
85077
+ * mutation.
85078
+ */
85079
+ function withSystemEventClasses(rule) {
85080
+ const condition = rule.conditions.systemEvent;
85081
+ if (condition === void 0 || !isInstantSystemRule(rule)) return rule;
85082
+ const families = new Set(condition.kinds.map((kind) => NC_SYSTEM_EVENT_FAMILY[kind]));
85083
+ if (families.size !== 1 || families.has(null)) return rule;
85084
+ const kinds = expandSystemEventClasses(condition.kinds);
85085
+ if (kinds.length === condition.kinds.length) return rule;
85086
+ return {
85087
+ ...rule,
85088
+ conditions: {
85089
+ ...rule.conditions,
85090
+ systemEvent: {
85091
+ ...condition,
85092
+ kinds
85093
+ }
85094
+ }
85095
+ };
85096
+ }
84751
85097
  /** The families a rule may summarise. The alarm is not one of them. */
84752
85098
  var NC_SYSTEM_EVENT_SUMMARY_FAMILIES = ["device-events", "system"];
84753
85099
  /** The summary's schedule, or `null` for any rule that is not a summary system rule. */
@@ -86537,4 +86883,4 @@ function buildClipModelRegistry(entries) {
86537
86883
  /** The built-in catalog's registry. */
86538
86884
  var BUILTIN_CLIP_MODELS = buildClipModelRegistry(CLIP_IMAGE_MODELS);
86539
86885
  //#endregion
86540
- export { MediaFileKindEnum as $, isDeviceScopedCap as $i, cosineSimilarity as $n, projectSubjectPath as $r, OpsLogEntrySchema as $t, DeclaredDevices as A, systemEventFilterApplies as Ai, activateAlarmProfile as An, isEventOwnerType as Ar, NcAlarmSensorsInputSchema as At, FULL_IMAGE_BBOX as B, evaluateSensorEdge as Bi, applySecureOnArmEdit as Bn, kebabToCamel as Br, NcRuleUpdateInputSchema as Bt, ClearTrackRelationResultSchema as C, subKindsOf as Ci, TimelapseRulePatchSchema as Cn, isAlertEpisodeSeverity as Cr, NC_SNOOZE_MAX_MINUTES as Ct, DEFAULT_TIMELAPSE_PREVIEW_TEXT as D, syncActiveAlarmProfileSettings as Di, TrackRelationSchema as Dn, isDetectionMacroClass as Dr, NC_TEMPLATE_VARS as Dt, DEFAULT_EVENT_COLOR as E, summarizeReview as Ei, TrackRelationKindSchema as En, isDefaultAlarmProfileId as Er, NC_TAXONOMY as Et, EVENT_DENSITY_BATCH_MAX as F, vectorDimFromBase64 as Fi, alertEpisodeKind as Fn, isRootSuppliableStepId as Fr, NcRuleActionSchema as Ft, ListTrackRelationsResultSchema as G, CamProfileSchema as Gi, buildEventKindDescriptor as Gn, normalizeNcMediaPolicy as Gr, NcSnoozeSuppressedSchema as Gt, LABEL_SUPPLY_MACRO as H, DeviceType as Hi, assertTimelapseCadences as Hn, mayWriteToLocation as Hr, NcSharedSequenceSchema as Ht, EVENT_KIND_BY_CAP as I, viewerLinkBaseOf as Ii, alertEpisodePayload as In, isScheduleActive as Ir, NcRuleInputSchema as It, MAX_BIRTH_DECISION_RECORDS as J, createEvent as Ji, calendarEventLocalSpan as Jn, parseAlertEpisodePayload as Jr, NcTaxonomySchema as Jt, LockStateSchema as K, RECORD_MAX_DATA_BYTES as Ki, buildSubjectPath as Kn, notificationRulesCapability as Kr, NcStateSummarySectionIdSchema as Kt, EVENT_OWNER_TYPES as L, zoneAnalyticsCapability as Li, applyBlockingEdit as Ln, isSystemDelivery as Lr, NcRulePatchSchema as Lt, EMBEDDING_MODEL_FAILED as M, systemEventSummarySplitOf as Mi, alarmDeviceSecureOnArm as Mn, isLabelSupplyStepId as Mr, NcAlarmSettingsPatchSchema as Mt, EMBEDDING_REQUIREMENTS_FAILED as N, templateCarriesSummary as Ni, alarmPanelCapability as Nn, isMediaOwnerType as Nr, NcConditionDescriptorSchema as Nt, DETECTION_MACRO_CLASSES as O, systemEventDeliveryProblems as Oi, TrackSideSchema as On, isDrawableSubjectPath as Or, NcAlarmConfigSchema as Ot, EMBEDDING_REQUIREMENTS_UNAVAILABLE as P, templateVarsFor as Pi, alertEpisodeId as Pn, isRetiredClearKey as Pr, NcConditionsSchema as Pt, MOTION_CLOSE_AFTER_MS as Q, hydrateSchema as Qi, coreBlockIdFromAddonId as Qn, plateGalleryCapability as Qr, OPS_LOG_DEFAULT_LIMIT as Qt, EXPORT_DENSE_MAX_RANGES as R, DEFAULT_FIRST_SIGHTING_FRESHNESS_MS as Ri, applyModeDelaysEdits as Rn, isSystemEventSummaryRule as Rr, NcRuleSchema as Rt, ClearTrackRelationInputSchema as S, storageOccupancyCapability as Si, TimelapseRuleInputSchema as Sn, isAlertEpisodeOpen as Sr, NC_SENSOR_TRANSITION_KINDS as St, DEFAULT_DETAIL_CROP_CONVENTION as T, subjectPathSvgPoints as Ti, TrackPuritySchema as Tn, isAudioClassName as Tr, NC_TANK_SYSTEM_EVENT_KINDS as Tt, LabelAttributionSchema as U, errMsg as Ui, audioMetricsCapability as Un, memoizePinnedFfmpeg as Ur, NcSnoozeInputSchema as Ut, FailureCounters as V, isSourceCap as Vi, armRemovalReconcile as Vn, linkedStepOf as Vr, NcScheduleSchema as Vt, ListTrackRelationsInputSchema as W, BaseAddon as Wi, audioModeOf as Wn, ncMediaPolicyError as Wr, NcSnoozeSchema as Wt, MAX_TRACK_PURITIES as X, defineCustomActions as Xi, cloneAlarmSettings as Xn, pickFaceRescoreIntervalMinutes as Xr, NcTemplatePreviewSchema as Xt, MAX_BIRTH_LATENCY_PROXY_MS as Y, customAction as Yi, classifyRetrainReview as Yn, parseProcStatus as Yr, NcTemplatePreviewInputSchema as Yt, MAX_TRACK_RELATIONS as Z, defineRecordKinds as Zi, consumableLowPercentOf as Zn, pipelineAnalyticsCapability as Zr, NcTemplateVarDescriptorSchema as Zt, BIRTH_DECISION_DEFAULT_LIMIT as _, tuple as _a, sceneMonitorCapability as _i, SetTrackPurityInputSchema as _n, faceGalleryCapability as _r, NC_CONSUMABLE_SYSTEM_EVENT_KINDS as _t, CLIP_EMBEDDING_STEP_ID as a, array as aa, resolveLocationMode as ai, RetrainOriginSchema as an, describeSystemEventDeliveryProblem as ar, NC_ALARM_NOTIFY_FIELDS as at, BucketAccumulator as b, EventCategory as ba, servedTemplateVars as bi, TIMELAPSE_DENSE_FLOOR_SEC as bn, gifFromMp4Args as br, NC_GROUPING_MAX_SEC as bt, readClusterModelPinStrict as c, literal as ca, resolveNcMediaImage as ci, SCENE_CONFIRM_DEFAULT_TIMEOUT_MS as cn, embeddingEncoderCapability as cr, NC_AUDIO_CONFIRM_HITS_DEFAULT as ct, APPEARANCE_BLOCKS as d, object as da, rootSupplyServes as di, SCENE_DEFAULT_OBSERVATION_SPACING_SEC as dn, embeddingRequirementsFailedError as dr, NC_CLIP_PRE_ROLL_DEFAULT_SEC as dt, nodePin as ea, readDeviceStateFrom as ei, PoolMemoryWatchdog as en, createAlarmProfile as er, MotionTriggeredBySchema as et, APPEARANCE_RESOLVES_AMBIGUITY_DEFAULT as f, partialRecord as fa, ruleAutoTriggersAlarm as fi, SCENE_DEFAULT_QUIET_SECONDS as fn, embeddingRequirementsUnavailableError as fr, NC_CLIP_RETENTION_MAX_SEC as ft, ArchivedDebugNoteSchema as g, templateLiteral as ga, ruleKindOf as gi, SceneMonitorSchema as gn, evictionPolicyOfLocation as gr, NC_CONSUMABLE_LOW_PERCENT_DEFAULT as gt, AlarmArmModeSchema as h, string as ha, ruleGroupingApplies as hi, SCENE_RESET_RECAPTURES as hn, eventKindLabel as hr, NC_CONFIRM_DEFAULT_TIMEOUT_MS as ht, CLIP_TEXT_MODELS as i, _enum as ia, resolveClipSearchMinScore as ii, RetrainDismissedSchema as in, deriveRecordingMode as ir, NC_ALARM_DELAY_MAX_SEC as it, DetectionSourceSchema as j, systemEventSummaryScheduleOf as ji, addonWidgetsSourceCapability as jn, isKnownTemplateVar as jr, NcAlarmSensorsSchema as jt, DETECTION_PIPELINE_CAP_NAME as k, systemEventFamilyProblems as ki, TrackSourceSchema as kn, isEventKindLabelKey as kr, NcAlarmPostTriggeredActionSchema as kt, resolveClusterModelPin as l, looseObject as la, resolvePoolMemoryPolicy as li, SCENE_DEFAULT_ANCHOR_THRESHOLD as ln, embeddingModelFailedError as lr, NC_AUDIO_CONFIRM_WINDOW_SEC_DEFAULT as lt, AUDIO_MACRO_LABELS as m, strictObject as ma, ruleDeviceCompatCapQueries as mi, SCENE_DIVERGED as mn, ensureAlarmProfiles as mr, NC_CONFIRM_DEFAULT_MAX_IMAGE_PX as mt, DEFAULT_CLIP_MODEL as n, sleep as na, readTimelapseGeneratedAt as ni, RECORDING_SOURCE_CAMSTACK_ADDON as nn, deriveDetailCropRect as nr, NC_ALARM_DEFAULT_TRIGGERED_DURATION_SEC as nt, CLUSTER_MODEL_OWNER_ADDON_ID as o, boolean as oa, resolveModeDelays as oi, RetrainStatusSchema as on, describeSystemEventFamilyProblem as or, NC_ALARM_SYSTEM_EVENT_KINDS as ot, ARCHIVED_DEBUG_NOTES_DEFAULT_LIMIT as p, record as pa, ruleBelongsToAlarm as pi, SCENE_DEFAULT_UNCOVERED_POLICY as pn, encodeVectorBase64 as pr, NC_CONDITION_CATALOG as pt, MAX_ARCHIVED_DEBUG_NOTES as q, RECORD_QUERY_MAX as qi, buildViewerLink as qn, occupancyScope as qr, NcSystemEventKindSchema as qt, CLIP_IMAGE_MODELS as r, ZodObject as ra, renameAlarmProfile as ri, RebuildObjectEmbeddingsRefusalSchema as rn, derivePostTriggeredAction as rr, NC_ALARM_DELAY_FIELDS as rt, FACE_EMBEDDING_STEP_ID as s, discriminatedUnion as sa, resolveModeNotifyPolicy as si, SCENE_CONFIRM_DEFAULT_MAX_IMAGE_PX as sn, deviceRemovalHookCapability as sr, NC_ALARM_TRIGGERED_MAX_SEC as st, BUILTIN_CLIP_MODELS as t, normalizeNodeId as ta, readMotionTriggeredBy as ti, RECORDING_EXPORT_MAX_READ_BYTES as tn, deleteAlarmProfile as tr, NC_ALARM_DEFAULT_PROFILE_ID as tt, APPEARANCE_BIN_COUNT as u, number as ua, retrainRevisionConflictMessage as ui, SCENE_DEFAULT_CHECK_INTERVAL_SEC as un, embeddingRefusalOf as ur, NC_CLIP_POST_ROLL_DEFAULT_SEC as ut, BaseDevice as v, union as va, secureActuationFor as vi, SetTrackPurityResultSchema as vn, failureContributionCapability as vr, NC_DEFAULT_SNOOZE_MINUTES as vt, CoverStateSchema as w, subjectPathSampleFromBox as wi, TimelapseRuleSchema as wn, isAppLinkBase as wr, NC_SYSTEM_EVENT_KIND_GROUP_SPECS as wt, COCO_TO_MACRO as x, startMoverUnderClearance as xi, TRACK_RELATIONS_DEFAULT_LIMIT as xn, isAlarmControllableCap as xr, NC_GROUPING_MIN_SEC as xt, BirthDecisionRecordSchema as y, unknown as ya, sensorRaisedOf as yi, SetTrackRelationInputSchema as yn, gifDeriveSpeed as yr, NC_GROUPING_DEFAULT_SEC as yt, FIRST_LEVEL_MACRO_CLASSES as z, canonicalHash as zi, applyNonBlockingEdit as zn, isVectorIndexDimConflict as zr, NcRuleTargetSchema as zt };
86886
+ export { MediaFileKindEnum as $, defineCustomActions as $i, cosineSimilarity as $n, plateGalleryCapability as $r, OpsLogEntrySchema as $t, DeclaredDevices as A, systemEventFamilyProblems as Ai, activateAlarmProfile as An, isEventKindLabelKey as Ar, NcAlarmSensorsInputSchema as At, FULL_IMAGE_BBOX as B, DEFAULT_FIRST_SIGHTING_FRESHNESS_MS as Bi, applySecureOnArmEdit as Bn, isVectorIndexDimConflict as Br, NcRuleUpdateInputSchema as Bt, ClearTrackRelationResultSchema as C, EventCategory as Ca, storageOccupancyCapability as Ci, TimelapseRulePatchSchema as Cn, isAlertEpisodeOpen as Cr, NC_SNOOZE_MAX_MINUTES as Ct, DEFAULT_TIMELAPSE_PREVIEW_TEXT as D, summarizeReview as Di, TrackRelationSchema as Dn, isDefaultAlarmProfileId as Dr, NC_TEMPLATE_VARS as Dt, DEFAULT_EVENT_COLOR as E, subjectPathSvgPoints as Ei, TrackRelationKindSchema as En, isAudioClassName as Er, NC_TAXONOMY as Et, EVENT_DENSITY_BATCH_MAX as F, templateVarsFor as Fi, alertEpisodeKind as Fn, isRetiredClearKey as Fr, NcRuleActionSchema as Ft, ListTrackRelationsResultSchema as G, errMsg as Gi, buildEventKindDescriptor as Gn, ncMediaPolicyError as Gr, NcSnoozeSuppressedSchema as Gt, LABEL_SUPPLY_MACRO as H, evaluateSensorEdge as Hi, assertTimelapseCadences as Hn, linkedStepOf as Hr, NcSharedSequenceSchema as Ht, EVENT_KIND_BY_CAP as I, vectorDimFromBase64 as Ii, alertEpisodePayload as In, isRootSuppliableStepId as Ir, NcRuleInputSchema as It, MAX_BIRTH_DECISION_RECORDS as J, InvalidRecordError as Ji, calendarEventLocalSpan as Jn, occupancyScope as Jr, NcTaxonomySchema as Jt, LockStateSchema as K, BaseAddon as Ki, buildSubjectPath as Kn, normalizeNcMediaPolicy as Kr, NcStateSummarySectionIdSchema as Kt, EVENT_OWNER_TYPES as L, viewerLinkBaseOf as Li, applyBlockingEdit as Ln, isScheduleActive as Lr, NcRulePatchSchema as Lt, EMBEDDING_MODEL_FAILED as M, systemEventSummaryScheduleOf as Mi, alarmDeviceSecureOnArm as Mn, isKnownTemplateVar as Mr, NcAlarmSettingsPatchSchema as Mt, EMBEDDING_REQUIREMENTS_FAILED as N, systemEventSummarySplitOf as Ni, alarmPanelCapability as Nn, isLabelSupplyStepId as Nr, NcConditionDescriptorSchema as Nt, DETECTION_MACRO_CLASSES as O, syncActiveAlarmProfileSettings as Oi, TrackSideSchema as On, isDetectionMacroClass as Or, NcAlarmConfigSchema as Ot, EMBEDDING_REQUIREMENTS_UNAVAILABLE as P, templateCarriesSummary as Pi, alertEpisodeId as Pn, isMediaOwnerType as Pr, NcConditionsSchema as Pt, MOTION_CLOSE_AFTER_MS as Q, customAction as Qi, coreBlockIdFromAddonId as Qn, pipelineAnalyticsCapability as Qr, OPS_LOG_DEFAULT_LIMIT as Qt, EXPORT_DENSE_MAX_RANGES as R, withSystemEventClasses as Ri, applyModeDelaysEdits as Rn, isSystemDelivery as Rr, NcRuleSchema as Rt, ClearTrackRelationInputSchema as S, unknown as Sa, startMoverUnderClearance as Si, TimelapseRuleInputSchema as Sn, isAlarmControllableCap as Sr, NC_SENSOR_TRANSITION_KINDS as St, DEFAULT_DETAIL_CROP_CONVENTION as T, subjectPathSampleFromBox as Ti, TrackPuritySchema as Tn, isAppLinkBase as Tr, NC_TANK_SYSTEM_EVENT_KINDS as Tt, LabelAttributionSchema as U, isSourceCap as Ui, audioMetricsCapability as Un, mayWriteToLocation as Ur, NcSnoozeInputSchema as Ut, FailureCounters as V, canonicalHash as Vi, armRemovalReconcile as Vn, kebabToCamel as Vr, NcScheduleSchema as Vt, ListTrackRelationsInputSchema as W, DeviceType as Wi, audioModeOf as Wn, memoizePinnedFfmpeg as Wr, NcSnoozeSchema as Wt, MAX_TRACK_PURITIES as X, RECORD_QUERY_MAX as Xi, cloneAlarmSettings as Xn, parseProcStatus as Xr, NcTemplatePreviewSchema as Xt, MAX_BIRTH_LATENCY_PROXY_MS as Y, RECORD_MAX_DATA_BYTES as Yi, classifyRetrainReview as Yn, parseAlertEpisodePayload as Yr, NcTemplatePreviewInputSchema as Yt, MAX_TRACK_RELATIONS as Z, createEvent as Zi, consumableLowPercentOf as Zn, pickFaceRescoreIntervalMinutes as Zr, NcTemplateVarDescriptorSchema as Zt, BIRTH_DECISION_DEFAULT_LIMIT as _, strictObject as _a, ruleKindOf as _i, SetTrackPurityInputSchema as _n, evictionPolicyOfLocation as _r, NC_CONSUMABLE_SYSTEM_EVENT_KINDS as _t, CLIP_EMBEDDING_STEP_ID as a, sleep as aa, resolveClipSearchMinScore as ai, RetrainOriginSchema as an, describeSystemEventDeliveryProblem as ar, NC_ALARM_NOTIFY_FIELDS as at, BucketAccumulator as b, tuple as ba, sensorRaisedOf as bi, TIMELAPSE_DENSE_FLOOR_SEC as bn, gifDeriveSpeed as br, NC_GROUPING_MAX_SEC as bt, readClusterModelPinStrict as c, array as ca, resolveModeNotifyPolicy as ci, SCENE_CONFIRM_DEFAULT_TIMEOUT_MS as cn, deviceRemovalHookCapability as cr, NC_AUDIO_CONFIRM_HITS_DEFAULT as ct, APPEARANCE_BLOCKS as d, literal as da, retrainRevisionConflictMessage as di, SCENE_DEFAULT_OBSERVATION_SPACING_SEC as dn, embeddingRefusalOf as dr, NC_CLIP_PRE_ROLL_DEFAULT_SEC as dt, defineRecordKinds as ea, projectSubjectPath as ei, PoolMemoryWatchdog as en, createAlarmProfile as er, MotionTriggeredBySchema as et, APPEARANCE_RESOLVES_AMBIGUITY_DEFAULT as f, looseObject as fa, rootSupplyServes as fi, SCENE_DEFAULT_QUIET_SECONDS as fn, embeddingRequirementsFailedError as fr, NC_CLIP_RETENTION_MAX_SEC as ft, ArchivedDebugNoteSchema as g, record as ga, ruleGroupingApplies as gi, SceneMonitorSchema as gn, eventKindLabel as gr, NC_CONSUMABLE_LOW_PERCENT_DEFAULT as gt, AlarmArmModeSchema as h, partialRecord as ha, ruleDeviceCompatCapQueries as hi, SCENE_RESET_RECAPTURES as hn, ensureAlarmProfiles as hr, NC_CONFIRM_DEFAULT_TIMEOUT_MS as ht, CLIP_TEXT_MODELS as i, normalizeNodeId as ia, renameAlarmProfile as ii, RetrainDismissedSchema as in, deriveRecordingMode as ir, NC_ALARM_DELAY_MAX_SEC as it, DetectionSourceSchema as j, systemEventFilterApplies as ji, addonWidgetsSourceCapability as jn, isEventOwnerType as jr, NcAlarmSensorsSchema as jt, DETECTION_PIPELINE_CAP_NAME as k, systemEventDeliveryProblems as ki, TrackSourceSchema as kn, isDrawableSubjectPath as kr, NcAlarmPostTriggeredActionSchema as kt, resolveClusterModelPin as l, boolean as la, resolveNcMediaImage as li, SCENE_DEFAULT_ANCHOR_THRESHOLD as ln, embeddingEncoderCapability as lr, NC_AUDIO_CONFIRM_WINDOW_SEC_DEFAULT as lt, AUDIO_MACRO_LABELS as m, object as ma, ruleBelongsToAlarm as mi, SCENE_DIVERGED as mn, encodeVectorBase64 as mr, NC_CONFIRM_DEFAULT_MAX_IMAGE_PX as mt, DEFAULT_CLIP_MODEL as n, isDeviceScopedCap as na, readMotionTriggeredBy as ni, RECORDING_SOURCE_CAMSTACK_ADDON as nn, deriveDetailCropRect as nr, NC_ALARM_DEFAULT_TRIGGERED_DURATION_SEC as nt, CLUSTER_MODEL_OWNER_ADDON_ID as o, ZodObject as oa, resolveLocationMode as oi, RetrainStatusSchema as on, describeSystemEventFamilyProblem as or, NC_ALARM_SYSTEM_EVENT_KINDS as ot, ARCHIVED_DEBUG_NOTES_DEFAULT_LIMIT as p, number as pa, ruleAutoTriggersAlarm as pi, SCENE_DEFAULT_UNCOVERED_POLICY as pn, embeddingRequirementsUnavailableError as pr, NC_CONDITION_CATALOG as pt, MAX_ARCHIVED_DEBUG_NOTES as q, CamProfileSchema as qi, buildViewerLink as qn, notificationRulesCapability as qr, NcSystemEventKindSchema as qt, CLIP_IMAGE_MODELS as r, nodePin as ra, readTimelapseGeneratedAt as ri, RebuildObjectEmbeddingsRefusalSchema as rn, derivePostTriggeredAction as rr, NC_ALARM_DELAY_FIELDS as rt, FACE_EMBEDDING_STEP_ID as s, _enum as sa, resolveModeDelays as si, SCENE_CONFIRM_DEFAULT_MAX_IMAGE_PX as sn, deviceAttentionKind as sr, NC_ALARM_TRIGGERED_MAX_SEC as st, BUILTIN_CLIP_MODELS as t, hydrateSchema as ta, readDeviceStateFrom as ti, RECORDING_EXPORT_MAX_READ_BYTES as tn, deleteAlarmProfile as tr, NC_ALARM_DEFAULT_PROFILE_ID as tt, APPEARANCE_BIN_COUNT as u, discriminatedUnion as ua, resolvePoolMemoryPolicy as ui, SCENE_DEFAULT_CHECK_INTERVAL_SEC as un, embeddingModelFailedError as ur, NC_CLIP_POST_ROLL_DEFAULT_SEC as ut, BaseDevice as v, string as va, sceneMonitorCapability as vi, SetTrackPurityResultSchema as vn, faceGalleryCapability as vr, NC_DEFAULT_SNOOZE_MINUTES as vt, CoverStateSchema as w, subKindsOf as wi, TimelapseRuleSchema as wn, isAlertEpisodeSeverity as wr, NC_SYSTEM_EVENT_KIND_GROUP_SPECS as wt, COCO_TO_MACRO as x, union as xa, servedTemplateVars as xi, TRACK_RELATIONS_DEFAULT_LIMIT as xn, gifFromMp4Args as xr, NC_GROUPING_MIN_SEC as xt, BirthDecisionRecordSchema as y, templateLiteral as ya, secureActuationFor as yi, SetTrackRelationInputSchema as yn, failureContributionCapability as yr, NC_GROUPING_DEFAULT_SEC as yt, FIRST_LEVEL_MACRO_CLASSES as z, zoneAnalyticsCapability as zi, applyNonBlockingEdit as zn, isSystemEventSummaryRule as zr, NcRuleTargetSchema as zt };