@camstack/addon-decoder-nodeav 1.2.68 → 1.2.70

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/index.js CHANGED
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  let node_crypto = require("node:crypto");
6
- //#region ../types/dist/event-category-BZL-fdNj.mjs
6
+ //#region ../types/dist/event-category-zAv7pMUz.mjs
7
7
  var EventCategory = /* @__PURE__ */ function(EventCategory) {
8
8
  EventCategory["SystemBoot"] = "system.boot";
9
9
  EventCategory["SystemAddonsReady"] = "system.addons-ready";
@@ -375,6 +375,13 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
375
375
  */
376
376
  EventCategory["BatteryOnStatusChanged"] = "battery.onStatusChanged";
377
377
  /**
378
+ * Cap event fired by every device that registers the `network-link`
379
+ * capability. Mirrors the cap definition's `onStatusChanged`. Carries
380
+ * `{ deviceId, status: NetworkLinkStatus }` — a link switch or a signal
381
+ * reading that moved.
382
+ */
383
+ EventCategory["NetworkLinkOnStatusChanged"] = "network-link.onStatusChanged";
384
+ /**
378
385
  * Emitted by the battery cap provider WHEN `wakeForStream` enters the
379
386
  * "wake in progress" window — between the Baichuan wake-up issue and
380
387
  * the camera's first dialed-back RTP packet. The stream-broker
@@ -19151,6 +19158,33 @@ var RecentTracksQueryInput = object({
19151
19158
  */
19152
19159
  classes: array(string()).optional()
19153
19160
  });
19161
+ /**
19162
+ * A Summary (D359): the per-camera session envelope that references tracks.
19163
+ * `groupShotKey` is the media key of its group shot (`ownerKind: 'summary'`,
19164
+ * served by the event-media plane by key), null until the first frame with a
19165
+ * member visible has been materialised.
19166
+ */
19167
+ var SummarySchema = object({
19168
+ id: string(),
19169
+ deviceId: number(),
19170
+ openedAt: number(),
19171
+ lastActiveAt: number(),
19172
+ sealedAt: number().nullable(),
19173
+ memberCount: number().int().nonnegative(),
19174
+ groupShotKey: string().nullable()
19175
+ });
19176
+ var SummariesQueryInput = object({
19177
+ deviceIds: array(number()).min(1),
19178
+ since: number().optional(),
19179
+ until: number().optional(),
19180
+ limit: number().int().min(1).max(200).default(50)
19181
+ });
19182
+ var SummariesPageSchema = object({ summaries: array(SummarySchema).readonly() });
19183
+ var SummaryDetailSchema = object({
19184
+ summary: SummarySchema,
19185
+ /** Member track ids, in absorption order. */
19186
+ trackIds: array(string()).readonly()
19187
+ });
19154
19188
  var RecentTracksPageSchema = object({
19155
19189
  /** Merged page, ordered by (`lastSeen` DESC, `trackId` DESC). */
19156
19190
  tracks: array(TrackSchema).readonly(),
@@ -19551,7 +19585,7 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
19551
19585
  * timeline would read as a camera that saw nothing.
19552
19586
  */
19553
19587
  classes: array(string()).optional()
19554
- }), array(TrackSchema).readonly()), method(RecentTracksQueryInput, RecentTracksPageSchema), method(object({ deviceId: number() }), _void(), {
19588
+ }), array(TrackSchema).readonly()), method(RecentTracksQueryInput, RecentTracksPageSchema), method(SummariesQueryInput, SummariesPageSchema), method(object({ id: string() }), SummaryDetailSchema.nullable()), method(object({ deviceId: number() }), _void(), {
19555
19589
  kind: "mutation",
19556
19590
  auth: "admin"
19557
19591
  }), method(DeviceEventQueryInput, array(MotionEventSchema).readonly()), method(ObjectEventQueryInput, array(ObjectEventSchema).readonly()), method(DeviceEventQueryInput, array(AudioEventSchema).readonly()), method(object({ deviceId: number() }), array(EventKindDescriptorSchema).readonly()), method(object({ deviceIds: array(number()).min(1).max(200) }), array(EventKindsForDeviceSchema).readonly()), method(object({
@@ -23284,6 +23318,39 @@ DeviceType.Camera, DeviceType.Sensor, DeviceType.Button, DeviceType.Switch, meth
23284
23318
  deviceId: number(),
23285
23319
  status: BatteryStatusSchema
23286
23320
  });
23321
+ /**
23322
+ * Network-link snapshot. Same shape for every provider (a Reolink wifi
23323
+ * camera, a Home Assistant device with a signal-strength sensor, a Tapo
23324
+ * plug): one slice under `device.runtimeState['network-link']`, one badge,
23325
+ * one Home Assistant projection.
23326
+ */
23327
+ var NetworkLinkStatusSchema = object({
23328
+ /** The link the device is on. `'unknown'` = not read yet, not "no link". */
23329
+ type: _enum([
23330
+ "wifi",
23331
+ "ethernet",
23332
+ "cellular",
23333
+ "unknown"
23334
+ ]),
23335
+ /**
23336
+ * Link quality, 0..100 inclusive, normalised by the provider from whatever
23337
+ * the firmware reports (bars, RSSI, a vendor scale). **`null` means NOT
23338
+ * KNOWN or NOT APPLICABLE** — a wired link has no signal, and a wireless
23339
+ * one whose reading has not landed must not be drawn at 0 %. Consumers
23340
+ * SKIP a null rather than coerce it.
23341
+ */
23342
+ signalPercent: number().min(0).max(100).nullable(),
23343
+ /** Raw received signal strength in dBm, when the firmware reports one. */
23344
+ rssiDbm: number().optional(),
23345
+ /** Network name of a wireless link, when the firmware reports it. */
23346
+ ssid: string().optional(),
23347
+ /** Ms epoch of the last observation. Lets consumers reason about freshness. */
23348
+ lastUpdated: number()
23349
+ });
23350
+ DeviceType.Camera, DeviceType.Sensor, DeviceType.Button, DeviceType.Switch, DeviceType.Light, DeviceType.Lock, DeviceType.Siren, object({
23351
+ deviceId: number(),
23352
+ status: NetworkLinkStatusSchema
23353
+ });
23287
23354
  object({
23288
23355
  on: boolean(),
23289
23356
  /** Ms epoch of the last transition. 0 if never observed. */
@@ -32506,6 +32573,12 @@ Object.freeze({
32506
32573
  addonId: null,
32507
32574
  access: "view"
32508
32575
  },
32576
+ "pipelineAnalytics.getSummary": {
32577
+ capName: "pipeline-analytics",
32578
+ capScope: "device",
32579
+ addonId: null,
32580
+ access: "view"
32581
+ },
32509
32582
  "pipelineAnalytics.getTrack": {
32510
32583
  capName: "pipeline-analytics",
32511
32584
  capScope: "device",
@@ -32584,6 +32657,12 @@ Object.freeze({
32584
32657
  addonId: null,
32585
32658
  access: "view"
32586
32659
  },
32660
+ "pipelineAnalytics.listSummaries": {
32661
+ capName: "pipeline-analytics",
32662
+ capScope: "device",
32663
+ addonId: null,
32664
+ access: "view"
32665
+ },
32587
32666
  "pipelineAnalytics.listTrackMedia": {
32588
32667
  capName: "pipeline-analytics",
32589
32668
  capScope: "device",
@@ -36279,6 +36358,11 @@ Object.freeze({
36279
36358
  form: "array",
36280
36359
  optional: true
36281
36360
  }],
36361
+ "pipelineAnalytics.listSummaries": [{
36362
+ name: "deviceIds",
36363
+ form: "array",
36364
+ optional: false
36365
+ }],
36282
36366
  "pipelineAnalytics.listTrackMedia": [{
36283
36367
  name: "deviceId",
36284
36368
  form: "single",
package/dist/index.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  import { randomUUID } from "node:crypto";
2
- //#region ../types/dist/event-category-BZL-fdNj.mjs
2
+ //#region ../types/dist/event-category-zAv7pMUz.mjs
3
3
  var EventCategory = /* @__PURE__ */ function(EventCategory) {
4
4
  EventCategory["SystemBoot"] = "system.boot";
5
5
  EventCategory["SystemAddonsReady"] = "system.addons-ready";
@@ -371,6 +371,13 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
371
371
  */
372
372
  EventCategory["BatteryOnStatusChanged"] = "battery.onStatusChanged";
373
373
  /**
374
+ * Cap event fired by every device that registers the `network-link`
375
+ * capability. Mirrors the cap definition's `onStatusChanged`. Carries
376
+ * `{ deviceId, status: NetworkLinkStatus }` — a link switch or a signal
377
+ * reading that moved.
378
+ */
379
+ EventCategory["NetworkLinkOnStatusChanged"] = "network-link.onStatusChanged";
380
+ /**
374
381
  * Emitted by the battery cap provider WHEN `wakeForStream` enters the
375
382
  * "wake in progress" window — between the Baichuan wake-up issue and
376
383
  * the camera's first dialed-back RTP packet. The stream-broker
@@ -19147,6 +19154,33 @@ var RecentTracksQueryInput = object({
19147
19154
  */
19148
19155
  classes: array(string()).optional()
19149
19156
  });
19157
+ /**
19158
+ * A Summary (D359): the per-camera session envelope that references tracks.
19159
+ * `groupShotKey` is the media key of its group shot (`ownerKind: 'summary'`,
19160
+ * served by the event-media plane by key), null until the first frame with a
19161
+ * member visible has been materialised.
19162
+ */
19163
+ var SummarySchema = object({
19164
+ id: string(),
19165
+ deviceId: number(),
19166
+ openedAt: number(),
19167
+ lastActiveAt: number(),
19168
+ sealedAt: number().nullable(),
19169
+ memberCount: number().int().nonnegative(),
19170
+ groupShotKey: string().nullable()
19171
+ });
19172
+ var SummariesQueryInput = object({
19173
+ deviceIds: array(number()).min(1),
19174
+ since: number().optional(),
19175
+ until: number().optional(),
19176
+ limit: number().int().min(1).max(200).default(50)
19177
+ });
19178
+ var SummariesPageSchema = object({ summaries: array(SummarySchema).readonly() });
19179
+ var SummaryDetailSchema = object({
19180
+ summary: SummarySchema,
19181
+ /** Member track ids, in absorption order. */
19182
+ trackIds: array(string()).readonly()
19183
+ });
19150
19184
  var RecentTracksPageSchema = object({
19151
19185
  /** Merged page, ordered by (`lastSeen` DESC, `trackId` DESC). */
19152
19186
  tracks: array(TrackSchema).readonly(),
@@ -19547,7 +19581,7 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
19547
19581
  * timeline would read as a camera that saw nothing.
19548
19582
  */
19549
19583
  classes: array(string()).optional()
19550
- }), array(TrackSchema).readonly()), method(RecentTracksQueryInput, RecentTracksPageSchema), method(object({ deviceId: number() }), _void(), {
19584
+ }), array(TrackSchema).readonly()), method(RecentTracksQueryInput, RecentTracksPageSchema), method(SummariesQueryInput, SummariesPageSchema), method(object({ id: string() }), SummaryDetailSchema.nullable()), method(object({ deviceId: number() }), _void(), {
19551
19585
  kind: "mutation",
19552
19586
  auth: "admin"
19553
19587
  }), method(DeviceEventQueryInput, array(MotionEventSchema).readonly()), method(ObjectEventQueryInput, array(ObjectEventSchema).readonly()), method(DeviceEventQueryInput, array(AudioEventSchema).readonly()), method(object({ deviceId: number() }), array(EventKindDescriptorSchema).readonly()), method(object({ deviceIds: array(number()).min(1).max(200) }), array(EventKindsForDeviceSchema).readonly()), method(object({
@@ -23280,6 +23314,39 @@ DeviceType.Camera, DeviceType.Sensor, DeviceType.Button, DeviceType.Switch, meth
23280
23314
  deviceId: number(),
23281
23315
  status: BatteryStatusSchema
23282
23316
  });
23317
+ /**
23318
+ * Network-link snapshot. Same shape for every provider (a Reolink wifi
23319
+ * camera, a Home Assistant device with a signal-strength sensor, a Tapo
23320
+ * plug): one slice under `device.runtimeState['network-link']`, one badge,
23321
+ * one Home Assistant projection.
23322
+ */
23323
+ var NetworkLinkStatusSchema = object({
23324
+ /** The link the device is on. `'unknown'` = not read yet, not "no link". */
23325
+ type: _enum([
23326
+ "wifi",
23327
+ "ethernet",
23328
+ "cellular",
23329
+ "unknown"
23330
+ ]),
23331
+ /**
23332
+ * Link quality, 0..100 inclusive, normalised by the provider from whatever
23333
+ * the firmware reports (bars, RSSI, a vendor scale). **`null` means NOT
23334
+ * KNOWN or NOT APPLICABLE** — a wired link has no signal, and a wireless
23335
+ * one whose reading has not landed must not be drawn at 0 %. Consumers
23336
+ * SKIP a null rather than coerce it.
23337
+ */
23338
+ signalPercent: number().min(0).max(100).nullable(),
23339
+ /** Raw received signal strength in dBm, when the firmware reports one. */
23340
+ rssiDbm: number().optional(),
23341
+ /** Network name of a wireless link, when the firmware reports it. */
23342
+ ssid: string().optional(),
23343
+ /** Ms epoch of the last observation. Lets consumers reason about freshness. */
23344
+ lastUpdated: number()
23345
+ });
23346
+ DeviceType.Camera, DeviceType.Sensor, DeviceType.Button, DeviceType.Switch, DeviceType.Light, DeviceType.Lock, DeviceType.Siren, object({
23347
+ deviceId: number(),
23348
+ status: NetworkLinkStatusSchema
23349
+ });
23283
23350
  object({
23284
23351
  on: boolean(),
23285
23352
  /** Ms epoch of the last transition. 0 if never observed. */
@@ -32502,6 +32569,12 @@ Object.freeze({
32502
32569
  addonId: null,
32503
32570
  access: "view"
32504
32571
  },
32572
+ "pipelineAnalytics.getSummary": {
32573
+ capName: "pipeline-analytics",
32574
+ capScope: "device",
32575
+ addonId: null,
32576
+ access: "view"
32577
+ },
32505
32578
  "pipelineAnalytics.getTrack": {
32506
32579
  capName: "pipeline-analytics",
32507
32580
  capScope: "device",
@@ -32580,6 +32653,12 @@ Object.freeze({
32580
32653
  addonId: null,
32581
32654
  access: "view"
32582
32655
  },
32656
+ "pipelineAnalytics.listSummaries": {
32657
+ capName: "pipeline-analytics",
32658
+ capScope: "device",
32659
+ addonId: null,
32660
+ access: "view"
32661
+ },
32583
32662
  "pipelineAnalytics.listTrackMedia": {
32584
32663
  capName: "pipeline-analytics",
32585
32664
  capScope: "device",
@@ -36275,6 +36354,11 @@ Object.freeze({
36275
36354
  form: "array",
36276
36355
  optional: true
36277
36356
  }],
36357
+ "pipelineAnalytics.listSummaries": [{
36358
+ name: "deviceIds",
36359
+ form: "array",
36360
+ optional: false
36361
+ }],
36278
36362
  "pipelineAnalytics.listTrackMedia": [{
36279
36363
  name: "deviceId",
36280
36364
  form: "single",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-decoder-nodeav",
3
- "version": "1.2.68",
3
+ "version": "1.2.70",
4
4
  "description": "Standalone in-process node-av decoder addon for CamStack",
5
5
  "keywords": [
6
6
  "camstack",