@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-BZL-fdNj.mjs
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-BZL-fdNj.mjs
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.32",
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",