@camstack/addon-provider-amcrest 0.2.94 → 0.2.96

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
@@ -16465,6 +16465,7 @@ var NcSystemEventKindSchema = _enum([
16465
16465
  "addon-crash-loop",
16466
16466
  "addon-update-available",
16467
16467
  "server-update-available",
16468
+ "wrapper-update-available",
16468
16469
  "alarm-triggered",
16469
16470
  "alarm-armed",
16470
16471
  "alarm-disarmed",
@@ -19910,7 +19911,17 @@ var EventDensityBucketSchema = object({
19910
19911
  bucketStart: number(),
19911
19912
  motion: number().int(),
19912
19913
  object: number().int(),
19913
- audio: number().int()
19914
+ audio: number().int(),
19915
+ /**
19916
+ * Energy-weighted mean dBFS of the audio events in this bucket — the LEVEL,
19917
+ * as opposed to `audio`, which is their COUNT (D431).
19918
+ *
19919
+ * ABSENT when the bucket holds no audio event. Absence means "nothing was
19920
+ * measured", which is not the same claim as silence, and a lane that cannot
19921
+ * tell them apart paints a quiet hour at full scale — which is exactly what
19922
+ * the count-on-a-level-meter did.
19923
+ */
19924
+ audioDbfs: number().optional()
19914
19925
  });
19915
19926
  /**
19916
19927
  * One camera's row in a `getEventDensityBatch` answer.
@@ -22011,6 +22022,53 @@ var ImageContractSchema = object({
22011
22022
  /** One operator-grade sentence: this node runs image X; the contract says Y. */
22012
22023
  message: string()
22013
22024
  });
22025
+ /**
22026
+ * The shell verdict (see {@link WrapperKindSchema}) with the proofs that
22027
+ * produced it.
22028
+ *
22029
+ * There is deliberately NO `canSelfUpdate` and no apply action: a wrapper
22030
+ * update is an ANNOUNCEMENT. The notification body carries the exact command
22031
+ * for a `docker` shell and says the app restarts into the new build for
22032
+ * `electron`, and that sentence is chosen from `kind` alone — a boolean
22033
+ * nothing reads is the defect this repo keeps paying for.
22034
+ */
22035
+ var WrapperIdentitySchema = object({
22036
+ kind: _enum([
22037
+ "docker",
22038
+ "electron",
22039
+ "native",
22040
+ "contradictory",
22041
+ "unknown"
22042
+ ]),
22043
+ /** Every probe that ran, in a stable order. Never empty. */
22044
+ evidence: array(object({
22045
+ /** Which probe this row reports. */
22046
+ fact: _enum([
22047
+ "dockerenv-file",
22048
+ "proc-1-cgroup",
22049
+ "platform",
22050
+ "electron-app-version-env"
22051
+ ]),
22052
+ /**
22053
+ * `observed` — this process read it itself. `declared` — the shell told the
22054
+ * process and nothing here can check it. Only the Electron app version is
22055
+ * ever `declared`, and only because a child cannot see its parent.
22056
+ */
22057
+ mode: _enum(["observed", "declared"]),
22058
+ /** Did the probe support the fact it names? A `false` row is still evidence. */
22059
+ holds: boolean(),
22060
+ /** What was actually read, verbatim enough for an operator to argue with. */
22061
+ detail: string()
22062
+ })),
22063
+ /**
22064
+ * The version of the SHELL, when the shell has one it can state: the
22065
+ * Electron app version it declared, or the baked seed closure that
22066
+ * fingerprints a container / app bundle. `null` for `contradictory` and
22067
+ * `unknown` — which version belongs to the shell is precisely what is not
22068
+ * known there.
22069
+ */
22070
+ currentVersion: string().nullable()
22071
+ });
22014
22072
  var ServerRollbackInfoSchema = object({
22015
22073
  /** The version that failed (or was manually rolled back). */
22016
22074
  fromVersion: string(),
@@ -22052,7 +22110,13 @@ var ServerPackageStatusSchema = object({
22052
22110
  * Seed-vs-contract verdict (see {@link ImageContractSchema}). Optional for
22053
22111
  * version skew: an older provider's payload simply omits it.
22054
22112
  */
22055
- imageContract: ImageContractSchema.optional()
22113
+ imageContract: ImageContractSchema.optional(),
22114
+ /**
22115
+ * What this node runs INSIDE (see {@link WrapperIdentitySchema}). Optional
22116
+ * for version skew: an older provider's payload simply omits it, and an
22117
+ * absent wrapper is unknown — never `native`.
22118
+ */
22119
+ wrapper: WrapperIdentitySchema.optional()
22056
22120
  });
22057
22121
  var ServerUpdateCheckResultSchema = object({
22058
22122
  packageName: string(),
@@ -30137,7 +30201,23 @@ var RecordingRangeSchema = object({
30137
30201
  });
30138
30202
  var RecordingAvailabilitySchema = object({
30139
30203
  deviceId: number(),
30140
- ranges: array(RecordingRangeSchema)
30204
+ ranges: array(RecordingRangeSchema),
30205
+ /**
30206
+ * Every profile this camera has footage in — not only the one `ranges`
30207
+ * describes (D433).
30208
+ *
30209
+ * `ranges` answers for ONE profile by design: the timeline is a single bar,
30210
+ * and enumerating all of them triples the directory reads for a bar that
30211
+ * would look identical. But the answer used to say nothing about that, so a
30212
+ * caller asking "what can I export?" read the single preferred profile as
30213
+ * the only one that exists — on this deployment every camera records `high`
30214
+ * AND `low`, the low tree holding 14 GB for camera 615 alone, and the export
30215
+ * UI could not see it.
30216
+ *
30217
+ * Cheap: it is the same shallow directory read the profile CHOICE already
30218
+ * makes. Ask for a specific profile's ranges with the `profile` input.
30219
+ */
30220
+ profilesWithFootage: array(string())
30141
30221
  });
30142
30222
  var RecordingDaysSchema = object({
30143
30223
  deviceId: number(),
@@ -30163,7 +30243,11 @@ var RecordingDaysSchema = object({
30163
30243
  var RecordingAvailabilityForDeviceSchema = object({
30164
30244
  deviceId: number(),
30165
30245
  read: _enum(["read", "unreadable"]),
30166
- ranges: array(RecordingRangeSchema).readonly()
30246
+ ranges: array(RecordingRangeSchema).readonly(),
30247
+ /** Same field, same meaning, as the singular answer (D433). A row that
30248
+ * dropped it would tell a grid caller the archive holds one profile.
30249
+ * Empty on an `'unreadable'` row: nobody looked. */
30250
+ profilesWithFootage: array(string()).readonly()
30167
30251
  });
30168
30252
  /**
30169
30253
  * One camera's row in a `getDaysWithRecordingsBatch` answer. Same rule as
@@ -30453,7 +30537,14 @@ var ReadWindowBytesResultSchema = discriminatedUnion("kind", [object({
30453
30537
  method(object({
30454
30538
  deviceId: number(),
30455
30539
  fromMs: number(),
30456
- toMs: number()
30540
+ toMs: number(),
30541
+ /**
30542
+ * Answer for THIS profile instead of the preferred one (D433). Absent
30543
+ * keeps the timeline's behaviour — one bar, one profile, one set of
30544
+ * reads. `profilesWithFootage` on the answer says what may be asked
30545
+ * for.
30546
+ */
30547
+ profile: string().optional()
30457
30548
  }), RecordingAvailabilitySchema, {
30458
30549
  kind: "query",
30459
30550
  auth: "protected"
package/dist/addon.mjs CHANGED
@@ -16466,6 +16466,7 @@ var NcSystemEventKindSchema = _enum([
16466
16466
  "addon-crash-loop",
16467
16467
  "addon-update-available",
16468
16468
  "server-update-available",
16469
+ "wrapper-update-available",
16469
16470
  "alarm-triggered",
16470
16471
  "alarm-armed",
16471
16472
  "alarm-disarmed",
@@ -19911,7 +19912,17 @@ var EventDensityBucketSchema = object({
19911
19912
  bucketStart: number(),
19912
19913
  motion: number().int(),
19913
19914
  object: number().int(),
19914
- audio: number().int()
19915
+ audio: number().int(),
19916
+ /**
19917
+ * Energy-weighted mean dBFS of the audio events in this bucket — the LEVEL,
19918
+ * as opposed to `audio`, which is their COUNT (D431).
19919
+ *
19920
+ * ABSENT when the bucket holds no audio event. Absence means "nothing was
19921
+ * measured", which is not the same claim as silence, and a lane that cannot
19922
+ * tell them apart paints a quiet hour at full scale — which is exactly what
19923
+ * the count-on-a-level-meter did.
19924
+ */
19925
+ audioDbfs: number().optional()
19915
19926
  });
19916
19927
  /**
19917
19928
  * One camera's row in a `getEventDensityBatch` answer.
@@ -22012,6 +22023,53 @@ var ImageContractSchema = object({
22012
22023
  /** One operator-grade sentence: this node runs image X; the contract says Y. */
22013
22024
  message: string()
22014
22025
  });
22026
+ /**
22027
+ * The shell verdict (see {@link WrapperKindSchema}) with the proofs that
22028
+ * produced it.
22029
+ *
22030
+ * There is deliberately NO `canSelfUpdate` and no apply action: a wrapper
22031
+ * update is an ANNOUNCEMENT. The notification body carries the exact command
22032
+ * for a `docker` shell and says the app restarts into the new build for
22033
+ * `electron`, and that sentence is chosen from `kind` alone — a boolean
22034
+ * nothing reads is the defect this repo keeps paying for.
22035
+ */
22036
+ var WrapperIdentitySchema = object({
22037
+ kind: _enum([
22038
+ "docker",
22039
+ "electron",
22040
+ "native",
22041
+ "contradictory",
22042
+ "unknown"
22043
+ ]),
22044
+ /** Every probe that ran, in a stable order. Never empty. */
22045
+ evidence: array(object({
22046
+ /** Which probe this row reports. */
22047
+ fact: _enum([
22048
+ "dockerenv-file",
22049
+ "proc-1-cgroup",
22050
+ "platform",
22051
+ "electron-app-version-env"
22052
+ ]),
22053
+ /**
22054
+ * `observed` — this process read it itself. `declared` — the shell told the
22055
+ * process and nothing here can check it. Only the Electron app version is
22056
+ * ever `declared`, and only because a child cannot see its parent.
22057
+ */
22058
+ mode: _enum(["observed", "declared"]),
22059
+ /** Did the probe support the fact it names? A `false` row is still evidence. */
22060
+ holds: boolean(),
22061
+ /** What was actually read, verbatim enough for an operator to argue with. */
22062
+ detail: string()
22063
+ })),
22064
+ /**
22065
+ * The version of the SHELL, when the shell has one it can state: the
22066
+ * Electron app version it declared, or the baked seed closure that
22067
+ * fingerprints a container / app bundle. `null` for `contradictory` and
22068
+ * `unknown` — which version belongs to the shell is precisely what is not
22069
+ * known there.
22070
+ */
22071
+ currentVersion: string().nullable()
22072
+ });
22015
22073
  var ServerRollbackInfoSchema = object({
22016
22074
  /** The version that failed (or was manually rolled back). */
22017
22075
  fromVersion: string(),
@@ -22053,7 +22111,13 @@ var ServerPackageStatusSchema = object({
22053
22111
  * Seed-vs-contract verdict (see {@link ImageContractSchema}). Optional for
22054
22112
  * version skew: an older provider's payload simply omits it.
22055
22113
  */
22056
- imageContract: ImageContractSchema.optional()
22114
+ imageContract: ImageContractSchema.optional(),
22115
+ /**
22116
+ * What this node runs INSIDE (see {@link WrapperIdentitySchema}). Optional
22117
+ * for version skew: an older provider's payload simply omits it, and an
22118
+ * absent wrapper is unknown — never `native`.
22119
+ */
22120
+ wrapper: WrapperIdentitySchema.optional()
22057
22121
  });
22058
22122
  var ServerUpdateCheckResultSchema = object({
22059
22123
  packageName: string(),
@@ -30138,7 +30202,23 @@ var RecordingRangeSchema = object({
30138
30202
  });
30139
30203
  var RecordingAvailabilitySchema = object({
30140
30204
  deviceId: number(),
30141
- ranges: array(RecordingRangeSchema)
30205
+ ranges: array(RecordingRangeSchema),
30206
+ /**
30207
+ * Every profile this camera has footage in — not only the one `ranges`
30208
+ * describes (D433).
30209
+ *
30210
+ * `ranges` answers for ONE profile by design: the timeline is a single bar,
30211
+ * and enumerating all of them triples the directory reads for a bar that
30212
+ * would look identical. But the answer used to say nothing about that, so a
30213
+ * caller asking "what can I export?" read the single preferred profile as
30214
+ * the only one that exists — on this deployment every camera records `high`
30215
+ * AND `low`, the low tree holding 14 GB for camera 615 alone, and the export
30216
+ * UI could not see it.
30217
+ *
30218
+ * Cheap: it is the same shallow directory read the profile CHOICE already
30219
+ * makes. Ask for a specific profile's ranges with the `profile` input.
30220
+ */
30221
+ profilesWithFootage: array(string())
30142
30222
  });
30143
30223
  var RecordingDaysSchema = object({
30144
30224
  deviceId: number(),
@@ -30164,7 +30244,11 @@ var RecordingDaysSchema = object({
30164
30244
  var RecordingAvailabilityForDeviceSchema = object({
30165
30245
  deviceId: number(),
30166
30246
  read: _enum(["read", "unreadable"]),
30167
- ranges: array(RecordingRangeSchema).readonly()
30247
+ ranges: array(RecordingRangeSchema).readonly(),
30248
+ /** Same field, same meaning, as the singular answer (D433). A row that
30249
+ * dropped it would tell a grid caller the archive holds one profile.
30250
+ * Empty on an `'unreadable'` row: nobody looked. */
30251
+ profilesWithFootage: array(string()).readonly()
30168
30252
  });
30169
30253
  /**
30170
30254
  * One camera's row in a `getDaysWithRecordingsBatch` answer. Same rule as
@@ -30454,7 +30538,14 @@ var ReadWindowBytesResultSchema = discriminatedUnion("kind", [object({
30454
30538
  method(object({
30455
30539
  deviceId: number(),
30456
30540
  fromMs: number(),
30457
- toMs: number()
30541
+ toMs: number(),
30542
+ /**
30543
+ * Answer for THIS profile instead of the preferred one (D433). Absent
30544
+ * keeps the timeline's behaviour — one bar, one profile, one set of
30545
+ * reads. `profilesWithFootage` on the answer says what may be asked
30546
+ * for.
30547
+ */
30548
+ profile: string().optional()
30458
30549
  }), RecordingAvailabilitySchema, {
30459
30550
  kind: "query",
30460
30551
  auth: "protected"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-provider-amcrest",
3
- "version": "0.2.94",
3
+ "version": "0.2.96",
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",