@camstack/addon-model-studio 1.1.283 → 1.1.285

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 (19) hide show
  1. package/THIRD_PARTY_MODELS.md +2 -2
  2. package/dist/{MotionZonesSettings-BWAI7HWB.mjs → MotionZonesSettings-BWIjI_mB.mjs} +2 -2
  3. package/dist/{PrivacyMaskSettings-CdooyIuO.mjs → PrivacyMaskSettings-BuSCnSs6.mjs} +4 -4
  4. package/dist/{SceneMonitorEditor-B16rZSlJ.mjs → SceneMonitorEditor-D6DomEv3.mjs} +3 -3
  5. package/dist/_stub.js +12 -12
  6. package/dist/{_virtual_mf-localSharedImportMap___mfe_internal__addon_model_studio_page-B_TQF1Vq.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_model_studio_page-D4_cFV_R.mjs} +4 -4
  7. package/dist/_virtual_mf___mfe_internal__addon_model_studio_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-8XY35EWj.mjs +26 -0
  8. package/dist/{hostInit-DpZ13Hyp.mjs → hostInit-SeST1uzI.mjs} +3 -3
  9. package/dist/model-studio.addon.js +237 -61
  10. package/dist/model-studio.addon.mjs +237 -61
  11. package/dist/{player-overlays-CXrX1-YL.mjs → player-overlays-DZwcDBXd.mjs} +1 -1
  12. package/dist/remoteEntry.js +1 -1
  13. package/dist/{responsive-DXfPuDT3.mjs → responsive-B15MRUZC.mjs} +1 -1
  14. package/dist/{scene-monitor-copy-Dz6o2ZDO.mjs → scene-monitor-copy-JIcLgE--.mjs} +1 -1
  15. package/dist/{square-BPjfdvzl.mjs → square-E31fCPCW.mjs} +1 -1
  16. package/dist/{trash-2-_NoItStt.mjs → trash-2-DBIIPVno.mjs} +1 -1
  17. package/dist/{virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_model_studio_page__remoteEntry_js-EdzqlJkG.mjs → virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_model_studio_page__remoteEntry_js-Dcfz5AcL.mjs} +1 -1
  18. package/package.json +1 -1
  19. package/dist/_virtual_mf___mfe_internal__addon_model_studio_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-B_Vs5gXw.mjs +0 -26
@@ -368,7 +368,7 @@ function buildScryptedRegistryDescriptor(entry) {
368
368
  };
369
369
  }
370
370
  //#endregion
371
- //#region ../types/dist/event-category-DOl51-Ij.mjs
371
+ //#region ../types/dist/event-category-BfJwUd2S.mjs
372
372
  var EventCategory = /* @__PURE__ */ function(EventCategory) {
373
373
  EventCategory["SystemBoot"] = "system.boot";
374
374
  EventCategory["SystemAddonsReady"] = "system.addons-ready";
@@ -685,6 +685,15 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
685
685
  */
686
686
  EventCategory["PipelineDetectionBlind"] = "pipeline.detection-blind";
687
687
  /**
688
+ * A camera's motion source has fired constantly with no subject for an hour
689
+ * (motion duty or session count over the bar, zero detections) — it is not
690
+ * blind, its motion zones or sensitivity want tuning (D907). Paired with
691
+ * {@link PipelineMotionCalm}.
692
+ */
693
+ EventCategory["PipelineMotionNoisy"] = "pipeline.motion-noisy";
694
+ /** The recovery edge of {@link PipelineMotionNoisy}: the motion fell back, or a detection arrived. */
695
+ EventCategory["PipelineMotionCalm"] = "pipeline.motion-calm";
696
+ /**
688
697
  * Per-camera pipeline config was mutated by the orchestrator
689
698
  * (3-level settings change via `setAgentAddonDefaults` /
690
699
  * `setCameraStepToggle` / `setCameraPipelineForAgent` or a
@@ -1056,6 +1065,14 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
1056
1065
  EventCategory["BackupRestored"] = "backup.restored";
1057
1066
  EventCategory["NotificationDispatched"] = "notification.dispatched";
1058
1067
  EventCategory["NotificationFailed"] = "notification.failed";
1068
+ /**
1069
+ * A notification rule that cannot work (D905): its stored row does not load,
1070
+ * or it still names a device / delivery target the prune CONFIRMED deleted.
1071
+ * One edge per rule per distinct set of reasons; never on an unanswered read.
1072
+ */
1073
+ EventCategory["NotificationRuleBroken"] = "notification.rule-broken";
1074
+ /** The clear of {@link NotificationRuleBroken}: the rule loads and names nothing deleted. */
1075
+ EventCategory["NotificationRuleRepaired"] = "notification.rule-repaired";
1059
1076
  EventCategory["DeviceUpdated"] = "device.updated";
1060
1077
  /**
1061
1078
  * Transport-level connectivity. Emitted by the device driver when
@@ -5783,7 +5800,7 @@ var ZodIssueCode = {
5783
5800
  var ZodFirstPartyTypeKind;
5784
5801
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
5785
5802
  //#endregion
5786
- //#region ../types/dist/sleep-_sV1BE2f.mjs
5803
+ //#region ../types/dist/sleep-DJFUfKvA.mjs
5787
5804
  /**
5788
5805
  * The audio chunk plane's byte format, and the ONE expansion from a coded
5789
5806
  * window to float samples (D455).
@@ -8245,7 +8262,7 @@ var EntryDescriptorSchema = object({
8245
8262
  /** JSON Schema of the entry body; `secret: true` marks a password field. */
8246
8263
  fields: record(string(), unknown())
8247
8264
  }).strict();
8248
- /** What crosses the wire and sits in the engine's catalog: JSON only, no Zod. */
8265
+ /** What crosses the wire from an addon: JSON only, no Zod. An unknown key is refused. */
8249
8266
  var RecordKindDeclarationSchema = object({
8250
8267
  database: _enum(RECORD_DATABASES).default("settings"),
8251
8268
  class: _enum(RECORD_CLASSES),
@@ -8264,14 +8281,6 @@ var RecordKindDeclarationSchema = object({
8264
8281
  secretPaths: array(string().min(1)).default([]),
8265
8282
  /** The id key of each array that carries a secret (`{ headers: 'name' }`). */
8266
8283
  secretArrayKeys: record(string(), string()).default({}),
8267
- /**
8268
- * RETIRED (D900): the legacy table a kind adopted from during the records
8269
- * migration. Nothing declares it any more and nothing reads it; the schema
8270
- * still ACCEPTS it because the catalog rows the migration wrote carry it
8271
- * (an orphaned kind is never redeclared) and an addon built before the
8272
- * removal still sends it. Never set it.
8273
- */
8274
- adoptsFrom: string().min(1).optional(),
8275
8284
  /** Kinds that must agree through `transact` sit in one file under one family name. */
8276
8285
  transactFamily: string().min(1).optional(),
8277
8286
  entry: EntryDescriptorSchema.optional()
@@ -13155,17 +13164,6 @@ object({
13155
13164
  createdAt: number(),
13156
13165
  updatedAt: number()
13157
13166
  });
13158
- object({
13159
- id: string(),
13160
- label: string(),
13161
- isAdmin: boolean().default(false),
13162
- allowedProviders: AllowedProviderSchema,
13163
- allowedDevices: AllowedDevicesSchema,
13164
- tokenHash: string(),
13165
- tokenPrefix: string(),
13166
- createdAt: number(),
13167
- lastUsedAt: number().optional()
13168
- });
13169
13167
  object({
13170
13168
  id: string(),
13171
13169
  userId: string(),
@@ -17086,16 +17084,36 @@ var RecordKindStateSchema = _enum([
17086
17084
  var DeclareKindResultSchema = object({
17087
17085
  kindId: number().int(),
17088
17086
  state: RecordKindStateSchema,
17089
- createdIndexes: array(string()),
17090
- /**
17091
- * RETIRED (D900): always `null`. It carried the records-migration boot guard;
17092
- * it stays on the wire, null, because an addon built before the removal reads
17093
- * an ABSENT field as "adoption pending" and refuses to start.
17094
- */
17095
- adoptionPending: _null()
17087
+ createdIndexes: array(string())
17096
17088
  });
17097
17089
  /** Keychain refs a write released (the old marker is gone from the row): the owner deletes the values. */
17098
17090
  var SecretRefsList = array(string());
17091
+ /**
17092
+ * One op of a `transact`: the single-row writes, each on a kind of the caller.
17093
+ * All ops of one call share ONE database file and ONE `transactFamily`.
17094
+ */
17095
+ var RecordTransactOpSchema = discriminatedUnion("op", [
17096
+ object({
17097
+ op: literal("put"),
17098
+ kind: RecordKindNameSchema,
17099
+ record: RecordInputSchema,
17100
+ ifRev: number().int().min(0).optional()
17101
+ }),
17102
+ object({
17103
+ op: literal("patch"),
17104
+ kind: RecordKindNameSchema,
17105
+ id: RecordIdSchema,
17106
+ data: RecordBodySchema,
17107
+ at: number().int().nullable().optional(),
17108
+ expiresAt: number().int().nullable().optional(),
17109
+ ifRev: number().int().min(1).optional()
17110
+ }),
17111
+ object({
17112
+ op: literal("delete"),
17113
+ kind: RecordKindNameSchema,
17114
+ id: RecordIdSchema
17115
+ })
17116
+ ]);
17099
17117
  var RecordSecretRefsSchema = record(string(), record(string(), string()));
17100
17118
  method(object({ kinds: record(RecordKindNameSchema, RecordKindDeclarationSchema) }), object({ kinds: record(string(), DeclareKindResultSchema) }), {
17101
17119
  kind: "mutation",
@@ -17202,6 +17220,16 @@ method(object({ kinds: record(RecordKindNameSchema, RecordKindDeclarationSchema)
17202
17220
  }), {
17203
17221
  kind: "mutation",
17204
17222
  auth: "admin"
17223
+ }), method(object({ ops: array(RecordTransactOpSchema).min(1).max(RECORD_BATCH_MAX) }), object({
17224
+ results: array(object({
17225
+ rev: number().int().nullable(),
17226
+ deleted: boolean()
17227
+ })),
17228
+ releasedRefs: SecretRefsList,
17229
+ secretRefs: SecretRefsList
17230
+ }), {
17231
+ kind: "mutation",
17232
+ auth: "admin"
17205
17233
  }), method(object({
17206
17234
  deviceId: number().int(),
17207
17235
  kinds: array(RecordKindNameSchema).optional()
@@ -42566,9 +42594,13 @@ var NcSystemEventKindSchema = _enum([
42566
42594
  "node-updating",
42567
42595
  "node-inference-unavailable",
42568
42596
  "detection-blind",
42597
+ "motion-noisy",
42598
+ "motion-calm",
42569
42599
  "recording-stalled",
42570
42600
  "recording-healthy",
42571
42601
  "recording-degraded",
42602
+ "device-attention-required",
42603
+ "device-attention-resolved",
42572
42604
  "storage-location-low",
42573
42605
  "storage-location-critical",
42574
42606
  "storage-location-ok",
@@ -42592,6 +42624,8 @@ var NcSystemEventKindSchema = _enum([
42592
42624
  "alert-critical",
42593
42625
  "alert-error",
42594
42626
  "alert-critical-resolved",
42627
+ "rule-broken",
42628
+ "rule-repaired",
42595
42629
  "camera-online",
42596
42630
  "camera-offline",
42597
42631
  "camera-disabled",
@@ -55023,6 +55057,16 @@ object({
55023
55057
  powerState: string().nullable(),
55024
55058
  saltLevel: DishwasherConsumableLevelSchema.nullable(),
55025
55059
  rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
55060
+ /**
55061
+ * True while the appliance asks for its filter to be cleaned (smart-filter, filter-system or
55062
+ * combined care-and-filter reminder raised); false when every such reminder reads clear; null
55063
+ * when none is reported. A cleared reminder is not an unknown one.
55064
+ */
55065
+ filterCleaningDue: boolean().nullable(),
55066
+ /** True while the machine-care (descaling / cleaning-program) reminder is raised; false when clear; null when not reported. */
55067
+ machineCareDue: boolean().nullable(),
55068
+ /** Program runs left before the machine-care reminder is due; null when the appliance does not say. */
55069
+ machineCareRemainingRuns: number().int().nonnegative().nullable(),
55026
55070
  /** Option states: null when the appliance does not expose the option or has not said. */
55027
55071
  halfLoad: boolean().nullable(),
55028
55072
  hygienePlus: boolean().nullable(),
@@ -61640,16 +61684,6 @@ var UpdateUserInputSchema = object({
61640
61684
  allowedDevices: record(string(), union([array(string()), literal("*")])).optional(),
61641
61685
  scopes: array(TokenScopeSchema).optional()
61642
61686
  });
61643
- var ApiKeySummarySchema = object({
61644
- id: string(),
61645
- label: string(),
61646
- isAdmin: boolean().default(false),
61647
- allowedProviders: union([array(string()), literal("*")]).optional(),
61648
- allowedDevices: record(string(), union([array(string()), literal("*")])).optional(),
61649
- tokenPrefix: string(),
61650
- createdAt: number(),
61651
- lastUsedAt: number().optional()
61652
- });
61653
61687
  var OauthSessionSummarySchema = object({
61654
61688
  id: string(),
61655
61689
  userId: string(),
@@ -61671,8 +61705,7 @@ var TotpStatusSchema = object({
61671
61705
  confirmedAt: number().nullable()
61672
61706
  });
61673
61707
  /**
61674
- * user-management — singleton capability for user accounts and the
61675
- * legacy API-key rows.
61708
+ * user-management — singleton capability for user accounts.
61676
61709
  *
61677
61710
  * v2 model: every method gated by `auth: 'admin'`. Admin-only delegation
61678
61711
  * — the subset check on `setUserScopes` is moot
@@ -61728,10 +61761,6 @@ method(_void(), array(UserSummarySchema), { auth: "admin" }), method(CreateUserI
61728
61761
  }), UserSummarySchema.extend({ passwordHash: string() }).nullable(), {
61729
61762
  kind: "mutation",
61730
61763
  access: "view"
61731
- }), method(_void(), array(ApiKeySummarySchema), { auth: "admin" }), method(object({ id: string() }), object({ success: literal(true) }), {
61732
- kind: "mutation",
61733
- auth: "admin",
61734
- access: "delete"
61735
61764
  }), method(object({ userId: string() }), TotpSetupResultSchema, {
61736
61765
  kind: "mutation",
61737
61766
  auth: "admin",
@@ -69342,6 +69371,12 @@ Object.freeze({
69342
69371
  addonId: null,
69343
69372
  access: "view"
69344
69373
  },
69374
+ "records.transact": {
69375
+ capName: "records",
69376
+ capScope: "system",
69377
+ addonId: null,
69378
+ access: "create"
69379
+ },
69345
69380
  "sceneMonitor.captureReference": {
69346
69381
  capName: "scene-monitor",
69347
69382
  capScope: "device",
@@ -70674,12 +70709,6 @@ Object.freeze({
70674
70709
  addonId: null,
70675
70710
  access: "view"
70676
70711
  },
70677
- "userManagement.listApiKeys": {
70678
- capName: "user-management",
70679
- capScope: "system",
70680
- addonId: null,
70681
- access: "view"
70682
- },
70683
70712
  "userManagement.listExternalIdentities": {
70684
70713
  capName: "user-management",
70685
70714
  capScope: "system",
@@ -70734,12 +70763,6 @@ Object.freeze({
70734
70763
  addonId: null,
70735
70764
  access: "create"
70736
70765
  },
70737
- "userManagement.revokeApiKey": {
70738
- capName: "user-management",
70739
- capScope: "system",
70740
- addonId: null,
70741
- access: "delete"
70742
- },
70743
70766
  "userManagement.revokeOauthSession": {
70744
70767
  capName: "user-management",
70745
70768
  capScope: "system",
@@ -74104,9 +74127,13 @@ new Map(Object.entries({
74104
74127
  "stream-online": "device-events",
74105
74128
  "stream-offline": "device-events",
74106
74129
  "detection-blind": "device-events",
74130
+ "motion-noisy": "device-events",
74131
+ "motion-calm": "device-events",
74107
74132
  "recording-stalled": "device-events",
74108
74133
  "recording-healthy": "device-events",
74109
74134
  "recording-degraded": "device-events",
74135
+ "device-attention-required": "device-events",
74136
+ "device-attention-resolved": "device-events",
74110
74137
  "node-online": "system",
74111
74138
  "node-offline": "system",
74112
74139
  "node-restarting": "system",
@@ -74123,6 +74150,8 @@ new Map(Object.entries({
74123
74150
  "alert-critical": "system",
74124
74151
  "alert-error": "system",
74125
74152
  "alert-critical-resolved": "system",
74153
+ "rule-broken": "system",
74154
+ "rule-repaired": "system",
74126
74155
  "storage-location-low": "system",
74127
74156
  "storage-location-critical": "system",
74128
74157
  "storage-location-ok": "system",
@@ -74187,6 +74216,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
74187
74216
  label: "Detecting nothing",
74188
74217
  kinds: ["detection-blind"]
74189
74218
  },
74219
+ {
74220
+ id: "motion-noise",
74221
+ family: "device-events",
74222
+ label: "Motion without a subject",
74223
+ kinds: ["motion-noisy", "motion-calm"]
74224
+ },
74190
74225
  {
74191
74226
  id: "recording",
74192
74227
  family: "device-events",
@@ -74197,6 +74232,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
74197
74232
  "recording-degraded"
74198
74233
  ]
74199
74234
  },
74235
+ {
74236
+ id: "device-attention",
74237
+ family: "device-events",
74238
+ label: "Needs attention",
74239
+ kinds: ["device-attention-required", "device-attention-resolved"]
74240
+ },
74200
74241
  {
74201
74242
  id: "nodes",
74202
74243
  family: "system",
@@ -74257,6 +74298,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
74257
74298
  "alert-critical-resolved"
74258
74299
  ]
74259
74300
  },
74301
+ {
74302
+ id: "rule-health",
74303
+ family: "system",
74304
+ label: "Notification rules",
74305
+ kinds: ["rule-broken", "rule-repaired"]
74306
+ },
74260
74307
  {
74261
74308
  id: "alarm",
74262
74309
  family: "alarm",
@@ -74330,6 +74377,7 @@ var ALERT_EPISODE = [
74330
74377
  "alert-error",
74331
74378
  "alert-critical-resolved"
74332
74379
  ];
74380
+ var DEVICE_ATTENTION = ["device-attention-required", "device-attention-resolved"];
74333
74381
  var UPDATES = [
74334
74382
  "addon-update-available",
74335
74383
  "server-update-available",
@@ -74359,9 +74407,12 @@ var DEVICE_EVENTS = [
74359
74407
  "stream-online",
74360
74408
  "stream-offline",
74361
74409
  "detection-blind",
74410
+ "motion-noisy",
74411
+ "motion-calm",
74362
74412
  "recording-stalled",
74363
74413
  "recording-healthy",
74364
74414
  "recording-degraded",
74415
+ ...DEVICE_ATTENTION,
74365
74416
  ...ALARM
74366
74417
  ];
74367
74418
  /** Every kind a summary may speak about — the two summarisable families. */
@@ -74529,7 +74580,13 @@ var STATE_SUMMARY_VARS = [
74529
74580
  [...RULE_TEXT],
74530
74581
  [...RULE_TEXT],
74531
74582
  [...RULE_TEXT],
74532
- ([...RULE_TEXT], [...ALERT_EPISODE]),
74583
+ [...RULE_TEXT],
74584
+ [...RULE_TEXT],
74585
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
74586
+ [...RULE_TEXT],
74587
+ [...RULE_TEXT],
74588
+ [...RULE_TEXT],
74589
+ [...RULE_TEXT],
74533
74590
  [...RULE_TEXT],
74534
74591
  [...RULE_TEXT],
74535
74592
  [...RULE_TEXT],
@@ -74547,11 +74604,11 @@ var STATE_SUMMARY_VARS = [
74547
74604
  [...RULE_TEXT],
74548
74605
  [...RULE_TEXT],
74549
74606
  [...RULE_TEXT],
74607
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
74550
74608
  ([...RULE_TEXT], [...ALERT_EPISODE]),
74609
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
74551
74610
  ([...RULE_TEXT], [...ALERT_EPISODE]),
74552
- ([...RULE_TEXT], [...ALERT_EPISODE]),
74553
- ([...RULE_TEXT], [...ALERT_EPISODE]),
74554
- ([...RULE_TEXT], [...ALERT_EPISODE]),
74611
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
74555
74612
  [...RULE_TEXT],
74556
74613
  [...RULE_TEXT],
74557
74614
  [...RULE_TEXT],
@@ -74572,6 +74629,125 @@ var STATE_SUMMARY_VARS = [
74572
74629
  [...RULE_TEXT],
74573
74630
  ...STATE_SUMMARY_VARS
74574
74631
  ];
74632
+ new Map([
74633
+ {
74634
+ id: "device-connectivity",
74635
+ family: "device-events",
74636
+ label: "Device connectivity (offline / back online)",
74637
+ bad: ["device-offline"],
74638
+ recovery: ["device-online"],
74639
+ snapshotLabel: "Devices offline now",
74640
+ snapshotSection: "device-state"
74641
+ },
74642
+ {
74643
+ id: "device-switch",
74644
+ family: "device-events",
74645
+ label: "Device switched off / back on",
74646
+ bad: ["device-disabled"],
74647
+ recovery: ["device-enabled"],
74648
+ snapshotLabel: "Devices switched off now",
74649
+ snapshotSection: "device-state"
74650
+ },
74651
+ {
74652
+ id: "stream-connectivity",
74653
+ family: "device-events",
74654
+ label: "Stream connectivity (offline / back online)",
74655
+ bad: ["stream-offline"],
74656
+ recovery: ["stream-online"],
74657
+ snapshotLabel: "Streams offline now",
74658
+ snapshotSection: "streams"
74659
+ },
74660
+ {
74661
+ id: "battery",
74662
+ family: "device-events",
74663
+ label: "Battery (low / back to normal)",
74664
+ bad: ["device-battery-low"],
74665
+ recovery: ["device-battery-normal"],
74666
+ snapshotLabel: "Batteries low now",
74667
+ snapshotSection: "battery"
74668
+ },
74669
+ {
74670
+ id: "consumables",
74671
+ family: "device-events",
74672
+ label: "Consumables (low / replaced)",
74673
+ bad: ["device-consumable-low"],
74674
+ recovery: ["device-consumable-normal"],
74675
+ snapshotLabel: "Consumables low now",
74676
+ snapshotSection: "consumables"
74677
+ },
74678
+ {
74679
+ id: "tanks",
74680
+ family: "device-events",
74681
+ label: "Tanks (low or full / back to normal)",
74682
+ bad: ["device-tank-low", "device-tank-full"],
74683
+ recovery: ["device-tank-normal"],
74684
+ snapshotLabel: "Tanks low or full now",
74685
+ snapshotSection: "tanks"
74686
+ },
74687
+ {
74688
+ id: "motion-noise",
74689
+ family: "device-events",
74690
+ label: "Motion without a subject (constant / calm again)",
74691
+ bad: ["motion-noisy"],
74692
+ recovery: ["motion-calm"],
74693
+ snapshotLabel: "Cameras with constant motion now",
74694
+ snapshotSection: null
74695
+ },
74696
+ {
74697
+ id: "recording-health",
74698
+ family: "device-events",
74699
+ label: "Recording health (stalled or degraded / recording again)",
74700
+ bad: ["recording-stalled", "recording-degraded"],
74701
+ recovery: ["recording-healthy"],
74702
+ snapshotLabel: "Recordings stalled now",
74703
+ snapshotSection: null
74704
+ },
74705
+ {
74706
+ id: "device-attention",
74707
+ family: "device-events",
74708
+ label: "Device needs attention (raised / resolved)",
74709
+ bad: ["device-attention-required"],
74710
+ recovery: ["device-attention-resolved"],
74711
+ snapshotLabel: "Devices needing attention now",
74712
+ snapshotSection: null
74713
+ },
74714
+ {
74715
+ id: "node-connectivity",
74716
+ family: "system",
74717
+ label: "Node connectivity (offline / back online)",
74718
+ bad: ["node-offline"],
74719
+ recovery: ["node-online"],
74720
+ snapshotLabel: "Nodes offline now",
74721
+ snapshotSection: "nodes"
74722
+ },
74723
+ {
74724
+ id: "storage-space",
74725
+ family: "system",
74726
+ label: "Storage space (low or critical / ok again)",
74727
+ bad: ["storage-location-low", "storage-location-critical"],
74728
+ recovery: ["storage-location-ok"],
74729
+ snapshotLabel: "Storage locations low now",
74730
+ snapshotSection: null
74731
+ },
74732
+ {
74733
+ id: "critical-alerts",
74734
+ family: "system",
74735
+ label: "Critical alerts (raised / resolved)",
74736
+ bad: ["alert-critical"],
74737
+ recovery: ["alert-critical-resolved"],
74738
+ snapshotLabel: "Critical alerts open now",
74739
+ snapshotSection: null
74740
+ },
74741
+ {
74742
+ id: "rule-health",
74743
+ family: "system",
74744
+ label: "Rule health (broken / repaired)",
74745
+ bad: ["rule-broken"],
74746
+ recovery: ["rule-repaired"],
74747
+ snapshotLabel: "Notification rules broken now",
74748
+ snapshotSection: null
74749
+ }
74750
+ ].flatMap((spec) => [...spec.bad, ...spec.recovery].map((kind) => [kind, spec])));
74575
74751
  new Set([
74576
74752
  "disarmed",
74577
74753
  "armed_home",
@@ -1,6 +1,6 @@
1
1
  import { S as e, d as t, u as n, v as r } from "./_virtual_mf___mfe_internal__addon_model_studio_page__loadShare__react__loadShare__.js-DMBKVIH7.mjs";
2
2
  import { n as i, r as a, t as o } from "./_virtual_mf___mfe_internal__addon_model_studio_page__loadShare__react_mf_1_jsx_mf_2_runtime__loadShare__.js-ds_Ehzaa.mjs";
3
- import { g as s, h as c } from "./responsive-DXfPuDT3.mjs";
3
+ import { g as s, h as c } from "./responsive-B15MRUZC.mjs";
4
4
  var l = s("chevron-down", [["path", {
5
5
  d: "m6 9 6 6 6-6",
6
6
  key: "qrunsl"
@@ -1,2 +1,2 @@
1
- import { n as e, t } from "./virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_model_studio_page__remoteEntry_js-EdzqlJkG.mjs";
1
+ import { n as e, t } from "./virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_model_studio_page__remoteEntry_js-Dcfz5AcL.mjs";
2
2
  export { t as get, e as init };
@@ -1,6 +1,6 @@
1
1
  import { S as e, d as t, g as n, i as r, l as i, n as a, r as o, u as s, v as c, y as l } from "./_virtual_mf___mfe_internal__addon_model_studio_page__loadShare__react__loadShare__.js-DMBKVIH7.mjs";
2
2
  import "./_virtual_mf___mfe_internal__addon_model_studio_page__loadShare__react_mf_1_jsx_mf_2_runtime__loadShare__.js-ds_Ehzaa.mjs";
3
- import { g as u } from "./_virtual_mf___mfe_internal__addon_model_studio_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-B_Vs5gXw.mjs";
3
+ import { g as u } from "./_virtual_mf___mfe_internal__addon_model_studio_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-8XY35EWj.mjs";
4
4
  //#region ../../node_modules/lucide-react/dist/esm/shared/src/utils/mergeClasses.js
5
5
  e();
6
6
  var d = (...e) => e.filter((e, t, n) => !!e && e.trim() !== "" && n.indexOf(e) === t).join(" ").trim(), f = (e) => e.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase(), p = (e) => e.replace(/^([A-Z])|[\s-_]+(\w)/g, (e, t, n) => n ? n.toUpperCase() : t.toLowerCase()), m = (e) => {
@@ -1,6 +1,6 @@
1
1
  import { S as e, g as t, l as n, v as r } from "./_virtual_mf___mfe_internal__addon_model_studio_page__loadShare__react__loadShare__.js-DMBKVIH7.mjs";
2
2
  import { n as i } from "./ui-text-BqZa5BNK.mjs";
3
- import { g as a } from "./responsive-DXfPuDT3.mjs";
3
+ import { g as a } from "./responsive-B15MRUZC.mjs";
4
4
  var o = a("camera", [["path", {
5
5
  d: "M13.997 4a2 2 0 0 1 1.76 1.05l.486.9A2 2 0 0 0 18.003 7H20a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V9a2 2 0 0 1 2-2h1.997a2 2 0 0 0 1.759-1.048l.489-.904A2 2 0 0 1 10.004 4z",
6
6
  key: "18u6gg"
@@ -1,4 +1,4 @@
1
- import { g as e } from "./responsive-DXfPuDT3.mjs";
1
+ import { g as e } from "./responsive-B15MRUZC.mjs";
2
2
  var t = e("eye-off", [
3
3
  ["path", {
4
4
  d: "M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49",
@@ -1,4 +1,4 @@
1
- import { g as e } from "./responsive-DXfPuDT3.mjs";
1
+ import { g as e } from "./responsive-B15MRUZC.mjs";
2
2
  var t = e("trash-2", [
3
3
  ["path", {
4
4
  d: "M10 11v6",
@@ -2753,7 +2753,7 @@ async function rr(e) {
2753
2753
  }
2754
2754
  }
2755
2755
  async function ir() {
2756
- return tr ||= rr(() => import("./_virtual_mf-localSharedImportMap___mfe_internal__addon_model_studio_page-B_TQF1Vq.mjs")).catch((e) => {
2756
+ return tr ||= rr(() => import("./_virtual_mf-localSharedImportMap___mfe_internal__addon_model_studio_page-D4_cFV_R.mjs")).catch((e) => {
2757
2757
  throw tr = void 0, e;
2758
2758
  }), tr;
2759
2759
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-model-studio",
3
- "version": "1.1.283",
3
+ "version": "1.1.285",
4
4
  "description": "Custom detection model registry, conversion & distribution for CamStack",
5
5
  "keywords": [
6
6
  "camstack",