@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-
|
|
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-
|
|
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.
|
|
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",
|