@camstack/addon-decoder-nodeav 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/index.js CHANGED
@@ -11986,6 +11986,9 @@ var QueryFilterSchema = object({
11986
11986
  whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
11987
11987
  /** NULL-safe exclusion: matches rows whose field is NULL OR != the value. */
11988
11988
  whereNot: record(string(), unknown()).optional(),
11989
+ /** NULL-safe exclusion of a SET — `whereNot` for more than one value. An
11990
+ * empty list excludes nothing. See `QueryFilter.whereNotIn`. */
11991
+ whereNotIn: record(string(), array(unknown())).optional(),
11989
11992
  orderBy: object({
11990
11993
  field: string(),
11991
11994
  direction: _enum(["asc", "desc"])
@@ -12006,7 +12009,8 @@ var MutationFilterSchema = object({
12006
12009
  where: record(string(), unknown()).optional(),
12007
12010
  whereIn: record(string(), array(unknown())).optional(),
12008
12011
  whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
12009
- whereNot: record(string(), unknown()).optional()
12012
+ whereNot: record(string(), unknown()).optional(),
12013
+ whereNotIn: record(string(), array(unknown())).optional()
12010
12014
  });
12011
12015
  /**
12012
12016
  * One scalar an {@link settingsStoreCapability.methods.aggregate} call asks for.
@@ -18589,10 +18593,12 @@ var TrackSourceSchema = _enum([
18589
18593
  * Terminal for the plain `markForTrain` toggle: returning it to `staging` is
18590
18594
  * a deliberate action of the retrain page, not a side effect of a checkbox.
18591
18595
  *
18592
- * There is no `null`. The state is stored `TEXT NOT NULL DEFAULT 'none'` because
18593
- * the store's filter language has only positive equality and `whereIn` no
18594
- * negation, no IS NULL so a NULL would be unselectable by ANY predicate and
18595
- * would make the entire pre-column history immortal in one deploy.
18596
+ * There is no `null`. The state is stored `TEXT NOT NULL DEFAULT 'none'` so that
18597
+ * every row is selectable by a positive predicate. (The filter language has
18598
+ * since grown the NULL-safe `whereNot` / `whereNotIn` and an `IS NULL` reading
18599
+ * of `where: { f: null }`, which is how {@link TrackSourceSchema} can be
18600
+ * filtered on a NULLABLE column — see `excludeSources`. It did not when this
18601
+ * column was designed, and a NOT NULL column is still the better shape.)
18596
18602
  */
18597
18603
  var RetrainStatusSchema = _enum([
18598
18604
  "none",
@@ -19328,7 +19334,9 @@ var RecentTracksQueryInput = object({
19328
19334
  * whose class list is unreadable are kept, and the client's rule stays the
19329
19335
  * exact one.
19330
19336
  */
19331
- classes: array(string()).optional()
19337
+ classes: array(string()).optional(),
19338
+ /** See {@link ExcludeSourcesDoc}. */
19339
+ excludeSources: array(TrackSourceSchema).optional()
19332
19340
  });
19333
19341
  /**
19334
19342
  * A Summary (D359): the per-camera session envelope that references tracks.
@@ -19756,7 +19764,9 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
19756
19764
  * selected is an operator who has not narrowed anything, and an empty
19757
19765
  * timeline would read as a camera that saw nothing.
19758
19766
  */
19759
- classes: array(string()).optional()
19767
+ classes: array(string()).optional(),
19768
+ /** See {@link ExcludeSourcesDoc}. */
19769
+ excludeSources: array(TrackSourceSchema).optional()
19760
19770
  }), array(TrackSchema).readonly()), method(RecentTracksQueryInput, RecentTracksPageSchema), method(SummariesQueryInput, SummariesPageSchema), method(object({ id: string() }), SummaryDetailSchema.nullable()), method(object({ deviceId: number() }), _void(), {
19761
19771
  kind: "mutation",
19762
19772
  auth: "admin"
@@ -20261,8 +20271,25 @@ var occupancyRecheckFramesField = {
20261
20271
  * (analyzer attaches detected `regions[]`; onboard does not — the
20262
20272
  * camera typically only reports a binary signal plus an optional
20263
20273
  * channel/AI class which lives in dedicated event channels).
20264
- */
20265
- var MotionSourceEnum = _enum(["onboard", "analyzer"]);
20274
+ *
20275
+ * - `onboard` — the camera's firmware said something moved.
20276
+ * - `analyzer` — this runner's frame-diff said so, and attaches `regions[]`.
20277
+ * - `device-activity` — the DEVICE said it is doing its job: the
20278
+ * `recording-signal` LEVEL the same device raises for the recorder
20279
+ * ([D380](../../../../docs/decisions/adr-0380-a-device-decided-recording-is-a-mode-with-no-schedule-seeded-once.md)),
20280
+ * republished as a motion source. It attaches **nothing** — no regions, no
20281
+ * class: the only fact it carries is that the device is active, and a robot
20282
+ * vacuum that is itself the moving object has no region worth sending. It is
20283
+ * a LEVEL, so unlike `onboard` it has a real falling edge, and unlike
20284
+ * `analyzer` it must not open the frame-diff side-channel — the runner's
20285
+ * `handleOnboardMotionAnalyzer` gate is `source === 'onboard'` and stays that
20286
+ * way ([D392](../../../../docs/decisions/adr-0392-a-device-that-says-it-is-working-is-a-motion-source-of-its-own.md)).
20287
+ */
20288
+ var MotionSourceEnum = _enum([
20289
+ "onboard",
20290
+ "analyzer",
20291
+ "device-activity"
20292
+ ]);
20266
20293
  /**
20267
20294
  * List of motion sources active on a camera. Empty array is valid:
20268
20295
  * "no source" — happens for battery cams without firmware motion when
package/dist/index.mjs CHANGED
@@ -11982,6 +11982,9 @@ var QueryFilterSchema = object({
11982
11982
  whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
11983
11983
  /** NULL-safe exclusion: matches rows whose field is NULL OR != the value. */
11984
11984
  whereNot: record(string(), unknown()).optional(),
11985
+ /** NULL-safe exclusion of a SET — `whereNot` for more than one value. An
11986
+ * empty list excludes nothing. See `QueryFilter.whereNotIn`. */
11987
+ whereNotIn: record(string(), array(unknown())).optional(),
11985
11988
  orderBy: object({
11986
11989
  field: string(),
11987
11990
  direction: _enum(["asc", "desc"])
@@ -12002,7 +12005,8 @@ var MutationFilterSchema = object({
12002
12005
  where: record(string(), unknown()).optional(),
12003
12006
  whereIn: record(string(), array(unknown())).optional(),
12004
12007
  whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
12005
- whereNot: record(string(), unknown()).optional()
12008
+ whereNot: record(string(), unknown()).optional(),
12009
+ whereNotIn: record(string(), array(unknown())).optional()
12006
12010
  });
12007
12011
  /**
12008
12012
  * One scalar an {@link settingsStoreCapability.methods.aggregate} call asks for.
@@ -18585,10 +18589,12 @@ var TrackSourceSchema = _enum([
18585
18589
  * Terminal for the plain `markForTrain` toggle: returning it to `staging` is
18586
18590
  * a deliberate action of the retrain page, not a side effect of a checkbox.
18587
18591
  *
18588
- * There is no `null`. The state is stored `TEXT NOT NULL DEFAULT 'none'` because
18589
- * the store's filter language has only positive equality and `whereIn` no
18590
- * negation, no IS NULL so a NULL would be unselectable by ANY predicate and
18591
- * would make the entire pre-column history immortal in one deploy.
18592
+ * There is no `null`. The state is stored `TEXT NOT NULL DEFAULT 'none'` so that
18593
+ * every row is selectable by a positive predicate. (The filter language has
18594
+ * since grown the NULL-safe `whereNot` / `whereNotIn` and an `IS NULL` reading
18595
+ * of `where: { f: null }`, which is how {@link TrackSourceSchema} can be
18596
+ * filtered on a NULLABLE column — see `excludeSources`. It did not when this
18597
+ * column was designed, and a NOT NULL column is still the better shape.)
18592
18598
  */
18593
18599
  var RetrainStatusSchema = _enum([
18594
18600
  "none",
@@ -19324,7 +19330,9 @@ var RecentTracksQueryInput = object({
19324
19330
  * whose class list is unreadable are kept, and the client's rule stays the
19325
19331
  * exact one.
19326
19332
  */
19327
- classes: array(string()).optional()
19333
+ classes: array(string()).optional(),
19334
+ /** See {@link ExcludeSourcesDoc}. */
19335
+ excludeSources: array(TrackSourceSchema).optional()
19328
19336
  });
19329
19337
  /**
19330
19338
  * A Summary (D359): the per-camera session envelope that references tracks.
@@ -19752,7 +19760,9 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
19752
19760
  * selected is an operator who has not narrowed anything, and an empty
19753
19761
  * timeline would read as a camera that saw nothing.
19754
19762
  */
19755
- classes: array(string()).optional()
19763
+ classes: array(string()).optional(),
19764
+ /** See {@link ExcludeSourcesDoc}. */
19765
+ excludeSources: array(TrackSourceSchema).optional()
19756
19766
  }), array(TrackSchema).readonly()), method(RecentTracksQueryInput, RecentTracksPageSchema), method(SummariesQueryInput, SummariesPageSchema), method(object({ id: string() }), SummaryDetailSchema.nullable()), method(object({ deviceId: number() }), _void(), {
19757
19767
  kind: "mutation",
19758
19768
  auth: "admin"
@@ -20257,8 +20267,25 @@ var occupancyRecheckFramesField = {
20257
20267
  * (analyzer attaches detected `regions[]`; onboard does not — the
20258
20268
  * camera typically only reports a binary signal plus an optional
20259
20269
  * channel/AI class which lives in dedicated event channels).
20260
- */
20261
- var MotionSourceEnum = _enum(["onboard", "analyzer"]);
20270
+ *
20271
+ * - `onboard` — the camera's firmware said something moved.
20272
+ * - `analyzer` — this runner's frame-diff said so, and attaches `regions[]`.
20273
+ * - `device-activity` — the DEVICE said it is doing its job: the
20274
+ * `recording-signal` LEVEL the same device raises for the recorder
20275
+ * ([D380](../../../../docs/decisions/adr-0380-a-device-decided-recording-is-a-mode-with-no-schedule-seeded-once.md)),
20276
+ * republished as a motion source. It attaches **nothing** — no regions, no
20277
+ * class: the only fact it carries is that the device is active, and a robot
20278
+ * vacuum that is itself the moving object has no region worth sending. It is
20279
+ * a LEVEL, so unlike `onboard` it has a real falling edge, and unlike
20280
+ * `analyzer` it must not open the frame-diff side-channel — the runner's
20281
+ * `handleOnboardMotionAnalyzer` gate is `source === 'onboard'` and stays that
20282
+ * way ([D392](../../../../docs/decisions/adr-0392-a-device-that-says-it-is-working-is-a-motion-source-of-its-own.md)).
20283
+ */
20284
+ var MotionSourceEnum = _enum([
20285
+ "onboard",
20286
+ "analyzer",
20287
+ "device-activity"
20288
+ ]);
20262
20289
  /**
20263
20290
  * List of motion sources active on a camera. Empty array is valid:
20264
20291
  * "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-decoder-nodeav",
3
- "version": "1.2.80",
3
+ "version": "1.2.82",
4
4
  "description": "Standalone in-process node-av decoder addon for CamStack",
5
5
  "keywords": [
6
6
  "camstack",