@camstack/addon-provider-wyze 0.2.17 → 0.2.19

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
@@ -19497,6 +19497,39 @@ var snapshotCapability = {
19497
19497
  etag: string().nullable()
19498
19498
  }))),
19499
19499
  /**
19500
+ * The full decision chain for ONE device, for the viewer's debug readout —
19501
+ * the answer to "why does this tile show what it shows" in a single poll:
19502
+ * the battery slice the state was derived from, the resolved state + its
19503
+ * reason, the cached frame's identity/age, whether a wake window is open,
19504
+ * and whether a fresh capture is in flight. Cache-only and capture-free:
19505
+ * a debug read must never wake a battery camera.
19506
+ */
19507
+ getDebugState: systemMethod(object({ deviceId: number() }), object({
19508
+ /** The battery slice as read, or null when the device has none. */
19509
+ battery: object({
19510
+ sleeping: boolean(),
19511
+ lastUpdated: number(),
19512
+ lastContactAt: number().optional()
19513
+ }).nullable(),
19514
+ /** The resolved snapshot state (what the overlay decision used). */
19515
+ state: object({
19516
+ isBattery: boolean(),
19517
+ reason: _enum([
19518
+ "disabled",
19519
+ "sleeping",
19520
+ "unreachable",
19521
+ "waking"
19522
+ ]).nullable()
19523
+ }),
19524
+ /** The cached frame behind the next paint. */
19525
+ frame: object({
19526
+ capturedAt: number().nullable(),
19527
+ ageMs: number().nullable()
19528
+ }),
19529
+ /** A wake window is currently open (the Waking overlay's source). */
19530
+ waking: boolean()
19531
+ })),
19532
+ /**
19500
19533
  * Signed, expiring links to a CLIENT-SIZED frame — and the demand signal
19501
19534
  * that makes those frames current.
19502
19535
  *
@@ -19578,7 +19611,14 @@ targets: array(object({
19578
19611
  "sleeping",
19579
19612
  "unreachable",
19580
19613
  "waking"
19581
- ]).nullable()
19614
+ ]).nullable(),
19615
+ /** A battery camera (whatever its current state). An AWAKE battery
19616
+ * camera is deliberately NOT recaptured on the poll cadence — every
19617
+ * capture is a camera hit that would keep it out of sleep — so its
19618
+ * cached frame legitimately ages past the currency ceiling while
19619
+ * nothing is streaming. A surface must keep painting it (a fresh
19620
+ * frame is captured at each wake), not blank to "unavailable". */
19621
+ battery: boolean()
19582
19622
  })))
19583
19623
  },
19584
19624
  status: {
@@ -34133,6 +34173,12 @@ Object.freeze({
34133
34173
  addonId: null,
34134
34174
  access: "view"
34135
34175
  },
34176
+ "snapshot.getDebugState": {
34177
+ capName: "snapshot",
34178
+ capScope: "device",
34179
+ addonId: null,
34180
+ access: "view"
34181
+ },
34136
34182
  "snapshot.getSnapshot": {
34137
34183
  capName: "snapshot",
34138
34184
  capScope: "device",
@@ -36730,6 +36776,11 @@ Object.freeze({
36730
36776
  form: "single",
36731
36777
  optional: false
36732
36778
  }],
36779
+ "snapshot.getDebugState": [{
36780
+ name: "deviceId",
36781
+ form: "single",
36782
+ optional: false
36783
+ }],
36733
36784
  "snapshot.getSnapshot": [{
36734
36785
  name: "deviceId",
36735
36786
  form: "single",
package/dist/addon.mjs CHANGED
@@ -19476,6 +19476,39 @@ var snapshotCapability = {
19476
19476
  etag: string().nullable()
19477
19477
  }))),
19478
19478
  /**
19479
+ * The full decision chain for ONE device, for the viewer's debug readout —
19480
+ * the answer to "why does this tile show what it shows" in a single poll:
19481
+ * the battery slice the state was derived from, the resolved state + its
19482
+ * reason, the cached frame's identity/age, whether a wake window is open,
19483
+ * and whether a fresh capture is in flight. Cache-only and capture-free:
19484
+ * a debug read must never wake a battery camera.
19485
+ */
19486
+ getDebugState: systemMethod(object({ deviceId: number() }), object({
19487
+ /** The battery slice as read, or null when the device has none. */
19488
+ battery: object({
19489
+ sleeping: boolean(),
19490
+ lastUpdated: number(),
19491
+ lastContactAt: number().optional()
19492
+ }).nullable(),
19493
+ /** The resolved snapshot state (what the overlay decision used). */
19494
+ state: object({
19495
+ isBattery: boolean(),
19496
+ reason: _enum([
19497
+ "disabled",
19498
+ "sleeping",
19499
+ "unreachable",
19500
+ "waking"
19501
+ ]).nullable()
19502
+ }),
19503
+ /** The cached frame behind the next paint. */
19504
+ frame: object({
19505
+ capturedAt: number().nullable(),
19506
+ ageMs: number().nullable()
19507
+ }),
19508
+ /** A wake window is currently open (the Waking overlay's source). */
19509
+ waking: boolean()
19510
+ })),
19511
+ /**
19479
19512
  * Signed, expiring links to a CLIENT-SIZED frame — and the demand signal
19480
19513
  * that makes those frames current.
19481
19514
  *
@@ -19557,7 +19590,14 @@ targets: array(object({
19557
19590
  "sleeping",
19558
19591
  "unreachable",
19559
19592
  "waking"
19560
- ]).nullable()
19593
+ ]).nullable(),
19594
+ /** A battery camera (whatever its current state). An AWAKE battery
19595
+ * camera is deliberately NOT recaptured on the poll cadence — every
19596
+ * capture is a camera hit that would keep it out of sleep — so its
19597
+ * cached frame legitimately ages past the currency ceiling while
19598
+ * nothing is streaming. A surface must keep painting it (a fresh
19599
+ * frame is captured at each wake), not blank to "unavailable". */
19600
+ battery: boolean()
19561
19601
  })))
19562
19602
  },
19563
19603
  status: {
@@ -34112,6 +34152,12 @@ Object.freeze({
34112
34152
  addonId: null,
34113
34153
  access: "view"
34114
34154
  },
34155
+ "snapshot.getDebugState": {
34156
+ capName: "snapshot",
34157
+ capScope: "device",
34158
+ addonId: null,
34159
+ access: "view"
34160
+ },
34115
34161
  "snapshot.getSnapshot": {
34116
34162
  capName: "snapshot",
34117
34163
  capScope: "device",
@@ -36709,6 +36755,11 @@ Object.freeze({
36709
36755
  form: "single",
36710
36756
  optional: false
36711
36757
  }],
36758
+ "snapshot.getDebugState": [{
36759
+ name: "deviceId",
36760
+ form: "single",
36761
+ optional: false
36762
+ }],
36712
36763
  "snapshot.getSnapshot": [{
36713
36764
  name: "deviceId",
36714
36765
  form: "single",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-provider-wyze",
3
- "version": "0.2.17",
3
+ "version": "0.2.19",
4
4
  "description": "Wyze camera device-provider addon for CamStack — wraps the @apocaliss92/wyze-bridge-js P2P/DTLS client, feeding the stream-broker via the pull-rfc4571 lazy-publish path (a structural twin of addon-provider-reolink)",
5
5
  "keywords": [
6
6
  "camstack",