@camstack/addon-agent-ui 1.2.52 → 1.2.54
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 +118 -7
- package/package.json +1 -1
package/dist/addon.js
CHANGED
|
@@ -15576,6 +15576,8 @@ var NcSystemEventKindSchema = _enum([
|
|
|
15576
15576
|
"device-offline",
|
|
15577
15577
|
"device-disabled",
|
|
15578
15578
|
"device-enabled",
|
|
15579
|
+
"device-battery-low",
|
|
15580
|
+
"device-battery-normal",
|
|
15579
15581
|
"stream-online",
|
|
15580
15582
|
"stream-offline",
|
|
15581
15583
|
"node-online",
|
|
@@ -18850,6 +18852,34 @@ var KeyEventsForDeviceSchema = object({
|
|
|
18850
18852
|
deviceId: number(),
|
|
18851
18853
|
events: array(KeyEventSchema).readonly()
|
|
18852
18854
|
});
|
|
18855
|
+
/** One non-empty bucket of the timeline histogram. */
|
|
18856
|
+
var EventDensityBucketSchema = object({
|
|
18857
|
+
bucketStart: number(),
|
|
18858
|
+
motion: number().int(),
|
|
18859
|
+
object: number().int(),
|
|
18860
|
+
audio: number().int()
|
|
18861
|
+
});
|
|
18862
|
+
/**
|
|
18863
|
+
* One camera's row in a `getEventDensityBatch` answer.
|
|
18864
|
+
*
|
|
18865
|
+
* TWO facts, and the timeline draws them differently:
|
|
18866
|
+
*
|
|
18867
|
+
* - `read: 'read'` — the histogram for this camera. `buckets: []` is a real
|
|
18868
|
+
* claim: read, and nothing happened in the window.
|
|
18869
|
+
* - `read: 'unreadable'` — nobody could answer for this camera. `buckets` is
|
|
18870
|
+
* empty and that emptiness means NOTHING; the timeline must render unknown,
|
|
18871
|
+
* not quiet.
|
|
18872
|
+
*
|
|
18873
|
+
* Fanned out per camera the difference was free — one query rejected while the
|
|
18874
|
+
* others resolved — and collapsing to a batch is the exact moment it is lost
|
|
18875
|
+
* silently. Every requested id gets a row: a caller that asked for twelve and
|
|
18876
|
+
* got eleven cannot tell which one is missing, or that any is.
|
|
18877
|
+
*/
|
|
18878
|
+
var EventDensityForDeviceSchema = object({
|
|
18879
|
+
deviceId: number(),
|
|
18880
|
+
read: _enum(["read", "unreadable"]),
|
|
18881
|
+
buckets: array(EventDensityBucketSchema).readonly()
|
|
18882
|
+
});
|
|
18853
18883
|
object({
|
|
18854
18884
|
trackId: string(),
|
|
18855
18885
|
className: string(),
|
|
@@ -19160,12 +19190,12 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
19160
19190
|
since: number(),
|
|
19161
19191
|
until: number(),
|
|
19162
19192
|
bucketMs: number().int().positive()
|
|
19163
|
-
}), array(object({
|
|
19164
|
-
|
|
19165
|
-
|
|
19166
|
-
|
|
19167
|
-
|
|
19168
|
-
})).readonly()), method(object({
|
|
19193
|
+
}), array(EventDensityBucketSchema).readonly()), method(object({
|
|
19194
|
+
deviceIds: array(number()).min(1).max(200),
|
|
19195
|
+
since: number(),
|
|
19196
|
+
until: number(),
|
|
19197
|
+
bucketMs: number().int().positive()
|
|
19198
|
+
}), array(EventDensityForDeviceSchema).readonly()), method(object({
|
|
19169
19199
|
deviceId: number(),
|
|
19170
19200
|
cutoffMs: number()
|
|
19171
19201
|
}), object({
|
|
@@ -26475,6 +26505,39 @@ var RecordingDaysSchema = object({
|
|
|
26475
26505
|
/** Local-midnight epochs (UTC ms) of days that have ≥1 recorded segment. */
|
|
26476
26506
|
days: array(number())
|
|
26477
26507
|
});
|
|
26508
|
+
/**
|
|
26509
|
+
* One camera's row in a `getAvailabilityBatch` answer.
|
|
26510
|
+
*
|
|
26511
|
+
* `ranges` is EXACTLY what `getAvailability` returns for that camera — the
|
|
26512
|
+
* batch collapses the transport, not the work — plus the one thing the singular
|
|
26513
|
+
* method never had to say:
|
|
26514
|
+
*
|
|
26515
|
+
* - `read: 'read'` — answered. `ranges: []` means "read, and this camera has
|
|
26516
|
+
* no footage in the window", which is a real claim.
|
|
26517
|
+
* - `read: 'unreadable'` — the recorder could not answer for this camera (its
|
|
26518
|
+
* calendar rung threw, its location is unmounted). `ranges` is empty and
|
|
26519
|
+
* that emptiness means NOTHING.
|
|
26520
|
+
*
|
|
26521
|
+
* A timeline that renders the second as the first tells an operator there is no
|
|
26522
|
+
* footage when the truth is that nobody looked.
|
|
26523
|
+
*/
|
|
26524
|
+
var RecordingAvailabilityForDeviceSchema = object({
|
|
26525
|
+
deviceId: number(),
|
|
26526
|
+
read: _enum(["read", "unreadable"]),
|
|
26527
|
+
ranges: array(RecordingRangeSchema).readonly()
|
|
26528
|
+
});
|
|
26529
|
+
/**
|
|
26530
|
+
* One camera's row in a `getDaysWithRecordingsBatch` answer. Same rule as
|
|
26531
|
+
* {@link RecordingAvailabilityForDeviceSchema}: `days: []` on a `'read'` row is
|
|
26532
|
+
* "no footage in this month", `read: 'unreadable'` is "nobody could look", and
|
|
26533
|
+
* the date-picker's day dots must not spell them the same.
|
|
26534
|
+
*/
|
|
26535
|
+
var RecordingDaysForDeviceSchema = object({
|
|
26536
|
+
deviceId: number(),
|
|
26537
|
+
read: _enum(["read", "unreadable"]),
|
|
26538
|
+
/** Local-midnight epochs (UTC ms) of days that have ≥1 recorded segment. */
|
|
26539
|
+
days: array(number()).readonly()
|
|
26540
|
+
});
|
|
26478
26541
|
var RecordingManifestSchema = object({
|
|
26479
26542
|
deviceId: number(),
|
|
26480
26543
|
/** Local filesystem path to the master playlist; null when no recording exists for the requested range. */
|
|
@@ -26709,6 +26772,13 @@ method(object({
|
|
|
26709
26772
|
}), RecordingAvailabilitySchema, {
|
|
26710
26773
|
kind: "query",
|
|
26711
26774
|
auth: "protected"
|
|
26775
|
+
}), method(object({
|
|
26776
|
+
deviceIds: array(number()).min(1).max(200),
|
|
26777
|
+
fromMs: number(),
|
|
26778
|
+
toMs: number()
|
|
26779
|
+
}), array(RecordingAvailabilityForDeviceSchema).readonly(), {
|
|
26780
|
+
kind: "query",
|
|
26781
|
+
auth: "protected"
|
|
26712
26782
|
}), method(object({
|
|
26713
26783
|
deviceId: number(),
|
|
26714
26784
|
fromMs: number(),
|
|
@@ -26717,6 +26787,14 @@ method(object({
|
|
|
26717
26787
|
}), RecordingDaysSchema, {
|
|
26718
26788
|
kind: "query",
|
|
26719
26789
|
auth: "protected"
|
|
26790
|
+
}), method(object({
|
|
26791
|
+
deviceIds: array(number()).min(1).max(200),
|
|
26792
|
+
fromMs: number(),
|
|
26793
|
+
toMs: number(),
|
|
26794
|
+
tzOffsetMinutes: number()
|
|
26795
|
+
}), array(RecordingDaysForDeviceSchema).readonly(), {
|
|
26796
|
+
kind: "query",
|
|
26797
|
+
auth: "protected"
|
|
26720
26798
|
}), method(object({
|
|
26721
26799
|
deviceId: number(),
|
|
26722
26800
|
fromMs: number(),
|
|
@@ -31914,6 +31992,12 @@ Object.freeze({
|
|
|
31914
31992
|
addonId: null,
|
|
31915
31993
|
access: "view"
|
|
31916
31994
|
},
|
|
31995
|
+
"pipelineAnalytics.getEventDensityBatch": {
|
|
31996
|
+
capName: "pipeline-analytics",
|
|
31997
|
+
capScope: "device",
|
|
31998
|
+
addonId: null,
|
|
31999
|
+
access: "view"
|
|
32000
|
+
},
|
|
31917
32001
|
"pipelineAnalytics.getEventMedia": {
|
|
31918
32002
|
capName: "pipeline-analytics",
|
|
31919
32003
|
capScope: "device",
|
|
@@ -33036,12 +33120,24 @@ Object.freeze({
|
|
|
33036
33120
|
addonId: null,
|
|
33037
33121
|
access: "view"
|
|
33038
33122
|
},
|
|
33123
|
+
"recording.getAvailabilityBatch": {
|
|
33124
|
+
capName: "recording",
|
|
33125
|
+
capScope: "system",
|
|
33126
|
+
addonId: null,
|
|
33127
|
+
access: "view"
|
|
33128
|
+
},
|
|
33039
33129
|
"recording.getDaysWithRecordings": {
|
|
33040
33130
|
capName: "recording",
|
|
33041
33131
|
capScope: "system",
|
|
33042
33132
|
addonId: null,
|
|
33043
33133
|
access: "view"
|
|
33044
33134
|
},
|
|
33135
|
+
"recording.getDaysWithRecordingsBatch": {
|
|
33136
|
+
capName: "recording",
|
|
33137
|
+
capScope: "system",
|
|
33138
|
+
addonId: null,
|
|
33139
|
+
access: "view"
|
|
33140
|
+
},
|
|
33045
33141
|
"recording.getDeviceConfig": {
|
|
33046
33142
|
capName: "recording",
|
|
33047
33143
|
capScope: "system",
|
|
@@ -35646,6 +35742,11 @@ Object.freeze({
|
|
|
35646
35742
|
form: "single",
|
|
35647
35743
|
optional: false
|
|
35648
35744
|
}],
|
|
35745
|
+
"pipelineAnalytics.getEventDensityBatch": [{
|
|
35746
|
+
name: "deviceIds",
|
|
35747
|
+
form: "array",
|
|
35748
|
+
optional: false
|
|
35749
|
+
}],
|
|
35649
35750
|
"pipelineAnalytics.getEventMedia": [{
|
|
35650
35751
|
name: "deviceId",
|
|
35651
35752
|
form: "single",
|
|
@@ -36061,11 +36162,21 @@ Object.freeze({
|
|
|
36061
36162
|
form: "single",
|
|
36062
36163
|
optional: false
|
|
36063
36164
|
}],
|
|
36165
|
+
"recording.getAvailabilityBatch": [{
|
|
36166
|
+
name: "deviceIds",
|
|
36167
|
+
form: "array",
|
|
36168
|
+
optional: false
|
|
36169
|
+
}],
|
|
36064
36170
|
"recording.getDaysWithRecordings": [{
|
|
36065
36171
|
name: "deviceId",
|
|
36066
36172
|
form: "single",
|
|
36067
36173
|
optional: false
|
|
36068
36174
|
}],
|
|
36175
|
+
"recording.getDaysWithRecordingsBatch": [{
|
|
36176
|
+
name: "deviceIds",
|
|
36177
|
+
form: "array",
|
|
36178
|
+
optional: false
|
|
36179
|
+
}],
|
|
36069
36180
|
"recording.getDeviceConfig": [{
|
|
36070
36181
|
name: "deviceId",
|
|
36071
36182
|
form: "single",
|
|
@@ -37005,7 +37116,7 @@ var AgentUIAddon = class extends BaseAddon {
|
|
|
37005
37116
|
capability: adminUiCapability,
|
|
37006
37117
|
provider: {
|
|
37007
37118
|
getStaticDir: async () => ({ staticDir: path.resolve(__dirname) }),
|
|
37008
|
-
getVersion: async () => ({ version: "1.2.
|
|
37119
|
+
getVersion: async () => ({ version: "1.2.54" })
|
|
37009
37120
|
}
|
|
37010
37121
|
}];
|
|
37011
37122
|
}
|