@camstack/addon-provider-rtsp 1.2.80 → 1.2.82

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/addon.js CHANGED
@@ -12107,6 +12107,9 @@ var QueryFilterSchema = object({
12107
12107
  whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
12108
12108
  /** NULL-safe exclusion: matches rows whose field is NULL OR != the value. */
12109
12109
  whereNot: record(string(), unknown()).optional(),
12110
+ /** NULL-safe exclusion of a SET — `whereNot` for more than one value. An
12111
+ * empty list excludes nothing. See `QueryFilter.whereNotIn`. */
12112
+ whereNotIn: record(string(), array(unknown())).optional(),
12110
12113
  orderBy: object({
12111
12114
  field: string(),
12112
12115
  direction: _enum(["asc", "desc"])
@@ -12127,7 +12130,8 @@ var MutationFilterSchema = object({
12127
12130
  where: record(string(), unknown()).optional(),
12128
12131
  whereIn: record(string(), array(unknown())).optional(),
12129
12132
  whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
12130
- whereNot: record(string(), unknown()).optional()
12133
+ whereNot: record(string(), unknown()).optional(),
12134
+ whereNotIn: record(string(), array(unknown())).optional()
12131
12135
  });
12132
12136
  /**
12133
12137
  * One scalar an {@link settingsStoreCapability.methods.aggregate} call asks for.
@@ -18883,10 +18887,12 @@ var TrackSourceSchema = _enum([
18883
18887
  * Terminal for the plain `markForTrain` toggle: returning it to `staging` is
18884
18888
  * a deliberate action of the retrain page, not a side effect of a checkbox.
18885
18889
  *
18886
- * There is no `null`. The state is stored `TEXT NOT NULL DEFAULT 'none'` because
18887
- * the store's filter language has only positive equality and `whereIn` no
18888
- * negation, no IS NULL so a NULL would be unselectable by ANY predicate and
18889
- * would make the entire pre-column history immortal in one deploy.
18890
+ * There is no `null`. The state is stored `TEXT NOT NULL DEFAULT 'none'` so that
18891
+ * every row is selectable by a positive predicate. (The filter language has
18892
+ * since grown the NULL-safe `whereNot` / `whereNotIn` and an `IS NULL` reading
18893
+ * of `where: { f: null }`, which is how {@link TrackSourceSchema} can be
18894
+ * filtered on a NULLABLE column — see `excludeSources`. It did not when this
18895
+ * column was designed, and a NOT NULL column is still the better shape.)
18890
18896
  */
18891
18897
  var RetrainStatusSchema = _enum([
18892
18898
  "none",
@@ -19622,7 +19628,9 @@ var RecentTracksQueryInput = object({
19622
19628
  * whose class list is unreadable are kept, and the client's rule stays the
19623
19629
  * exact one.
19624
19630
  */
19625
- classes: array(string()).optional()
19631
+ classes: array(string()).optional(),
19632
+ /** See {@link ExcludeSourcesDoc}. */
19633
+ excludeSources: array(TrackSourceSchema).optional()
19626
19634
  });
19627
19635
  /**
19628
19636
  * A Summary (D359): the per-camera session envelope that references tracks.
@@ -20050,7 +20058,9 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
20050
20058
  * selected is an operator who has not narrowed anything, and an empty
20051
20059
  * timeline would read as a camera that saw nothing.
20052
20060
  */
20053
- classes: array(string()).optional()
20061
+ classes: array(string()).optional(),
20062
+ /** See {@link ExcludeSourcesDoc}. */
20063
+ excludeSources: array(TrackSourceSchema).optional()
20054
20064
  }), array(TrackSchema).readonly()), method(RecentTracksQueryInput, RecentTracksPageSchema), method(SummariesQueryInput, SummariesPageSchema), method(object({ id: string() }), SummaryDetailSchema.nullable()), method(object({ deviceId: number() }), _void(), {
20055
20065
  kind: "mutation",
20056
20066
  auth: "admin"
@@ -20555,8 +20565,25 @@ var occupancyRecheckFramesField = {
20555
20565
  * (analyzer attaches detected `regions[]`; onboard does not — the
20556
20566
  * camera typically only reports a binary signal plus an optional
20557
20567
  * channel/AI class which lives in dedicated event channels).
20558
- */
20559
- var MotionSourceEnum = _enum(["onboard", "analyzer"]);
20568
+ *
20569
+ * - `onboard` — the camera's firmware said something moved.
20570
+ * - `analyzer` — this runner's frame-diff said so, and attaches `regions[]`.
20571
+ * - `device-activity` — the DEVICE said it is doing its job: the
20572
+ * `recording-signal` LEVEL the same device raises for the recorder
20573
+ * ([D380](../../../../docs/decisions/adr-0380-a-device-decided-recording-is-a-mode-with-no-schedule-seeded-once.md)),
20574
+ * republished as a motion source. It attaches **nothing** — no regions, no
20575
+ * class: the only fact it carries is that the device is active, and a robot
20576
+ * vacuum that is itself the moving object has no region worth sending. It is
20577
+ * a LEVEL, so unlike `onboard` it has a real falling edge, and unlike
20578
+ * `analyzer` it must not open the frame-diff side-channel — the runner's
20579
+ * `handleOnboardMotionAnalyzer` gate is `source === 'onboard'` and stays that
20580
+ * way ([D392](../../../../docs/decisions/adr-0392-a-device-that-says-it-is-working-is-a-motion-source-of-its-own.md)).
20581
+ */
20582
+ var MotionSourceEnum = _enum([
20583
+ "onboard",
20584
+ "analyzer",
20585
+ "device-activity"
20586
+ ]);
20560
20587
  /**
20561
20588
  * List of motion sources active on a camera. Empty array is valid:
20562
20589
  * "no source" — happens for battery cams without firmware motion when
package/dist/addon.mjs CHANGED
@@ -12083,6 +12083,9 @@ var QueryFilterSchema = object({
12083
12083
  whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
12084
12084
  /** NULL-safe exclusion: matches rows whose field is NULL OR != the value. */
12085
12085
  whereNot: record(string(), unknown()).optional(),
12086
+ /** NULL-safe exclusion of a SET — `whereNot` for more than one value. An
12087
+ * empty list excludes nothing. See `QueryFilter.whereNotIn`. */
12088
+ whereNotIn: record(string(), array(unknown())).optional(),
12086
12089
  orderBy: object({
12087
12090
  field: string(),
12088
12091
  direction: _enum(["asc", "desc"])
@@ -12103,7 +12106,8 @@ var MutationFilterSchema = object({
12103
12106
  where: record(string(), unknown()).optional(),
12104
12107
  whereIn: record(string(), array(unknown())).optional(),
12105
12108
  whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
12106
- whereNot: record(string(), unknown()).optional()
12109
+ whereNot: record(string(), unknown()).optional(),
12110
+ whereNotIn: record(string(), array(unknown())).optional()
12107
12111
  });
12108
12112
  /**
12109
12113
  * One scalar an {@link settingsStoreCapability.methods.aggregate} call asks for.
@@ -18859,10 +18863,12 @@ var TrackSourceSchema = _enum([
18859
18863
  * Terminal for the plain `markForTrain` toggle: returning it to `staging` is
18860
18864
  * a deliberate action of the retrain page, not a side effect of a checkbox.
18861
18865
  *
18862
- * There is no `null`. The state is stored `TEXT NOT NULL DEFAULT 'none'` because
18863
- * the store's filter language has only positive equality and `whereIn` no
18864
- * negation, no IS NULL so a NULL would be unselectable by ANY predicate and
18865
- * would make the entire pre-column history immortal in one deploy.
18866
+ * There is no `null`. The state is stored `TEXT NOT NULL DEFAULT 'none'` so that
18867
+ * every row is selectable by a positive predicate. (The filter language has
18868
+ * since grown the NULL-safe `whereNot` / `whereNotIn` and an `IS NULL` reading
18869
+ * of `where: { f: null }`, which is how {@link TrackSourceSchema} can be
18870
+ * filtered on a NULLABLE column — see `excludeSources`. It did not when this
18871
+ * column was designed, and a NOT NULL column is still the better shape.)
18866
18872
  */
18867
18873
  var RetrainStatusSchema = _enum([
18868
18874
  "none",
@@ -19598,7 +19604,9 @@ var RecentTracksQueryInput = object({
19598
19604
  * whose class list is unreadable are kept, and the client's rule stays the
19599
19605
  * exact one.
19600
19606
  */
19601
- classes: array(string()).optional()
19607
+ classes: array(string()).optional(),
19608
+ /** See {@link ExcludeSourcesDoc}. */
19609
+ excludeSources: array(TrackSourceSchema).optional()
19602
19610
  });
19603
19611
  /**
19604
19612
  * A Summary (D359): the per-camera session envelope that references tracks.
@@ -20026,7 +20034,9 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
20026
20034
  * selected is an operator who has not narrowed anything, and an empty
20027
20035
  * timeline would read as a camera that saw nothing.
20028
20036
  */
20029
- classes: array(string()).optional()
20037
+ classes: array(string()).optional(),
20038
+ /** See {@link ExcludeSourcesDoc}. */
20039
+ excludeSources: array(TrackSourceSchema).optional()
20030
20040
  }), array(TrackSchema).readonly()), method(RecentTracksQueryInput, RecentTracksPageSchema), method(SummariesQueryInput, SummariesPageSchema), method(object({ id: string() }), SummaryDetailSchema.nullable()), method(object({ deviceId: number() }), _void(), {
20031
20041
  kind: "mutation",
20032
20042
  auth: "admin"
@@ -20531,8 +20541,25 @@ var occupancyRecheckFramesField = {
20531
20541
  * (analyzer attaches detected `regions[]`; onboard does not — the
20532
20542
  * camera typically only reports a binary signal plus an optional
20533
20543
  * channel/AI class which lives in dedicated event channels).
20534
- */
20535
- var MotionSourceEnum = _enum(["onboard", "analyzer"]);
20544
+ *
20545
+ * - `onboard` — the camera's firmware said something moved.
20546
+ * - `analyzer` — this runner's frame-diff said so, and attaches `regions[]`.
20547
+ * - `device-activity` — the DEVICE said it is doing its job: the
20548
+ * `recording-signal` LEVEL the same device raises for the recorder
20549
+ * ([D380](../../../../docs/decisions/adr-0380-a-device-decided-recording-is-a-mode-with-no-schedule-seeded-once.md)),
20550
+ * republished as a motion source. It attaches **nothing** — no regions, no
20551
+ * class: the only fact it carries is that the device is active, and a robot
20552
+ * vacuum that is itself the moving object has no region worth sending. It is
20553
+ * a LEVEL, so unlike `onboard` it has a real falling edge, and unlike
20554
+ * `analyzer` it must not open the frame-diff side-channel — the runner's
20555
+ * `handleOnboardMotionAnalyzer` gate is `source === 'onboard'` and stays that
20556
+ * way ([D392](../../../../docs/decisions/adr-0392-a-device-that-says-it-is-working-is-a-motion-source-of-its-own.md)).
20557
+ */
20558
+ var MotionSourceEnum = _enum([
20559
+ "onboard",
20560
+ "analyzer",
20561
+ "device-activity"
20562
+ ]);
20536
20563
  /**
20537
20564
  * List of motion sources active on a camera. Empty array is valid:
20538
20565
  * "no source" — happens for battery cams without firmware motion when
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-provider-rtsp",
3
- "version": "1.2.80",
3
+ "version": "1.2.82",
4
4
  "description": "Generic RTSP camera device provider addon for CamStack",
5
5
  "keywords": [
6
6
  "camstack",