@camstack/addon-mqtt-broker 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.
@@ -16239,6 +16239,7 @@ var NcSystemEventKindSchema = _enum([
16239
16239
  "addon-crash-loop",
16240
16240
  "addon-update-available",
16241
16241
  "server-update-available",
16242
+ "wrapper-update-available",
16242
16243
  "alarm-triggered",
16243
16244
  "alarm-armed",
16244
16245
  "alarm-disarmed",
@@ -19644,7 +19645,17 @@ var EventDensityBucketSchema = object({
19644
19645
  bucketStart: number(),
19645
19646
  motion: number().int(),
19646
19647
  object: number().int(),
19647
- audio: number().int()
19648
+ audio: number().int(),
19649
+ /**
19650
+ * Energy-weighted mean dBFS of the audio events in this bucket — the LEVEL,
19651
+ * as opposed to `audio`, which is their COUNT (D431).
19652
+ *
19653
+ * ABSENT when the bucket holds no audio event. Absence means "nothing was
19654
+ * measured", which is not the same claim as silence, and a lane that cannot
19655
+ * tell them apart paints a quiet hour at full scale — which is exactly what
19656
+ * the count-on-a-level-meter did.
19657
+ */
19658
+ audioDbfs: number().optional()
19648
19659
  });
19649
19660
  /**
19650
19661
  * One camera's row in a `getEventDensityBatch` answer.
@@ -21745,6 +21756,53 @@ var ImageContractSchema = object({
21745
21756
  /** One operator-grade sentence: this node runs image X; the contract says Y. */
21746
21757
  message: string()
21747
21758
  });
21759
+ /**
21760
+ * The shell verdict (see {@link WrapperKindSchema}) with the proofs that
21761
+ * produced it.
21762
+ *
21763
+ * There is deliberately NO `canSelfUpdate` and no apply action: a wrapper
21764
+ * update is an ANNOUNCEMENT. The notification body carries the exact command
21765
+ * for a `docker` shell and says the app restarts into the new build for
21766
+ * `electron`, and that sentence is chosen from `kind` alone — a boolean
21767
+ * nothing reads is the defect this repo keeps paying for.
21768
+ */
21769
+ var WrapperIdentitySchema = object({
21770
+ kind: _enum([
21771
+ "docker",
21772
+ "electron",
21773
+ "native",
21774
+ "contradictory",
21775
+ "unknown"
21776
+ ]),
21777
+ /** Every probe that ran, in a stable order. Never empty. */
21778
+ evidence: array(object({
21779
+ /** Which probe this row reports. */
21780
+ fact: _enum([
21781
+ "dockerenv-file",
21782
+ "proc-1-cgroup",
21783
+ "platform",
21784
+ "electron-app-version-env"
21785
+ ]),
21786
+ /**
21787
+ * `observed` — this process read it itself. `declared` — the shell told the
21788
+ * process and nothing here can check it. Only the Electron app version is
21789
+ * ever `declared`, and only because a child cannot see its parent.
21790
+ */
21791
+ mode: _enum(["observed", "declared"]),
21792
+ /** Did the probe support the fact it names? A `false` row is still evidence. */
21793
+ holds: boolean(),
21794
+ /** What was actually read, verbatim enough for an operator to argue with. */
21795
+ detail: string()
21796
+ })),
21797
+ /**
21798
+ * The version of the SHELL, when the shell has one it can state: the
21799
+ * Electron app version it declared, or the baked seed closure that
21800
+ * fingerprints a container / app bundle. `null` for `contradictory` and
21801
+ * `unknown` — which version belongs to the shell is precisely what is not
21802
+ * known there.
21803
+ */
21804
+ currentVersion: string().nullable()
21805
+ });
21748
21806
  var ServerRollbackInfoSchema = object({
21749
21807
  /** The version that failed (or was manually rolled back). */
21750
21808
  fromVersion: string(),
@@ -21786,7 +21844,13 @@ var ServerPackageStatusSchema = object({
21786
21844
  * Seed-vs-contract verdict (see {@link ImageContractSchema}). Optional for
21787
21845
  * version skew: an older provider's payload simply omits it.
21788
21846
  */
21789
- imageContract: ImageContractSchema.optional()
21847
+ imageContract: ImageContractSchema.optional(),
21848
+ /**
21849
+ * What this node runs INSIDE (see {@link WrapperIdentitySchema}). Optional
21850
+ * for version skew: an older provider's payload simply omits it, and an
21851
+ * absent wrapper is unknown — never `native`.
21852
+ */
21853
+ wrapper: WrapperIdentitySchema.optional()
21790
21854
  });
21791
21855
  var ServerUpdateCheckResultSchema = object({
21792
21856
  packageName: string(),
@@ -27811,7 +27875,23 @@ var RecordingRangeSchema = object({
27811
27875
  });
27812
27876
  var RecordingAvailabilitySchema = object({
27813
27877
  deviceId: number(),
27814
- ranges: array(RecordingRangeSchema)
27878
+ ranges: array(RecordingRangeSchema),
27879
+ /**
27880
+ * Every profile this camera has footage in — not only the one `ranges`
27881
+ * describes (D433).
27882
+ *
27883
+ * `ranges` answers for ONE profile by design: the timeline is a single bar,
27884
+ * and enumerating all of them triples the directory reads for a bar that
27885
+ * would look identical. But the answer used to say nothing about that, so a
27886
+ * caller asking "what can I export?" read the single preferred profile as
27887
+ * the only one that exists — on this deployment every camera records `high`
27888
+ * AND `low`, the low tree holding 14 GB for camera 615 alone, and the export
27889
+ * UI could not see it.
27890
+ *
27891
+ * Cheap: it is the same shallow directory read the profile CHOICE already
27892
+ * makes. Ask for a specific profile's ranges with the `profile` input.
27893
+ */
27894
+ profilesWithFootage: array(string())
27815
27895
  });
27816
27896
  var RecordingDaysSchema = object({
27817
27897
  deviceId: number(),
@@ -27837,7 +27917,11 @@ var RecordingDaysSchema = object({
27837
27917
  var RecordingAvailabilityForDeviceSchema = object({
27838
27918
  deviceId: number(),
27839
27919
  read: _enum(["read", "unreadable"]),
27840
- ranges: array(RecordingRangeSchema).readonly()
27920
+ ranges: array(RecordingRangeSchema).readonly(),
27921
+ /** Same field, same meaning, as the singular answer (D433). A row that
27922
+ * dropped it would tell a grid caller the archive holds one profile.
27923
+ * Empty on an `'unreadable'` row: nobody looked. */
27924
+ profilesWithFootage: array(string()).readonly()
27841
27925
  });
27842
27926
  /**
27843
27927
  * One camera's row in a `getDaysWithRecordingsBatch` answer. Same rule as
@@ -28127,7 +28211,14 @@ var ReadWindowBytesResultSchema = discriminatedUnion("kind", [object({
28127
28211
  method(object({
28128
28212
  deviceId: number(),
28129
28213
  fromMs: number(),
28130
- toMs: number()
28214
+ toMs: number(),
28215
+ /**
28216
+ * Answer for THIS profile instead of the preferred one (D433). Absent
28217
+ * keeps the timeline's behaviour — one bar, one profile, one set of
28218
+ * reads. `profilesWithFootage` on the answer says what may be asked
28219
+ * for.
28220
+ */
28221
+ profile: string().optional()
28131
28222
  }), RecordingAvailabilitySchema, {
28132
28223
  kind: "query",
28133
28224
  auth: "protected"
@@ -16234,6 +16234,7 @@ var NcSystemEventKindSchema = _enum([
16234
16234
  "addon-crash-loop",
16235
16235
  "addon-update-available",
16236
16236
  "server-update-available",
16237
+ "wrapper-update-available",
16237
16238
  "alarm-triggered",
16238
16239
  "alarm-armed",
16239
16240
  "alarm-disarmed",
@@ -19639,7 +19640,17 @@ var EventDensityBucketSchema = object({
19639
19640
  bucketStart: number(),
19640
19641
  motion: number().int(),
19641
19642
  object: number().int(),
19642
- audio: number().int()
19643
+ audio: number().int(),
19644
+ /**
19645
+ * Energy-weighted mean dBFS of the audio events in this bucket — the LEVEL,
19646
+ * as opposed to `audio`, which is their COUNT (D431).
19647
+ *
19648
+ * ABSENT when the bucket holds no audio event. Absence means "nothing was
19649
+ * measured", which is not the same claim as silence, and a lane that cannot
19650
+ * tell them apart paints a quiet hour at full scale — which is exactly what
19651
+ * the count-on-a-level-meter did.
19652
+ */
19653
+ audioDbfs: number().optional()
19643
19654
  });
19644
19655
  /**
19645
19656
  * One camera's row in a `getEventDensityBatch` answer.
@@ -21740,6 +21751,53 @@ var ImageContractSchema = object({
21740
21751
  /** One operator-grade sentence: this node runs image X; the contract says Y. */
21741
21752
  message: string()
21742
21753
  });
21754
+ /**
21755
+ * The shell verdict (see {@link WrapperKindSchema}) with the proofs that
21756
+ * produced it.
21757
+ *
21758
+ * There is deliberately NO `canSelfUpdate` and no apply action: a wrapper
21759
+ * update is an ANNOUNCEMENT. The notification body carries the exact command
21760
+ * for a `docker` shell and says the app restarts into the new build for
21761
+ * `electron`, and that sentence is chosen from `kind` alone — a boolean
21762
+ * nothing reads is the defect this repo keeps paying for.
21763
+ */
21764
+ var WrapperIdentitySchema = object({
21765
+ kind: _enum([
21766
+ "docker",
21767
+ "electron",
21768
+ "native",
21769
+ "contradictory",
21770
+ "unknown"
21771
+ ]),
21772
+ /** Every probe that ran, in a stable order. Never empty. */
21773
+ evidence: array(object({
21774
+ /** Which probe this row reports. */
21775
+ fact: _enum([
21776
+ "dockerenv-file",
21777
+ "proc-1-cgroup",
21778
+ "platform",
21779
+ "electron-app-version-env"
21780
+ ]),
21781
+ /**
21782
+ * `observed` — this process read it itself. `declared` — the shell told the
21783
+ * process and nothing here can check it. Only the Electron app version is
21784
+ * ever `declared`, and only because a child cannot see its parent.
21785
+ */
21786
+ mode: _enum(["observed", "declared"]),
21787
+ /** Did the probe support the fact it names? A `false` row is still evidence. */
21788
+ holds: boolean(),
21789
+ /** What was actually read, verbatim enough for an operator to argue with. */
21790
+ detail: string()
21791
+ })),
21792
+ /**
21793
+ * The version of the SHELL, when the shell has one it can state: the
21794
+ * Electron app version it declared, or the baked seed closure that
21795
+ * fingerprints a container / app bundle. `null` for `contradictory` and
21796
+ * `unknown` — which version belongs to the shell is precisely what is not
21797
+ * known there.
21798
+ */
21799
+ currentVersion: string().nullable()
21800
+ });
21743
21801
  var ServerRollbackInfoSchema = object({
21744
21802
  /** The version that failed (or was manually rolled back). */
21745
21803
  fromVersion: string(),
@@ -21781,7 +21839,13 @@ var ServerPackageStatusSchema = object({
21781
21839
  * Seed-vs-contract verdict (see {@link ImageContractSchema}). Optional for
21782
21840
  * version skew: an older provider's payload simply omits it.
21783
21841
  */
21784
- imageContract: ImageContractSchema.optional()
21842
+ imageContract: ImageContractSchema.optional(),
21843
+ /**
21844
+ * What this node runs INSIDE (see {@link WrapperIdentitySchema}). Optional
21845
+ * for version skew: an older provider's payload simply omits it, and an
21846
+ * absent wrapper is unknown — never `native`.
21847
+ */
21848
+ wrapper: WrapperIdentitySchema.optional()
21785
21849
  });
21786
21850
  var ServerUpdateCheckResultSchema = object({
21787
21851
  packageName: string(),
@@ -27806,7 +27870,23 @@ var RecordingRangeSchema = object({
27806
27870
  });
27807
27871
  var RecordingAvailabilitySchema = object({
27808
27872
  deviceId: number(),
27809
- ranges: array(RecordingRangeSchema)
27873
+ ranges: array(RecordingRangeSchema),
27874
+ /**
27875
+ * Every profile this camera has footage in — not only the one `ranges`
27876
+ * describes (D433).
27877
+ *
27878
+ * `ranges` answers for ONE profile by design: the timeline is a single bar,
27879
+ * and enumerating all of them triples the directory reads for a bar that
27880
+ * would look identical. But the answer used to say nothing about that, so a
27881
+ * caller asking "what can I export?" read the single preferred profile as
27882
+ * the only one that exists — on this deployment every camera records `high`
27883
+ * AND `low`, the low tree holding 14 GB for camera 615 alone, and the export
27884
+ * UI could not see it.
27885
+ *
27886
+ * Cheap: it is the same shallow directory read the profile CHOICE already
27887
+ * makes. Ask for a specific profile's ranges with the `profile` input.
27888
+ */
27889
+ profilesWithFootage: array(string())
27810
27890
  });
27811
27891
  var RecordingDaysSchema = object({
27812
27892
  deviceId: number(),
@@ -27832,7 +27912,11 @@ var RecordingDaysSchema = object({
27832
27912
  var RecordingAvailabilityForDeviceSchema = object({
27833
27913
  deviceId: number(),
27834
27914
  read: _enum(["read", "unreadable"]),
27835
- ranges: array(RecordingRangeSchema).readonly()
27915
+ ranges: array(RecordingRangeSchema).readonly(),
27916
+ /** Same field, same meaning, as the singular answer (D433). A row that
27917
+ * dropped it would tell a grid caller the archive holds one profile.
27918
+ * Empty on an `'unreadable'` row: nobody looked. */
27919
+ profilesWithFootage: array(string()).readonly()
27836
27920
  });
27837
27921
  /**
27838
27922
  * One camera's row in a `getDaysWithRecordingsBatch` answer. Same rule as
@@ -28122,7 +28206,14 @@ var ReadWindowBytesResultSchema = discriminatedUnion("kind", [object({
28122
28206
  method(object({
28123
28207
  deviceId: number(),
28124
28208
  fromMs: number(),
28125
- toMs: number()
28209
+ toMs: number(),
28210
+ /**
28211
+ * Answer for THIS profile instead of the preferred one (D433). Absent
28212
+ * keeps the timeline's behaviour — one bar, one profile, one set of
28213
+ * reads. `profilesWithFootage` on the answer says what may be asked
28214
+ * for.
28215
+ */
28216
+ profile: string().optional()
28126
28217
  }), RecordingAvailabilitySchema, {
28127
28218
  kind: "query",
28128
28219
  auth: "protected"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-mqtt-broker",
3
- "version": "1.2.92",
3
+ "version": "1.2.94",
4
4
  "description": "MQTT broker registry addon for CamStack — manages external broker entries + an optional embedded aedes broker. Consumers spin up their own `mqtt.js` clients via the `mqtt-broker` cap.",
5
5
  "keywords": [
6
6
  "camstack",