@camstack/addon-post-analysis 1.2.86 → 1.2.91

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.
@@ -7855,6 +7855,12 @@ var RecordingConfigSchema = object({
7855
7855
  /** DERIVED summary of `bands`, stamped by the recorder on every save.
7856
7856
  * Authoring it has no effect — see {@link RecordingStorageModeSchema}. */
7857
7857
  mode: RecordingStorageModeSchema.optional(),
7858
+ /**
7859
+ * Which assigned broker slots to record. Absent / empty = {@link
7860
+ * DEFAULT_RECORDING_PROFILES} (`high`+`low`) intersected with the
7861
+ * camera's currently assigned slots — never `mid` unless the operator
7862
+ * picks it, and never a slot the broker has not assigned.
7863
+ */
7858
7864
  profiles: array(CamProfileSchema).optional(),
7859
7865
  segmentSeconds: number().int().positive().optional(),
7860
7866
  /**
@@ -7879,7 +7885,7 @@ var RecordingConfigSchema = object({
7879
7885
  *
7880
7886
  * THE one definition: the recorder stamps `config.mode` with it on save and
7881
7887
  * reports it as the cap's `activeMode`, and the settings UI reads it back to
7882
- * decide which authoring tab a config opens in. Two copies would drift, and the
7888
+ * highlight the Off/Events/Continuous shortcut. Two copies would drift, and the
7883
7889
  * symptom (a status dot disagreeing with what is being recorded) is exactly the
7884
7890
  * bug this field was added to fix.
7885
7891
  */
@@ -7951,7 +7957,11 @@ var RelocateFootageInputSchema = object({
7951
7957
  profiles: array(string()).optional(),
7952
7958
  /** Copy throttle in MB/s (default 40) — the drain is a background chore,
7953
7959
  * never allowed to starve live writers. */
7954
- throttleMbps: number().min(1).max(1e3).optional()
7960
+ throttleMbps: number().min(1).max(1e3).optional(),
7961
+ /** Move only segments whose startMs is >= this. Absent = the whole source
7962
+ * pile. Used when a full drain is too expensive and the operator only
7963
+ * wants the recent window on the new disk. */
7964
+ sinceMs: number().int().optional()
7955
7965
  });
7956
7966
  /** Internal, lease-scoped participant operation. It is intentionally separate
7957
7967
  * from persistent recording settings: a migration never changes
@@ -17986,6 +17996,12 @@ var TrackCascadeCountsSchema = object({
17986
17996
  /** Per-track CLIP search vectors removed (best-effort). */
17987
17997
  embeddings: number().int()
17988
17998
  });
17999
+ /** Disk-wins reconcile: media rows whose blobs are gone, then empty tracks. */
18000
+ var DiskReconcileCountsSchema = object({
18001
+ mediaDropped: number().int(),
18002
+ tracks: number().int(),
18003
+ events: number().int()
18004
+ });
17989
18005
  /** Event-store footprint for one camera. */
17990
18006
  var EventStoreDeviceFootprintSchema = object({
17991
18007
  deviceId: number(),
@@ -18271,6 +18287,17 @@ var pipelineAnalyticsCapability = {
18271
18287
  auth: "admin"
18272
18288
  }),
18273
18289
  /**
18290
+ * Disk-wins reconcile for one camera. Drops media index rows whose blobs
18291
+ * are gone, then cascades tracks (including favourited and staging) that
18292
+ * have no remaining files. Enrolled identity/vehicle/scene media is never
18293
+ * probed. Trackless motion/audio events with no remaining file are dropped,
18294
+ * including snapshot-less rows.
18295
+ */
18296
+ reconcileFromDisk: method(object({ deviceId: number() }), DiskReconcileCountsSchema, {
18297
+ kind: "mutation",
18298
+ auth: "admin"
18299
+ }),
18300
+ /**
18274
18301
  * Delete whole tracks (object events) by id for the given device,
18275
18302
  * cascading their media in lockstep. Returns the number of tracks
18276
18303
  * actually deleted plus the ids that could not be removed.
@@ -20105,6 +20132,24 @@ var CameraStatusDegradationSchema = object({
20105
20132
  *
20106
20133
  * See spec: `docs/superpowers/specs/2026-06-24-camera-status-aggregator-cap.md`
20107
20134
  */
20135
+ var DiskReconcileJobSchema = object({
20136
+ state: _enum([
20137
+ "idle",
20138
+ "running",
20139
+ "done",
20140
+ "error"
20141
+ ]),
20142
+ total: number().int().nonnegative(),
20143
+ completed: number().int().nonnegative(),
20144
+ currentDeviceId: number().int().nullable(),
20145
+ failed: array(number().int()).readonly(),
20146
+ mediaDropped: number().int().nonnegative(),
20147
+ tracks: number().int().nonnegative(),
20148
+ events: number().int().nonnegative(),
20149
+ startedAtMs: number().int().nullable(),
20150
+ finishedAtMs: number().int().nullable(),
20151
+ error: string().nullable()
20152
+ });
20108
20153
  var CameraStatusSchema = object({
20109
20154
  deviceId: number(),
20110
20155
  assignment: CameraAssignmentStatusSchema,
@@ -20336,7 +20381,10 @@ method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
20336
20381
  }), CameraSwitchGroupSchema, {
20337
20382
  kind: "mutation",
20338
20383
  auth: "admin"
20339
- }), method(object({ deviceId: number() }), CameraStatusSchema), method(object({ deviceIds: array(number()).optional() }), array(CameraStatusSchema).readonly()), method(_void(), array(PipelineTemplateSchema).readonly()), method(object({
20384
+ }), method(object({ deviceId: number() }), CameraStatusSchema), method(object({ deviceIds: array(number()).optional() }), array(CameraStatusSchema).readonly()), method(_void(), DiskReconcileJobSchema, {
20385
+ kind: "mutation",
20386
+ auth: "admin"
20387
+ }), method(_void(), DiskReconcileJobSchema, { auth: "admin" }), method(_void(), array(PipelineTemplateSchema).readonly()), method(object({
20340
20388
  name: string(),
20341
20389
  description: string().optional(),
20342
20390
  config: CameraPipelineConfigSchema
@@ -21968,7 +22016,14 @@ var SearchResultSchema = object({
21968
22016
  });
21969
22017
  var AutoUpdateSettingsSchema = object({
21970
22018
  channel: ChannelSchema,
21971
- intervalSeconds: number()
22019
+ intervalSeconds: number(),
22020
+ /**
22021
+ * Cadence of the "an update exists" POLLER, in seconds. Independent of
22022
+ * `channel`: the poller runs while auto-apply is `off`, because being told
22023
+ * about a publish and installing it are different decisions. Clamped
22024
+ * server-side to 900 s … 604800 s; defaults to 21600 s (6 h).
22025
+ */
22026
+ updateCheckIntervalSeconds: number()
21972
22027
  });
21973
22028
  var AddonAutoUpdateSchema = ChannelWithInheritSchema;
21974
22029
  var RestartAddonResultSchema = unknown();
@@ -22109,7 +22164,9 @@ method(_void(), array(AddonListItemSchema).readonly()), method(object({
22109
22164
  auth: "admin"
22110
22165
  }), method(_void(), AutoUpdateSettingsSchema, { auth: "admin" }), method(object({
22111
22166
  channel: ChannelSchema,
22112
- intervalSeconds: number().min(300).max(86400).optional()
22167
+ intervalSeconds: number().min(300).max(86400).optional(),
22168
+ /** Availability-poll cadence; see AutoUpdateSettingsSchema. */
22169
+ updateCheckIntervalSeconds: number().min(900).max(604800).optional()
22113
22170
  }), unknown(), {
22114
22171
  kind: "mutation",
22115
22172
  auth: "admin"
@@ -34268,6 +34325,12 @@ Object.freeze({
34268
34325
  addonId: null,
34269
34326
  access: "create"
34270
34327
  },
34328
+ "pipelineAnalytics.reconcileFromDisk": {
34329
+ capName: "pipeline-analytics",
34330
+ capScope: "device",
34331
+ addonId: null,
34332
+ access: "create"
34333
+ },
34271
34334
  "pipelineAnalytics.refreshStorageLocationsForMigration": {
34272
34335
  capName: "pipeline-analytics",
34273
34336
  capScope: "device",
@@ -34670,6 +34733,12 @@ Object.freeze({
34670
34733
  addonId: null,
34671
34734
  access: "view"
34672
34735
  },
34736
+ "pipelineOrchestrator.getReconcileFromDiskStatus": {
34737
+ capName: "pipeline-orchestrator",
34738
+ capScope: "system",
34739
+ addonId: null,
34740
+ access: "view"
34741
+ },
34673
34742
  "pipelineOrchestrator.listAgentSettings": {
34674
34743
  capName: "pipeline-orchestrator",
34675
34744
  capScope: "system",
@@ -34694,6 +34763,12 @@ Object.freeze({
34694
34763
  addonId: null,
34695
34764
  access: "create"
34696
34765
  },
34766
+ "pipelineOrchestrator.reconcileFromDisk": {
34767
+ capName: "pipeline-orchestrator",
34768
+ capScope: "system",
34769
+ addonId: null,
34770
+ access: "create"
34771
+ },
34697
34772
  "pipelineOrchestrator.removeAgentSettings": {
34698
34773
  capName: "pipeline-orchestrator",
34699
34774
  capScope: "system",
@@ -37685,6 +37760,11 @@ Object.freeze({
37685
37760
  form: "single",
37686
37761
  optional: true
37687
37762
  }],
37763
+ "pipelineAnalytics.reconcileFromDisk": [{
37764
+ name: "deviceId",
37765
+ form: "single",
37766
+ optional: false
37767
+ }],
37688
37768
  "pipelineAnalytics.restageRetrainTrack": [{
37689
37769
  name: "deviceId",
37690
37770
  form: "single",
@@ -38464,6 +38544,20 @@ function isScheduleActive(schedule, atMs) {
38464
38544
  return schedule.invert === true ? !inside : inside;
38465
38545
  }
38466
38546
  /**
38547
+ * Does `filter` say anything about `kind`?
38548
+ *
38549
+ * `false` means the filter is not part of this kind's vocabulary: the engine
38550
+ * ignores it and an editor hides its input. It never means "excluded".
38551
+ */
38552
+ function systemEventFilterApplies(kind, filter) {
38553
+ switch (filter) {
38554
+ case "deviceIds": return kind.startsWith("device-") || kind.startsWith("stream-") || kind === "detection-blind" || kind === "alarm-triggered" || kind === "export-completed";
38555
+ case "deviceTypes": return kind.startsWith("device-") || kind === "detection-blind";
38556
+ case "nodeIds": return kind.startsWith("node-") || kind === "addon-update-available" || kind === "addon-updated" || kind === "server-update-available" || kind === "server-updated";
38557
+ case "packageNames": return kind.endsWith("update-available") || kind === "addon-updated" || kind === "server-updated";
38558
+ }
38559
+ }
38560
+ /**
38467
38561
  * TimelapseRule — the STANDALONE scheduled timelapse producer's rule model.
38468
38562
  *
38469
38563
  * Spec: `docs/superpowers/specs/2026-07-24-nc-occupancy-timelapse-design.md`
@@ -39455,6 +39549,12 @@ Object.defineProperty(exports, "subKindsOf", {
39455
39549
  return subKindsOf;
39456
39550
  }
39457
39551
  });
39552
+ Object.defineProperty(exports, "systemEventFilterApplies", {
39553
+ enumerable: true,
39554
+ get: function() {
39555
+ return systemEventFilterApplies;
39556
+ }
39557
+ });
39458
39558
  Object.defineProperty(exports, "unknown", {
39459
39559
  enumerable: true,
39460
39560
  get: function() {
@@ -7824,6 +7824,12 @@ var RecordingConfigSchema = object({
7824
7824
  /** DERIVED summary of `bands`, stamped by the recorder on every save.
7825
7825
  * Authoring it has no effect — see {@link RecordingStorageModeSchema}. */
7826
7826
  mode: RecordingStorageModeSchema.optional(),
7827
+ /**
7828
+ * Which assigned broker slots to record. Absent / empty = {@link
7829
+ * DEFAULT_RECORDING_PROFILES} (`high`+`low`) intersected with the
7830
+ * camera's currently assigned slots — never `mid` unless the operator
7831
+ * picks it, and never a slot the broker has not assigned.
7832
+ */
7827
7833
  profiles: array(CamProfileSchema).optional(),
7828
7834
  segmentSeconds: number().int().positive().optional(),
7829
7835
  /**
@@ -7848,7 +7854,7 @@ var RecordingConfigSchema = object({
7848
7854
  *
7849
7855
  * THE one definition: the recorder stamps `config.mode` with it on save and
7850
7856
  * reports it as the cap's `activeMode`, and the settings UI reads it back to
7851
- * decide which authoring tab a config opens in. Two copies would drift, and the
7857
+ * highlight the Off/Events/Continuous shortcut. Two copies would drift, and the
7852
7858
  * symptom (a status dot disagreeing with what is being recorded) is exactly the
7853
7859
  * bug this field was added to fix.
7854
7860
  */
@@ -7920,7 +7926,11 @@ var RelocateFootageInputSchema = object({
7920
7926
  profiles: array(string()).optional(),
7921
7927
  /** Copy throttle in MB/s (default 40) — the drain is a background chore,
7922
7928
  * never allowed to starve live writers. */
7923
- throttleMbps: number().min(1).max(1e3).optional()
7929
+ throttleMbps: number().min(1).max(1e3).optional(),
7930
+ /** Move only segments whose startMs is >= this. Absent = the whole source
7931
+ * pile. Used when a full drain is too expensive and the operator only
7932
+ * wants the recent window on the new disk. */
7933
+ sinceMs: number().int().optional()
7924
7934
  });
7925
7935
  /** Internal, lease-scoped participant operation. It is intentionally separate
7926
7936
  * from persistent recording settings: a migration never changes
@@ -17955,6 +17965,12 @@ var TrackCascadeCountsSchema = object({
17955
17965
  /** Per-track CLIP search vectors removed (best-effort). */
17956
17966
  embeddings: number().int()
17957
17967
  });
17968
+ /** Disk-wins reconcile: media rows whose blobs are gone, then empty tracks. */
17969
+ var DiskReconcileCountsSchema = object({
17970
+ mediaDropped: number().int(),
17971
+ tracks: number().int(),
17972
+ events: number().int()
17973
+ });
17958
17974
  /** Event-store footprint for one camera. */
17959
17975
  var EventStoreDeviceFootprintSchema = object({
17960
17976
  deviceId: number(),
@@ -18240,6 +18256,17 @@ var pipelineAnalyticsCapability = {
18240
18256
  auth: "admin"
18241
18257
  }),
18242
18258
  /**
18259
+ * Disk-wins reconcile for one camera. Drops media index rows whose blobs
18260
+ * are gone, then cascades tracks (including favourited and staging) that
18261
+ * have no remaining files. Enrolled identity/vehicle/scene media is never
18262
+ * probed. Trackless motion/audio events with no remaining file are dropped,
18263
+ * including snapshot-less rows.
18264
+ */
18265
+ reconcileFromDisk: method(object({ deviceId: number() }), DiskReconcileCountsSchema, {
18266
+ kind: "mutation",
18267
+ auth: "admin"
18268
+ }),
18269
+ /**
18243
18270
  * Delete whole tracks (object events) by id for the given device,
18244
18271
  * cascading their media in lockstep. Returns the number of tracks
18245
18272
  * actually deleted plus the ids that could not be removed.
@@ -20074,6 +20101,24 @@ var CameraStatusDegradationSchema = object({
20074
20101
  *
20075
20102
  * See spec: `docs/superpowers/specs/2026-06-24-camera-status-aggregator-cap.md`
20076
20103
  */
20104
+ var DiskReconcileJobSchema = object({
20105
+ state: _enum([
20106
+ "idle",
20107
+ "running",
20108
+ "done",
20109
+ "error"
20110
+ ]),
20111
+ total: number().int().nonnegative(),
20112
+ completed: number().int().nonnegative(),
20113
+ currentDeviceId: number().int().nullable(),
20114
+ failed: array(number().int()).readonly(),
20115
+ mediaDropped: number().int().nonnegative(),
20116
+ tracks: number().int().nonnegative(),
20117
+ events: number().int().nonnegative(),
20118
+ startedAtMs: number().int().nullable(),
20119
+ finishedAtMs: number().int().nullable(),
20120
+ error: string().nullable()
20121
+ });
20077
20122
  var CameraStatusSchema = object({
20078
20123
  deviceId: number(),
20079
20124
  assignment: CameraAssignmentStatusSchema,
@@ -20305,7 +20350,10 @@ method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
20305
20350
  }), CameraSwitchGroupSchema, {
20306
20351
  kind: "mutation",
20307
20352
  auth: "admin"
20308
- }), method(object({ deviceId: number() }), CameraStatusSchema), method(object({ deviceIds: array(number()).optional() }), array(CameraStatusSchema).readonly()), method(_void(), array(PipelineTemplateSchema).readonly()), method(object({
20353
+ }), method(object({ deviceId: number() }), CameraStatusSchema), method(object({ deviceIds: array(number()).optional() }), array(CameraStatusSchema).readonly()), method(_void(), DiskReconcileJobSchema, {
20354
+ kind: "mutation",
20355
+ auth: "admin"
20356
+ }), method(_void(), DiskReconcileJobSchema, { auth: "admin" }), method(_void(), array(PipelineTemplateSchema).readonly()), method(object({
20309
20357
  name: string(),
20310
20358
  description: string().optional(),
20311
20359
  config: CameraPipelineConfigSchema
@@ -21937,7 +21985,14 @@ var SearchResultSchema = object({
21937
21985
  });
21938
21986
  var AutoUpdateSettingsSchema = object({
21939
21987
  channel: ChannelSchema,
21940
- intervalSeconds: number()
21988
+ intervalSeconds: number(),
21989
+ /**
21990
+ * Cadence of the "an update exists" POLLER, in seconds. Independent of
21991
+ * `channel`: the poller runs while auto-apply is `off`, because being told
21992
+ * about a publish and installing it are different decisions. Clamped
21993
+ * server-side to 900 s … 604800 s; defaults to 21600 s (6 h).
21994
+ */
21995
+ updateCheckIntervalSeconds: number()
21941
21996
  });
21942
21997
  var AddonAutoUpdateSchema = ChannelWithInheritSchema;
21943
21998
  var RestartAddonResultSchema = unknown();
@@ -22078,7 +22133,9 @@ method(_void(), array(AddonListItemSchema).readonly()), method(object({
22078
22133
  auth: "admin"
22079
22134
  }), method(_void(), AutoUpdateSettingsSchema, { auth: "admin" }), method(object({
22080
22135
  channel: ChannelSchema,
22081
- intervalSeconds: number().min(300).max(86400).optional()
22136
+ intervalSeconds: number().min(300).max(86400).optional(),
22137
+ /** Availability-poll cadence; see AutoUpdateSettingsSchema. */
22138
+ updateCheckIntervalSeconds: number().min(900).max(604800).optional()
22082
22139
  }), unknown(), {
22083
22140
  kind: "mutation",
22084
22141
  auth: "admin"
@@ -34237,6 +34294,12 @@ Object.freeze({
34237
34294
  addonId: null,
34238
34295
  access: "create"
34239
34296
  },
34297
+ "pipelineAnalytics.reconcileFromDisk": {
34298
+ capName: "pipeline-analytics",
34299
+ capScope: "device",
34300
+ addonId: null,
34301
+ access: "create"
34302
+ },
34240
34303
  "pipelineAnalytics.refreshStorageLocationsForMigration": {
34241
34304
  capName: "pipeline-analytics",
34242
34305
  capScope: "device",
@@ -34639,6 +34702,12 @@ Object.freeze({
34639
34702
  addonId: null,
34640
34703
  access: "view"
34641
34704
  },
34705
+ "pipelineOrchestrator.getReconcileFromDiskStatus": {
34706
+ capName: "pipeline-orchestrator",
34707
+ capScope: "system",
34708
+ addonId: null,
34709
+ access: "view"
34710
+ },
34642
34711
  "pipelineOrchestrator.listAgentSettings": {
34643
34712
  capName: "pipeline-orchestrator",
34644
34713
  capScope: "system",
@@ -34663,6 +34732,12 @@ Object.freeze({
34663
34732
  addonId: null,
34664
34733
  access: "create"
34665
34734
  },
34735
+ "pipelineOrchestrator.reconcileFromDisk": {
34736
+ capName: "pipeline-orchestrator",
34737
+ capScope: "system",
34738
+ addonId: null,
34739
+ access: "create"
34740
+ },
34666
34741
  "pipelineOrchestrator.removeAgentSettings": {
34667
34742
  capName: "pipeline-orchestrator",
34668
34743
  capScope: "system",
@@ -37654,6 +37729,11 @@ Object.freeze({
37654
37729
  form: "single",
37655
37730
  optional: true
37656
37731
  }],
37732
+ "pipelineAnalytics.reconcileFromDisk": [{
37733
+ name: "deviceId",
37734
+ form: "single",
37735
+ optional: false
37736
+ }],
37657
37737
  "pipelineAnalytics.restageRetrainTrack": [{
37658
37738
  name: "deviceId",
37659
37739
  form: "single",
@@ -38433,6 +38513,20 @@ function isScheduleActive(schedule, atMs) {
38433
38513
  return schedule.invert === true ? !inside : inside;
38434
38514
  }
38435
38515
  /**
38516
+ * Does `filter` say anything about `kind`?
38517
+ *
38518
+ * `false` means the filter is not part of this kind's vocabulary: the engine
38519
+ * ignores it and an editor hides its input. It never means "excluded".
38520
+ */
38521
+ function systemEventFilterApplies(kind, filter) {
38522
+ switch (filter) {
38523
+ case "deviceIds": return kind.startsWith("device-") || kind.startsWith("stream-") || kind === "detection-blind" || kind === "alarm-triggered" || kind === "export-completed";
38524
+ case "deviceTypes": return kind.startsWith("device-") || kind === "detection-blind";
38525
+ case "nodeIds": return kind.startsWith("node-") || kind === "addon-update-available" || kind === "addon-updated" || kind === "server-update-available" || kind === "server-updated";
38526
+ case "packageNames": return kind.endsWith("update-available") || kind === "addon-updated" || kind === "server-updated";
38527
+ }
38528
+ }
38529
+ /**
38436
38530
  * TimelapseRule — the STANDALONE scheduled timelapse producer's rule model.
38437
38531
  *
38438
38532
  * Spec: `docs/superpowers/specs/2026-07-24-nc-occupancy-timelapse-design.md`
@@ -38914,4 +39008,4 @@ function vectorDimFromBase64(encoded) {
38914
39008
  return Math.floor(Buffer.from(encoded, "base64").byteLength / 4);
38915
39009
  }
38916
39010
  //#endregion
38917
- export { faceGalleryCapability as $, SCENE_CONFIRM_DEFAULT_TIMEOUT_MS as A, record as At, VISIT_MERGE_GAP_MS as B, NcSnoozeSchema as C, array as Ct, OpsLogEntrySchema as D, number as Dt, NcTaxonomySchema as E, literal as Et, TIMELAPSE_DENSE_FLOOR_SEC as F, audioModeOf as G, alarmPanelCapability as H, TimelapseRuleInputSchema as I, customAction as J, buildEventKindDescriptor as K, TimelapseRulePatchSchema as L, SCENE_DEFAULT_UNCOVERED_POLICY as M, unknown as Mt, SCENE_DIVERGED as N, EventCategory as Nt, RECORDING_EXPORT_MAX_READ_BYTES as O, object as Ot, SceneMonitorSchema as P, encodeVectorBase64 as Q, TimelapseRuleSchema as R, NcSnoozeInputSchema as S, _enum as St, NcSystemEventKindSchema as T, discriminatedUnion as Tt, assertTimelapseCadences as U, addonWidgetsSourceCapability as V, audioMetricsCapability as W, deriveRecordingMode as X, defineCustomActions as Y, embeddingEncoderCapability as Z, NcRuleInputSchema as _, createEvent as _t, DETECTION_PIPELINE_CAP_NAME as a, pipelineAnalyticsCapability as at, NcRuleTargetSchema as b, nodePin as bt, EVENT_PAD_MS as c, readTimelapseGeneratedAt as ct, NC_ALARM_SYSTEM_EVENT_KINDS as d, vectorDimFromBase64 as dt, hfModelUrl as et, NC_CONDITION_CATALOG as f, videoclipsCapability as ft, NcConditionDescriptorSchema as g, DeviceType as gt, NC_TAXONOMY as h, BaseAddon as ht, DETECTION_MACRO_CLASSES as i, notificationRulesCapability as it, SCENE_DEFAULT_ANCHOR_THRESHOLD as j, string as jt, RetrainStatusSchema as k, partialRecord as kt, LabelAttributionSchema as l, sceneMonitorCapability as lt, NC_SNOOZE_MAX_MINUTES as m, errMsg as mt, DEFAULT_EVENT_COLOR as n, isScheduleActive as nt, DeclaredDevices as o, plateGalleryCapability as ot, NC_DEFAULT_SNOOZE_MINUTES as p, zoneAnalyticsCapability as pt, cosineSimilarity as q, DEFAULT_TIMELAPSE_PREVIEW_TEXT as r, kebabToCamel as rt, EVENT_KIND_BY_CAP as s, readDeviceStateFrom as st, BaseDevice as t, isDetectionMacroClass as tt, MACRO_LABELS as u, subKindsOf as ut, NcRulePatchSchema as v, hydrateSchema as vt, NcSnoozeSuppressedSchema as w, boolean as wt, NcScheduleSchema as x, sleep as xt, NcRuleSchema as y, isDeviceScopedCap as yt, TrackSourceSchema as z };
39011
+ export { faceGalleryCapability as $, SCENE_CONFIRM_DEFAULT_TIMEOUT_MS as A, partialRecord as At, VISIT_MERGE_GAP_MS as B, NcSnoozeSchema as C, _enum as Ct, OpsLogEntrySchema as D, literal as Dt, NcTaxonomySchema as E, discriminatedUnion as Et, TIMELAPSE_DENSE_FLOOR_SEC as F, audioModeOf as G, alarmPanelCapability as H, TimelapseRuleInputSchema as I, customAction as J, buildEventKindDescriptor as K, TimelapseRulePatchSchema as L, SCENE_DEFAULT_UNCOVERED_POLICY as M, string as Mt, SCENE_DIVERGED as N, unknown as Nt, RECORDING_EXPORT_MAX_READ_BYTES as O, number as Ot, SceneMonitorSchema as P, EventCategory as Pt, encodeVectorBase64 as Q, TimelapseRuleSchema as R, NcSnoozeInputSchema as S, sleep as St, NcSystemEventKindSchema as T, boolean as Tt, assertTimelapseCadences as U, addonWidgetsSourceCapability as V, audioMetricsCapability as W, deriveRecordingMode as X, defineCustomActions as Y, embeddingEncoderCapability as Z, NcRuleInputSchema as _, DeviceType as _t, DETECTION_PIPELINE_CAP_NAME as a, pipelineAnalyticsCapability as at, NcRuleTargetSchema as b, isDeviceScopedCap as bt, EVENT_PAD_MS as c, readTimelapseGeneratedAt as ct, NC_ALARM_SYSTEM_EVENT_KINDS as d, systemEventFilterApplies as dt, hfModelUrl as et, NC_CONDITION_CATALOG as f, vectorDimFromBase64 as ft, NcConditionDescriptorSchema as g, BaseAddon as gt, NC_TAXONOMY as h, errMsg as ht, DETECTION_MACRO_CLASSES as i, notificationRulesCapability as it, SCENE_DEFAULT_ANCHOR_THRESHOLD as j, record as jt, RetrainStatusSchema as k, object as kt, LabelAttributionSchema as l, sceneMonitorCapability as lt, NC_SNOOZE_MAX_MINUTES as m, zoneAnalyticsCapability as mt, DEFAULT_EVENT_COLOR as n, isScheduleActive as nt, DeclaredDevices as o, plateGalleryCapability as ot, NC_DEFAULT_SNOOZE_MINUTES as p, videoclipsCapability as pt, cosineSimilarity as q, DEFAULT_TIMELAPSE_PREVIEW_TEXT as r, kebabToCamel as rt, EVENT_KIND_BY_CAP as s, readDeviceStateFrom as st, BaseDevice as t, isDetectionMacroClass as tt, MACRO_LABELS as u, subKindsOf as ut, NcRulePatchSchema as v, createEvent as vt, NcSnoozeSuppressedSchema as w, array as wt, NcScheduleSchema as x, nodePin as xt, NcRuleSchema as y, hydrateSchema as yt, TrackSourceSchema as z };
@@ -2,7 +2,7 @@ Object.defineProperties(exports, {
2
2
  __esModule: { value: true },
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
- const require_dist = require("../dist-Crk9pYee.js");
5
+ const require_dist = require("../dist-CTIUuGRB.js");
6
6
  let node_fs = require("node:fs");
7
7
  let node_fs$1 = require_dist.__toESM(node_fs, 1);
8
8
  node_fs = require_dist.__toESM(node_fs);
@@ -1,4 +1,4 @@
1
- import { Z as embeddingEncoderCapability, et as hfModelUrl, ht as BaseAddon } from "../dist-CzdBsvoR.mjs";
1
+ import { Z as embeddingEncoderCapability, et as hfModelUrl, gt as BaseAddon } from "../dist-CquggoRC.mjs";
2
2
  import { createRequire } from "node:module";
3
3
  import * as fs from "node:fs";
4
4
  import "node:fs";
@@ -1,6 +1,6 @@
1
1
  import { a as e, i as t, n, o as r, r as i, t as a } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare__react__loadShare__.js-C0AuF9av.mjs";
2
2
  import { t as o } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_tanstack_mf_1_react_mf_2_query__loadShare__.js-B3Wx5J80.mjs";
3
- import { a as s, i as c, n as l, o as u, r as d, s as f, t as p } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-lmolSw2P.mjs";
3
+ import { a as s, i as c, n as l, o as u, r as d, s as f, t as p } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-bze3q2fV.mjs";
4
4
  import { n as m, r as h, t as g } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare__react_mf_1_jsx_mf_2_runtime__loadShare__.js-Bm-iyjmq.mjs";
5
5
  //#region ../../node_modules/lucide-react/dist/esm/shared/src/utils.js
6
6
  var _ = (e) => e.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase(), v = (e) => e.replace(/^([A-Z])|[\s-_]+(\w)/g, (e, t, n) => n ? n.toUpperCase() : t.toLowerCase()), y = (e) => {
@@ -18,7 +18,7 @@ var e = {
18
18
  },
19
19
  "@camstack/types": {
20
20
  name: "@camstack/types",
21
- version: "1.2.83",
21
+ version: "1.2.85",
22
22
  scope: ["default"],
23
23
  loaded: !1,
24
24
  from: "addon_pipeline_analytics_widgets",
@@ -33,7 +33,7 @@ var e = {
33
33
  },
34
34
  "@camstack/ui-library": {
35
35
  name: "@camstack/ui-library",
36
- version: "1.2.57",
36
+ version: "1.2.58",
37
37
  scope: ["default"],
38
38
  loaded: !1,
39
39
  from: "addon_pipeline_analytics_widgets",