@camstack/addon-provider-tuya 0.2.80 → 0.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
@@ -12871,6 +12871,9 @@ var QueryFilterSchema = object({
12871
12871
  whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
12872
12872
  /** NULL-safe exclusion: matches rows whose field is NULL OR != the value. */
12873
12873
  whereNot: record(string(), unknown()).optional(),
12874
+ /** NULL-safe exclusion of a SET — `whereNot` for more than one value. An
12875
+ * empty list excludes nothing. See `QueryFilter.whereNotIn`. */
12876
+ whereNotIn: record(string(), array(unknown())).optional(),
12874
12877
  orderBy: object({
12875
12878
  field: string(),
12876
12879
  direction: _enum(["asc", "desc"])
@@ -12891,7 +12894,8 @@ var MutationFilterSchema = object({
12891
12894
  where: record(string(), unknown()).optional(),
12892
12895
  whereIn: record(string(), array(unknown())).optional(),
12893
12896
  whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
12894
- whereNot: record(string(), unknown()).optional()
12897
+ whereNot: record(string(), unknown()).optional(),
12898
+ whereNotIn: record(string(), array(unknown())).optional()
12895
12899
  });
12896
12900
  /**
12897
12901
  * One scalar an {@link settingsStoreCapability.methods.aggregate} call asks for.
@@ -19664,10 +19668,12 @@ var TrackSourceSchema = _enum([
19664
19668
  * Terminal for the plain `markForTrain` toggle: returning it to `staging` is
19665
19669
  * a deliberate action of the retrain page, not a side effect of a checkbox.
19666
19670
  *
19667
- * There is no `null`. The state is stored `TEXT NOT NULL DEFAULT 'none'` because
19668
- * the store's filter language has only positive equality and `whereIn` — no
19669
- * negation, no IS NULL — so a NULL would be unselectable by ANY predicate and
19670
- * would make the entire pre-column history immortal in one deploy.
19671
+ * There is no `null`. The state is stored `TEXT NOT NULL DEFAULT 'none'` so that
19672
+ * every row is selectable by a positive predicate. (The filter language has
19673
+ * since grown the NULL-safe `whereNot` / `whereNotIn` and an `IS NULL` reading
19674
+ * of `where: { f: null }`, which is how {@link TrackSourceSchema} can be
19675
+ * filtered on a NULLABLE column — see `excludeSources`. It did not when this
19676
+ * column was designed, and a NOT NULL column is still the better shape.)
19671
19677
  */
19672
19678
  var RetrainStatusSchema = _enum([
19673
19679
  "none",
@@ -20403,7 +20409,9 @@ var RecentTracksQueryInput = object({
20403
20409
  * whose class list is unreadable are kept, and the client's rule stays the
20404
20410
  * exact one.
20405
20411
  */
20406
- classes: array(string()).optional()
20412
+ classes: array(string()).optional(),
20413
+ /** See {@link ExcludeSourcesDoc}. */
20414
+ excludeSources: array(TrackSourceSchema).optional()
20407
20415
  });
20408
20416
  /**
20409
20417
  * A Summary (D359): the per-camera session envelope that references tracks.
@@ -20831,7 +20839,9 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
20831
20839
  * selected is an operator who has not narrowed anything, and an empty
20832
20840
  * timeline would read as a camera that saw nothing.
20833
20841
  */
20834
- classes: array(string()).optional()
20842
+ classes: array(string()).optional(),
20843
+ /** See {@link ExcludeSourcesDoc}. */
20844
+ excludeSources: array(TrackSourceSchema).optional()
20835
20845
  }), array(TrackSchema).readonly()), method(RecentTracksQueryInput, RecentTracksPageSchema), method(SummariesQueryInput, SummariesPageSchema), method(object({ id: string() }), SummaryDetailSchema.nullable()), method(object({ deviceId: number() }), _void(), {
20836
20846
  kind: "mutation",
20837
20847
  auth: "admin"
@@ -21336,8 +21346,25 @@ var occupancyRecheckFramesField = {
21336
21346
  * (analyzer attaches detected `regions[]`; onboard does not — the
21337
21347
  * camera typically only reports a binary signal plus an optional
21338
21348
  * channel/AI class which lives in dedicated event channels).
21339
- */
21340
- var MotionSourceEnum = _enum(["onboard", "analyzer"]);
21349
+ *
21350
+ * - `onboard` — the camera's firmware said something moved.
21351
+ * - `analyzer` — this runner's frame-diff said so, and attaches `regions[]`.
21352
+ * - `device-activity` — the DEVICE said it is doing its job: the
21353
+ * `recording-signal` LEVEL the same device raises for the recorder
21354
+ * ([D380](../../../../docs/decisions/adr-0380-a-device-decided-recording-is-a-mode-with-no-schedule-seeded-once.md)),
21355
+ * republished as a motion source. It attaches **nothing** — no regions, no
21356
+ * class: the only fact it carries is that the device is active, and a robot
21357
+ * vacuum that is itself the moving object has no region worth sending. It is
21358
+ * a LEVEL, so unlike `onboard` it has a real falling edge, and unlike
21359
+ * `analyzer` it must not open the frame-diff side-channel — the runner's
21360
+ * `handleOnboardMotionAnalyzer` gate is `source === 'onboard'` and stays that
21361
+ * way ([D392](../../../../docs/decisions/adr-0392-a-device-that-says-it-is-working-is-a-motion-source-of-its-own.md)).
21362
+ */
21363
+ var MotionSourceEnum = _enum([
21364
+ "onboard",
21365
+ "analyzer",
21366
+ "device-activity"
21367
+ ]);
21341
21368
  /**
21342
21369
  * List of motion sources active on a camera. Empty array is valid:
21343
21370
  * "no source" — happens for battery cams without firmware motion when
package/dist/addon.mjs CHANGED
@@ -12870,6 +12870,9 @@ var QueryFilterSchema = object({
12870
12870
  whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
12871
12871
  /** NULL-safe exclusion: matches rows whose field is NULL OR != the value. */
12872
12872
  whereNot: record(string(), unknown()).optional(),
12873
+ /** NULL-safe exclusion of a SET — `whereNot` for more than one value. An
12874
+ * empty list excludes nothing. See `QueryFilter.whereNotIn`. */
12875
+ whereNotIn: record(string(), array(unknown())).optional(),
12873
12876
  orderBy: object({
12874
12877
  field: string(),
12875
12878
  direction: _enum(["asc", "desc"])
@@ -12890,7 +12893,8 @@ var MutationFilterSchema = object({
12890
12893
  where: record(string(), unknown()).optional(),
12891
12894
  whereIn: record(string(), array(unknown())).optional(),
12892
12895
  whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
12893
- whereNot: record(string(), unknown()).optional()
12896
+ whereNot: record(string(), unknown()).optional(),
12897
+ whereNotIn: record(string(), array(unknown())).optional()
12894
12898
  });
12895
12899
  /**
12896
12900
  * One scalar an {@link settingsStoreCapability.methods.aggregate} call asks for.
@@ -19663,10 +19667,12 @@ var TrackSourceSchema = _enum([
19663
19667
  * Terminal for the plain `markForTrain` toggle: returning it to `staging` is
19664
19668
  * a deliberate action of the retrain page, not a side effect of a checkbox.
19665
19669
  *
19666
- * There is no `null`. The state is stored `TEXT NOT NULL DEFAULT 'none'` because
19667
- * the store's filter language has only positive equality and `whereIn` — no
19668
- * negation, no IS NULL — so a NULL would be unselectable by ANY predicate and
19669
- * would make the entire pre-column history immortal in one deploy.
19670
+ * There is no `null`. The state is stored `TEXT NOT NULL DEFAULT 'none'` so that
19671
+ * every row is selectable by a positive predicate. (The filter language has
19672
+ * since grown the NULL-safe `whereNot` / `whereNotIn` and an `IS NULL` reading
19673
+ * of `where: { f: null }`, which is how {@link TrackSourceSchema} can be
19674
+ * filtered on a NULLABLE column — see `excludeSources`. It did not when this
19675
+ * column was designed, and a NOT NULL column is still the better shape.)
19670
19676
  */
19671
19677
  var RetrainStatusSchema = _enum([
19672
19678
  "none",
@@ -20402,7 +20408,9 @@ var RecentTracksQueryInput = object({
20402
20408
  * whose class list is unreadable are kept, and the client's rule stays the
20403
20409
  * exact one.
20404
20410
  */
20405
- classes: array(string()).optional()
20411
+ classes: array(string()).optional(),
20412
+ /** See {@link ExcludeSourcesDoc}. */
20413
+ excludeSources: array(TrackSourceSchema).optional()
20406
20414
  });
20407
20415
  /**
20408
20416
  * A Summary (D359): the per-camera session envelope that references tracks.
@@ -20830,7 +20838,9 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
20830
20838
  * selected is an operator who has not narrowed anything, and an empty
20831
20839
  * timeline would read as a camera that saw nothing.
20832
20840
  */
20833
- classes: array(string()).optional()
20841
+ classes: array(string()).optional(),
20842
+ /** See {@link ExcludeSourcesDoc}. */
20843
+ excludeSources: array(TrackSourceSchema).optional()
20834
20844
  }), array(TrackSchema).readonly()), method(RecentTracksQueryInput, RecentTracksPageSchema), method(SummariesQueryInput, SummariesPageSchema), method(object({ id: string() }), SummaryDetailSchema.nullable()), method(object({ deviceId: number() }), _void(), {
20835
20845
  kind: "mutation",
20836
20846
  auth: "admin"
@@ -21335,8 +21345,25 @@ var occupancyRecheckFramesField = {
21335
21345
  * (analyzer attaches detected `regions[]`; onboard does not — the
21336
21346
  * camera typically only reports a binary signal plus an optional
21337
21347
  * channel/AI class which lives in dedicated event channels).
21338
- */
21339
- var MotionSourceEnum = _enum(["onboard", "analyzer"]);
21348
+ *
21349
+ * - `onboard` — the camera's firmware said something moved.
21350
+ * - `analyzer` — this runner's frame-diff said so, and attaches `regions[]`.
21351
+ * - `device-activity` — the DEVICE said it is doing its job: the
21352
+ * `recording-signal` LEVEL the same device raises for the recorder
21353
+ * ([D380](../../../../docs/decisions/adr-0380-a-device-decided-recording-is-a-mode-with-no-schedule-seeded-once.md)),
21354
+ * republished as a motion source. It attaches **nothing** — no regions, no
21355
+ * class: the only fact it carries is that the device is active, and a robot
21356
+ * vacuum that is itself the moving object has no region worth sending. It is
21357
+ * a LEVEL, so unlike `onboard` it has a real falling edge, and unlike
21358
+ * `analyzer` it must not open the frame-diff side-channel — the runner's
21359
+ * `handleOnboardMotionAnalyzer` gate is `source === 'onboard'` and stays that
21360
+ * way ([D392](../../../../docs/decisions/adr-0392-a-device-that-says-it-is-working-is-a-motion-source-of-its-own.md)).
21361
+ */
21362
+ var MotionSourceEnum = _enum([
21363
+ "onboard",
21364
+ "analyzer",
21365
+ "device-activity"
21366
+ ]);
21340
21367
  /**
21341
21368
  * List of motion sources active on a camera. Empty array is valid:
21342
21369
  * "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-tuya",
3
- "version": "0.2.80",
3
+ "version": "0.2.82",
4
4
  "description": "Tuya / Smart Life device-provider addon for CamStack — account-onboarded (Tuya IoT cloud fetch of device localKeys) + LOCAL DP control via the @apocaliss92/nodetuya encrypted-LAN client, exposing switch / water-heater-family kettle entities",
5
5
  "keywords": [
6
6
  "camstack",