@camstack/addon-provider-amcrest 0.2.19 → 0.2.21

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
@@ -19442,6 +19442,39 @@ var snapshotCapability = {
19442
19442
  etag: string().nullable()
19443
19443
  }))),
19444
19444
  /**
19445
+ * The full decision chain for ONE device, for the viewer's debug readout —
19446
+ * the answer to "why does this tile show what it shows" in a single poll:
19447
+ * the battery slice the state was derived from, the resolved state + its
19448
+ * reason, the cached frame's identity/age, whether a wake window is open,
19449
+ * and whether a fresh capture is in flight. Cache-only and capture-free:
19450
+ * a debug read must never wake a battery camera.
19451
+ */
19452
+ getDebugState: systemMethod(object({ deviceId: number() }), object({
19453
+ /** The battery slice as read, or null when the device has none. */
19454
+ battery: object({
19455
+ sleeping: boolean(),
19456
+ lastUpdated: number(),
19457
+ lastContactAt: number().optional()
19458
+ }).nullable(),
19459
+ /** The resolved snapshot state (what the overlay decision used). */
19460
+ state: object({
19461
+ isBattery: boolean(),
19462
+ reason: _enum([
19463
+ "disabled",
19464
+ "sleeping",
19465
+ "unreachable",
19466
+ "waking"
19467
+ ]).nullable()
19468
+ }),
19469
+ /** The cached frame behind the next paint. */
19470
+ frame: object({
19471
+ capturedAt: number().nullable(),
19472
+ ageMs: number().nullable()
19473
+ }),
19474
+ /** A wake window is currently open (the Waking overlay's source). */
19475
+ waking: boolean()
19476
+ })),
19477
+ /**
19445
19478
  * Signed, expiring links to a CLIENT-SIZED frame — and the demand signal
19446
19479
  * that makes those frames current.
19447
19480
  *
@@ -19523,7 +19556,14 @@ targets: array(object({
19523
19556
  "sleeping",
19524
19557
  "unreachable",
19525
19558
  "waking"
19526
- ]).nullable()
19559
+ ]).nullable(),
19560
+ /** A battery camera (whatever its current state). An AWAKE battery
19561
+ * camera is deliberately NOT recaptured on the poll cadence — every
19562
+ * capture is a camera hit that would keep it out of sleep — so its
19563
+ * cached frame legitimately ages past the currency ceiling while
19564
+ * nothing is streaming. A surface must keep painting it (a fresh
19565
+ * frame is captured at each wake), not blank to "unavailable". */
19566
+ battery: boolean()
19527
19567
  })))
19528
19568
  },
19529
19569
  status: {
@@ -34495,6 +34535,12 @@ Object.freeze({
34495
34535
  addonId: null,
34496
34536
  access: "view"
34497
34537
  },
34538
+ "snapshot.getDebugState": {
34539
+ capName: "snapshot",
34540
+ capScope: "device",
34541
+ addonId: null,
34542
+ access: "view"
34543
+ },
34498
34544
  "snapshot.getSnapshot": {
34499
34545
  capName: "snapshot",
34500
34546
  capScope: "device",
@@ -37092,6 +37138,11 @@ Object.freeze({
37092
37138
  form: "single",
37093
37139
  optional: false
37094
37140
  }],
37141
+ "snapshot.getDebugState": [{
37142
+ name: "deviceId",
37143
+ form: "single",
37144
+ optional: false
37145
+ }],
37095
37146
  "snapshot.getSnapshot": [{
37096
37147
  name: "deviceId",
37097
37148
  form: "single",
package/dist/addon.mjs CHANGED
@@ -19443,6 +19443,39 @@ var snapshotCapability = {
19443
19443
  etag: string().nullable()
19444
19444
  }))),
19445
19445
  /**
19446
+ * The full decision chain for ONE device, for the viewer's debug readout —
19447
+ * the answer to "why does this tile show what it shows" in a single poll:
19448
+ * the battery slice the state was derived from, the resolved state + its
19449
+ * reason, the cached frame's identity/age, whether a wake window is open,
19450
+ * and whether a fresh capture is in flight. Cache-only and capture-free:
19451
+ * a debug read must never wake a battery camera.
19452
+ */
19453
+ getDebugState: systemMethod(object({ deviceId: number() }), object({
19454
+ /** The battery slice as read, or null when the device has none. */
19455
+ battery: object({
19456
+ sleeping: boolean(),
19457
+ lastUpdated: number(),
19458
+ lastContactAt: number().optional()
19459
+ }).nullable(),
19460
+ /** The resolved snapshot state (what the overlay decision used). */
19461
+ state: object({
19462
+ isBattery: boolean(),
19463
+ reason: _enum([
19464
+ "disabled",
19465
+ "sleeping",
19466
+ "unreachable",
19467
+ "waking"
19468
+ ]).nullable()
19469
+ }),
19470
+ /** The cached frame behind the next paint. */
19471
+ frame: object({
19472
+ capturedAt: number().nullable(),
19473
+ ageMs: number().nullable()
19474
+ }),
19475
+ /** A wake window is currently open (the Waking overlay's source). */
19476
+ waking: boolean()
19477
+ })),
19478
+ /**
19446
19479
  * Signed, expiring links to a CLIENT-SIZED frame — and the demand signal
19447
19480
  * that makes those frames current.
19448
19481
  *
@@ -19524,7 +19557,14 @@ targets: array(object({
19524
19557
  "sleeping",
19525
19558
  "unreachable",
19526
19559
  "waking"
19527
- ]).nullable()
19560
+ ]).nullable(),
19561
+ /** A battery camera (whatever its current state). An AWAKE battery
19562
+ * camera is deliberately NOT recaptured on the poll cadence — every
19563
+ * capture is a camera hit that would keep it out of sleep — so its
19564
+ * cached frame legitimately ages past the currency ceiling while
19565
+ * nothing is streaming. A surface must keep painting it (a fresh
19566
+ * frame is captured at each wake), not blank to "unavailable". */
19567
+ battery: boolean()
19528
19568
  })))
19529
19569
  },
19530
19570
  status: {
@@ -34496,6 +34536,12 @@ Object.freeze({
34496
34536
  addonId: null,
34497
34537
  access: "view"
34498
34538
  },
34539
+ "snapshot.getDebugState": {
34540
+ capName: "snapshot",
34541
+ capScope: "device",
34542
+ addonId: null,
34543
+ access: "view"
34544
+ },
34499
34545
  "snapshot.getSnapshot": {
34500
34546
  capName: "snapshot",
34501
34547
  capScope: "device",
@@ -37093,6 +37139,11 @@ Object.freeze({
37093
37139
  form: "single",
37094
37140
  optional: false
37095
37141
  }],
37142
+ "snapshot.getDebugState": [{
37143
+ name: "deviceId",
37144
+ form: "single",
37145
+ optional: false
37146
+ }],
37096
37147
  "snapshot.getSnapshot": [{
37097
37148
  name: "deviceId",
37098
37149
  form: "single",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-provider-amcrest",
3
- "version": "0.2.19",
3
+ "version": "0.2.21",
4
4
  "description": "Amcrest/Dahua camera device provider addon for CamStack — Dahua CGI over HTTP(S) with digest auth (snapshot, RTSP catalog, PTZ, image/day-night config)",
5
5
  "keywords": [
6
6
  "camstack",