@camstack/addon-post-analysis 1.2.84 → 1.2.85

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.
@@ -29,7 +29,7 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
29
29
  enumerable: true
30
30
  }) : target, mod));
31
31
  //#endregion
32
- //#region ../types/dist/event-category-Bxo5yJjt.mjs
32
+ //#region ../types/dist/event-category-C0lyLd5U.mjs
33
33
  var EventCategory = /* @__PURE__ */ function(EventCategory) {
34
34
  EventCategory["SystemBoot"] = "system.boot";
35
35
  EventCategory["SystemAddonsReady"] = "system.addons-ready";
@@ -46,9 +46,10 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
46
46
  EventCategory["SystemRestartCompleted"] = "system.restart-completed";
47
47
  /**
48
48
  * A newer addon or server-root package version was found by the
49
- * authoritative registry check. Emitted once per
50
- * `(target, packageName, currentVersion, latestVersion)` transition; repeated
51
- * polling of the same result is deduplicated by the checker.
49
+ * authoritative registry check. Emitted once when any observed
50
+ * `latestVersion` changes (or a package/node first appears behind);
51
+ * the payload carries the full currently-available list. Repeated
52
+ * polling of the same latests is silent.
52
53
  */
53
54
  EventCategory["UpdateAvailable"] = "update.available";
54
55
  /**
@@ -7791,6 +7792,23 @@ var RecordingBandSchema = object({
7791
7792
  postBufferSec: number().min(0).optional()
7792
7793
  });
7793
7794
  /**
7795
+ * Adjacent recorded ranges closer than this belong to the SAME videoclip visit.
7796
+ *
7797
+ * This is NOT the recorder calendar merge (`RANGE_MERGE_GAP_MS = 5s`). That
7798
+ * threshold is for the timeline bar, which must show exact holes — including
7799
+ * the ~8s GOP/keyframe rolls measured on events-mode cameras (dispensa 1438,
7800
+ * 2026-08-16). A videoclip is the events-mode keep-window (writer session),
7801
+ * whose idle bound is `postBufferSec`. Using that default (30s) glues those
7802
+ * intra-visit holes without joining visits hours apart.
7803
+ *
7804
+ * Segments stay the source of truth on disk (`startMs-durMs-bytes.m4s`); a
7805
+ * visit is derived, not a second copy of the files.
7806
+ */
7807
+ var VISIT_MERGE_GAP_MS = {
7808
+ preBufferSec: 10,
7809
+ postBufferSec: 30
7810
+ }.postBufferSec * 1e3;
7811
+ /**
7794
7812
  * Per-device retention overrides. Every field is optional; an unset or `0`
7795
7813
  * value inherits the node-wide recorder default. Only footage-lifetime limits
7796
7814
  * live per-camera: `maxAgeDays` and `maxSizeGb`. The disk-occupancy threshold
@@ -14824,6 +14842,9 @@ var NcSystemEventKindSchema = _enum([
14824
14842
  "alarm-disarmed",
14825
14843
  "alarm-arming",
14826
14844
  "alarm-arm-refused",
14845
+ "addon-updated",
14846
+ "server-updated",
14847
+ "export-completed",
14827
14848
  "camera-online",
14828
14849
  "camera-offline",
14829
14850
  "camera-disabled",
@@ -15947,6 +15968,18 @@ var NC_CONDITION_CATALOG = [
15947
15968
  value: "server-update-available",
15948
15969
  label: "Server update available"
15949
15970
  },
15971
+ {
15972
+ value: "addon-updated",
15973
+ label: "Addons updated"
15974
+ },
15975
+ {
15976
+ value: "server-updated",
15977
+ label: "Server updated"
15978
+ },
15979
+ {
15980
+ value: "export-completed",
15981
+ label: "Export completed"
15982
+ },
15950
15983
  {
15951
15984
  value: "alarm-arming",
15952
15985
  label: "Alarm arming (exit delay)"
@@ -17283,13 +17316,19 @@ var RetrainStatusSchema = _enum([
17283
17316
  * "never marked" from "already trained" must read `retrainStatus`.
17284
17317
  *
17285
17318
  * `debug` does NOT pin; it is attention, not durability.
17319
+ *
17320
+ * `favourited` IS a BOOLEAN pin (durability bit), not a retrain lifecycle.
17321
+ * A favourited track is skipped by retention the same way `staging` is, but
17322
+ * it does not enter `none|staging|trained` and has no staging budget.
17286
17323
  */
17287
17324
  var TrackFlagFields = {
17288
17325
  /** Operator marked this track as training material — i.e. `retrainStatus` is
17289
17326
  * `'staging'`. */
17290
17327
  markForTrain: boolean().optional(),
17291
17328
  /** Operator marked this track for diagnostic attention. */
17292
- debug: boolean().optional()
17329
+ debug: boolean().optional(),
17330
+ /** Operator favourited this track. Pins it against pruning. */
17331
+ favourited: boolean().optional()
17293
17332
  };
17294
17333
  /**
17295
17334
  * The lifecycle field itself, on the READ surfaces only (`Track`, `KeyEvent`).
@@ -17314,6 +17353,7 @@ var TrackFlagsSchema = object({
17314
17353
  trackId: string(),
17315
17354
  markForTrain: boolean(),
17316
17355
  debug: boolean(),
17356
+ favourited: boolean(),
17317
17357
  /** The lifecycle state the boolean was derived from. Required here (unlike on
17318
17358
  * a track row) because this shape is only ever produced by the write body,
17319
17359
  * which always knows it — and a surface that has just written needs to render
@@ -18249,7 +18289,7 @@ var pipelineAnalyticsCapability = {
18249
18289
  auth: "admin"
18250
18290
  }),
18251
18291
  /**
18252
- * Set the per-track operator flags (`markForTrain`, `debug`) on ONE track.
18292
+ * Set the per-track operator flags (`markForTrain`, `debug`, `favourited`) on ONE track.
18253
18293
  * The patch is PARTIAL — an omitted key is left untouched — because the
18254
18294
  * three surfaces that write it (admin Events grid, viewer track detail,
18255
18295
  * viewer cluster detail) each own one toggle and must not clobber the other.
@@ -21429,8 +21469,28 @@ var ClipSchema = object({
21429
21469
  startMs: number(),
21430
21470
  endMs: number()
21431
21471
  }),
21432
- /** Thumbnail URL (lazy; e.g. analytics `getEventMedia`). Never inlined. */
21433
- thumbnail: string().optional()
21472
+ /**
21473
+ * Lazy thumbnail URL, never inlined.
21474
+ *
21475
+ * Recording-derived clips (events-mode keep-window, and the prepared
21476
+ * continuous event+fragment visit) MUST use the snapshot of the **main
21477
+ * event of the interval** — `getEventMedia({ eventId, kind: 'snapshot' })`
21478
+ * of the event that owns `kind` (object > motion > audio). Do not extract
21479
+ * a keyframe from the recorded segments. Other providers (onboard, HKSV)
21480
+ * mint their own stills.
21481
+ */
21482
+ thumbnail: string().optional(),
21483
+ /** Analytics event ids that overlap this visit. Empty on footage-only clips.
21484
+ * The default provider's visit grain puts many motion heartbeats on one clip
21485
+ * instead of minting one clip per marker. */
21486
+ eventIds: array(string()).optional(),
21487
+ /** Intra-visit footage holes (GOP rolls, discarded segments) still shorter
21488
+ * than `VISIT_MERGE_GAP_MS`. Playback concatenates around them; the timeline
21489
+ * bar keeps showing them via `recording.getAvailability`. */
21490
+ holes: array(object({
21491
+ startMs: number(),
21492
+ endMs: number()
21493
+ })).optional()
21434
21494
  });
21435
21495
  var ClipPlaybackSchema = object({
21436
21496
  /** HLS master URL through the hub data-plane (Range + token in path). */
@@ -27790,7 +27850,9 @@ var ExportOptionsSchema = object({
27790
27850
  includeAudio: boolean(),
27791
27851
  maxLifeMs: number().int().positive(),
27792
27852
  deleteAfterDownload: boolean(),
27793
- title: string().max(200).optional()
27853
+ title: string().max(200).optional(),
27854
+ /** Notification-output target ids to ping when this export becomes ready. */
27855
+ notifyTargetIds: array(string().min(1)).max(20).optional()
27794
27856
  }).superRefine((v, ctx) => {
27795
27857
  if (v.speed !== void 0 && v.timelapse !== void 0) ctx.addIssue({
27796
27858
  code: ZodIssueCode.custom,
@@ -27868,10 +27930,18 @@ var ExportBytesSchema = object({
27868
27930
  });
27869
27931
  method(object({
27870
27932
  deviceId: number(),
27871
- profile: string(),
27933
+ /** @deprecated Prefer `profiles`. Kept so timelapse/notifiers keep working. */
27934
+ profile: string().optional(),
27935
+ profiles: array(string()).min(1).optional(),
27872
27936
  fromMs: number(),
27873
27937
  toMs: number(),
27874
27938
  options: ExportOptionsSchema
27939
+ }).superRefine((v, ctx) => {
27940
+ if ((v.profiles !== void 0 && v.profiles.length > 0 ? v.profiles : v.profile !== void 0 ? [v.profile] : []).length < 1) ctx.addIssue({
27941
+ code: ZodIssueCode.custom,
27942
+ message: "pass profiles[] (min 1) or legacy profile",
27943
+ path: ["profiles"]
27944
+ });
27875
27945
  }), ExportRecordSchema, {
27876
27946
  kind: "mutation",
27877
27947
  auth: "protected"
@@ -39127,6 +39197,12 @@ Object.defineProperty(exports, "TrackSourceSchema", {
39127
39197
  return TrackSourceSchema;
39128
39198
  }
39129
39199
  });
39200
+ Object.defineProperty(exports, "VISIT_MERGE_GAP_MS", {
39201
+ enumerable: true,
39202
+ get: function() {
39203
+ return VISIT_MERGE_GAP_MS;
39204
+ }
39205
+ });
39130
39206
  Object.defineProperty(exports, "__exportAll", {
39131
39207
  enumerable: true,
39132
39208
  get: function() {
@@ -1,4 +1,4 @@
1
- //#region ../types/dist/event-category-Bxo5yJjt.mjs
1
+ //#region ../types/dist/event-category-C0lyLd5U.mjs
2
2
  var EventCategory = /* @__PURE__ */ function(EventCategory) {
3
3
  EventCategory["SystemBoot"] = "system.boot";
4
4
  EventCategory["SystemAddonsReady"] = "system.addons-ready";
@@ -15,9 +15,10 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
15
15
  EventCategory["SystemRestartCompleted"] = "system.restart-completed";
16
16
  /**
17
17
  * A newer addon or server-root package version was found by the
18
- * authoritative registry check. Emitted once per
19
- * `(target, packageName, currentVersion, latestVersion)` transition; repeated
20
- * polling of the same result is deduplicated by the checker.
18
+ * authoritative registry check. Emitted once when any observed
19
+ * `latestVersion` changes (or a package/node first appears behind);
20
+ * the payload carries the full currently-available list. Repeated
21
+ * polling of the same latests is silent.
21
22
  */
22
23
  EventCategory["UpdateAvailable"] = "update.available";
23
24
  /**
@@ -7760,6 +7761,23 @@ var RecordingBandSchema = object({
7760
7761
  postBufferSec: number().min(0).optional()
7761
7762
  });
7762
7763
  /**
7764
+ * Adjacent recorded ranges closer than this belong to the SAME videoclip visit.
7765
+ *
7766
+ * This is NOT the recorder calendar merge (`RANGE_MERGE_GAP_MS = 5s`). That
7767
+ * threshold is for the timeline bar, which must show exact holes — including
7768
+ * the ~8s GOP/keyframe rolls measured on events-mode cameras (dispensa 1438,
7769
+ * 2026-08-16). A videoclip is the events-mode keep-window (writer session),
7770
+ * whose idle bound is `postBufferSec`. Using that default (30s) glues those
7771
+ * intra-visit holes without joining visits hours apart.
7772
+ *
7773
+ * Segments stay the source of truth on disk (`startMs-durMs-bytes.m4s`); a
7774
+ * visit is derived, not a second copy of the files.
7775
+ */
7776
+ var VISIT_MERGE_GAP_MS = {
7777
+ preBufferSec: 10,
7778
+ postBufferSec: 30
7779
+ }.postBufferSec * 1e3;
7780
+ /**
7763
7781
  * Per-device retention overrides. Every field is optional; an unset or `0`
7764
7782
  * value inherits the node-wide recorder default. Only footage-lifetime limits
7765
7783
  * live per-camera: `maxAgeDays` and `maxSizeGb`. The disk-occupancy threshold
@@ -14793,6 +14811,9 @@ var NcSystemEventKindSchema = _enum([
14793
14811
  "alarm-disarmed",
14794
14812
  "alarm-arming",
14795
14813
  "alarm-arm-refused",
14814
+ "addon-updated",
14815
+ "server-updated",
14816
+ "export-completed",
14796
14817
  "camera-online",
14797
14818
  "camera-offline",
14798
14819
  "camera-disabled",
@@ -15916,6 +15937,18 @@ var NC_CONDITION_CATALOG = [
15916
15937
  value: "server-update-available",
15917
15938
  label: "Server update available"
15918
15939
  },
15940
+ {
15941
+ value: "addon-updated",
15942
+ label: "Addons updated"
15943
+ },
15944
+ {
15945
+ value: "server-updated",
15946
+ label: "Server updated"
15947
+ },
15948
+ {
15949
+ value: "export-completed",
15950
+ label: "Export completed"
15951
+ },
15919
15952
  {
15920
15953
  value: "alarm-arming",
15921
15954
  label: "Alarm arming (exit delay)"
@@ -17252,13 +17285,19 @@ var RetrainStatusSchema = _enum([
17252
17285
  * "never marked" from "already trained" must read `retrainStatus`.
17253
17286
  *
17254
17287
  * `debug` does NOT pin; it is attention, not durability.
17288
+ *
17289
+ * `favourited` IS a BOOLEAN pin (durability bit), not a retrain lifecycle.
17290
+ * A favourited track is skipped by retention the same way `staging` is, but
17291
+ * it does not enter `none|staging|trained` and has no staging budget.
17255
17292
  */
17256
17293
  var TrackFlagFields = {
17257
17294
  /** Operator marked this track as training material — i.e. `retrainStatus` is
17258
17295
  * `'staging'`. */
17259
17296
  markForTrain: boolean().optional(),
17260
17297
  /** Operator marked this track for diagnostic attention. */
17261
- debug: boolean().optional()
17298
+ debug: boolean().optional(),
17299
+ /** Operator favourited this track. Pins it against pruning. */
17300
+ favourited: boolean().optional()
17262
17301
  };
17263
17302
  /**
17264
17303
  * The lifecycle field itself, on the READ surfaces only (`Track`, `KeyEvent`).
@@ -17283,6 +17322,7 @@ var TrackFlagsSchema = object({
17283
17322
  trackId: string(),
17284
17323
  markForTrain: boolean(),
17285
17324
  debug: boolean(),
17325
+ favourited: boolean(),
17286
17326
  /** The lifecycle state the boolean was derived from. Required here (unlike on
17287
17327
  * a track row) because this shape is only ever produced by the write body,
17288
17328
  * which always knows it — and a surface that has just written needs to render
@@ -18218,7 +18258,7 @@ var pipelineAnalyticsCapability = {
18218
18258
  auth: "admin"
18219
18259
  }),
18220
18260
  /**
18221
- * Set the per-track operator flags (`markForTrain`, `debug`) on ONE track.
18261
+ * Set the per-track operator flags (`markForTrain`, `debug`, `favourited`) on ONE track.
18222
18262
  * The patch is PARTIAL — an omitted key is left untouched — because the
18223
18263
  * three surfaces that write it (admin Events grid, viewer track detail,
18224
18264
  * viewer cluster detail) each own one toggle and must not clobber the other.
@@ -21398,8 +21438,28 @@ var ClipSchema = object({
21398
21438
  startMs: number(),
21399
21439
  endMs: number()
21400
21440
  }),
21401
- /** Thumbnail URL (lazy; e.g. analytics `getEventMedia`). Never inlined. */
21402
- thumbnail: string().optional()
21441
+ /**
21442
+ * Lazy thumbnail URL, never inlined.
21443
+ *
21444
+ * Recording-derived clips (events-mode keep-window, and the prepared
21445
+ * continuous event+fragment visit) MUST use the snapshot of the **main
21446
+ * event of the interval** — `getEventMedia({ eventId, kind: 'snapshot' })`
21447
+ * of the event that owns `kind` (object > motion > audio). Do not extract
21448
+ * a keyframe from the recorded segments. Other providers (onboard, HKSV)
21449
+ * mint their own stills.
21450
+ */
21451
+ thumbnail: string().optional(),
21452
+ /** Analytics event ids that overlap this visit. Empty on footage-only clips.
21453
+ * The default provider's visit grain puts many motion heartbeats on one clip
21454
+ * instead of minting one clip per marker. */
21455
+ eventIds: array(string()).optional(),
21456
+ /** Intra-visit footage holes (GOP rolls, discarded segments) still shorter
21457
+ * than `VISIT_MERGE_GAP_MS`. Playback concatenates around them; the timeline
21458
+ * bar keeps showing them via `recording.getAvailability`. */
21459
+ holes: array(object({
21460
+ startMs: number(),
21461
+ endMs: number()
21462
+ })).optional()
21403
21463
  });
21404
21464
  var ClipPlaybackSchema = object({
21405
21465
  /** HLS master URL through the hub data-plane (Range + token in path). */
@@ -27759,7 +27819,9 @@ var ExportOptionsSchema = object({
27759
27819
  includeAudio: boolean(),
27760
27820
  maxLifeMs: number().int().positive(),
27761
27821
  deleteAfterDownload: boolean(),
27762
- title: string().max(200).optional()
27822
+ title: string().max(200).optional(),
27823
+ /** Notification-output target ids to ping when this export becomes ready. */
27824
+ notifyTargetIds: array(string().min(1)).max(20).optional()
27763
27825
  }).superRefine((v, ctx) => {
27764
27826
  if (v.speed !== void 0 && v.timelapse !== void 0) ctx.addIssue({
27765
27827
  code: ZodIssueCode.custom,
@@ -27837,10 +27899,18 @@ var ExportBytesSchema = object({
27837
27899
  });
27838
27900
  method(object({
27839
27901
  deviceId: number(),
27840
- profile: string(),
27902
+ /** @deprecated Prefer `profiles`. Kept so timelapse/notifiers keep working. */
27903
+ profile: string().optional(),
27904
+ profiles: array(string()).min(1).optional(),
27841
27905
  fromMs: number(),
27842
27906
  toMs: number(),
27843
27907
  options: ExportOptionsSchema
27908
+ }).superRefine((v, ctx) => {
27909
+ if ((v.profiles !== void 0 && v.profiles.length > 0 ? v.profiles : v.profile !== void 0 ? [v.profile] : []).length < 1) ctx.addIssue({
27910
+ code: ZodIssueCode.custom,
27911
+ message: "pass profiles[] (min 1) or legacy profile",
27912
+ path: ["profiles"]
27913
+ });
27844
27914
  }), ExportRecordSchema, {
27845
27915
  kind: "mutation",
27846
27916
  auth: "protected"
@@ -38844,4 +38914,4 @@ function vectorDimFromBase64(encoded) {
38844
38914
  return Math.floor(Buffer.from(encoded, "base64").byteLength / 4);
38845
38915
  }
38846
38916
  //#endregion
38847
- export { hfModelUrl as $, SCENE_CONFIRM_DEFAULT_TIMEOUT_MS as A, string as At, addonWidgetsSourceCapability as B, NcSnoozeSchema as C, boolean as Ct, OpsLogEntrySchema as D, object as Dt, NcTaxonomySchema as E, number as Et, TIMELAPSE_DENSE_FLOOR_SEC as F, buildEventKindDescriptor as G, assertTimelapseCadences as H, TimelapseRuleInputSchema as I, defineCustomActions as J, cosineSimilarity as K, TimelapseRulePatchSchema as L, SCENE_DEFAULT_UNCOVERED_POLICY as M, EventCategory as Mt, SCENE_DIVERGED as N, RECORDING_EXPORT_MAX_READ_BYTES as O, partialRecord as Ot, SceneMonitorSchema as P, faceGalleryCapability as Q, TimelapseRuleSchema as R, NcSnoozeInputSchema as S, array as St, NcSystemEventKindSchema as T, literal as Tt, audioMetricsCapability as U, alarmPanelCapability as V, audioModeOf as W, embeddingEncoderCapability as X, deriveRecordingMode as Y, encodeVectorBase64 as Z, NcRuleInputSchema as _, hydrateSchema as _t, DETECTION_PIPELINE_CAP_NAME as a, plateGalleryCapability as at, NcRuleTargetSchema as b, sleep as bt, EVENT_PAD_MS as c, sceneMonitorCapability as ct, NC_ALARM_SYSTEM_EVENT_KINDS as d, videoclipsCapability as dt, isDetectionMacroClass as et, NC_CONDITION_CATALOG as f, zoneAnalyticsCapability as ft, NcConditionDescriptorSchema as g, createEvent as gt, NC_TAXONOMY as h, DeviceType as ht, DETECTION_MACRO_CLASSES as i, pipelineAnalyticsCapability as it, SCENE_DEFAULT_ANCHOR_THRESHOLD as j, unknown as jt, RetrainStatusSchema as k, record as kt, LabelAttributionSchema as l, subKindsOf as lt, NC_SNOOZE_MAX_MINUTES as m, BaseAddon as mt, DEFAULT_EVENT_COLOR as n, kebabToCamel as nt, DeclaredDevices as o, readDeviceStateFrom as ot, NC_DEFAULT_SNOOZE_MINUTES as p, errMsg as pt, customAction as q, DEFAULT_TIMELAPSE_PREVIEW_TEXT as r, notificationRulesCapability as rt, EVENT_KIND_BY_CAP as s, readTimelapseGeneratedAt as st, BaseDevice as t, isScheduleActive as tt, MACRO_LABELS as u, vectorDimFromBase64 as ut, NcRulePatchSchema as v, isDeviceScopedCap as vt, NcSnoozeSuppressedSchema as w, discriminatedUnion as wt, NcScheduleSchema as x, _enum as xt, NcRuleSchema as y, nodePin as yt, TrackSourceSchema as z };
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 };
@@ -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-C_mhxTWT.js");
5
+ const require_dist = require("../dist-Crk9pYee.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 { $ as hfModelUrl, X as embeddingEncoderCapability, mt as BaseAddon } from "../dist-CJWHkPz8.mjs";
1
+ import { Z as embeddingEncoderCapability, et as hfModelUrl, ht as BaseAddon } from "../dist-CzdBsvoR.mjs";
2
2
  import { createRequire } from "node:module";
3
3
  import * as fs from "node:fs";
4
4
  import "node:fs";
@@ -18,7 +18,7 @@ var e = {
18
18
  },
19
19
  "@camstack/types": {
20
20
  name: "@camstack/types",
21
- version: "1.2.82",
21
+ version: "1.2.83",
22
22
  scope: ["default"],
23
23
  loaded: !1,
24
24
  from: "addon_pipeline_analytics_widgets",
@@ -36,7 +36,7 @@ async function r() {
36
36
  }
37
37
  },
38
38
  "@camstack/types": {
39
- version: "1.2.82",
39
+ version: "1.2.83",
40
40
  scope: "default",
41
41
  shareConfig: {
42
42
  singleton: !0,