@camstack/addon-export-alexa 1.2.74 → 1.2.76

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.
@@ -26,7 +26,7 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
26
26
  //#endregion
27
27
  let node_crypto = require("node:crypto");
28
28
  node_crypto = __toESM(node_crypto);
29
- //#region ../types/dist/event-category-BZL-fdNj.mjs
29
+ //#region ../types/dist/event-category-zAv7pMUz.mjs
30
30
  var EventCategory = /* @__PURE__ */ function(EventCategory) {
31
31
  EventCategory["SystemBoot"] = "system.boot";
32
32
  EventCategory["SystemAddonsReady"] = "system.addons-ready";
@@ -398,6 +398,13 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
398
398
  */
399
399
  EventCategory["BatteryOnStatusChanged"] = "battery.onStatusChanged";
400
400
  /**
401
+ * Cap event fired by every device that registers the `network-link`
402
+ * capability. Mirrors the cap definition's `onStatusChanged`. Carries
403
+ * `{ deviceId, status: NetworkLinkStatus }` — a link switch or a signal
404
+ * reading that moved.
405
+ */
406
+ EventCategory["NetworkLinkOnStatusChanged"] = "network-link.onStatusChanged";
407
+ /**
401
408
  * Emitted by the battery cap provider WHEN `wakeForStream` enters the
402
409
  * "wake in progress" window — between the Baichuan wake-up issue and
403
410
  * the camera's first dialed-back RTP packet. The stream-broker
@@ -19332,6 +19339,33 @@ var RecentTracksQueryInput = object({
19332
19339
  */
19333
19340
  classes: array(string()).optional()
19334
19341
  });
19342
+ /**
19343
+ * A Summary (D359): the per-camera session envelope that references tracks.
19344
+ * `groupShotKey` is the media key of its group shot (`ownerKind: 'summary'`,
19345
+ * served by the event-media plane by key), null until the first frame with a
19346
+ * member visible has been materialised.
19347
+ */
19348
+ var SummarySchema = object({
19349
+ id: string(),
19350
+ deviceId: number(),
19351
+ openedAt: number(),
19352
+ lastActiveAt: number(),
19353
+ sealedAt: number().nullable(),
19354
+ memberCount: number().int().nonnegative(),
19355
+ groupShotKey: string().nullable()
19356
+ });
19357
+ var SummariesQueryInput = object({
19358
+ deviceIds: array(number()).min(1),
19359
+ since: number().optional(),
19360
+ until: number().optional(),
19361
+ limit: number().int().min(1).max(200).default(50)
19362
+ });
19363
+ var SummariesPageSchema = object({ summaries: array(SummarySchema).readonly() });
19364
+ var SummaryDetailSchema = object({
19365
+ summary: SummarySchema,
19366
+ /** Member track ids, in absorption order. */
19367
+ trackIds: array(string()).readonly()
19368
+ });
19335
19369
  var RecentTracksPageSchema = object({
19336
19370
  /** Merged page, ordered by (`lastSeen` DESC, `trackId` DESC). */
19337
19371
  tracks: array(TrackSchema).readonly(),
@@ -19732,7 +19766,7 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
19732
19766
  * timeline would read as a camera that saw nothing.
19733
19767
  */
19734
19768
  classes: array(string()).optional()
19735
- }), array(TrackSchema).readonly()), method(RecentTracksQueryInput, RecentTracksPageSchema), method(object({ deviceId: number() }), _void(), {
19769
+ }), array(TrackSchema).readonly()), method(RecentTracksQueryInput, RecentTracksPageSchema), method(SummariesQueryInput, SummariesPageSchema), method(object({ id: string() }), SummaryDetailSchema.nullable()), method(object({ deviceId: number() }), _void(), {
19736
19770
  kind: "mutation",
19737
19771
  auth: "admin"
19738
19772
  }), 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({
@@ -23465,6 +23499,39 @@ DeviceType.Camera, DeviceType.Sensor, DeviceType.Button, DeviceType.Switch, meth
23465
23499
  deviceId: number(),
23466
23500
  status: BatteryStatusSchema
23467
23501
  });
23502
+ /**
23503
+ * Network-link snapshot. Same shape for every provider (a Reolink wifi
23504
+ * camera, a Home Assistant device with a signal-strength sensor, a Tapo
23505
+ * plug): one slice under `device.runtimeState['network-link']`, one badge,
23506
+ * one Home Assistant projection.
23507
+ */
23508
+ var NetworkLinkStatusSchema = object({
23509
+ /** The link the device is on. `'unknown'` = not read yet, not "no link". */
23510
+ type: _enum([
23511
+ "wifi",
23512
+ "ethernet",
23513
+ "cellular",
23514
+ "unknown"
23515
+ ]),
23516
+ /**
23517
+ * Link quality, 0..100 inclusive, normalised by the provider from whatever
23518
+ * the firmware reports (bars, RSSI, a vendor scale). **`null` means NOT
23519
+ * KNOWN or NOT APPLICABLE** — a wired link has no signal, and a wireless
23520
+ * one whose reading has not landed must not be drawn at 0 %. Consumers
23521
+ * SKIP a null rather than coerce it.
23522
+ */
23523
+ signalPercent: number().min(0).max(100).nullable(),
23524
+ /** Raw received signal strength in dBm, when the firmware reports one. */
23525
+ rssiDbm: number().optional(),
23526
+ /** Network name of a wireless link, when the firmware reports it. */
23527
+ ssid: string().optional(),
23528
+ /** Ms epoch of the last observation. Lets consumers reason about freshness. */
23529
+ lastUpdated: number()
23530
+ });
23531
+ DeviceType.Camera, DeviceType.Sensor, DeviceType.Button, DeviceType.Switch, DeviceType.Light, DeviceType.Lock, DeviceType.Siren, object({
23532
+ deviceId: number(),
23533
+ status: NetworkLinkStatusSchema
23534
+ });
23468
23535
  object({
23469
23536
  on: boolean(),
23470
23537
  /** Ms epoch of the last transition. 0 if never observed. */
@@ -32687,6 +32754,12 @@ Object.freeze({
32687
32754
  addonId: null,
32688
32755
  access: "view"
32689
32756
  },
32757
+ "pipelineAnalytics.getSummary": {
32758
+ capName: "pipeline-analytics",
32759
+ capScope: "device",
32760
+ addonId: null,
32761
+ access: "view"
32762
+ },
32690
32763
  "pipelineAnalytics.getTrack": {
32691
32764
  capName: "pipeline-analytics",
32692
32765
  capScope: "device",
@@ -32765,6 +32838,12 @@ Object.freeze({
32765
32838
  addonId: null,
32766
32839
  access: "view"
32767
32840
  },
32841
+ "pipelineAnalytics.listSummaries": {
32842
+ capName: "pipeline-analytics",
32843
+ capScope: "device",
32844
+ addonId: null,
32845
+ access: "view"
32846
+ },
32768
32847
  "pipelineAnalytics.listTrackMedia": {
32769
32848
  capName: "pipeline-analytics",
32770
32849
  capScope: "device",
@@ -36460,6 +36539,11 @@ Object.freeze({
36460
36539
  form: "array",
36461
36540
  optional: true
36462
36541
  }],
36542
+ "pipelineAnalytics.listSummaries": [{
36543
+ name: "deviceIds",
36544
+ form: "array",
36545
+ optional: false
36546
+ }],
36463
36547
  "pipelineAnalytics.listTrackMedia": [{
36464
36548
  name: "deviceId",
36465
36549
  form: "single",
@@ -1,5 +1,5 @@
1
1
  import * as crypto$1 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
@@ -19305,6 +19312,33 @@ var RecentTracksQueryInput = object({
19305
19312
  */
19306
19313
  classes: array(string()).optional()
19307
19314
  });
19315
+ /**
19316
+ * A Summary (D359): the per-camera session envelope that references tracks.
19317
+ * `groupShotKey` is the media key of its group shot (`ownerKind: 'summary'`,
19318
+ * served by the event-media plane by key), null until the first frame with a
19319
+ * member visible has been materialised.
19320
+ */
19321
+ var SummarySchema = object({
19322
+ id: string(),
19323
+ deviceId: number(),
19324
+ openedAt: number(),
19325
+ lastActiveAt: number(),
19326
+ sealedAt: number().nullable(),
19327
+ memberCount: number().int().nonnegative(),
19328
+ groupShotKey: string().nullable()
19329
+ });
19330
+ var SummariesQueryInput = object({
19331
+ deviceIds: array(number()).min(1),
19332
+ since: number().optional(),
19333
+ until: number().optional(),
19334
+ limit: number().int().min(1).max(200).default(50)
19335
+ });
19336
+ var SummariesPageSchema = object({ summaries: array(SummarySchema).readonly() });
19337
+ var SummaryDetailSchema = object({
19338
+ summary: SummarySchema,
19339
+ /** Member track ids, in absorption order. */
19340
+ trackIds: array(string()).readonly()
19341
+ });
19308
19342
  var RecentTracksPageSchema = object({
19309
19343
  /** Merged page, ordered by (`lastSeen` DESC, `trackId` DESC). */
19310
19344
  tracks: array(TrackSchema).readonly(),
@@ -19705,7 +19739,7 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
19705
19739
  * timeline would read as a camera that saw nothing.
19706
19740
  */
19707
19741
  classes: array(string()).optional()
19708
- }), array(TrackSchema).readonly()), method(RecentTracksQueryInput, RecentTracksPageSchema), method(object({ deviceId: number() }), _void(), {
19742
+ }), array(TrackSchema).readonly()), method(RecentTracksQueryInput, RecentTracksPageSchema), method(SummariesQueryInput, SummariesPageSchema), method(object({ id: string() }), SummaryDetailSchema.nullable()), method(object({ deviceId: number() }), _void(), {
19709
19743
  kind: "mutation",
19710
19744
  auth: "admin"
19711
19745
  }), 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({
@@ -23438,6 +23472,39 @@ DeviceType.Camera, DeviceType.Sensor, DeviceType.Button, DeviceType.Switch, meth
23438
23472
  deviceId: number(),
23439
23473
  status: BatteryStatusSchema
23440
23474
  });
23475
+ /**
23476
+ * Network-link snapshot. Same shape for every provider (a Reolink wifi
23477
+ * camera, a Home Assistant device with a signal-strength sensor, a Tapo
23478
+ * plug): one slice under `device.runtimeState['network-link']`, one badge,
23479
+ * one Home Assistant projection.
23480
+ */
23481
+ var NetworkLinkStatusSchema = object({
23482
+ /** The link the device is on. `'unknown'` = not read yet, not "no link". */
23483
+ type: _enum([
23484
+ "wifi",
23485
+ "ethernet",
23486
+ "cellular",
23487
+ "unknown"
23488
+ ]),
23489
+ /**
23490
+ * Link quality, 0..100 inclusive, normalised by the provider from whatever
23491
+ * the firmware reports (bars, RSSI, a vendor scale). **`null` means NOT
23492
+ * KNOWN or NOT APPLICABLE** — a wired link has no signal, and a wireless
23493
+ * one whose reading has not landed must not be drawn at 0 %. Consumers
23494
+ * SKIP a null rather than coerce it.
23495
+ */
23496
+ signalPercent: number().min(0).max(100).nullable(),
23497
+ /** Raw received signal strength in dBm, when the firmware reports one. */
23498
+ rssiDbm: number().optional(),
23499
+ /** Network name of a wireless link, when the firmware reports it. */
23500
+ ssid: string().optional(),
23501
+ /** Ms epoch of the last observation. Lets consumers reason about freshness. */
23502
+ lastUpdated: number()
23503
+ });
23504
+ DeviceType.Camera, DeviceType.Sensor, DeviceType.Button, DeviceType.Switch, DeviceType.Light, DeviceType.Lock, DeviceType.Siren, object({
23505
+ deviceId: number(),
23506
+ status: NetworkLinkStatusSchema
23507
+ });
23441
23508
  object({
23442
23509
  on: boolean(),
23443
23510
  /** Ms epoch of the last transition. 0 if never observed. */
@@ -32660,6 +32727,12 @@ Object.freeze({
32660
32727
  addonId: null,
32661
32728
  access: "view"
32662
32729
  },
32730
+ "pipelineAnalytics.getSummary": {
32731
+ capName: "pipeline-analytics",
32732
+ capScope: "device",
32733
+ addonId: null,
32734
+ access: "view"
32735
+ },
32663
32736
  "pipelineAnalytics.getTrack": {
32664
32737
  capName: "pipeline-analytics",
32665
32738
  capScope: "device",
@@ -32738,6 +32811,12 @@ Object.freeze({
32738
32811
  addonId: null,
32739
32812
  access: "view"
32740
32813
  },
32814
+ "pipelineAnalytics.listSummaries": {
32815
+ capName: "pipeline-analytics",
32816
+ capScope: "device",
32817
+ addonId: null,
32818
+ access: "view"
32819
+ },
32741
32820
  "pipelineAnalytics.listTrackMedia": {
32742
32821
  capName: "pipeline-analytics",
32743
32822
  capScope: "device",
@@ -36433,6 +36512,11 @@ Object.freeze({
36433
36512
  form: "array",
36434
36513
  optional: true
36435
36514
  }],
36515
+ "pipelineAnalytics.listSummaries": [{
36516
+ name: "deviceIds",
36517
+ form: "array",
36518
+ optional: false
36519
+ }],
36436
36520
  "pipelineAnalytics.listTrackMedia": [{
36437
36521
  name: "deviceId",
36438
36522
  form: "single",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-export-alexa",
3
- "version": "1.2.74",
3
+ "version": "1.2.76",
4
4
  "description": "Alexa Smart Home Skill export — hub-side OAuth provider + directive handler. The companion AWS Lambda forwards Alexa directives to this addon's /addon/export-alexa/directive endpoint.",
5
5
  "keywords": [
6
6
  "camstack",