@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.
- package/dist/mqtt-broker.addon.js +96 -5
- package/dist/mqtt-broker.addon.mjs +96 -5
- package/package.json +1 -1
|
@@ -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.
|
|
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",
|