@camstack/addon-provider-rtsp 1.2.92 → 1.2.94

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
@@ -16526,6 +16526,7 @@ var NcSystemEventKindSchema = _enum([
16526
16526
  "addon-crash-loop",
16527
16527
  "addon-update-available",
16528
16528
  "server-update-available",
16529
+ "wrapper-update-available",
16529
16530
  "alarm-triggered",
16530
16531
  "alarm-armed",
16531
16532
  "alarm-disarmed",
@@ -19971,7 +19972,17 @@ var EventDensityBucketSchema = object({
19971
19972
  bucketStart: number(),
19972
19973
  motion: number().int(),
19973
19974
  object: number().int(),
19974
- audio: number().int()
19975
+ audio: number().int(),
19976
+ /**
19977
+ * Energy-weighted mean dBFS of the audio events in this bucket — the LEVEL,
19978
+ * as opposed to `audio`, which is their COUNT (D431).
19979
+ *
19980
+ * ABSENT when the bucket holds no audio event. Absence means "nothing was
19981
+ * measured", which is not the same claim as silence, and a lane that cannot
19982
+ * tell them apart paints a quiet hour at full scale — which is exactly what
19983
+ * the count-on-a-level-meter did.
19984
+ */
19985
+ audioDbfs: number().optional()
19975
19986
  });
19976
19987
  /**
19977
19988
  * One camera's row in a `getEventDensityBatch` answer.
@@ -22072,6 +22083,53 @@ var ImageContractSchema = object({
22072
22083
  /** One operator-grade sentence: this node runs image X; the contract says Y. */
22073
22084
  message: string()
22074
22085
  });
22086
+ /**
22087
+ * The shell verdict (see {@link WrapperKindSchema}) with the proofs that
22088
+ * produced it.
22089
+ *
22090
+ * There is deliberately NO `canSelfUpdate` and no apply action: a wrapper
22091
+ * update is an ANNOUNCEMENT. The notification body carries the exact command
22092
+ * for a `docker` shell and says the app restarts into the new build for
22093
+ * `electron`, and that sentence is chosen from `kind` alone — a boolean
22094
+ * nothing reads is the defect this repo keeps paying for.
22095
+ */
22096
+ var WrapperIdentitySchema = object({
22097
+ kind: _enum([
22098
+ "docker",
22099
+ "electron",
22100
+ "native",
22101
+ "contradictory",
22102
+ "unknown"
22103
+ ]),
22104
+ /** Every probe that ran, in a stable order. Never empty. */
22105
+ evidence: array(object({
22106
+ /** Which probe this row reports. */
22107
+ fact: _enum([
22108
+ "dockerenv-file",
22109
+ "proc-1-cgroup",
22110
+ "platform",
22111
+ "electron-app-version-env"
22112
+ ]),
22113
+ /**
22114
+ * `observed` — this process read it itself. `declared` — the shell told the
22115
+ * process and nothing here can check it. Only the Electron app version is
22116
+ * ever `declared`, and only because a child cannot see its parent.
22117
+ */
22118
+ mode: _enum(["observed", "declared"]),
22119
+ /** Did the probe support the fact it names? A `false` row is still evidence. */
22120
+ holds: boolean(),
22121
+ /** What was actually read, verbatim enough for an operator to argue with. */
22122
+ detail: string()
22123
+ })),
22124
+ /**
22125
+ * The version of the SHELL, when the shell has one it can state: the
22126
+ * Electron app version it declared, or the baked seed closure that
22127
+ * fingerprints a container / app bundle. `null` for `contradictory` and
22128
+ * `unknown` — which version belongs to the shell is precisely what is not
22129
+ * known there.
22130
+ */
22131
+ currentVersion: string().nullable()
22132
+ });
22075
22133
  var ServerRollbackInfoSchema = object({
22076
22134
  /** The version that failed (or was manually rolled back). */
22077
22135
  fromVersion: string(),
@@ -22113,7 +22171,13 @@ var ServerPackageStatusSchema = object({
22113
22171
  * Seed-vs-contract verdict (see {@link ImageContractSchema}). Optional for
22114
22172
  * version skew: an older provider's payload simply omits it.
22115
22173
  */
22116
- imageContract: ImageContractSchema.optional()
22174
+ imageContract: ImageContractSchema.optional(),
22175
+ /**
22176
+ * What this node runs INSIDE (see {@link WrapperIdentitySchema}). Optional
22177
+ * for version skew: an older provider's payload simply omits it, and an
22178
+ * absent wrapper is unknown — never `native`.
22179
+ */
22180
+ wrapper: WrapperIdentitySchema.optional()
22117
22181
  });
22118
22182
  var ServerUpdateCheckResultSchema = object({
22119
22183
  packageName: string(),
@@ -30098,7 +30162,23 @@ var RecordingRangeSchema = object({
30098
30162
  });
30099
30163
  var RecordingAvailabilitySchema = object({
30100
30164
  deviceId: number(),
30101
- ranges: array(RecordingRangeSchema)
30165
+ ranges: array(RecordingRangeSchema),
30166
+ /**
30167
+ * Every profile this camera has footage in — not only the one `ranges`
30168
+ * describes (D433).
30169
+ *
30170
+ * `ranges` answers for ONE profile by design: the timeline is a single bar,
30171
+ * and enumerating all of them triples the directory reads for a bar that
30172
+ * would look identical. But the answer used to say nothing about that, so a
30173
+ * caller asking "what can I export?" read the single preferred profile as
30174
+ * the only one that exists — on this deployment every camera records `high`
30175
+ * AND `low`, the low tree holding 14 GB for camera 615 alone, and the export
30176
+ * UI could not see it.
30177
+ *
30178
+ * Cheap: it is the same shallow directory read the profile CHOICE already
30179
+ * makes. Ask for a specific profile's ranges with the `profile` input.
30180
+ */
30181
+ profilesWithFootage: array(string())
30102
30182
  });
30103
30183
  var RecordingDaysSchema = object({
30104
30184
  deviceId: number(),
@@ -30124,7 +30204,11 @@ var RecordingDaysSchema = object({
30124
30204
  var RecordingAvailabilityForDeviceSchema = object({
30125
30205
  deviceId: number(),
30126
30206
  read: _enum(["read", "unreadable"]),
30127
- ranges: array(RecordingRangeSchema).readonly()
30207
+ ranges: array(RecordingRangeSchema).readonly(),
30208
+ /** Same field, same meaning, as the singular answer (D433). A row that
30209
+ * dropped it would tell a grid caller the archive holds one profile.
30210
+ * Empty on an `'unreadable'` row: nobody looked. */
30211
+ profilesWithFootage: array(string()).readonly()
30128
30212
  });
30129
30213
  /**
30130
30214
  * One camera's row in a `getDaysWithRecordingsBatch` answer. Same rule as
@@ -30414,7 +30498,14 @@ var ReadWindowBytesResultSchema = discriminatedUnion("kind", [object({
30414
30498
  method(object({
30415
30499
  deviceId: number(),
30416
30500
  fromMs: number(),
30417
- toMs: number()
30501
+ toMs: number(),
30502
+ /**
30503
+ * Answer for THIS profile instead of the preferred one (D433). Absent
30504
+ * keeps the timeline's behaviour — one bar, one profile, one set of
30505
+ * reads. `profilesWithFootage` on the answer says what may be asked
30506
+ * for.
30507
+ */
30508
+ profile: string().optional()
30418
30509
  }), RecordingAvailabilitySchema, {
30419
30510
  kind: "query",
30420
30511
  auth: "protected"
package/dist/addon.mjs CHANGED
@@ -16502,6 +16502,7 @@ var NcSystemEventKindSchema = _enum([
16502
16502
  "addon-crash-loop",
16503
16503
  "addon-update-available",
16504
16504
  "server-update-available",
16505
+ "wrapper-update-available",
16505
16506
  "alarm-triggered",
16506
16507
  "alarm-armed",
16507
16508
  "alarm-disarmed",
@@ -19947,7 +19948,17 @@ var EventDensityBucketSchema = object({
19947
19948
  bucketStart: number(),
19948
19949
  motion: number().int(),
19949
19950
  object: number().int(),
19950
- audio: number().int()
19951
+ audio: number().int(),
19952
+ /**
19953
+ * Energy-weighted mean dBFS of the audio events in this bucket — the LEVEL,
19954
+ * as opposed to `audio`, which is their COUNT (D431).
19955
+ *
19956
+ * ABSENT when the bucket holds no audio event. Absence means "nothing was
19957
+ * measured", which is not the same claim as silence, and a lane that cannot
19958
+ * tell them apart paints a quiet hour at full scale — which is exactly what
19959
+ * the count-on-a-level-meter did.
19960
+ */
19961
+ audioDbfs: number().optional()
19951
19962
  });
19952
19963
  /**
19953
19964
  * One camera's row in a `getEventDensityBatch` answer.
@@ -22048,6 +22059,53 @@ var ImageContractSchema = object({
22048
22059
  /** One operator-grade sentence: this node runs image X; the contract says Y. */
22049
22060
  message: string()
22050
22061
  });
22062
+ /**
22063
+ * The shell verdict (see {@link WrapperKindSchema}) with the proofs that
22064
+ * produced it.
22065
+ *
22066
+ * There is deliberately NO `canSelfUpdate` and no apply action: a wrapper
22067
+ * update is an ANNOUNCEMENT. The notification body carries the exact command
22068
+ * for a `docker` shell and says the app restarts into the new build for
22069
+ * `electron`, and that sentence is chosen from `kind` alone — a boolean
22070
+ * nothing reads is the defect this repo keeps paying for.
22071
+ */
22072
+ var WrapperIdentitySchema = object({
22073
+ kind: _enum([
22074
+ "docker",
22075
+ "electron",
22076
+ "native",
22077
+ "contradictory",
22078
+ "unknown"
22079
+ ]),
22080
+ /** Every probe that ran, in a stable order. Never empty. */
22081
+ evidence: array(object({
22082
+ /** Which probe this row reports. */
22083
+ fact: _enum([
22084
+ "dockerenv-file",
22085
+ "proc-1-cgroup",
22086
+ "platform",
22087
+ "electron-app-version-env"
22088
+ ]),
22089
+ /**
22090
+ * `observed` — this process read it itself. `declared` — the shell told the
22091
+ * process and nothing here can check it. Only the Electron app version is
22092
+ * ever `declared`, and only because a child cannot see its parent.
22093
+ */
22094
+ mode: _enum(["observed", "declared"]),
22095
+ /** Did the probe support the fact it names? A `false` row is still evidence. */
22096
+ holds: boolean(),
22097
+ /** What was actually read, verbatim enough for an operator to argue with. */
22098
+ detail: string()
22099
+ })),
22100
+ /**
22101
+ * The version of the SHELL, when the shell has one it can state: the
22102
+ * Electron app version it declared, or the baked seed closure that
22103
+ * fingerprints a container / app bundle. `null` for `contradictory` and
22104
+ * `unknown` — which version belongs to the shell is precisely what is not
22105
+ * known there.
22106
+ */
22107
+ currentVersion: string().nullable()
22108
+ });
22051
22109
  var ServerRollbackInfoSchema = object({
22052
22110
  /** The version that failed (or was manually rolled back). */
22053
22111
  fromVersion: string(),
@@ -22089,7 +22147,13 @@ var ServerPackageStatusSchema = object({
22089
22147
  * Seed-vs-contract verdict (see {@link ImageContractSchema}). Optional for
22090
22148
  * version skew: an older provider's payload simply omits it.
22091
22149
  */
22092
- imageContract: ImageContractSchema.optional()
22150
+ imageContract: ImageContractSchema.optional(),
22151
+ /**
22152
+ * What this node runs INSIDE (see {@link WrapperIdentitySchema}). Optional
22153
+ * for version skew: an older provider's payload simply omits it, and an
22154
+ * absent wrapper is unknown — never `native`.
22155
+ */
22156
+ wrapper: WrapperIdentitySchema.optional()
22093
22157
  });
22094
22158
  var ServerUpdateCheckResultSchema = object({
22095
22159
  packageName: string(),
@@ -30074,7 +30138,23 @@ var RecordingRangeSchema = object({
30074
30138
  });
30075
30139
  var RecordingAvailabilitySchema = object({
30076
30140
  deviceId: number(),
30077
- ranges: array(RecordingRangeSchema)
30141
+ ranges: array(RecordingRangeSchema),
30142
+ /**
30143
+ * Every profile this camera has footage in — not only the one `ranges`
30144
+ * describes (D433).
30145
+ *
30146
+ * `ranges` answers for ONE profile by design: the timeline is a single bar,
30147
+ * and enumerating all of them triples the directory reads for a bar that
30148
+ * would look identical. But the answer used to say nothing about that, so a
30149
+ * caller asking "what can I export?" read the single preferred profile as
30150
+ * the only one that exists — on this deployment every camera records `high`
30151
+ * AND `low`, the low tree holding 14 GB for camera 615 alone, and the export
30152
+ * UI could not see it.
30153
+ *
30154
+ * Cheap: it is the same shallow directory read the profile CHOICE already
30155
+ * makes. Ask for a specific profile's ranges with the `profile` input.
30156
+ */
30157
+ profilesWithFootage: array(string())
30078
30158
  });
30079
30159
  var RecordingDaysSchema = object({
30080
30160
  deviceId: number(),
@@ -30100,7 +30180,11 @@ var RecordingDaysSchema = object({
30100
30180
  var RecordingAvailabilityForDeviceSchema = object({
30101
30181
  deviceId: number(),
30102
30182
  read: _enum(["read", "unreadable"]),
30103
- ranges: array(RecordingRangeSchema).readonly()
30183
+ ranges: array(RecordingRangeSchema).readonly(),
30184
+ /** Same field, same meaning, as the singular answer (D433). A row that
30185
+ * dropped it would tell a grid caller the archive holds one profile.
30186
+ * Empty on an `'unreadable'` row: nobody looked. */
30187
+ profilesWithFootage: array(string()).readonly()
30104
30188
  });
30105
30189
  /**
30106
30190
  * One camera's row in a `getDaysWithRecordingsBatch` answer. Same rule as
@@ -30390,7 +30474,14 @@ var ReadWindowBytesResultSchema = discriminatedUnion("kind", [object({
30390
30474
  method(object({
30391
30475
  deviceId: number(),
30392
30476
  fromMs: number(),
30393
- toMs: number()
30477
+ toMs: number(),
30478
+ /**
30479
+ * Answer for THIS profile instead of the preferred one (D433). Absent
30480
+ * keeps the timeline's behaviour — one bar, one profile, one set of
30481
+ * reads. `profilesWithFootage` on the answer says what may be asked
30482
+ * for.
30483
+ */
30484
+ profile: string().optional()
30394
30485
  }), RecordingAvailabilitySchema, {
30395
30486
  kind: "query",
30396
30487
  auth: "protected"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-provider-rtsp",
3
- "version": "1.2.92",
3
+ "version": "1.2.94",
4
4
  "description": "Generic RTSP camera device provider addon for CamStack",
5
5
  "keywords": [
6
6
  "camstack",