@camstack/addon-provider-homeassistant 1.2.108 → 1.2.109

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-DAVF2Q_0.js");
2
+ const require_dist = require("./dist-43pNXXbY.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-CBPvkoKj.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-Z8ugPi01.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
@@ -20303,7 +20303,17 @@ var EventDensityBucketSchema = object({
20303
20303
  bucketStart: number(),
20304
20304
  motion: number().int(),
20305
20305
  object: number().int(),
20306
- audio: number().int()
20306
+ audio: number().int(),
20307
+ /**
20308
+ * Energy-weighted mean dBFS of the audio events in this bucket — the LEVEL,
20309
+ * as opposed to `audio`, which is their COUNT (D431).
20310
+ *
20311
+ * ABSENT when the bucket holds no audio event. Absence means "nothing was
20312
+ * measured", which is not the same claim as silence, and a lane that cannot
20313
+ * tell them apart paints a quiet hour at full scale — which is exactly what
20314
+ * the count-on-a-level-meter did.
20315
+ */
20316
+ audioDbfs: number().optional()
20307
20317
  });
20308
20318
  /**
20309
20319
  * One camera's row in a `getEventDensityBatch` answer.
@@ -30407,7 +30417,23 @@ var RecordingRangeSchema = object({
30407
30417
  });
30408
30418
  var RecordingAvailabilitySchema = object({
30409
30419
  deviceId: number(),
30410
- ranges: array(RecordingRangeSchema)
30420
+ ranges: array(RecordingRangeSchema),
30421
+ /**
30422
+ * Every profile this camera has footage in — not only the one `ranges`
30423
+ * describes (D433).
30424
+ *
30425
+ * `ranges` answers for ONE profile by design: the timeline is a single bar,
30426
+ * and enumerating all of them triples the directory reads for a bar that
30427
+ * would look identical. But the answer used to say nothing about that, so a
30428
+ * caller asking "what can I export?" read the single preferred profile as
30429
+ * the only one that exists — on this deployment every camera records `high`
30430
+ * AND `low`, the low tree holding 14 GB for camera 615 alone, and the export
30431
+ * UI could not see it.
30432
+ *
30433
+ * Cheap: it is the same shallow directory read the profile CHOICE already
30434
+ * makes. Ask for a specific profile's ranges with the `profile` input.
30435
+ */
30436
+ profilesWithFootage: array(string())
30411
30437
  });
30412
30438
  var RecordingDaysSchema = object({
30413
30439
  deviceId: number(),
@@ -30433,7 +30459,11 @@ var RecordingDaysSchema = object({
30433
30459
  var RecordingAvailabilityForDeviceSchema = object({
30434
30460
  deviceId: number(),
30435
30461
  read: _enum(["read", "unreadable"]),
30436
- ranges: array(RecordingRangeSchema).readonly()
30462
+ ranges: array(RecordingRangeSchema).readonly(),
30463
+ /** Same field, same meaning, as the singular answer (D433). A row that
30464
+ * dropped it would tell a grid caller the archive holds one profile.
30465
+ * Empty on an `'unreadable'` row: nobody looked. */
30466
+ profilesWithFootage: array(string()).readonly()
30437
30467
  });
30438
30468
  /**
30439
30469
  * One camera's row in a `getDaysWithRecordingsBatch` answer. Same rule as
@@ -30723,7 +30753,14 @@ var ReadWindowBytesResultSchema = discriminatedUnion("kind", [object({
30723
30753
  method(object({
30724
30754
  deviceId: number(),
30725
30755
  fromMs: number(),
30726
- toMs: number()
30756
+ toMs: number(),
30757
+ /**
30758
+ * Answer for THIS profile instead of the preferred one (D433). Absent
30759
+ * keeps the timeline's behaviour — one bar, one profile, one set of
30760
+ * reads. `profilesWithFootage` on the answer says what may be asked
30761
+ * for.
30762
+ */
30763
+ profile: string().optional()
30727
30764
  }), RecordingAvailabilitySchema, {
30728
30765
  kind: "query",
30729
30766
  auth: "protected"
@@ -20303,7 +20303,17 @@ var EventDensityBucketSchema = object({
20303
20303
  bucketStart: number(),
20304
20304
  motion: number().int(),
20305
20305
  object: number().int(),
20306
- audio: number().int()
20306
+ audio: number().int(),
20307
+ /**
20308
+ * Energy-weighted mean dBFS of the audio events in this bucket — the LEVEL,
20309
+ * as opposed to `audio`, which is their COUNT (D431).
20310
+ *
20311
+ * ABSENT when the bucket holds no audio event. Absence means "nothing was
20312
+ * measured", which is not the same claim as silence, and a lane that cannot
20313
+ * tell them apart paints a quiet hour at full scale — which is exactly what
20314
+ * the count-on-a-level-meter did.
20315
+ */
20316
+ audioDbfs: number().optional()
20307
20317
  });
20308
20318
  /**
20309
20319
  * One camera's row in a `getEventDensityBatch` answer.
@@ -30407,7 +30417,23 @@ var RecordingRangeSchema = object({
30407
30417
  });
30408
30418
  var RecordingAvailabilitySchema = object({
30409
30419
  deviceId: number(),
30410
- ranges: array(RecordingRangeSchema)
30420
+ ranges: array(RecordingRangeSchema),
30421
+ /**
30422
+ * Every profile this camera has footage in — not only the one `ranges`
30423
+ * describes (D433).
30424
+ *
30425
+ * `ranges` answers for ONE profile by design: the timeline is a single bar,
30426
+ * and enumerating all of them triples the directory reads for a bar that
30427
+ * would look identical. But the answer used to say nothing about that, so a
30428
+ * caller asking "what can I export?" read the single preferred profile as
30429
+ * the only one that exists — on this deployment every camera records `high`
30430
+ * AND `low`, the low tree holding 14 GB for camera 615 alone, and the export
30431
+ * UI could not see it.
30432
+ *
30433
+ * Cheap: it is the same shallow directory read the profile CHOICE already
30434
+ * makes. Ask for a specific profile's ranges with the `profile` input.
30435
+ */
30436
+ profilesWithFootage: array(string())
30411
30437
  });
30412
30438
  var RecordingDaysSchema = object({
30413
30439
  deviceId: number(),
@@ -30433,7 +30459,11 @@ var RecordingDaysSchema = object({
30433
30459
  var RecordingAvailabilityForDeviceSchema = object({
30434
30460
  deviceId: number(),
30435
30461
  read: _enum(["read", "unreadable"]),
30436
- ranges: array(RecordingRangeSchema).readonly()
30462
+ ranges: array(RecordingRangeSchema).readonly(),
30463
+ /** Same field, same meaning, as the singular answer (D433). A row that
30464
+ * dropped it would tell a grid caller the archive holds one profile.
30465
+ * Empty on an `'unreadable'` row: nobody looked. */
30466
+ profilesWithFootage: array(string()).readonly()
30437
30467
  });
30438
30468
  /**
30439
30469
  * One camera's row in a `getDaysWithRecordingsBatch` answer. Same rule as
@@ -30723,7 +30753,14 @@ var ReadWindowBytesResultSchema = discriminatedUnion("kind", [object({
30723
30753
  method(object({
30724
30754
  deviceId: number(),
30725
30755
  fromMs: number(),
30726
- toMs: number()
30756
+ toMs: number(),
30757
+ /**
30758
+ * Answer for THIS profile instead of the preferred one (D433). Absent
30759
+ * keeps the timeline's behaviour — one bar, one profile, one set of
30760
+ * reads. `profilesWithFootage` on the answer says what may be asked
30761
+ * for.
30762
+ */
30763
+ profile: string().optional()
30727
30764
  }), RecordingAvailabilitySchema, {
30728
30765
  kind: "query",
30729
30766
  auth: "protected"
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  //#endregion
6
- const require_dist = require("../dist-DAVF2Q_0.js");
6
+ const require_dist = require("../dist-43pNXXbY.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-CBPvkoKj.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-Z8ugPi01.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.108",
3
+ "version": "1.2.109",
4
4
  "description": "Home Assistant device provider addon for CamStack",
5
5
  "keywords": [
6
6
  "camstack",