@camstack/addon-matter-broker 0.2.46 → 0.2.47
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 +72 -0
- package/dist/addon.mjs +72 -0
- package/package.json +1 -1
package/dist/addon.js
CHANGED
|
@@ -19175,6 +19175,50 @@ var EventStoreFootprintSchema = object({
|
|
|
19175
19175
|
totalBytes: number().int(),
|
|
19176
19176
|
devices: array(EventStoreDeviceFootprintSchema).readonly()
|
|
19177
19177
|
});
|
|
19178
|
+
/** Event-media footprint for one {@link MediaFileKind}. */
|
|
19179
|
+
var EventMediaKindFootprintSchema = object({
|
|
19180
|
+
kind: MediaFileKindEnum,
|
|
19181
|
+
/** Media rows of this kind. */
|
|
19182
|
+
rows: number().int(),
|
|
19183
|
+
/** Bytes on disk held by those rows. */
|
|
19184
|
+
bytes: number().int()
|
|
19185
|
+
});
|
|
19186
|
+
/**
|
|
19187
|
+
* The media footprint broken down by KIND — the axis a deletion decision
|
|
19188
|
+
* actually turns on.
|
|
19189
|
+
*
|
|
19190
|
+
* A byte total says how much there is; it cannot say what is safe to remove.
|
|
19191
|
+
* The deletable set (the periodic `snapshot` filmstrip, the surplus per-edge
|
|
19192
|
+
* motion stills) and the keep set (`firstFrame`, rolling `lastFrame`,
|
|
19193
|
+
* `thumbnail`/`thumbnailSmall`, `keyFrame`/`keyFrameSmall`, the face/plate
|
|
19194
|
+
* buffers, gallery media, the CLIP `crop`) are distinguished by `kind` and by
|
|
19195
|
+
* nothing else, so sizing a deletion means summing per kind.
|
|
19196
|
+
*
|
|
19197
|
+
* ## Why `unaccounted*` exists
|
|
19198
|
+
*
|
|
19199
|
+
* `kinds` is enumerated from {@link MediaFileKindEnum} — the closed set the
|
|
19200
|
+
* writers use — and summed one kind at a time. `totalRows` / `totalBytes` come
|
|
19201
|
+
* from a SEPARATE unfiltered aggregate over the same rows, never from adding
|
|
19202
|
+
* `kinds` up. A row whose stored `kind` is not in the enum (written by a
|
|
19203
|
+
* retired code path, or by a version that knew a kind this one does not) would
|
|
19204
|
+
* otherwise vanish from the total silently, and an operator would delete
|
|
19205
|
+
* against a denominator smaller than the disk.
|
|
19206
|
+
*
|
|
19207
|
+
* `unaccountedRows` / `unaccountedBytes` are the difference. They are normally
|
|
19208
|
+
* zero; a non-zero value is a real finding and must be shown, not rounded away.
|
|
19209
|
+
*/
|
|
19210
|
+
var EventMediaKindBreakdownSchema = object({
|
|
19211
|
+
/** Every media row in scope, from one unfiltered aggregate. */
|
|
19212
|
+
totalRows: number().int(),
|
|
19213
|
+
/** Every media byte in scope, from that same aggregate. */
|
|
19214
|
+
totalBytes: number().int(),
|
|
19215
|
+
/** Per-kind footprint, ordered by bytes descending. */
|
|
19216
|
+
kinds: array(EventMediaKindFootprintSchema).readonly(),
|
|
19217
|
+
/** `totalRows` minus the summed `kinds` rows — see the schema note. */
|
|
19218
|
+
unaccountedRows: number().int(),
|
|
19219
|
+
/** `totalBytes` minus the summed `kinds` bytes — see the schema note. */
|
|
19220
|
+
unaccountedBytes: number().int()
|
|
19221
|
+
});
|
|
19178
19222
|
/** Per-kind counts returned by the event-prune / device-delete mutations. */
|
|
19179
19223
|
var EventPruneCountsSchema = object({
|
|
19180
19224
|
motion: number().int(),
|
|
@@ -19378,6 +19422,9 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
19378
19422
|
}), TrackFlagsSchema, { kind: "mutation" }), method(object({}), EventStoreFootprintSchema, {
|
|
19379
19423
|
kind: "query",
|
|
19380
19424
|
auth: "admin"
|
|
19425
|
+
}), method(object({ deviceId: number().int().optional() }), EventMediaKindBreakdownSchema, {
|
|
19426
|
+
kind: "query",
|
|
19427
|
+
auth: "admin"
|
|
19381
19428
|
}), method(object({
|
|
19382
19429
|
olderThanMs: number(),
|
|
19383
19430
|
reason: OpsLogReasonSchema.optional()
|
|
@@ -21329,6 +21376,20 @@ method(object({
|
|
|
21329
21376
|
error: string$2().optional()
|
|
21330
21377
|
}), { auth: "admin" }), method(_void(), array(ProviderListEntrySchema).readonly()), method(object({
|
|
21331
21378
|
providerId: string$2(),
|
|
21379
|
+
/**
|
|
21380
|
+
* The location this config is an UNSAVED edit of, when there is one.
|
|
21381
|
+
*
|
|
21382
|
+
* `listLocations` replaces every declared secret with the redaction
|
|
21383
|
+
* sentinel, so the edit modal's form state holds the sentinel for any
|
|
21384
|
+
* credential the operator did not retype — and posting that here
|
|
21385
|
+
* without a way to resolve it makes the provider try to authenticate
|
|
21386
|
+
* as `__camstack_redacted__` and report the operator's own working
|
|
21387
|
+
* password as wrong. Given this id, the orchestrator restores each
|
|
21388
|
+
* sentinel from the stored config (same rule as `upsertLocation`)
|
|
21389
|
+
* before dispatching. Omitted by the "Add location" wizard, where
|
|
21390
|
+
* every value was typed just now and nothing is stored yet.
|
|
21391
|
+
*/
|
|
21392
|
+
locationId: string$2().optional(),
|
|
21332
21393
|
config: record(string$2(), unknown())
|
|
21333
21394
|
}), object({
|
|
21334
21395
|
ok: boolean(),
|
|
@@ -35384,6 +35445,12 @@ Object.freeze({
|
|
|
35384
35445
|
addonId: null,
|
|
35385
35446
|
access: "view"
|
|
35386
35447
|
},
|
|
35448
|
+
"pipelineAnalytics.getEventMediaFootprintByKind": {
|
|
35449
|
+
capName: "pipeline-analytics",
|
|
35450
|
+
capScope: "device",
|
|
35451
|
+
addonId: null,
|
|
35452
|
+
access: "view"
|
|
35453
|
+
},
|
|
35387
35454
|
"pipelineAnalytics.getEventStoreFootprint": {
|
|
35388
35455
|
capName: "pipeline-analytics",
|
|
35389
35456
|
capScope: "device",
|
|
@@ -39049,6 +39116,11 @@ Object.freeze({
|
|
|
39049
39116
|
form: "single",
|
|
39050
39117
|
optional: false
|
|
39051
39118
|
}],
|
|
39119
|
+
"pipelineAnalytics.getEventMediaFootprintByKind": [{
|
|
39120
|
+
name: "deviceId",
|
|
39121
|
+
form: "single",
|
|
39122
|
+
optional: true
|
|
39123
|
+
}],
|
|
39052
39124
|
"pipelineAnalytics.getGroup": [{
|
|
39053
39125
|
name: "deviceId",
|
|
39054
39126
|
form: "single",
|
package/dist/addon.mjs
CHANGED
|
@@ -19173,6 +19173,50 @@ var EventStoreFootprintSchema = object({
|
|
|
19173
19173
|
totalBytes: number().int(),
|
|
19174
19174
|
devices: array(EventStoreDeviceFootprintSchema).readonly()
|
|
19175
19175
|
});
|
|
19176
|
+
/** Event-media footprint for one {@link MediaFileKind}. */
|
|
19177
|
+
var EventMediaKindFootprintSchema = object({
|
|
19178
|
+
kind: MediaFileKindEnum,
|
|
19179
|
+
/** Media rows of this kind. */
|
|
19180
|
+
rows: number().int(),
|
|
19181
|
+
/** Bytes on disk held by those rows. */
|
|
19182
|
+
bytes: number().int()
|
|
19183
|
+
});
|
|
19184
|
+
/**
|
|
19185
|
+
* The media footprint broken down by KIND — the axis a deletion decision
|
|
19186
|
+
* actually turns on.
|
|
19187
|
+
*
|
|
19188
|
+
* A byte total says how much there is; it cannot say what is safe to remove.
|
|
19189
|
+
* The deletable set (the periodic `snapshot` filmstrip, the surplus per-edge
|
|
19190
|
+
* motion stills) and the keep set (`firstFrame`, rolling `lastFrame`,
|
|
19191
|
+
* `thumbnail`/`thumbnailSmall`, `keyFrame`/`keyFrameSmall`, the face/plate
|
|
19192
|
+
* buffers, gallery media, the CLIP `crop`) are distinguished by `kind` and by
|
|
19193
|
+
* nothing else, so sizing a deletion means summing per kind.
|
|
19194
|
+
*
|
|
19195
|
+
* ## Why `unaccounted*` exists
|
|
19196
|
+
*
|
|
19197
|
+
* `kinds` is enumerated from {@link MediaFileKindEnum} — the closed set the
|
|
19198
|
+
* writers use — and summed one kind at a time. `totalRows` / `totalBytes` come
|
|
19199
|
+
* from a SEPARATE unfiltered aggregate over the same rows, never from adding
|
|
19200
|
+
* `kinds` up. A row whose stored `kind` is not in the enum (written by a
|
|
19201
|
+
* retired code path, or by a version that knew a kind this one does not) would
|
|
19202
|
+
* otherwise vanish from the total silently, and an operator would delete
|
|
19203
|
+
* against a denominator smaller than the disk.
|
|
19204
|
+
*
|
|
19205
|
+
* `unaccountedRows` / `unaccountedBytes` are the difference. They are normally
|
|
19206
|
+
* zero; a non-zero value is a real finding and must be shown, not rounded away.
|
|
19207
|
+
*/
|
|
19208
|
+
var EventMediaKindBreakdownSchema = object({
|
|
19209
|
+
/** Every media row in scope, from one unfiltered aggregate. */
|
|
19210
|
+
totalRows: number().int(),
|
|
19211
|
+
/** Every media byte in scope, from that same aggregate. */
|
|
19212
|
+
totalBytes: number().int(),
|
|
19213
|
+
/** Per-kind footprint, ordered by bytes descending. */
|
|
19214
|
+
kinds: array(EventMediaKindFootprintSchema).readonly(),
|
|
19215
|
+
/** `totalRows` minus the summed `kinds` rows — see the schema note. */
|
|
19216
|
+
unaccountedRows: number().int(),
|
|
19217
|
+
/** `totalBytes` minus the summed `kinds` bytes — see the schema note. */
|
|
19218
|
+
unaccountedBytes: number().int()
|
|
19219
|
+
});
|
|
19176
19220
|
/** Per-kind counts returned by the event-prune / device-delete mutations. */
|
|
19177
19221
|
var EventPruneCountsSchema = object({
|
|
19178
19222
|
motion: number().int(),
|
|
@@ -19376,6 +19420,9 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
19376
19420
|
}), TrackFlagsSchema, { kind: "mutation" }), method(object({}), EventStoreFootprintSchema, {
|
|
19377
19421
|
kind: "query",
|
|
19378
19422
|
auth: "admin"
|
|
19423
|
+
}), method(object({ deviceId: number().int().optional() }), EventMediaKindBreakdownSchema, {
|
|
19424
|
+
kind: "query",
|
|
19425
|
+
auth: "admin"
|
|
19379
19426
|
}), method(object({
|
|
19380
19427
|
olderThanMs: number(),
|
|
19381
19428
|
reason: OpsLogReasonSchema.optional()
|
|
@@ -21327,6 +21374,20 @@ method(object({
|
|
|
21327
21374
|
error: string$2().optional()
|
|
21328
21375
|
}), { auth: "admin" }), method(_void(), array(ProviderListEntrySchema).readonly()), method(object({
|
|
21329
21376
|
providerId: string$2(),
|
|
21377
|
+
/**
|
|
21378
|
+
* The location this config is an UNSAVED edit of, when there is one.
|
|
21379
|
+
*
|
|
21380
|
+
* `listLocations` replaces every declared secret with the redaction
|
|
21381
|
+
* sentinel, so the edit modal's form state holds the sentinel for any
|
|
21382
|
+
* credential the operator did not retype — and posting that here
|
|
21383
|
+
* without a way to resolve it makes the provider try to authenticate
|
|
21384
|
+
* as `__camstack_redacted__` and report the operator's own working
|
|
21385
|
+
* password as wrong. Given this id, the orchestrator restores each
|
|
21386
|
+
* sentinel from the stored config (same rule as `upsertLocation`)
|
|
21387
|
+
* before dispatching. Omitted by the "Add location" wizard, where
|
|
21388
|
+
* every value was typed just now and nothing is stored yet.
|
|
21389
|
+
*/
|
|
21390
|
+
locationId: string$2().optional(),
|
|
21330
21391
|
config: record(string$2(), unknown())
|
|
21331
21392
|
}), object({
|
|
21332
21393
|
ok: boolean(),
|
|
@@ -35382,6 +35443,12 @@ Object.freeze({
|
|
|
35382
35443
|
addonId: null,
|
|
35383
35444
|
access: "view"
|
|
35384
35445
|
},
|
|
35446
|
+
"pipelineAnalytics.getEventMediaFootprintByKind": {
|
|
35447
|
+
capName: "pipeline-analytics",
|
|
35448
|
+
capScope: "device",
|
|
35449
|
+
addonId: null,
|
|
35450
|
+
access: "view"
|
|
35451
|
+
},
|
|
35385
35452
|
"pipelineAnalytics.getEventStoreFootprint": {
|
|
35386
35453
|
capName: "pipeline-analytics",
|
|
35387
35454
|
capScope: "device",
|
|
@@ -39047,6 +39114,11 @@ Object.freeze({
|
|
|
39047
39114
|
form: "single",
|
|
39048
39115
|
optional: false
|
|
39049
39116
|
}],
|
|
39117
|
+
"pipelineAnalytics.getEventMediaFootprintByKind": [{
|
|
39118
|
+
name: "deviceId",
|
|
39119
|
+
form: "single",
|
|
39120
|
+
optional: true
|
|
39121
|
+
}],
|
|
39050
39122
|
"pipelineAnalytics.getGroup": [{
|
|
39051
39123
|
name: "deviceId",
|
|
39052
39124
|
form: "single",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@camstack/addon-matter-broker",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.47",
|
|
4
4
|
"description": "Matter broker addon for CamStack — owns a Matter fabric (commissioning + the long-lived controller) via the matter.js controller and brokers commissioned Matter nodes into CamStack",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"camstack",
|