@camstack/addon-provider-homeassistant 1.2.97 → 1.2.99

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
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_dist = require("./dist-yPRKt3ZC.js");
2
+ const require_dist = require("./dist-Ds1Z7VBZ.js");
3
3
  let node_crypto = require("node:crypto");
4
4
  let node_zlib = require("node:zlib");
5
5
  //#region src/ha-device-source.ts
package/dist/addon.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { $ as presenceCapability, A as controlCapability, At as EventCategory, B as humiditySensorCapability, C as buildAddonRouteProvider, Ct as number, D as colorCapability, Dt as union, E as climateControlCapability, Et as string, F as eventEmitterCapability, G as motionCapability, H as lawnMowerControlCapability, I as fanControlCapability, J as notifierCapability, K as normalizeUnit, L as floodCapability, M as deviceAdoptionCapability, O as connectivityCapability, Ot as unknown, P as enumSensorCapability, Q as prepareNotification, R as gasCapability, S as brokerCapability, St as literal, T as carbonMonoxideCapability, Tt as record, U as lockControlCapability, V as imageCapability, W as mediaPlayerCapability, Y as numericSensorCapability, Z as powerMeterCapability, _ as automationControlCapability, _t as createEvent, at as temperatureSensorCapability, b as binaryCapability, bt as array, ct as valveCapability, d as TargetSchema, dt as weatherCapability, et as pressureSensorCapability, f as accessoriesCapability, ft as errMsg, g as ambientLightSensorCapability, gt as DeviceType, h as alarmPanelCapability, ht as DeviceRole, it as tamperCapability, j as coverCapability, k as contactCapability, kt as url, lt as vibrationCapability, m as airQualitySensorCapability, mt as DeviceFeature, n as BaseDevice, nt as smokeCapability, ot as updateCapability, p as addonRoutesCapability, q as notificationOutputCapability, r as BaseDeviceProvider, rt as switchCapability, s as EnumSensorDateTimeFormatSchema, st as vacuumControlCapability, tt as scriptRunnerCapability, ut as waterHeaterCapability, v as batteryCapability, w as buttonCapability, wt as object, x as brightnessCapability, xt as discriminatedUnion, y as bestLocationMatch, yt as _enum, z as humidifierCapability } from "./dist-gBljN9DV.mjs";
1
+ import { $ as presenceCapability, A as controlCapability, At as EventCategory, B as humiditySensorCapability, C as buildAddonRouteProvider, Ct as number, D as colorCapability, Dt as union, E as climateControlCapability, Et as string, F as eventEmitterCapability, G as motionCapability, H as lawnMowerControlCapability, I as fanControlCapability, J as notifierCapability, K as normalizeUnit, L as floodCapability, M as deviceAdoptionCapability, O as connectivityCapability, Ot as unknown, P as enumSensorCapability, Q as prepareNotification, R as gasCapability, S as brokerCapability, St as literal, T as carbonMonoxideCapability, Tt as record, U as lockControlCapability, V as imageCapability, W as mediaPlayerCapability, Y as numericSensorCapability, Z as powerMeterCapability, _ as automationControlCapability, _t as createEvent, at as temperatureSensorCapability, b as binaryCapability, bt as array, ct as valveCapability, d as TargetSchema, dt as weatherCapability, et as pressureSensorCapability, f as accessoriesCapability, ft as errMsg, g as ambientLightSensorCapability, gt as DeviceType, h as alarmPanelCapability, ht as DeviceRole, it as tamperCapability, j as coverCapability, k as contactCapability, kt as url, lt as vibrationCapability, m as airQualitySensorCapability, mt as DeviceFeature, n as BaseDevice, nt as smokeCapability, ot as updateCapability, p as addonRoutesCapability, q as notificationOutputCapability, r as BaseDeviceProvider, rt as switchCapability, s as EnumSensorDateTimeFormatSchema, st as vacuumControlCapability, tt as scriptRunnerCapability, ut as waterHeaterCapability, v as batteryCapability, w as buttonCapability, wt as object, x as brightnessCapability, xt as discriminatedUnion, y as bestLocationMatch, yt as _enum, z as humidifierCapability } from "./dist-B_gh5FO-.mjs";
2
2
  import { randomUUID } from "node:crypto";
3
3
  import { brotliCompressSync, deflateSync, gzipSync } from "node:zlib";
4
4
  //#region src/ha-device-source.ts
@@ -12322,6 +12322,9 @@ var QueryFilterSchema = object({
12322
12322
  whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
12323
12323
  /** NULL-safe exclusion: matches rows whose field is NULL OR != the value. */
12324
12324
  whereNot: record(string(), unknown()).optional(),
12325
+ /** NULL-safe exclusion of a SET — `whereNot` for more than one value. An
12326
+ * empty list excludes nothing. See `QueryFilter.whereNotIn`. */
12327
+ whereNotIn: record(string(), array(unknown())).optional(),
12325
12328
  orderBy: object({
12326
12329
  field: string(),
12327
12330
  direction: _enum(["asc", "desc"])
@@ -12342,7 +12345,8 @@ var MutationFilterSchema = object({
12342
12345
  where: record(string(), unknown()).optional(),
12343
12346
  whereIn: record(string(), array(unknown())).optional(),
12344
12347
  whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
12345
- whereNot: record(string(), unknown()).optional()
12348
+ whereNot: record(string(), unknown()).optional(),
12349
+ whereNotIn: record(string(), array(unknown())).optional()
12346
12350
  });
12347
12351
  /**
12348
12352
  * One scalar an {@link settingsStoreCapability.methods.aggregate} call asks for.
@@ -19215,10 +19219,12 @@ var TrackSourceSchema = _enum([
19215
19219
  * Terminal for the plain `markForTrain` toggle: returning it to `staging` is
19216
19220
  * a deliberate action of the retrain page, not a side effect of a checkbox.
19217
19221
  *
19218
- * There is no `null`. The state is stored `TEXT NOT NULL DEFAULT 'none'` because
19219
- * the store's filter language has only positive equality and `whereIn` — no
19220
- * negation, no IS NULL — so a NULL would be unselectable by ANY predicate and
19221
- * would make the entire pre-column history immortal in one deploy.
19222
+ * There is no `null`. The state is stored `TEXT NOT NULL DEFAULT 'none'` so that
19223
+ * every row is selectable by a positive predicate. (The filter language has
19224
+ * since grown the NULL-safe `whereNot` / `whereNotIn` and an `IS NULL` reading
19225
+ * of `where: { f: null }`, which is how {@link TrackSourceSchema} can be
19226
+ * filtered on a NULLABLE column — see `excludeSources`. It did not when this
19227
+ * column was designed, and a NOT NULL column is still the better shape.)
19222
19228
  */
19223
19229
  var RetrainStatusSchema = _enum([
19224
19230
  "none",
@@ -19954,7 +19960,9 @@ var RecentTracksQueryInput = object({
19954
19960
  * whose class list is unreadable are kept, and the client's rule stays the
19955
19961
  * exact one.
19956
19962
  */
19957
- classes: array(string()).optional()
19963
+ classes: array(string()).optional(),
19964
+ /** See {@link ExcludeSourcesDoc}. */
19965
+ excludeSources: array(TrackSourceSchema).optional()
19958
19966
  });
19959
19967
  /**
19960
19968
  * A Summary (D359): the per-camera session envelope that references tracks.
@@ -20382,7 +20390,9 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
20382
20390
  * selected is an operator who has not narrowed anything, and an empty
20383
20391
  * timeline would read as a camera that saw nothing.
20384
20392
  */
20385
- classes: array(string()).optional()
20393
+ classes: array(string()).optional(),
20394
+ /** See {@link ExcludeSourcesDoc}. */
20395
+ excludeSources: array(TrackSourceSchema).optional()
20386
20396
  }), array(TrackSchema).readonly()), method(RecentTracksQueryInput, RecentTracksPageSchema), method(SummariesQueryInput, SummariesPageSchema), method(object({ id: string() }), SummaryDetailSchema.nullable()), method(object({ deviceId: number() }), _void(), {
20387
20397
  kind: "mutation",
20388
20398
  auth: "admin"
@@ -29661,8 +29671,27 @@ var PrivacyMaskRegionSchema = object({
29661
29671
  /** Current on-camera privacy state — mask master enable + zones + microphone. */
29662
29672
  var PrivacyMaskStatusSchema = object({
29663
29673
  enabled: boolean(),
29664
- /** Active zones (normalized 0..1). Length ≤ maxRegions. */
29665
- regions: array(PrivacyMaskRegionSchema),
29674
+ /**
29675
+ * Active zones (normalized 0..1). Length ≤ maxRegions.
29676
+ *
29677
+ * `null` means "no answer" — the provider has never reached this camera
29678
+ * (a cold `runtimeState` slice, a battery camera asleep) or the read
29679
+ * failed. A consumer must render it as UNKNOWN and never as "this camera
29680
+ * has no zones": those two look identical to an operator right up to the
29681
+ * moment one of them is acted on, and acting on them differs completely.
29682
+ * The switch group turned an unanswered read into *"nothing is set up for
29683
+ * it to act on"* — an instruction to go and draw a zone that already
29684
+ * exists — and this editor seeded an EMPTY canvas from it, one Save away
29685
+ * from deleting the mask it could not read.
29686
+ *
29687
+ * Empty-and-answered is `[]` and stays a real answer: this camera genuinely
29688
+ * has no zones. The distinction is the same one {@link
29689
+ * PrivacyMaskStatusSchema.shape.audioEnabled} already draws for the
29690
+ * microphone, on the very same payload — both planes come from ONE refresh,
29691
+ * so it was never coherent for one of them to be able to say "unknown"
29692
+ * while the other could not.
29693
+ */
29694
+ regions: array(PrivacyMaskRegionSchema).nullable(),
29666
29695
  /**
29667
29696
  * Is the camera capturing sound right now? Read from the camera, never from
29668
29697
  * a server-side mirror.
@@ -12322,6 +12322,9 @@ var QueryFilterSchema = object({
12322
12322
  whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
12323
12323
  /** NULL-safe exclusion: matches rows whose field is NULL OR != the value. */
12324
12324
  whereNot: record(string(), unknown()).optional(),
12325
+ /** NULL-safe exclusion of a SET — `whereNot` for more than one value. An
12326
+ * empty list excludes nothing. See `QueryFilter.whereNotIn`. */
12327
+ whereNotIn: record(string(), array(unknown())).optional(),
12325
12328
  orderBy: object({
12326
12329
  field: string(),
12327
12330
  direction: _enum(["asc", "desc"])
@@ -12342,7 +12345,8 @@ var MutationFilterSchema = object({
12342
12345
  where: record(string(), unknown()).optional(),
12343
12346
  whereIn: record(string(), array(unknown())).optional(),
12344
12347
  whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
12345
- whereNot: record(string(), unknown()).optional()
12348
+ whereNot: record(string(), unknown()).optional(),
12349
+ whereNotIn: record(string(), array(unknown())).optional()
12346
12350
  });
12347
12351
  /**
12348
12352
  * One scalar an {@link settingsStoreCapability.methods.aggregate} call asks for.
@@ -19215,10 +19219,12 @@ var TrackSourceSchema = _enum([
19215
19219
  * Terminal for the plain `markForTrain` toggle: returning it to `staging` is
19216
19220
  * a deliberate action of the retrain page, not a side effect of a checkbox.
19217
19221
  *
19218
- * There is no `null`. The state is stored `TEXT NOT NULL DEFAULT 'none'` because
19219
- * the store's filter language has only positive equality and `whereIn` — no
19220
- * negation, no IS NULL — so a NULL would be unselectable by ANY predicate and
19221
- * would make the entire pre-column history immortal in one deploy.
19222
+ * There is no `null`. The state is stored `TEXT NOT NULL DEFAULT 'none'` so that
19223
+ * every row is selectable by a positive predicate. (The filter language has
19224
+ * since grown the NULL-safe `whereNot` / `whereNotIn` and an `IS NULL` reading
19225
+ * of `where: { f: null }`, which is how {@link TrackSourceSchema} can be
19226
+ * filtered on a NULLABLE column — see `excludeSources`. It did not when this
19227
+ * column was designed, and a NOT NULL column is still the better shape.)
19222
19228
  */
19223
19229
  var RetrainStatusSchema = _enum([
19224
19230
  "none",
@@ -19954,7 +19960,9 @@ var RecentTracksQueryInput = object({
19954
19960
  * whose class list is unreadable are kept, and the client's rule stays the
19955
19961
  * exact one.
19956
19962
  */
19957
- classes: array(string()).optional()
19963
+ classes: array(string()).optional(),
19964
+ /** See {@link ExcludeSourcesDoc}. */
19965
+ excludeSources: array(TrackSourceSchema).optional()
19958
19966
  });
19959
19967
  /**
19960
19968
  * A Summary (D359): the per-camera session envelope that references tracks.
@@ -20382,7 +20390,9 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
20382
20390
  * selected is an operator who has not narrowed anything, and an empty
20383
20391
  * timeline would read as a camera that saw nothing.
20384
20392
  */
20385
- classes: array(string()).optional()
20393
+ classes: array(string()).optional(),
20394
+ /** See {@link ExcludeSourcesDoc}. */
20395
+ excludeSources: array(TrackSourceSchema).optional()
20386
20396
  }), array(TrackSchema).readonly()), method(RecentTracksQueryInput, RecentTracksPageSchema), method(SummariesQueryInput, SummariesPageSchema), method(object({ id: string() }), SummaryDetailSchema.nullable()), method(object({ deviceId: number() }), _void(), {
20387
20397
  kind: "mutation",
20388
20398
  auth: "admin"
@@ -29661,8 +29671,27 @@ var PrivacyMaskRegionSchema = object({
29661
29671
  /** Current on-camera privacy state — mask master enable + zones + microphone. */
29662
29672
  var PrivacyMaskStatusSchema = object({
29663
29673
  enabled: boolean(),
29664
- /** Active zones (normalized 0..1). Length ≤ maxRegions. */
29665
- regions: array(PrivacyMaskRegionSchema),
29674
+ /**
29675
+ * Active zones (normalized 0..1). Length ≤ maxRegions.
29676
+ *
29677
+ * `null` means "no answer" — the provider has never reached this camera
29678
+ * (a cold `runtimeState` slice, a battery camera asleep) or the read
29679
+ * failed. A consumer must render it as UNKNOWN and never as "this camera
29680
+ * has no zones": those two look identical to an operator right up to the
29681
+ * moment one of them is acted on, and acting on them differs completely.
29682
+ * The switch group turned an unanswered read into *"nothing is set up for
29683
+ * it to act on"* — an instruction to go and draw a zone that already
29684
+ * exists — and this editor seeded an EMPTY canvas from it, one Save away
29685
+ * from deleting the mask it could not read.
29686
+ *
29687
+ * Empty-and-answered is `[]` and stays a real answer: this camera genuinely
29688
+ * has no zones. The distinction is the same one {@link
29689
+ * PrivacyMaskStatusSchema.shape.audioEnabled} already draws for the
29690
+ * microphone, on the very same payload — both planes come from ONE refresh,
29691
+ * so it was never coherent for one of them to be able to say "unknown"
29692
+ * while the other could not.
29693
+ */
29694
+ regions: array(PrivacyMaskRegionSchema).nullable(),
29666
29695
  /**
29667
29696
  * Is the camera capturing sound right now? Read from the camera, never from
29668
29697
  * a server-side mirror.
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  //#endregion
6
- const require_dist = require("../dist-yPRKt3ZC.js");
6
+ const require_dist = require("../dist-Ds1Z7VBZ.js");
7
7
  let node_crypto = require("node:crypto");
8
8
  //#region src/ha-export/topics.ts
9
9
  /**
@@ -1,4 +1,4 @@
1
- import { At as EventCategory, C as buildAddonRouteProvider, Et as string, N as deviceExportCapability, X as oauthIntegrationCapability, a as COCO_TO_MACRO, c as FanDirectionSchema, i as CAMERA_SWITCH_ORDER, l as HvacModeSchema, o as CameraSwitchIdSchema, p as addonRoutesCapability, pt as BaseAddon, t as AlarmArmModeSchema, u as MediaPlayerRepeatSchema, vt as nodePin } from "../dist-gBljN9DV.mjs";
1
+ import { At as EventCategory, C as buildAddonRouteProvider, Et as string, N as deviceExportCapability, X as oauthIntegrationCapability, a as COCO_TO_MACRO, c as FanDirectionSchema, i as CAMERA_SWITCH_ORDER, l as HvacModeSchema, o as CameraSwitchIdSchema, p as addonRoutesCapability, pt as BaseAddon, t as AlarmArmModeSchema, u as MediaPlayerRepeatSchema, vt as nodePin } from "../dist-B_gh5FO-.mjs";
2
2
  import { createHmac, timingSafeEqual } from "node:crypto";
3
3
  //#region src/ha-export/topics.ts
4
4
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-provider-homeassistant",
3
- "version": "1.2.97",
3
+ "version": "1.2.99",
4
4
  "description": "Home Assistant device provider addon for CamStack",
5
5
  "keywords": [
6
6
  "camstack",