@camstack/addon-terminal 0.1.55 → 0.1.57

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
@@ -15919,6 +15919,8 @@ var NcSystemEventKindSchema = _enum([
15919
15919
  "device-offline",
15920
15920
  "device-disabled",
15921
15921
  "device-enabled",
15922
+ "device-battery-low",
15923
+ "device-battery-normal",
15922
15924
  "stream-online",
15923
15925
  "stream-offline",
15924
15926
  "node-online",
@@ -19233,6 +19235,34 @@ var KeyEventsForDeviceSchema = object({
19233
19235
  deviceId: number(),
19234
19236
  events: array(KeyEventSchema).readonly()
19235
19237
  });
19238
+ /** One non-empty bucket of the timeline histogram. */
19239
+ var EventDensityBucketSchema = object({
19240
+ bucketStart: number(),
19241
+ motion: number().int(),
19242
+ object: number().int(),
19243
+ audio: number().int()
19244
+ });
19245
+ /**
19246
+ * One camera's row in a `getEventDensityBatch` answer.
19247
+ *
19248
+ * TWO facts, and the timeline draws them differently:
19249
+ *
19250
+ * - `read: 'read'` — the histogram for this camera. `buckets: []` is a real
19251
+ * claim: read, and nothing happened in the window.
19252
+ * - `read: 'unreadable'` — nobody could answer for this camera. `buckets` is
19253
+ * empty and that emptiness means NOTHING; the timeline must render unknown,
19254
+ * not quiet.
19255
+ *
19256
+ * Fanned out per camera the difference was free — one query rejected while the
19257
+ * others resolved — and collapsing to a batch is the exact moment it is lost
19258
+ * silently. Every requested id gets a row: a caller that asked for twelve and
19259
+ * got eleven cannot tell which one is missing, or that any is.
19260
+ */
19261
+ var EventDensityForDeviceSchema = object({
19262
+ deviceId: number(),
19263
+ read: _enum(["read", "unreadable"]),
19264
+ buckets: array(EventDensityBucketSchema).readonly()
19265
+ });
19236
19266
  object({
19237
19267
  trackId: string(),
19238
19268
  className: string(),
@@ -19543,12 +19573,12 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
19543
19573
  since: number(),
19544
19574
  until: number(),
19545
19575
  bucketMs: number().int().positive()
19546
- }), array(object({
19547
- bucketStart: number(),
19548
- motion: number().int(),
19549
- object: number().int(),
19550
- audio: number().int()
19551
- })).readonly()), method(object({
19576
+ }), array(EventDensityBucketSchema).readonly()), method(object({
19577
+ deviceIds: array(number()).min(1).max(200),
19578
+ since: number(),
19579
+ until: number(),
19580
+ bucketMs: number().int().positive()
19581
+ }), array(EventDensityForDeviceSchema).readonly()), method(object({
19552
19582
  deviceId: number(),
19553
19583
  cutoffMs: number()
19554
19584
  }), object({
@@ -28721,6 +28751,39 @@ var RecordingDaysSchema = object({
28721
28751
  /** Local-midnight epochs (UTC ms) of days that have ≥1 recorded segment. */
28722
28752
  days: array(number())
28723
28753
  });
28754
+ /**
28755
+ * One camera's row in a `getAvailabilityBatch` answer.
28756
+ *
28757
+ * `ranges` is EXACTLY what `getAvailability` returns for that camera — the
28758
+ * batch collapses the transport, not the work — plus the one thing the singular
28759
+ * method never had to say:
28760
+ *
28761
+ * - `read: 'read'` — answered. `ranges: []` means "read, and this camera has
28762
+ * no footage in the window", which is a real claim.
28763
+ * - `read: 'unreadable'` — the recorder could not answer for this camera (its
28764
+ * calendar rung threw, its location is unmounted). `ranges` is empty and
28765
+ * that emptiness means NOTHING.
28766
+ *
28767
+ * A timeline that renders the second as the first tells an operator there is no
28768
+ * footage when the truth is that nobody looked.
28769
+ */
28770
+ var RecordingAvailabilityForDeviceSchema = object({
28771
+ deviceId: number(),
28772
+ read: _enum(["read", "unreadable"]),
28773
+ ranges: array(RecordingRangeSchema).readonly()
28774
+ });
28775
+ /**
28776
+ * One camera's row in a `getDaysWithRecordingsBatch` answer. Same rule as
28777
+ * {@link RecordingAvailabilityForDeviceSchema}: `days: []` on a `'read'` row is
28778
+ * "no footage in this month", `read: 'unreadable'` is "nobody could look", and
28779
+ * the date-picker's day dots must not spell them the same.
28780
+ */
28781
+ var RecordingDaysForDeviceSchema = object({
28782
+ deviceId: number(),
28783
+ read: _enum(["read", "unreadable"]),
28784
+ /** Local-midnight epochs (UTC ms) of days that have ≥1 recorded segment. */
28785
+ days: array(number()).readonly()
28786
+ });
28724
28787
  var RecordingManifestSchema = object({
28725
28788
  deviceId: number(),
28726
28789
  /** Local filesystem path to the master playlist; null when no recording exists for the requested range. */
@@ -28955,6 +29018,13 @@ method(object({
28955
29018
  }), RecordingAvailabilitySchema, {
28956
29019
  kind: "query",
28957
29020
  auth: "protected"
29021
+ }), method(object({
29022
+ deviceIds: array(number()).min(1).max(200),
29023
+ fromMs: number(),
29024
+ toMs: number()
29025
+ }), array(RecordingAvailabilityForDeviceSchema).readonly(), {
29026
+ kind: "query",
29027
+ auth: "protected"
28958
29028
  }), method(object({
28959
29029
  deviceId: number(),
28960
29030
  fromMs: number(),
@@ -28963,6 +29033,14 @@ method(object({
28963
29033
  }), RecordingDaysSchema, {
28964
29034
  kind: "query",
28965
29035
  auth: "protected"
29036
+ }), method(object({
29037
+ deviceIds: array(number()).min(1).max(200),
29038
+ fromMs: number(),
29039
+ toMs: number(),
29040
+ tzOffsetMinutes: number()
29041
+ }), array(RecordingDaysForDeviceSchema).readonly(), {
29042
+ kind: "query",
29043
+ auth: "protected"
28966
29044
  }), method(object({
28967
29045
  deviceId: number(),
28968
29046
  fromMs: number(),
@@ -35857,6 +35935,12 @@ Object.freeze({
35857
35935
  addonId: null,
35858
35936
  access: "view"
35859
35937
  },
35938
+ "pipelineAnalytics.getEventDensityBatch": {
35939
+ capName: "pipeline-analytics",
35940
+ capScope: "device",
35941
+ addonId: null,
35942
+ access: "view"
35943
+ },
35860
35944
  "pipelineAnalytics.getEventMedia": {
35861
35945
  capName: "pipeline-analytics",
35862
35946
  capScope: "device",
@@ -36979,12 +37063,24 @@ Object.freeze({
36979
37063
  addonId: null,
36980
37064
  access: "view"
36981
37065
  },
37066
+ "recording.getAvailabilityBatch": {
37067
+ capName: "recording",
37068
+ capScope: "system",
37069
+ addonId: null,
37070
+ access: "view"
37071
+ },
36982
37072
  "recording.getDaysWithRecordings": {
36983
37073
  capName: "recording",
36984
37074
  capScope: "system",
36985
37075
  addonId: null,
36986
37076
  access: "view"
36987
37077
  },
37078
+ "recording.getDaysWithRecordingsBatch": {
37079
+ capName: "recording",
37080
+ capScope: "system",
37081
+ addonId: null,
37082
+ access: "view"
37083
+ },
36988
37084
  "recording.getDeviceConfig": {
36989
37085
  capName: "recording",
36990
37086
  capScope: "system",
@@ -39589,6 +39685,11 @@ Object.freeze({
39589
39685
  form: "single",
39590
39686
  optional: false
39591
39687
  }],
39688
+ "pipelineAnalytics.getEventDensityBatch": [{
39689
+ name: "deviceIds",
39690
+ form: "array",
39691
+ optional: false
39692
+ }],
39592
39693
  "pipelineAnalytics.getEventMedia": [{
39593
39694
  name: "deviceId",
39594
39695
  form: "single",
@@ -40004,11 +40105,21 @@ Object.freeze({
40004
40105
  form: "single",
40005
40106
  optional: false
40006
40107
  }],
40108
+ "recording.getAvailabilityBatch": [{
40109
+ name: "deviceIds",
40110
+ form: "array",
40111
+ optional: false
40112
+ }],
40007
40113
  "recording.getDaysWithRecordings": [{
40008
40114
  name: "deviceId",
40009
40115
  form: "single",
40010
40116
  optional: false
40011
40117
  }],
40118
+ "recording.getDaysWithRecordingsBatch": [{
40119
+ name: "deviceIds",
40120
+ form: "array",
40121
+ optional: false
40122
+ }],
40012
40123
  "recording.getDeviceConfig": [{
40013
40124
  name: "deviceId",
40014
40125
  form: "single",
package/dist/addon.mjs CHANGED
@@ -15896,6 +15896,8 @@ var NcSystemEventKindSchema = _enum([
15896
15896
  "device-offline",
15897
15897
  "device-disabled",
15898
15898
  "device-enabled",
15899
+ "device-battery-low",
15900
+ "device-battery-normal",
15899
15901
  "stream-online",
15900
15902
  "stream-offline",
15901
15903
  "node-online",
@@ -19210,6 +19212,34 @@ var KeyEventsForDeviceSchema = object({
19210
19212
  deviceId: number(),
19211
19213
  events: array(KeyEventSchema).readonly()
19212
19214
  });
19215
+ /** One non-empty bucket of the timeline histogram. */
19216
+ var EventDensityBucketSchema = object({
19217
+ bucketStart: number(),
19218
+ motion: number().int(),
19219
+ object: number().int(),
19220
+ audio: number().int()
19221
+ });
19222
+ /**
19223
+ * One camera's row in a `getEventDensityBatch` answer.
19224
+ *
19225
+ * TWO facts, and the timeline draws them differently:
19226
+ *
19227
+ * - `read: 'read'` — the histogram for this camera. `buckets: []` is a real
19228
+ * claim: read, and nothing happened in the window.
19229
+ * - `read: 'unreadable'` — nobody could answer for this camera. `buckets` is
19230
+ * empty and that emptiness means NOTHING; the timeline must render unknown,
19231
+ * not quiet.
19232
+ *
19233
+ * Fanned out per camera the difference was free — one query rejected while the
19234
+ * others resolved — and collapsing to a batch is the exact moment it is lost
19235
+ * silently. Every requested id gets a row: a caller that asked for twelve and
19236
+ * got eleven cannot tell which one is missing, or that any is.
19237
+ */
19238
+ var EventDensityForDeviceSchema = object({
19239
+ deviceId: number(),
19240
+ read: _enum(["read", "unreadable"]),
19241
+ buckets: array(EventDensityBucketSchema).readonly()
19242
+ });
19213
19243
  object({
19214
19244
  trackId: string(),
19215
19245
  className: string(),
@@ -19520,12 +19550,12 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
19520
19550
  since: number(),
19521
19551
  until: number(),
19522
19552
  bucketMs: number().int().positive()
19523
- }), array(object({
19524
- bucketStart: number(),
19525
- motion: number().int(),
19526
- object: number().int(),
19527
- audio: number().int()
19528
- })).readonly()), method(object({
19553
+ }), array(EventDensityBucketSchema).readonly()), method(object({
19554
+ deviceIds: array(number()).min(1).max(200),
19555
+ since: number(),
19556
+ until: number(),
19557
+ bucketMs: number().int().positive()
19558
+ }), array(EventDensityForDeviceSchema).readonly()), method(object({
19529
19559
  deviceId: number(),
19530
19560
  cutoffMs: number()
19531
19561
  }), object({
@@ -28698,6 +28728,39 @@ var RecordingDaysSchema = object({
28698
28728
  /** Local-midnight epochs (UTC ms) of days that have ≥1 recorded segment. */
28699
28729
  days: array(number())
28700
28730
  });
28731
+ /**
28732
+ * One camera's row in a `getAvailabilityBatch` answer.
28733
+ *
28734
+ * `ranges` is EXACTLY what `getAvailability` returns for that camera — the
28735
+ * batch collapses the transport, not the work — plus the one thing the singular
28736
+ * method never had to say:
28737
+ *
28738
+ * - `read: 'read'` — answered. `ranges: []` means "read, and this camera has
28739
+ * no footage in the window", which is a real claim.
28740
+ * - `read: 'unreadable'` — the recorder could not answer for this camera (its
28741
+ * calendar rung threw, its location is unmounted). `ranges` is empty and
28742
+ * that emptiness means NOTHING.
28743
+ *
28744
+ * A timeline that renders the second as the first tells an operator there is no
28745
+ * footage when the truth is that nobody looked.
28746
+ */
28747
+ var RecordingAvailabilityForDeviceSchema = object({
28748
+ deviceId: number(),
28749
+ read: _enum(["read", "unreadable"]),
28750
+ ranges: array(RecordingRangeSchema).readonly()
28751
+ });
28752
+ /**
28753
+ * One camera's row in a `getDaysWithRecordingsBatch` answer. Same rule as
28754
+ * {@link RecordingAvailabilityForDeviceSchema}: `days: []` on a `'read'` row is
28755
+ * "no footage in this month", `read: 'unreadable'` is "nobody could look", and
28756
+ * the date-picker's day dots must not spell them the same.
28757
+ */
28758
+ var RecordingDaysForDeviceSchema = object({
28759
+ deviceId: number(),
28760
+ read: _enum(["read", "unreadable"]),
28761
+ /** Local-midnight epochs (UTC ms) of days that have ≥1 recorded segment. */
28762
+ days: array(number()).readonly()
28763
+ });
28701
28764
  var RecordingManifestSchema = object({
28702
28765
  deviceId: number(),
28703
28766
  /** Local filesystem path to the master playlist; null when no recording exists for the requested range. */
@@ -28932,6 +28995,13 @@ method(object({
28932
28995
  }), RecordingAvailabilitySchema, {
28933
28996
  kind: "query",
28934
28997
  auth: "protected"
28998
+ }), method(object({
28999
+ deviceIds: array(number()).min(1).max(200),
29000
+ fromMs: number(),
29001
+ toMs: number()
29002
+ }), array(RecordingAvailabilityForDeviceSchema).readonly(), {
29003
+ kind: "query",
29004
+ auth: "protected"
28935
29005
  }), method(object({
28936
29006
  deviceId: number(),
28937
29007
  fromMs: number(),
@@ -28940,6 +29010,14 @@ method(object({
28940
29010
  }), RecordingDaysSchema, {
28941
29011
  kind: "query",
28942
29012
  auth: "protected"
29013
+ }), method(object({
29014
+ deviceIds: array(number()).min(1).max(200),
29015
+ fromMs: number(),
29016
+ toMs: number(),
29017
+ tzOffsetMinutes: number()
29018
+ }), array(RecordingDaysForDeviceSchema).readonly(), {
29019
+ kind: "query",
29020
+ auth: "protected"
28943
29021
  }), method(object({
28944
29022
  deviceId: number(),
28945
29023
  fromMs: number(),
@@ -35834,6 +35912,12 @@ Object.freeze({
35834
35912
  addonId: null,
35835
35913
  access: "view"
35836
35914
  },
35915
+ "pipelineAnalytics.getEventDensityBatch": {
35916
+ capName: "pipeline-analytics",
35917
+ capScope: "device",
35918
+ addonId: null,
35919
+ access: "view"
35920
+ },
35837
35921
  "pipelineAnalytics.getEventMedia": {
35838
35922
  capName: "pipeline-analytics",
35839
35923
  capScope: "device",
@@ -36956,12 +37040,24 @@ Object.freeze({
36956
37040
  addonId: null,
36957
37041
  access: "view"
36958
37042
  },
37043
+ "recording.getAvailabilityBatch": {
37044
+ capName: "recording",
37045
+ capScope: "system",
37046
+ addonId: null,
37047
+ access: "view"
37048
+ },
36959
37049
  "recording.getDaysWithRecordings": {
36960
37050
  capName: "recording",
36961
37051
  capScope: "system",
36962
37052
  addonId: null,
36963
37053
  access: "view"
36964
37054
  },
37055
+ "recording.getDaysWithRecordingsBatch": {
37056
+ capName: "recording",
37057
+ capScope: "system",
37058
+ addonId: null,
37059
+ access: "view"
37060
+ },
36965
37061
  "recording.getDeviceConfig": {
36966
37062
  capName: "recording",
36967
37063
  capScope: "system",
@@ -39566,6 +39662,11 @@ Object.freeze({
39566
39662
  form: "single",
39567
39663
  optional: false
39568
39664
  }],
39665
+ "pipelineAnalytics.getEventDensityBatch": [{
39666
+ name: "deviceIds",
39667
+ form: "array",
39668
+ optional: false
39669
+ }],
39569
39670
  "pipelineAnalytics.getEventMedia": [{
39570
39671
  name: "deviceId",
39571
39672
  form: "single",
@@ -39981,11 +40082,21 @@ Object.freeze({
39981
40082
  form: "single",
39982
40083
  optional: false
39983
40084
  }],
40085
+ "recording.getAvailabilityBatch": [{
40086
+ name: "deviceIds",
40087
+ form: "array",
40088
+ optional: false
40089
+ }],
39984
40090
  "recording.getDaysWithRecordings": [{
39985
40091
  name: "deviceId",
39986
40092
  form: "single",
39987
40093
  optional: false
39988
40094
  }],
40095
+ "recording.getDaysWithRecordingsBatch": [{
40096
+ name: "deviceIds",
40097
+ form: "array",
40098
+ optional: false
40099
+ }],
39989
40100
  "recording.getDeviceConfig": [{
39990
40101
  name: "deviceId",
39991
40102
  form: "single",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-terminal",
3
- "version": "0.1.55",
3
+ "version": "0.1.57",
4
4
  "description": "Interactive terminal sessions (pty + xterm) as a CamStack addon",
5
5
  "keywords": [
6
6
  "camstack",