@camstack/addon-export-google 0.1.44 → 0.1.46

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.
@@ -12190,6 +12190,9 @@ var QueryFilterSchema = object({
12190
12190
  whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
12191
12191
  /** NULL-safe exclusion: matches rows whose field is NULL OR != the value. */
12192
12192
  whereNot: record(string(), unknown()).optional(),
12193
+ /** NULL-safe exclusion of a SET — `whereNot` for more than one value. An
12194
+ * empty list excludes nothing. See `QueryFilter.whereNotIn`. */
12195
+ whereNotIn: record(string(), array(unknown())).optional(),
12193
12196
  orderBy: object({
12194
12197
  field: string(),
12195
12198
  direction: _enum(["asc", "desc"])
@@ -12210,7 +12213,8 @@ var MutationFilterSchema = object({
12210
12213
  where: record(string(), unknown()).optional(),
12211
12214
  whereIn: record(string(), array(unknown())).optional(),
12212
12215
  whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
12213
- whereNot: record(string(), unknown()).optional()
12216
+ whereNot: record(string(), unknown()).optional(),
12217
+ whereNotIn: record(string(), array(unknown())).optional()
12214
12218
  });
12215
12219
  /**
12216
12220
  * One scalar an {@link settingsStoreCapability.methods.aggregate} call asks for.
@@ -18741,10 +18745,12 @@ var TrackSourceSchema = _enum([
18741
18745
  * Terminal for the plain `markForTrain` toggle: returning it to `staging` is
18742
18746
  * a deliberate action of the retrain page, not a side effect of a checkbox.
18743
18747
  *
18744
- * There is no `null`. The state is stored `TEXT NOT NULL DEFAULT 'none'` because
18745
- * the store's filter language has only positive equality and `whereIn` — no
18746
- * negation, no IS NULL — so a NULL would be unselectable by ANY predicate and
18747
- * would make the entire pre-column history immortal in one deploy.
18748
+ * There is no `null`. The state is stored `TEXT NOT NULL DEFAULT 'none'` so that
18749
+ * every row is selectable by a positive predicate. (The filter language has
18750
+ * since grown the NULL-safe `whereNot` / `whereNotIn` and an `IS NULL` reading
18751
+ * of `where: { f: null }`, which is how {@link TrackSourceSchema} can be
18752
+ * filtered on a NULLABLE column — see `excludeSources`. It did not when this
18753
+ * column was designed, and a NOT NULL column is still the better shape.)
18748
18754
  */
18749
18755
  var RetrainStatusSchema = _enum([
18750
18756
  "none",
@@ -19480,7 +19486,9 @@ var RecentTracksQueryInput = object({
19480
19486
  * whose class list is unreadable are kept, and the client's rule stays the
19481
19487
  * exact one.
19482
19488
  */
19483
- classes: array(string()).optional()
19489
+ classes: array(string()).optional(),
19490
+ /** See {@link ExcludeSourcesDoc}. */
19491
+ excludeSources: array(TrackSourceSchema).optional()
19484
19492
  });
19485
19493
  /**
19486
19494
  * A Summary (D359): the per-camera session envelope that references tracks.
@@ -19908,7 +19916,9 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
19908
19916
  * selected is an operator who has not narrowed anything, and an empty
19909
19917
  * timeline would read as a camera that saw nothing.
19910
19918
  */
19911
- classes: array(string()).optional()
19919
+ classes: array(string()).optional(),
19920
+ /** See {@link ExcludeSourcesDoc}. */
19921
+ excludeSources: array(TrackSourceSchema).optional()
19912
19922
  }), array(TrackSchema).readonly()), method(RecentTracksQueryInput, RecentTracksPageSchema), method(SummariesQueryInput, SummariesPageSchema), method(object({ id: string() }), SummaryDetailSchema.nullable()), method(object({ deviceId: number() }), _void(), {
19913
19923
  kind: "mutation",
19914
19924
  auth: "admin"
@@ -20413,8 +20423,25 @@ var occupancyRecheckFramesField = {
20413
20423
  * (analyzer attaches detected `regions[]`; onboard does not — the
20414
20424
  * camera typically only reports a binary signal plus an optional
20415
20425
  * channel/AI class which lives in dedicated event channels).
20416
- */
20417
- var MotionSourceEnum = _enum(["onboard", "analyzer"]);
20426
+ *
20427
+ * - `onboard` — the camera's firmware said something moved.
20428
+ * - `analyzer` — this runner's frame-diff said so, and attaches `regions[]`.
20429
+ * - `device-activity` — the DEVICE said it is doing its job: the
20430
+ * `recording-signal` LEVEL the same device raises for the recorder
20431
+ * ([D380](../../../../docs/decisions/adr-0380-a-device-decided-recording-is-a-mode-with-no-schedule-seeded-once.md)),
20432
+ * republished as a motion source. It attaches **nothing** — no regions, no
20433
+ * class: the only fact it carries is that the device is active, and a robot
20434
+ * vacuum that is itself the moving object has no region worth sending. It is
20435
+ * a LEVEL, so unlike `onboard` it has a real falling edge, and unlike
20436
+ * `analyzer` it must not open the frame-diff side-channel — the runner's
20437
+ * `handleOnboardMotionAnalyzer` gate is `source === 'onboard'` and stays that
20438
+ * way ([D392](../../../../docs/decisions/adr-0392-a-device-that-says-it-is-working-is-a-motion-source-of-its-own.md)).
20439
+ */
20440
+ var MotionSourceEnum = _enum([
20441
+ "onboard",
20442
+ "analyzer",
20443
+ "device-activity"
20444
+ ]);
20418
20445
  /**
20419
20446
  * List of motion sources active on a camera. Empty array is valid:
20420
20447
  * "no source" — happens for battery cams without firmware motion when
@@ -12186,6 +12186,9 @@ var QueryFilterSchema = object({
12186
12186
  whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
12187
12187
  /** NULL-safe exclusion: matches rows whose field is NULL OR != the value. */
12188
12188
  whereNot: record(string(), unknown()).optional(),
12189
+ /** NULL-safe exclusion of a SET — `whereNot` for more than one value. An
12190
+ * empty list excludes nothing. See `QueryFilter.whereNotIn`. */
12191
+ whereNotIn: record(string(), array(unknown())).optional(),
12189
12192
  orderBy: object({
12190
12193
  field: string(),
12191
12194
  direction: _enum(["asc", "desc"])
@@ -12206,7 +12209,8 @@ var MutationFilterSchema = object({
12206
12209
  where: record(string(), unknown()).optional(),
12207
12210
  whereIn: record(string(), array(unknown())).optional(),
12208
12211
  whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
12209
- whereNot: record(string(), unknown()).optional()
12212
+ whereNot: record(string(), unknown()).optional(),
12213
+ whereNotIn: record(string(), array(unknown())).optional()
12210
12214
  });
12211
12215
  /**
12212
12216
  * One scalar an {@link settingsStoreCapability.methods.aggregate} call asks for.
@@ -18737,10 +18741,12 @@ var TrackSourceSchema = _enum([
18737
18741
  * Terminal for the plain `markForTrain` toggle: returning it to `staging` is
18738
18742
  * a deliberate action of the retrain page, not a side effect of a checkbox.
18739
18743
  *
18740
- * There is no `null`. The state is stored `TEXT NOT NULL DEFAULT 'none'` because
18741
- * the store's filter language has only positive equality and `whereIn` — no
18742
- * negation, no IS NULL — so a NULL would be unselectable by ANY predicate and
18743
- * would make the entire pre-column history immortal in one deploy.
18744
+ * There is no `null`. The state is stored `TEXT NOT NULL DEFAULT 'none'` so that
18745
+ * every row is selectable by a positive predicate. (The filter language has
18746
+ * since grown the NULL-safe `whereNot` / `whereNotIn` and an `IS NULL` reading
18747
+ * of `where: { f: null }`, which is how {@link TrackSourceSchema} can be
18748
+ * filtered on a NULLABLE column — see `excludeSources`. It did not when this
18749
+ * column was designed, and a NOT NULL column is still the better shape.)
18744
18750
  */
18745
18751
  var RetrainStatusSchema = _enum([
18746
18752
  "none",
@@ -19476,7 +19482,9 @@ var RecentTracksQueryInput = object({
19476
19482
  * whose class list is unreadable are kept, and the client's rule stays the
19477
19483
  * exact one.
19478
19484
  */
19479
- classes: array(string()).optional()
19485
+ classes: array(string()).optional(),
19486
+ /** See {@link ExcludeSourcesDoc}. */
19487
+ excludeSources: array(TrackSourceSchema).optional()
19480
19488
  });
19481
19489
  /**
19482
19490
  * A Summary (D359): the per-camera session envelope that references tracks.
@@ -19904,7 +19912,9 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
19904
19912
  * selected is an operator who has not narrowed anything, and an empty
19905
19913
  * timeline would read as a camera that saw nothing.
19906
19914
  */
19907
- classes: array(string()).optional()
19915
+ classes: array(string()).optional(),
19916
+ /** See {@link ExcludeSourcesDoc}. */
19917
+ excludeSources: array(TrackSourceSchema).optional()
19908
19918
  }), array(TrackSchema).readonly()), method(RecentTracksQueryInput, RecentTracksPageSchema), method(SummariesQueryInput, SummariesPageSchema), method(object({ id: string() }), SummaryDetailSchema.nullable()), method(object({ deviceId: number() }), _void(), {
19909
19919
  kind: "mutation",
19910
19920
  auth: "admin"
@@ -20409,8 +20419,25 @@ var occupancyRecheckFramesField = {
20409
20419
  * (analyzer attaches detected `regions[]`; onboard does not — the
20410
20420
  * camera typically only reports a binary signal plus an optional
20411
20421
  * channel/AI class which lives in dedicated event channels).
20412
- */
20413
- var MotionSourceEnum = _enum(["onboard", "analyzer"]);
20422
+ *
20423
+ * - `onboard` — the camera's firmware said something moved.
20424
+ * - `analyzer` — this runner's frame-diff said so, and attaches `regions[]`.
20425
+ * - `device-activity` — the DEVICE said it is doing its job: the
20426
+ * `recording-signal` LEVEL the same device raises for the recorder
20427
+ * ([D380](../../../../docs/decisions/adr-0380-a-device-decided-recording-is-a-mode-with-no-schedule-seeded-once.md)),
20428
+ * republished as a motion source. It attaches **nothing** — no regions, no
20429
+ * class: the only fact it carries is that the device is active, and a robot
20430
+ * vacuum that is itself the moving object has no region worth sending. It is
20431
+ * a LEVEL, so unlike `onboard` it has a real falling edge, and unlike
20432
+ * `analyzer` it must not open the frame-diff side-channel — the runner's
20433
+ * `handleOnboardMotionAnalyzer` gate is `source === 'onboard'` and stays that
20434
+ * way ([D392](../../../../docs/decisions/adr-0392-a-device-that-says-it-is-working-is-a-motion-source-of-its-own.md)).
20435
+ */
20436
+ var MotionSourceEnum = _enum([
20437
+ "onboard",
20438
+ "analyzer",
20439
+ "device-activity"
20440
+ ]);
20414
20441
  /**
20415
20442
  * List of motion sources active on a camera. Empty array is valid:
20416
20443
  * "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-export-google",
3
- "version": "0.1.44",
3
+ "version": "0.1.46",
4
4
  "description": "Google Home export — hub-side smart-home fulfillment (SYNC / QUERY / EXECUTE / DISCONNECT) for the non-camera fleet, served over the hub's own OAuth account link. No Google credential is stored, sent or required.",
5
5
  "keywords": [
6
6
  "camstack",