@camstack/addon-provider-gree 0.2.79 → 0.2.81

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
@@ -12054,6 +12054,9 @@ var QueryFilterSchema = object({
12054
12054
  whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
12055
12055
  /** NULL-safe exclusion: matches rows whose field is NULL OR != the value. */
12056
12056
  whereNot: record(string(), unknown()).optional(),
12057
+ /** NULL-safe exclusion of a SET — `whereNot` for more than one value. An
12058
+ * empty list excludes nothing. See `QueryFilter.whereNotIn`. */
12059
+ whereNotIn: record(string(), array(unknown())).optional(),
12057
12060
  orderBy: object({
12058
12061
  field: string(),
12059
12062
  direction: _enum(["asc", "desc"])
@@ -12074,7 +12077,8 @@ var MutationFilterSchema = object({
12074
12077
  where: record(string(), unknown()).optional(),
12075
12078
  whereIn: record(string(), array(unknown())).optional(),
12076
12079
  whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
12077
- whereNot: record(string(), unknown()).optional()
12080
+ whereNot: record(string(), unknown()).optional(),
12081
+ whereNotIn: record(string(), array(unknown())).optional()
12078
12082
  });
12079
12083
  /**
12080
12084
  * One scalar an {@link settingsStoreCapability.methods.aggregate} call asks for.
@@ -18830,10 +18834,12 @@ var TrackSourceSchema = _enum([
18830
18834
  * Terminal for the plain `markForTrain` toggle: returning it to `staging` is
18831
18835
  * a deliberate action of the retrain page, not a side effect of a checkbox.
18832
18836
  *
18833
- * There is no `null`. The state is stored `TEXT NOT NULL DEFAULT 'none'` because
18834
- * the store's filter language has only positive equality and `whereIn` — no
18835
- * negation, no IS NULL — so a NULL would be unselectable by ANY predicate and
18836
- * would make the entire pre-column history immortal in one deploy.
18837
+ * There is no `null`. The state is stored `TEXT NOT NULL DEFAULT 'none'` so that
18838
+ * every row is selectable by a positive predicate. (The filter language has
18839
+ * since grown the NULL-safe `whereNot` / `whereNotIn` and an `IS NULL` reading
18840
+ * of `where: { f: null }`, which is how {@link TrackSourceSchema} can be
18841
+ * filtered on a NULLABLE column — see `excludeSources`. It did not when this
18842
+ * column was designed, and a NOT NULL column is still the better shape.)
18837
18843
  */
18838
18844
  var RetrainStatusSchema = _enum([
18839
18845
  "none",
@@ -19569,7 +19575,9 @@ var RecentTracksQueryInput = object({
19569
19575
  * whose class list is unreadable are kept, and the client's rule stays the
19570
19576
  * exact one.
19571
19577
  */
19572
- classes: array(string()).optional()
19578
+ classes: array(string()).optional(),
19579
+ /** See {@link ExcludeSourcesDoc}. */
19580
+ excludeSources: array(TrackSourceSchema).optional()
19573
19581
  });
19574
19582
  /**
19575
19583
  * A Summary (D359): the per-camera session envelope that references tracks.
@@ -19997,7 +20005,9 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
19997
20005
  * selected is an operator who has not narrowed anything, and an empty
19998
20006
  * timeline would read as a camera that saw nothing.
19999
20007
  */
20000
- classes: array(string()).optional()
20008
+ classes: array(string()).optional(),
20009
+ /** See {@link ExcludeSourcesDoc}. */
20010
+ excludeSources: array(TrackSourceSchema).optional()
20001
20011
  }), array(TrackSchema).readonly()), method(RecentTracksQueryInput, RecentTracksPageSchema), method(SummariesQueryInput, SummariesPageSchema), method(object({ id: string() }), SummaryDetailSchema.nullable()), method(object({ deviceId: number() }), _void(), {
20002
20012
  kind: "mutation",
20003
20013
  auth: "admin"
@@ -20502,8 +20512,25 @@ var occupancyRecheckFramesField = {
20502
20512
  * (analyzer attaches detected `regions[]`; onboard does not — the
20503
20513
  * camera typically only reports a binary signal plus an optional
20504
20514
  * channel/AI class which lives in dedicated event channels).
20505
- */
20506
- var MotionSourceEnum = _enum(["onboard", "analyzer"]);
20515
+ *
20516
+ * - `onboard` — the camera's firmware said something moved.
20517
+ * - `analyzer` — this runner's frame-diff said so, and attaches `regions[]`.
20518
+ * - `device-activity` — the DEVICE said it is doing its job: the
20519
+ * `recording-signal` LEVEL the same device raises for the recorder
20520
+ * ([D380](../../../../docs/decisions/adr-0380-a-device-decided-recording-is-a-mode-with-no-schedule-seeded-once.md)),
20521
+ * republished as a motion source. It attaches **nothing** — no regions, no
20522
+ * class: the only fact it carries is that the device is active, and a robot
20523
+ * vacuum that is itself the moving object has no region worth sending. It is
20524
+ * a LEVEL, so unlike `onboard` it has a real falling edge, and unlike
20525
+ * `analyzer` it must not open the frame-diff side-channel — the runner's
20526
+ * `handleOnboardMotionAnalyzer` gate is `source === 'onboard'` and stays that
20527
+ * way ([D392](../../../../docs/decisions/adr-0392-a-device-that-says-it-is-working-is-a-motion-source-of-its-own.md)).
20528
+ */
20529
+ var MotionSourceEnum = _enum([
20530
+ "onboard",
20531
+ "analyzer",
20532
+ "device-activity"
20533
+ ]);
20507
20534
  /**
20508
20535
  * List of motion sources active on a camera. Empty array is valid:
20509
20536
  * "no source" — happens for battery cams without firmware motion when
package/dist/addon.mjs CHANGED
@@ -12053,6 +12053,9 @@ var QueryFilterSchema = object({
12053
12053
  whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
12054
12054
  /** NULL-safe exclusion: matches rows whose field is NULL OR != the value. */
12055
12055
  whereNot: record(string(), unknown()).optional(),
12056
+ /** NULL-safe exclusion of a SET — `whereNot` for more than one value. An
12057
+ * empty list excludes nothing. See `QueryFilter.whereNotIn`. */
12058
+ whereNotIn: record(string(), array(unknown())).optional(),
12056
12059
  orderBy: object({
12057
12060
  field: string(),
12058
12061
  direction: _enum(["asc", "desc"])
@@ -12073,7 +12076,8 @@ var MutationFilterSchema = object({
12073
12076
  where: record(string(), unknown()).optional(),
12074
12077
  whereIn: record(string(), array(unknown())).optional(),
12075
12078
  whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
12076
- whereNot: record(string(), unknown()).optional()
12079
+ whereNot: record(string(), unknown()).optional(),
12080
+ whereNotIn: record(string(), array(unknown())).optional()
12077
12081
  });
12078
12082
  /**
12079
12083
  * One scalar an {@link settingsStoreCapability.methods.aggregate} call asks for.
@@ -18829,10 +18833,12 @@ var TrackSourceSchema = _enum([
18829
18833
  * Terminal for the plain `markForTrain` toggle: returning it to `staging` is
18830
18834
  * a deliberate action of the retrain page, not a side effect of a checkbox.
18831
18835
  *
18832
- * There is no `null`. The state is stored `TEXT NOT NULL DEFAULT 'none'` because
18833
- * the store's filter language has only positive equality and `whereIn` — no
18834
- * negation, no IS NULL — so a NULL would be unselectable by ANY predicate and
18835
- * would make the entire pre-column history immortal in one deploy.
18836
+ * There is no `null`. The state is stored `TEXT NOT NULL DEFAULT 'none'` so that
18837
+ * every row is selectable by a positive predicate. (The filter language has
18838
+ * since grown the NULL-safe `whereNot` / `whereNotIn` and an `IS NULL` reading
18839
+ * of `where: { f: null }`, which is how {@link TrackSourceSchema} can be
18840
+ * filtered on a NULLABLE column — see `excludeSources`. It did not when this
18841
+ * column was designed, and a NOT NULL column is still the better shape.)
18836
18842
  */
18837
18843
  var RetrainStatusSchema = _enum([
18838
18844
  "none",
@@ -19568,7 +19574,9 @@ var RecentTracksQueryInput = object({
19568
19574
  * whose class list is unreadable are kept, and the client's rule stays the
19569
19575
  * exact one.
19570
19576
  */
19571
- classes: array(string()).optional()
19577
+ classes: array(string()).optional(),
19578
+ /** See {@link ExcludeSourcesDoc}. */
19579
+ excludeSources: array(TrackSourceSchema).optional()
19572
19580
  });
19573
19581
  /**
19574
19582
  * A Summary (D359): the per-camera session envelope that references tracks.
@@ -19996,7 +20004,9 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
19996
20004
  * selected is an operator who has not narrowed anything, and an empty
19997
20005
  * timeline would read as a camera that saw nothing.
19998
20006
  */
19999
- classes: array(string()).optional()
20007
+ classes: array(string()).optional(),
20008
+ /** See {@link ExcludeSourcesDoc}. */
20009
+ excludeSources: array(TrackSourceSchema).optional()
20000
20010
  }), array(TrackSchema).readonly()), method(RecentTracksQueryInput, RecentTracksPageSchema), method(SummariesQueryInput, SummariesPageSchema), method(object({ id: string() }), SummaryDetailSchema.nullable()), method(object({ deviceId: number() }), _void(), {
20001
20011
  kind: "mutation",
20002
20012
  auth: "admin"
@@ -20501,8 +20511,25 @@ var occupancyRecheckFramesField = {
20501
20511
  * (analyzer attaches detected `regions[]`; onboard does not — the
20502
20512
  * camera typically only reports a binary signal plus an optional
20503
20513
  * channel/AI class which lives in dedicated event channels).
20504
- */
20505
- var MotionSourceEnum = _enum(["onboard", "analyzer"]);
20514
+ *
20515
+ * - `onboard` — the camera's firmware said something moved.
20516
+ * - `analyzer` — this runner's frame-diff said so, and attaches `regions[]`.
20517
+ * - `device-activity` — the DEVICE said it is doing its job: the
20518
+ * `recording-signal` LEVEL the same device raises for the recorder
20519
+ * ([D380](../../../../docs/decisions/adr-0380-a-device-decided-recording-is-a-mode-with-no-schedule-seeded-once.md)),
20520
+ * republished as a motion source. It attaches **nothing** — no regions, no
20521
+ * class: the only fact it carries is that the device is active, and a robot
20522
+ * vacuum that is itself the moving object has no region worth sending. It is
20523
+ * a LEVEL, so unlike `onboard` it has a real falling edge, and unlike
20524
+ * `analyzer` it must not open the frame-diff side-channel — the runner's
20525
+ * `handleOnboardMotionAnalyzer` gate is `source === 'onboard'` and stays that
20526
+ * way ([D392](../../../../docs/decisions/adr-0392-a-device-that-says-it-is-working-is-a-motion-source-of-its-own.md)).
20527
+ */
20528
+ var MotionSourceEnum = _enum([
20529
+ "onboard",
20530
+ "analyzer",
20531
+ "device-activity"
20532
+ ]);
20506
20533
  /**
20507
20534
  * List of motion sources active on a camera. Empty array is valid:
20508
20535
  * "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-gree",
3
- "version": "0.2.79",
3
+ "version": "0.2.81",
4
4
  "description": "Gree air-conditioner device-provider addon for CamStack — wraps the @apocaliss92/nodegree local-UDP client (LAN discovery + AES control), exposing climate-control and fan-control",
5
5
  "keywords": [
6
6
  "camstack",