@camstack/addon-export-google 0.1.32 → 0.1.34
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.
|
@@ -77,7 +77,7 @@ function createApiDeviceGateway(deps) {
|
|
|
77
77
|
};
|
|
78
78
|
}
|
|
79
79
|
//#endregion
|
|
80
|
-
//#region ../types/dist/event-category-
|
|
80
|
+
//#region ../types/dist/event-category-zAv7pMUz.mjs
|
|
81
81
|
var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
82
82
|
EventCategory["SystemBoot"] = "system.boot";
|
|
83
83
|
EventCategory["SystemAddonsReady"] = "system.addons-ready";
|
|
@@ -449,6 +449,13 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
449
449
|
*/
|
|
450
450
|
EventCategory["BatteryOnStatusChanged"] = "battery.onStatusChanged";
|
|
451
451
|
/**
|
|
452
|
+
* Cap event fired by every device that registers the `network-link`
|
|
453
|
+
* capability. Mirrors the cap definition's `onStatusChanged`. Carries
|
|
454
|
+
* `{ deviceId, status: NetworkLinkStatus }` — a link switch or a signal
|
|
455
|
+
* reading that moved.
|
|
456
|
+
*/
|
|
457
|
+
EventCategory["NetworkLinkOnStatusChanged"] = "network-link.onStatusChanged";
|
|
458
|
+
/**
|
|
452
459
|
* Emitted by the battery cap provider WHEN `wakeForStream` enters the
|
|
453
460
|
* "wake in progress" window — between the Baichuan wake-up issue and
|
|
454
461
|
* the camera's first dialed-back RTP packet. The stream-broker
|
|
@@ -19303,6 +19310,33 @@ var RecentTracksQueryInput = object({
|
|
|
19303
19310
|
*/
|
|
19304
19311
|
classes: array(string()).optional()
|
|
19305
19312
|
});
|
|
19313
|
+
/**
|
|
19314
|
+
* A Summary (D359): the per-camera session envelope that references tracks.
|
|
19315
|
+
* `groupShotKey` is the media key of its group shot (`ownerKind: 'summary'`,
|
|
19316
|
+
* served by the event-media plane by key), null until the first frame with a
|
|
19317
|
+
* member visible has been materialised.
|
|
19318
|
+
*/
|
|
19319
|
+
var SummarySchema = object({
|
|
19320
|
+
id: string(),
|
|
19321
|
+
deviceId: number(),
|
|
19322
|
+
openedAt: number(),
|
|
19323
|
+
lastActiveAt: number(),
|
|
19324
|
+
sealedAt: number().nullable(),
|
|
19325
|
+
memberCount: number().int().nonnegative(),
|
|
19326
|
+
groupShotKey: string().nullable()
|
|
19327
|
+
});
|
|
19328
|
+
var SummariesQueryInput = object({
|
|
19329
|
+
deviceIds: array(number()).min(1),
|
|
19330
|
+
since: number().optional(),
|
|
19331
|
+
until: number().optional(),
|
|
19332
|
+
limit: number().int().min(1).max(200).default(50)
|
|
19333
|
+
});
|
|
19334
|
+
var SummariesPageSchema = object({ summaries: array(SummarySchema).readonly() });
|
|
19335
|
+
var SummaryDetailSchema = object({
|
|
19336
|
+
summary: SummarySchema,
|
|
19337
|
+
/** Member track ids, in absorption order. */
|
|
19338
|
+
trackIds: array(string()).readonly()
|
|
19339
|
+
});
|
|
19306
19340
|
var RecentTracksPageSchema = object({
|
|
19307
19341
|
/** Merged page, ordered by (`lastSeen` DESC, `trackId` DESC). */
|
|
19308
19342
|
tracks: array(TrackSchema).readonly(),
|
|
@@ -19703,7 +19737,7 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
19703
19737
|
* timeline would read as a camera that saw nothing.
|
|
19704
19738
|
*/
|
|
19705
19739
|
classes: array(string()).optional()
|
|
19706
|
-
}), array(TrackSchema).readonly()), method(RecentTracksQueryInput, RecentTracksPageSchema), method(object({ deviceId: number() }), _void(), {
|
|
19740
|
+
}), array(TrackSchema).readonly()), method(RecentTracksQueryInput, RecentTracksPageSchema), method(SummariesQueryInput, SummariesPageSchema), method(object({ id: string() }), SummaryDetailSchema.nullable()), method(object({ deviceId: number() }), _void(), {
|
|
19707
19741
|
kind: "mutation",
|
|
19708
19742
|
auth: "admin"
|
|
19709
19743
|
}), 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({
|
|
@@ -23436,6 +23470,39 @@ DeviceType.Camera, DeviceType.Sensor, DeviceType.Button, DeviceType.Switch, meth
|
|
|
23436
23470
|
deviceId: number(),
|
|
23437
23471
|
status: BatteryStatusSchema
|
|
23438
23472
|
});
|
|
23473
|
+
/**
|
|
23474
|
+
* Network-link snapshot. Same shape for every provider (a Reolink wifi
|
|
23475
|
+
* camera, a Home Assistant device with a signal-strength sensor, a Tapo
|
|
23476
|
+
* plug): one slice under `device.runtimeState['network-link']`, one badge,
|
|
23477
|
+
* one Home Assistant projection.
|
|
23478
|
+
*/
|
|
23479
|
+
var NetworkLinkStatusSchema = object({
|
|
23480
|
+
/** The link the device is on. `'unknown'` = not read yet, not "no link". */
|
|
23481
|
+
type: _enum([
|
|
23482
|
+
"wifi",
|
|
23483
|
+
"ethernet",
|
|
23484
|
+
"cellular",
|
|
23485
|
+
"unknown"
|
|
23486
|
+
]),
|
|
23487
|
+
/**
|
|
23488
|
+
* Link quality, 0..100 inclusive, normalised by the provider from whatever
|
|
23489
|
+
* the firmware reports (bars, RSSI, a vendor scale). **`null` means NOT
|
|
23490
|
+
* KNOWN or NOT APPLICABLE** — a wired link has no signal, and a wireless
|
|
23491
|
+
* one whose reading has not landed must not be drawn at 0 %. Consumers
|
|
23492
|
+
* SKIP a null rather than coerce it.
|
|
23493
|
+
*/
|
|
23494
|
+
signalPercent: number().min(0).max(100).nullable(),
|
|
23495
|
+
/** Raw received signal strength in dBm, when the firmware reports one. */
|
|
23496
|
+
rssiDbm: number().optional(),
|
|
23497
|
+
/** Network name of a wireless link, when the firmware reports it. */
|
|
23498
|
+
ssid: string().optional(),
|
|
23499
|
+
/** Ms epoch of the last observation. Lets consumers reason about freshness. */
|
|
23500
|
+
lastUpdated: number()
|
|
23501
|
+
});
|
|
23502
|
+
DeviceType.Camera, DeviceType.Sensor, DeviceType.Button, DeviceType.Switch, DeviceType.Light, DeviceType.Lock, DeviceType.Siren, object({
|
|
23503
|
+
deviceId: number(),
|
|
23504
|
+
status: NetworkLinkStatusSchema
|
|
23505
|
+
});
|
|
23439
23506
|
object({
|
|
23440
23507
|
on: boolean(),
|
|
23441
23508
|
/** Ms epoch of the last transition. 0 if never observed. */
|
|
@@ -32677,6 +32744,12 @@ Object.freeze({
|
|
|
32677
32744
|
addonId: null,
|
|
32678
32745
|
access: "view"
|
|
32679
32746
|
},
|
|
32747
|
+
"pipelineAnalytics.getSummary": {
|
|
32748
|
+
capName: "pipeline-analytics",
|
|
32749
|
+
capScope: "device",
|
|
32750
|
+
addonId: null,
|
|
32751
|
+
access: "view"
|
|
32752
|
+
},
|
|
32680
32753
|
"pipelineAnalytics.getTrack": {
|
|
32681
32754
|
capName: "pipeline-analytics",
|
|
32682
32755
|
capScope: "device",
|
|
@@ -32755,6 +32828,12 @@ Object.freeze({
|
|
|
32755
32828
|
addonId: null,
|
|
32756
32829
|
access: "view"
|
|
32757
32830
|
},
|
|
32831
|
+
"pipelineAnalytics.listSummaries": {
|
|
32832
|
+
capName: "pipeline-analytics",
|
|
32833
|
+
capScope: "device",
|
|
32834
|
+
addonId: null,
|
|
32835
|
+
access: "view"
|
|
32836
|
+
},
|
|
32758
32837
|
"pipelineAnalytics.listTrackMedia": {
|
|
32759
32838
|
capName: "pipeline-analytics",
|
|
32760
32839
|
capScope: "device",
|
|
@@ -36450,6 +36529,11 @@ Object.freeze({
|
|
|
36450
36529
|
form: "array",
|
|
36451
36530
|
optional: true
|
|
36452
36531
|
}],
|
|
36532
|
+
"pipelineAnalytics.listSummaries": [{
|
|
36533
|
+
name: "deviceIds",
|
|
36534
|
+
form: "array",
|
|
36535
|
+
optional: false
|
|
36536
|
+
}],
|
|
36453
36537
|
"pipelineAnalytics.listTrackMedia": [{
|
|
36454
36538
|
name: "deviceId",
|
|
36455
36539
|
form: "single",
|
|
@@ -73,7 +73,7 @@ function createApiDeviceGateway(deps) {
|
|
|
73
73
|
};
|
|
74
74
|
}
|
|
75
75
|
//#endregion
|
|
76
|
-
//#region ../types/dist/event-category-
|
|
76
|
+
//#region ../types/dist/event-category-zAv7pMUz.mjs
|
|
77
77
|
var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
78
78
|
EventCategory["SystemBoot"] = "system.boot";
|
|
79
79
|
EventCategory["SystemAddonsReady"] = "system.addons-ready";
|
|
@@ -445,6 +445,13 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
445
445
|
*/
|
|
446
446
|
EventCategory["BatteryOnStatusChanged"] = "battery.onStatusChanged";
|
|
447
447
|
/**
|
|
448
|
+
* Cap event fired by every device that registers the `network-link`
|
|
449
|
+
* capability. Mirrors the cap definition's `onStatusChanged`. Carries
|
|
450
|
+
* `{ deviceId, status: NetworkLinkStatus }` — a link switch or a signal
|
|
451
|
+
* reading that moved.
|
|
452
|
+
*/
|
|
453
|
+
EventCategory["NetworkLinkOnStatusChanged"] = "network-link.onStatusChanged";
|
|
454
|
+
/**
|
|
448
455
|
* Emitted by the battery cap provider WHEN `wakeForStream` enters the
|
|
449
456
|
* "wake in progress" window — between the Baichuan wake-up issue and
|
|
450
457
|
* the camera's first dialed-back RTP packet. The stream-broker
|
|
@@ -19299,6 +19306,33 @@ var RecentTracksQueryInput = object({
|
|
|
19299
19306
|
*/
|
|
19300
19307
|
classes: array(string()).optional()
|
|
19301
19308
|
});
|
|
19309
|
+
/**
|
|
19310
|
+
* A Summary (D359): the per-camera session envelope that references tracks.
|
|
19311
|
+
* `groupShotKey` is the media key of its group shot (`ownerKind: 'summary'`,
|
|
19312
|
+
* served by the event-media plane by key), null until the first frame with a
|
|
19313
|
+
* member visible has been materialised.
|
|
19314
|
+
*/
|
|
19315
|
+
var SummarySchema = object({
|
|
19316
|
+
id: string(),
|
|
19317
|
+
deviceId: number(),
|
|
19318
|
+
openedAt: number(),
|
|
19319
|
+
lastActiveAt: number(),
|
|
19320
|
+
sealedAt: number().nullable(),
|
|
19321
|
+
memberCount: number().int().nonnegative(),
|
|
19322
|
+
groupShotKey: string().nullable()
|
|
19323
|
+
});
|
|
19324
|
+
var SummariesQueryInput = object({
|
|
19325
|
+
deviceIds: array(number()).min(1),
|
|
19326
|
+
since: number().optional(),
|
|
19327
|
+
until: number().optional(),
|
|
19328
|
+
limit: number().int().min(1).max(200).default(50)
|
|
19329
|
+
});
|
|
19330
|
+
var SummariesPageSchema = object({ summaries: array(SummarySchema).readonly() });
|
|
19331
|
+
var SummaryDetailSchema = object({
|
|
19332
|
+
summary: SummarySchema,
|
|
19333
|
+
/** Member track ids, in absorption order. */
|
|
19334
|
+
trackIds: array(string()).readonly()
|
|
19335
|
+
});
|
|
19302
19336
|
var RecentTracksPageSchema = object({
|
|
19303
19337
|
/** Merged page, ordered by (`lastSeen` DESC, `trackId` DESC). */
|
|
19304
19338
|
tracks: array(TrackSchema).readonly(),
|
|
@@ -19699,7 +19733,7 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
19699
19733
|
* timeline would read as a camera that saw nothing.
|
|
19700
19734
|
*/
|
|
19701
19735
|
classes: array(string()).optional()
|
|
19702
|
-
}), array(TrackSchema).readonly()), method(RecentTracksQueryInput, RecentTracksPageSchema), method(object({ deviceId: number() }), _void(), {
|
|
19736
|
+
}), array(TrackSchema).readonly()), method(RecentTracksQueryInput, RecentTracksPageSchema), method(SummariesQueryInput, SummariesPageSchema), method(object({ id: string() }), SummaryDetailSchema.nullable()), method(object({ deviceId: number() }), _void(), {
|
|
19703
19737
|
kind: "mutation",
|
|
19704
19738
|
auth: "admin"
|
|
19705
19739
|
}), 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({
|
|
@@ -23432,6 +23466,39 @@ DeviceType.Camera, DeviceType.Sensor, DeviceType.Button, DeviceType.Switch, meth
|
|
|
23432
23466
|
deviceId: number(),
|
|
23433
23467
|
status: BatteryStatusSchema
|
|
23434
23468
|
});
|
|
23469
|
+
/**
|
|
23470
|
+
* Network-link snapshot. Same shape for every provider (a Reolink wifi
|
|
23471
|
+
* camera, a Home Assistant device with a signal-strength sensor, a Tapo
|
|
23472
|
+
* plug): one slice under `device.runtimeState['network-link']`, one badge,
|
|
23473
|
+
* one Home Assistant projection.
|
|
23474
|
+
*/
|
|
23475
|
+
var NetworkLinkStatusSchema = object({
|
|
23476
|
+
/** The link the device is on. `'unknown'` = not read yet, not "no link". */
|
|
23477
|
+
type: _enum([
|
|
23478
|
+
"wifi",
|
|
23479
|
+
"ethernet",
|
|
23480
|
+
"cellular",
|
|
23481
|
+
"unknown"
|
|
23482
|
+
]),
|
|
23483
|
+
/**
|
|
23484
|
+
* Link quality, 0..100 inclusive, normalised by the provider from whatever
|
|
23485
|
+
* the firmware reports (bars, RSSI, a vendor scale). **`null` means NOT
|
|
23486
|
+
* KNOWN or NOT APPLICABLE** — a wired link has no signal, and a wireless
|
|
23487
|
+
* one whose reading has not landed must not be drawn at 0 %. Consumers
|
|
23488
|
+
* SKIP a null rather than coerce it.
|
|
23489
|
+
*/
|
|
23490
|
+
signalPercent: number().min(0).max(100).nullable(),
|
|
23491
|
+
/** Raw received signal strength in dBm, when the firmware reports one. */
|
|
23492
|
+
rssiDbm: number().optional(),
|
|
23493
|
+
/** Network name of a wireless link, when the firmware reports it. */
|
|
23494
|
+
ssid: string().optional(),
|
|
23495
|
+
/** Ms epoch of the last observation. Lets consumers reason about freshness. */
|
|
23496
|
+
lastUpdated: number()
|
|
23497
|
+
});
|
|
23498
|
+
DeviceType.Camera, DeviceType.Sensor, DeviceType.Button, DeviceType.Switch, DeviceType.Light, DeviceType.Lock, DeviceType.Siren, object({
|
|
23499
|
+
deviceId: number(),
|
|
23500
|
+
status: NetworkLinkStatusSchema
|
|
23501
|
+
});
|
|
23435
23502
|
object({
|
|
23436
23503
|
on: boolean(),
|
|
23437
23504
|
/** Ms epoch of the last transition. 0 if never observed. */
|
|
@@ -32673,6 +32740,12 @@ Object.freeze({
|
|
|
32673
32740
|
addonId: null,
|
|
32674
32741
|
access: "view"
|
|
32675
32742
|
},
|
|
32743
|
+
"pipelineAnalytics.getSummary": {
|
|
32744
|
+
capName: "pipeline-analytics",
|
|
32745
|
+
capScope: "device",
|
|
32746
|
+
addonId: null,
|
|
32747
|
+
access: "view"
|
|
32748
|
+
},
|
|
32676
32749
|
"pipelineAnalytics.getTrack": {
|
|
32677
32750
|
capName: "pipeline-analytics",
|
|
32678
32751
|
capScope: "device",
|
|
@@ -32751,6 +32824,12 @@ Object.freeze({
|
|
|
32751
32824
|
addonId: null,
|
|
32752
32825
|
access: "view"
|
|
32753
32826
|
},
|
|
32827
|
+
"pipelineAnalytics.listSummaries": {
|
|
32828
|
+
capName: "pipeline-analytics",
|
|
32829
|
+
capScope: "device",
|
|
32830
|
+
addonId: null,
|
|
32831
|
+
access: "view"
|
|
32832
|
+
},
|
|
32754
32833
|
"pipelineAnalytics.listTrackMedia": {
|
|
32755
32834
|
capName: "pipeline-analytics",
|
|
32756
32835
|
capScope: "device",
|
|
@@ -36446,6 +36525,11 @@ Object.freeze({
|
|
|
36446
36525
|
form: "array",
|
|
36447
36526
|
optional: true
|
|
36448
36527
|
}],
|
|
36528
|
+
"pipelineAnalytics.listSummaries": [{
|
|
36529
|
+
name: "deviceIds",
|
|
36530
|
+
form: "array",
|
|
36531
|
+
optional: false
|
|
36532
|
+
}],
|
|
36449
36533
|
"pipelineAnalytics.listTrackMedia": [{
|
|
36450
36534
|
name: "deviceId",
|
|
36451
36535
|
form: "single",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@camstack/addon-export-google",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.34",
|
|
4
4
|
"description": "Google Home export — hub-side smart-home fulfillment (SYNC / QUERY / EXECUTE / DISCONNECT) for the non-camera fleet, served over the hub's own OAuth account link. No Google credential is stored, sent or required.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"camstack",
|