@camstack/addon-terminal 0.1.21 → 0.1.23

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
@@ -19493,6 +19493,39 @@ var snapshotCapability = {
19493
19493
  etag: string().nullable()
19494
19494
  }))),
19495
19495
  /**
19496
+ * The full decision chain for ONE device, for the viewer's debug readout —
19497
+ * the answer to "why does this tile show what it shows" in a single poll:
19498
+ * the battery slice the state was derived from, the resolved state + its
19499
+ * reason, the cached frame's identity/age, whether a wake window is open,
19500
+ * and whether a fresh capture is in flight. Cache-only and capture-free:
19501
+ * a debug read must never wake a battery camera.
19502
+ */
19503
+ getDebugState: systemMethod(object({ deviceId: number() }), object({
19504
+ /** The battery slice as read, or null when the device has none. */
19505
+ battery: object({
19506
+ sleeping: boolean(),
19507
+ lastUpdated: number(),
19508
+ lastContactAt: number().optional()
19509
+ }).nullable(),
19510
+ /** The resolved snapshot state (what the overlay decision used). */
19511
+ state: object({
19512
+ isBattery: boolean(),
19513
+ reason: _enum([
19514
+ "disabled",
19515
+ "sleeping",
19516
+ "unreachable",
19517
+ "waking"
19518
+ ]).nullable()
19519
+ }),
19520
+ /** The cached frame behind the next paint. */
19521
+ frame: object({
19522
+ capturedAt: number().nullable(),
19523
+ ageMs: number().nullable()
19524
+ }),
19525
+ /** A wake window is currently open (the Waking overlay's source). */
19526
+ waking: boolean()
19527
+ })),
19528
+ /**
19496
19529
  * Signed, expiring links to a CLIENT-SIZED frame — and the demand signal
19497
19530
  * that makes those frames current.
19498
19531
  *
@@ -19574,7 +19607,14 @@ targets: array(object({
19574
19607
  "sleeping",
19575
19608
  "unreachable",
19576
19609
  "waking"
19577
- ]).nullable()
19610
+ ]).nullable(),
19611
+ /** A battery camera (whatever its current state). An AWAKE battery
19612
+ * camera is deliberately NOT recaptured on the poll cadence — every
19613
+ * capture is a camera hit that would keep it out of sleep — so its
19614
+ * cached frame legitimately ages past the currency ceiling while
19615
+ * nothing is streaming. A surface must keep painting it (a fresh
19616
+ * frame is captured at each wake), not blank to "unavailable". */
19617
+ battery: boolean()
19578
19618
  })))
19579
19619
  },
19580
19620
  status: {
@@ -34154,6 +34194,12 @@ Object.freeze({
34154
34194
  addonId: null,
34155
34195
  access: "view"
34156
34196
  },
34197
+ "snapshot.getDebugState": {
34198
+ capName: "snapshot",
34199
+ capScope: "device",
34200
+ addonId: null,
34201
+ access: "view"
34202
+ },
34157
34203
  "snapshot.getSnapshot": {
34158
34204
  capName: "snapshot",
34159
34205
  capScope: "device",
@@ -36751,6 +36797,11 @@ Object.freeze({
36751
36797
  form: "single",
36752
36798
  optional: false
36753
36799
  }],
36800
+ "snapshot.getDebugState": [{
36801
+ name: "deviceId",
36802
+ form: "single",
36803
+ optional: false
36804
+ }],
36754
36805
  "snapshot.getSnapshot": [{
36755
36806
  name: "deviceId",
36756
36807
  form: "single",
package/dist/addon.mjs CHANGED
@@ -19470,6 +19470,39 @@ var snapshotCapability = {
19470
19470
  etag: string().nullable()
19471
19471
  }))),
19472
19472
  /**
19473
+ * The full decision chain for ONE device, for the viewer's debug readout —
19474
+ * the answer to "why does this tile show what it shows" in a single poll:
19475
+ * the battery slice the state was derived from, the resolved state + its
19476
+ * reason, the cached frame's identity/age, whether a wake window is open,
19477
+ * and whether a fresh capture is in flight. Cache-only and capture-free:
19478
+ * a debug read must never wake a battery camera.
19479
+ */
19480
+ getDebugState: systemMethod(object({ deviceId: number() }), object({
19481
+ /** The battery slice as read, or null when the device has none. */
19482
+ battery: object({
19483
+ sleeping: boolean(),
19484
+ lastUpdated: number(),
19485
+ lastContactAt: number().optional()
19486
+ }).nullable(),
19487
+ /** The resolved snapshot state (what the overlay decision used). */
19488
+ state: object({
19489
+ isBattery: boolean(),
19490
+ reason: _enum([
19491
+ "disabled",
19492
+ "sleeping",
19493
+ "unreachable",
19494
+ "waking"
19495
+ ]).nullable()
19496
+ }),
19497
+ /** The cached frame behind the next paint. */
19498
+ frame: object({
19499
+ capturedAt: number().nullable(),
19500
+ ageMs: number().nullable()
19501
+ }),
19502
+ /** A wake window is currently open (the Waking overlay's source). */
19503
+ waking: boolean()
19504
+ })),
19505
+ /**
19473
19506
  * Signed, expiring links to a CLIENT-SIZED frame — and the demand signal
19474
19507
  * that makes those frames current.
19475
19508
  *
@@ -19551,7 +19584,14 @@ targets: array(object({
19551
19584
  "sleeping",
19552
19585
  "unreachable",
19553
19586
  "waking"
19554
- ]).nullable()
19587
+ ]).nullable(),
19588
+ /** A battery camera (whatever its current state). An AWAKE battery
19589
+ * camera is deliberately NOT recaptured on the poll cadence — every
19590
+ * capture is a camera hit that would keep it out of sleep — so its
19591
+ * cached frame legitimately ages past the currency ceiling while
19592
+ * nothing is streaming. A surface must keep painting it (a fresh
19593
+ * frame is captured at each wake), not blank to "unavailable". */
19594
+ battery: boolean()
19555
19595
  })))
19556
19596
  },
19557
19597
  status: {
@@ -34131,6 +34171,12 @@ Object.freeze({
34131
34171
  addonId: null,
34132
34172
  access: "view"
34133
34173
  },
34174
+ "snapshot.getDebugState": {
34175
+ capName: "snapshot",
34176
+ capScope: "device",
34177
+ addonId: null,
34178
+ access: "view"
34179
+ },
34134
34180
  "snapshot.getSnapshot": {
34135
34181
  capName: "snapshot",
34136
34182
  capScope: "device",
@@ -36728,6 +36774,11 @@ Object.freeze({
36728
36774
  form: "single",
36729
36775
  optional: false
36730
36776
  }],
36777
+ "snapshot.getDebugState": [{
36778
+ name: "deviceId",
36779
+ form: "single",
36780
+ optional: false
36781
+ }],
36731
36782
  "snapshot.getSnapshot": [{
36732
36783
  name: "deviceId",
36733
36784
  form: "single",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-terminal",
3
- "version": "0.1.21",
3
+ "version": "0.1.23",
4
4
  "description": "Interactive terminal sessions (pty + xterm) as a CamStack addon",
5
5
  "keywords": [
6
6
  "camstack",