@camstack/addon-provider-onvif 1.2.67 → 1.2.69

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
@@ -2,7 +2,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  //#region \0rolldown/runtime.js
3
3
  var __commonJSMin = (cb, mod) => () => (mod || (cb((mod = { exports: {} }).exports, mod), cb = null), mod.exports);
4
4
  //#endregion
5
- //#region ../types/dist/event-category-BZL-fdNj.mjs
5
+ //#region ../types/dist/event-category-zAv7pMUz.mjs
6
6
  var EventCategory = /* @__PURE__ */ function(EventCategory) {
7
7
  EventCategory["SystemBoot"] = "system.boot";
8
8
  EventCategory["SystemAddonsReady"] = "system.addons-ready";
@@ -374,6 +374,13 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
374
374
  */
375
375
  EventCategory["BatteryOnStatusChanged"] = "battery.onStatusChanged";
376
376
  /**
377
+ * Cap event fired by every device that registers the `network-link`
378
+ * capability. Mirrors the cap definition's `onStatusChanged`. Carries
379
+ * `{ deviceId, status: NetworkLinkStatus }` — a link switch or a signal
380
+ * reading that moved.
381
+ */
382
+ EventCategory["NetworkLinkOnStatusChanged"] = "network-link.onStatusChanged";
383
+ /**
377
384
  * Emitted by the battery cap provider WHEN `wakeForStream` enters the
378
385
  * "wake in progress" window — between the Baichuan wake-up issue and
379
386
  * the camera's first dialed-back RTP packet. The stream-broker
@@ -19101,6 +19108,33 @@ var RecentTracksQueryInput = object({
19101
19108
  */
19102
19109
  classes: array(string()).optional()
19103
19110
  });
19111
+ /**
19112
+ * A Summary (D359): the per-camera session envelope that references tracks.
19113
+ * `groupShotKey` is the media key of its group shot (`ownerKind: 'summary'`,
19114
+ * served by the event-media plane by key), null until the first frame with a
19115
+ * member visible has been materialised.
19116
+ */
19117
+ var SummarySchema = object({
19118
+ id: string(),
19119
+ deviceId: number(),
19120
+ openedAt: number(),
19121
+ lastActiveAt: number(),
19122
+ sealedAt: number().nullable(),
19123
+ memberCount: number().int().nonnegative(),
19124
+ groupShotKey: string().nullable()
19125
+ });
19126
+ var SummariesQueryInput = object({
19127
+ deviceIds: array(number()).min(1),
19128
+ since: number().optional(),
19129
+ until: number().optional(),
19130
+ limit: number().int().min(1).max(200).default(50)
19131
+ });
19132
+ var SummariesPageSchema = object({ summaries: array(SummarySchema).readonly() });
19133
+ var SummaryDetailSchema = object({
19134
+ summary: SummarySchema,
19135
+ /** Member track ids, in absorption order. */
19136
+ trackIds: array(string()).readonly()
19137
+ });
19104
19138
  var RecentTracksPageSchema = object({
19105
19139
  /** Merged page, ordered by (`lastSeen` DESC, `trackId` DESC). */
19106
19140
  tracks: array(TrackSchema).readonly(),
@@ -19501,7 +19535,7 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
19501
19535
  * timeline would read as a camera that saw nothing.
19502
19536
  */
19503
19537
  classes: array(string()).optional()
19504
- }), array(TrackSchema).readonly()), method(RecentTracksQueryInput, RecentTracksPageSchema), method(object({ deviceId: number() }), _void(), {
19538
+ }), array(TrackSchema).readonly()), method(RecentTracksQueryInput, RecentTracksPageSchema), method(SummariesQueryInput, SummariesPageSchema), method(object({ id: string() }), SummaryDetailSchema.nullable()), method(object({ deviceId: number() }), _void(), {
19505
19539
  kind: "mutation",
19506
19540
  auth: "admin"
19507
19541
  }), 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({
@@ -23338,6 +23372,39 @@ DeviceType.Camera, DeviceType.Sensor, DeviceType.Button, DeviceType.Switch, meth
23338
23372
  deviceId: number(),
23339
23373
  status: BatteryStatusSchema
23340
23374
  });
23375
+ /**
23376
+ * Network-link snapshot. Same shape for every provider (a Reolink wifi
23377
+ * camera, a Home Assistant device with a signal-strength sensor, a Tapo
23378
+ * plug): one slice under `device.runtimeState['network-link']`, one badge,
23379
+ * one Home Assistant projection.
23380
+ */
23381
+ var NetworkLinkStatusSchema = object({
23382
+ /** The link the device is on. `'unknown'` = not read yet, not "no link". */
23383
+ type: _enum([
23384
+ "wifi",
23385
+ "ethernet",
23386
+ "cellular",
23387
+ "unknown"
23388
+ ]),
23389
+ /**
23390
+ * Link quality, 0..100 inclusive, normalised by the provider from whatever
23391
+ * the firmware reports (bars, RSSI, a vendor scale). **`null` means NOT
23392
+ * KNOWN or NOT APPLICABLE** — a wired link has no signal, and a wireless
23393
+ * one whose reading has not landed must not be drawn at 0 %. Consumers
23394
+ * SKIP a null rather than coerce it.
23395
+ */
23396
+ signalPercent: number().min(0).max(100).nullable(),
23397
+ /** Raw received signal strength in dBm, when the firmware reports one. */
23398
+ rssiDbm: number().optional(),
23399
+ /** Network name of a wireless link, when the firmware reports it. */
23400
+ ssid: string().optional(),
23401
+ /** Ms epoch of the last observation. Lets consumers reason about freshness. */
23402
+ lastUpdated: number()
23403
+ });
23404
+ DeviceType.Camera, DeviceType.Sensor, DeviceType.Button, DeviceType.Switch, DeviceType.Light, DeviceType.Lock, DeviceType.Siren, object({
23405
+ deviceId: number(),
23406
+ status: NetworkLinkStatusSchema
23407
+ });
23341
23408
  object({
23342
23409
  on: boolean(),
23343
23410
  /** Ms epoch of the last transition. 0 if never observed. */
@@ -33377,6 +33444,12 @@ Object.freeze({
33377
33444
  addonId: null,
33378
33445
  access: "view"
33379
33446
  },
33447
+ "pipelineAnalytics.getSummary": {
33448
+ capName: "pipeline-analytics",
33449
+ capScope: "device",
33450
+ addonId: null,
33451
+ access: "view"
33452
+ },
33380
33453
  "pipelineAnalytics.getTrack": {
33381
33454
  capName: "pipeline-analytics",
33382
33455
  capScope: "device",
@@ -33455,6 +33528,12 @@ Object.freeze({
33455
33528
  addonId: null,
33456
33529
  access: "view"
33457
33530
  },
33531
+ "pipelineAnalytics.listSummaries": {
33532
+ capName: "pipeline-analytics",
33533
+ capScope: "device",
33534
+ addonId: null,
33535
+ access: "view"
33536
+ },
33458
33537
  "pipelineAnalytics.listTrackMedia": {
33459
33538
  capName: "pipeline-analytics",
33460
33539
  capScope: "device",
@@ -37150,6 +37229,11 @@ Object.freeze({
37150
37229
  form: "array",
37151
37230
  optional: true
37152
37231
  }],
37232
+ "pipelineAnalytics.listSummaries": [{
37233
+ name: "deviceIds",
37234
+ form: "array",
37235
+ optional: false
37236
+ }],
37153
37237
  "pipelineAnalytics.listTrackMedia": [{
37154
37238
  name: "deviceId",
37155
37239
  form: "single",
package/dist/addon.mjs CHANGED
@@ -3,7 +3,7 @@ import { createRequire } from "node:module";
3
3
  var __commonJSMin = (cb, mod) => () => (mod || (cb((mod = { exports: {} }).exports, mod), cb = null), mod.exports);
4
4
  var __require = /* @__PURE__ */ createRequire(import.meta.url);
5
5
  //#endregion
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
@@ -19102,6 +19109,33 @@ var RecentTracksQueryInput = object({
19102
19109
  */
19103
19110
  classes: array(string()).optional()
19104
19111
  });
19112
+ /**
19113
+ * A Summary (D359): the per-camera session envelope that references tracks.
19114
+ * `groupShotKey` is the media key of its group shot (`ownerKind: 'summary'`,
19115
+ * served by the event-media plane by key), null until the first frame with a
19116
+ * member visible has been materialised.
19117
+ */
19118
+ var SummarySchema = object({
19119
+ id: string(),
19120
+ deviceId: number(),
19121
+ openedAt: number(),
19122
+ lastActiveAt: number(),
19123
+ sealedAt: number().nullable(),
19124
+ memberCount: number().int().nonnegative(),
19125
+ groupShotKey: string().nullable()
19126
+ });
19127
+ var SummariesQueryInput = object({
19128
+ deviceIds: array(number()).min(1),
19129
+ since: number().optional(),
19130
+ until: number().optional(),
19131
+ limit: number().int().min(1).max(200).default(50)
19132
+ });
19133
+ var SummariesPageSchema = object({ summaries: array(SummarySchema).readonly() });
19134
+ var SummaryDetailSchema = object({
19135
+ summary: SummarySchema,
19136
+ /** Member track ids, in absorption order. */
19137
+ trackIds: array(string()).readonly()
19138
+ });
19105
19139
  var RecentTracksPageSchema = object({
19106
19140
  /** Merged page, ordered by (`lastSeen` DESC, `trackId` DESC). */
19107
19141
  tracks: array(TrackSchema).readonly(),
@@ -19502,7 +19536,7 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
19502
19536
  * timeline would read as a camera that saw nothing.
19503
19537
  */
19504
19538
  classes: array(string()).optional()
19505
- }), array(TrackSchema).readonly()), method(RecentTracksQueryInput, RecentTracksPageSchema), method(object({ deviceId: number() }), _void(), {
19539
+ }), array(TrackSchema).readonly()), method(RecentTracksQueryInput, RecentTracksPageSchema), method(SummariesQueryInput, SummariesPageSchema), method(object({ id: string() }), SummaryDetailSchema.nullable()), method(object({ deviceId: number() }), _void(), {
19506
19540
  kind: "mutation",
19507
19541
  auth: "admin"
19508
19542
  }), 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({
@@ -23339,6 +23373,39 @@ DeviceType.Camera, DeviceType.Sensor, DeviceType.Button, DeviceType.Switch, meth
23339
23373
  deviceId: number(),
23340
23374
  status: BatteryStatusSchema
23341
23375
  });
23376
+ /**
23377
+ * Network-link snapshot. Same shape for every provider (a Reolink wifi
23378
+ * camera, a Home Assistant device with a signal-strength sensor, a Tapo
23379
+ * plug): one slice under `device.runtimeState['network-link']`, one badge,
23380
+ * one Home Assistant projection.
23381
+ */
23382
+ var NetworkLinkStatusSchema = object({
23383
+ /** The link the device is on. `'unknown'` = not read yet, not "no link". */
23384
+ type: _enum([
23385
+ "wifi",
23386
+ "ethernet",
23387
+ "cellular",
23388
+ "unknown"
23389
+ ]),
23390
+ /**
23391
+ * Link quality, 0..100 inclusive, normalised by the provider from whatever
23392
+ * the firmware reports (bars, RSSI, a vendor scale). **`null` means NOT
23393
+ * KNOWN or NOT APPLICABLE** — a wired link has no signal, and a wireless
23394
+ * one whose reading has not landed must not be drawn at 0 %. Consumers
23395
+ * SKIP a null rather than coerce it.
23396
+ */
23397
+ signalPercent: number().min(0).max(100).nullable(),
23398
+ /** Raw received signal strength in dBm, when the firmware reports one. */
23399
+ rssiDbm: number().optional(),
23400
+ /** Network name of a wireless link, when the firmware reports it. */
23401
+ ssid: string().optional(),
23402
+ /** Ms epoch of the last observation. Lets consumers reason about freshness. */
23403
+ lastUpdated: number()
23404
+ });
23405
+ DeviceType.Camera, DeviceType.Sensor, DeviceType.Button, DeviceType.Switch, DeviceType.Light, DeviceType.Lock, DeviceType.Siren, object({
23406
+ deviceId: number(),
23407
+ status: NetworkLinkStatusSchema
23408
+ });
23342
23409
  object({
23343
23410
  on: boolean(),
23344
23411
  /** Ms epoch of the last transition. 0 if never observed. */
@@ -33378,6 +33445,12 @@ Object.freeze({
33378
33445
  addonId: null,
33379
33446
  access: "view"
33380
33447
  },
33448
+ "pipelineAnalytics.getSummary": {
33449
+ capName: "pipeline-analytics",
33450
+ capScope: "device",
33451
+ addonId: null,
33452
+ access: "view"
33453
+ },
33381
33454
  "pipelineAnalytics.getTrack": {
33382
33455
  capName: "pipeline-analytics",
33383
33456
  capScope: "device",
@@ -33456,6 +33529,12 @@ Object.freeze({
33456
33529
  addonId: null,
33457
33530
  access: "view"
33458
33531
  },
33532
+ "pipelineAnalytics.listSummaries": {
33533
+ capName: "pipeline-analytics",
33534
+ capScope: "device",
33535
+ addonId: null,
33536
+ access: "view"
33537
+ },
33459
33538
  "pipelineAnalytics.listTrackMedia": {
33460
33539
  capName: "pipeline-analytics",
33461
33540
  capScope: "device",
@@ -37151,6 +37230,11 @@ Object.freeze({
37151
37230
  form: "array",
37152
37231
  optional: true
37153
37232
  }],
37233
+ "pipelineAnalytics.listSummaries": [{
37234
+ name: "deviceIds",
37235
+ form: "array",
37236
+ optional: false
37237
+ }],
37154
37238
  "pipelineAnalytics.listTrackMedia": [{
37155
37239
  name: "deviceId",
37156
37240
  form: "single",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-provider-onvif",
3
- "version": "1.2.67",
3
+ "version": "1.2.69",
4
4
  "description": "ONVIF camera device provider addon for CamStack",
5
5
  "keywords": [
6
6
  "camstack",